From 4a2534483957614e9fbf5a659603d085c878c49d Mon Sep 17 00:00:00 2001 From: dekunukem Date: Mon, 2 May 2022 01:24:46 +0100 Subject: [PATCH] fixing ps2 mouse inhibit bug --- firmware/ibmpc/Inc/helpers.h | 1 + firmware/ibmpc/Inc/ps2mouse.h | 9 + firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen | 10 +- firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf | Bin 542144 -> 542177 bytes firmware/ibmpc/MDK-ARM/ibmpc/helpers.o | Bin 608056 -> 608056 bytes firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf | Bin 727152 -> 725052 bytes .../ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm | 20 +- firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex | 1917 ++++--- firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm | 1351 +++-- firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map | 1221 +++-- firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep | 22 +- firmware/ibmpc/MDK-ARM/ibmpc/main.crf | Bin 551192 -> 551391 bytes firmware/ibmpc/MDK-ARM/ibmpc/main.o | Bin 628468 -> 628524 bytes firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf | Bin 546559 -> 546625 bytes firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o | Bin 603676 -> 603676 bytes firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf | Bin 546538 -> 546978 bytes firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o | Bin 607808 -> 607916 bytes firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.crf | Bin 543117 -> 543183 bytes firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.o | Bin 595088 -> 595088 bytes firmware/ibmpc/Src/main.c | 19 +- firmware/ibmpc/Src/ps2mouse.c | 45 +- firmware/ibmpc/scrap.c | 57 + .../'8042' PS_2 Controller - OSDev Wiki.htm | 1202 +++++ .../At-kbc.png | Bin 0 -> 22101 bytes .../Ps2-kbc.png | Bin 0 -> 34243 bytes .../load.css | 3 + .../load_002.css | 3 + .../poweredby_mediawiki_88x31.png | Bin 0 -> 3605 bytes ...m68k for Macintosh - Mac Plus hardware.htm | 1732 +++++++ .../curve_leftbottom.gif | Bin 0 -> 444 bytes .../curve_lefttop.gif | Bin 0 -> 444 bytes .../curve_rightbottom.gif | Bin 0 -> 444 bytes .../curve_righttop.gif | Bin 0 -> 444 bytes .../mac68k.css | 71 + .../macpenguin.gif | Bin 0 -> 2448 bytes .../sflogo.png | Bin 0 -> 948 bytes .../valid-html401.png | Bin 0 -> 1542 bytes .../vcss.gif | Bin 0 -> 1547 bytes resources/PS_2 Keyboard - OSDev Wiki.htm | 4458 +++++++++++++++++ .../PS_2 Keyboard - OSDev Wiki_files/load.css | 3 + .../load_002.css | 3 + .../poweredby_mediawiki_88x31.png | Bin 0 -> 3605 bytes ... Keyboard Scan Sets Translation Table.html | 1694 +++++++ .../kvmsolutions.gif | Bin 0 -> 3675 bytes .../logo_250.jpg | Bin 0 -> 5111 bytes .../navabout1.gif | Bin 0 -> 1480 bytes .../navcontact1.gif | Bin 0 -> 1415 bytes .../navmap1.gif | Bin 0 -> 1382 bytes .../navnews1.gif | Bin 0 -> 1477 bytes .../navorder1.gif | Bin 0 -> 1395 bytes .../navprod1.gif | Bin 0 -> 1344 bytes resources/The PS_2 Keyboard Interface.htm | 2380 +++++++++ .../The PS_2 Mouse_Keyboard Protocol.htm | 517 ++ .../fpdin1.JPG | Bin 0 -> 5591 bytes .../fpindin.JPG | Bin 0 -> 5683 bytes .../ps2.JPG | Bin 0 -> 13162 bytes .../qscope.JPG | Bin 0 -> 27058 bytes .../sdl.jpg | Bin 0 -> 2394 bytes .../sdl1.jpg | Bin 0 -> 2394 bytes .../spindin.JPG | Bin 0 -> 6343 bytes .../spindin1.JPG | Bin 0 -> 6246 bytes .../waveform1.jpg | Bin 0 -> 11046 bytes .../waveform2.jpg | Bin 0 -> 12777 bytes .../waveform3.jpg | Bin 0 -> 21331 bytes resources/Wayback Machine.html | 33 + resources/Wayback Machine_files/analytics.js | 474 ++ .../Wayback Machine_files/banner-styles.css | 500 ++ .../Wayback Machine_files/bundle-playback.js | 3 + .../Wayback Machine_files/iconochive.css | 116 + resources/Wayback Machine_files/jquery-1.js | 4 + .../Wayback Machine_files/scancodes3.htm | 1303 +++++ 71 files changed, 16864 insertions(+), 2307 deletions(-) create mode 100644 photos/'8042' PS_2 Controller - OSDev Wiki.htm create mode 100644 photos/'8042' PS_2 Controller - OSDev Wiki_files/At-kbc.png create mode 100644 photos/'8042' PS_2 Controller - OSDev Wiki_files/Ps2-kbc.png create mode 100644 photos/'8042' PS_2 Controller - OSDev Wiki_files/load.css create mode 100644 photos/'8042' PS_2 Controller - OSDev Wiki_files/load_002.css create mode 100644 photos/'8042' PS_2 Controller - OSDev Wiki_files/poweredby_mediawiki_88x31.png create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware.htm create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_leftbottom.gif create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_lefttop.gif create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_rightbottom.gif create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_righttop.gif create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/mac68k.css create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/macpenguin.gif create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/sflogo.png create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/valid-html401.png create mode 100644 resources/Linux_m68k for Macintosh - Mac Plus hardware_files/vcss.gif create mode 100644 resources/PS_2 Keyboard - OSDev Wiki.htm create mode 100644 resources/PS_2 Keyboard - OSDev Wiki_files/load.css create mode 100644 resources/PS_2 Keyboard - OSDev Wiki_files/load_002.css create mode 100644 resources/PS_2 Keyboard - OSDev Wiki_files/poweredby_mediawiki_88x31.png create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table.html create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/kvmsolutions.gif create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/logo_250.jpg create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navabout1.gif create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navcontact1.gif create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navmap1.gif create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navnews1.gif create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navorder1.gif create mode 100644 resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navprod1.gif create mode 100644 resources/The PS_2 Keyboard Interface.htm create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol.htm create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/fpdin1.JPG create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/fpindin.JPG create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/ps2.JPG create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/qscope.JPG create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/sdl.jpg create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/sdl1.jpg create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/spindin.JPG create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/spindin1.JPG create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/waveform1.jpg create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/waveform2.jpg create mode 100644 resources/The PS_2 Mouse_Keyboard Protocol_files/waveform3.jpg create mode 100644 resources/Wayback Machine.html create mode 100644 resources/Wayback Machine_files/analytics.js create mode 100644 resources/Wayback Machine_files/banner-styles.css create mode 100644 resources/Wayback Machine_files/bundle-playback.js create mode 100644 resources/Wayback Machine_files/iconochive.css create mode 100644 resources/Wayback Machine_files/jquery-1.js create mode 100644 resources/Wayback Machine_files/scancodes3.htm diff --git a/firmware/ibmpc/Inc/helpers.h b/firmware/ibmpc/Inc/helpers.h index b0f0355..f75f0ab 100644 --- a/firmware/ibmpc/Inc/helpers.h +++ b/firmware/ibmpc/Inc/helpers.h @@ -118,6 +118,7 @@ void mouse_buf_init(mouse_buf *lb, uint8_t size); uint8_t mouse_buf_add(mouse_buf *lb, mouse_event* event); mouse_event* mouse_buf_peek(mouse_buf *lb); void mouse_buf_pop(mouse_buf *lb); +void mouse_buf_reset(mouse_buf *lb); void gamepad_buf_init(gamepad_buf *lb, uint8_t size); uint8_t gamepad_buf_add(gamepad_buf *lb, gamepad_event* event); diff --git a/firmware/ibmpc/Inc/ps2mouse.h b/firmware/ibmpc/Inc/ps2mouse.h index 1d99c9b..7274866 100644 --- a/firmware/ibmpc/Inc/ps2mouse.h +++ b/firmware/ibmpc/Inc/ps2mouse.h @@ -22,6 +22,15 @@ uint8_t ps2mouse_get_outgoing_data(mouse_event* this_event, ps2_outgoing_buf* pb uint8_t ps2mouse_send_update(ps2_outgoing_buf* pbuf); uint8_t ps2mouse_write_nowait(uint8_t data); void ps2mouse_reset(void); + +#define PS2_OK 0 +#define PS2_ERROR_SCAN_DISABLED 1 +#define PS2_ERROR_UNKNOWN_CODE_SET 9 +#define PS2_ERROR_HOST_INHIBIT 69 +#define PS2_ERROR_UNUSED_CODE 2 +#define PS2_ERROR_UNKNOWN 3 +#define PS2_ERROR_TIMEOUT 4 + #ifdef __cplusplus } #endif diff --git a/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen b/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen index 67c54af..1a10cdf 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen +++ b/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen @@ -93,8 +93,8 @@ 2 3 - -1 - -1 + -32000 + -32000 -1 @@ -3606,9 +3606,9 @@ 0 ../Src/main.c - 18 - 396 - 411 + 17 + 317 + 349 1 0 diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf b/firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf index ddd65fc9ddf466a94a0dcbc930f1bc6d2ce0a938..b2726365f55a06e9ff889ee7a27e202bf61a60c3 100644 GIT binary patch delta 1311 zcmY*ZU2IfU5I$4x*?U{I-HKXk&~jSqj=LcWMyezt5QLBdCd8N+OcY5r(t8YIN^4t6 z_q4dMbg|Oba{Hqs@J6B%A9Q1ah<{O|>8qqSy82+!0Nr+rSh0Z4ot6@sZ*IQ%<~wuF zG?P7_ss1BV9llU3L=gx)p~dCi@Q)=kAD!(F3Hm$PnM>s$l`Bf+7Nv65r#aa=al9ax zdYK7XmEE0}0QNO^(d)ZJo40pTK4i~w(&7zI%3AvdC(Yh>lk#gjtpnRduV+f4-Ob6k zcXmoX8z~jbD{DYlm)M^6;ssf6_p>AC?Jvk!{QxJwj@@z=*x5B!K7X>{h7!$*J^REX z3zjQvF$?)s&O5w(K}KUE-0zo#VxEhsv4~h6qL)D4m5mK;32{2RW?F`2Wrc8R$4d-^ z&J`JuA6f zmxuy0Y*B*bX*YP;c{+H78NE$Slm3@$br|@9^s8<%pqK_VPN)BNqx9xzk@|^TGj7y2 z5Fz%D8+8nnlHr<*w!+m0j`)@0UrvevO8^%$!hm6jlW*3=h{6XAjQA08os+u&8E0tN z8!q0X5b5F-6$U=`!{R0@6@V2m=2waTyjM0j4nkgY$5TG#wQfk0X_-%6yR!z(R&Zy z5|gYRrFqgCpHWzE;1jAJ;ba{kBSG_YYuupld75WOFmhOASl9@-5x%7V)KQI_={Vq4 z#x_94C_V8VE^UQsYTTo7JGB9PAwapGTq54p_@crcfG^D>80DA__GBmEtAM)#JV%Fn zH6|3k2Dlrr0nX7Q`fe-RX@-7{dla@A*hKF4IN1xx81~D>fW}6J2ZP1!rq6Y1kUY*> z6JQh6(ionm#lkk)bH)KcMk9?e$fb7p%)eU<>0r^Q6<}&E*7)~{VI6E4^#;t`4wtSO z(bz+kA-Z*zjPK8-#{izjUUK%$#b)aKfev;bJyHfKh5#Iic84~|40#I1;B7vvWb5G)#4i}d&0-)bFnj%$Uq`fkjNA!GR7Af{=tMwP4Hm4 zf06^3({|zBM%JNHS-#Y~uSvVQlI2zALrvP$WR`zp9+94GT&1Ttn!TF*rhc8`_2F_B zT+D&7;Jf={(a5gG*xS1fM52)v);&6p)s$BPGy1gt7qvRa8_WSseo{wsyt-jfliPF3 ztgd-@G&uV*Yx^Rtk$o*JJSWL%N!J{|tGT0Qay(RhM&}!uyByb-J);3uH9RR>F3|PC~?i^Xl%)R@ah)r0k%Gr}n-( zfsO(17^0(94X(AEdAf35XdF@%>#R!fr|Z{QFTysu`rb9!m~D`E%`IW$+QZWz?ofQf zHmJgPy&%R&{)Zi+PC^CZI?3Yt{Ouy7I z)m(3t#cxteNr@W-Zi1zh=p%_+=^5ZQ&*oD<$0cqTxC8LbS!<@^eG+#HY;s^PDNbne z7T|8cM$fiTqLUIM0`~yE1K0##Qv>~vBd=460g3xW9BFS}CHX0j;d_v`vu=uO1U?PuNcM(fT zqz!AL+{+0|P4~Gb=;$W=XwvNj*j& vW&&bnAZ7t#Rv=~rV)pHldK~j&*^P`+OmvMICM$4TPQK41u${e!!*DkMNnsiH delta 100 zcmdndr@Et0b;B=R`62})3k4$sBO@gSMuzzK5Kmv%_;>{+BV#Kgb1Os3W=XwvNj*j& vW&&bnAZ7t#Rv=~rV)pHldK~j&*^P~o40MedCM$4TPQK41u${e!!*DkMP|q3* diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf index fa073ac125dece635675ae7c9959a9819e990ab5..9115f0e31ce464340c4979d31d61c1422af1f90d 100644 GIT binary patch delta 35494 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 aR{}kw-m1a*Lz*} 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

m1kr40O z-Uqw{{GO9LfaxEppN8>Aq8pnj5Nw3N3IpPeVESb&4<{c69|rev@&{nCTu1ijz;)2m zKt}u>SQ_G(WLm(tz*Y_GXh47nYmF2^mb@WAVpi0s%ALS^4G#kwz;tmU`w3tq=HfiC zH`tM3S+apG8eR=X|8VIygK>&l(f=I|4?}=8O{?HDU{tS*FM+Xs<>Ft#IHz5#PeLEj zus;|b(53GRj?nNRuoeB!WsnI$q{d)67#+@~F9t`0MGdS1qer`V6By^btAwwC(cxTt z6pTDu9Ze)lpMg`*{w@b!L(os-@G5wK#=#wMs)iYcykQz{2hPxNI5-n5Y82aEq%j)q z3m%L1cNvU^V4Q}hfwMGR2p+HD72pXP#wdx$x~=~9fG27AZSZ6b)6e?Yvo(UBA(#pl zReTFP9gIn>+Uc-gQOX62D)a>xYB&mP1B*`B8H`i*|EuckL8AzwI6j%ZJ#uf{-JlT+ z3E^_Vi*O=$dlqUC^{gaC5X4j#r-#Hs&?Z=%oF73HH6lh|Lawl|m0;u421&#s9#(dK z79zn)B3P*Zcg`K_RP!7DZoTrkbt%D>GWNfo7&r;Rl?2a#XTjJ;EWlHB za0}e$_!{^FxaRmKSn^#Sc04EcU@WR_{}B8m!Ob%Ezou0->jY25Ai*o(CkcK7ehG%F zwI`JHM3S?z!y919P}$)g+(2K!8K;lHl9ICX0r{O6==H=C{!JJQ%L6jUhlDfsz)?E5 zC3kMm|AAf!cJX2Saf-?)=90F{lQcFk&@G$THFQGTnx^F-CDBLr@(dj(uNYA0{dy0*i&XsE}FtNZxR95mi-dav#0yY$xAr5cwq=9O*C(ep)51d1f#czYkbI8xv*f$7)T3jYdBPM@goaA@-WJIH4F zSZGG^V(NTo#{4E6YMK`@l1`n1KacZDXmaTyf(tKP=Wo(~JgC*3ao!r4oWFZYL%u&U zqyGHQj9TIxSe;F`Fxw7)^^&|3fi diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm index 287c7c1..e1bef9a 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm @@ -27,22 +27,22 @@ Project File Date: 03/28/2022

Output:

*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Build target 'ibmpc' -compiling xt_kb.c... -compiling ps2kb.c... compiling main.c... -../Src/main.c(467): warning: #188-D: enumerated type mixed with another type +../Src/main.c(474): warning: #188-D: enumerated type mixed with another type HAL_GPIO_WritePin(GAMEPAD_B1_GPIO_Port, GAMEPAD_B1_Pin, !(this_gamepad_event->button_1)); -../Src/main.c(468): warning: #188-D: enumerated type mixed with another type +../Src/main.c(475): warning: #188-D: enumerated type mixed with another type HAL_GPIO_WritePin(GAMEPAD_B2_GPIO_Port, GAMEPAD_B2_Pin, !(this_gamepad_event->button_2)); -../Src/main.c(469): warning: #188-D: enumerated type mixed with another type +../Src/main.c(476): warning: #188-D: enumerated type mixed with another type HAL_GPIO_WritePin(GAMEPAD_B3_GPIO_Port, GAMEPAD_B3_Pin, !(this_gamepad_event->button_3)); -../Src/main.c(470): warning: #188-D: enumerated type mixed with another type +../Src/main.c(477): warning: #188-D: enumerated type mixed with another type HAL_GPIO_WritePin(GAMEPAD_B4_GPIO_Port, GAMEPAD_B4_Pin, !(this_gamepad_event->button_4)); -../Src/main.c: 4 warnings, 0 errors +../Src/main.c(707): warning: #177-D: function "MX_IWDG_Init" was declared but never referenced + static void MX_IWDG_Init(void) +../Src/main.c: 5 warnings, 0 errors linking... -Program Size: Code=16500 RO-data=428 RW-data=132 ZI-data=2180 +Program Size: Code=16332 RO-data=428 RW-data=132 ZI-data=2164 FromELF: creating hex file... -"ibmpc\ibmpc.axf" - 0 Error(s), 4 Warning(s). +"ibmpc\ibmpc.axf" - 0 Error(s), 5 Warning(s).

Software Packages used:

@@ -65,7 +65,7 @@ Package Vendor: Keil

Collection of Component Files used:

* Component: ARM::CMSIS:CORE:5.3.0 -Build Time Elapsed: 00:00:02 +Build Time Elapsed: 00:00:01 diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex index 61b2844..2436ce7 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex @@ -1,19 +1,19 @@ :020000040800F2 -:1000000008090020D5000008691E000875190008BD +:10000000F8080020D5000008F51D000801190008B7 :1000100000000000000000000000000000000000E0 -:10002000000000000000000000000000A721000800 -:100030000000000000000000B11E0008A921000817 +:100020000000000000000000000000003321000874 +:1000300000000000000000003D1E000835210008FF :10004000E7000008E7000008E7000008E7000008F4 :10005000E700000889010008E7000008E700000841 :10006000E7000008E7000008E7000008E7000008D4 :10007000E7000008E7000008E7000008E7000008C4 :10008000E7000008E7000008E7000008E7000008B4 :10009000E7000008E7000008E7000008E7000008A4 -:1000A000E7000008B51E0008E7000008E7000008A8 -:1000B000E7000008A9270008E7000008E70000089B -:1000C0000348854600F04EF8004800471D2E000802 -:1000D000080900200448804704480047FEE7FEE77F -:1000E000FEE7FEE7FEE7FEE721220008C100000868 +:1000A000E7000008411E0008E7000008E70000081C +:1000B000E700000835270008E7000008E70000080F +:1000C0000348854600F04EF800480047A92D000877 +:1000D000F80800200448804704480047FEE7FEE790 +:1000E000FEE7FEE7FEE7FEE7AD210008C1000008DD :1000F00030B50B46014600202022012409E00D46C0 :10010000D5409D4205D31D469540491B2546954047 :1001100040191546521E002DF1DC30BD03460B433D @@ -23,7 +23,7 @@ :10015000F6E710B513460A4604461946FFF7F0FFC6 :10016000204610BD064C0125064E05E0E36807CC8D :100170002B430C3C98471034B442F7D3FFF7A4FF4D -:10018000004200082042000810B5022000F042F8AA +:10018000584100087841000810B5022000F042F8FC :1001900010BD70B50024014620314A78022A03D0F0 :1001A00004218163012416E0026813680E25AB4325 :1001B0001360026813685B085B0013600122056C22 @@ -31,7 +31,7 @@ :1001D000002900D08847204670BD31B500F0E2F814 :1001E000009C0546601C00D0641C00F0DBF8401B3E :1001F000A042FAD338BD000000B5022807D105207F -:1002000002F022FD002802D001490120087200BD41 +:1002000002F0E8FC002802D001490120087200BD7C :100210004C00002010B504494A69024202D04861EE :10022000FFF7EAFF10BD000000040140F8B500230D :1002300093E0224601249C40A44622407ED04C6894 @@ -88,33 +88,33 @@ :10056000814204D9202068700020287043E0206870 :100570008169C943890606D58069C043C00602D592 :100580006878A028E2D120688069069BC043C00635 -:1005900000960ED500222021204601F07FFA002887 +:1005900000960ED500222021204601F045FA0028C1 :1005A00029D121682020C86168700020287007B018 -:1005B000F0BD00222021204601F070FA00281AD157 +:1005B000F0BD00222021204601F036FA00281AD191 :1005C00020681021C16120682021C1610198411C6F :1005D00001910599884214D1206841680122920353 :1005E000114341600096002220212046069B01F025 -:1005F00055FA002802D00320D9E707E0216820201F +:1005F0001BFA002802D00320D9E707E02168202059 :10060000C8610199059881428FD3ABE70220CEE7FC :1006100000200002FFB5054604464035687883B0E7 :10062000202876D10C98002874D00D98002871D01D :10063000287801286DD001202870FFF7B3FE074607 -:10064000012200901923D103204601F027FA002847 +:10064000012200901923D103204601F0EDF9002882 :1006500053D1212068704020A870002666640C9851 :1006600060620D98608566630E980090019704A9FA -:100670000EC9204601F0CAF9002804D0606C2E7023 +:100670000EC9204601F090F9002804D0606C2E705D :1006800004286AD039E0608DFF2805D9FF22228531 :1006900001231B06009606E0608D20850096208DC4 -:1006A0000123C2B25B062046049901F0E5F93A46FF -:1006B00020460E9901F03DFA002803D0606C042812 +:1006A0000123C2B25B062046049901F0ABF93A4639 +:1006B00020460E9901F003FA002803D0606C04284C :1006C0004BD01AE0606A411C616221680078886240 :1006D000608D401E6085208D401E0004000C20852A :1006E00024D1608D002821D000970022802120464F -:1006F0000E9B01F0D3F9002802D0032007B0F0BD13 +:1006F0000E9B01F099F9002802D0032007B0F0BD4D :10070000608DFF2807D9FF22228501231B06009652 :1007100008E024E021E0608D20850096208D0123F3 -:10072000C2B25B062046049901F0A6F9608D00284C -:10073000BDD13A4620460E9901F0D4F90028BDD12A +:10072000C2B25B062046049901F06CF9608D002886 +:10073000BDD13A4620460E9901F09AF90028BDD164 :1007400020682021C16120684268064B1A4042603F :100750006970AE702E700020D0E70120CEE7022035 :10076000CCE7000000E800FE00B500680E4987B045 @@ -122,949 +122,938 @@ :100780000290032003900520049069460748FFF774 :100790004DFD0748C269012189050A43C261C0694C :1007A0000840059007B000BD005800400004004814 -:1007B0000010024070B504000FD021681348086093 -:1007C00021681348086003CC41602068083C216818 -:1007D0008860FFF7E7FD054608E0012070BDFFF7E0 -:1007E000E1FD401B272801D9032070BD2068C068A7 -:1007F0000028F4D120680269E1688A4201D00161D1 -:1008000001E004490160002070BD0000CCCC000074 -:1008100055550000AAAA00000068024901600020A6 -:1008200070470000AAAA000002480168491C016044 -:10083000704700007000002010B5064801681022C3 -:1008400011430160002000F007F800F017F80020C5 -:1008500010BD00000020024010B5044600F078F9F9 -:100860007D21C900FFF744FC00F0E2FD0022214693 -:10087000501E00F02FF8002010BD000008B50F48F2 -:100880008169012211438161816911400091C2692E -:1008900001040A43C261C069002208400090114669 -:1008A000501F00F017F800221146901E00F012F8B9 -:1008B00000221146501E00F00DF808BD0010024045 -:1008C000C106C90E01208840014908607047000038 -:1008D00000E100E010B501F0C9FA10BDF8B504461A -:1008E0000068434DC00352D5E8690026C00007D414 -:1008F000E96928040143E961E969014001260091A1 -:100900003C480168C90510D4016882151143016093 -:10091000FFF748FD074604E0FFF744FDC01B6428CD -:1009200024D834480068C005F6D5286A03273F025A -:10093000384020D06168394081421CD0286A2A6A38 -:10094000B843012109040A432A622A6A8A432A62B7 -:100950002862C0070FD0FFF725FD009008E0FFF7E1 -:1009600021FD0099411A2448814201D90320F8BD94 -:10097000286A8007F3D5286A6168B843084328626B -:10098000002E04D0E869012109078843E861207836 -:10099000C00705D0286BA168800880000843286341 -:1009A0002078800706D5286B032109048843E16875 -:1009B000084328632078800605D5286B10218843DA -:1009C0002169084328632068800305D5286B8021AE -:1009D0008843A169084328632088400505D5286B12 -:1009E000402188436169084328630020F8BD000066 -:1009F000001002400070004088130000F8B5054662 -:100A00004E480E460068C007C00FB0420AD24B489D -:100A1000016849084900314301600068C007C00F00 -:100A2000B04270D12878464C800705D56068F02127 -:100A30008843A968084360602878C00753D0686875 -:100A4000012817D0022818D0032819D02168890757 -:100A5000002958DA61688908890001436160FFF75D -:100A6000A1FC69680746012913D002291DD003297A -:100A700027D034E021688903EAE721688901E7E7A4 -:100A8000616BC903E4E7FFF78DFCC11B2D48814270 -:100A900023D860680007800F0128F4D123E0FFF716 -:100AA00081FCC11B2748814217D860680007800F6E -:100AB0000228F4D117E0FFF775FCC11B21488142E1 -:100AC0000BD860680007800F0328F4D10BE0FFF714 -:100AD00069FCC11B1B48814201D90320F8BD606835 -:100AE0000007800FF3D115480168C907C90FB1424B -:100AF0000BD9016849084900314301600068C0070B -:100B0000C00FB04201D00120F8BD2878400706D5BB -:100B10006068072109028843E9680843606000F0C3 -:100B20002DF86168084A0906090F515CC840074959 -:100B300008600020FFF790FE0020F8BD0020024072 -:100B40000010024088130000E841000874000020F3 -:100B500001480068704700007400002004480549FF -:100B600000684968044A4905490F515CC84070470C -:100B70007400002000100240F841000830B516A3B0 -:100B80000FCB89B06C460FC417A30FCB0FC41A4903 -:100B90004A680C20144604401848042C05D0184B11 -:100BA000082C04D00C2C00D1184609B030BD94029A -:100BB000240F6D462C5DC96A04AD0907090FD203E5 -:100BC000695C920F022A02D0032A00D11846FFF76F -:100BD0008FFA6043E9E700000203040506070809ED -:100BE0000A0B0C0D0E0F1010010203040506070876 -:100BF000090A0B0C0D0E0F100010024000127A00B3 -:100C0000006CDC02FEB504460078F04EF04DC007E3 -:100C100048D068680007800F01281FD06868000767 -:100C2000800F022804D16868C003800F022815D005 -:100C30006168012919D001208004002901D005290B -:100C400017D02968B1432960296881432960606809 -:100C500000281BD0FFF7A6FB074613E02868800397 -:100C600020D56068002876D01CE0286830432860D2 -:100C7000EDE7296801432960F7E7FFF793FBC01B05 -:100C8000642869D828688003F7D50BE0FFF78AFB52 -:100C9000074604E0FFF786FBC01B6428F1D82868EC -:100CA0008003F7D4207880073ED568680007800F5E -:100CB00014D068680007800F022804D16868C00358 -:100CC000800F01280AD0E068002828681DD0012183 -:100CD00008432860FFF766FB07460BE0286880079B -:100CE0000BD5E068012836D107E0FFF75BFBC01B9E -:100CF0000228C6D828688007F7D52868F8218843D5 -:100D00002169C900084328600EE0400840002860BF -:100D1000FFF748FB074604E0FFF744FBC01B02282F -:100D2000AFD828688007F7D42078000724D5E06979 -:100D30000028686A11D0012108436862FFF732FB7E -:100D4000074604E0FFF72EFBC01B022899D8686A0B -:100D50008007F7D510E036E1D1E040084000686236 -:100D6000FFF720FB074604E0FFF71CFBC01B02282F -:100D700087D8686A8007F7D42078042740070028BE -:100D800061DA00200190E869C00008D4E969B8067A -:100D90000143E961E96901400120009101908D481A -:100DA0000168C90511D40168821511430160FFF77C -:100DB000F9FA009005E0FFF7F5FA0099401A642867 -:100DC00097D884480068C005F5D5A06801280AD0E6 -:100DD000002801D0052811D0286A40084000286268 -:100DE000286AB84302E0286A012108432862A06803 -:100DF000002812D0FFF7D6FA00900AE0286A38439C -:100E00002862F0E7FFF7CEFA0099411A7248814252 -:100E100075D8286A8007F5D50DE0FFF7C3FA009072 -:100E200006E0FFF7BFFA0099411A6B48814266D885 -:100E3000286A8007F5D40198002804D0E9690120C8 -:100E400000078143E9612078C00635D56069012833 -:100E50000CD0401D686B24D038436863686B400831 -:100E600040006863FFF79EFA074622E0686B38434C -:100E70006863686B012108436863FFF793FA0746CC -:100E800004E0FFF78FFAC01B022838D8686B800790 -:100E9000F7D5686BF8218843A169C90008436863E6 -:100EA0000AE0B8436863F4E7FFF77CFAC01B022846 -:100EB00025D8686B8007F7D42078800637D5686816 -:100EC0000007800F032813D068680007800F0228EE -:100ED00004D16868C003800F032809D0206A002865 -:100EE000686B16D030436863FFF75CFA06460CE087 -:100EF000686BC0031BD5206A012864D117E05BE052 -:100F0000FFF750FA801B022856D8686BC003F7D54C -:100F10000DE0B0436863FFF745FA064604E0FFF7CB -:100F200041FA801B022847D8686BC003F7D4606A77 -:100F3000002846D069680907890F022943D0012695 -:100F400036060228286805D0B0432860FFF72AFA41 -:100F5000044633E0B0432860FFF724FA074604E074 -:100F6000FFF720FAC01B022826D828688001F7D492 -:100F7000E86A216B000900010843E862A16AE06A9F -:100F8000084369687B22D20391430843686028685C -:100F900030432860FFF706FA044604E0FFF702FA40 -:100FA000001B022808D828688001F7D509E0FFF760 -:100FB000F9F9001B022801D90320FEBD2868800131 -:100FC000F5D40020FEBD0120FEBD000000000100A0 -:100FD00000100240007000408813000070470000BD -:100FE000F8B504460068426881684B0605D4CB0713 -:100FF00003D0530601D5E16C04E08B0705D5130639 -:1010000003D5216D20468847F8BDFF23613319427F -:10101000FAD09306F8D523464D064033002D09DA61 -:101020005D7F032D3CD0256E042635432566C568BB -:10103000856800958E060125002E08DA266E2E435F -:1010400026668668009606684027BE430660C80587 -:1010500006D5206E0821084320662068806800902D -:10106000206E0028D0D020684168E026B14341605E -:101070005D77900718D02068416889088900416031 -:10108000A06D0B4D002803D04563A06DFFF781F8DC -:10109000606D0028B8D04563606DFFF77AF8F8BD41 -:1010A000C16880680090F8BD2046FFF797FFF8BD43 -:1010B00027200008F8B5040007D000262546403553 -:1010C000A662687F002802D005E00120F8BD2E77D7 -:1010D000204600F04BF802236B772068016840221D -:1010E000914301600721E0680902884201D900228A -:1010F00001E0012212030F273F02B84202D08842CA -:1011000000D0A662276B002F05D1884201D9236346 -:1011100001E001202063A1686068636908432169D8 -:10112000194308430123A1695B0219400843E1699F -:101130000843216A0843A16A084321680860616B7B -:10114000606AA36908431B0C0427E1683B4019430C -:1011500008432168104348602068C1697A029143BE -:10116000C1612666012068770020F8BD00B50068DF -:10117000114987B088421DD11048826981140A4301 -:101180008261806908400590F02000900220019063 -:101190000021032003900291049109206946C006B2 -:1011A000FFF744F8002211461920FFF793FB19209E -:1011B000FFF786FB07B000BD003001400010024081 -:1011C00070470000F0B504468C464034217F00256E -:1011D000C768964601290CD001212177667F4168B6 -:1011E000012E0CD0CA1FFD3A07D18168002904D115 -:1011F00001E00220F0BD042E01D0022540E061464E -:1012000000291BD07146002918D0002B16D0617F11 -:10121000042901D0052161770021016661468163BF -:101220008387C38771460164A380E3800721090295 -:101230008F4205D9144AC264144A04E001251FE014 -:10124000134AC264134A0265012212038F4202D874 -:10125000E188022903D301684B68934302E00168E7 -:101260004B6813434B6001684A68E0231A434A60A5 -:1012700000680168490603D40168402211430160F7 -:10128000002020772846F0BDC51E0008591F000821 -:10129000FB1E00088D1F0008F8B501220920D103AC -:1012A000C006FFF778F857492022881AFEF736FF64 -:1012B000544C0126203C2078534FDE2801D07E720A -:1012C00090E0A07808280BD0092810D000250B2822 -:1012D00030D003284AD001284FD0022879D081E0AD -:1012E0004848A2792179203001F0B8FC7AE0617990 -:1012F000207901F073FB434A2C321080E179A07908 -:1013000001F06CFB40425080207A3E49404210710F -:10131000607A5071607B9071A07B1072E07BD0711D -:10132000207C5072607C907237482C31143001F070 -:1013300057FF57E0334821793830017061794170A7 -:10134000A1798170E179C170057145718571C571AF -:10135000217A0172617A4172A17A8172E17AC17255 -:10136000014629481C3001F05BFB3BE001210022D3 -:1013700049032648FFF70FF834E02248202140387F -:10138000FEF7E5FE1F48CD214038017061784170BD -:1013900080238370C6703978017145710221817193 -:1013A000C5710822002105468D356C5C002C0CD0DF -:1013B000022C02D0012C03D005E0815403E008E0A8 -:1013C0000C461C438454521CD2B2491C1029ECDB3D -:1013D00008E00325605D002804D001F0E7FB6D1CE8 -:1013E000202DF7DB074A2023114640390848FFF734 -:1013F000E9FE012109200022C903C006FEF7CBFF48 -:10140000F8BD0000A40200204C00002000080048A5 -:10141000E0000020042204490428086902D0904317 -:10142000086170471043FBE700E000E070470000F0 -:10143000094910B5401E884201D9012010BD074C52 -:1014400060610321081F00F011FD0020A06107204A -:101450002061002010BD0000FFFFFF0000E000E061 -:1014600010B5FFF7E3FF10BD70B502462032137FC1 -:10147000012B1BD00123137702245477046865687D -:101480007026B5436560046865680E68354365601D -:101490000468A5688026B543A5600068846849682B -:1014A0000C43846053770020107770BD022070BD1C -:1014B00070B5040005D025462035687F002802D08D -:1014C00006E0012070BD00202877204600F00AF8D1 -:1014D00002206877211D206800F0D0FE0120687787 -:1014E000002070BD08B5006801218907884207D136 -:1014F0000448C16901221143C161C06910400090D4 -:1015000008BD0000001002400222014620314A7747 -:101510000268136801200343136048770020704776 -:10152000F8B5054604462035287F012817D0012745 -:101530002F7702206877226890687726FF23B043D0 -:101540001B02984390600868502837D00EDC202892 -:1015500057D006DC00284ED0102840D14EE00220A3 -:10156000F8BD302850D0402839D13CE060282DD03B -:10157000702817D001221203801A0ED090422ED16B -:10158000CB684A688968206800F0C2FE20688168DC -:10159000012292031143816021E020688168C9081B -:1015A000C900F8E7CB684A688968206800F0B0FE97 -:1015B00021688868B0433043886010E0CA68496891 -:1015C000206800F0B8FE5021206806E0CA6849682B -:1015D000206800F0C1FE6021206800F0A4FE6F7753 -:1015E00000202877F8BDCA684968206800F0A3FE8B -:1015F00040212068F1E700212068EEE710212068F3 -:10160000EBE720212068E8E730212068E5E7704714 -:1016100070470000F8B503680446D86919680507E3 -:101620002D0F07D1820605D58A0603D5204600F086 -:101630006BFFF8BD9A68002D64D0D507ED0FFF262B -:1016400021360E402E435DD0C60706D0CE0504D508 -:1016500001261E62E36E3343E366870702230426F6 -:10166000002F06DAD70704D027683B62E76E3743BE -:10167000E766470706D5D20704D022681662E26EF5 -:101680001A43E266020709D520220A402A4305D000 -:10169000236808221A62E36E1343E366E26E002AAF -:1016A000C7D0800604D5880602D5204600F02CFF5E -:1016B000E06E000703D42068806840061CD52046F1 -:1016C00000F006FF20688168490611D58168402234 -:1016D00091438160606E00280AD01A494163606EB0 -:1016E000FEF757FD0028A4D0606E416B8847F8BD17 -:1016F0002046FFF78DFFF8BD2046FFF789FF002049 -:10170000E066F8BDC5020DD552020BD501200005DB -:101710001862202120466030417281722046FFF716 -:1017200076FFF8BD020605D50A0603D5204600F06F -:10173000D7FFF8BD4006FCD54806FAD5204600F094 -:10174000D6FEF8BDBD24000870B5040005D02546BE -:101750006035687A002802D006E0012070BD0020C4 -:101760002872204600F026F824206872206801685C -:10177000490849000160204600F004FF0128EDD02F -:10178000606A002802D0204600F0F9FD2068416818 -:101790000922D20291434160206881682A22914344 -:1017A000816020680168012211430160204600F039 -:1017B0004BFE70BD30B51F4D046800211E4802224B -:1017C000032387B0AC4214D1856954032543856156 -:1017D00080690291204005905802009001200490F9 -:1017E0000920039301926946C006FEF71FFD07B06A -:1017F00030BD124DAC42FAD1C5690124A404254381 -:10180000C561C069029120400590032080020090CC -:10181000042004900393019269460948FEF706FDEF -:10182000002201211D20FFF755F81D20FFF748F881 -:10183000DDE7000000380140001002400048004091 -:10184000000400487047FFB5064604466036707ACB -:1018500083B00D46202858D1002D0CD005980028C3 -:1018600009D00120A1680003814207D12069002826 -:1018700004D1E80702D0012007B0F0BD307A01287A -:1018800043D0012030720020E06621207072FEF704 -:1018900089FD01902746403705983882059878825F -:1018A00018E0788A401E78820698009000228021F5 -:1018B0002046019B00F047FF002818D10120A168B5 -:1018C0000003814202D12069002812D021682878C3 -:1018D00008856D1C788A0028E3D1069800900022C4 -:1018E00040212046019B00F02EFF002808D0032055 -:1018F000C2E728882168C005C00D0885AD1CE9E74E -:101900002020707200203072B6E70220B4E730B5B4 -:10191000034660335C7A202C23D100290BD0002AA7 -:1019200009D0012584682D03AC4206D10469002C3E -:1019300003D1CC0701D0012030BD1C7A012C10D07E -:10194000C164014640310A824A820021C1662122D7 -:101950005A721972006801688022114301600020E8 -:1019600030BD022030BD0000014900208872704760 -:101970004C000020FEE701688A69D243920701D437 -:1019800000228A6200688169C943C90703D081695E -:101990000122114381617047F7B5044600680E4685 -:1019A0008069C043C0062CD42027254640352068D6 -:1019B0008069C04380060FD5701CF8D0002E05D07A -:1019C000FEF7F0FC0299401AB042F0D96F70002087 -:1019D000A87028700320FEBD21681020C86120680F -:1019E000C7612046FFF7C7FF20684168064A1140DB -:1019F0004160042060646F700020A870287001208E -:101A0000FEBD0020FEBD000000E800FEF8B5044663 -:101A10000120164640031D46DAB2C3020090079F1C -:101A2000204600F029F83A462046069900F081F851 -:101A3000002803D0606C04281BD018E02846F5B2BB -:101A4000012809D02168300A88623A462046069962 -:101A500000F06FF80028EDD1206885620097002221 -:101A600080212046069B00F019F8002800D00320B2 -:101A7000F8BD0120F8BD000070B50568049C6868D9 -:101A80008905890D1204044E114319433040214346 -:101A90000143696070BD0000009800FCF8B51C4669 -:101AA00017460E46054611E0601C0FD0002C05D0ED -:101AB000FEF778FC0699401AA04207D9202040354D -:101AC00068700020A87028700320F8BD286881691C -:101AD0003046884304D00020B842E5D00020F8BD4D -:101AE0000120F9E770B516460D4604461AE0324665 -:101AF00029462046FFF750FF002801D0012070BD85 -:101B0000002D04D0FEF74EFC801BA8420AD9616C60 -:101B1000202001436164403460700020A070207078 -:101B2000032070BD20688069C0438006DFD4002098 -:101B300070BD70B516460D4604461CE03246294677 -:101B40002046FFF729FF002801D0012070BD681C46 -:101B500011D0002D04D0FEF725FC801BA8420AD925 -:101B6000616C202001436164403460700020A070EB -:101B70002070032070BD20688069C0438007DDD4D9 -:101B8000002070BDF0B5504887B041690120C00405 -:101B90004D4A014351615169014005915169C000AD -:101BA000014351615169014005915169401101435F -:101BB000516151690140104605914169012080043D -:101BC00001435161516944110140404F0591002288 -:101BD00021463846FEF7DFFB0326B60301223146D5 -:101BE0003846FEF7D8FB012203213948FEF7D3FB24 -:101BF000CD21012289003748FEF7CDFB09200022C4 -:101C0000A100C006FEF7C7FB002208213148FEF7FD -:101C1000C2FB0094002401250195029469463846D0 -:101C20000394FEF703FB009611260294694638469A -:101C300001960394FEF7FAFA032000900294694695 -:101C4000019603942248FEF7F1FA234802270190F7 -:101C50006946009702941F48FEF7E8FACD208000FD -:101C6000009002946946019603941A48FEF7DEFA42 -:101C7000E8036A4691C269461648FEF7D7FA280279 -:101C80006A4691C209206946C006FEF7CFFAE8030A -:101C9000009009200294694601950394C006FEF75E -:101CA000C5FA0820009002946946019503940948FA -:101CB000FEF7BCFA002202210520FEF70BFE0520EC -:101CC000FEF7FEFD07B0F0BD00100240000800481E -:101CD00000140048000400480000211010B512480C -:101CE0001049016011494160002181600161416139 -:101CF00081610122C161C2600162FEF7A3FB00287D -:101D000000D0FEE700210848FEF752FB002800D073 -:101D1000FEE700210448FEF770FB002800D0FEE734 -:101D200010BD000000580040840000205D3E3020BF -:101D300010B50D480B4901600021416081600161CF -:101D4000416181610722016212024162C2608162C7 -:101D500007220163C2624163FFF7ACF9002800D09B -:101D6000FEE710BD00300140E000002010B5012169 -:101D7000124886B08907016000242F2184604160E9 -:101D80000461611E8461C160FFF792FB002800D0EE -:101D9000FEE701200003009069460848FFF7C0FBFA -:101DA000002800D0FEE7049404A904480594FFF736 -:101DB0005BFB002800D0FEE706B010BD4401002008 -:101DC00010B50F480D490160E121490241600D49FC -:101DD0008989402901D00C49416000218160C1609E -:101DE00001618161C1610C2201624261416204486A -:101DF000FFF7AAFC002800D0FEE710BD0038014024 -:101E0000840100204C0000203EFA020010B5144866 -:101E1000124901604B210901416012498989402919 -:101E200002D07F2109014160002101221207C16017 -:101E30008260016181610C22C161426101623021D5 -:101E400041620121090381634900C1630448FFF72E -:101E50007BFC002800D0FEE710BD000000480040D9 -:101E6000F40100204C000020704700008307FF228F -:101E7000DB0E9A408907090E994000280BDA00070B -:101E8000000F0838830808489B001818C36993435B -:101E90000B43C3617047830804489B001B181868F4 -:101EA000904308431860704700ED00E000E400E054 -:101EB0007047000010B50248FFF792F810BD00000F -:101EC000E000002010B50168C968026C1180016C47 -:101ED000891C016401464031CA88521ECA80C988E3 -:101EE000002909D101684A6840239A434A60C18F9A -:101EF000002901D100F06EF810BD10B50146403147 -:101F0000CC880368026C012C11D9DB681380026C49 -:101F1000921C0264CA88921ECA80CA88012A0DD106 -:101F200002685368012424032343536006E01C7BAA -:101F3000531C03641470CA88521ECA80C9880029C1 -:101F400009D101684A6860239A434A60C18F002919 -:101F500001D100F03FF810BD10B5816B026809880F -:101F6000D160816B891C8163C18F491EC187C18F7C -:101F700000290AD101684A6880239A434A604621B1 -:101F8000095A002901D100F025F810BD10B5C38F02 -:101F90000268816B022B07D30988D160816B891C91 -:101FA0008163C18F891E05E04B1C8363097811731F -:101FB000C18F491EC187C18F00290AD101684A68B3 -:101FC00080239A434A604621095A002901D100F032 -:101FD00001F810BD70B50446FEF7E4F9024620682A -:101FE00041682025A94341606421204600F024F87F -:101FF000002802D0206E28432066226E2046012150 -:102000004030002A04D041772046FEF7E7FF70BD3C -:10201000427F4177042A204602D0FFF73DF970BD88 -:10202000FFF7CEF870BD10B5406A0021462211526C -:10203000C187FEF7D3FF10BDF8B50F460B46154616 -:102040000092032104460022C90200F01BF820265A -:10205000002812D13B46002280212046009500F046 -:102060005CF8002809D103213B46002249022046A2 -:10207000009500F007F8002803D0206E304320665A -:102080000320F8BDF8B51D4617460E4604463DE050 -:10209000032149028E4205D1002F03D1017B6846FE -:1020A00001700078681C31D0002D05D0FEF77AF958 -:1020B0000699401AA84229D320684168E02291433A -:1020C00041606068C11FFD390CD10121A068C903BE -:1020D000884202D04911884204D120680168402218 -:1020E000914301600120A16A4003814207D1216828 -:1020F0000A6882430A6021680A6802430A60012074 -:1021000040346077002020770320F8BD2068816884 -:102110003140B942BCD10020F8BDF8B51D46174684 -:102120000E46044633E0681C31D0002D05D0FEF782 -:1021300039F90699401AA84229D320684168E0225B -:10214000914341606068C11FFD390CD10121A06835 -:10215000C903884202D04911884204D1206801682D -:102160004022914301600120A16A4003814207D1CE -:1021700021680A6882430A6021680A6802430A608B -:10218000012040346077002020770320F8BD2068CC -:1021900081683046884304D00020B842C3D1002073 -:1021A000F8BD0120F9E7704710B5FEF73DFBFFF7DA -:1021B00057F910BD30B599B02820012500240090B2 -:1021C0000895079509946846FEF71CFD002800D085 -:1021D000FEE707200D9003200E900F94012110942C -:1021E0000DA8FEF70BFC002800D0FEE7119511A802 -:1021F0001395FEF773FB002800D0FEE7FEF7A8FC5E -:102200007D21C900FDF774FFFFF712F90420FFF7E5 -:1022100001F900221146501EFEF75CFB19B030BDDB -:10222000124801680122114301604168104A1140BF -:10223000416001680F4A1140016001680122920467 -:102240009143016041683F22120491434160C16A99 -:1022500009090901C162016B074A11400163416B21 -:102260004908490041630021816070470010024025 -:102270000CB8FF08FFFFF6FE2CFEFCFFF0B502686D -:102280001D4B0124A4071D4D984203D0A04201D04C -:10229000A84203D17026B2434E683243184E194FFC -:1022A00098420DD0A0420BD0A84209D0164CA042B3 -:1022B00006D0B04204D0B84202D0144CA04204D19F -:1022C00003242402A243CC6822438024A2434C6905 -:1022D000224302608A68C2620A688262984206D01B -:1022E000B04204D0B84202D0084A904201D10969F4 -:1022F000016301214161F0BD002C01400004004058 -:1023000000400140004401400020004000480140DE -:1023100030B58468FF252D021B021343AC430B43E9 -:102320002343836030BD826870239A430A430721A8 -:102330000A438260704730B5036A046A6408640027 -:1023400004628469F025AC43120122430A24A343AA -:102350000B438261036230BD30B5036A1024A3438E -:1023600003628469036A0F252D031203AC432243E1 -:10237000A024A343090119438261016230BD10B555 -:10238000818CC90707D001684A6801235B049A431E -:10239000836A1A434A60818C890707D501684A68B5 -:1023A00001231B049A43C36A1A434A60818C49077C -:1023B00007D501684A6801239B049A43036B1A43BB -:1023C0004A60818C090707D501684A680123DB034D -:1023D0009A43436B1A434A60818CC90607D5026849 -:1023E000916801231B039943836B19439160818C8E -:1023F000890607D501688A6801235B039A43C36B8A -:102400001A438A60818C490612D503685A680121F3 -:102410000905046C8A4322435A60026C8A4207D140 -:102420000268516803235B059943436C194351606B -:10243000818C090607D501684A680123DB04806C9A -:102440009A4302434A6010BDF8B500260446C666AA -:10245000FDF7A8FF054616492068884202D01549B5 -:1024600088421DD10068144F000709D501212B4671 -:10247000002249052046009700F065F900280DD19B -:102480002068006840070BD501212B4600228905F2 -:102490002046009700F057F9002801D00320F8BD2E -:1024A000202060346072A07226720020F8BD000007 -:1024B0000038014000440040FFFFFF0110B5406AB2 -:1024C0000022014640314A834A82FFF7A1F810BD3D -:1024D00001680A68FF2321339A430A6001688A6809 -:1024E000520852008A60202160308172704710B516 -:1024F00001680A6840239A430A60202269210A542D -:10250000FFF732FA002010BD70B502464032034694 -:102510006033948B9D7A0168222D05D0886908224A -:1025200010438861022070BD898C012685683603BE -:10253000B54202D10569002D0BD02140446D651CC8 -:1025400045652170518B491E0904090C518307D040 -:1025500015E0456D21402980416D891C4165F1E7F9 -:1025600001680A68FF242134A2430A6001688A686E -:10257000520852008A6020219972FFF763F9002007 -:1025800070BD0000F8B504462369A268E5691A43E6 -:10259000636910202B43002125681A432B680E46DF -:1025A000474F3B4013432B6023685A6803252D0394 -:1025B000AA43E5682A435A60236AA26925681A4338 -:1025C000AB680B273F02BB431343AB603D4F25680D -:1025D0003D4B0203BD420AD11B6B9B079B0F20D0D2 -:1025E000012B14D0022B14D0032B1BD10DE0374F3D -:1025F000BD4210D11B6B03273F043B4011D09B1AF7 -:1026000005D09B1A05D093420CD102200AE0042089 -:1026100008E0082006E02E4B9D4202D02D4B9D4243 -:1026200000D100200123E769DB039F4222D100286B -:102630000CD002280DD0042813D0082817D001266A -:102640000A0912010807400F10432EE0FEF786FA30 -:1026500009E06168204A48088018FDF749FD81B209 -:10266000EEE7FEF78BFA616840004A08F4E761681C -:102670004808F1E7002808D0022809D004280CD027 -:10268000082815D001263046F8BDFEF767FA06E0A7 -:102690006168124A480880180DE0FEF76FFA616819 -:1026A0004A088018FDF724FD80B22168C860EAE777 -:1026B00061684808C018FDF71BFD80B2E860E2E7DA -:1026C000F369FFEF00380140001002400044004071 -:1026D00000480040004C00400024F40000127A0042 -:1026E0006921095C212901D002207047024640324D -:1026F000518A002912D0012381681B03994202D11B -:102700000169002915D0C16C4B1CC36400680978AD -:102710000185508A401E50820020704701680A6877 -:1027200080239A430A6000680168402211430160D7 -:10273000F2E7C16C03680988C905C90D1985C16C28 -:10274000891CC164E5E7FFB581B017460E46044613 -:102750000A9D1DE0681C1BD0002D05D0FDF722FE50 -:102760000499401AA84213D920680168FF22A132B7 -:1027700091430160206881684908490081602020F8 -:1027800060346072A07200202072032005B0F0BD9A -:102790002068C1693046884304D00020B842D9D0AF -:1027A0000020F3E70120F9E710B50248FEF732FFF9 -:1027B00010BD0000F40100200FB410B503A9044BB4 -:1027C000044A029800F024F810BC08BC04B0184772 -:1027D000092A00087800002030B47446641E257869 -:1027E000641CAB4200D21D46635D5B00E31830BC45 -:1027F000184702E008C8121F08C1002AFAD1704722 -:102800007047002001E001C1121F002AFBD1704770 -:10281000FFB58DB00F460546002606E025280AD0F4 -:10282000109A0F9990476D1C761C28780028F5D1D6 -:10283000304611B0F0BD00240121674A009400E049 -:1028400004436D1C2B780846203B98401042F7D17A -:1028500028782E2815D10420044368786D1C2A2876 -:102860000AD101CF6D1C00900BE000990A22514360 -:10287000303940186D1C00902878014630390929FC -:10288000F3D92878692843D006DC0028D0D0632803 -:102890000BD0642804D13BE073280FD075284CD0AE -:1028A000109A0F999047761C94E038786946087220 -:1028B0000020487202A80190012003E038680190CE -:1028C0000020C0433F1D61070CD5002400E0641CBC -:1028D00000998C420FDA8442F9DB0199095D0029E5 -:1028E000F5D108E0002400E0641C8442FCDB01997F -:1028F000095D0029F8D1361907E00198019900789F -:10290000491C0191109A0F999047641EF5D261E01D -:102910000A20019001CF002802DA40422D2102E076 -:10292000210504D52B216A461172012103E0E1073C -:1029300001D02021F7E70C9104E00A20019001CF9B -:1029400000210C910BA90B9108E00199FDF7D0FB38 -:102950000A460B993032491E0B910A700028F4D1B7 -:102960000B9803A9081A20300190600701D5009840 -:1029700001E0012000900199884203DD01460198A1 -:10298000081A00E000200024009006E002A8109A37 -:10299000005D0F999047641C761C0C988442F5DB0F -:1029A00004E0109A30200F999047761C0099481E39 -:1029B00000900029F5DC08E00B980B990078491C81 -:1029C0000B91109A0F999047761C0199481E01901F -:1029D0000029F1DC6D1C28E70928010009020143E8 -:1029E00008B2704700B5014600F090FB411800F0B6 -:1029F0008DFB8842FBD300BD10B502490860FEF78D -:102A000083FD10BD0000002013B564230122694638 -:102A10000248FEF718FF00981CBD0000840100204A -:102A200070B50D46044600F020F8002801D00120C2 -:102A300070BD20780C226168504308182946FDF7C4 -:102A40006DFB2078A178401CFDF752FB217000201F -:102A500070BD10B5044681700C20484300F0DEFACA -:102A60006060204600F026F810BD10B5044681785D -:102A70000078401CFDF73CFB6078814201D10120C9 -:102A800010BD002010BD41780278914201D1002094 -:102A9000704740680C2251434018704710B50446F7 -:102AA00040782178884204D0A178401CFDF720FBB3 -:102AB000617010BD10B500210170417081780C2249 -:102AC00051434068FDF743FB10BD000070B5254839 -:102AD000FFF7D9FF04003BD02078002839D000222E -:102AE000214E02213046FDF756FC6078002832D096 -:102AF00000221E4D0121C9032846FDF74CFCA07899 -:102B000000282AD0002201213046FDF744FCE0785D -:102B1000002824D00022012189032846FDF73BFC30 -:102B2000207AFF25291A032000F0D4FA607A291AA6 -:102B3000002000F0CFFAA07A291A022000F0CAFA89 -:102B4000E07A291A012000F0C5FA0648FFF7A6FF2F -:102B500070BD0122C4E70122CBE70122D3E70122A5 -:102B6000D9E7000068000020001400480008004871 -:102B700070B50C4C012202212046FDF70CFC0A4DD9 -:102B80000122D1032846FDF706FC0122114620460A -:102B9000FDF701FC012291032846FDF7FCFB00F044 -:102BA00083FA70BD001400480008004870B5440660 -:102BB000C109640EC901102C24D2214D285D0028C2 -:102BC00020D000291FD002281CD11E482300FFF767 -:102BD00003FE0817050C170F17171517FF230133EE -:102BE0000246590000F084FB0AE001F0B5F907E065 -:102BF00010230246202100F073FF01E0FFF7B8FF29 -:102C00000120285570BD0128FCD102202855230041 -:102C1000FFF7E2FD0805060B050E05051305F1E7B4 -:102C200000F0E6FC00F0F4FC70BD01F0E5F970BDC9 -:102C300000F0F0FF00F0DEFF70BDFFF799FF70BD00 -:102C4000F102002000040048102803D20249085C69 -:102C5000012800D000207047F102002070B5154611 -:102C60000E46044600F022F8002801D0012070BD75 -:102C70002178606846542178A06845542078A1786E -:102C8000401CFDF735FA2170002070BD70B50D466F -:102C900004468170284600F0C1F96060284600F0C3 -:102CA000BDF9A060204600F02BF870BD10B50446B9 -:102CB00081780078401CFDF71BFA6078814201D1D1 -:102CC000012010BD002010BD10B543780478A34248 -:102CD00001D1012010BD4468E35C0B70816840782D -:102CE000085C1070002010BD10B5044640782178B3 -:102CF000884204D0A178401CFDF7FAF9617010BD3C -:102D000010B50446002020706070A1786068FDF75F -:102D10001EFAA178A068FDF71AFA10BD38B50D4665 -:102D2000FF216A46ED3811703B4C0300FFF754FD5C -:102D300013645E2B422B342C241D6F161616162B93 -:102D40002B2B6F0B2B0014220121FA2000F0C2FC68 -:102D500000F05EFCFA220021AA204AE02078032835 -:102D600055D014220121FE2043E014220121FA2033 -:102D700000F0B0FC002005E014220121FA2000F050 -:102D8000A9FC0120607038BD14220121FA2000F056 -:102D9000A1FC1E21684636E014220121FA2000F031 -:102DA00099FC14220021AB2000F094FC1422002195 -:102DB00083201EE014220121FA2000F08BFC1E214A -:102DC000684600F097FB0028DDD114220121FA208B -:102DD00000F080FC68460078002803D00328D2D891 -:102DE000207038BD14220021207802E01422012135 -:102DF000EE2000F06FFC38BD14220121FA2000F013 -:102E000069FC1E21284600F075FB0028F3D114222E -:102E10000121FA20EDE70000040000201CB56648FF -:102E2000664C8089A081FDF707FDFFF7C3F9FEF727 -:102E3000A9FEFEF753FFFEF77BFFFEF797FFFEF7B5 -:102E4000BFFFFEF7E3FF5F485D490160032141607A -:102E50005D49C1608160FDF7ADFC002800D0FEE750 -:102E60005848FDF7D9FC00210220019100900B4643 -:102E70002278564956A0FFF79FFC52487430FFF75E -:102E8000BBFD00F003FAFF250135564E6F003246B8 -:102E90002B463946104600F02BFA32462B4639466F -:102EA000104601F063F8324610232021104600F04E -:102EB00017FE0220FFF7C8FE002801D001F04CF8F1 -:102EC00010214948FFF7E2FE3C481021143000F081 -:102ED000A0F93A4810211C30FFF7BBFD00F0E4F8E0 -:102EE000414820216038FDF732F93F4A3548203A01 -:102EF0001146202340391030FEF764F9A1893BA028 -:102F0000FFF75AFC00F0C0F8002812D13BA0FFF7F1 -:102F100053FC002708213046FDF739FA3220FDF72F -:102F20005CF97F1C0A2FF5DB012208213046FDF7F2 -:102F300032FA0927FF062348FDF76EFC0420FFF74D -:102F400083FE002809D00121C9033046FDF71AFA93 -:102F5000002802D000F090FE06E00520FFF774FE86 -:102F6000002801D000F0DAF80120FFF76DFE0028FC -:102F700008D029463846FDF705FA002802D000F0AF -:102F80004FFB0CE00220FFF75FFE002807D0294628 -:102F90003846FDF7F7F9002801D001F04DF8072079 -:102FA000FFF752FE002801D0FFF790FD607A00285D -:102FB000C1D000F05DFF0000C0F7FF1F4C000020F3 -:102FC00000300040D0000020FF0F0000B141000899 -:102FD00025730A7265762564207625642E25642E75 -:102FE00025640A0000040048C4020020666C617376 -:102FF000685F73697A653A2025640A0044696769E5 -:1030000074616C20706F74206E6F742072657370C1 -:103010006F6E64696E67210A00000000F0B50B3026 -:10302000C108C900144F0026144A0FE003688B4200 -:103030000BD38B4205D95C1A4318456830C3083B53 -:1030400000E04368136002C004E0021D106800281D -:10305000ECD13046002803D13868002801D0002088 -:10306000F0BD064A06481060064A121AD208D2007D -:1030700044C001203860D7E7800000207C00002099 -:103080000C0300200805002010B5642301225821FC -:103090000448FDF731FA002801D0002010BD0120BE -:1030A00010BD00008400002010B5094C002204214E -:1030B0002046FDF770F90120FDF78FF80122042169 -:1030C0002046FDF768F90120FDF787F810BD0000E4 -:1030D0000004004803B583B0042802D3FF2005B0E4 -:1030E00000BD08496423085C01210007020E04A802 -:1030F0000293019100900B4658210348FDF78AFA8C -:10310000EDE70000AD41000884000020024800689F -:103110000068406A704700000000002070B52E4C27 -:10312000207A0025002807D04D20E0710122E11D02 -:103130002A48FEF7ECFB25722748143000F083F88C -:10314000002806D0A17A002904D02348143000F0CA -:1031500085F870BD2049C0220E310D808D700A7037 -:103160008279002A01D0E0220A70027A002A03D074 -:103170000A7810231A430A700022825E4088404277 -:1031800000B2030603D50B7808252B430B704306CA -:1031900003D50B7804252B430B70130603D50B784E -:1031A00002252B430B7053060125002B02DA0B7806 -:1031B0002B430B709206920E80064A70800E887028 -:1031C0000548143000F04AF8034903220E31034841 -:1031D000FEF79DFBA57270BD4C000020F40100209D -:1031E00070B50D46044600F020F8002801D00120FB -:1031F00070BD20780C226168504308182946FCF7FE -:103200008DFF2078A178401CFCF772FF2170002010 -:1032100070BD10B5044681700C204843FFF7FEFED8 -:103220006060204600F026F810BD10B50446817895 -:103230000078401CFCF75CFF6078814201D10120DE -:1032400010BD002010BD41780278914201D10020CC -:10325000704740680C2251434018704710B504462F -:1032600040782178884204D0A178401CFCF740FFC8 -:10327000617010BD10B500210170417081780C2281 -:1032800051434068FCF763FF10BD000010B51021EA -:103290000548FCF75CFF012103480222417082705F -:1032A00001714271C17110BDF102002070B50F4D66 -:1032B0006988A868FDF766F80446A988E868FDF7FC -:1032C00061F8012802D0002809D00AE0012C02D0C0 -:1032D000002C02D005E0032070BD022070BD012C3F -:1032E00001D0002070BD012070BD0000040000204E -:1032F00010B5054CA0606180E260A38000F078F911 -:1033000000F086F910BD00000400002010B5094A45 -:103310005378002B06D01278012A05D0022A06D055 -:10332000092010BD012010BD00F006F810BD00F00E -:1033300019F810BD0400002010B5532805D95728EE -:1033400003D0582801D0032010BD002907D0142233 -:10335000002100F0BFF90028F6D0452010BD8021E3 -:103360000843F4E710B5592810D2614A145CFF2CC9 -:103370007ED0002902D014220021ABE014220021CB -:10338000F02000F0A7F9002873D1F4E7632816D0E5 -:1033900077285AD00246603A1F2A6BD8544A5932CD -:1033A000101860380478FF2C62D000297ED01422D7 -:1033B0000021E02000F08EF900285AD188E0002991 -:1033C0001CD014220021E02000F084F9002850D104 -:1033D00014220021122000F07DF9002849D1142286 -:1033E0000021E02000F076F900287DD11422002190 -:1033F0007C2000F06FF9002876D110BD1422002146 -:10340000E02000F067F900286ED114220021F0209E -:1034100000F060F9002867D1142200217C2000F020 -:1034200059F9002860D114220021E02000F052F95F -:10343000002859D114220021F02000F04BF9002877 -:1034400052D1142200211220D3E70029A6D0142241 -:103450000021E12000F03EF9002845D1142200218E -:10346000104600F037F900283ED11422002102E076 -:103470002CE039E03AE0772000F02CF9002833D135 -:1034800014220021E12000F025F900282CD114227B -:103490000021F02000F01EF9002825D1142200217F -:1034A000104600F017F900281ED100E014E01422A5 -:1034B0000021F02000F00EF9002815D1142200217F -:1034C000772000F007F900280ED110BD022010BDB2 -:1034D0001422012120468CE714220021E02000F074 -:1034E000F9F8002800D149E7452010BD032010BDA0 -:1034F00034410008F3B581B00F4600250126FCF7E2 -:1035000051FF3A4C206107E0FCF74CFF2169401A5B -:10351000B84201D30420FEBDFFF7C8FE0128F3D155 -:103520001220FFF75FFA00226188A068FCF733FFE2 -:103530002420FFF757FA01226188A068FCF72BFFCF -:103540001220FFF74FFAA188E068FCF71BFF012863 -:1035500000D135437004060C1220FFF743FA002215 -:103560006188A068FCF717FF2420FFF73BFA0122CF -:103570006188A068FCF70FFF1220FFF733FAFF2ED7 -:10358000E1D91220FFF72EFA00226188A068FCF72B -:1035900002FF2420FFF726FA01226188A068FCF7C9 -:1035A000FAFE1220FFF71EFA1220FFF71BFA002284 -:1035B000A188E068FCF7EFFE00226188A068FCF7B4 -:1035C000EAFE2420FFF70EFA01226188A068FCF7CA -:1035D000E2FE1220FFF706FA0122A188E068FCF75C -:1035E000DAFE019805700020FEBD000004000020F6 -:1035F00010B5064C01226188A068FCF7CCFE0122C0 -:10360000A188E068FCF7C7FE10BD000004000020A0 -:10361000024802210170012141707047040000201E -:1036200038B5FFF743FE284C0228A07114D00128BA -:1036300015D003280FD1221D511E2448FFF744FB4B -:10364000002808D12179E078FFF760FE452836D0C0 -:103650001E48FFF749FB38BDFFF7CAFF38BDFF2101 -:103660006846017018480A21401CFFF743FF69466D -:103670006078FFF753FB68460478FF2CEED01348C0 -:1036800020216038FCF763FD1048CD2160380170BF -:10369000014620314978417081218170E207012182 -:1036A000002A00D0C170A20700D50171620700D5C1 -:1036B0004171012251030648FCF76DFE38BD01201F -:1036C000FCF78BFD38BD00004C000020C402002038 -:1036D00000080048F8B515460E460746FCF762FE9E -:1036E0000C4C206107E0FCF75DFE2169401AA842FE -:1036F00001D30120F8BDFFF7D9FD0328F3D1002E37 -:1037000003D0AF208000FFF76DF9384600F004F8D1 -:10371000F8BD000004000020F8B5474C054601261E -:103720000022A188E068FCF736FE1220FFF75AF964 -:1037300000226188A068FCF72EFE2420FFF752F9D2 -:1037400001226188A068FCF726FE1220FFF74AF9E3 -:103750006188A068FCF716FE002868D00027E807FB -:1037600001D0012200E00022A188E068FCF713FEEE -:103770001220FFF737F900226188A068FCF70BFEE2 -:103780002420FFF72FF901226188A068FCF703FECF -:103790001220FFF727F96188A068FCF7F3FD0028E5 -:1037A00045D0E807C00F46406D087F1C082FD6DBC8 -:1037B000002E01D0012200E00022A188E068FCF781 -:1037C000EAFD1220FFF70EF900226188A068FCF7DD -:1037D000E2FD2420FFF706F901226188A068FCF7CA -:1037E000DAFD1220FFF7FEF86188A068FCF7CAFD39 -:1037F00000281CD00122A188E068FCF7CCFD122033 -:10380000FFF7F0F800226188A068FCF7C4FD2420CF -:10381000FFF7E8F801226188A068FCF7BCFD1220E0 -:10382000FFF7E0F8C820FFF7DDF80020F8BDFFF74C -:10383000DFFE4520F8BD00000400002010B5164C46 -:10384000E1896069FCF79EFD012805D1A189206905 -:10385000FCF798FD012806D0E1896069FCF792FD2C -:10386000012802D007E0032010BDA1892069FCF7E0 -:1038700089FD002806D0E1896069FCF783FD0028F6 -:1038800002D007E0022010BDA1892069FCF77AFD73 -:103890000128F8D0002010BD1800002070B5294E76 -:1038A0000546B0790C4601283BD0022838D0307844 -:1038B000002844D00821601CFCF749FC032020703C -:1038C00008206070A879002801D009206070287A4B -:1038D000002803D06078022108436070E979042051 -:1038E000002902D06178014361700021695E0029DE -:1038F00003DA61781022114361700221695E0029A8 -:1039000003DA61782022114361702978A170A978C7 -:10391000E170297921717179002900D0207000208F -:1039200070BD2878317A40183072A878717A4018C2 -:1039300070722879B17A4018B072012070BD0320EE -:1039400070BD000018000020F8B500250E46FF28C5 -:1039500014D0624CEC281ED0A17902291DD0E63883 -:1039600001270300FEF738FF11ACB29E716E696447 -:10397000645F6459643A23211E1B640000F04AF915 -:103980001421FA2000F0CAF9FA21AA2000F0B9F9AE -:10399000142100203EE0E07947E014213AE000F0F5 -:1039A00045F945E00020207040E027703EE01421FA -:1039B000FA2000F0B3F900F053FA48489621401C71 -:1039C00000F09CF8002827D144492079183162780A -:1039D0000A5407282CD2401C207129E000F040FA3C -:1039E0001421FA2000F09AF900206071217902294F -:1039F0000ED93A48183040182038C17F502907D1D5 -:103A0000817F642904D1407FC82801D103206071DF -:103A10001421607900F075F9F8BD00F021FAA07961 -:103A2000E071A77104E0E1710220A07100F018FAC2 -:103A30001421FA2000F072F9F8BD1421FA2000F0E8 -:103A40006DF93AE0E1710020EFE71421FA2000F06F -:103A500065F9A079012800D140252078002801D0FF -:103A600020200543E078022801D110200543B079D9 -:103A7000002801D004200543F079002801D002205D -:103A80000543307A002800D03D431421284600F039 -:103A900038F91421A07800F034F91421607800F08E -:103AA00030F90AE01421FA2000F038F90B48962189 -:103AB000801C00F023F80028BFD000F0D1F9F8BD39 -:103AC0001421FA2000F02AF9E770F8BD1421FA2039 -:103AD00000F024F90220E070F8BD0000180000207A -:103AE00010B5054C2061A1816261E38100F092F87C -:103AF00000F080F810BD000018000020F3B581B080 -:103B00000F4600250126FCF74DFC044606E0FCF7B5 -:103B100049FC001BB84201D30120FEBDFFF78EFE19 -:103B20000128F4D11220FEF75DFF314C0022A1895B -:103B30002069FCF730FC2420FEF754FF0122A18904 -:103B40002069FCF728FC1220FEF74CFFE189606930 -:103B5000FCF718FC012800D135437004060C122034 -:103B6000FEF740FF0022A1892069FCF714FC242005 -:103B7000FEF738FF0122A1892069FCF70CFC122016 -:103B8000FEF730FFFF2EE1D91220FEF72BFF0022B7 -:103B9000A1892069FCF7FFFB2420FEF723FF012207 -:103BA000A1892069FCF7F7FB1220FEF71BFF12200A -:103BB000FEF718FF0022E1896069FCF7ECFB0022A8 -:103BC000A1892069FCF7E7FB2420FEF70BFF012207 -:103BD000A1892069FCF7DFFB1220FEF703FF012219 -:103BE000E1896069FCF7D7FB019805700020FEBDF4 -:103BF0001800002010B5064C0122A1892069FCF7AD -:103C0000CAFB0122E1896069FCF7C5FB10BD000019 -:103C10001800002000B500F009F8034900200871E1 -:103C20008861C861487100BD1800002000B50748D0 -:103C300064214170022181700121C1700021017055 -:103C40008171C17100F00CF900BD00001800002066 -:103C500070B50546002409E028194078FF2100F0DE -:103C600050F8002801D0012070BD641C2878A042C3 -:103C7000F2DC002070BD000010B5FFF7DFFD154C31 -:103C8000022860710DD001280ED020461430FFF7B5 -:103C9000DAFA002807D01049FFF700FE002813D1F8 -:103CA0000DE0FFF7A7FF10BD0A480A21801CFFF7AF -:103CB00025FF0949A0781839FFF746FE10BD0648D0 -:103CC000FFF7C6FF0028F9D102481430FFF7C6FA03 -:103CD00010BD00004C000020E802002070B5054631 -:103CE000FCF760FB044606E0FCF75CFB001BA84207 -:103CF00001D3012070BDFFF7A1FD0328F4D10020FE -:103D000070BD10B504460846FFF7E8FF002801D053 -:103D1000012010BD204600F013F810BD10B5044678 -:103D20000846FFF7DBFF002801D0012010BDAF20BF -:103D30008000FEF757FE204600F002F810BD00009C -:103D4000F8B5464C054601260022E1896069FCF77A -:103D500022FB1220FEF746FE0022A1892069FCF713 -:103D60001AFB2420FEF73EFE0122A1892069FCF700 -:103D700012FB1220FEF736FEA1892069FCF702FB38 -:103D8000002868D00027E80701D0012200E00022C7 -:103D9000E1896069FCF7FFFA1220FEF723FE00229A -:103DA000A1892069FCF7F7FA2420FEF71BFE012207 -:103DB000A1892069FCF7EFFA1220FEF713FEA18912 -:103DC0002069FCF7DFFA002845D0E807C00F46401D -:103DD0006D087F1C082FD6DB002E01D0012200E0E9 -:103DE0000022E1896069FCF7D6FA1220FEF7FAFD9D -:103DF0000022A1892069FCF7CEFA2420FEF7F2FD0B -:103E00000122A1892069FCF7C6FA1220FEF7EAFD1B -:103E1000A1892069FCF7B6FA00281CD00122E189AB -:103E20006069FCF7B8FA1220FEF7DCFD0022A189D8 -:103E30002069FCF7B0FA2420FEF7D4FD0122A18905 -:103E40002069FCF7A8FA1220FEF7CCFDFA20FEF755 -:103E5000C9FD0020F8BD0120F8BD000018000020B9 -:103E600002480021017241728172704718000020DF -:103E700011A0FEF7A1FC134D0024295D12A0FEF74E -:103E80009BFC641C202CF8DB10A0FEF795FC134D66 -:103E9000002408212846FCF77AFA6420FCF79DF9F3 -:103EA000641C642CF5DBBFF34F8F0E490C48C860CF -:103EB000BFF34F8F00BFFDE7535049204552524F8B -:103EC000520A000084020020256420000A72656204 -:103ED0006F6F74696E672E2E2E0A00000004004872 -:103EE0000400FA0500ED00E070B50646FCF75AFA4A -:103EF0000446084D06E0FCF755FA001BB04201D914 -:103F0000042070BD29886868FCF73CFA0028F2D0CC -:103F1000002070BD3800002010B50E4C218860686C -:103F2000FCF730FA012802D1FCF73CFAE060FCF71C -:103F300039FAE168401A14280BD9C820FFF7D4FFDA -:103F40001420FCF74AF9AA2000F094F80A20FCF7A4 -:103F500044F910BD3800002010B500F05DF8FCF702 -:103F600021FA0149C86010BD3800002010B5034C8B -:103F700060602180A260638010BD000038000020D6 -:103F800070B5044666380300FEF726FC0A140608DE -:103F90000A0C0E101216181A482413E04A2411E0D5 -:103FA0004B240FE04E240DE04F240BE0502409E099 -:103FB000512407E0472405E0522403E0532401E0A4 -:103FC000532C0BD8022902D000290DD00EE0FCF7AB -:103FD000E9F9084D2969401A502801D8002070BD20 -:103FE000FCF7E0F9286101E080200443204600F05E -:103FF00041F870BD3800002010B5064C0122218820 -:104000006068FCF7C8F901226188A068FCF7C3F971 -:1040100010BD00003800002010B5064C0122218898 -:104020006068FCF7B8F900226188A068FCF7B3F972 -:1040300010BD00003800002010B5FFF76DFF0B4ADF -:104040000B48511EFEF740FE00280AD10748001F0A -:104050000179C078FFF794FF452803D00448FEF7A4 -:1040600043FE10BD0120FCF7B8F810BD5000002041 -:10407000C402002070B52E4C054621886068FCF70C -:1040800081F900282AD0002221886068FCF783F992 -:104090000520FEF7A7FC01226188A068FCF77BF9E8 -:1040A0006E20FEF79FFC6188A068FCF76BF9002882 -:1040B00014D0012221886068FCF76DF94120FEF7D9 -:1040C00091FC002221886068FCF765F91E20FEF74C -:1040D00089FC0026E80705D0012204E0FFF79CFFD9 -:1040E000452070BD00226188A068FCF754F90122C8 -:1040F00021886068FCF74FF94120FEF773FC00222D -:1041000021886068FCF747F91E20FEF76BFC6D08FC -:10411000761C082EDEDB012221886068FCF73BF963 -:1041200000226188A068FCF736F9002070BD00000D -:1041300038000020FF76161E26252E363D3E4645C9 -:104140004E55660D151D242D2C353C43444D545BB6 -:104150005A141C1B232B34333B424B4C520E125D22 -:104160001A22212A32313A41494A597C11295805EB -:1041700006040C030B830A0109777E6C757D7B6B4B -:1041800073747969727A7071FFFF6178075A144A03 -:10419000FF11FF6C757D6B7469727A7071FFFFFFA0 -:1041A000FFFFFFFFFFFFFFFFFFFF1F272F0001069D -:1041B000075553423456432050726F746F636F6CCF -:1041C00020426F6172640A49424D20504320436F80 -:1041D0006D70617469626C650A64656B754E756BB0 -:1041E000656D203230323200000000000000000017 -:1041F000010203040607080900000000010203048D -:10420000204200080000002084000000F22700087F -:10421000A44200088400002084080000022800084E -:10422000000000000201000000000000000000008B -:10423000000000000000000000000000000000007E -:10424000000000000000000000000000000000006E -:10425000000000000000000000000000000000005E -:10426000000000000000000000000000000000004E -:10427000000000000000000000000000000000003E -:10428000000000000000000000000000000000002E -:104290000000000000127A00000000000000000092 -:0442A000000000001A +:1007B0000010024002480168491C016070470000B7 +:1007C0007000002010B50648016810221143016036 +:1007D000002000F007F800F017F8002010BD00001E +:1007E0000020024010B5044600F078F97D21C900D0 +:1007F000FFF77EFC00F0E2FD00222146501E00F0D3 +:100800002FF8002010BD000008B50F4881690122B3 +:1008100011438161816911400091C26901040A4359 +:10082000C261C0690022084000901146501F00F0CC +:1008300017F800221146901E00F012F8002211460F +:10084000501E00F00DF808BD00100240C106C90E90 +:1008500001208840014908607047000000E100E085 +:1008600010B501F0C9FA10BDF8B504460068434D53 +:10087000C00352D5E8690026C00007D4E9692804FE +:100880000143E961E9690140012600913C480168A2 +:10089000C90510D40168821511430160FFF782FD7C +:1008A000074604E0FFF77EFDC01B642824D83448C7 +:1008B0000068C005F6D5286A03273F02384020D0DB +:1008C0006168394081421CD0286A2A6AB8430121F4 +:1008D00009040A432A622A6A8A432A622862C007F4 +:1008E0000FD0FFF75FFD009008E0FFF75BFD009978 +:1008F000411A2448814201D90320F8BD286A8007A3 +:10090000F3D5286A6168B84308432862002E04D0F2 +:10091000E869012109078843E8612078C00705D00C +:10092000286BA1688008800008432863207880072E +:1009300006D5286B032109048843E168084328632E +:100940002078800605D5286B10218843216908434B +:1009500028632068800305D5286B80218843A1691E +:10096000084328632088400505D5286B402188432B +:100970006169084328630020F8BD000000100240B0 +:100980000070004088130000F8B505464E480E463A +:100990000068C007C00FB0420AD24B48016849083E +:1009A0004900314301600068C007C00FB04270D1F8 +:1009B0002878464C800705D56068F0218843A968EF +:1009C000084360602878C00753D06868012817D0B2 +:1009D000022818D0032819D021688907002958DA7D +:1009E00061688908890001436160FFF7DBFC696881 +:1009F0000746012913D002291DD0032927D034E04E +:100A000021688903EAE721688901E7E7616BC90387 +:100A1000E4E7FFF7C7FCC11B2D48814223D860687B +:100A20000007800F0128F4D123E0FFF7BBFCC11BB6 +:100A30002748814217D860680007800F0228F4D148 +:100A400017E0FFF7AFFCC11B214881420BD860685B +:100A50000007800F0328F4D10BE0FFF7A3FCC11BB4 +:100A60001B48814201D90320F8BD60680007800F50 +:100A7000F3D115480168C907C90FB1420BD9016804 +:100A800049084900314301600068C007C00FB04207 +:100A900001D00120F8BD2878400706D560680721FD +:100AA00009028843E9680843606000F02DF8616836 +:100AB000084A0906090F515CC84007490860002030 +:100AC000FFF790FE0020F8BD002002400010024019 +:100AD00088130000404100087400002001480068AD +:100AE0007047000074000020044805490068496808 +:100AF000044A4905490F515CC84070477400002002 +:100B0000001002405041000830B516A30FCB89B049 +:100B10006C460FC417A30FCB0FC41A494A680C20A8 +:100B2000144604401848042C05D0184B082C04D057 +:100B30000C2C00D1184609B030BD9402240F6D462C +:100B40002C5DC96A04AD0907090FD203695C920FD5 +:100B5000022A02D0032A00D11846FFF7C9FA6043DF +:100B6000E9E7000002030405060708090A0B0C0D5B +:100B70000E0F10100102030405060708090A0B0CEA +:100B80000D0E0F100010024000127A00006CDC0203 +:100B9000FEB504460078F04EF04DC00748D06868B6 +:100BA0000007800F01281FD068680007800F022807 +:100BB00004D16868C003800F022815D0616801293C +:100BC00019D001208004002901D0052917D02968F7 +:100BD000B1432960296881432960606800281BD0DF +:100BE000FFF7E0FB074613E02868800320D5606824 +:100BF000002876D01CE0286830432860EDE729689B +:100C000001432960F7E7FFF7CDFBC01B642869D8D3 +:100C100028688003F7D50BE0FFF7C4FB074604E024 +:100C2000FFF7C0FBC01B6428F1D828688003F7D405 +:100C3000207880073ED568680007800F14D0686868 +:100C40000007800F022804D16868C003800F0128C4 +:100C50000AD0E068002828681DD0012108432860D8 +:100C6000FFF7A0FB07460BE0286880070BD5E0687C +:100C7000012836D107E0FFF795FBC01B0228C6D834 +:100C800028688007F7D52868F82188432169C900BA +:100C9000084328600EE0400840002860FFF782FB10 +:100CA000074604E0FFF77EFBC01B0228AFD8286888 +:100CB0008007F7D42078000724D5E0690028686A07 +:100CC00011D0012108436862FFF76CFB074604E07E +:100CD000FFF768FBC01B022899D8686A8007F7D520 +:100CE00010E036E1D1E0400840006862FFF75AFBAF +:100CF000074604E0FFF756FBC01B022887D8686A46 +:100D00008007F7D4207804274007002861DA002004 +:100D10000190E869C00008D4E969B8060143E961B7 +:100D2000E96901400120009101908D480168C905E1 +:100D300011D40168821511430160FFF733FB009065 +:100D400005E0FFF72FFB0099401A642897D88448E4 +:100D50000068C005F5D5A06801280AD0002801D098 +:100D6000052811D0286A400840002862286AB84344 +:100D700002E0286A012108432862A068002812D0F6 +:100D8000FFF710FB00900AE0286A38432862F0E77A +:100D9000FFF708FB0099411A7248814275D8286A0A +:100DA0008007F5D50DE0FFF7FDFA009006E0FFF7AC +:100DB000F9FA0099411A6B48814266D8286A80077F +:100DC000F5D40198002804D0E96901200007814387 +:100DD000E9612078C00635D5606901280CD0401D36 +:100DE000686B24D038436863686B400840006863D0 +:100DF000FFF7D8FA074622E0686B38436863686BF0 +:100E0000012108436863FFF7CDFA074604E0FFF7C6 +:100E1000C9FAC01B022838D8686B8007F7D5686B01 +:100E2000F8218843A169C900084368630AE0B84310 +:100E30006863F4E7FFF7B6FAC01B022825D8686B91 +:100E40008007F7D42078800637D568680007800FC0 +:100E5000032813D068680007800F022804D168684F +:100E6000C003800F032809D0206A0028686B16D0C1 +:100E700030436863FFF796FA06460CE0686BC003E0 +:100E80001BD5206A012864D117E05BE0FFF78AFADE +:100E9000801B022856D8686BC003F7D50DE0B0431D +:100EA0006863FFF77FFA064604E0FFF77BFA801BD2 +:100EB000022847D8686BC003F7D4606A002846D080 +:100EC00069680907890F022943D0012636060228DE +:100ED000286805D0B0432860FFF764FA044633E081 +:100EE000B0432860FFF75EFA074604E0FFF75AFABE +:100EF000C01B022826D828688001F7D4E86A216B35 +:100F0000000900010843E862A16AE06A08436968D1 +:100F10007B22D203914308436860286830432860ED +:100F2000FFF740FA044604E0FFF73CFA001B0228F2 +:100F300008D828688001F7D509E0FFF733FA001BCD +:100F4000022801D90320FEBD28688001F5D40020C5 +:100F5000FEBD0120FEBD00000000010000100240A7 +:100F6000007000408813000070470000F8B5044688 +:100F70000068426881684B0605D4CB0703D053064E +:100F800001D5E16C04E08B0705D5130603D5216D6F +:100F900020468847F8BDFF2361331942FAD09306F3 +:100FA000F8D523464D064033002D09DA5D7F032D29 +:100FB0003CD0256E042635432566C56885680095B6 +:100FC0008E060125002E08DA266E2E4326668668D8 +:100FD000009606684027BE430660C80506D5206E09 +:100FE000082108432066206880680090206E002851 +:100FF000D0D020684168E026B14341605D7790071A +:1010000018D020684168890889004160A06D0B4DA7 +:10101000002803D04563A06DFFF7BBF8606D002882 +:10102000B8D04563606DFFF7B4F8F8BDC16880685B +:101030000090F8BD2046FFF797FFF8BDB31F0008EA +:10104000F8B5040007D0002625464035A662687F23 +:10105000002802D005E00120F8BD2E77204600F0E0 +:101060004BF802236B7720680168402291430160AE +:101070000721E0680902884201D9002201E001222B +:1010800012030F273F02B84202D0884200D0A66266 +:10109000276B002F05D1884201D9236301E001208D +:1010A0002063A168606863690843216919430843A4 +:1010B0000123A1695B0219400843E1690843216AE1 +:1010C0000843A16A084321680860616B606AA369EC +:1010D00008431B0C0427E1683B401943084321687F +:1010E000104348602068C1697A029143C161266655 +:1010F000012068770020F8BD00B50068114987B06D +:1011000088421DD11048826981140A438261806936 +:1011100008400590F020009002200190002103205B +:1011200003900291049109206946C006FFF77EF8FA +:10113000002211461920FFF793FB1920FFF786FBC9 +:1011400007B000BD003001400010024070470000B1 +:10115000F0B504468C464034217F0025C76896468A +:1011600001290CD001212177667F4168012E0CD026 +:10117000CA1FFD3A07D18168002904D101E002208D +:10118000F0BD042E01D0022540E0614600291BD0AD +:101190007146002918D0002B16D0617F042901D098 +:1011A0000521617700210166614681638387C387DA +:1011B00071460164A380E380072109028F4205D9AB +:1011C000144AC264144A04E001251FE0134AC264B1 +:1011D000134A0265012212038F4202D8E1880229D4 +:1011E00003D301684B68934302E001684B681343E3 +:1011F0004B6001684A68E0231A434A60006801684E +:10120000490603D401684022114301600020207781 +:101210002846F0BD511E0008E51E0008871E000884 +:10122000191F0008F8B501220920D103C006FFF7F5 +:10123000B2F857492022881AFEF770FF544C012655 +:10124000203C2078534FDE2801D07E7290E0A078B9 +:1012500008280BD0092810D000250B2830D00328EF +:101260004AD001284FD0022879D081E04848A2799D +:101270002179203001F0B8FC7AE06179207901F021 +:1012800073FB434A2C321080E179A07901F06CFBAA +:1012900040425080207A3E4940421071607A50713D +:1012A000607B9071A07B1072E07BD071207C5072CB +:1012B000607C907237482C31143001F03FFF57E0CA +:1012C000334821793830017061794170A17981709A +:1012D000E179C170057145718571C571217A01721D +:1012E000617A4172A17A8172E17AC172014629481C +:1012F0001C3001F05BFB3BE0012100224903264842 +:10130000FFF749F834E0224820214038FEF71FFF5C +:101310001F48CD214038017061784170802383706F +:10132000C67039780171457102218171C571082239 +:10133000002105468D356C5C002C0CD0022C02D0AF +:10134000012C03D005E0815403E008E00C461C4367 +:101350008454521CD2B2491C1029ECDB08E003254E +:10136000605D002804D001F0E7FB6D1C202DF7DB49 +:10137000074A2023114640390848FFF7E9FE0121BA +:1013800009200022C903C006FFF705F8F8BD0000D8 +:10139000940200204C00002000080048D0000020EB +:1013A000042204490428086902D090430861704768 +:1013B0001043FBE700E000E070470000094910B56A +:1013C000401E884201D9012010BD074C60610321F5 +:1013D000081F00F011FD0020A061072020610020FF +:1013E00010BD0000FFFFFF0000E000E010B5FFF7B8 +:1013F000E3FF10BD70B502462032137F012B1BD0D6 +:101400000123137702245477046865687026B54376 +:101410006560046865680E68354365600468A568A2 +:101420008026B543A5600068846849680C438460E1 +:1014300053770020107770BD022070BD70B5040096 +:1014400005D025462035687F002802D006E001201F +:1014500070BD00202877204600F00AF80220687747 +:10146000211D206800F0D0FE01206877002070BDAB +:1014700008B5006801218907884207D10448C1697D +:1014800001221143C161C0691040009008BD0000F5 +:10149000001002400222014620314A770268136898 +:1014A000012003431360487700207047F8B50546D4 +:1014B00004462035287F012817D001272F770220E6 +:1014C0006877226890687726FF23B0431B02984311 +:1014D00090600868502837D00EDC202857D006DCF2 +:1014E00000284ED0102840D14EE00220F8BD302810 +:1014F00050D0402839D13CE060282DD0702817D03A +:1015000001221203801A0ED090422ED1CB684A6875 +:101510008968206800F0C2FE206881680122920379 +:101520001143816021E020688168C908C900F8E79B +:10153000CB684A688968206800F0B0FE2168886836 +:10154000B0433043886010E0CA684968206800F002 +:10155000B8FE5021206806E0CA684968206800F09B +:10156000C1FE6021206800F0A4FE6F77002028777C +:10157000F8BDCA684968206800F0A3FE40212068D1 +:10158000F1E700212068EEE710212068EBE7202139 +:101590002068E8E730212068E5E7704770470000E1 +:1015A000F8B503680446D869196805072D0F07D1F7 +:1015B000820605D58A0603D5204600F06BFFF8BDEC +:1015C0009A68002D64D0D507ED0FFF2621360E4016 +:1015D0002E435DD0C60706D0CE0504D501261E6277 +:1015E000E36E3343E366870702230426002F06DAFF +:1015F000D70704D027683B62E76E3743E7664707A3 +:1016000006D5D20704D022681662E26E1A43E2665B +:10161000020709D520220A402A4305D02368082260 +:101620001A62E36E1343E366E26E002AC7D08006B7 +:1016300004D5880602D5204600F02CFFE06E000796 +:1016400003D42068806840061CD5204600F006FFC1 +:1016500020688168490611D58168402291438160E4 +:10166000606E00280AD01A494163606EFEF791FD52 +:101670000028A4D0606E416B8847F8BD2046FFF774 +:101680008DFFF8BD2046FFF789FF0020E066F8BD1A +:10169000C5020DD552020BD501200005186220218C +:1016A00020466030417281722046FFF776FFF8BD18 +:1016B000020605D50A0603D5204600F0D7FFF8BD7F +:1016C0004006FCD54806FAD5204600F0D6FEF8BD07 +:1016D0004924000870B5040005D025466035687AB5 +:1016E000002802D006E0012070BD002028722046AC +:1016F00000F026F824206872206801684908490033 +:101700000160204600F004FF0128EDD0606A002847 +:1017100002D0204600F0F9FD206841680922D2027B +:1017200091434160206881682A229143816020684A +:101730000168012211430160204600F04BFE70BD9C +:1017400030B51F4D046800211E480222032387B0D4 +:10175000AC4214D1856954032543856180690291A7 +:101760002040059058020090012004900920039326 +:1017700001926946C006FEF759FD07B030BD124D13 +:10178000AC42FAD1C5690124A4042543C561C069EE +:1017900002912040059003208002009004200490D4 +:1017A0000393019269460948FEF740FD002201219A +:1017B0001D20FFF755F81D20FFF748F8DDE7000072 +:1017C000003801400010024000480040000400487A +:1017D0007047FFB5064604466036707A83B00D4602 +:1017E000202858D1002D0CD00598002809D00120C0 +:1017F000A1680003814207D12069002804D1E807CD +:1018000002D0012007B0F0BD307A012843D001207A +:1018100030720020E06621207072FEF7C3FD019057 +:1018200027464037059838820598788218E0788AEC +:10183000401E788206980090002280212046019B5D +:1018400000F047FF002818D10120A1680003814261 +:1018500002D12069002812D02168287808856D1CE3 +:10186000788A0028E3D10698009000224021204683 +:10187000019B00F02EFF002808D00320C2E7288833 +:101880002168C005C00D0885AD1CE9E720207072F5 +:1018900000203072B6E70220B4E730B5034660336B +:1018A0005C7A202C23D100290BD0002A09D00125F5 +:1018B00084682D03AC4206D10469002C03D1CC0707 +:1018C00001D0012030BD1C7A012C10D0C16401462A +:1018D00040310A824A820021C16621225A7219725D +:1018E00000680168802211430160002030BD0220A1 +:1018F00030BD000001490020887270474C00002074 +:10190000FEE701688A69D243920701D400228A6205 +:1019100000688169C943C90703D081690122114365 +:1019200081617047F7B5044600680E468069C04380 +:10193000C0062CD420272546403520688069C04346 +:1019400080060FD5701CF8D0002E05D0FEF72AFDBA +:101950000299401AB042F0D96F700020A870287028 +:101960000320FEBD21681020C8612068C7612046A1 +:10197000FFF7C7FF20684168064A11404160042014 +:1019800060646F700020A87028700120FEBD0020E8 +:10199000FEBD000000E800FEF8B504460120164632 +:1019A00040031D46DAB2C3020090079F204600F0B4 +:1019B00029F83A462046069900F081F8002803D01D +:1019C000606C04281BD018E02846F5B2012809D025 +:1019D0002168300A88623A462046069900F06FF87E +:1019E0000028EDD1206885620097002280212046E2 +:1019F000069B00F019F8002800D00320F8BD012054 +:101A0000F8BD000070B50568049C68688905890DFB +:101A10001204044E114319433040214301436960CD +:101A200070BD0000009800FCF8B51C4617460E4635 +:101A3000054611E0601C0FD0002C05D0FEF7B2FC6B +:101A40000699401AA04207D920204035687000202E +:101A5000A87028700320F8BD286881693046884343 +:101A600004D00020B842E5D00020F8BD0120F9E7FD +:101A700070B516460D4604461AE032462946204601 +:101A8000FFF750FF002801D0012070BD002D04D0C9 +:101A9000FEF788FC801BA8420AD9616C2020014314 +:101AA0006164403460700020A0702070032070BD1D +:101AB00020688069C0438006DFD4002070BD70B507 +:101AC00016460D4604461CE0324629462046FFF7DE +:101AD00029FF002801D0012070BD681C11D0002D05 +:101AE00004D0FEF75FFC801BA8420AD9616C20205D +:101AF00001436164403460700020A07020700320B6 +:101B000070BD20688069C0438007DDD4002070BDAF +:101B1000F0B5504887B041690120C0044D4A0143E7 +:101B200051615169014005915169C0000143516102 +:101B30005169014005915169401101435161516959 +:101B40000140104605914169012080040143516123 +:101B5000516944110140404F059100222146384609 +:101B6000FEF719FC0326B603012231463846FEF77C +:101B700012FC012203213948FEF70DFCCD21012280 +:101B800089003748FEF707FC09200022A100C006A3 +:101B9000FEF701FC002208213148FEF7FCFB00940F +:101BA0000024012501950294694638460394FEF706 +:101BB0003DFB00961126029469463846019603942F +:101BC000FEF734FB032000900294694601960394CB +:101BD0002248FEF72BFB2348022701906946009715 +:101BE00002941F48FEF722FBCD2080000090029453 +:101BF0006946019603941A48FEF718FBE8036A4603 +:101C000091C269461648FEF711FB28026A4691C246 +:101C100009206946C006FEF709FBE8030090092089 +:101C20000294694601950394C006FEF7FFFA082066 +:101C3000009002946946019503940948FEF7F6FA6C +:101C4000002202210520FEF70BFE0520FEF7FEFD17 +:101C500007B0F0BD00100240000800480014004822 +:101C6000000400480000211010B51248104901601E +:101C7000114941600021816001614161816101225E +:101C8000C161C2600162FEF7DDFB002800D0FEE703 +:101C900000210848FEF78CFB002800D0FEE7002159 +:101CA0000448FEF7AAFB002800D0FEE710BD0000A4 +:101CB00000580040840000205D3E302010B50D48E3 +:101CC0000B490160002141608160016141618161D6 +:101CD0000722016212024162C2608162072201632F +:101CE000C2624163FFF7ACF9002800D0FEE710BDE7 +:101CF00000300140D000002010B50121124886B00C +:101D00008907016000242F21846041600461611E05 +:101D10008461C160FFF792FB002800D0FEE701203C +:101D20000003009069460848FFF7C0FB002800D078 +:101D3000FEE7049404A904480594FFF75BFB002820 +:101D400000D0FEE706B010BD3401002010B50F48EA +:101D50000D490160E121490241600D49898940290D +:101D600001D00C49416000218160C1600161816145 +:101D7000C1610C220162426141620448FFF7AAFC82 +:101D8000002800D0FEE710BD00380140740100209B +:101D90004C0000203EFA020010B5144812490160C0 +:101DA0004B210901416012498989402902D07F21D4 +:101DB00009014160002101221207C16082600161B6 +:101DC00081610C22C16142610162302141620121C5 +:101DD000090381634900C1630448FFF77BFC0028C5 +:101DE00000D0FEE710BD000000480040E4010020E4 +:101DF0004C000020704700008307FF22DB0E9A4052 +:101E00008907090E994000280BDA0007000F0838EF +:101E1000830808489B001818C36993430B43C361A8 +:101E20007047830804489B001B18186890430843B8 +:101E30001860704700ED00E000E400E0704700002B +:101E400010B50248FFF792F810BD0000D000002046 +:101E500010B50168C968026C1180016C891C0164AD +:101E600001464031CA88521ECA80C988002909D15A +:101E700001684A6840239A434A60C18F002901D112 +:101E800000F06EF810BD10B501464031CC880368F3 +:101E9000026C012C11D9DB681380026C921C026465 +:101EA000CA88921ECA80CA88012A0DD10268536866 +:101EB000012424032343536006E01C7B531C03646A +:101EC0001470CA88521ECA80C988002909D10168C5 +:101ED0004A6860239A434A60C18F002901D100F00B +:101EE0003FF810BD10B5816B02680988D160816B25 +:101EF000891C8163C18F491EC187C18F00290AD106 +:101F000001684A6880239A434A604621095A002999 +:101F100001D100F025F810BD10B5C38F0268816BA8 +:101F2000022B07D30988D160816B891C8163C18F23 +:101F3000891E05E04B1C836309781173C18F491E0C +:101F4000C187C18F00290AD101684A6880239A435A +:101F50004A604621095A002901D100F001F810BD5C +:101F600070B50446FEF71EFA024620684168202537 +:101F7000A94341606421204600F024F8002802D0E3 +:101F8000206E28432066226E204601214030002A20 +:101F900004D041772046FEF7E7FF70BD427F4177CE +:101FA000042A204602D0FFF73DF970BDFFF7CEF8B6 +:101FB00070BD10B5406A002146221152C187FEF75C +:101FC000D3FF10BDF8B50F460B461546009203210E +:101FD00004460022C90200F01BF82026002812D176 +:101FE0003B46002280212046009500F05CF8002846 +:101FF00009D103213B46002249022046009500F00A +:1020000007F8002803D0206E304320660320F8BD77 +:10201000F8B51D4617460E4604463DE00321490229 +:102020008E4205D1002F03D1017B684601700078F4 +:10203000681C31D0002D05D0FEF7B4F90699401A7E +:10204000A84229D320684168E0229143416060683A +:10205000C11FFD390CD10121A068C903884202D0FB +:102060004911884204D120680168402291430160EF +:102070000120A16A4003814207D121680A68824396 +:102080000A6021680A6802430A60012040346077D0 +:10209000002020770320F8BD206881683140B942D4 +:1020A000BCD10020F8BDF8B51D4617460E460446C3 +:1020B00033E0681C31D0002D05D0FEF773F9069986 +:1020C000401AA84229D320684168E0229143416028 +:1020D0006068C11FFD390CD10121A068C903884285 +:1020E00002D04911884204D12068016840229143FE +:1020F00001600120A16A4003814207D121680A687A +:1021000082430A6021680A6802430A600120403461 +:102110006077002020770320F8BD20688168304672 +:10212000884304D00020B842C3D10020F8BD01206C +:10213000F9E7704710B5FEF73DFBFFF757F910BD03 +:1021400030B599B028200125002400900895079506 +:1021500009946846FEF71CFD002800D0FEE7072022 +:102160000D9003200E900F94012110940DA8FEF7FE +:102170000BFC002800D0FEE7119511A81395FEF77F +:1021800073FB002800D0FEE7FEF7A8FC7D21C90004 +:10219000FDF7AEFFFFF712F90420FFF701F9002267 +:1021A0001146501EFEF75CFB19B030BD12480168A5 +:1021B0000122114301604168104A114041600168E9 +:1021C0000F4A1140016001680122920491430160AD +:1021D00041683F22120491434160C16A0909090123 +:1021E000C162016B074A11400163416B4908490014 +:1021F0004163002181607047001002400CB8FF0865 +:10220000FFFFF6FE2CFEFCFFF0B502681D4B01241B +:10221000A4071D4D984203D0A04201D0A84203D18B +:102220007026B2434E683243184E194F98420DD073 +:10223000A0420BD0A84209D0164CA04206D0B04212 +:1022400004D0B84202D0144CA04204D1032424028A +:10225000A243CC6822438024A2434C6922430260FB +:102260008A68C2620A688262984206D0B04204D08C +:10227000B84202D0084A904201D1096901630121A4 +:102280004161F0BD002C01400004004000400140CD +:1022900000440140002000400048014030B58468FF +:1022A000FF252D021B021343AC430B4323438360E2 +:1022B00030BD826870239A430A4307210A43826033 +:1022C000704730B5036A046A640864000462846974 +:1022D000F025AC43120122430A24A3430B4382613D +:1022E000036230BD30B5036A1024A34303628469DE +:1022F000036A0F252D031203AC432243A024A343FA +:10230000090119438261016230BD10B5818CC90792 +:1023100007D001684A6801235B049A43836A1A4321 +:102320004A60818C890707D501684A6801231B042C +:102330009A43C36A1A434A60818C490707D50168EA +:102340004A6801239B049A43036B1A434A60818CB9 +:10235000090707D501684A680123DB039A43436BE9 +:102360001A434A60818CC90607D502689168012327 +:102370001B039943836B19439160818C890607D5B0 +:1023800001688A6801235B039A43C36B1A438A601E +:10239000818C490612D503685A6801210905046C2D +:1023A0008A4322435A60026C8A4207D1026851680C +:1023B00003235B059943436C19435160818C0906E3 +:1023C00007D501684A680123DB04806C9A43024305 +:1023D0004A6010BDF8B500260446C666FDF7E2FF68 +:1023E000054616492068884202D0154988421DD109 +:1023F0000068144F000709D501212B46002249052A +:102400002046009700F065F900280DD1206800688B +:1024100040070BD501212B46002289052046009755 +:1024200000F057F9002801D00320F8BD20206034C7 +:102430006072A07226720020F8BD000000380140D2 +:1024400000440040FFFFFF0110B5406A0022014632 +:1024500040314A834A82FFF7A1F810BD01680A683B +:10246000FF2321339A430A6001688A6852085200A8 +:102470008A60202160308172704710B501680A6857 +:1024800040239A430A60202269210A54FFF732FA56 +:10249000002010BD70B50246403203466033948B75 +:1024A0009D7A0168222D05D0886908221043886131 +:1024B000022070BD898C012685683603B54202D1A1 +:1024C0000569002D0BD02140446D651C45652170C8 +:1024D000518B491E0904090C518307D015E0456D45 +:1024E00021402980416D891C4165F1E701680A6836 +:1024F000FF242134A2430A6001688A68520852000E +:102500008A6020219972FFF763F9002070BD0000F6 +:10251000F8B504462369A268E5691A436369102087 +:102520002B43002125681A432B680E46474F3B403A +:1025300013432B6023685A6803252D03AA43E568DB +:102540002A435A60236AA26925681A43AB680B279D +:102550003F02BB431343AB603D4F25683D4B020335 +:10256000BD420AD11B6B9B079B0F20D0012B14D0BF +:10257000022B14D0032B1BD10DE0374FBD4210D1DD +:102580001B6B03273F043B4011D09B1A05D09B1ABD +:1025900005D093420CD102200AE0042008E0082074 +:1025A00006E02E4B9D4202D02D4B9D4200D10020D3 +:1025B0000123E769DB039F4222D100280CD00228C7 +:1025C0000DD0042813D0082817D001260A091201BB +:1025D0000807400F10432EE0FEF786FA09E0616815 +:1025E000204A48088018FDF783FD81B2EEE7FEF728 +:1025F0008BFA616840004A08F4E761684808F1E72F +:10260000002808D0022809D004280CD0082815D0AA +:1026100001263046F8BDFEF767FA06E06168124A07 +:10262000480880180DE0FEF76FFA61684A088018C4 +:10263000FDF75EFD80B22168C860EAE7616848087E +:10264000C018FDF755FD80B2E860E2E7F369FFEFDF +:1026500000380140001002400044004000480040A3 +:10266000004C00400024F40000127A006921095C4B +:10267000212901D00220704702464032518A0029A8 +:1026800012D0012381681B03994202D101690029FC +:1026900015D0C16C4B1CC364006809780185508A51 +:1026A000401E50820020704701680A6880239A43C8 +:1026B0000A6000680168402211430160F2E7C16CC2 +:1026C00003680988C905C90D1985C16C891CC164D5 +:1026D000E5E7FFB581B017460E4604460A9D1DE0AA +:1026E000681C1BD0002D05D0FDF75CFE0499401A34 +:1026F000A84213D920680168FF22A13291430160EA +:102700002068816849084900816020206034607237 +:10271000A07200202072032005B0F0BD2068C169BE +:102720003046884304D00020B842D9D00020F3E7D7 +:102730000120F9E710B50248FEF732FF10BD000096 +:10274000E40100200FB410B503A9044B044A029819 +:1027500000F024F810BC08BC04B018479529000804 +:102760007800002030B47446641E2578641CAB42A7 +:1027700000D21D46635D5B00E31830BC184702E0E1 +:1027800008C8121F08C1002AFAD1704770470020FC +:1027900001E001C1121F002AFBD17047FFB58DB0C7 +:1027A0000F460546002606E025280AD0109A0F9904 +:1027B00090476D1C761C28780028F5D1304611B062 +:1027C000F0BD00240121674A009400E004436D1C21 +:1027D0002B780846203B98401042F7D128782E28C5 +:1027E00015D10420044368786D1C2A280AD101CF32 +:1027F0006D1C00900BE000990A22514330394018BB +:102800006D1C00902878014630390929F3D92878C1 +:10281000692843D006DC0028D0D063280BD0642878 +:1028200004D13BE073280FD075284CD0109A0F9933 +:102830009047761C94E03878694608720020487208 +:1028400002A80190012003E0386801900020C043F5 +:102850003F1D61070CD5002400E0641C00998C42E8 +:102860000FDA8442F9DB0199095D0029F5D108E00E +:10287000002400E0641C8442FCDB0199095D00290E +:10288000F8D1361907E0019801990078491C0191A7 +:10289000109A0F999047641EF5D261E00A200190CA +:1028A00001CF002802DA40422D2102E0210504D5A3 +:1028B0002B216A461172012103E0E10701D020219A +:1028C000F7E70C9104E00A20019001CF00210C9160 +:1028D0000BA90B9108E00199FDF70AFC0A460B9938 +:1028E0003032491E0B910A700028F4D10B9803A9CD +:1028F000081A20300190600701D5009801E00120FE +:1029000000900199884203DD01460198081A00E011 +:1029100000200024009006E002A8109A005D0F99A4 +:102920009047641C761C0C988442F5DB04E0109AF6 +:1029300030200F999047761C0099481E009000297E +:10294000F5DC08E00B980B990078491C0B91109A64 +:102950000F999047761C0199481E01900029F1DCDF +:102960006D1C28E7092801000902014308B27047DD +:1029700000B5014600F078FB411800F075FB884275 +:10298000FBD300BD10B502490860FEF783FD10BD02 +:102990000000002013B56423012269460248FEF7B7 +:1029A00018FF00981CBD00007401002070B50D4692 +:1029B000044600F020F8002801D0012070BD2078E6 +:1029C0000C226168504308182946FDF7A7FB2078C0 +:1029D000A178401CFDF78CFB2170002070BD10B564 +:1029E000044681700C20484300F0C6FA606020461F +:1029F00000F026F810BD10B5044681780078401C20 +:102A0000FDF776FB6078814201D1012010BD0020E6 +:102A100010BD41780278914201D100207047406892 +:102A20000C2251434018704710B504464078217875 +:102A3000884204D0A178401CFDF75AFB617010BD9C +:102A400010B500210170417081780C22514340681B +:102A5000FDF77DFB10BD000070B52548FFF7D9FFDD +:102A600004003BD02078002839D00022214E0221DA +:102A70003046FDF790FC6078002832D000221E4DD1 +:102A80000121C9032846FDF786FCA07800282AD03A +:102A9000002201213046FDF77EFCE078002824D09A +:102AA0000022012189032846FDF775FC207AFF25C5 +:102AB000291A032000F0BCFA607A291A002000F0DD +:102AC000B7FAA07A291A022000F0B2FAE07A291A9D +:102AD000012000F0ADFA0648FFF7A6FF70BD012205 +:102AE000C4E70122CBE70122D3E70122D9E70000A6 +:102AF00068000020001400480008004870B50C4C25 +:102B0000012202212046FDF746FC0A4D0122D10395 +:102B10002846FDF740FC012211462046FDF73BFC0C +:102B2000012291032846FDF736FC00F06BFA70BDD8 +:102B3000001400480008004870B54406C109640E3E +:102B4000C901102C24D2214D285D002820D0002955 +:102B50001FD002281CD11E482300FFF703FE0817D0 +:102B6000050C170F17171517FF23013302465900DD +:102B700000F06CFB0AE001F09BF907E0102302462D +:102B8000202100F047FF01E0FFF7B8FF01202855A2 +:102B900070BD0128FCD1022028552300FFF7E2FD7B +:102BA0000805060B050E05051305F1E700F0CEFC40 +:102BB00000F0DCFC70BD01F0CBF970BD00F0C4FF8B +:102BC00000F0B2FF70BDFFF799FF70BDE102002079 +:102BD00000040048102803D20249085C012800D0F4 +:102BE00000207047E102002070B515460E460446ED +:102BF00000F022F8002801D0012070BD2178606823 +:102C000046542178A06845542078A178401CFDF7EF +:102C10006FFA2170002070BD70B50D4604468170BA +:102C2000284600F0A9F96060284600F0A5F9A060E8 +:102C3000204600F02BF870BD10B50446817800786E +:102C4000401CFDF755FA6078814201D1012010BD8A +:102C5000002010BD10B543780478A34201D10120B3 +:102C600010BD4468E35C0B7081684078085C1070AC +:102C7000002010BD10B5044640782178884204D069 +:102C8000A178401CFDF734FA617010BD10B5044600 +:102C9000002020706070A1786068FDF758FAA17874 +:102CA000A068FDF754FA10BD38B50D46FF216A46FD +:102CB000ED3811703B4C0300FFF754FD13645E2B9D +:102CC000422B342C241D6F161616162B2B2B6F0B34 +:102CD0002B0014220121FA2000F0AAFC00F046FC8F +:102CE000FA220021AA204AE02078032855D0142295 +:102CF0000121FE2043E014220121FA2000F098FC7B +:102D0000002005E014220121FA2000F091FC0120AE +:102D1000607038BD14220121FA2000F089FC1E21C8 +:102D2000684636E014220121FA2000F081FC1422CA +:102D30000021AB2000F07CFC1422002183201EE047 +:102D400014220121FA2000F073FC1E21684600F0D5 +:102D50007FFB0028DDD114220121FA2000F068FC5D +:102D600068460078002803D00328D2D8207038BDE8 +:102D700014220021207802E014220121EE2000F02C +:102D800057FC38BD14220121FA2000F051FC1E210D +:102D9000284600F05DFB0028F3D114220121FA201F +:102DA000EDE70000040000201CB55C485C4C808905 +:102DB000A081FDF707FDFFF7C3F9FEF7A9FEFEF7B7 +:102DC00053FFFEF77BFFFEF797FFFEF7BFFFFEF70F +:102DD000E3FF00210220019100900B462278514927 +:102DE00051A0FFF7AFFC5548FFF7CCFD00F0FCF910 +:102DF000FF250135524E6F0032462B4639461046AC +:102E000000F024FA32462B463946104601F05AF8B3 +:102E1000324610232021104600F0FCFD0220FFF76F +:102E2000D9FE002801D001F043F810214548FFF7F2 +:102E3000F3FE3B481021143000F099F93848102176 +:102E40001C30FFF7CCFD00F0DDF83E482021603853 +:102E5000FDF77DF93B4A3948203A11462023403995 +:102E60006438FEF775F9A18937A0FFF76BFC00F015 +:102E7000B9F8002812D138A0FFF764FC0027082118 +:102E80003046FDF784FA3220FDF7A7F97F1C0A2FA0 +:102E9000F5DB012208213046FDF77DFA0927FF0600 +:102EA0000420FFF797FE002809D00121C90330460E +:102EB000FDF768FA002802D000F076FE06E0052053 +:102EC000FFF788FE002801D000F0D6F80120FFF7B8 +:102ED00081FE002808D029463846FDF753FA00281D +:102EE00002D000F04BFB0CE00220FFF773FE00283D +:102EF00007D029463846FDF745FA002801D001F0F1 +:102F000047F80720FFF766FE002801D0FFF7A4FD71 +:102F1000607A0028C4D000F057FF0000C0F7FF1F00 +:102F20004C0000200941000825730A72657625646B +:102F3000207625642E25642E25640A0034010020A5 +:102F400000040048B4020020666C6173685F736916 +:102F50007A653A2025640A004469676974616C20C7 +:102F6000706F74206E6F7420726573706F6E646919 +:102F70006E67210A00000000F0B50B30C108C900DF +:102F8000144F0026144A0FE003688B420BD38B4288 +:102F900005D95C1A4318456830C3083B00E0436814 +:102FA000136002C004E0021D10680028ECD1304616 +:102FB000002803D13868002801D00020F0BD064A5F +:102FC00006481060064A121AD208D20044C00120F6 +:102FD0003860D7E7800000207C000020FC02002041 +:102FE000F804002010B56423012258210448FDF79D +:102FF00083FA002801D0002010BD012010BD000080 +:103000008400002010B5094C002204212046FDF761 +:10301000C2F90120FDF7E1F8012204212046FDF765 +:10302000BAF90120FDF7D9F810BD000000040048EE +:1030300003B583B0042802D3FF2005B000BD0849C2 +:103040006423085C01210007020E04A80293019189 +:1030500000900B4658210348FDF7DCFAEDE700002D +:103060000541000884000020024800680068406AAA +:10307000704700000000002070B52E4C207A00251B +:10308000002807D04D20E0710122E11D2A48FEF7FB +:1030900004FC25722748143000F083F8002806D07D +:1030A000A17A002904D02348143000F085F870BDBF +:1030B0002049C0220E310D808D700A708279002A5D +:1030C00001D0E0220A70027A002A03D00A78102385 +:1030D0001A430A700022825E4088404200B2030612 +:1030E00003D50B7808252B430B70430603D50B78CB +:1030F00004252B430B70130603D50B7802252B43B5 +:103100000B7053060125002B02DA0B782B430B7052 +:103110009206920E80064A70800E88700548143020 +:1031200000F04AF8034903220E310348FEF7B5FBCD +:10313000A57270BD4C000020E401002070B50D4662 +:10314000044600F020F8002801D0012070BD20784E +:103150000C226168504308182946FCF7DFFF2078ED +:10316000A178401CFCF7C4FF2170002070BD10B591 +:10317000044681700C204843FFF7FEFE6060204645 +:1031800000F026F810BD10B5044681780078401C88 +:10319000FCF7AEFF6078814201D1012010BD002014 +:1031A00010BD41780278914201D1002070474068FB +:1031B0000C2251434018704710B5044640782178DE +:1031C000884204D0A178401CFCF792FF617010BDCA +:1031D00010B500210170417081780C225143406884 +:1031E000FCF7B5FF10BD000010B510210548FCF735 +:1031F000AEFF0121034802224170827001714271C9 +:10320000C17110BDE102002070B50F4D6988A8683A +:10321000FDF7B8F80446A988E868FDF7B3F8012877 +:1032200002D0002809D00AE0012C02D0002C02D0E4 +:1032300005E0032070BD022070BD012C01D00020EC +:1032400070BD012070BD00000400002010B5054CC9 +:10325000A0606180E260A38000F078F900F086F958 +:1032600010BD00000400002010B5094A5378002B5F +:1032700006D01278012A05D0022A06D0092010BDF6 +:10328000012010BD00F006F810BD00F019F810BDC7 +:103290000400002010B5532805D9572803D058281A +:1032A00001D0032010BD002907D01422002100F016 +:1032B000BFF90028F6D0452010BD80210843F4E76F +:1032C00010B5592810D2614A145CFF2C7ED0002919 +:1032D00002D014220021ABE014220021F02000F0E3 +:1032E000A7F9002873D1F4E7632816D077285AD0BD +:1032F0000246603A1F2A6BD8544A59321018603877 +:103300000478FF2C62D000297ED014220021E02016 +:1033100000F08EF900285AD188E000291CD0142230 +:103320000021E02000F084F9002850D1142200216F +:10333000122000F07DF9002849D114220021E0205C +:1033400000F076F900287DD1142200217C2000F0C5 +:103350006FF9002876D110BD14220021E02000F082 +:1033600067F900286ED114220021F02000F060F9E6 +:10337000002867D1142200217C2000F059F9002890 +:1033800060D114220021E02000F052F9002859D128 +:1033900014220021F02000F04BF9002852D1142211 +:1033A00000211220D3E70029A6D014220021E12019 +:1033B00000F03EF9002845D114220021104600F00B +:1033C00037F900283ED11422002102E02CE039E038 +:1033D0003AE0772000F02CF9002833D114220021A4 +:1033E000E12000F025F900282CD114220021F02042 +:1033F00000F01EF9002825D114220021104600F00B +:1034000017F900281ED100E014E014220021F0205A +:1034100000F00EF9002815D114220021772000F0C9 +:1034200007F900280ED110BD022010BD1422012181 +:1034300020468CE714220021E02000F0F9F8002853 +:1034400000D149E7452010BD032010BD8C40000885 +:10345000F3B581B00F4600250126FCF7A3FF3A4CD7 +:10346000206107E0FCF79EFF2169401AB84201D3B2 +:103470000420FEBDFFF7C8FE0128F3D11220FFF79C +:1034800077FA00226188A068FCF785FF2420FFF707 +:103490006FFA01226188A068FCF77DFF1220FFF718 +:1034A00067FAA188E068FCF76DFF012800D1354379 +:1034B0007004060C1220FFF75BFA00226188A068F6 +:1034C000FCF769FF2420FFF753FA01226188A06806 +:1034D000FCF761FF1220FFF74BFAFF2EE1D9122013 +:1034E000FFF746FA00226188A068FCF754FF242009 +:1034F000FFF73EFA01226188A068FCF74CFF12201A +:10350000FFF736FA1220FFF733FA0022A188E068AD +:10351000FCF741FF00226188A068FCF73CFF2420F3 +:10352000FFF726FA01226188A068FCF734FF122019 +:10353000FFF71EFA0122A188E068FCF72CFF019832 +:1035400005700020FEBD00000400002010B5064CF0 +:1035500001226188A068FCF71EFF0122A188E068B3 +:10356000FCF719FF10BD00000400002002480221F2 +:1035700001700121417070470400002038B5FFF749 +:1035800043FE284C0228A07114D0012815D003282E +:103590000FD1221D511E2448FFF75CFB002808D1E3 +:1035A0002179E078FFF760FE452836D01E48FFF706 +:1035B00061FB38BDFFF7CAFF38BDFF2168460170C7 +:1035C00018480A21401CFFF743FF69466078FFF75F +:1035D0006BFB68460478FF2CEED01348202160383E +:1035E000FCF7B5FD1048CD2160380170014620314F +:1035F0004978417081218170E2070121002A00D0C1 +:10360000C170A20700D50171620700D54171012286 +:1036100051030648FCF7BFFE38BD0120FCF7DDFD75 +:1036200038BD00004C000020B40200200008004813 +:10363000F8B515460E460746FCF7B4FE0C4C206163 +:1036400007E0FCF7AFFE2169401AA84201D3012030 +:10365000F8BDFFF7D9FD0328F3D1002E03D0AF202A +:103660008000FFF785F9384600F004F8F8BD000047 +:1036700004000020F8B5474C054601260022A18829 +:10368000E068FCF788FE1220FFF772F900226188DB +:10369000A068FCF780FE2420FFF76AF90122618808 +:1036A000A068FCF778FE1220FFF762F96188A06835 +:1036B000FCF768FE002868D00027E80701D0012247 +:1036C00000E00022A188E068FCF765FE1220FFF709 +:1036D0004FF900226188A068FCF75DFE2420FFF707 +:1036E00047F901226188A068FCF755FE1220FFF718 +:1036F0003FF96188A068FCF745FE002845D0E8073F +:10370000C00F46406D087F1C082FD6DB002E01D06D +:10371000012200E00022A188E068FCF73CFE1220B4 +:10372000FFF726F900226188A068FCF734FE242008 +:10373000FFF71EF901226188A068FCF72CFE122019 +:10374000FFF716F96188A068FCF71CFE00281CD062 +:103750000122A188E068FCF71EFE1220FFF708F99D +:1037600000226188A068FCF716FE2420FFF700F90C +:1037700001226188A068FCF70EFE1220FFF7F8F81E +:10378000C820FFF7F5F80020F8BDFFF7DFFE452061 +:10379000F8BD00000400002010B5164CE1896069F6 +:1037A000FCF7F0FD012805D1A1892069FCF7EAFDAD +:1037B000012806D0E1896069FCF7E4FD012802D008 +:1037C00007E0032010BDA1892069FCF7DBFD00287C +:1037D00006D0E1896069FCF7D5FD002802D007E03A +:1037E000022010BDA1892069FCF7CCFD0128F8D08A +:1037F000002010BD1800002070B5294E0546B07994 +:103800000C4601283BD0022838D03078002844D01C +:103810000821601CFCF79BFC0320207008206070CE +:10382000A879002801D009206070287A002803D0E8 +:103830006078022108436070E9790420002902D0F1 +:103840006178014361700021695E002903DA6178C3 +:103850001022114361700221695E002903DA617848 +:103860002022114361702978A170A978E17029792B +:1038700021717179002900D02070002070BD287856 +:10388000317A40183072A878717A401870722879AD +:10389000B17A4018B072012070BD032070BD0000E5 +:1038A00018000020F8B500250E46FF2814D0584C0B +:1038B000EC281ED0A17902291DD0E638012703008B +:1038C000FEF750FF11989E8A5D5A5550504B504557 +:1038D000503C2523201D500000F036F91421FA2019 +:1038E00000F0C6F9FA21AA2000F0B5F91421002051 +:1038F00002E0E07933E0142100F0ADF9F8BD00F00A +:103900002FF92FE0002020702AE0277028E01421F2 +:10391000FA2000F0ADF900F04FFA3D489621401C26 +:1039200000F086F80028E9D1394A20791832617808 +:103930001154072816D2401C207113E000F03CFA05 +:103940001421FA2000F094F900206071D3E700F010 +:1039500033FAA079E071A77104E0E1710220A0714F +:1039600000F02AFA1421FA2000F082F9F8BD14219F +:10397000FA2000F07DF93AE0E1710020EFE7142130 +:10398000FA2000F075F9A079012800D140252078AF +:10399000002801D020200543E078022801D1102022 +:1039A0000543B079002801D004200543F0790028B0 +:1039B00001D002200543307A002800D03D43142175 +:1039C000284600F048F91421A07800F044F91421A9 +:1039D000607800F040F90AE01421FA2000F048F97C +:1039E0000B489621801C00F023F80028BFD000F07F +:1039F000E3F9F8BD1421FA2000F03AF9E770F8BDB8 +:103A00001421FA2000F034F90220E070F8BD000023 +:103A10001800002010B5054C2061A1816261E3818E +:103A200000F092F800F080F810BD000018000020AF +:103A3000F3B581B00F4600250126FCF7B3FC044620 +:103A400006E0FCF7AFFC001BB84201D30420FEBD2A +:103A5000FFF7A2FE0128F4D11220FEF789FF314CB6 +:103A60000022A1892069FCF796FC2420FEF780FF44 +:103A70000122A1892069FCF78EFC1220FEF778FF55 +:103A8000E1896069FCF77EFC012800D135437004B0 +:103A9000060C1220FEF76CFF0022A1892069FCF7BA +:103AA0007AFC2420FEF764FF0122A1892069FCF73B +:103AB00072FC1220FEF75CFFFF2EE1D91220FEF708 +:103AC00057FF0022A1892069FCF765FC2420FEF73E +:103AD0004FFF0122A1892069FCF75DFC1220FEF74F +:103AE00047FF1220FEF744FF0022E1896069FCF7DE +:103AF00052FC0022A1892069FCF74DFC2420FEF72E +:103B000037FF0122A1892069FCF745FC1220FEF74E +:103B10002FFF0122E1896069FCF73DFC01980570E7 +:103B20000020FEBD1800002010B5064C0122A1891E +:103B30002069FCF730FC0122E1896069FCF72BFC6D +:103B400010BD00001800002000B500F009F803497E +:103B5000002008718861C861487100BD180000200C +:103B600000B5074864214170022181700121C170B4 +:103B7000017000218171C17100F01EF900BD0000CB +:103B80001800002070B50546002407E02819407889 +:103B9000FF2100F060F8002804D1641C2878A042BE +:103BA000F4DC002070BD000010B5FFF7F5FD1D4CE2 +:103BB000022860710DD001280ED020461430FFF786 +:103BC000F0FA002807D01849FFF716FE002813D195 +:103BD0000DE0FFF7A9FF10BD12480A21801CFFF776 +:103BE00027FF1149A0781839FFF75CFE10BD0E4879 +:103BF000FFF7C8FF452804D00A481430FFF7DCFA65 +:103C000010BD0A4C012208212046FCF7C4FBFFF737 +:103C1000C3FD0328FBD1002208212046FCF7BBFB93 +:103C2000FEE700004C000020D802002000040048FD +:103C300070B50546FCF7B6FB044606E0FCF7B2FBA0 +:103C4000001BA84201D3042070BDFFF7A5FD032887 +:103C5000F4D1002070BD10B504460846FFF7E8FF18 +:103C6000002801D0042010BD204600F013F810BD3C +:103C700010B504460846FFF7DBFF002801D00420FA +:103C800010BDAF208000FEF773FE204600F002F862 +:103C900010BD0000F8B5474C054601260022E18919 +:103CA0006069FCF778FB1220FEF762FE0022A18912 +:103CB0002069FCF770FB2420FEF75AFE0122A1893F +:103CC0002069FCF768FB1220FEF752FEA1892069EB +:103CD000FCF758FB002868D00027E80701D0012234 +:103CE00000E00022E1896069FCF755FB1220FEF735 +:103CF0003FFE0022A1892069FCF74DFB2420FEF73E +:103D000037FE0122A1892069FCF745FB1220FEF74E +:103D10002FFEA1892069FCF735FB002845D0E80774 +:103D2000C00F46406D087F1C082FD6DB002E01D047 +:103D3000012200E00022E1896069FCF72CFB1220DF +:103D4000FEF716FE0022A1892069FCF724FB24203F +:103D5000FEF70EFE0122A1892069FCF71CFB122050 +:103D6000FEF706FEA1892069FCF70CFB00281CD099 +:103D70000122E1896069FCF70EFB1220FEF7F8FDD5 +:103D80000022A1892069FCF706FB2420FEF7F0FD44 +:103D90000122A1892069FCF7FEFA1220FEF7E8FD56 +:103DA000FA20FEF7E5FD0020F8BDFFF7BDFE452037 +:103DB000F8BD000018000020024800210172417285 +:103DC000817270471800002011A0FEF7BBFC134D54 +:103DD0000024295D12A0FEF7B5FC641C202CF8DB42 +:103DE00010A0FEF7AFFC134D002408212846FCF775 +:103DF000CEFA6420FCF7F1F9641C642CF5DBBFF308 +:103E00004F8F0E490C48C860BFF34F8F00BFFDE7CE +:103E1000535049204552524F520A0000740200206C +:103E2000256420000A7265626F6F74696E672E2EBA +:103E30002E0A0000000400480400FA0500ED00E02E +:103E400070B50646FCF7AEFA0446084D06E0FCF7EE +:103E5000A9FA001BB04201D9042070BD2988686806 +:103E6000FCF790FA0028F2D0002070BD3800002046 +:103E700010B50E4C21886068FCF784FA012802D145 +:103E8000FCF790FAE060FCF78DFAE168401A14281C +:103E90000BD9C820FFF7D4FF1420FCF79EF9AA2005 +:103EA00000F094F80A20FCF798F910BD38000020C3 +:103EB00010B500F05DF8FCF775FA0149C86010BD57 +:103EC0003800002010B5034C60602180A260638040 +:103ED00010BD00003800002070B5044666380300AD +:103EE000FEF740FC0A1406080A0C0E101216181AE7 +:103EF000482413E04A2411E04B240FE04E240DE047 +:103F00004F240BE0502409E0512407E0472405E04A +:103F1000522403E0532401E0532C0BD8022902D091 +:103F200000290DD00EE0FCF73DFA084D2969401A32 +:103F3000502801D8002070BDFCF734FA286101E058 +:103F400080200443204600F041F870BD3800002076 +:103F500010B5064C012221886068FCF71CFA01228A +:103F60006188A068FCF717FA10BD00003800002037 +:103F700010B5064C012221886068FCF70CFA00227B +:103F80006188A068FCF707FA10BD00003800002027 +:103F900010B5FFF76DFF0B4A0B48511EFEF75AFE96 +:103FA00000280AD10748001F0179C078FFF794FF65 +:103FB000452803D00448FEF75DFE10BD0120FCF744 +:103FC0000CF910BD50000020B402002070B52E4C3A +:103FD000054621886068FCF7D5F900282AD0002220 +:103FE00021886068FCF7D7F90520FEF7C1FC0122A3 +:103FF0006188A068FCF7CFF96E20FEF7B9FC6188F4 +:10400000A068FCF7BFF9002814D00122218860685D +:10401000FCF7C1F94120FEF7ABFC00222188606863 +:10402000FCF7B9F91E20FEF7A3FC0026E80705D02F +:10403000012204E0FFF79CFF452070BD002261884B +:10404000A068FCF7A8F9012221886068FCF7A3F9B1 +:104050004120FEF78DFC002221886068FCF79BF967 +:104060001E20FEF785FC6D08761C082EDEDB012283 +:1040700021886068FCF78FF900226188A068FCF74E +:104080008AF9002070BD000038000020FF76161E5F +:1040900026252E363D3E46454E55660D151D242DD2 +:1040A0002C353C43444D545B5A141C1B232B343396 +:1040B0003B424B4C520E125D1A22212A32313A41B8 +:1040C000494A597C1129580506040C030B830A013F +:1040D00009777E6C757D7B6B73747969727A707108 +:1040E000FFFF6178075A144AFF11FF6C757D6B74EE +:1040F00069727A7071FFFFFFFFFFFFFFFFFFFFFF95 +:10410000FFFF1F272F000106075553423456432057 +:1041100050726F746F636F6C20426F6172640A49F2 +:10412000424D20504320436F6D70617469626C652D +:104130000A64656B754E756B656D203230323200E6 +:104140000000000000000000010203040607080947 +:104150000000000001020304784100080000002074 +:10416000840000007E270008FC4100088400002035 +:10417000740800008E270008000000000201000003 +:10418000000000000000000000000000000000002F +:10419000000000000000000000000000000000001F +:1041A000000000000000000000000000000000000F +:1041B00000000000000000000000000000000000FF +:1041C00000000000000000000000000000000000EF +:1041D00000000000000000000000000000000000DF +:1041E00000000000000000000000000000127A0043 +:0C41F000000000000000000000000000C3 :04000005080000C12E :00000001FF diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm index 3b0abc2..53b5557 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm @@ -3,7 +3,7 @@ Static Call Graph - [ibmpc\ibmpc.axf]

Static Call Graph for image ibmpc\ibmpc.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Sun May 01 22:54:56 2022 +

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

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

Call chain for Maximum Stack Depth:

@@ -74,7 +74,7 @@ Global Symbols

__main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
[Address Reference Count : 1]

  • startup_stm32f072xb.o(.text)
-

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

_main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

[Calls]

  • >>   __scatterload @@ -84,15 +84,15 @@ Global Symbols

    [Called By]
    • >>   __scatterload
    -

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) +

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) -

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) +

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

    Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f072xb.o(.text))
    [Address Reference Count : 1]

    • startup_stm32f072xb.o(RESET) @@ -188,64 +188,64 @@ Global Symbols

      WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f072xb.o(.text))
      [Address Reference Count : 1]

      • startup_stm32f072xb.o(RESET)
      -

      __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

      __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

      __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text)) +

      __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))

      [Stack]

      • Max Depth = 12
      • Call Chain = __aeabi_uidivmod
      -
      [Called By]
      • >>   mouse_buf_pop -
      • >>   mouse_buf_is_full -
      • >>   mouse_buf_add -
      • >>   kb_buf_pop -
      • >>   kb_buf_is_full -
      • >>   kb_buf_add -
      • >>   gamepad_buf_pop -
      • >>   gamepad_buf_is_full -
      • >>   gamepad_buf_add -
      • >>   SystemClock_Config -
      • >>   HAL_InitTick -
      • >>   HAL_RCC_GetSysClockFreq -
      • >>   UART_SetConfig -
      • >>   _printf_core +
        [Called By]
        • >>   mouse_buf_pop +
        • >>   mouse_buf_is_full +
        • >>   mouse_buf_add +
        • >>   kb_buf_pop +
        • >>   kb_buf_is_full +
        • >>   kb_buf_add +
        • >>   gamepad_buf_pop +
        • >>   gamepad_buf_is_full +
        • >>   gamepad_buf_add +
        • >>   SystemClock_Config +
        • >>   HAL_InitTick +
        • >>   HAL_RCC_GetSysClockFreq +
        • >>   UART_SetConfig +
        • >>   _printf_core
        -

        __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) -

        [Called By]

        • >>   mouse_buf_add -
        • >>   gamepad_buf_add +

          __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) +

          [Called By]

          • >>   mouse_buf_add +
          • >>   gamepad_buf_add
          -

          __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) -

          [Called By]

          • >>   HAL_SPI_TxRxCpltCallback +

            __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) +

            [Called By]

            • >>   HAL_SPI_TxRxCpltCallback
            -

            __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) +

            __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

            __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))

            [Called By]

            • >>   _memset$wrapper
            • >>   __aeabi_memclr
            -

            __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

            __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

            __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

            __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

            __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))

            [Calls]

            • >>   __aeabi_memset
            -
            [Called By]
            • >>   ps2mouse_get_outgoing_data -
            • >>   mouse_buf_reset -
            • >>   kb_buf_reset -
            • >>   gamepad_buf_reset -
            • >>   protocol_status_lookup_init +
              [Called By]
              • >>   ps2mouse_get_outgoing_data +
              • >>   mouse_buf_reset +
              • >>   kb_buf_reset +
              • >>   gamepad_buf_reset +
              • >>   protocol_status_lookup_init
              -

              __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) -

              [Called By]

              • >>   ps2kb_update +

                __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +

                [Called By]

                • >>   ps2kb_update
                • >>   main -
                • >>   HAL_SPI_TxRxCpltCallback +
                • >>   HAL_SPI_TxRxCpltCallback
                -

                __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

                _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)

                [Calls]

                • >>   __aeabi_memset @@ -257,7 +257,7 @@ Global Symbols
                  [Called By]
                  • >>   _main_scatterload
                  -

                  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

                  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

                  EXTI0_1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.EXTI0_1_IRQHandler))

                  [Stack]

                  • Max Depth = 20
                  • Call Chain = EXTI0_1_IRQHandler ⇒ HAL_GPIO_EXTI_IRQHandler ⇒ HAL_GPIO_EXTI_Callback @@ -266,11 +266,11 @@ Global Symbols

                  [Address Reference Count : 1]
                  • startup_stm32f072xb.o(RESET)
                  -

                  HAL_DMA_Abort_IT (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT)) +

                  HAL_DMA_Abort_IT (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT))

                  [Stack]

                  • Max Depth = 16
                  • Call Chain = HAL_DMA_Abort_IT
                  -
                  [Called By]
                  • >>   HAL_UART_IRQHandler -
                  • >>   HAL_SPI_IRQHandler +
                    [Called By]
                    • >>   HAL_UART_IRQHandler +
                    • >>   HAL_SPI_IRQHandler

                    HAL_Delay (Thumb, 28 bytes, Stack size 16 bytes, stm32f0xx_hal.o(i.HAL_Delay)) @@ -278,11 +278,11 @@ Global Symbols


                  [Calls]
                  • >>   HAL_GetTick
                  -
                  [Called By]
                  • >>   xtkb_check_for_softreset -
                  • >>   mcp4451_reset -
                  • >>   xtkb_update -
                  • >>   spi_error_dump_reboot -
                  • >>   ps2kb_update +
                    [Called By]
                    • >>   xtkb_check_for_softreset +
                    • >>   mcp4451_reset +
                    • >>   xtkb_update +
                    • >>   spi_error_dump_reboot +
                    • >>   ps2kb_update
                    • >>   main
                    @@ -305,87 +305,87 @@ Global Symbols

                    HAL_GPIO_Init (Thumb, 314 bytes, Stack size 24 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init))

                    [Stack]

                    • Max Depth = 24
                    • Call Chain = HAL_GPIO_Init
                    -
                    [Called By]
                    • >>   MX_GPIO_Init -
                    • >>   HAL_UART_MspInit -
                    • >>   HAL_SPI_MspInit +
                      [Called By]
                      • >>   MX_GPIO_Init +
                      • >>   HAL_UART_MspInit +
                      • >>   HAL_SPI_MspInit
                      • >>   HAL_I2C_MspInit
                      -

                      HAL_GPIO_ReadPin (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) -

                      [Called By]

                      • >>   xtkb_write -
                      • >>   xtkb_check_for_softreset -
                      • >>   wait_for_clk_high -
                      • >>   ps2mouse_write_nowait -
                      • >>   ps2mouse_read -
                      • >>   ps2mouse_get_bus_status -
                      • >>   ps2kb_write_nowait -
                      • >>   ps2kb_read -
                      • >>   ps2kb_get_bus_status +

                        HAL_GPIO_ReadPin (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) +

                        [Called By]

                        • >>   xtkb_write +
                        • >>   xtkb_check_for_softreset +
                        • >>   wait_for_clk_high +
                        • >>   ps2mouse_write_nowait +
                        • >>   ps2mouse_read +
                        • >>   ps2mouse_get_bus_status +
                        • >>   ps2kb_write_nowait +
                        • >>   ps2kb_read +
                        • >>   ps2kb_get_bus_status
                        • >>   main
                        -

                        HAL_GPIO_TogglePin (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin)) -

                        [Called By]

                        • >>   spi_error_dump_reboot +

                          HAL_GPIO_TogglePin (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin)) +

                          [Called By]

                          • >>   spi_error_dump_reboot
                          • >>   main
                          -

                          HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)) -

                          [Called By]

                          • >>   MX_GPIO_Init -
                          • >>   xtkb_write -
                          • >>   xtkb_reset_bus -
                          • >>   xtkb_release_lines -
                          • >>   mcp4451_reset -
                          • >>   ps2mouse_write_nowait -
                          • >>   ps2mouse_release_lines -
                          • >>   ps2mouse_read -
                          • >>   ps2kb_write_nowait -
                          • >>   ps2kb_release_lines -
                          • >>   ps2kb_read -
                          • >>   ps2kb_update +

                            HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)) +

                            [Called By]

                            • >>   MX_GPIO_Init +
                            • >>   xtkb_write +
                            • >>   xtkb_reset_bus +
                            • >>   xtkb_release_lines +
                            • >>   mcp4451_reset +
                            • >>   ps2mouse_write_nowait +
                            • >>   ps2mouse_release_lines +
                            • >>   ps2mouse_read +
                            • >>   ps2kb_write_nowait +
                            • >>   ps2kb_release_lines +
                            • >>   ps2kb_read +
                            • >>   ps2mouse_update +
                            • >>   ps2kb_update
                            • >>   main -
                            • >>   gameport_init -
                            • >>   gamepad_update -
                            • >>   HAL_SPI_TxRxCpltCallback +
                            • >>   gameport_init +
                            • >>   gamepad_update +
                            • >>   HAL_SPI_TxRxCpltCallback

                            HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_GetTick)) -

                            [Called By]

                            • >>   xtkb_press_key -
                            • >>   xtkb_enable -
                            • >>   xtkb_check_for_softreset -
                            • >>   wait_for_clk_high +

                              [Called By]
                              • >>   xtkb_press_key +
                              • >>   xtkb_enable +
                              • >>   xtkb_check_for_softreset +
                              • >>   wait_for_clk_high
                              • >>   HAL_I2C_Mem_Write
                              • >>   HAL_I2C_IsDeviceReady
                              • >>   HAL_Delay -
                              • >>   ps2mouse_wait_for_idle -
                              • >>   ps2mouse_read -
                              • >>   ps2kb_write -
                              • >>   ps2kb_read -
                              • >>   SPI_WaitFlagStateUntilTimeout -
                              • >>   SPI_WaitFifoStateUntilTimeout -
                              • >>   SPI_CloseRxTx_ISR +
                              • >>   ps2mouse_wait_for_idle +
                              • >>   ps2mouse_read +
                              • >>   ps2kb_write +
                              • >>   ps2kb_read +
                              • >>   SPI_WaitFlagStateUntilTimeout +
                              • >>   SPI_WaitFifoStateUntilTimeout +
                              • >>   SPI_CloseRxTx_ISR
                              • >>   I2C_WaitOnTXISFlagUntilTimeout
                              • >>   I2C_WaitOnSTOPFlagUntilTimeout
                              • >>   I2C_WaitOnFlagUntilTimeout -
                              • >>   I2C_IsAcknowledgeFailed -
                              • >>   HAL_UART_Transmit -
                              • >>   HAL_RCC_OscConfig -
                              • >>   HAL_RCC_ClockConfig -
                              • >>   HAL_RCCEx_PeriphCLKConfig -
                              • >>   HAL_IWDG_Init -
                              • >>   UART_WaitOnFlagUntilTimeout -
                              • >>   UART_CheckIdleState +
                              • >>   I2C_IsAcknowledgeFailed +
                              • >>   HAL_UART_Transmit +
                              • >>   HAL_RCC_OscConfig +
                              • >>   HAL_RCC_ClockConfig +
                              • >>   HAL_RCCEx_PeriphCLKConfig +
                              • >>   UART_WaitOnFlagUntilTimeout +
                              • >>   UART_CheckIdleState
                              -

                              HAL_I2CEx_ConfigAnalogFilter (Thumb, 74 bytes, Stack size 16 bytes, stm32f0xx_hal_i2c_ex.o(i.HAL_I2CEx_ConfigAnalogFilter)) +

                              HAL_I2CEx_ConfigAnalogFilter (Thumb, 74 bytes, Stack size 16 bytes, stm32f0xx_hal_i2c_ex.o(i.HAL_I2CEx_ConfigAnalogFilter))

                              [Stack]

                              • Max Depth = 16
                              • Call Chain = HAL_I2CEx_ConfigAnalogFilter
                              -
                              [Called By]
                              • >>   MX_I2C2_Init +
                                [Called By]
                                • >>   MX_I2C2_Init
                                -

                                HAL_I2CEx_ConfigDigitalFilter (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_i2c_ex.o(i.HAL_I2CEx_ConfigDigitalFilter)) +

                                HAL_I2CEx_ConfigDigitalFilter (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_i2c_ex.o(i.HAL_I2CEx_ConfigDigitalFilter))

                                [Stack]

                                • Max Depth = 16
                                • Call Chain = HAL_I2CEx_ConfigDigitalFilter
                                -
                                [Called By]
                                • >>   MX_I2C2_Init +
                                  [Called By]
                                  • >>   MX_I2C2_Init

                                  HAL_I2C_Init (Thumb, 176 bytes, Stack size 16 bytes, stm32f0xx_hal_i2c.o(i.HAL_I2C_Init)) @@ -393,7 +393,7 @@ Global Symbols


                                [Calls]
                                • >>   HAL_I2C_MspInit
                                -
                                [Called By]
                                • >>   MX_I2C2_Init +
                                  [Called By]
                                  • >>   MX_I2C2_Init

                                  HAL_I2C_IsDeviceReady (Thumb, 280 bytes, Stack size 48 bytes, stm32f0xx_hal_i2c.o(i.HAL_I2C_IsDeviceReady)) @@ -402,7 +402,7 @@ Global Symbols
                                  [Calls]

                                  • >>   HAL_GetTick
                                  • >>   I2C_WaitOnFlagUntilTimeout
                                  -
                                  [Called By]
                                  • >>   mcp4451_is_available +
                                    [Called By]
                                    • >>   mcp4451_is_available

                                    HAL_I2C_Mem_Write (Thumb, 334 bytes, Stack size 48 bytes, stm32f0xx_hal_i2c.o(i.HAL_I2C_Mem_Write)) @@ -415,7 +415,7 @@ Global Symbols

                                  • >>   I2C_TransferConfig
                                  • >>   I2C_RequestMemoryWrite
                                  -
                                  [Called By]
                                  • >>   mcp4451_write_wiper +
                                    [Called By]
                                    • >>   mcp4451_write_wiper

                                    HAL_I2C_MspInit (Thumb, 64 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_I2C_MspInit)) @@ -426,301 +426,289 @@ Global Symbols
                                    [Called By]

                                    • >>   HAL_I2C_Init
                                    -

                                    HAL_IWDG_Init (Thumb, 86 bytes, Stack size 16 bytes, stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Init)) -

                                    [Stack]

                                    • Max Depth = 16
                                    • Call Chain = HAL_IWDG_Init -
                                    -
                                    [Calls]
                                    • >>   HAL_GetTick -
                                    -
                                    [Called By]
                                    • >>   main -
                                    - -

                                    HAL_IWDG_Refresh (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh)) -

                                    [Called By]

                                    • >>   main -
                                    - -

                                    HAL_IncTick (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_IncTick)) +

                                    HAL_IncTick (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_IncTick))

                                    [Called By]

                                    • >>   SysTick_Handler
                                    -

                                    HAL_Init (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_Init)) +

                                    HAL_Init (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_Init))

                                    [Stack]

                                    • Max Depth = 28
                                    • Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
                                    -
                                    [Calls]
                                    • >>   HAL_MspInit -
                                    • >>   HAL_InitTick +
                                      [Calls]
                                      • >>   HAL_MspInit +
                                      • >>   HAL_InitTick

                                      [Called By]
                                      • >>   main
                                      -

                                      HAL_InitTick (Thumb, 34 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_InitTick)) +

                                      HAL_InitTick (Thumb, 34 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_InitTick))

                                      [Stack]

                                      • Max Depth = 20
                                      • Call Chain = HAL_InitTick ⇒ __aeabi_uidivmod
                                      -
                                      [Calls]
                                      • >>   HAL_SYSTICK_Config -
                                      • >>   HAL_RCC_GetHCLKFreq -
                                      • >>   HAL_NVIC_SetPriority -
                                      • >>   __aeabi_uidivmod +
                                        [Calls]
                                        • >>   HAL_SYSTICK_Config +
                                        • >>   HAL_RCC_GetHCLKFreq +
                                        • >>   HAL_NVIC_SetPriority +
                                        • >>   __aeabi_uidivmod
                                        -
                                        [Called By]
                                        • >>   HAL_RCC_ClockConfig -
                                        • >>   HAL_Init +
                                          [Called By]
                                          • >>   HAL_RCC_ClockConfig +
                                          • >>   HAL_Init
                                          -

                                          HAL_MspInit (Thumb, 64 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_MspInit)) +

                                          HAL_MspInit (Thumb, 64 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_MspInit))

                                          [Stack]

                                          • Max Depth = 16
                                          • Call Chain = HAL_MspInit ⇒ HAL_NVIC_SetPriority
                                          -
                                          [Calls]
                                          • >>   HAL_NVIC_SetPriority +
                                            [Calls]
                                            • >>   HAL_NVIC_SetPriority
                                            -
                                            [Called By]
                                            • >>   HAL_Init +
                                              [Called By]
                                              • >>   HAL_Init
                                              -

                                              HAL_NVIC_EnableIRQ (Thumb, 14 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) -

                                              [Called By]

                                              • >>   MX_GPIO_Init -
                                              • >>   HAL_UART_MspInit -
                                              • >>   HAL_SPI_MspInit +

                                                HAL_NVIC_EnableIRQ (Thumb, 14 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) +

                                                [Called By]

                                                • >>   MX_GPIO_Init +
                                                • >>   HAL_UART_MspInit +
                                                • >>   HAL_SPI_MspInit
                                                -

                                                HAL_NVIC_SetPriority (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority)) +

                                                HAL_NVIC_SetPriority (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority))

                                                [Stack]

                                                • Max Depth = 8
                                                • Call Chain = HAL_NVIC_SetPriority
                                                -
                                                [Calls]
                                                • >>   NVIC_SetPriority +
                                                  [Calls]
                                                  • >>   NVIC_SetPriority
                                                  -
                                                  [Called By]
                                                  • >>   MX_GPIO_Init -
                                                  • >>   HAL_UART_MspInit -
                                                  • >>   HAL_SPI_MspInit -
                                                  • >>   HAL_MspInit -
                                                  • >>   SystemClock_Config -
                                                  • >>   HAL_InitTick +
                                                    [Called By]
                                                    • >>   MX_GPIO_Init +
                                                    • >>   HAL_UART_MspInit +
                                                    • >>   HAL_SPI_MspInit +
                                                    • >>   HAL_MspInit +
                                                    • >>   SystemClock_Config +
                                                    • >>   HAL_InitTick
                                                    -

                                                    HAL_RCCEx_PeriphCLKConfig (Thumb, 274 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig)) +

                                                    HAL_RCCEx_PeriphCLKConfig (Thumb, 274 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))

                                                    [Stack]

                                                    • Max Depth = 24
                                                    • Call Chain = HAL_RCCEx_PeriphCLKConfig

                                                    [Calls]
                                                    • >>   HAL_GetTick
                                                    -
                                                    [Called By]
                                                    • >>   SystemClock_Config +
                                                      [Called By]
                                                      • >>   SystemClock_Config
                                                      -

                                                      HAL_RCC_ClockConfig (Thumb, 320 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig)) +

                                                      HAL_RCC_ClockConfig (Thumb, 320 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig))

                                                      [Stack]

                                                      • Max Depth = 84
                                                      • Call Chain = HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod

                                                      [Calls]
                                                      • >>   HAL_GetTick -
                                                      • >>   HAL_InitTick -
                                                      • >>   HAL_RCC_GetSysClockFreq +
                                                      • >>   HAL_InitTick +
                                                      • >>   HAL_RCC_GetSysClockFreq
                                                      -
                                                      [Called By]
                                                      • >>   SystemClock_Config +
                                                        [Called By]
                                                        • >>   SystemClock_Config
                                                        -

                                                        HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) -

                                                        [Called By]

                                                        • >>   SystemClock_Config -
                                                        • >>   HAL_InitTick +

                                                          HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) +

                                                          [Called By]

                                                          • >>   SystemClock_Config +
                                                          • >>   HAL_InitTick
                                                          -

                                                          HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) -

                                                          [Called By]

                                                          • >>   UART_SetConfig +

                                                            HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) +

                                                            [Called By]

                                                            • >>   UART_SetConfig
                                                            -

                                                            HAL_RCC_GetSysClockFreq (Thumb, 90 bytes, Stack size 48 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq)) +

                                                            HAL_RCC_GetSysClockFreq (Thumb, 90 bytes, Stack size 48 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))

                                                            [Stack]

                                                            • Max Depth = 60
                                                            • Call Chain = HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                            -
                                                            [Calls]
                                                            • >>   __aeabi_uidivmod +
                                                              [Calls]
                                                              • >>   __aeabi_uidivmod
                                                              -
                                                              [Called By]
                                                              • >>   HAL_RCC_ClockConfig -
                                                              • >>   UART_SetConfig +
                                                                [Called By]
                                                                • >>   HAL_RCC_ClockConfig +
                                                                • >>   UART_SetConfig
                                                                -

                                                                HAL_RCC_OscConfig (Thumb, 966 bytes, Stack size 32 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig)) +

                                                                HAL_RCC_OscConfig (Thumb, 966 bytes, Stack size 32 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig))

                                                                [Stack]

                                                                • Max Depth = 32
                                                                • Call Chain = HAL_RCC_OscConfig

                                                                [Calls]
                                                                • >>   HAL_GetTick
                                                                -
                                                                [Called By]
                                                                • >>   SystemClock_Config +
                                                                  [Called By]
                                                                  • >>   SystemClock_Config
                                                                  -

                                                                  HAL_SPI_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback)) +

                                                                  HAL_SPI_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback))

                                                                  [Called By]

                                                                  • >>   SPI_DMAAbortOnError -
                                                                  • >>   SPI_CloseRxTx_ISR -
                                                                  • >>   HAL_SPI_IRQHandler +
                                                                  • >>   SPI_CloseRxTx_ISR +
                                                                  • >>   HAL_SPI_IRQHandler
                                                                  -

                                                                  HAL_SPI_IRQHandler (Thumb, 208 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler)) +

                                                                  HAL_SPI_IRQHandler (Thumb, 208 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler))

                                                                  [Stack]

                                                                  • Max Depth = 40
                                                                  • Call Chain = HAL_SPI_IRQHandler ⇒ HAL_DMA_Abort_IT
                                                                  -
                                                                  [Calls]
                                                                  • >>   HAL_DMA_Abort_IT -
                                                                  • >>   HAL_SPI_ErrorCallback +
                                                                    [Calls]
                                                                    • >>   HAL_DMA_Abort_IT +
                                                                    • >>   HAL_SPI_ErrorCallback

                                                                    [Called By]
                                                                    • >>   SPI1_IRQHandler
                                                                    -

                                                                    HAL_SPI_Init (Thumb, 184 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_Init)) +

                                                                    HAL_SPI_Init (Thumb, 184 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_Init))

                                                                    [Stack]

                                                                    • Max Depth = 80
                                                                    • Call Chain = HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                    -
                                                                    [Calls]
                                                                    • >>   HAL_SPI_MspInit +
                                                                      [Calls]
                                                                      • >>   HAL_SPI_MspInit
                                                                      -
                                                                      [Called By]
                                                                      • >>   MX_SPI1_Init +
                                                                        [Called By]
                                                                        • >>   MX_SPI1_Init
                                                                        -

                                                                        HAL_SPI_MspInit (Thumb, 76 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit)) +

                                                                        HAL_SPI_MspInit (Thumb, 76 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit))

                                                                        [Stack]

                                                                        • Max Depth = 56
                                                                        • Call Chain = HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                        -
                                                                        [Calls]
                                                                        • >>   HAL_NVIC_SetPriority -
                                                                        • >>   HAL_NVIC_EnableIRQ +
                                                                          [Calls]
                                                                          • >>   HAL_NVIC_SetPriority +
                                                                          • >>   HAL_NVIC_EnableIRQ
                                                                          • >>   HAL_GPIO_Init
                                                                          -
                                                                          [Called By]
                                                                          • >>   HAL_SPI_Init +
                                                                            [Called By]
                                                                            • >>   HAL_SPI_Init
                                                                            -

                                                                            HAL_SPI_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback)) -

                                                                            [Called By]

                                                                            • >>   SPI_CloseRxTx_ISR +

                                                                              HAL_SPI_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback)) +

                                                                              [Called By]

                                                                              • >>   SPI_CloseRxTx_ISR
                                                                              -

                                                                              HAL_SPI_TransmitReceive_IT (Thumb, 196 bytes, Stack size 20 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)) +

                                                                              HAL_SPI_TransmitReceive_IT (Thumb, 196 bytes, Stack size 20 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT))

                                                                              [Stack]

                                                                              • Max Depth = 20
                                                                              • Call Chain = HAL_SPI_TransmitReceive_IT

                                                                              [Called By]
                                                                              • >>   main -
                                                                              • >>   HAL_SPI_TxRxCpltCallback +
                                                                              • >>   HAL_SPI_TxRxCpltCallback
                                                                              -

                                                                              HAL_SPI_TxRxCpltCallback (Thumb, 362 bytes, Stack size 24 bytes, main.o(i.HAL_SPI_TxRxCpltCallback)) +

                                                                              HAL_SPI_TxRxCpltCallback (Thumb, 362 bytes, Stack size 24 bytes, main.o(i.HAL_SPI_TxRxCpltCallback))

                                                                              [Stack]

                                                                              • Max Depth = 80
                                                                              • Call Chain = HAL_SPI_TxRxCpltCallback ⇒ handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                              -
                                                                              [Calls]
                                                                              • >>   HAL_GPIO_WritePin -
                                                                              • >>   mouse_buf_add -
                                                                              • >>   kb_buf_add -
                                                                              • >>   gamepad_buf_add -
                                                                              • >>   HAL_SPI_TransmitReceive_IT -
                                                                              • >>   handle_protocol_switch -
                                                                              • >>   byte_to_int16_t -
                                                                              • >>   __aeabi_memclr4 -
                                                                              • >>   __aeabi_memcpy4 +
                                                                                [Calls]
                                                                                • >>   HAL_GPIO_WritePin +
                                                                                • >>   mouse_buf_add +
                                                                                • >>   kb_buf_add +
                                                                                • >>   gamepad_buf_add +
                                                                                • >>   HAL_SPI_TransmitReceive_IT +
                                                                                • >>   handle_protocol_switch +
                                                                                • >>   byte_to_int16_t +
                                                                                • >>   __aeabi_memclr4 +
                                                                                • >>   __aeabi_memcpy4
                                                                                -
                                                                                [Called By]
                                                                                • >>   SPI_CloseRxTx_ISR +
                                                                                  [Called By]
                                                                                  • >>   SPI_CloseRxTx_ISR
                                                                                  -

                                                                                  HAL_SYSTICK_CLKSourceConfig (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig)) -

                                                                                  [Called By]

                                                                                  • >>   SystemClock_Config +

                                                                                    HAL_SYSTICK_CLKSourceConfig (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig)) +

                                                                                    [Called By]

                                                                                    • >>   SystemClock_Config
                                                                                    -

                                                                                    HAL_SYSTICK_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback)) -

                                                                                    [Called By]

                                                                                    • >>   HAL_SYSTICK_IRQHandler +

                                                                                      HAL_SYSTICK_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback)) +

                                                                                      [Called By]

                                                                                      • >>   HAL_SYSTICK_IRQHandler
                                                                                      -

                                                                                      HAL_SYSTICK_Config (Thumb, 38 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config)) +

                                                                                      HAL_SYSTICK_Config (Thumb, 38 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config))

                                                                                      [Stack]

                                                                                      • Max Depth = 8
                                                                                      • Call Chain = HAL_SYSTICK_Config
                                                                                      -
                                                                                      [Calls]
                                                                                      • >>   NVIC_SetPriority +
                                                                                        [Calls]
                                                                                        • >>   NVIC_SetPriority
                                                                                        -
                                                                                        [Called By]
                                                                                        • >>   SystemClock_Config -
                                                                                        • >>   HAL_InitTick +
                                                                                          [Called By]
                                                                                          • >>   SystemClock_Config +
                                                                                          • >>   HAL_InitTick
                                                                                          -

                                                                                          HAL_SYSTICK_IRQHandler (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler)) +

                                                                                          HAL_SYSTICK_IRQHandler (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler))

                                                                                          [Stack]

                                                                                          • Max Depth = 8
                                                                                          • Call Chain = HAL_SYSTICK_IRQHandler
                                                                                          -
                                                                                          [Calls]
                                                                                          • >>   HAL_SYSTICK_Callback +
                                                                                            [Calls]
                                                                                            • >>   HAL_SYSTICK_Callback

                                                                                            [Called By]
                                                                                            • >>   SysTick_Handler
                                                                                            -

                                                                                            HAL_TIMEx_MasterConfigSynchronization (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization)) +

                                                                                            HAL_TIMEx_MasterConfigSynchronization (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization))

                                                                                            [Stack]

                                                                                            • Max Depth = 16
                                                                                            • Call Chain = HAL_TIMEx_MasterConfigSynchronization
                                                                                            -
                                                                                            [Called By]
                                                                                            • >>   MX_TIM2_Init +
                                                                                              [Called By]
                                                                                              • >>   MX_TIM2_Init
                                                                                              -

                                                                                              HAL_TIM_Base_Init (Thumb, 52 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init)) +

                                                                                              HAL_TIM_Base_Init (Thumb, 52 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init))

                                                                                              [Stack]

                                                                                              • Max Depth = 36
                                                                                              • Call Chain = HAL_TIM_Base_Init ⇒ TIM_Base_SetConfig
                                                                                              -
                                                                                              [Calls]
                                                                                              • >>   HAL_TIM_Base_MspInit -
                                                                                              • >>   TIM_Base_SetConfig +
                                                                                                [Calls]
                                                                                                • >>   HAL_TIM_Base_MspInit +
                                                                                                • >>   TIM_Base_SetConfig
                                                                                                -
                                                                                                [Called By]
                                                                                                • >>   MX_TIM2_Init +
                                                                                                  [Called By]
                                                                                                  • >>   MX_TIM2_Init
                                                                                                  -

                                                                                                  HAL_TIM_Base_MspInit (Thumb, 30 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit)) +

                                                                                                  HAL_TIM_Base_MspInit (Thumb, 30 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit))

                                                                                                  [Stack]

                                                                                                  • Max Depth = 8
                                                                                                  • Call Chain = HAL_TIM_Base_MspInit
                                                                                                  -
                                                                                                  [Called By]
                                                                                                  • >>   HAL_TIM_Base_Init +
                                                                                                    [Called By]
                                                                                                    • >>   HAL_TIM_Base_Init
                                                                                                    -

                                                                                                    HAL_TIM_Base_Start (Thumb, 24 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start)) -

                                                                                                    [Called By]

                                                                                                    • >>   delay_us_init +

                                                                                                      HAL_TIM_Base_Start (Thumb, 24 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start)) +

                                                                                                      [Called By]

                                                                                                      • >>   delay_us_init
                                                                                                      -

                                                                                                      HAL_TIM_ConfigClockSource (Thumb, 238 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource)) +

                                                                                                      HAL_TIM_ConfigClockSource (Thumb, 238 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))

                                                                                                      [Stack]

                                                                                                      • Max Depth = 36
                                                                                                      • Call Chain = HAL_TIM_ConfigClockSource ⇒ TIM_ETR_SetConfig
                                                                                                      -
                                                                                                      [Calls]
                                                                                                      • >>   TIM_ETR_SetConfig -
                                                                                                      • >>   TIM_TI2_ConfigInputStage -
                                                                                                      • >>   TIM_TI1_ConfigInputStage -
                                                                                                      • >>   TIM_ITRx_SetConfig +
                                                                                                        [Calls]
                                                                                                        • >>   TIM_ETR_SetConfig +
                                                                                                        • >>   TIM_TI2_ConfigInputStage +
                                                                                                        • >>   TIM_TI1_ConfigInputStage +
                                                                                                        • >>   TIM_ITRx_SetConfig
                                                                                                        -
                                                                                                        [Called By]
                                                                                                        • >>   MX_TIM2_Init +
                                                                                                          [Called By]
                                                                                                          • >>   MX_TIM2_Init
                                                                                                          -

                                                                                                          HAL_UARTEx_WakeupCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback)) -

                                                                                                          [Called By]

                                                                                                          • >>   HAL_UART_IRQHandler +

                                                                                                            HAL_UARTEx_WakeupCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback)) +

                                                                                                            [Called By]

                                                                                                            • >>   HAL_UART_IRQHandler
                                                                                                            -

                                                                                                            HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_ErrorCallback)) -

                                                                                                            [Called By]

                                                                                                            • >>   HAL_UART_IRQHandler +

                                                                                                              HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_ErrorCallback)) +

                                                                                                              [Called By]

                                                                                                              • >>   HAL_UART_IRQHandler
                                                                                                              • >>   UART_DMAAbortOnError
                                                                                                              -

                                                                                                              HAL_UART_IRQHandler (Thumb, 304 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler)) +

                                                                                                              HAL_UART_IRQHandler (Thumb, 304 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler))

                                                                                                              [Stack]

                                                                                                              • Max Depth = 40
                                                                                                              • Call Chain = HAL_UART_IRQHandler ⇒ HAL_DMA_Abort_IT
                                                                                                              -
                                                                                                              [Calls]
                                                                                                              • >>   HAL_DMA_Abort_IT -
                                                                                                              • >>   HAL_UART_ErrorCallback -
                                                                                                              • >>   HAL_UARTEx_WakeupCallback -
                                                                                                              • >>   UART_Transmit_IT -
                                                                                                              • >>   UART_Receive_IT -
                                                                                                              • >>   UART_EndTransmit_IT -
                                                                                                              • >>   UART_EndRxTransfer +
                                                                                                                [Calls]
                                                                                                                • >>   HAL_DMA_Abort_IT +
                                                                                                                • >>   HAL_UART_ErrorCallback +
                                                                                                                • >>   HAL_UARTEx_WakeupCallback +
                                                                                                                • >>   UART_Transmit_IT +
                                                                                                                • >>   UART_Receive_IT +
                                                                                                                • >>   UART_EndTransmit_IT +
                                                                                                                • >>   UART_EndRxTransfer

                                                                                                                [Called By]
                                                                                                                • >>   USART3_4_IRQHandler
                                                                                                                -

                                                                                                                HAL_UART_Init (Thumb, 108 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Init)) +

                                                                                                                HAL_UART_Init (Thumb, 108 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Init))

                                                                                                                [Stack]

                                                                                                                • Max Depth = 100
                                                                                                                • Call Chain = HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                                                                                -
                                                                                                                [Calls]
                                                                                                                • >>   HAL_UART_MspInit -
                                                                                                                • >>   UART_SetConfig -
                                                                                                                • >>   UART_CheckIdleState -
                                                                                                                • >>   UART_AdvFeatureConfig +
                                                                                                                  [Calls]
                                                                                                                  • >>   HAL_UART_MspInit +
                                                                                                                  • >>   UART_SetConfig +
                                                                                                                  • >>   UART_CheckIdleState +
                                                                                                                  • >>   UART_AdvFeatureConfig
                                                                                                                  -
                                                                                                                  [Called By]
                                                                                                                  • >>   MX_USART3_UART_Init -
                                                                                                                  • >>   MX_USART1_UART_Init +
                                                                                                                    [Called By]
                                                                                                                    • >>   MX_USART3_UART_Init +
                                                                                                                    • >>   MX_USART1_UART_Init
                                                                                                                    -

                                                                                                                    HAL_UART_MspInit (Thumb, 126 bytes, Stack size 40 bytes, stm32f0xx_hal_msp.o(i.HAL_UART_MspInit)) +

                                                                                                                    HAL_UART_MspInit (Thumb, 126 bytes, Stack size 40 bytes, stm32f0xx_hal_msp.o(i.HAL_UART_MspInit))

                                                                                                                    [Stack]

                                                                                                                    • Max Depth = 64
                                                                                                                    • Call Chain = HAL_UART_MspInit ⇒ HAL_GPIO_Init
                                                                                                                    -
                                                                                                                    [Calls]
                                                                                                                    • >>   HAL_NVIC_SetPriority -
                                                                                                                    • >>   HAL_NVIC_EnableIRQ +
                                                                                                                      [Calls]
                                                                                                                      • >>   HAL_NVIC_SetPriority +
                                                                                                                      • >>   HAL_NVIC_EnableIRQ
                                                                                                                      • >>   HAL_GPIO_Init
                                                                                                                      -
                                                                                                                      [Called By]
                                                                                                                      • >>   HAL_UART_Init +
                                                                                                                        [Called By]
                                                                                                                        • >>   HAL_UART_Init
                                                                                                                        -

                                                                                                                        HAL_UART_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_RxCpltCallback)) -

                                                                                                                        [Called By]

                                                                                                                        • >>   UART_Receive_IT +

                                                                                                                          HAL_UART_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_RxCpltCallback)) +

                                                                                                                          [Called By]

                                                                                                                          • >>   UART_Receive_IT
                                                                                                                          -

                                                                                                                          HAL_UART_Transmit (Thumb, 200 bytes, Stack size 48 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit)) +

                                                                                                                          HAL_UART_Transmit (Thumb, 200 bytes, Stack size 48 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit))

                                                                                                                          [Stack]

                                                                                                                          • Max Depth = 88
                                                                                                                          • Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout

                                                                                                                          [Calls]
                                                                                                                          • >>   HAL_GetTick -
                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout

                                                                                                                          [Called By]
                                                                                                                          • >>   fputc
                                                                                                                          -

                                                                                                                          HAL_UART_Transmit_IT (Thumb, 88 bytes, Stack size 12 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT)) +

                                                                                                                          HAL_UART_Transmit_IT (Thumb, 88 bytes, Stack size 12 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT))

                                                                                                                          [Stack]

                                                                                                                          • Max Depth = 12
                                                                                                                          • Call Chain = HAL_UART_Transmit_IT
                                                                                                                          -
                                                                                                                          [Called By]
                                                                                                                          • >>   microsoft_serial_mouse_update +
                                                                                                                            [Called By]
                                                                                                                            • >>   microsoft_serial_mouse_update
                                                                                                                            -

                                                                                                                            HAL_UART_TxCpltCallback (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.HAL_UART_TxCpltCallback)) -

                                                                                                                            [Called By]

                                                                                                                            • >>   UART_EndTransmit_IT +

                                                                                                                              HAL_UART_TxCpltCallback (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.HAL_UART_TxCpltCallback)) +

                                                                                                                              [Called By]

                                                                                                                              • >>   UART_EndTransmit_IT

                                                                                                                              HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_it.o(i.HardFault_Handler)) @@ -739,7 +727,7 @@ Global Symbols

                                                                                                                              SPI1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.SPI1_IRQHandler))

                                                                                                                              [Stack]

                                                                                                                              • Max Depth = 48
                                                                                                                              • Call Chain = SPI1_IRQHandler ⇒ HAL_SPI_IRQHandler ⇒ HAL_DMA_Abort_IT
                                                                                                                              -
                                                                                                                              [Calls]
                                                                                                                              • >>   HAL_SPI_IRQHandler +
                                                                                                                                [Calls]
                                                                                                                                • >>   HAL_SPI_IRQHandler

                                                                                                                                [Address Reference Count : 1]
                                                                                                                                • startup_stm32f072xb.o(RESET)
                                                                                                                                @@ -749,22 +737,22 @@ Global Symbols

                                                                                                                                SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.SysTick_Handler))

                                                                                                                                [Stack]

                                                                                                                                • Max Depth = 16
                                                                                                                                • Call Chain = SysTick_Handler ⇒ HAL_SYSTICK_IRQHandler
                                                                                                                                -
                                                                                                                                [Calls]
                                                                                                                                • >>   HAL_SYSTICK_IRQHandler -
                                                                                                                                • >>   HAL_IncTick +
                                                                                                                                  [Calls]
                                                                                                                                  • >>   HAL_SYSTICK_IRQHandler +
                                                                                                                                  • >>   HAL_IncTick

                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                  • startup_stm32f072xb.o(RESET)
                                                                                                                                  -

                                                                                                                                  SystemClock_Config (Thumb, 108 bytes, Stack size 112 bytes, main.o(i.SystemClock_Config)) +

                                                                                                                                  SystemClock_Config (Thumb, 108 bytes, Stack size 112 bytes, main.o(i.SystemClock_Config))

                                                                                                                                  [Stack]

                                                                                                                                  • Max Depth = 196
                                                                                                                                  • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                                                                                                  -
                                                                                                                                  [Calls]
                                                                                                                                  • >>   HAL_SYSTICK_Config -
                                                                                                                                  • >>   HAL_SYSTICK_CLKSourceConfig -
                                                                                                                                  • >>   HAL_RCC_OscConfig -
                                                                                                                                  • >>   HAL_RCC_GetHCLKFreq -
                                                                                                                                  • >>   HAL_RCC_ClockConfig -
                                                                                                                                  • >>   HAL_RCCEx_PeriphCLKConfig -
                                                                                                                                  • >>   HAL_NVIC_SetPriority -
                                                                                                                                  • >>   __aeabi_uidivmod +
                                                                                                                                    [Calls]
                                                                                                                                    • >>   HAL_SYSTICK_Config +
                                                                                                                                    • >>   HAL_SYSTICK_CLKSourceConfig +
                                                                                                                                    • >>   HAL_RCC_OscConfig +
                                                                                                                                    • >>   HAL_RCC_GetHCLKFreq +
                                                                                                                                    • >>   HAL_RCC_ClockConfig +
                                                                                                                                    • >>   HAL_RCCEx_PeriphCLKConfig +
                                                                                                                                    • >>   HAL_NVIC_SetPriority +
                                                                                                                                    • >>   __aeabi_uidivmod

                                                                                                                                    [Called By]
                                                                                                                                    • >>   main
                                                                                                                                    @@ -772,129 +760,129 @@ Global Symbols

                                                                                                                                    SystemInit (Thumb, 76 bytes, Stack size 0 bytes, system_stm32f0xx.o(i.SystemInit))
                                                                                                                                    [Address Reference Count : 1]

                                                                                                                                    • startup_stm32f072xb.o(.text)
                                                                                                                                    -

                                                                                                                                    TIM_Base_SetConfig (Thumb, 124 bytes, Stack size 20 bytes, stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig)) +

                                                                                                                                    TIM_Base_SetConfig (Thumb, 124 bytes, Stack size 20 bytes, stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig))

                                                                                                                                    [Stack]

                                                                                                                                    • Max Depth = 20
                                                                                                                                    • Call Chain = TIM_Base_SetConfig
                                                                                                                                    -
                                                                                                                                    [Called By]
                                                                                                                                    • >>   HAL_TIM_Base_Init +
                                                                                                                                      [Called By]
                                                                                                                                      • >>   HAL_TIM_Base_Init
                                                                                                                                      -

                                                                                                                                      TIM_ETR_SetConfig (Thumb, 22 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig)) +

                                                                                                                                      TIM_ETR_SetConfig (Thumb, 22 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig))

                                                                                                                                      [Stack]

                                                                                                                                      • Max Depth = 12
                                                                                                                                      • Call Chain = TIM_ETR_SetConfig
                                                                                                                                      -
                                                                                                                                      [Called By]
                                                                                                                                      • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                        [Called By]
                                                                                                                                        • >>   HAL_TIM_ConfigClockSource
                                                                                                                                        -

                                                                                                                                        UART_AdvFeatureConfig (Thumb, 202 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig)) +

                                                                                                                                        UART_AdvFeatureConfig (Thumb, 202 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig))

                                                                                                                                        [Stack]

                                                                                                                                        • Max Depth = 8
                                                                                                                                        • Call Chain = UART_AdvFeatureConfig
                                                                                                                                        -
                                                                                                                                        [Called By]
                                                                                                                                        • >>   HAL_UART_Init +
                                                                                                                                          [Called By]
                                                                                                                                          • >>   HAL_UART_Init
                                                                                                                                          -

                                                                                                                                          UART_CheckIdleState (Thumb, 102 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_CheckIdleState)) +

                                                                                                                                          UART_CheckIdleState (Thumb, 102 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_CheckIdleState))

                                                                                                                                          [Stack]

                                                                                                                                          • Max Depth = 64
                                                                                                                                          • Call Chain = UART_CheckIdleState ⇒ UART_WaitOnFlagUntilTimeout

                                                                                                                                          [Calls]
                                                                                                                                          • >>   HAL_GetTick -
                                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout
                                                                                                                                          -
                                                                                                                                          [Called By]
                                                                                                                                          • >>   HAL_UART_Init +
                                                                                                                                            [Called By]
                                                                                                                                            • >>   HAL_UART_Init
                                                                                                                                            -

                                                                                                                                            UART_EndTransmit_IT (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT)) +

                                                                                                                                            UART_EndTransmit_IT (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT))

                                                                                                                                            [Stack]

                                                                                                                                            • Max Depth = 8
                                                                                                                                            • Call Chain = UART_EndTransmit_IT
                                                                                                                                            -
                                                                                                                                            [Calls]
                                                                                                                                            • >>   HAL_UART_TxCpltCallback +
                                                                                                                                              [Calls]
                                                                                                                                              • >>   HAL_UART_TxCpltCallback
                                                                                                                                              -
                                                                                                                                              [Called By]
                                                                                                                                              • >>   HAL_UART_IRQHandler +
                                                                                                                                                [Called By]
                                                                                                                                                • >>   HAL_UART_IRQHandler
                                                                                                                                                -

                                                                                                                                                UART_Receive_IT (Thumb, 122 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.UART_Receive_IT)) +

                                                                                                                                                UART_Receive_IT (Thumb, 122 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.UART_Receive_IT))

                                                                                                                                                [Stack]

                                                                                                                                                • Max Depth = 16
                                                                                                                                                • Call Chain = UART_Receive_IT
                                                                                                                                                -
                                                                                                                                                [Calls]
                                                                                                                                                • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   HAL_UART_RxCpltCallback
                                                                                                                                                  -
                                                                                                                                                  [Called By]
                                                                                                                                                  • >>   HAL_UART_IRQHandler +
                                                                                                                                                    [Called By]
                                                                                                                                                    • >>   HAL_UART_IRQHandler
                                                                                                                                                    -

                                                                                                                                                    UART_SetConfig (Thumb, 316 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_SetConfig)) +

                                                                                                                                                    UART_SetConfig (Thumb, 316 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_SetConfig))

                                                                                                                                                    [Stack]

                                                                                                                                                    • Max Depth = 84
                                                                                                                                                    • Call Chain = UART_SetConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                                                                                                                    -
                                                                                                                                                    [Calls]
                                                                                                                                                    • >>   HAL_RCC_GetSysClockFreq -
                                                                                                                                                    • >>   HAL_RCC_GetPCLK1Freq -
                                                                                                                                                    • >>   __aeabi_uidivmod +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   __aeabi_uidivmod +
                                                                                                                                                      • >>   HAL_RCC_GetSysClockFreq +
                                                                                                                                                      • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                                      -
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   HAL_UART_Init +
                                                                                                                                                        [Called By]
                                                                                                                                                        • >>   HAL_UART_Init
                                                                                                                                                        -

                                                                                                                                                        UART_Transmit_IT (Thumb, 102 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.UART_Transmit_IT)) -

                                                                                                                                                        [Called By]

                                                                                                                                                        • >>   HAL_UART_IRQHandler +

                                                                                                                                                          UART_Transmit_IT (Thumb, 102 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.UART_Transmit_IT)) +

                                                                                                                                                          [Called By]

                                                                                                                                                          • >>   HAL_UART_IRQHandler
                                                                                                                                                          -

                                                                                                                                                          UART_WaitOnFlagUntilTimeout (Thumb, 98 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout)) +

                                                                                                                                                          UART_WaitOnFlagUntilTimeout (Thumb, 98 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))

                                                                                                                                                          [Stack]

                                                                                                                                                          • Max Depth = 40
                                                                                                                                                          • Call Chain = UART_WaitOnFlagUntilTimeout

                                                                                                                                                          [Calls]
                                                                                                                                                          • >>   HAL_GetTick
                                                                                                                                                          -
                                                                                                                                                          [Called By]
                                                                                                                                                          • >>   HAL_UART_Transmit -
                                                                                                                                                          • >>   UART_CheckIdleState +
                                                                                                                                                            [Called By]
                                                                                                                                                            • >>   HAL_UART_Transmit +
                                                                                                                                                            • >>   UART_CheckIdleState

                                                                                                                                                            USART3_4_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.USART3_4_IRQHandler))

                                                                                                                                                            [Stack]

                                                                                                                                                            • Max Depth = 48
                                                                                                                                                            • Call Chain = USART3_4_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ HAL_DMA_Abort_IT
                                                                                                                                                            -
                                                                                                                                                            [Calls]
                                                                                                                                                            • >>   HAL_UART_IRQHandler +
                                                                                                                                                              [Calls]
                                                                                                                                                              • >>   HAL_UART_IRQHandler

                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                              • startup_stm32f072xb.o(RESET)
                                                                                                                                                              -

                                                                                                                                                              __0printf$3 (Thumb, 24 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) -

                                                                                                                                                              [Calls]

                                                                                                                                                              • >>   _printf_core +

                                                                                                                                                                __0printf$3 (Thumb, 24 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) +

                                                                                                                                                                [Calls]

                                                                                                                                                                • >>   _printf_core
                                                                                                                                                                -

                                                                                                                                                                __1printf$3 (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) +

                                                                                                                                                                __1printf$3 (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) -

                                                                                                                                                                __2printf (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3)) +

                                                                                                                                                                __2printf (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))

                                                                                                                                                                [Stack]

                                                                                                                                                                • Max Depth = 24
                                                                                                                                                                • Call Chain = __2printf
                                                                                                                                                                -
                                                                                                                                                                [Called By]
                                                                                                                                                                • >>   spi_error_dump_reboot +
                                                                                                                                                                  [Called By]
                                                                                                                                                                  • >>   spi_error_dump_reboot
                                                                                                                                                                  • >>   main
                                                                                                                                                                  -

                                                                                                                                                                  __ARM_common_switch8 (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.__ARM_common_switch8)) +

                                                                                                                                                                  __ARM_common_switch8 (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.__ARM_common_switch8))

                                                                                                                                                                  [Stack]

                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                  • Call Chain = __ARM_common_switch8
                                                                                                                                                                  -
                                                                                                                                                                  [Called By]
                                                                                                                                                                  • >>   xtkb_press_key -
                                                                                                                                                                  • >>   ps2mouse_host_req_reply -
                                                                                                                                                                  • >>   keyboard_reply -
                                                                                                                                                                  • >>   handle_protocol_switch +
                                                                                                                                                                    [Called By]
                                                                                                                                                                    • >>   xtkb_press_key +
                                                                                                                                                                    • >>   ps2mouse_host_req_reply +
                                                                                                                                                                    • >>   keyboard_reply +
                                                                                                                                                                    • >>   handle_protocol_switch
                                                                                                                                                                    -

                                                                                                                                                                    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +

                                                                                                                                                                    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -

                                                                                                                                                                    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +

                                                                                                                                                                    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -

                                                                                                                                                                    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +

                                                                                                                                                                    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) -

                                                                                                                                                                    byte_to_int16_t (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.byte_to_int16_t)) -

                                                                                                                                                                    [Called By]

                                                                                                                                                                    • >>   HAL_SPI_TxRxCpltCallback +

                                                                                                                                                                      byte_to_int16_t (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.byte_to_int16_t)) +

                                                                                                                                                                      [Called By]

                                                                                                                                                                      • >>   HAL_SPI_TxRxCpltCallback
                                                                                                                                                                      -

                                                                                                                                                                      delay_us (Thumb, 20 bytes, Stack size 4 bytes, delay_us.o(i.delay_us)) +

                                                                                                                                                                      delay_us (Thumb, 20 bytes, Stack size 4 bytes, delay_us.o(i.delay_us))

                                                                                                                                                                      [Stack]

                                                                                                                                                                      • Max Depth = 4
                                                                                                                                                                      • Call Chain = delay_us
                                                                                                                                                                      -
                                                                                                                                                                      [Calls]
                                                                                                                                                                      • >>   micros +
                                                                                                                                                                        [Calls]
                                                                                                                                                                        • >>   micros
                                                                                                                                                                        -
                                                                                                                                                                        [Called By]
                                                                                                                                                                        • >>   xtkb_write -
                                                                                                                                                                        • >>   ps2mouse_write_nowait -
                                                                                                                                                                        • >>   ps2mouse_write_delay_start -
                                                                                                                                                                        • >>   ps2mouse_read -
                                                                                                                                                                        • >>   ps2kb_write_nowait -
                                                                                                                                                                        • >>   ps2kb_write -
                                                                                                                                                                        • >>   ps2kb_read +
                                                                                                                                                                          [Called By]
                                                                                                                                                                          • >>   xtkb_write +
                                                                                                                                                                          • >>   ps2mouse_write_nowait +
                                                                                                                                                                          • >>   ps2mouse_write_delay_start +
                                                                                                                                                                          • >>   ps2mouse_read +
                                                                                                                                                                          • >>   ps2kb_write_nowait +
                                                                                                                                                                          • >>   ps2kb_write +
                                                                                                                                                                          • >>   ps2kb_read
                                                                                                                                                                          -

                                                                                                                                                                          delay_us_init (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init)) +

                                                                                                                                                                          delay_us_init (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))

                                                                                                                                                                          [Stack]

                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                          • Call Chain = delay_us_init
                                                                                                                                                                          -
                                                                                                                                                                          [Calls]
                                                                                                                                                                          • >>   HAL_TIM_Base_Start +
                                                                                                                                                                            [Calls]
                                                                                                                                                                            • >>   HAL_TIM_Base_Start

                                                                                                                                                                            [Called By]
                                                                                                                                                                            • >>   main
                                                                                                                                                                            @@ -902,92 +890,92 @@ Global Symbols

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

                                                                                                                                                                            [Stack]

                                                                                                                                                                            • Max Depth = 104
                                                                                                                                                                            • Call Chain = fputc ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                            -
                                                                                                                                                                            [Calls]
                                                                                                                                                                            • >>   HAL_UART_Transmit +
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   HAL_UART_Transmit

                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                              • printf3.o(i.__0printf$3)
                                                                                                                                                                              -

                                                                                                                                                                              gamepad_buf_add (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.gamepad_buf_add)) +

                                                                                                                                                                              gamepad_buf_add (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.gamepad_buf_add))

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 36
                                                                                                                                                                              • Call Chain = gamepad_buf_add ⇒ gamepad_buf_is_full ⇒ __aeabi_uidivmod
                                                                                                                                                                              -
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   gamepad_buf_is_full -
                                                                                                                                                                              • >>   __aeabi_memcpy -
                                                                                                                                                                              • >>   __aeabi_uidivmod +
                                                                                                                                                                                [Calls]
                                                                                                                                                                                • >>   gamepad_buf_is_full +
                                                                                                                                                                                • >>   __aeabi_memcpy +
                                                                                                                                                                                • >>   __aeabi_uidivmod
                                                                                                                                                                                -
                                                                                                                                                                                [Called By]
                                                                                                                                                                                • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                  [Called By]
                                                                                                                                                                                  • >>   HAL_SPI_TxRxCpltCallback
                                                                                                                                                                                  -

                                                                                                                                                                                  gamepad_buf_init (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_init)) +

                                                                                                                                                                                  gamepad_buf_init (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_init))

                                                                                                                                                                                  [Stack]

                                                                                                                                                                                  • Max Depth = 28
                                                                                                                                                                                  • Call Chain = gamepad_buf_init ⇒ malloc
                                                                                                                                                                                  -
                                                                                                                                                                                  [Calls]
                                                                                                                                                                                  • >>   gamepad_buf_reset -
                                                                                                                                                                                  • >>   malloc +
                                                                                                                                                                                    [Calls]
                                                                                                                                                                                    • >>   gamepad_buf_reset +
                                                                                                                                                                                    • >>   malloc

                                                                                                                                                                                    [Called By]
                                                                                                                                                                                    • >>   main
                                                                                                                                                                                    -

                                                                                                                                                                                    gamepad_buf_is_full (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_is_full)) +

                                                                                                                                                                                    gamepad_buf_is_full (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_is_full))

                                                                                                                                                                                    [Stack]

                                                                                                                                                                                    • Max Depth = 20
                                                                                                                                                                                    • Call Chain = gamepad_buf_is_full ⇒ __aeabi_uidivmod
                                                                                                                                                                                    -
                                                                                                                                                                                    [Calls]
                                                                                                                                                                                    • >>   __aeabi_uidivmod +
                                                                                                                                                                                      [Calls]
                                                                                                                                                                                      • >>   __aeabi_uidivmod
                                                                                                                                                                                      -
                                                                                                                                                                                      [Called By]
                                                                                                                                                                                      • >>   gamepad_buf_add +
                                                                                                                                                                                        [Called By]
                                                                                                                                                                                        • >>   gamepad_buf_add
                                                                                                                                                                                        -

                                                                                                                                                                                        gamepad_buf_peek (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.gamepad_buf_peek)) -

                                                                                                                                                                                        [Called By]

                                                                                                                                                                                        • >>   gamepad_update +

                                                                                                                                                                                          gamepad_buf_peek (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.gamepad_buf_peek)) +

                                                                                                                                                                                          [Called By]

                                                                                                                                                                                          • >>   gamepad_update
                                                                                                                                                                                          -

                                                                                                                                                                                          gamepad_buf_pop (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_pop)) +

                                                                                                                                                                                          gamepad_buf_pop (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_pop))

                                                                                                                                                                                          [Stack]

                                                                                                                                                                                          • Max Depth = 20
                                                                                                                                                                                          • Call Chain = gamepad_buf_pop ⇒ __aeabi_uidivmod
                                                                                                                                                                                          -
                                                                                                                                                                                          [Calls]
                                                                                                                                                                                          • >>   __aeabi_uidivmod +
                                                                                                                                                                                            [Calls]
                                                                                                                                                                                            • >>   __aeabi_uidivmod
                                                                                                                                                                                            -
                                                                                                                                                                                            [Called By]
                                                                                                                                                                                            • >>   gamepad_update +
                                                                                                                                                                                              [Called By]
                                                                                                                                                                                              • >>   gamepad_update
                                                                                                                                                                                              -

                                                                                                                                                                                              gamepad_buf_reset (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_reset)) +

                                                                                                                                                                                              gamepad_buf_reset (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_reset))

                                                                                                                                                                                              [Stack]

                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                              • Call Chain = gamepad_buf_reset

                                                                                                                                                                                              [Calls]
                                                                                                                                                                                              • >>   __aeabi_memclr
                                                                                                                                                                                              -
                                                                                                                                                                                              [Called By]
                                                                                                                                                                                              • >>   gamepad_buf_init +
                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                • >>   gamepad_buf_init
                                                                                                                                                                                                -

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

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

                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                • Max Depth = 160
                                                                                                                                                                                                • Call Chain = gamepad_update ⇒ mcp4451_write_wiper ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
                                                                                                                                                                                                -
                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                • >>   mcp4451_write_wiper -
                                                                                                                                                                                                • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                • >>   gamepad_buf_pop -
                                                                                                                                                                                                • >>   gamepad_buf_peek +
                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                  • >>   mcp4451_write_wiper +
                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                  • >>   gamepad_buf_pop +
                                                                                                                                                                                                  • >>   gamepad_buf_peek

                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                  -

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

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

                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                  • Max Depth = 40
                                                                                                                                                                                                  • Call Chain = gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                                                                                                                                                  -
                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                  • >>   mcp4451_reset -
                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                    • >>   mcp4451_reset +
                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                    -
                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                    • >>   handle_protocol_switch +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   handle_protocol_switch
                                                                                                                                                                                                      -

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

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

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 56
                                                                                                                                                                                                      • Call Chain = handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   xtkb_release_lines -
                                                                                                                                                                                                      • >>   xtkb_enable -
                                                                                                                                                                                                      • >>   ps2mouse_reset -
                                                                                                                                                                                                      • >>   ps2mouse_release_lines -
                                                                                                                                                                                                      • >>   ps2mouse_init -
                                                                                                                                                                                                      • >>   ps2kb_reset -
                                                                                                                                                                                                      • >>   ps2kb_release_lines -
                                                                                                                                                                                                      • >>   ps2kb_init -
                                                                                                                                                                                                      • >>   __ARM_common_switch8 -
                                                                                                                                                                                                      • >>   gameport_init +
                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   xtkb_release_lines +
                                                                                                                                                                                                        • >>   xtkb_enable +
                                                                                                                                                                                                        • >>   ps2mouse_reset +
                                                                                                                                                                                                        • >>   ps2mouse_release_lines +
                                                                                                                                                                                                        • >>   ps2mouse_init +
                                                                                                                                                                                                        • >>   ps2kb_reset +
                                                                                                                                                                                                        • >>   ps2kb_release_lines +
                                                                                                                                                                                                        • >>   ps2kb_init +
                                                                                                                                                                                                        • >>   __ARM_common_switch8 +
                                                                                                                                                                                                        • >>   gameport_init
                                                                                                                                                                                                        -
                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                        • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                          • >>   HAL_SPI_TxRxCpltCallback

                                                                                                                                                                                                          is_protocol_enabled (Thumb, 16 bytes, Stack size 0 bytes, main.o(i.is_protocol_enabled)) @@ -995,117 +983,115 @@ Global Symbols

                                                                                                                                                                                                        • >>   HAL_GPIO_EXTI_Callback
                                                                                                                                                                                                        -

                                                                                                                                                                                                        kb_buf_add (Thumb, 48 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_add)) +

                                                                                                                                                                                                        kb_buf_add (Thumb, 48 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_add))

                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                        • Max Depth = 36
                                                                                                                                                                                                        • Call Chain = kb_buf_add ⇒ kb_buf_is_full ⇒ __aeabi_uidivmod
                                                                                                                                                                                                        -
                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   kb_buf_is_full -
                                                                                                                                                                                                        • >>   __aeabi_uidivmod +
                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                          • >>   kb_buf_is_full +
                                                                                                                                                                                                          • >>   __aeabi_uidivmod
                                                                                                                                                                                                          -
                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                          • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   HAL_SPI_TxRxCpltCallback
                                                                                                                                                                                                            -

                                                                                                                                                                                                            kb_buf_init (Thumb, 32 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_init)) +

                                                                                                                                                                                                            kb_buf_init (Thumb, 32 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_init))

                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                            • Max Depth = 36
                                                                                                                                                                                                            • Call Chain = kb_buf_init ⇒ malloc
                                                                                                                                                                                                            -
                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                            • >>   kb_buf_reset -
                                                                                                                                                                                                            • >>   malloc +
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   kb_buf_reset +
                                                                                                                                                                                                              • >>   malloc

                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                              -

                                                                                                                                                                                                              kb_buf_is_full (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_is_full)) +

                                                                                                                                                                                                              kb_buf_is_full (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_is_full))

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 20
                                                                                                                                                                                                              • Call Chain = kb_buf_is_full ⇒ __aeabi_uidivmod
                                                                                                                                                                                                              -
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   __aeabi_uidivmod
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                • >>   kb_buf_add +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   kb_buf_add
                                                                                                                                                                                                                  -

                                                                                                                                                                                                                  kb_buf_peek (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek)) +

                                                                                                                                                                                                                  kb_buf_peek (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                  • Call Chain = kb_buf_peek
                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   xtkb_update -
                                                                                                                                                                                                                  • >>   ps2kb_update +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   xtkb_update +
                                                                                                                                                                                                                    • >>   ps2kb_update
                                                                                                                                                                                                                    -

                                                                                                                                                                                                                    kb_buf_pop (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_pop)) +

                                                                                                                                                                                                                    kb_buf_pop (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_pop))

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 20
                                                                                                                                                                                                                    • Call Chain = kb_buf_pop ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                    -
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                      • >>   __aeabi_uidivmod
                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                      • >>   xtkb_update -
                                                                                                                                                                                                                      • >>   ps2kb_update +
                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                        • >>   xtkb_update +
                                                                                                                                                                                                                        • >>   ps2kb_update
                                                                                                                                                                                                                        -

                                                                                                                                                                                                                        kb_buf_reset (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset)) +

                                                                                                                                                                                                                        kb_buf_reset (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))

                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                        • Max Depth = 8
                                                                                                                                                                                                                        • Call Chain = kb_buf_reset

                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                        • >>   __aeabi_memclr
                                                                                                                                                                                                                        -
                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                        • >>   kb_buf_init +
                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                          • >>   kb_buf_init
                                                                                                                                                                                                                          -

                                                                                                                                                                                                                          keyboard_reply (Thumb, 250 bytes, Stack size 16 bytes, ps2kb.o(i.keyboard_reply)) +

                                                                                                                                                                                                                          keyboard_reply (Thumb, 250 bytes, Stack size 16 bytes, ps2kb.o(i.keyboard_reply))

                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                          • Max Depth = 72
                                                                                                                                                                                                                          • Call Chain = keyboard_reply ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                          • >>   ps2kb_write -
                                                                                                                                                                                                                          • >>   ps2kb_reset -
                                                                                                                                                                                                                          • >>   ps2kb_read -
                                                                                                                                                                                                                          • >>   __ARM_common_switch8 +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   ps2kb_write +
                                                                                                                                                                                                                            • >>   ps2kb_reset +
                                                                                                                                                                                                                            • >>   ps2kb_read +
                                                                                                                                                                                                                            • >>   __ARM_common_switch8
                                                                                                                                                                                                                            -
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   ps2kb_update +
                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                              • >>   ps2kb_update
                                                                                                                                                                                                                              -

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

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

                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                              • Max Depth = 212
                                                                                                                                                                                                                              • Call Chain = main ⇒ SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                              • >>   MX_USART3_UART_Init -
                                                                                                                                                                                                                              • >>   MX_USART1_UART_Init -
                                                                                                                                                                                                                              • >>   MX_TIM2_Init -
                                                                                                                                                                                                                              • >>   MX_SPI1_Init -
                                                                                                                                                                                                                              • >>   MX_I2C2_Init -
                                                                                                                                                                                                                              • >>   MX_GPIO_Init -
                                                                                                                                                                                                                              • >>   xtkb_init -
                                                                                                                                                                                                                              • >>   xtkb_enable +
                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                • >>   MX_USART3_UART_Init +
                                                                                                                                                                                                                                • >>   MX_USART1_UART_Init +
                                                                                                                                                                                                                                • >>   MX_TIM2_Init +
                                                                                                                                                                                                                                • >>   MX_SPI1_Init +
                                                                                                                                                                                                                                • >>   MX_I2C2_Init +
                                                                                                                                                                                                                                • >>   MX_GPIO_Init +
                                                                                                                                                                                                                                • >>   xtkb_init +
                                                                                                                                                                                                                                • >>   xtkb_enable
                                                                                                                                                                                                                                • >>   HAL_Delay -
                                                                                                                                                                                                                                • >>   mcp4451_reset -
                                                                                                                                                                                                                                • >>   mcp4451_is_available -
                                                                                                                                                                                                                                • >>   ps2mouse_init -
                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                • >>   ps2kb_init -
                                                                                                                                                                                                                                • >>   mouse_buf_init -
                                                                                                                                                                                                                                • >>   kb_buf_init -
                                                                                                                                                                                                                                • >>   gamepad_buf_init -
                                                                                                                                                                                                                                • >>   delay_us_init -
                                                                                                                                                                                                                                • >>   HAL_SPI_TransmitReceive_IT -
                                                                                                                                                                                                                                • >>   HAL_Init -
                                                                                                                                                                                                                                • >>   HAL_IWDG_Refresh -
                                                                                                                                                                                                                                • >>   HAL_IWDG_Init -
                                                                                                                                                                                                                                • >>   HAL_GPIO_TogglePin -
                                                                                                                                                                                                                                • >>   xtkb_update -
                                                                                                                                                                                                                                • >>   spi_error_dump_reboot -
                                                                                                                                                                                                                                • >>   ps2mouse_update -
                                                                                                                                                                                                                                • >>   ps2kb_update -
                                                                                                                                                                                                                                • >>   protocol_status_lookup_init -
                                                                                                                                                                                                                                • >>   microsoft_serial_mouse_update +
                                                                                                                                                                                                                                • >>   mcp4451_reset +
                                                                                                                                                                                                                                • >>   mcp4451_is_available +
                                                                                                                                                                                                                                • >>   ps2mouse_init +
                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                • >>   ps2kb_init +
                                                                                                                                                                                                                                • >>   mouse_buf_init +
                                                                                                                                                                                                                                • >>   kb_buf_init +
                                                                                                                                                                                                                                • >>   gamepad_buf_init +
                                                                                                                                                                                                                                • >>   delay_us_init +
                                                                                                                                                                                                                                • >>   HAL_SPI_TransmitReceive_IT +
                                                                                                                                                                                                                                • >>   HAL_Init +
                                                                                                                                                                                                                                • >>   HAL_GPIO_TogglePin +
                                                                                                                                                                                                                                • >>   xtkb_update +
                                                                                                                                                                                                                                • >>   spi_error_dump_reboot +
                                                                                                                                                                                                                                • >>   ps2mouse_update +
                                                                                                                                                                                                                                • >>   ps2kb_update +
                                                                                                                                                                                                                                • >>   protocol_status_lookup_init +
                                                                                                                                                                                                                                • >>   microsoft_serial_mouse_update
                                                                                                                                                                                                                                • >>   is_protocol_enabled -
                                                                                                                                                                                                                                • >>   gamepad_update -
                                                                                                                                                                                                                                • >>   SystemClock_Config -
                                                                                                                                                                                                                                • >>   __aeabi_memclr4 -
                                                                                                                                                                                                                                • >>   __2printf +
                                                                                                                                                                                                                                • >>   gamepad_update +
                                                                                                                                                                                                                                • >>   SystemClock_Config +
                                                                                                                                                                                                                                • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                • >>   __2printf

                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                • entry9a.o(.ARM.Collect$$$$0000000B)
                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc)) +

                                                                                                                                                                                                                                malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))

                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                • Max Depth = 20
                                                                                                                                                                                                                                • Call Chain = malloc
                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                • >>   mouse_buf_init -
                                                                                                                                                                                                                                • >>   kb_buf_init -
                                                                                                                                                                                                                                • >>   gamepad_buf_init +
                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                  • >>   mouse_buf_init +
                                                                                                                                                                                                                                  • >>   kb_buf_init +
                                                                                                                                                                                                                                  • >>   gamepad_buf_init
                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                  mcp4451_is_available (Thumb, 26 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_is_available)) +

                                                                                                                                                                                                                                  mcp4451_is_available (Thumb, 26 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_is_available))

                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                  • Max Depth = 80
                                                                                                                                                                                                                                  • Call Chain = mcp4451_is_available ⇒ HAL_I2C_IsDeviceReady ⇒ I2C_WaitOnFlagUntilTimeout

                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                  • >>   HAL_I2C_IsDeviceReady @@ -1113,88 +1099,88 @@ Global Symbols
                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                    mcp4451_reset (Thumb, 38 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_reset)) +

                                                                                                                                                                                                                                    mcp4451_reset (Thumb, 38 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_reset))

                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                    • Max Depth = 24
                                                                                                                                                                                                                                    • Call Chain = mcp4451_reset ⇒ HAL_Delay

                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                    • >>   HAL_Delay -
                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin

                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                    • >>   main -
                                                                                                                                                                                                                                    • >>   gameport_init +
                                                                                                                                                                                                                                    • >>   gameport_init
                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                    mcp4451_write_wiper (Thumb, 46 bytes, Stack size 24 bytes, mcp4451.o(i.mcp4451_write_wiper)) +

                                                                                                                                                                                                                                    mcp4451_write_wiper (Thumb, 46 bytes, Stack size 24 bytes, mcp4451.o(i.mcp4451_write_wiper))

                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                    • Max Depth = 144
                                                                                                                                                                                                                                    • Call Chain = mcp4451_write_wiper ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed

                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                    • >>   HAL_I2C_Mem_Write
                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                    • >>   gamepad_update +
                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                      • >>   gamepad_update
                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                      micros (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros)) -

                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                      • >>   delay_us +

                                                                                                                                                                                                                                        micros (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros)) +

                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                        • >>   delay_us
                                                                                                                                                                                                                                        -

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

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

                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                        • Max Depth = 36
                                                                                                                                                                                                                                        • Call Chain = microsoft_serial_mouse_update ⇒ mouse_buf_pop ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                        • >>   mouse_buf_pop -
                                                                                                                                                                                                                                        • >>   mouse_buf_peek -
                                                                                                                                                                                                                                        • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   mouse_buf_pop +
                                                                                                                                                                                                                                          • >>   mouse_buf_peek +
                                                                                                                                                                                                                                          • >>   HAL_UART_Transmit_IT

                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                          • >>   main
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          mouse_buf_add (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.mouse_buf_add)) +

                                                                                                                                                                                                                                          mouse_buf_add (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.mouse_buf_add))

                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                          • Max Depth = 36
                                                                                                                                                                                                                                          • Call Chain = mouse_buf_add ⇒ mouse_buf_is_full ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   mouse_buf_is_full -
                                                                                                                                                                                                                                          • >>   __aeabi_memcpy -
                                                                                                                                                                                                                                          • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                            • >>   mouse_buf_is_full +
                                                                                                                                                                                                                                            • >>   __aeabi_memcpy +
                                                                                                                                                                                                                                            • >>   __aeabi_uidivmod
                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                            • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                              • >>   HAL_SPI_TxRxCpltCallback
                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                              mouse_buf_init (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_init)) +

                                                                                                                                                                                                                                              mouse_buf_init (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_init))

                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                              • Max Depth = 28
                                                                                                                                                                                                                                              • Call Chain = mouse_buf_init ⇒ malloc
                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                              • >>   mouse_buf_reset -
                                                                                                                                                                                                                                              • >>   malloc +
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   mouse_buf_reset +
                                                                                                                                                                                                                                                • >>   malloc

                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                mouse_buf_is_full (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_is_full)) +

                                                                                                                                                                                                                                                mouse_buf_is_full (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_is_full))

                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                • Max Depth = 20
                                                                                                                                                                                                                                                • Call Chain = mouse_buf_is_full ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                  • >>   __aeabi_uidivmod
                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                  • >>   mouse_buf_add +
                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                    • >>   mouse_buf_add
                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                    mouse_buf_peek (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_peek)) -

                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                    • >>   ps2mouse_update -
                                                                                                                                                                                                                                                    • >>   microsoft_serial_mouse_update +

                                                                                                                                                                                                                                                      mouse_buf_peek (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_peek)) +

                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                      • >>   ps2mouse_update +
                                                                                                                                                                                                                                                      • >>   microsoft_serial_mouse_update
                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                      mouse_buf_pop (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_pop)) +

                                                                                                                                                                                                                                                      mouse_buf_pop (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_pop))

                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                      • Max Depth = 20
                                                                                                                                                                                                                                                      • Call Chain = mouse_buf_pop ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                      • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                        • >>   __aeabi_uidivmod
                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                        • >>   ps2mouse_update -
                                                                                                                                                                                                                                                        • >>   microsoft_serial_mouse_update +
                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                          • >>   ps2mouse_update +
                                                                                                                                                                                                                                                          • >>   microsoft_serial_mouse_update
                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                          mouse_buf_reset (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset)) +

                                                                                                                                                                                                                                                          mouse_buf_reset (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset))

                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                          • Call Chain = mouse_buf_reset

                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                          • >>   __aeabi_memclr
                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                          • >>   mouse_buf_init +
                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                            • >>   mouse_buf_init
                                                                                                                                                                                                                                                            -

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

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

                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                                                            • Call Chain = protocol_status_lookup_init

                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                            • >>   __aeabi_memclr @@ -1202,440 +1188,443 @@ Global Symbols
                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                              ps2kb_get_bus_status (Thumb, 62 bytes, Stack size 16 bytes, ps2kb.o(i.ps2kb_get_bus_status)) +

                                                                                                                                                                                                                                                              ps2kb_get_bus_status (Thumb, 62 bytes, Stack size 16 bytes, ps2kb.o(i.ps2kb_get_bus_status))

                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                              • Max Depth = 16
                                                                                                                                                                                                                                                              • Call Chain = ps2kb_get_bus_status
                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                • >>   ps2kb_write -
                                                                                                                                                                                                                                                                • >>   ps2kb_read -
                                                                                                                                                                                                                                                                • >>   ps2kb_update +
                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                  • >>   ps2kb_write +
                                                                                                                                                                                                                                                                  • >>   ps2kb_read +
                                                                                                                                                                                                                                                                  • >>   ps2kb_update
                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                  ps2kb_init (Thumb, 22 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_init)) +

                                                                                                                                                                                                                                                                  ps2kb_init (Thumb, 22 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_init))

                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                  • Max Depth = 16
                                                                                                                                                                                                                                                                  • Call Chain = ps2kb_init ⇒ ps2kb_release_lines
                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                  • >>   ps2kb_reset -
                                                                                                                                                                                                                                                                  • >>   ps2kb_release_lines +
                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                    • >>   ps2kb_reset +
                                                                                                                                                                                                                                                                    • >>   ps2kb_release_lines

                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                    • >>   main -
                                                                                                                                                                                                                                                                    • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                    • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                    ps2kb_press_key (Thumb, 40 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key)) +

                                                                                                                                                                                                                                                                    ps2kb_press_key (Thumb, 40 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key))

                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                    • Max Depth = 72
                                                                                                                                                                                                                                                                    • Call Chain = ps2kb_press_key ⇒ ps2kb_press_key_scancode_2 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                    • >>   ps2kb_press_key_scancode_2 -
                                                                                                                                                                                                                                                                    • >>   ps2kb_press_key_scancode_1 +
                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                      • >>   ps2kb_press_key_scancode_2 +
                                                                                                                                                                                                                                                                      • >>   ps2kb_press_key_scancode_1
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                      • >>   ps2kb_update +
                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                        • >>   ps2kb_update
                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                        ps2kb_press_key_scancode_1 (Thumb, 44 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_1)) +

                                                                                                                                                                                                                                                                        ps2kb_press_key_scancode_1 (Thumb, 44 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_1))

                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                        • Max Depth = 64
                                                                                                                                                                                                                                                                        • Call Chain = ps2kb_press_key_scancode_1 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                        • >>   ps2kb_write +
                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                          • >>   ps2kb_write
                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                          • >>   ps2kb_press_key +
                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                            • >>   ps2kb_press_key
                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                            ps2kb_press_key_scancode_2 (Thumb, 396 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_2)) +

                                                                                                                                                                                                                                                                            ps2kb_press_key_scancode_2 (Thumb, 396 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_2))

                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                            • Max Depth = 64
                                                                                                                                                                                                                                                                            • Call Chain = ps2kb_press_key_scancode_2 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                            • >>   ps2kb_write +
                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                              • >>   ps2kb_write
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                              • >>   ps2kb_press_key +
                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                • >>   ps2kb_press_key
                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                ps2kb_read (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read)) +

                                                                                                                                                                                                                                                                                ps2kb_read (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))

                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                • Max Depth = 48
                                                                                                                                                                                                                                                                                • Call Chain = ps2kb_read ⇒ ps2kb_get_bus_status

                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                                                                • >>   ps2kb_get_bus_status -
                                                                                                                                                                                                                                                                                • >>   delay_us +
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                • >>   ps2kb_get_bus_status +
                                                                                                                                                                                                                                                                                • >>   delay_us
                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                • >>   keyboard_reply -
                                                                                                                                                                                                                                                                                • >>   ps2kb_update +
                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                  • >>   keyboard_reply +
                                                                                                                                                                                                                                                                                  • >>   ps2kb_update
                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                  ps2kb_release_lines (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_release_lines)) +

                                                                                                                                                                                                                                                                                  ps2kb_release_lines (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_release_lines))

                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                  • Call Chain = ps2kb_release_lines
                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                    • >>   ps2kb_write_nowait -
                                                                                                                                                                                                                                                                                    • >>   ps2kb_init -
                                                                                                                                                                                                                                                                                    • >>   ps2kb_update -
                                                                                                                                                                                                                                                                                    • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                      • >>   ps2kb_write_nowait +
                                                                                                                                                                                                                                                                                      • >>   ps2kb_init +
                                                                                                                                                                                                                                                                                      • >>   ps2kb_update +
                                                                                                                                                                                                                                                                                      • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                      ps2kb_reset (Thumb, 12 bytes, Stack size 0 bytes, ps2kb.o(i.ps2kb_reset)) -

                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                      • >>   ps2kb_init -
                                                                                                                                                                                                                                                                                      • >>   keyboard_reply -
                                                                                                                                                                                                                                                                                      • >>   handle_protocol_switch +

                                                                                                                                                                                                                                                                                        ps2kb_reset (Thumb, 12 bytes, Stack size 0 bytes, ps2kb.o(i.ps2kb_reset)) +

                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                        • >>   ps2kb_init +
                                                                                                                                                                                                                                                                                        • >>   keyboard_reply +
                                                                                                                                                                                                                                                                                        • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                        -

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

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

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 88
                                                                                                                                                                                                                                                                                        • Call Chain = ps2kb_update ⇒ ps2kb_press_key ⇒ ps2kb_press_key_scancode_2 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines

                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_release_lines -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_read -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_press_key -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_get_bus_status -
                                                                                                                                                                                                                                                                                        • >>   keyboard_reply -
                                                                                                                                                                                                                                                                                        • >>   kb_buf_pop -
                                                                                                                                                                                                                                                                                        • >>   kb_buf_peek -
                                                                                                                                                                                                                                                                                        • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                        • >>   ps2kb_release_lines +
                                                                                                                                                                                                                                                                                        • >>   ps2kb_read +
                                                                                                                                                                                                                                                                                        • >>   ps2kb_press_key +
                                                                                                                                                                                                                                                                                        • >>   ps2kb_get_bus_status +
                                                                                                                                                                                                                                                                                        • >>   keyboard_reply +
                                                                                                                                                                                                                                                                                        • >>   kb_buf_pop +
                                                                                                                                                                                                                                                                                        • >>   kb_buf_peek +
                                                                                                                                                                                                                                                                                        • >>   __aeabi_memclr4

                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   main
                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                        ps2kb_write (Thumb, 62 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write)) +

                                                                                                                                                                                                                                                                                        ps2kb_write (Thumb, 62 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write))

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 56
                                                                                                                                                                                                                                                                                        • Call Chain = ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines

                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_write_nowait -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_get_bus_status -
                                                                                                                                                                                                                                                                                        • >>   delay_us +
                                                                                                                                                                                                                                                                                        • >>   ps2kb_write_nowait +
                                                                                                                                                                                                                                                                                        • >>   ps2kb_get_bus_status +
                                                                                                                                                                                                                                                                                        • >>   delay_us
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   ps2kb_press_key_scancode_2 -
                                                                                                                                                                                                                                                                                        • >>   ps2kb_press_key_scancode_1 -
                                                                                                                                                                                                                                                                                        • >>   keyboard_reply +
                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                          • >>   ps2kb_press_key_scancode_2 +
                                                                                                                                                                                                                                                                                          • >>   ps2kb_press_key_scancode_1 +
                                                                                                                                                                                                                                                                                          • >>   keyboard_reply
                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                          ps2kb_write_nowait (Thumb, 286 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write_nowait)) +

                                                                                                                                                                                                                                                                                          ps2kb_write_nowait (Thumb, 286 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write_nowait))

                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                          • Call Chain = ps2kb_write_nowait ⇒ ps2kb_release_lines
                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                                                                          • >>   ps2kb_release_lines -
                                                                                                                                                                                                                                                                                          • >>   delay_us +
                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                            • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                            • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                            • >>   ps2kb_release_lines +
                                                                                                                                                                                                                                                                                            • >>   delay_us
                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                            • >>   ps2kb_write +
                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                              • >>   ps2kb_write
                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                              ps2mouse_get_bus_status (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status)) +

                                                                                                                                                                                                                                                                                              ps2mouse_get_bus_status (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status))

                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                                                                                                                              • Call Chain = ps2mouse_get_bus_status
                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                • >>   ps2mouse_wait_for_idle -
                                                                                                                                                                                                                                                                                                • >>   ps2mouse_read -
                                                                                                                                                                                                                                                                                                • >>   ps2mouse_update +
                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_wait_for_idle +
                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_read +
                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_update
                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                  ps2mouse_get_outgoing_data (Thumb, 166 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_get_outgoing_data)) +

                                                                                                                                                                                                                                                                                                  ps2mouse_get_outgoing_data (Thumb, 166 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_get_outgoing_data))

                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                  • Max Depth = 16
                                                                                                                                                                                                                                                                                                  • Call Chain = ps2mouse_get_outgoing_data

                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                  • >>   __aeabi_memclr
                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_update +
                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_update
                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                    ps2mouse_host_req_reply (Thumb, 402 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply)) -

                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                    • Max Depth = 64
                                                                                                                                                                                                                                                                                                    • Call Chain = ps2mouse_host_req_reply ⇒ ps2mouse_read ⇒ ps2mouse_get_bus_status +

                                                                                                                                                                                                                                                                                                      ps2mouse_host_req_reply (Thumb, 362 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply)) +

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 64
                                                                                                                                                                                                                                                                                                      • Call Chain = ps2mouse_host_req_reply ⇒ ps2mouse_write_delay_start ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   reset_accumulators -
                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_write_delay_start -
                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_write -
                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_restore_defaults -
                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_reset -
                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_read -
                                                                                                                                                                                                                                                                                                      • >>   __ARM_common_switch8 +
                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                        • >>   reset_accumulators +
                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_write_delay_start +
                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_write +
                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_restore_defaults +
                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_reset +
                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_read +
                                                                                                                                                                                                                                                                                                        • >>   __ARM_common_switch8
                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_update +
                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_update
                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                          ps2mouse_init (Thumb, 22 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_init)) +

                                                                                                                                                                                                                                                                                                          ps2mouse_init (Thumb, 22 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_init))

                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                          • Max Depth = 16
                                                                                                                                                                                                                                                                                                          • Call Chain = ps2mouse_init ⇒ ps2mouse_reset ⇒ ps2mouse_restore_defaults
                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_reset -
                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_release_lines +
                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_reset +
                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_release_lines

                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                            • >>   main -
                                                                                                                                                                                                                                                                                                            • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                                                            • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                            ps2mouse_read (Thumb, 244 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_read)) +

                                                                                                                                                                                                                                                                                                            ps2mouse_read (Thumb, 244 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_read))

                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                            • Max Depth = 40
                                                                                                                                                                                                                                                                                                            • Call Chain = ps2mouse_read ⇒ ps2mouse_get_bus_status
                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_get_bus_status +
                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_get_bus_status
                                                                                                                                                                                                                                                                                                              • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                                                                                              • >>   delay_us +
                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                              • >>   delay_us
                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_host_req_reply -
                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_update +
                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                • >>   ps2mouse_host_req_reply +
                                                                                                                                                                                                                                                                                                                • >>   ps2mouse_update
                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                ps2mouse_release_lines (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_release_lines)) +

                                                                                                                                                                                                                                                                                                                ps2mouse_release_lines (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_release_lines))

                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                                • Call Chain = ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_init -
                                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_update -
                                                                                                                                                                                                                                                                                                                  • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_write_nowait +
                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_init +
                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_update +
                                                                                                                                                                                                                                                                                                                    • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                    ps2mouse_reset (Thumb, 20 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_reset)) +

                                                                                                                                                                                                                                                                                                                    ps2mouse_reset (Thumb, 20 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_reset))

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                                                    • Call Chain = ps2mouse_reset ⇒ ps2mouse_restore_defaults
                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_restore_defaults +
                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_restore_defaults
                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_init -
                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_host_req_reply -
                                                                                                                                                                                                                                                                                                                      • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_init +
                                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_host_req_reply +
                                                                                                                                                                                                                                                                                                                        • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                        ps2mouse_restore_defaults (Thumb, 30 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_restore_defaults)) +

                                                                                                                                                                                                                                                                                                                        ps2mouse_restore_defaults (Thumb, 30 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_restore_defaults))

                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                        • Max Depth = 4
                                                                                                                                                                                                                                                                                                                        • Call Chain = ps2mouse_restore_defaults
                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                        • >>   reset_accumulators +
                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                          • >>   reset_accumulators
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_reset -
                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_host_req_reply +
                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_reset +
                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_host_req_reply
                                                                                                                                                                                                                                                                                                                            -

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

                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                            • Max Depth = 52
                                                                                                                                                                                                                                                                                                                            • Call Chain = ps2mouse_send_update ⇒ ps2mouse_write ⇒ ps2mouse_write_nowait ⇒ delay_us +

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

                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                              • Max Depth = 56
                                                                                                                                                                                                                                                                                                                              • Call Chain = ps2mouse_send_update ⇒ ps2mouse_write ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_write +
                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                • >>   ps2mouse_write
                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                • >>   ps2mouse_update +
                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_update
                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                  ps2mouse_update (Thumb, 90 bytes, Stack size 8 bytes, main.o(i.ps2mouse_update)) -

                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                  • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                  • Call Chain = ps2mouse_update ⇒ ps2mouse_host_req_reply ⇒ ps2mouse_read ⇒ ps2mouse_get_bus_status +

                                                                                                                                                                                                                                                                                                                                    ps2mouse_update (Thumb, 122 bytes, Stack size 8 bytes, main.o(i.ps2mouse_update)) +

                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                    • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                    • Call Chain = ps2mouse_update ⇒ ps2mouse_host_req_reply ⇒ ps2mouse_write_delay_start ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_send_update -
                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_release_lines -
                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_read -
                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_host_req_reply -
                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_get_outgoing_data -
                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_get_bus_status -
                                                                                                                                                                                                                                                                                                                                    • >>   mouse_buf_pop -
                                                                                                                                                                                                                                                                                                                                    • >>   mouse_buf_peek +
                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_send_update +
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_release_lines +
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_read +
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_host_req_reply +
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_get_outgoing_data +
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_get_bus_status +
                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                      • >>   mouse_buf_pop +
                                                                                                                                                                                                                                                                                                                                      • >>   mouse_buf_peek

                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                      ps2mouse_wait_for_idle (Thumb, 38 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_wait_for_idle)) +

                                                                                                                                                                                                                                                                                                                                      ps2mouse_wait_for_idle (Thumb, 38 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_wait_for_idle))

                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                      • Call Chain = ps2mouse_wait_for_idle ⇒ ps2mouse_get_bus_status
                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_get_bus_status +
                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_get_bus_status
                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GetTick
                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_write_delay_start -
                                                                                                                                                                                                                                                                                                                                        • >>   ps2mouse_write +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_write_delay_start +
                                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_write
                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                          ps2mouse_write (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write)) -

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 36
                                                                                                                                                                                                                                                                                                                                          • Call Chain = ps2mouse_write ⇒ ps2mouse_write_nowait ⇒ delay_us +

                                                                                                                                                                                                                                                                                                                                            ps2mouse_write (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write)) +

                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                            • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                            • Call Chain = ps2mouse_write ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_write_nowait -
                                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_wait_for_idle +
                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_write_nowait +
                                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_wait_for_idle
                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_send_update -
                                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_host_req_reply +
                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                • >>   ps2mouse_send_update +
                                                                                                                                                                                                                                                                                                                                                • >>   ps2mouse_host_req_reply
                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                ps2mouse_write_delay_start (Thumb, 34 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write_delay_start)) -

                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                • Max Depth = 36
                                                                                                                                                                                                                                                                                                                                                • Call Chain = ps2mouse_write_delay_start ⇒ ps2mouse_write_nowait ⇒ delay_us +

                                                                                                                                                                                                                                                                                                                                                  ps2mouse_write_delay_start (Thumb, 34 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write_delay_start)) +

                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                  • Call Chain = ps2mouse_write_delay_start ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_write_nowait -
                                                                                                                                                                                                                                                                                                                                                  • >>   ps2mouse_wait_for_idle -
                                                                                                                                                                                                                                                                                                                                                  • >>   delay_us +
                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_write_nowait +
                                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_wait_for_idle +
                                                                                                                                                                                                                                                                                                                                                    • >>   delay_us
                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                    • >>   ps2mouse_host_req_reply +
                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                      • >>   ps2mouse_host_req_reply
                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                      ps2mouse_write_nowait (Thumb, 282 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_write_nowait)) -

                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 28
                                                                                                                                                                                                                                                                                                                                                      • Call Chain = ps2mouse_write_nowait ⇒ delay_us +

                                                                                                                                                                                                                                                                                                                                                        ps2mouse_write_nowait (Thumb, 286 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_write_nowait)) +

                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                        • Call Chain = ps2mouse_write_nowait ⇒ ps2mouse_release_lines
                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                                                                                                                                        • >>   delay_us +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_release_lines +
                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                                                                          • >>   delay_us
                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_write_delay_start -
                                                                                                                                                                                                                                                                                                                                                          • >>   ps2mouse_write +
                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_write_delay_start +
                                                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_write
                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                            reset_accumulators (Thumb, 12 bytes, Stack size 0 bytes, ps2mouse.o(i.reset_accumulators)) -

                                                                                                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_restore_defaults -
                                                                                                                                                                                                                                                                                                                                                            • >>   ps2mouse_host_req_reply +

                                                                                                                                                                                                                                                                                                                                                              reset_accumulators (Thumb, 12 bytes, Stack size 0 bytes, ps2mouse.o(i.reset_accumulators)) +

                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_restore_defaults +
                                                                                                                                                                                                                                                                                                                                                              • >>   ps2mouse_host_req_reply
                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                              spi_error_dump_reboot (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot)) +

                                                                                                                                                                                                                                                                                                                                                              spi_error_dump_reboot (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))

                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                              • Call Chain = spi_error_dump_reboot ⇒ __2printf

                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_TogglePin -
                                                                                                                                                                                                                                                                                                                                                              • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_TogglePin +
                                                                                                                                                                                                                                                                                                                                                              • >>   __2printf

                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                              wait_for_clk_high (Thumb, 44 bytes, Stack size 16 bytes, xt_kb.o(i.wait_for_clk_high)) +

                                                                                                                                                                                                                                                                                                                                                              wait_for_clk_high (Thumb, 44 bytes, Stack size 16 bytes, xt_kb.o(i.wait_for_clk_high))

                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                              • Call Chain = wait_for_clk_high

                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                              • >>   xtkb_check_for_softreset +
                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                • >>   xtkb_check_for_softreset
                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                xtkb_check_for_softreset (Thumb, 60 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_check_for_softreset)) +

                                                                                                                                                                                                                                                                                                                                                                xtkb_check_for_softreset (Thumb, 60 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_check_for_softreset))

                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                • Call Chain = xtkb_check_for_softreset ⇒ xtkb_write ⇒ xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                • >>   xtkb_write -
                                                                                                                                                                                                                                                                                                                                                                • >>   wait_for_clk_high +
                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                  • >>   xtkb_write +
                                                                                                                                                                                                                                                                                                                                                                  • >>   wait_for_clk_high
                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                  • >>   xtkb_update +
                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                    • >>   xtkb_update
                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                    xtkb_enable (Thumb, 16 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_enable)) +

                                                                                                                                                                                                                                                                                                                                                                    xtkb_enable (Thumb, 16 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_enable))

                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = xtkb_enable ⇒ xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                    • >>   xtkb_reset_bus +
                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                      • >>   xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GetTick

                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                      • >>   main -
                                                                                                                                                                                                                                                                                                                                                                      • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                                                                                                                      • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                      xtkb_init (Thumb, 14 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_init)) +

                                                                                                                                                                                                                                                                                                                                                                      xtkb_init (Thumb, 14 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_init))

                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = xtkb_init

                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                      xtkb_press_key (Thumb, 116 bytes, Stack size 16 bytes, xt_kb.o(i.xtkb_press_key)) +

                                                                                                                                                                                                                                                                                                                                                                      xtkb_press_key (Thumb, 116 bytes, Stack size 16 bytes, xt_kb.o(i.xtkb_press_key))

                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = xtkb_press_key ⇒ xtkb_write ⇒ xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                      • >>   xtkb_write +
                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                        • >>   xtkb_write
                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                        • >>   __ARM_common_switch8 +
                                                                                                                                                                                                                                                                                                                                                                        • >>   __ARM_common_switch8
                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                        • >>   xtkb_update +
                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                          • >>   xtkb_update
                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                          xtkb_release_lines (Thumb, 26 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_release_lines)) +

                                                                                                                                                                                                                                                                                                                                                                          xtkb_release_lines (Thumb, 26 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_release_lines))

                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = xtkb_release_lines
                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                            • >>   handle_protocol_switch +
                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                              • >>   handle_protocol_switch
                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                              xtkb_reset_bus (Thumb, 26 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_reset_bus)) +

                                                                                                                                                                                                                                                                                                                                                                              xtkb_reset_bus (Thumb, 26 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_reset_bus))

                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   xtkb_write -
                                                                                                                                                                                                                                                                                                                                                                                • >>   xtkb_enable +
                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                  • >>   xtkb_write +
                                                                                                                                                                                                                                                                                                                                                                                  • >>   xtkb_enable
                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                  xtkb_update (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.xtkb_update)) +

                                                                                                                                                                                                                                                                                                                                                                                  xtkb_update (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.xtkb_update))

                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = xtkb_update ⇒ xtkb_press_key ⇒ xtkb_write ⇒ xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                  • >>   xtkb_press_key -
                                                                                                                                                                                                                                                                                                                                                                                  • >>   xtkb_check_for_softreset +
                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                    • >>   xtkb_press_key +
                                                                                                                                                                                                                                                                                                                                                                                    • >>   xtkb_check_for_softreset
                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                                                                    • >>   kb_buf_pop -
                                                                                                                                                                                                                                                                                                                                                                                    • >>   kb_buf_peek +
                                                                                                                                                                                                                                                                                                                                                                                    • >>   kb_buf_pop +
                                                                                                                                                                                                                                                                                                                                                                                    • >>   kb_buf_peek

                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                    xtkb_write (Thumb, 186 bytes, Stack size 16 bytes, xt_kb.o(i.xtkb_write)) +

                                                                                                                                                                                                                                                                                                                                                                                    xtkb_write (Thumb, 186 bytes, Stack size 16 bytes, xt_kb.o(i.xtkb_write))

                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = xtkb_write ⇒ xtkb_reset_bus
                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                    • >>   xtkb_reset_bus -
                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                                                                                                                                                                    • >>   delay_us +
                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                      • >>   xtkb_reset_bus +
                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                                                                                                      • >>   delay_us
                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                      • >>   xtkb_press_key -
                                                                                                                                                                                                                                                                                                                                                                                      • >>   xtkb_check_for_softreset +
                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                        • >>   xtkb_press_key +
                                                                                                                                                                                                                                                                                                                                                                                        • >>   xtkb_check_for_softreset

                                                                                                                                                                                                                                                                                                                                                                                        Local Symbols

                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                        MX_GPIO_Init (Thumb, 324 bytes, Stack size 48 bytes, main.o(i.MX_GPIO_Init)) +

                                                                                                                                                                                                                                                                                                                                                                                        MX_GPIO_Init (Thumb, 324 bytes, Stack size 48 bytes, main.o(i.MX_GPIO_Init))

                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_NVIC_SetPriority -
                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_NVIC_EnableIRQ +
                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_NVIC_EnableIRQ
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_Init

                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   main
                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                          MX_I2C2_Init (Thumb, 70 bytes, Stack size 8 bytes, main.o(i.MX_I2C2_Init)) +

                                                                                                                                                                                                                                                                                                                                                                                          MX_I2C2_Init (Thumb, 70 bytes, Stack size 8 bytes, main.o(i.MX_I2C2_Init))

                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 80
                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = MX_I2C2_Init ⇒ HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init

                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_I2C_Init -
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_I2CEx_ConfigDigitalFilter -
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_I2CEx_ConfigAnalogFilter +
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_I2CEx_ConfigDigitalFilter +
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_I2CEx_ConfigAnalogFilter

                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   main
                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                          MX_SPI1_Init (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.MX_SPI1_Init)) +

                                                                                                                                                                                                                                                                                                                                                                                          MX_SPI1_Init (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.MX_SPI1_Init))

                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 88
                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = MX_SPI1_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_SPI_Init +
                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_SPI_Init

                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   main
                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                            MX_TIM2_Init (Thumb, 80 bytes, Stack size 32 bytes, main.o(i.MX_TIM2_Init)) +

                                                                                                                                                                                                                                                                                                                                                                                            MX_TIM2_Init (Thumb, 80 bytes, Stack size 32 bytes, main.o(i.MX_TIM2_Init))

                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 68
                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = MX_TIM2_Init ⇒ HAL_TIM_ConfigClockSource ⇒ TIM_ETR_SetConfig
                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_TIM_ConfigClockSource -
                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_TIM_Base_Init -
                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_TIMEx_MasterConfigSynchronization +
                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_TIM_Base_Init +
                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_TIMEx_MasterConfigSynchronization

                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                              MX_USART1_UART_Init (Thumb, 60 bytes, Stack size 8 bytes, main.o(i.MX_USART1_UART_Init)) +

                                                                                                                                                                                                                                                                                                                                                                                              MX_USART1_UART_Init (Thumb, 60 bytes, Stack size 8 bytes, main.o(i.MX_USART1_UART_Init))

                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 108
                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_Init

                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                MX_USART3_UART_Init (Thumb, 78 bytes, Stack size 8 bytes, main.o(i.MX_USART3_UART_Init)) +

                                                                                                                                                                                                                                                                                                                                                                                                MX_USART3_UART_Init (Thumb, 78 bytes, Stack size 8 bytes, main.o(i.MX_USART3_UART_Init))

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 108
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = MX_USART3_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_Init

                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                  I2C_Flush_TXDR (Thumb, 34 bytes, Stack size 0 bytes, stm32f0xx_hal_i2c.o(i.I2C_Flush_TXDR)) -

                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                  • >>   I2C_IsAcknowledgeFailed +

                                                                                                                                                                                                                                                                                                                                                                                                    I2C_Flush_TXDR (Thumb, 34 bytes, Stack size 0 bytes, stm32f0xx_hal_i2c.o(i.I2C_Flush_TXDR)) +

                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                    • >>   I2C_IsAcknowledgeFailed
                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                    I2C_IsAcknowledgeFailed (Thumb, 110 bytes, Stack size 32 bytes, stm32f0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed)) +

                                                                                                                                                                                                                                                                                                                                                                                                    I2C_IsAcknowledgeFailed (Thumb, 110 bytes, Stack size 32 bytes, stm32f0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed))

                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = I2C_IsAcknowledgeFailed

                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   I2C_Flush_TXDR +
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   I2C_Flush_TXDR

                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   I2C_WaitOnTXISFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   I2C_WaitOnSTOPFlagUntilTimeout @@ -1672,7 +1661,7 @@ Local Symbols

                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]
                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = I2C_WaitOnSTOPFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed

                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   I2C_IsAcknowledgeFailed +
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   I2C_IsAcknowledgeFailed

                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_I2C_Mem_Write
                                                                                                                                                                                                                                                                                                                                                                                                      @@ -1681,7 +1670,7 @@ Local Symbols

                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]
                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed

                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   I2C_IsAcknowledgeFailed +
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   I2C_IsAcknowledgeFailed

                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_I2C_Mem_Write
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   I2C_RequestMemoryWrite @@ -1690,39 +1679,39 @@ Local Symbols

                                                                                                                                                                                                                                                                                                                                                                                                        SPI_2linesRxISR_16BIT (Thumb, 54 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT))

                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 104
                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = SPI_2linesRxISR_16BIT ⇒ SPI_CloseRxTx_ISR ⇒ HAL_SPI_TxRxCpltCallback ⇒ handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                          • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                          • stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)

                                                                                                                                                                                                                                                                                                                                                                                                          SPI_2linesRxISR_8BIT (Thumb, 94 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT))

                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 104
                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = SPI_2linesRxISR_8BIT ⇒ SPI_CloseRxTx_ISR ⇒ HAL_SPI_TxRxCpltCallback ⇒ handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                          • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                                                                                                                                                                            [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                            • stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)

                                                                                                                                                                                                                                                                                                                                                                                                            SPI_2linesTxISR_16BIT (Thumb, 52 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT))

                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 104
                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = SPI_2linesTxISR_16BIT ⇒ SPI_CloseRxTx_ISR ⇒ HAL_SPI_TxRxCpltCallback ⇒ handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                              • stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)

                                                                                                                                                                                                                                                                                                                                                                                                              SPI_2linesTxISR_8BIT (Thumb, 72 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT))

                                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 104
                                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = SPI_2linesTxISR_8BIT ⇒ SPI_CloseRxTx_ISR ⇒ HAL_SPI_TxRxCpltCallback ⇒ handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                • stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                SPI_CloseRxTx_ISR (Thumb, 82 bytes, Stack size 16 bytes, stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR)) +

                                                                                                                                                                                                                                                                                                                                                                                                                SPI_CloseRxTx_ISR (Thumb, 82 bytes, Stack size 16 bytes, stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR))

                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 96
                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = SPI_CloseRxTx_ISR ⇒ HAL_SPI_TxRxCpltCallback ⇒ handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay

                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   SPI_EndRxTxTransaction -
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SPI_TxRxCpltCallback -
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SPI_RxCpltCallback -
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SPI_RxCpltCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SPI_ErrorCallback

                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   SPI_2linesTxISR_8BIT
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   SPI_2linesTxISR_16BIT @@ -1733,71 +1722,71 @@ Local Symbols

                                                                                                                                                                                                                                                                                                                                                                                                                  SPI_DMAAbortOnError (Thumb, 18 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError))

                                                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = SPI_DMAAbortOnError
                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_SPI_ErrorCallback

                                                                                                                                                                                                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                    • stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler)
                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                    SPI_EndRxTxTransaction (Thumb, 76 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction)) +

                                                                                                                                                                                                                                                                                                                                                                                                                    SPI_EndRxTxTransaction (Thumb, 76 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction))

                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   SPI_WaitFlagStateUntilTimeout -
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   SPI_WaitFifoStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   SPI_WaitFifoStateUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   SPI_CloseRxTx_ISR
                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                        SPI_WaitFifoStateUntilTimeout (Thumb, 150 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout)) +

                                                                                                                                                                                                                                                                                                                                                                                                                        SPI_WaitFifoStateUntilTimeout (Thumb, 150 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout))

                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = SPI_WaitFifoStateUntilTimeout

                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GetTick
                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction
                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                          SPI_WaitFlagStateUntilTimeout (Thumb, 140 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout)) +

                                                                                                                                                                                                                                                                                                                                                                                                                          SPI_WaitFlagStateUntilTimeout (Thumb, 140 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout))

                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = SPI_WaitFlagStateUntilTimeout

                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GetTick
                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_EndRxTxTransaction
                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                            TIM_ITRx_SetConfig (Thumb, 16 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig)) -

                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_TIM_ConfigClockSource +

                                                                                                                                                                                                                                                                                                                                                                                                                              TIM_ITRx_SetConfig (Thumb, 16 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig)) +

                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_TIM_ConfigClockSource
                                                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                                                              TIM_TI1_ConfigInputStage (Thumb, 34 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage)) +

                                                                                                                                                                                                                                                                                                                                                                                                                              TIM_TI1_ConfigInputStage (Thumb, 34 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage))

                                                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = TIM_TI1_ConfigInputStage
                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_TIM_ConfigClockSource
                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                TIM_TI2_ConfigInputStage (Thumb, 38 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                TIM_TI2_ConfigInputStage (Thumb, 38 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage))

                                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = TIM_TI2_ConfigInputStage
                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_TIM_ConfigClockSource

                                                                                                                                                                                                                                                                                                                                                                                                                                  UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_DMAAbortOnError))

                                                                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = UART_DMAAbortOnError
                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_ErrorCallback

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler)
                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                    UART_EndRxTransfer (Thumb, 30 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.UART_EndRxTransfer)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                                                                                                                                                                                                      UART_EndRxTransfer (Thumb, 30 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.UART_EndRxTransfer)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                      NVIC_SetPriority (Thumb, 60 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.NVIC_SetPriority)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_SYSTICK_Config -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_NVIC_SetPriority +

                                                                                                                                                                                                                                                                                                                                                                                                                                        NVIC_SetPriority (Thumb, 60 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.NVIC_SetPriority)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_SYSTICK_Config +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_NVIC_SetPriority
                                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                                        _printf_core (Thumb, 456 bytes, Stack size 88 bytes, printf3.o(i._printf_core), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_uidivmod +

                                                                                                                                                                                                                                                                                                                                                                                                                                          _printf_core (Thumb, 456 bytes, Stack size 88 bytes, printf3.o(i._printf_core), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_uidivmod
                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __0printf$3 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __0printf$3

                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map index cf400b6..15c0f22 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map @@ -116,6 +116,7 @@ Section Cross References ps2mouse.o(i.ps2mouse_write_nowait) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin ps2mouse.o(i.ps2mouse_write_nowait) refers to delay_us.o(i.delay_us) for delay_us ps2mouse.o(i.ps2mouse_write_nowait) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin + ps2mouse.o(i.ps2mouse_write_nowait) refers to ps2mouse.o(i.ps2mouse_release_lines) for ps2mouse_release_lines ps2mouse.o(i.ps2mouse_write_nowait) refers to ps2mouse.o(.data) for .data ps2mouse.o(i.reset_accumulators) refers to ps2mouse.o(.data) for .data mcp4451.o(i.mcp4451_is_available) refers to stm32f0xx_hal_i2c.o(i.HAL_I2C_IsDeviceReady) for HAL_I2C_IsDeviceReady @@ -222,8 +223,6 @@ Section Cross References main.o(i.main) refers to main.o(i.MX_TIM2_Init) for MX_TIM2_Init main.o(i.main) refers to main.o(i.MX_USART1_UART_Init) for MX_USART1_UART_Init main.o(i.main) refers to main.o(i.MX_USART3_UART_Init) for MX_USART3_UART_Init - main.o(i.main) refers to stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Init) for HAL_IWDG_Init - main.o(i.main) refers to stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh) for HAL_IWDG_Refresh main.o(i.main) refers to printf3.o(i.__0printf$3) for __2printf main.o(i.main) refers to delay_us.o(i.delay_us_init) for delay_us_init main.o(i.main) refers to main.o(i.protocol_status_lookup_init) for protocol_status_lookup_init @@ -250,8 +249,8 @@ Section Cross References main.o(i.main) refers to main.o(i.gamepad_update) for gamepad_update main.o(i.main) refers to main.o(i.spi_error_dump_reboot) for spi_error_dump_reboot main.o(i.main) refers to main.o(.data) for .data - main.o(i.main) refers to main.o(.bss) for .bss main.o(i.main) refers to main.o(.constdata) for .constdata + main.o(i.main) refers to main.o(.bss) for .bss main.o(i.microsoft_serial_mouse_update) refers to stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT main.o(i.microsoft_serial_mouse_update) refers to helpers.o(i.mouse_buf_peek) for mouse_buf_peek main.o(i.microsoft_serial_mouse_update) refers to helpers.o(i.mouse_buf_pop) for mouse_buf_pop @@ -279,6 +278,7 @@ Section Cross References main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_host_req_reply) for ps2mouse_host_req_reply main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_send_update) for ps2mouse_send_update main.o(i.ps2mouse_update) refers to helpers.o(i.mouse_buf_pop) for mouse_buf_pop + main.o(i.ps2mouse_update) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin main.o(i.ps2mouse_update) refers to main.o(.data) for .data main.o(i.ps2mouse_update) refers to main.o(.bss) for .bss main.o(i.spi_error_dump_reboot) refers to printf3.o(i.__0printf$3) for __2printf @@ -1259,6 +1259,7 @@ Removing Unused input sections from the image. Removing main.o(.rev16_text), (4 bytes). Removing main.o(.revsh_text), (4 bytes). Removing main.o(i._Error_Handler), (2 bytes). + Removing main.o(.bss), (16 bytes). Removing main.o(.constdata), (1 bytes). Removing main.o(.constdata), (1 bytes). Removing main.o(.constdata), (1 bytes). @@ -1344,6 +1345,8 @@ Removing Unused input sections from the image. Removing stm32f0xx_hal_i2c_ex.o(i.HAL_I2CEx_EnableWakeUp), (66 bytes). Removing stm32f0xx_hal_iwdg.o(.rev16_text), (4 bytes). Removing stm32f0xx_hal_iwdg.o(.revsh_text), (4 bytes). + Removing stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Init), (100 bytes). + Removing stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh), (16 bytes). Removing stm32f0xx_hal_spi.o(.rev16_text), (4 bytes). Removing stm32f0xx_hal_spi.o(.revsh_text), (4 bytes). Removing stm32f0xx_hal_spi.o(i.HAL_SPI_Abort), (360 bytes). @@ -1717,7 +1720,7 @@ Removing Unused input sections from the image. Removing depilogue.o(.text), (190 bytes). Removing depilogue.o(i.__ARM_clz), (46 bytes). -475 unused section(s) (total 33084 bytes) removed from the image. +478 unused section(s) (total 33216 bytes) removed from the image. ============================================================================== @@ -1752,42 +1755,42 @@ Image Symbol Table ../Src/stm32f0xx_it.c 0x00000000 Number 0 stm32f0xx_it.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE - ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE ../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE @@ -1867,202 +1870,200 @@ Image Symbol Table i.HAL_I2C_IsDeviceReady 0x080004f8 Section 0 stm32f0xx_hal_i2c.o(i.HAL_I2C_IsDeviceReady) i.HAL_I2C_Mem_Write 0x08000614 Section 0 stm32f0xx_hal_i2c.o(i.HAL_I2C_Mem_Write) i.HAL_I2C_MspInit 0x08000768 Section 0 stm32f0xx_hal_msp.o(i.HAL_I2C_MspInit) - i.HAL_IWDG_Init 0x080007b4 Section 0 stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Init) - i.HAL_IWDG_Refresh 0x08000818 Section 0 stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh) - i.HAL_IncTick 0x08000828 Section 0 stm32f0xx_hal.o(i.HAL_IncTick) - i.HAL_Init 0x08000838 Section 0 stm32f0xx_hal.o(i.HAL_Init) - i.HAL_InitTick 0x08000858 Section 0 stm32f0xx_hal.o(i.HAL_InitTick) - i.HAL_MspInit 0x0800087c Section 0 stm32f0xx_hal_msp.o(i.HAL_MspInit) - i.HAL_NVIC_EnableIRQ 0x080008c0 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - i.HAL_NVIC_SetPriority 0x080008d4 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - i.HAL_RCCEx_PeriphCLKConfig 0x080008dc Section 0 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) - i.HAL_RCC_ClockConfig 0x080009fc Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - i.HAL_RCC_GetHCLKFreq 0x08000b50 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - i.HAL_RCC_GetPCLK1Freq 0x08000b5c Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - i.HAL_RCC_GetSysClockFreq 0x08000b7c Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - i.HAL_RCC_OscConfig 0x08000c04 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) - i.HAL_SPI_ErrorCallback 0x08000fdc Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) - i.HAL_SPI_IRQHandler 0x08000fe0 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) - i.HAL_SPI_Init 0x080010b4 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) - i.HAL_SPI_MspInit 0x0800116c Section 0 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) - i.HAL_SPI_RxCpltCallback 0x080011c0 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) - i.HAL_SPI_TransmitReceive_IT 0x080011c4 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) - i.HAL_SPI_TxRxCpltCallback 0x08001298 Section 0 main.o(i.HAL_SPI_TxRxCpltCallback) - i.HAL_SYSTICK_CLKSourceConfig 0x08001414 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) - i.HAL_SYSTICK_Callback 0x0800142c Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) - i.HAL_SYSTICK_Config 0x08001430 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) - i.HAL_SYSTICK_IRQHandler 0x08001460 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) - i.HAL_TIMEx_MasterConfigSynchronization 0x08001468 Section 0 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) - i.HAL_TIM_Base_Init 0x080014b0 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) - i.HAL_TIM_Base_MspInit 0x080014e4 Section 0 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) - i.HAL_TIM_Base_Start 0x08001508 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) - i.HAL_TIM_ConfigClockSource 0x08001520 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) - i.HAL_UARTEx_WakeupCallback 0x0800160e Section 0 stm32f0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback) - i.HAL_UART_ErrorCallback 0x08001610 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_ErrorCallback) - i.HAL_UART_IRQHandler 0x08001614 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler) - i.HAL_UART_Init 0x08001748 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Init) - i.HAL_UART_MspInit 0x080017b4 Section 0 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) - i.HAL_UART_RxCpltCallback 0x08001844 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_RxCpltCallback) - i.HAL_UART_Transmit 0x08001846 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) - i.HAL_UART_Transmit_IT 0x0800190e Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT) - i.HAL_UART_TxCpltCallback 0x08001968 Section 0 main.o(i.HAL_UART_TxCpltCallback) - i.HardFault_Handler 0x08001974 Section 0 stm32f0xx_it.o(i.HardFault_Handler) - i.I2C_Flush_TXDR 0x08001976 Section 0 stm32f0xx_hal_i2c.o(i.I2C_Flush_TXDR) - I2C_Flush_TXDR 0x08001977 Thumb Code 34 stm32f0xx_hal_i2c.o(i.I2C_Flush_TXDR) - i.I2C_IsAcknowledgeFailed 0x08001998 Section 0 stm32f0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) - I2C_IsAcknowledgeFailed 0x08001999 Thumb Code 110 stm32f0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) - i.I2C_RequestMemoryWrite 0x08001a0c Section 0 stm32f0xx_hal_i2c.o(i.I2C_RequestMemoryWrite) - I2C_RequestMemoryWrite 0x08001a0d Thumb Code 106 stm32f0xx_hal_i2c.o(i.I2C_RequestMemoryWrite) - i.I2C_TransferConfig 0x08001a78 Section 0 stm32f0xx_hal_i2c.o(i.I2C_TransferConfig) - I2C_TransferConfig 0x08001a79 Thumb Code 30 stm32f0xx_hal_i2c.o(i.I2C_TransferConfig) - i.I2C_WaitOnFlagUntilTimeout 0x08001a9c Section 0 stm32f0xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) - I2C_WaitOnFlagUntilTimeout 0x08001a9d Thumb Code 72 stm32f0xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) - i.I2C_WaitOnSTOPFlagUntilTimeout 0x08001ae4 Section 0 stm32f0xx_hal_i2c.o(i.I2C_WaitOnSTOPFlagUntilTimeout) - I2C_WaitOnSTOPFlagUntilTimeout 0x08001ae5 Thumb Code 78 stm32f0xx_hal_i2c.o(i.I2C_WaitOnSTOPFlagUntilTimeout) - i.I2C_WaitOnTXISFlagUntilTimeout 0x08001b32 Section 0 stm32f0xx_hal_i2c.o(i.I2C_WaitOnTXISFlagUntilTimeout) - I2C_WaitOnTXISFlagUntilTimeout 0x08001b33 Thumb Code 82 stm32f0xx_hal_i2c.o(i.I2C_WaitOnTXISFlagUntilTimeout) - i.MX_GPIO_Init 0x08001b84 Section 0 main.o(i.MX_GPIO_Init) - MX_GPIO_Init 0x08001b85 Thumb Code 324 main.o(i.MX_GPIO_Init) - i.MX_I2C2_Init 0x08001cdc Section 0 main.o(i.MX_I2C2_Init) - MX_I2C2_Init 0x08001cdd Thumb Code 70 main.o(i.MX_I2C2_Init) - i.MX_SPI1_Init 0x08001d30 Section 0 main.o(i.MX_SPI1_Init) - MX_SPI1_Init 0x08001d31 Thumb Code 52 main.o(i.MX_SPI1_Init) - i.MX_TIM2_Init 0x08001d6c Section 0 main.o(i.MX_TIM2_Init) - MX_TIM2_Init 0x08001d6d Thumb Code 80 main.o(i.MX_TIM2_Init) - i.MX_USART1_UART_Init 0x08001dc0 Section 0 main.o(i.MX_USART1_UART_Init) - MX_USART1_UART_Init 0x08001dc1 Thumb Code 60 main.o(i.MX_USART1_UART_Init) - i.MX_USART3_UART_Init 0x08001e0c Section 0 main.o(i.MX_USART3_UART_Init) - MX_USART3_UART_Init 0x08001e0d Thumb Code 78 main.o(i.MX_USART3_UART_Init) - i.NMI_Handler 0x08001e68 Section 0 stm32f0xx_it.o(i.NMI_Handler) - i.NVIC_SetPriority 0x08001e6c Section 0 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) - NVIC_SetPriority 0x08001e6d Thumb Code 60 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) - i.PendSV_Handler 0x08001eb0 Section 0 stm32f0xx_it.o(i.PendSV_Handler) - i.SPI1_IRQHandler 0x08001eb4 Section 0 stm32f0xx_it.o(i.SPI1_IRQHandler) - i.SPI_2linesRxISR_16BIT 0x08001ec4 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) - SPI_2linesRxISR_16BIT 0x08001ec5 Thumb Code 54 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) - i.SPI_2linesRxISR_8BIT 0x08001efa Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) - SPI_2linesRxISR_8BIT 0x08001efb Thumb Code 94 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) - i.SPI_2linesTxISR_16BIT 0x08001f58 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) - SPI_2linesTxISR_16BIT 0x08001f59 Thumb Code 52 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) - i.SPI_2linesTxISR_8BIT 0x08001f8c Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) - SPI_2linesTxISR_8BIT 0x08001f8d Thumb Code 72 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) - i.SPI_CloseRxTx_ISR 0x08001fd4 Section 0 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) - SPI_CloseRxTx_ISR 0x08001fd5 Thumb Code 82 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) - i.SPI_DMAAbortOnError 0x08002026 Section 0 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) - SPI_DMAAbortOnError 0x08002027 Thumb Code 18 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) - i.SPI_EndRxTxTransaction 0x08002038 Section 0 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) - SPI_EndRxTxTransaction 0x08002039 Thumb Code 76 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) - i.SPI_WaitFifoStateUntilTimeout 0x08002084 Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) - SPI_WaitFifoStateUntilTimeout 0x08002085 Thumb Code 150 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) - i.SPI_WaitFlagStateUntilTimeout 0x0800211a Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) - SPI_WaitFlagStateUntilTimeout 0x0800211b Thumb Code 140 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) - i.SVC_Handler 0x080021a6 Section 0 stm32f0xx_it.o(i.SVC_Handler) - i.SysTick_Handler 0x080021a8 Section 0 stm32f0xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x080021b4 Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x08002220 Section 0 system_stm32f0xx.o(i.SystemInit) - i.TIM_Base_SetConfig 0x0800227c Section 0 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) - i.TIM_ETR_SetConfig 0x08002310 Section 0 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) - i.TIM_ITRx_SetConfig 0x08002326 Section 0 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) - TIM_ITRx_SetConfig 0x08002327 Thumb Code 16 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) - i.TIM_TI1_ConfigInputStage 0x08002336 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) - TIM_TI1_ConfigInputStage 0x08002337 Thumb Code 34 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) - i.TIM_TI2_ConfigInputStage 0x08002358 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) - TIM_TI2_ConfigInputStage 0x08002359 Thumb Code 38 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) - i.UART_AdvFeatureConfig 0x0800237e Section 0 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) - i.UART_CheckIdleState 0x08002448 Section 0 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) - i.UART_DMAAbortOnError 0x080024bc Section 0 stm32f0xx_hal_uart.o(i.UART_DMAAbortOnError) - UART_DMAAbortOnError 0x080024bd Thumb Code 20 stm32f0xx_hal_uart.o(i.UART_DMAAbortOnError) - i.UART_EndRxTransfer 0x080024d0 Section 0 stm32f0xx_hal_uart.o(i.UART_EndRxTransfer) - UART_EndRxTransfer 0x080024d1 Thumb Code 30 stm32f0xx_hal_uart.o(i.UART_EndRxTransfer) - i.UART_EndTransmit_IT 0x080024ee Section 0 stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT) - i.UART_Receive_IT 0x08002508 Section 0 stm32f0xx_hal_uart.o(i.UART_Receive_IT) - i.UART_SetConfig 0x08002584 Section 0 stm32f0xx_hal_uart.o(i.UART_SetConfig) - i.UART_Transmit_IT 0x080026e0 Section 0 stm32f0xx_hal_uart.o(i.UART_Transmit_IT) - i.UART_WaitOnFlagUntilTimeout 0x08002746 Section 0 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - i.USART3_4_IRQHandler 0x080027a8 Section 0 stm32f0xx_it.o(i.USART3_4_IRQHandler) - i.__0printf$3 0x080027b8 Section 0 printf3.o(i.__0printf$3) - i.__ARM_common_switch8 0x080027d8 Section 0 ps2kb.o(i.__ARM_common_switch8) - i.__scatterload_copy 0x080027f2 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08002800 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08002802 Section 14 handlers.o(i.__scatterload_zeroinit) - i._printf_core 0x08002810 Section 0 printf3.o(i._printf_core) - _printf_core 0x08002811 Thumb Code 456 printf3.o(i._printf_core) - i.byte_to_int16_t 0x080029dc Section 0 main.o(i.byte_to_int16_t) - i.delay_us 0x080029e4 Section 0 delay_us.o(i.delay_us) - i.delay_us_init 0x080029f8 Section 0 delay_us.o(i.delay_us_init) - i.fputc 0x08002a08 Section 0 main.o(i.fputc) - i.gamepad_buf_add 0x08002a20 Section 0 helpers.o(i.gamepad_buf_add) - i.gamepad_buf_init 0x08002a52 Section 0 helpers.o(i.gamepad_buf_init) - i.gamepad_buf_is_full 0x08002a6a Section 0 helpers.o(i.gamepad_buf_is_full) - i.gamepad_buf_peek 0x08002a86 Section 0 helpers.o(i.gamepad_buf_peek) - i.gamepad_buf_pop 0x08002a9c Section 0 helpers.o(i.gamepad_buf_pop) - i.gamepad_buf_reset 0x08002ab4 Section 0 helpers.o(i.gamepad_buf_reset) - i.gamepad_update 0x08002acc Section 0 main.o(i.gamepad_update) - i.gameport_init 0x08002b70 Section 0 main.o(i.gameport_init) - i.handle_protocol_switch 0x08002bac Section 0 main.o(i.handle_protocol_switch) - i.is_protocol_enabled 0x08002c48 Section 0 main.o(i.is_protocol_enabled) - i.kb_buf_add 0x08002c5c Section 0 helpers.o(i.kb_buf_add) - i.kb_buf_init 0x08002c8c Section 0 helpers.o(i.kb_buf_init) - i.kb_buf_is_full 0x08002cac Section 0 helpers.o(i.kb_buf_is_full) - i.kb_buf_peek 0x08002cc8 Section 0 helpers.o(i.kb_buf_peek) - i.kb_buf_pop 0x08002ce8 Section 0 helpers.o(i.kb_buf_pop) - i.kb_buf_reset 0x08002d00 Section 0 helpers.o(i.kb_buf_reset) - i.keyboard_reply 0x08002d1c Section 0 ps2kb.o(i.keyboard_reply) - i.main 0x08002e1c Section 0 main.o(i.main) - i.malloc 0x0800301c Section 0 malloc.o(i.malloc) - i.mcp4451_is_available 0x08003088 Section 0 mcp4451.o(i.mcp4451_is_available) - i.mcp4451_reset 0x080030a8 Section 0 mcp4451.o(i.mcp4451_reset) - i.mcp4451_write_wiper 0x080030d4 Section 0 mcp4451.o(i.mcp4451_write_wiper) - i.micros 0x0800310c Section 0 delay_us.o(i.micros) - i.microsoft_serial_mouse_update 0x0800311c Section 0 main.o(i.microsoft_serial_mouse_update) - i.mouse_buf_add 0x080031e0 Section 0 helpers.o(i.mouse_buf_add) - i.mouse_buf_init 0x08003212 Section 0 helpers.o(i.mouse_buf_init) - i.mouse_buf_is_full 0x0800322a Section 0 helpers.o(i.mouse_buf_is_full) - i.mouse_buf_peek 0x08003246 Section 0 helpers.o(i.mouse_buf_peek) - i.mouse_buf_pop 0x0800325c Section 0 helpers.o(i.mouse_buf_pop) - i.mouse_buf_reset 0x08003274 Section 0 helpers.o(i.mouse_buf_reset) - i.protocol_status_lookup_init 0x0800328c Section 0 main.o(i.protocol_status_lookup_init) - i.ps2kb_get_bus_status 0x080032ac Section 0 ps2kb.o(i.ps2kb_get_bus_status) - i.ps2kb_init 0x080032f0 Section 0 ps2kb.o(i.ps2kb_init) - i.ps2kb_press_key 0x0800330c Section 0 ps2kb.o(i.ps2kb_press_key) - i.ps2kb_press_key_scancode_1 0x08003338 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1) - i.ps2kb_press_key_scancode_2 0x08003364 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2) - i.ps2kb_read 0x080034f4 Section 0 ps2kb.o(i.ps2kb_read) - i.ps2kb_release_lines 0x080035f0 Section 0 ps2kb.o(i.ps2kb_release_lines) - i.ps2kb_reset 0x08003610 Section 0 ps2kb.o(i.ps2kb_reset) - i.ps2kb_update 0x08003620 Section 0 main.o(i.ps2kb_update) - i.ps2kb_write 0x080036d4 Section 0 ps2kb.o(i.ps2kb_write) - i.ps2kb_write_nowait 0x08003718 Section 0 ps2kb.o(i.ps2kb_write_nowait) - i.ps2mouse_get_bus_status 0x0800383c Section 0 ps2mouse.o(i.ps2mouse_get_bus_status) - i.ps2mouse_get_outgoing_data 0x0800389c Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data) - i.ps2mouse_host_req_reply 0x08003948 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply) - i.ps2mouse_init 0x08003ae0 Section 0 ps2mouse.o(i.ps2mouse_init) - i.ps2mouse_read 0x08003afc Section 0 ps2mouse.o(i.ps2mouse_read) - i.ps2mouse_release_lines 0x08003bf4 Section 0 ps2mouse.o(i.ps2mouse_release_lines) - i.ps2mouse_reset 0x08003c14 Section 0 ps2mouse.o(i.ps2mouse_reset) - i.ps2mouse_restore_defaults 0x08003c2c Section 0 ps2mouse.o(i.ps2mouse_restore_defaults) - i.ps2mouse_send_update 0x08003c50 Section 0 ps2mouse.o(i.ps2mouse_send_update) - i.ps2mouse_update 0x08003c78 Section 0 main.o(i.ps2mouse_update) - i.ps2mouse_wait_for_idle 0x08003cdc Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle) - i.ps2mouse_write 0x08003d02 Section 0 ps2mouse.o(i.ps2mouse_write) - i.ps2mouse_write_delay_start 0x08003d1c Section 0 ps2mouse.o(i.ps2mouse_write_delay_start) - i.ps2mouse_write_nowait 0x08003d40 Section 0 ps2mouse.o(i.ps2mouse_write_nowait) - i.reset_accumulators 0x08003e60 Section 0 ps2mouse.o(i.reset_accumulators) - i.spi_error_dump_reboot 0x08003e70 Section 0 main.o(i.spi_error_dump_reboot) - i.wait_for_clk_high 0x08003ee8 Section 0 xt_kb.o(i.wait_for_clk_high) - i.xtkb_check_for_softreset 0x08003f18 Section 0 xt_kb.o(i.xtkb_check_for_softreset) - i.xtkb_enable 0x08003f58 Section 0 xt_kb.o(i.xtkb_enable) - i.xtkb_init 0x08003f6c Section 0 xt_kb.o(i.xtkb_init) - i.xtkb_press_key 0x08003f80 Section 0 xt_kb.o(i.xtkb_press_key) - i.xtkb_release_lines 0x08003ff8 Section 0 xt_kb.o(i.xtkb_release_lines) - i.xtkb_reset_bus 0x08004018 Section 0 xt_kb.o(i.xtkb_reset_bus) - i.xtkb_update 0x08004038 Section 0 main.o(i.xtkb_update) - i.xtkb_write 0x08004074 Section 0 xt_kb.o(i.xtkb_write) - .constdata 0x08004134 Section 121 ps2kb.o(.constdata) - .constdata 0x080041ad Section 4 mcp4451.o(.constdata) - .constdata 0x080041b1 Section 55 main.o(.constdata) - .constdata 0x080041e8 Section 16 system_stm32f0xx.o(.constdata) - .constdata 0x080041f8 Section 8 system_stm32f0xx.o(.constdata) + i.HAL_IncTick 0x080007b4 Section 0 stm32f0xx_hal.o(i.HAL_IncTick) + i.HAL_Init 0x080007c4 Section 0 stm32f0xx_hal.o(i.HAL_Init) + i.HAL_InitTick 0x080007e4 Section 0 stm32f0xx_hal.o(i.HAL_InitTick) + i.HAL_MspInit 0x08000808 Section 0 stm32f0xx_hal_msp.o(i.HAL_MspInit) + i.HAL_NVIC_EnableIRQ 0x0800084c Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + i.HAL_NVIC_SetPriority 0x08000860 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + i.HAL_RCCEx_PeriphCLKConfig 0x08000868 Section 0 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) + i.HAL_RCC_ClockConfig 0x08000988 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + i.HAL_RCC_GetHCLKFreq 0x08000adc Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + i.HAL_RCC_GetPCLK1Freq 0x08000ae8 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + i.HAL_RCC_GetSysClockFreq 0x08000b08 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + i.HAL_RCC_OscConfig 0x08000b90 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) + i.HAL_SPI_ErrorCallback 0x08000f68 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) + i.HAL_SPI_IRQHandler 0x08000f6c Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) + i.HAL_SPI_Init 0x08001040 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) + i.HAL_SPI_MspInit 0x080010f8 Section 0 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) + i.HAL_SPI_RxCpltCallback 0x0800114c Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) + i.HAL_SPI_TransmitReceive_IT 0x08001150 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) + i.HAL_SPI_TxRxCpltCallback 0x08001224 Section 0 main.o(i.HAL_SPI_TxRxCpltCallback) + i.HAL_SYSTICK_CLKSourceConfig 0x080013a0 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) + i.HAL_SYSTICK_Callback 0x080013b8 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) + i.HAL_SYSTICK_Config 0x080013bc Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) + i.HAL_SYSTICK_IRQHandler 0x080013ec Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) + i.HAL_TIMEx_MasterConfigSynchronization 0x080013f4 Section 0 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + i.HAL_TIM_Base_Init 0x0800143c Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) + i.HAL_TIM_Base_MspInit 0x08001470 Section 0 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) + i.HAL_TIM_Base_Start 0x08001494 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) + i.HAL_TIM_ConfigClockSource 0x080014ac Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + i.HAL_UARTEx_WakeupCallback 0x0800159a Section 0 stm32f0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback) + i.HAL_UART_ErrorCallback 0x0800159c Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_ErrorCallback) + i.HAL_UART_IRQHandler 0x080015a0 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler) + i.HAL_UART_Init 0x080016d4 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Init) + i.HAL_UART_MspInit 0x08001740 Section 0 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) + i.HAL_UART_RxCpltCallback 0x080017d0 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_RxCpltCallback) + i.HAL_UART_Transmit 0x080017d2 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) + i.HAL_UART_Transmit_IT 0x0800189a Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT) + i.HAL_UART_TxCpltCallback 0x080018f4 Section 0 main.o(i.HAL_UART_TxCpltCallback) + i.HardFault_Handler 0x08001900 Section 0 stm32f0xx_it.o(i.HardFault_Handler) + i.I2C_Flush_TXDR 0x08001902 Section 0 stm32f0xx_hal_i2c.o(i.I2C_Flush_TXDR) + I2C_Flush_TXDR 0x08001903 Thumb Code 34 stm32f0xx_hal_i2c.o(i.I2C_Flush_TXDR) + i.I2C_IsAcknowledgeFailed 0x08001924 Section 0 stm32f0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) + I2C_IsAcknowledgeFailed 0x08001925 Thumb Code 110 stm32f0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) + i.I2C_RequestMemoryWrite 0x08001998 Section 0 stm32f0xx_hal_i2c.o(i.I2C_RequestMemoryWrite) + I2C_RequestMemoryWrite 0x08001999 Thumb Code 106 stm32f0xx_hal_i2c.o(i.I2C_RequestMemoryWrite) + i.I2C_TransferConfig 0x08001a04 Section 0 stm32f0xx_hal_i2c.o(i.I2C_TransferConfig) + I2C_TransferConfig 0x08001a05 Thumb Code 30 stm32f0xx_hal_i2c.o(i.I2C_TransferConfig) + i.I2C_WaitOnFlagUntilTimeout 0x08001a28 Section 0 stm32f0xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) + I2C_WaitOnFlagUntilTimeout 0x08001a29 Thumb Code 72 stm32f0xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) + i.I2C_WaitOnSTOPFlagUntilTimeout 0x08001a70 Section 0 stm32f0xx_hal_i2c.o(i.I2C_WaitOnSTOPFlagUntilTimeout) + I2C_WaitOnSTOPFlagUntilTimeout 0x08001a71 Thumb Code 78 stm32f0xx_hal_i2c.o(i.I2C_WaitOnSTOPFlagUntilTimeout) + i.I2C_WaitOnTXISFlagUntilTimeout 0x08001abe Section 0 stm32f0xx_hal_i2c.o(i.I2C_WaitOnTXISFlagUntilTimeout) + I2C_WaitOnTXISFlagUntilTimeout 0x08001abf Thumb Code 82 stm32f0xx_hal_i2c.o(i.I2C_WaitOnTXISFlagUntilTimeout) + i.MX_GPIO_Init 0x08001b10 Section 0 main.o(i.MX_GPIO_Init) + MX_GPIO_Init 0x08001b11 Thumb Code 324 main.o(i.MX_GPIO_Init) + i.MX_I2C2_Init 0x08001c68 Section 0 main.o(i.MX_I2C2_Init) + MX_I2C2_Init 0x08001c69 Thumb Code 70 main.o(i.MX_I2C2_Init) + i.MX_SPI1_Init 0x08001cbc Section 0 main.o(i.MX_SPI1_Init) + MX_SPI1_Init 0x08001cbd Thumb Code 52 main.o(i.MX_SPI1_Init) + i.MX_TIM2_Init 0x08001cf8 Section 0 main.o(i.MX_TIM2_Init) + MX_TIM2_Init 0x08001cf9 Thumb Code 80 main.o(i.MX_TIM2_Init) + i.MX_USART1_UART_Init 0x08001d4c Section 0 main.o(i.MX_USART1_UART_Init) + MX_USART1_UART_Init 0x08001d4d Thumb Code 60 main.o(i.MX_USART1_UART_Init) + i.MX_USART3_UART_Init 0x08001d98 Section 0 main.o(i.MX_USART3_UART_Init) + MX_USART3_UART_Init 0x08001d99 Thumb Code 78 main.o(i.MX_USART3_UART_Init) + i.NMI_Handler 0x08001df4 Section 0 stm32f0xx_it.o(i.NMI_Handler) + i.NVIC_SetPriority 0x08001df8 Section 0 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) + NVIC_SetPriority 0x08001df9 Thumb Code 60 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) + i.PendSV_Handler 0x08001e3c Section 0 stm32f0xx_it.o(i.PendSV_Handler) + i.SPI1_IRQHandler 0x08001e40 Section 0 stm32f0xx_it.o(i.SPI1_IRQHandler) + i.SPI_2linesRxISR_16BIT 0x08001e50 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) + SPI_2linesRxISR_16BIT 0x08001e51 Thumb Code 54 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) + i.SPI_2linesRxISR_8BIT 0x08001e86 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) + SPI_2linesRxISR_8BIT 0x08001e87 Thumb Code 94 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) + i.SPI_2linesTxISR_16BIT 0x08001ee4 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) + SPI_2linesTxISR_16BIT 0x08001ee5 Thumb Code 52 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) + i.SPI_2linesTxISR_8BIT 0x08001f18 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) + SPI_2linesTxISR_8BIT 0x08001f19 Thumb Code 72 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) + i.SPI_CloseRxTx_ISR 0x08001f60 Section 0 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) + SPI_CloseRxTx_ISR 0x08001f61 Thumb Code 82 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) + i.SPI_DMAAbortOnError 0x08001fb2 Section 0 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) + SPI_DMAAbortOnError 0x08001fb3 Thumb Code 18 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) + i.SPI_EndRxTxTransaction 0x08001fc4 Section 0 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) + SPI_EndRxTxTransaction 0x08001fc5 Thumb Code 76 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) + i.SPI_WaitFifoStateUntilTimeout 0x08002010 Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) + SPI_WaitFifoStateUntilTimeout 0x08002011 Thumb Code 150 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) + i.SPI_WaitFlagStateUntilTimeout 0x080020a6 Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) + SPI_WaitFlagStateUntilTimeout 0x080020a7 Thumb Code 140 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) + i.SVC_Handler 0x08002132 Section 0 stm32f0xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x08002134 Section 0 stm32f0xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x08002140 Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x080021ac Section 0 system_stm32f0xx.o(i.SystemInit) + i.TIM_Base_SetConfig 0x08002208 Section 0 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) + i.TIM_ETR_SetConfig 0x0800229c Section 0 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) + i.TIM_ITRx_SetConfig 0x080022b2 Section 0 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) + TIM_ITRx_SetConfig 0x080022b3 Thumb Code 16 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) + i.TIM_TI1_ConfigInputStage 0x080022c2 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + TIM_TI1_ConfigInputStage 0x080022c3 Thumb Code 34 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + i.TIM_TI2_ConfigInputStage 0x080022e4 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + TIM_TI2_ConfigInputStage 0x080022e5 Thumb Code 38 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + i.UART_AdvFeatureConfig 0x0800230a Section 0 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) + i.UART_CheckIdleState 0x080023d4 Section 0 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) + i.UART_DMAAbortOnError 0x08002448 Section 0 stm32f0xx_hal_uart.o(i.UART_DMAAbortOnError) + UART_DMAAbortOnError 0x08002449 Thumb Code 20 stm32f0xx_hal_uart.o(i.UART_DMAAbortOnError) + i.UART_EndRxTransfer 0x0800245c Section 0 stm32f0xx_hal_uart.o(i.UART_EndRxTransfer) + UART_EndRxTransfer 0x0800245d Thumb Code 30 stm32f0xx_hal_uart.o(i.UART_EndRxTransfer) + i.UART_EndTransmit_IT 0x0800247a Section 0 stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT) + i.UART_Receive_IT 0x08002494 Section 0 stm32f0xx_hal_uart.o(i.UART_Receive_IT) + i.UART_SetConfig 0x08002510 Section 0 stm32f0xx_hal_uart.o(i.UART_SetConfig) + i.UART_Transmit_IT 0x0800266c Section 0 stm32f0xx_hal_uart.o(i.UART_Transmit_IT) + i.UART_WaitOnFlagUntilTimeout 0x080026d2 Section 0 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + i.USART3_4_IRQHandler 0x08002734 Section 0 stm32f0xx_it.o(i.USART3_4_IRQHandler) + i.__0printf$3 0x08002744 Section 0 printf3.o(i.__0printf$3) + i.__ARM_common_switch8 0x08002764 Section 0 ps2kb.o(i.__ARM_common_switch8) + i.__scatterload_copy 0x0800277e Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x0800278c Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x0800278e Section 14 handlers.o(i.__scatterload_zeroinit) + i._printf_core 0x0800279c Section 0 printf3.o(i._printf_core) + _printf_core 0x0800279d Thumb Code 456 printf3.o(i._printf_core) + i.byte_to_int16_t 0x08002968 Section 0 main.o(i.byte_to_int16_t) + i.delay_us 0x08002970 Section 0 delay_us.o(i.delay_us) + i.delay_us_init 0x08002984 Section 0 delay_us.o(i.delay_us_init) + i.fputc 0x08002994 Section 0 main.o(i.fputc) + i.gamepad_buf_add 0x080029ac Section 0 helpers.o(i.gamepad_buf_add) + i.gamepad_buf_init 0x080029de Section 0 helpers.o(i.gamepad_buf_init) + i.gamepad_buf_is_full 0x080029f6 Section 0 helpers.o(i.gamepad_buf_is_full) + i.gamepad_buf_peek 0x08002a12 Section 0 helpers.o(i.gamepad_buf_peek) + i.gamepad_buf_pop 0x08002a28 Section 0 helpers.o(i.gamepad_buf_pop) + i.gamepad_buf_reset 0x08002a40 Section 0 helpers.o(i.gamepad_buf_reset) + i.gamepad_update 0x08002a58 Section 0 main.o(i.gamepad_update) + i.gameport_init 0x08002afc Section 0 main.o(i.gameport_init) + i.handle_protocol_switch 0x08002b38 Section 0 main.o(i.handle_protocol_switch) + i.is_protocol_enabled 0x08002bd4 Section 0 main.o(i.is_protocol_enabled) + i.kb_buf_add 0x08002be8 Section 0 helpers.o(i.kb_buf_add) + i.kb_buf_init 0x08002c18 Section 0 helpers.o(i.kb_buf_init) + i.kb_buf_is_full 0x08002c38 Section 0 helpers.o(i.kb_buf_is_full) + i.kb_buf_peek 0x08002c54 Section 0 helpers.o(i.kb_buf_peek) + i.kb_buf_pop 0x08002c74 Section 0 helpers.o(i.kb_buf_pop) + i.kb_buf_reset 0x08002c8c Section 0 helpers.o(i.kb_buf_reset) + i.keyboard_reply 0x08002ca8 Section 0 ps2kb.o(i.keyboard_reply) + i.main 0x08002da8 Section 0 main.o(i.main) + i.malloc 0x08002f78 Section 0 malloc.o(i.malloc) + i.mcp4451_is_available 0x08002fe4 Section 0 mcp4451.o(i.mcp4451_is_available) + i.mcp4451_reset 0x08003004 Section 0 mcp4451.o(i.mcp4451_reset) + i.mcp4451_write_wiper 0x08003030 Section 0 mcp4451.o(i.mcp4451_write_wiper) + i.micros 0x08003068 Section 0 delay_us.o(i.micros) + i.microsoft_serial_mouse_update 0x08003078 Section 0 main.o(i.microsoft_serial_mouse_update) + i.mouse_buf_add 0x0800313c Section 0 helpers.o(i.mouse_buf_add) + i.mouse_buf_init 0x0800316e Section 0 helpers.o(i.mouse_buf_init) + i.mouse_buf_is_full 0x08003186 Section 0 helpers.o(i.mouse_buf_is_full) + i.mouse_buf_peek 0x080031a2 Section 0 helpers.o(i.mouse_buf_peek) + i.mouse_buf_pop 0x080031b8 Section 0 helpers.o(i.mouse_buf_pop) + i.mouse_buf_reset 0x080031d0 Section 0 helpers.o(i.mouse_buf_reset) + i.protocol_status_lookup_init 0x080031e8 Section 0 main.o(i.protocol_status_lookup_init) + i.ps2kb_get_bus_status 0x08003208 Section 0 ps2kb.o(i.ps2kb_get_bus_status) + i.ps2kb_init 0x0800324c Section 0 ps2kb.o(i.ps2kb_init) + i.ps2kb_press_key 0x08003268 Section 0 ps2kb.o(i.ps2kb_press_key) + i.ps2kb_press_key_scancode_1 0x08003294 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1) + i.ps2kb_press_key_scancode_2 0x080032c0 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2) + i.ps2kb_read 0x08003450 Section 0 ps2kb.o(i.ps2kb_read) + i.ps2kb_release_lines 0x0800354c Section 0 ps2kb.o(i.ps2kb_release_lines) + i.ps2kb_reset 0x0800356c Section 0 ps2kb.o(i.ps2kb_reset) + i.ps2kb_update 0x0800357c Section 0 main.o(i.ps2kb_update) + i.ps2kb_write 0x08003630 Section 0 ps2kb.o(i.ps2kb_write) + i.ps2kb_write_nowait 0x08003674 Section 0 ps2kb.o(i.ps2kb_write_nowait) + i.ps2mouse_get_bus_status 0x08003798 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status) + i.ps2mouse_get_outgoing_data 0x080037f8 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data) + i.ps2mouse_host_req_reply 0x080038a4 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply) + i.ps2mouse_init 0x08003a14 Section 0 ps2mouse.o(i.ps2mouse_init) + i.ps2mouse_read 0x08003a30 Section 0 ps2mouse.o(i.ps2mouse_read) + i.ps2mouse_release_lines 0x08003b28 Section 0 ps2mouse.o(i.ps2mouse_release_lines) + i.ps2mouse_reset 0x08003b48 Section 0 ps2mouse.o(i.ps2mouse_reset) + i.ps2mouse_restore_defaults 0x08003b60 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults) + i.ps2mouse_send_update 0x08003b84 Section 0 ps2mouse.o(i.ps2mouse_send_update) + i.ps2mouse_update 0x08003ba8 Section 0 main.o(i.ps2mouse_update) + i.ps2mouse_wait_for_idle 0x08003c30 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle) + i.ps2mouse_write 0x08003c56 Section 0 ps2mouse.o(i.ps2mouse_write) + i.ps2mouse_write_delay_start 0x08003c70 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start) + i.ps2mouse_write_nowait 0x08003c94 Section 0 ps2mouse.o(i.ps2mouse_write_nowait) + i.reset_accumulators 0x08003db8 Section 0 ps2mouse.o(i.reset_accumulators) + i.spi_error_dump_reboot 0x08003dc8 Section 0 main.o(i.spi_error_dump_reboot) + i.wait_for_clk_high 0x08003e40 Section 0 xt_kb.o(i.wait_for_clk_high) + i.xtkb_check_for_softreset 0x08003e70 Section 0 xt_kb.o(i.xtkb_check_for_softreset) + i.xtkb_enable 0x08003eb0 Section 0 xt_kb.o(i.xtkb_enable) + i.xtkb_init 0x08003ec4 Section 0 xt_kb.o(i.xtkb_init) + i.xtkb_press_key 0x08003ed8 Section 0 xt_kb.o(i.xtkb_press_key) + i.xtkb_release_lines 0x08003f50 Section 0 xt_kb.o(i.xtkb_release_lines) + i.xtkb_reset_bus 0x08003f70 Section 0 xt_kb.o(i.xtkb_reset_bus) + i.xtkb_update 0x08003f90 Section 0 main.o(i.xtkb_update) + i.xtkb_write 0x08003fcc Section 0 xt_kb.o(i.xtkb_write) + .constdata 0x0800408c Section 121 ps2kb.o(.constdata) + .constdata 0x08004105 Section 4 mcp4451.o(.constdata) + .constdata 0x08004109 Section 55 main.o(.constdata) + .constdata 0x08004140 Section 16 system_stm32f0xx.o(.constdata) + .constdata 0x08004150 Section 8 system_stm32f0xx.o(.constdata) .data 0x20000000 Section 4 delay_us.o(.data) .data 0x20000004 Section 20 ps2kb.o(.data) .data 0x20000018 Section 32 ps2mouse.o(.data) @@ -2073,9 +2074,9 @@ Image Symbol Table .data 0x20000078 Section 4 stdout.o(.data) .data 0x2000007c Section 4 mvars.o(.data) .data 0x20000080 Section 4 mvars.o(.data) - .bss 0x20000084 Section 637 main.o(.bss) - HEAP 0x20000308 Section 512 startup_stm32f072xb.o(HEAP) - STACK 0x20000508 Section 1024 startup_stm32f072xb.o(STACK) + .bss 0x20000084 Section 621 main.o(.bss) + HEAP 0x200002f8 Section 512 startup_stm32f072xb.o(HEAP) + STACK 0x200004f8 Section 1024 startup_stm32f072xb.o(STACK) Global Symbols @@ -2201,149 +2202,147 @@ Image Symbol Table HAL_I2C_IsDeviceReady 0x080004f9 Thumb Code 280 stm32f0xx_hal_i2c.o(i.HAL_I2C_IsDeviceReady) HAL_I2C_Mem_Write 0x08000615 Thumb Code 334 stm32f0xx_hal_i2c.o(i.HAL_I2C_Mem_Write) HAL_I2C_MspInit 0x08000769 Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_I2C_MspInit) - HAL_IWDG_Init 0x080007b5 Thumb Code 86 stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Init) - HAL_IWDG_Refresh 0x08000819 Thumb Code 10 stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh) - HAL_IncTick 0x08000829 Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick) - HAL_Init 0x08000839 Thumb Code 26 stm32f0xx_hal.o(i.HAL_Init) - HAL_InitTick 0x08000859 Thumb Code 34 stm32f0xx_hal.o(i.HAL_InitTick) - HAL_MspInit 0x0800087d Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_MspInit) - HAL_NVIC_EnableIRQ 0x080008c1 Thumb Code 14 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - HAL_NVIC_SetPriority 0x080008d5 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - HAL_RCCEx_PeriphCLKConfig 0x080008dd Thumb Code 274 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) - HAL_RCC_ClockConfig 0x080009fd Thumb Code 320 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - HAL_RCC_GetHCLKFreq 0x08000b51 Thumb Code 6 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - HAL_RCC_GetPCLK1Freq 0x08000b5d Thumb Code 20 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - HAL_RCC_GetSysClockFreq 0x08000b7d Thumb Code 90 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - HAL_RCC_OscConfig 0x08000c05 Thumb Code 966 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) - HAL_SPI_ErrorCallback 0x08000fdd Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) - HAL_SPI_IRQHandler 0x08000fe1 Thumb Code 208 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) - HAL_SPI_Init 0x080010b5 Thumb Code 184 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) - HAL_SPI_MspInit 0x0800116d Thumb Code 76 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) - HAL_SPI_RxCpltCallback 0x080011c1 Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) - HAL_SPI_TransmitReceive_IT 0x080011c5 Thumb Code 196 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) - HAL_SPI_TxRxCpltCallback 0x08001299 Thumb Code 362 main.o(i.HAL_SPI_TxRxCpltCallback) - HAL_SYSTICK_CLKSourceConfig 0x08001415 Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) - HAL_SYSTICK_Callback 0x0800142d Thumb Code 2 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) - HAL_SYSTICK_Config 0x08001431 Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) - HAL_SYSTICK_IRQHandler 0x08001461 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) - HAL_TIMEx_MasterConfigSynchronization 0x08001469 Thumb Code 72 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) - HAL_TIM_Base_Init 0x080014b1 Thumb Code 52 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) - HAL_TIM_Base_MspInit 0x080014e5 Thumb Code 30 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) - HAL_TIM_Base_Start 0x08001509 Thumb Code 24 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) - HAL_TIM_ConfigClockSource 0x08001521 Thumb Code 238 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) - HAL_UARTEx_WakeupCallback 0x0800160f Thumb Code 2 stm32f0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback) - HAL_UART_ErrorCallback 0x08001611 Thumb Code 2 stm32f0xx_hal_uart.o(i.HAL_UART_ErrorCallback) - HAL_UART_IRQHandler 0x08001615 Thumb Code 304 stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler) - HAL_UART_Init 0x08001749 Thumb Code 108 stm32f0xx_hal_uart.o(i.HAL_UART_Init) - HAL_UART_MspInit 0x080017b5 Thumb Code 126 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) - HAL_UART_RxCpltCallback 0x08001845 Thumb Code 2 stm32f0xx_hal_uart.o(i.HAL_UART_RxCpltCallback) - HAL_UART_Transmit 0x08001847 Thumb Code 200 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) - HAL_UART_Transmit_IT 0x0800190f Thumb Code 88 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT) - HAL_UART_TxCpltCallback 0x08001969 Thumb Code 8 main.o(i.HAL_UART_TxCpltCallback) - HardFault_Handler 0x08001975 Thumb Code 2 stm32f0xx_it.o(i.HardFault_Handler) - NMI_Handler 0x08001e69 Thumb Code 2 stm32f0xx_it.o(i.NMI_Handler) - PendSV_Handler 0x08001eb1 Thumb Code 2 stm32f0xx_it.o(i.PendSV_Handler) - SPI1_IRQHandler 0x08001eb5 Thumb Code 10 stm32f0xx_it.o(i.SPI1_IRQHandler) - SVC_Handler 0x080021a7 Thumb Code 2 stm32f0xx_it.o(i.SVC_Handler) - SysTick_Handler 0x080021a9 Thumb Code 12 stm32f0xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x080021b5 Thumb Code 108 main.o(i.SystemClock_Config) - SystemInit 0x08002221 Thumb Code 76 system_stm32f0xx.o(i.SystemInit) - TIM_Base_SetConfig 0x0800227d Thumb Code 124 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) - TIM_ETR_SetConfig 0x08002311 Thumb Code 22 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) - UART_AdvFeatureConfig 0x0800237f Thumb Code 202 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) - UART_CheckIdleState 0x08002449 Thumb Code 102 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) - UART_EndTransmit_IT 0x080024ef Thumb Code 26 stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT) - UART_Receive_IT 0x08002509 Thumb Code 122 stm32f0xx_hal_uart.o(i.UART_Receive_IT) - UART_SetConfig 0x08002585 Thumb Code 316 stm32f0xx_hal_uart.o(i.UART_SetConfig) - UART_Transmit_IT 0x080026e1 Thumb Code 102 stm32f0xx_hal_uart.o(i.UART_Transmit_IT) - UART_WaitOnFlagUntilTimeout 0x08002747 Thumb Code 98 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - USART3_4_IRQHandler 0x080027a9 Thumb Code 10 stm32f0xx_it.o(i.USART3_4_IRQHandler) - __0printf$3 0x080027b9 Thumb Code 24 printf3.o(i.__0printf$3) - __1printf$3 0x080027b9 Thumb Code 0 printf3.o(i.__0printf$3) - __2printf 0x080027b9 Thumb Code 0 printf3.o(i.__0printf$3) - __ARM_common_switch8 0x080027d9 Thumb Code 26 ps2kb.o(i.__ARM_common_switch8) - __scatterload_copy 0x080027f3 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08002801 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08002803 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - byte_to_int16_t 0x080029dd Thumb Code 8 main.o(i.byte_to_int16_t) - delay_us 0x080029e5 Thumb Code 20 delay_us.o(i.delay_us) - delay_us_init 0x080029f9 Thumb Code 12 delay_us.o(i.delay_us_init) - fputc 0x08002a09 Thumb Code 18 main.o(i.fputc) - gamepad_buf_add 0x08002a21 Thumb Code 50 helpers.o(i.gamepad_buf_add) - gamepad_buf_init 0x08002a53 Thumb Code 24 helpers.o(i.gamepad_buf_init) - gamepad_buf_is_full 0x08002a6b Thumb Code 28 helpers.o(i.gamepad_buf_is_full) - gamepad_buf_peek 0x08002a87 Thumb Code 22 helpers.o(i.gamepad_buf_peek) - gamepad_buf_pop 0x08002a9d Thumb Code 24 helpers.o(i.gamepad_buf_pop) - gamepad_buf_reset 0x08002ab5 Thumb Code 22 helpers.o(i.gamepad_buf_reset) - gamepad_update 0x08002acd Thumb Code 150 main.o(i.gamepad_update) - gameport_init 0x08002b71 Thumb Code 52 main.o(i.gameport_init) - handle_protocol_switch 0x08002bad Thumb Code 148 main.o(i.handle_protocol_switch) - is_protocol_enabled 0x08002c49 Thumb Code 16 main.o(i.is_protocol_enabled) - kb_buf_add 0x08002c5d Thumb Code 48 helpers.o(i.kb_buf_add) - kb_buf_init 0x08002c8d Thumb Code 32 helpers.o(i.kb_buf_init) - kb_buf_is_full 0x08002cad Thumb Code 28 helpers.o(i.kb_buf_is_full) - kb_buf_peek 0x08002cc9 Thumb Code 32 helpers.o(i.kb_buf_peek) - kb_buf_pop 0x08002ce9 Thumb Code 24 helpers.o(i.kb_buf_pop) - kb_buf_reset 0x08002d01 Thumb Code 28 helpers.o(i.kb_buf_reset) - keyboard_reply 0x08002d1d Thumb Code 250 ps2kb.o(i.keyboard_reply) - main 0x08002e1d Thumb Code 410 main.o(i.main) - malloc 0x0800301d Thumb Code 92 malloc.o(i.malloc) - mcp4451_is_available 0x08003089 Thumb Code 26 mcp4451.o(i.mcp4451_is_available) - mcp4451_reset 0x080030a9 Thumb Code 38 mcp4451.o(i.mcp4451_reset) - mcp4451_write_wiper 0x080030d5 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper) - micros 0x0800310d Thumb Code 10 delay_us.o(i.micros) - microsoft_serial_mouse_update 0x0800311d Thumb Code 188 main.o(i.microsoft_serial_mouse_update) - mouse_buf_add 0x080031e1 Thumb Code 50 helpers.o(i.mouse_buf_add) - mouse_buf_init 0x08003213 Thumb Code 24 helpers.o(i.mouse_buf_init) - mouse_buf_is_full 0x0800322b Thumb Code 28 helpers.o(i.mouse_buf_is_full) - mouse_buf_peek 0x08003247 Thumb Code 22 helpers.o(i.mouse_buf_peek) - mouse_buf_pop 0x0800325d Thumb Code 24 helpers.o(i.mouse_buf_pop) - mouse_buf_reset 0x08003275 Thumb Code 22 helpers.o(i.mouse_buf_reset) - protocol_status_lookup_init 0x0800328d Thumb Code 28 main.o(i.protocol_status_lookup_init) - ps2kb_get_bus_status 0x080032ad Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status) - ps2kb_init 0x080032f1 Thumb Code 22 ps2kb.o(i.ps2kb_init) - ps2kb_press_key 0x0800330d Thumb Code 40 ps2kb.o(i.ps2kb_press_key) - ps2kb_press_key_scancode_1 0x08003339 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1) - ps2kb_press_key_scancode_2 0x08003365 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2) - ps2kb_read 0x080034f5 Thumb Code 246 ps2kb.o(i.ps2kb_read) - ps2kb_release_lines 0x080035f1 Thumb Code 26 ps2kb.o(i.ps2kb_release_lines) - ps2kb_reset 0x08003611 Thumb Code 12 ps2kb.o(i.ps2kb_reset) - ps2kb_update 0x08003621 Thumb Code 166 main.o(i.ps2kb_update) - ps2kb_write 0x080036d5 Thumb Code 62 ps2kb.o(i.ps2kb_write) - ps2kb_write_nowait 0x08003719 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait) - ps2mouse_get_bus_status 0x0800383d Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status) - ps2mouse_get_outgoing_data 0x0800389d Thumb Code 166 ps2mouse.o(i.ps2mouse_get_outgoing_data) - ps2mouse_host_req_reply 0x08003949 Thumb Code 402 ps2mouse.o(i.ps2mouse_host_req_reply) - ps2mouse_init 0x08003ae1 Thumb Code 22 ps2mouse.o(i.ps2mouse_init) - ps2mouse_read 0x08003afd Thumb Code 244 ps2mouse.o(i.ps2mouse_read) - ps2mouse_release_lines 0x08003bf5 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines) - ps2mouse_reset 0x08003c15 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset) - ps2mouse_restore_defaults 0x08003c2d Thumb Code 30 ps2mouse.o(i.ps2mouse_restore_defaults) - ps2mouse_send_update 0x08003c51 Thumb Code 38 ps2mouse.o(i.ps2mouse_send_update) - ps2mouse_update 0x08003c79 Thumb Code 90 main.o(i.ps2mouse_update) - ps2mouse_wait_for_idle 0x08003cdd Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle) - ps2mouse_write 0x08003d03 Thumb Code 26 ps2mouse.o(i.ps2mouse_write) - ps2mouse_write_delay_start 0x08003d1d Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start) - ps2mouse_write_nowait 0x08003d41 Thumb Code 282 ps2mouse.o(i.ps2mouse_write_nowait) - reset_accumulators 0x08003e61 Thumb Code 12 ps2mouse.o(i.reset_accumulators) - spi_error_dump_reboot 0x08003e71 Thumb Code 72 main.o(i.spi_error_dump_reboot) - wait_for_clk_high 0x08003ee9 Thumb Code 44 xt_kb.o(i.wait_for_clk_high) - xtkb_check_for_softreset 0x08003f19 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset) - xtkb_enable 0x08003f59 Thumb Code 16 xt_kb.o(i.xtkb_enable) - xtkb_init 0x08003f6d Thumb Code 14 xt_kb.o(i.xtkb_init) - xtkb_press_key 0x08003f81 Thumb Code 116 xt_kb.o(i.xtkb_press_key) - xtkb_release_lines 0x08003ff9 Thumb Code 26 xt_kb.o(i.xtkb_release_lines) - xtkb_reset_bus 0x08004019 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus) - xtkb_update 0x08004039 Thumb Code 52 main.o(i.xtkb_update) - xtkb_write 0x08004075 Thumb Code 186 xt_kb.o(i.xtkb_write) - linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004134 Data 89 ps2kb.o(.constdata) - linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x0800418d Data 32 ps2kb.o(.constdata) - mcp4451_wiper_id_to_reg_addr_lookup 0x080041ad Data 4 mcp4451.o(.constdata) - boot_message 0x080041b1 Data 55 main.o(.constdata) - AHBPrescTable 0x080041e8 Data 16 system_stm32f0xx.o(.constdata) - APBPrescTable 0x080041f8 Data 8 system_stm32f0xx.o(.constdata) - Region$$Table$$Base 0x08004200 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08004220 Number 0 anon$$obj.o(Region$$Table) + HAL_IncTick 0x080007b5 Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick) + HAL_Init 0x080007c5 Thumb Code 26 stm32f0xx_hal.o(i.HAL_Init) + HAL_InitTick 0x080007e5 Thumb Code 34 stm32f0xx_hal.o(i.HAL_InitTick) + HAL_MspInit 0x08000809 Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_MspInit) + HAL_NVIC_EnableIRQ 0x0800084d Thumb Code 14 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + HAL_NVIC_SetPriority 0x08000861 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + HAL_RCCEx_PeriphCLKConfig 0x08000869 Thumb Code 274 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) + HAL_RCC_ClockConfig 0x08000989 Thumb Code 320 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + HAL_RCC_GetHCLKFreq 0x08000add Thumb Code 6 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + HAL_RCC_GetPCLK1Freq 0x08000ae9 Thumb Code 20 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + HAL_RCC_GetSysClockFreq 0x08000b09 Thumb Code 90 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + HAL_RCC_OscConfig 0x08000b91 Thumb Code 966 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) + HAL_SPI_ErrorCallback 0x08000f69 Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) + HAL_SPI_IRQHandler 0x08000f6d Thumb Code 208 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) + HAL_SPI_Init 0x08001041 Thumb Code 184 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) + HAL_SPI_MspInit 0x080010f9 Thumb Code 76 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) + HAL_SPI_RxCpltCallback 0x0800114d Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) + HAL_SPI_TransmitReceive_IT 0x08001151 Thumb Code 196 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) + HAL_SPI_TxRxCpltCallback 0x08001225 Thumb Code 362 main.o(i.HAL_SPI_TxRxCpltCallback) + HAL_SYSTICK_CLKSourceConfig 0x080013a1 Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) + HAL_SYSTICK_Callback 0x080013b9 Thumb Code 2 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) + HAL_SYSTICK_Config 0x080013bd Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) + HAL_SYSTICK_IRQHandler 0x080013ed Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) + HAL_TIMEx_MasterConfigSynchronization 0x080013f5 Thumb Code 72 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + HAL_TIM_Base_Init 0x0800143d Thumb Code 52 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) + HAL_TIM_Base_MspInit 0x08001471 Thumb Code 30 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) + HAL_TIM_Base_Start 0x08001495 Thumb Code 24 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) + HAL_TIM_ConfigClockSource 0x080014ad Thumb Code 238 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + HAL_UARTEx_WakeupCallback 0x0800159b Thumb Code 2 stm32f0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback) + HAL_UART_ErrorCallback 0x0800159d Thumb Code 2 stm32f0xx_hal_uart.o(i.HAL_UART_ErrorCallback) + HAL_UART_IRQHandler 0x080015a1 Thumb Code 304 stm32f0xx_hal_uart.o(i.HAL_UART_IRQHandler) + HAL_UART_Init 0x080016d5 Thumb Code 108 stm32f0xx_hal_uart.o(i.HAL_UART_Init) + HAL_UART_MspInit 0x08001741 Thumb Code 126 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) + HAL_UART_RxCpltCallback 0x080017d1 Thumb Code 2 stm32f0xx_hal_uart.o(i.HAL_UART_RxCpltCallback) + HAL_UART_Transmit 0x080017d3 Thumb Code 200 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) + HAL_UART_Transmit_IT 0x0800189b Thumb Code 88 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT) + HAL_UART_TxCpltCallback 0x080018f5 Thumb Code 8 main.o(i.HAL_UART_TxCpltCallback) + HardFault_Handler 0x08001901 Thumb Code 2 stm32f0xx_it.o(i.HardFault_Handler) + NMI_Handler 0x08001df5 Thumb Code 2 stm32f0xx_it.o(i.NMI_Handler) + PendSV_Handler 0x08001e3d Thumb Code 2 stm32f0xx_it.o(i.PendSV_Handler) + SPI1_IRQHandler 0x08001e41 Thumb Code 10 stm32f0xx_it.o(i.SPI1_IRQHandler) + SVC_Handler 0x08002133 Thumb Code 2 stm32f0xx_it.o(i.SVC_Handler) + SysTick_Handler 0x08002135 Thumb Code 12 stm32f0xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x08002141 Thumb Code 108 main.o(i.SystemClock_Config) + SystemInit 0x080021ad Thumb Code 76 system_stm32f0xx.o(i.SystemInit) + TIM_Base_SetConfig 0x08002209 Thumb Code 124 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) + TIM_ETR_SetConfig 0x0800229d Thumb Code 22 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) + UART_AdvFeatureConfig 0x0800230b Thumb Code 202 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) + UART_CheckIdleState 0x080023d5 Thumb Code 102 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) + UART_EndTransmit_IT 0x0800247b Thumb Code 26 stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT) + UART_Receive_IT 0x08002495 Thumb Code 122 stm32f0xx_hal_uart.o(i.UART_Receive_IT) + UART_SetConfig 0x08002511 Thumb Code 316 stm32f0xx_hal_uart.o(i.UART_SetConfig) + UART_Transmit_IT 0x0800266d Thumb Code 102 stm32f0xx_hal_uart.o(i.UART_Transmit_IT) + UART_WaitOnFlagUntilTimeout 0x080026d3 Thumb Code 98 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + USART3_4_IRQHandler 0x08002735 Thumb Code 10 stm32f0xx_it.o(i.USART3_4_IRQHandler) + __0printf$3 0x08002745 Thumb Code 24 printf3.o(i.__0printf$3) + __1printf$3 0x08002745 Thumb Code 0 printf3.o(i.__0printf$3) + __2printf 0x08002745 Thumb Code 0 printf3.o(i.__0printf$3) + __ARM_common_switch8 0x08002765 Thumb Code 26 ps2kb.o(i.__ARM_common_switch8) + __scatterload_copy 0x0800277f Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x0800278d Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x0800278f Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + byte_to_int16_t 0x08002969 Thumb Code 8 main.o(i.byte_to_int16_t) + delay_us 0x08002971 Thumb Code 20 delay_us.o(i.delay_us) + delay_us_init 0x08002985 Thumb Code 12 delay_us.o(i.delay_us_init) + fputc 0x08002995 Thumb Code 18 main.o(i.fputc) + gamepad_buf_add 0x080029ad Thumb Code 50 helpers.o(i.gamepad_buf_add) + gamepad_buf_init 0x080029df Thumb Code 24 helpers.o(i.gamepad_buf_init) + gamepad_buf_is_full 0x080029f7 Thumb Code 28 helpers.o(i.gamepad_buf_is_full) + gamepad_buf_peek 0x08002a13 Thumb Code 22 helpers.o(i.gamepad_buf_peek) + gamepad_buf_pop 0x08002a29 Thumb Code 24 helpers.o(i.gamepad_buf_pop) + gamepad_buf_reset 0x08002a41 Thumb Code 22 helpers.o(i.gamepad_buf_reset) + gamepad_update 0x08002a59 Thumb Code 150 main.o(i.gamepad_update) + gameport_init 0x08002afd Thumb Code 52 main.o(i.gameport_init) + handle_protocol_switch 0x08002b39 Thumb Code 148 main.o(i.handle_protocol_switch) + is_protocol_enabled 0x08002bd5 Thumb Code 16 main.o(i.is_protocol_enabled) + kb_buf_add 0x08002be9 Thumb Code 48 helpers.o(i.kb_buf_add) + kb_buf_init 0x08002c19 Thumb Code 32 helpers.o(i.kb_buf_init) + kb_buf_is_full 0x08002c39 Thumb Code 28 helpers.o(i.kb_buf_is_full) + kb_buf_peek 0x08002c55 Thumb Code 32 helpers.o(i.kb_buf_peek) + kb_buf_pop 0x08002c75 Thumb Code 24 helpers.o(i.kb_buf_pop) + kb_buf_reset 0x08002c8d Thumb Code 28 helpers.o(i.kb_buf_reset) + keyboard_reply 0x08002ca9 Thumb Code 250 ps2kb.o(i.keyboard_reply) + main 0x08002da9 Thumb Code 370 main.o(i.main) + malloc 0x08002f79 Thumb Code 92 malloc.o(i.malloc) + mcp4451_is_available 0x08002fe5 Thumb Code 26 mcp4451.o(i.mcp4451_is_available) + mcp4451_reset 0x08003005 Thumb Code 38 mcp4451.o(i.mcp4451_reset) + mcp4451_write_wiper 0x08003031 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper) + micros 0x08003069 Thumb Code 10 delay_us.o(i.micros) + microsoft_serial_mouse_update 0x08003079 Thumb Code 188 main.o(i.microsoft_serial_mouse_update) + mouse_buf_add 0x0800313d Thumb Code 50 helpers.o(i.mouse_buf_add) + mouse_buf_init 0x0800316f Thumb Code 24 helpers.o(i.mouse_buf_init) + mouse_buf_is_full 0x08003187 Thumb Code 28 helpers.o(i.mouse_buf_is_full) + mouse_buf_peek 0x080031a3 Thumb Code 22 helpers.o(i.mouse_buf_peek) + mouse_buf_pop 0x080031b9 Thumb Code 24 helpers.o(i.mouse_buf_pop) + mouse_buf_reset 0x080031d1 Thumb Code 22 helpers.o(i.mouse_buf_reset) + protocol_status_lookup_init 0x080031e9 Thumb Code 28 main.o(i.protocol_status_lookup_init) + ps2kb_get_bus_status 0x08003209 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status) + ps2kb_init 0x0800324d Thumb Code 22 ps2kb.o(i.ps2kb_init) + ps2kb_press_key 0x08003269 Thumb Code 40 ps2kb.o(i.ps2kb_press_key) + ps2kb_press_key_scancode_1 0x08003295 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1) + ps2kb_press_key_scancode_2 0x080032c1 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2) + ps2kb_read 0x08003451 Thumb Code 246 ps2kb.o(i.ps2kb_read) + ps2kb_release_lines 0x0800354d Thumb Code 26 ps2kb.o(i.ps2kb_release_lines) + ps2kb_reset 0x0800356d Thumb Code 12 ps2kb.o(i.ps2kb_reset) + ps2kb_update 0x0800357d Thumb Code 166 main.o(i.ps2kb_update) + ps2kb_write 0x08003631 Thumb Code 62 ps2kb.o(i.ps2kb_write) + ps2kb_write_nowait 0x08003675 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait) + ps2mouse_get_bus_status 0x08003799 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status) + ps2mouse_get_outgoing_data 0x080037f9 Thumb Code 166 ps2mouse.o(i.ps2mouse_get_outgoing_data) + ps2mouse_host_req_reply 0x080038a5 Thumb Code 362 ps2mouse.o(i.ps2mouse_host_req_reply) + ps2mouse_init 0x08003a15 Thumb Code 22 ps2mouse.o(i.ps2mouse_init) + ps2mouse_read 0x08003a31 Thumb Code 244 ps2mouse.o(i.ps2mouse_read) + ps2mouse_release_lines 0x08003b29 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines) + ps2mouse_reset 0x08003b49 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset) + ps2mouse_restore_defaults 0x08003b61 Thumb Code 30 ps2mouse.o(i.ps2mouse_restore_defaults) + ps2mouse_send_update 0x08003b85 Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update) + ps2mouse_update 0x08003ba9 Thumb Code 122 main.o(i.ps2mouse_update) + ps2mouse_wait_for_idle 0x08003c31 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle) + ps2mouse_write 0x08003c57 Thumb Code 26 ps2mouse.o(i.ps2mouse_write) + ps2mouse_write_delay_start 0x08003c71 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start) + ps2mouse_write_nowait 0x08003c95 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait) + reset_accumulators 0x08003db9 Thumb Code 12 ps2mouse.o(i.reset_accumulators) + spi_error_dump_reboot 0x08003dc9 Thumb Code 72 main.o(i.spi_error_dump_reboot) + wait_for_clk_high 0x08003e41 Thumb Code 44 xt_kb.o(i.wait_for_clk_high) + xtkb_check_for_softreset 0x08003e71 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset) + xtkb_enable 0x08003eb1 Thumb Code 16 xt_kb.o(i.xtkb_enable) + xtkb_init 0x08003ec5 Thumb Code 14 xt_kb.o(i.xtkb_init) + xtkb_press_key 0x08003ed9 Thumb Code 116 xt_kb.o(i.xtkb_press_key) + xtkb_release_lines 0x08003f51 Thumb Code 26 xt_kb.o(i.xtkb_release_lines) + xtkb_reset_bus 0x08003f71 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus) + xtkb_update 0x08003f91 Thumb Code 52 main.o(i.xtkb_update) + xtkb_write 0x08003fcd Thumb Code 186 xt_kb.o(i.xtkb_write) + linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x0800408c Data 89 ps2kb.o(.constdata) + linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x080040e5 Data 32 ps2kb.o(.constdata) + mcp4451_wiper_id_to_reg_addr_lookup 0x08004105 Data 4 mcp4451.o(.constdata) + boot_message 0x08004109 Data 55 main.o(.constdata) + AHBPrescTable 0x08004140 Data 16 system_stm32f0xx.o(.constdata) + APBPrescTable 0x08004150 Data 8 system_stm32f0xx.o(.constdata) + Region$$Table$$Base 0x08004158 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08004178 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) @@ -2395,22 +2394,21 @@ Image Symbol Table __microlib_freelist 0x2000007c Data 4 mvars.o(.data) __microlib_freelist_initialised 0x20000080 Data 4 mvars.o(.data) hi2c2 0x20000084 Data 76 main.o(.bss) - hiwdg 0x200000d0 Data 16 main.o(.bss) - hspi1 0x200000e0 Data 100 main.o(.bss) - htim2 0x20000144 Data 64 main.o(.bss) - huart1 0x20000184 Data 112 main.o(.bss) - huart3 0x200001f4 Data 112 main.o(.bss) - spi_transmit_buf 0x20000264 Data 32 main.o(.bss) - backup_spi1_recv_buf 0x20000284 Data 32 main.o(.bss) - spi_recv_buf 0x200002a4 Data 32 main.o(.bss) - my_kb_buf 0x200002c4 Data 12 main.o(.bss) - latest_mouse_event 0x200002d0 Data 12 main.o(.bss) - latest_gamepad_event 0x200002dc Data 12 main.o(.bss) - my_ps2_outbuf 0x200002e8 Data 9 main.o(.bss) - protocol_status_lookup 0x200002f1 Data 16 main.o(.bss) - __heap_base 0x20000308 Data 0 startup_stm32f072xb.o(HEAP) - __heap_limit 0x20000508 Data 0 startup_stm32f072xb.o(HEAP) - __initial_sp 0x20000908 Data 0 startup_stm32f072xb.o(STACK) + hspi1 0x200000d0 Data 100 main.o(.bss) + htim2 0x20000134 Data 64 main.o(.bss) + huart1 0x20000174 Data 112 main.o(.bss) + huart3 0x200001e4 Data 112 main.o(.bss) + spi_transmit_buf 0x20000254 Data 32 main.o(.bss) + backup_spi1_recv_buf 0x20000274 Data 32 main.o(.bss) + spi_recv_buf 0x20000294 Data 32 main.o(.bss) + my_kb_buf 0x200002b4 Data 12 main.o(.bss) + latest_mouse_event 0x200002c0 Data 12 main.o(.bss) + latest_gamepad_event 0x200002cc Data 12 main.o(.bss) + my_ps2_outbuf 0x200002d8 Data 9 main.o(.bss) + protocol_status_lookup 0x200002e1 Data 16 main.o(.bss) + __heap_base 0x200002f8 Data 0 startup_stm32f072xb.o(HEAP) + __heap_limit 0x200004f8 Data 0 startup_stm32f072xb.o(HEAP) + __initial_sp 0x200008f8 Data 0 startup_stm32f072xb.o(STACK) @@ -2420,248 +2418,246 @@ Memory Map of the image Image Entry point : 0x080000c1 - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000042a4, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000041fc, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004220, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004178, 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 3951 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) - 0x080000c0 0x080000c0 0x00000004 Code RO 4253 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) - 0x080000c4 0x080000c4 0x00000004 Code RO 4256 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) - 0x080000c8 0x080000c8 0x00000000 Code RO 4258 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) - 0x080000c8 0x080000c8 0x00000000 Code RO 4260 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) - 0x080000c8 0x080000c8 0x00000008 Code RO 4261 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) - 0x080000d0 0x080000d0 0x00000000 Code RO 4263 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) - 0x080000d0 0x080000d0 0x00000000 Code RO 4265 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) - 0x080000d0 0x080000d0 0x00000004 Code RO 4254 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x080000c0 0x080000c0 0x00000000 Code RO 3952 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x080000c0 0x080000c0 0x00000004 Code RO 4254 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x080000c4 0x080000c4 0x00000004 Code RO 4257 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x080000c8 0x080000c8 0x00000000 Code RO 4259 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x080000c8 0x080000c8 0x00000000 Code RO 4261 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x080000c8 0x080000c8 0x00000008 Code RO 4262 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x080000d0 0x080000d0 0x00000000 Code RO 4264 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x080000d0 0x080000d0 0x00000000 Code RO 4266 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x080000d0 0x080000d0 0x00000004 Code RO 4255 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x080000d4 0x080000d4 0x0000001c Code RO 4 .text startup_stm32f072xb.o - 0x080000f0 0x080000f0 0x0000002c Code RO 3954 .text mc_p.l(uidiv.o) - 0x0800011c 0x0800011c 0x00000024 Code RO 3958 .text mc_p.l(memcpya.o) - 0x08000140 0x08000140 0x00000024 Code RO 3960 .text mc_p.l(memseta.o) - 0x08000164 0x08000164 0x00000024 Code RO 4283 .text mc_p.l(init.o) - 0x08000188 0x08000188 0x0000000a Code RO 761 i.EXTI0_1_IRQHandler stm32f0xx_it.o - 0x08000192 0x08000192 0x00000048 Code RO 3398 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o - 0x080001da 0x080001da 0x0000001c Code RO 3201 i.HAL_Delay stm32f0xx_hal.o + 0x080000f0 0x080000f0 0x0000002c Code RO 3955 .text mc_p.l(uidiv.o) + 0x0800011c 0x0800011c 0x00000024 Code RO 3959 .text mc_p.l(memcpya.o) + 0x08000140 0x08000140 0x00000024 Code RO 3961 .text mc_p.l(memseta.o) + 0x08000164 0x08000164 0x00000024 Code RO 4284 .text mc_p.l(init.o) + 0x08000188 0x08000188 0x0000000a Code RO 762 i.EXTI0_1_IRQHandler stm32f0xx_it.o + 0x08000192 0x08000192 0x00000048 Code RO 3399 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o + 0x080001da 0x080001da 0x0000001c Code RO 3202 i.HAL_Delay stm32f0xx_hal.o 0x080001f6 0x080001f6 0x00000002 PAD 0x080001f8 0x080001f8 0x0000001c Code RO 592 i.HAL_GPIO_EXTI_Callback main.o - 0x08000214 0x08000214 0x00000018 Code RO 3335 i.HAL_GPIO_EXTI_IRQHandler stm32f0xx_hal_gpio.o - 0x0800022c 0x0800022c 0x00000158 Code RO 3336 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o - 0x08000384 0x08000384 0x0000000a Code RO 3338 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o - 0x0800038e 0x0800038e 0x00000008 Code RO 3339 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o - 0x08000396 0x08000396 0x0000000c Code RO 3340 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o + 0x08000214 0x08000214 0x00000018 Code RO 3336 i.HAL_GPIO_EXTI_IRQHandler stm32f0xx_hal_gpio.o + 0x0800022c 0x0800022c 0x00000158 Code RO 3337 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o + 0x08000384 0x08000384 0x0000000a Code RO 3339 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o + 0x0800038e 0x0800038e 0x00000008 Code RO 3340 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o + 0x08000396 0x08000396 0x0000000c Code RO 3341 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o 0x080003a2 0x080003a2 0x00000002 PAD - 0x080003a4 0x080003a4 0x0000000c Code RO 3205 i.HAL_GetTick stm32f0xx_hal.o - 0x080003b0 0x080003b0 0x0000004a Code RO 1319 i.HAL_I2CEx_ConfigAnalogFilter stm32f0xx_hal_i2c_ex.o - 0x080003fa 0x080003fa 0x00000048 Code RO 1320 i.HAL_I2CEx_ConfigDigitalFilter stm32f0xx_hal_i2c_ex.o + 0x080003a4 0x080003a4 0x0000000c Code RO 3206 i.HAL_GetTick stm32f0xx_hal.o + 0x080003b0 0x080003b0 0x0000004a Code RO 1320 i.HAL_I2CEx_ConfigAnalogFilter stm32f0xx_hal_i2c_ex.o + 0x080003fa 0x080003fa 0x00000048 Code RO 1321 i.HAL_I2CEx_ConfigDigitalFilter stm32f0xx_hal_i2c_ex.o 0x08000442 0x08000442 0x00000002 PAD - 0x08000444 0x08000444 0x000000b4 Code RO 906 i.HAL_I2C_Init stm32f0xx_hal_i2c.o - 0x080004f8 0x080004f8 0x0000011c Code RO 907 i.HAL_I2C_IsDeviceReady stm32f0xx_hal_i2c.o - 0x08000614 0x08000614 0x00000154 Code RO 925 i.HAL_I2C_Mem_Write stm32f0xx_hal_i2c.o - 0x08000768 0x08000768 0x0000004c Code RO 828 i.HAL_I2C_MspInit stm32f0xx_hal_msp.o - 0x080007b4 0x080007b4 0x00000064 Code RO 1369 i.HAL_IWDG_Init stm32f0xx_hal_iwdg.o - 0x08000818 0x08000818 0x00000010 Code RO 1370 i.HAL_IWDG_Refresh stm32f0xx_hal_iwdg.o - 0x08000828 0x08000828 0x00000010 Code RO 3209 i.HAL_IncTick stm32f0xx_hal.o - 0x08000838 0x08000838 0x00000020 Code RO 3210 i.HAL_Init stm32f0xx_hal.o - 0x08000858 0x08000858 0x00000022 Code RO 3211 i.HAL_InitTick stm32f0xx_hal.o - 0x0800087a 0x0800087a 0x00000002 PAD - 0x0800087c 0x0800087c 0x00000044 Code RO 829 i.HAL_MspInit stm32f0xx_hal_msp.o - 0x080008c0 0x080008c0 0x00000014 Code RO 3493 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o - 0x080008d4 0x080008d4 0x00000008 Code RO 3497 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o - 0x080008dc 0x080008dc 0x00000120 Code RO 3121 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o - 0x080009fc 0x080009fc 0x00000154 Code RO 3019 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o - 0x08000b50 0x08000b50 0x0000000c Code RO 3024 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o - 0x08000b5c 0x08000b5c 0x00000020 Code RO 3026 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o - 0x08000b7c 0x08000b7c 0x00000088 Code RO 3027 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o - 0x08000c04 0x08000c04 0x000003d8 Code RO 3030 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o - 0x08000fdc 0x08000fdc 0x00000002 Code RO 1402 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o - 0x08000fde 0x08000fde 0x00000002 PAD - 0x08000fe0 0x08000fe0 0x000000d4 Code RO 1405 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o - 0x080010b4 0x080010b4 0x000000b8 Code RO 1406 i.HAL_SPI_Init stm32f0xx_hal_spi.o - 0x0800116c 0x0800116c 0x00000054 Code RO 831 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o - 0x080011c0 0x080011c0 0x00000002 Code RO 1412 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o - 0x080011c2 0x080011c2 0x00000002 PAD - 0x080011c4 0x080011c4 0x000000d4 Code RO 1417 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o - 0x08001298 0x08001298 0x0000017c Code RO 593 i.HAL_SPI_TxRxCpltCallback main.o - 0x08001414 0x08001414 0x00000018 Code RO 3499 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o - 0x0800142c 0x0800142c 0x00000002 Code RO 3500 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o - 0x0800142e 0x0800142e 0x00000002 PAD - 0x08001430 0x08001430 0x00000030 Code RO 3501 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o - 0x08001460 0x08001460 0x00000008 Code RO 3502 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o - 0x08001468 0x08001468 0x00000048 Code RO 2394 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o - 0x080014b0 0x080014b0 0x00000034 Code RO 1740 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o - 0x080014e4 0x080014e4 0x00000024 Code RO 833 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o - 0x08001508 0x08001508 0x00000018 Code RO 1743 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o - 0x08001520 0x08001520 0x000000ee Code RO 1749 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o - 0x0800160e 0x0800160e 0x00000002 Code RO 2963 i.HAL_UARTEx_WakeupCallback stm32f0xx_hal_uart_ex.o - 0x08001610 0x08001610 0x00000002 Code RO 2638 i.HAL_UART_ErrorCallback stm32f0xx_hal_uart.o - 0x08001612 0x08001612 0x00000002 PAD - 0x08001614 0x08001614 0x00000134 Code RO 2641 i.HAL_UART_IRQHandler stm32f0xx_hal_uart.o - 0x08001748 0x08001748 0x0000006c Code RO 2642 i.HAL_UART_Init stm32f0xx_hal_uart.o - 0x080017b4 0x080017b4 0x00000090 Code RO 835 i.HAL_UART_MspInit stm32f0xx_hal_msp.o - 0x08001844 0x08001844 0x00000002 Code RO 2648 i.HAL_UART_RxCpltCallback stm32f0xx_hal_uart.o - 0x08001846 0x08001846 0x000000c8 Code RO 2650 i.HAL_UART_Transmit stm32f0xx_hal_uart.o - 0x0800190e 0x0800190e 0x00000058 Code RO 2652 i.HAL_UART_Transmit_IT stm32f0xx_hal_uart.o - 0x08001966 0x08001966 0x00000002 PAD - 0x08001968 0x08001968 0x0000000c Code RO 594 i.HAL_UART_TxCpltCallback main.o - 0x08001974 0x08001974 0x00000002 Code RO 762 i.HardFault_Handler stm32f0xx_it.o - 0x08001976 0x08001976 0x00000022 Code RO 948 i.I2C_Flush_TXDR stm32f0xx_hal_i2c.o - 0x08001998 0x08001998 0x00000074 Code RO 956 i.I2C_IsAcknowledgeFailed stm32f0xx_hal_i2c.o - 0x08001a0c 0x08001a0c 0x0000006a Code RO 960 i.I2C_RequestMemoryWrite stm32f0xx_hal_i2c.o - 0x08001a76 0x08001a76 0x00000002 PAD - 0x08001a78 0x08001a78 0x00000024 Code RO 963 i.I2C_TransferConfig stm32f0xx_hal_i2c.o - 0x08001a9c 0x08001a9c 0x00000048 Code RO 964 i.I2C_WaitOnFlagUntilTimeout stm32f0xx_hal_i2c.o - 0x08001ae4 0x08001ae4 0x0000004e Code RO 966 i.I2C_WaitOnSTOPFlagUntilTimeout stm32f0xx_hal_i2c.o - 0x08001b32 0x08001b32 0x00000052 Code RO 967 i.I2C_WaitOnTXISFlagUntilTimeout stm32f0xx_hal_i2c.o - 0x08001b84 0x08001b84 0x00000158 Code RO 595 i.MX_GPIO_Init main.o - 0x08001cdc 0x08001cdc 0x00000054 Code RO 596 i.MX_I2C2_Init main.o - 0x08001d30 0x08001d30 0x0000003c Code RO 597 i.MX_SPI1_Init main.o - 0x08001d6c 0x08001d6c 0x00000054 Code RO 598 i.MX_TIM2_Init main.o - 0x08001dc0 0x08001dc0 0x0000004c Code RO 599 i.MX_USART1_UART_Init main.o - 0x08001e0c 0x08001e0c 0x0000005c Code RO 600 i.MX_USART3_UART_Init main.o - 0x08001e68 0x08001e68 0x00000002 Code RO 763 i.NMI_Handler stm32f0xx_it.o - 0x08001e6a 0x08001e6a 0x00000002 PAD - 0x08001e6c 0x08001e6c 0x00000044 Code RO 3503 i.NVIC_SetPriority stm32f0xx_hal_cortex.o - 0x08001eb0 0x08001eb0 0x00000002 Code RO 764 i.PendSV_Handler stm32f0xx_it.o - 0x08001eb2 0x08001eb2 0x00000002 PAD - 0x08001eb4 0x08001eb4 0x00000010 Code RO 765 i.SPI1_IRQHandler stm32f0xx_it.o - 0x08001ec4 0x08001ec4 0x00000036 Code RO 1424 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o - 0x08001efa 0x08001efa 0x0000005e Code RO 1425 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o - 0x08001f58 0x08001f58 0x00000034 Code RO 1426 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o - 0x08001f8c 0x08001f8c 0x00000048 Code RO 1427 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o - 0x08001fd4 0x08001fd4 0x00000052 Code RO 1430 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o - 0x08002026 0x08002026 0x00000012 Code RO 1433 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o - 0x08002038 0x08002038 0x0000004c Code RO 1444 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o - 0x08002084 0x08002084 0x00000096 Code RO 1449 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o - 0x0800211a 0x0800211a 0x0000008c Code RO 1450 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o - 0x080021a6 0x080021a6 0x00000002 Code RO 766 i.SVC_Handler stm32f0xx_it.o - 0x080021a8 0x080021a8 0x0000000c Code RO 767 i.SysTick_Handler stm32f0xx_it.o - 0x080021b4 0x080021b4 0x0000006c Code RO 601 i.SystemClock_Config main.o - 0x08002220 0x08002220 0x0000005c Code RO 3920 i.SystemInit system_stm32f0xx.o - 0x0800227c 0x0800227c 0x00000094 Code RO 1826 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o - 0x08002310 0x08002310 0x00000016 Code RO 1833 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o - 0x08002326 0x08002326 0x00000010 Code RO 1834 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o - 0x08002336 0x08002336 0x00000022 Code RO 1840 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o - 0x08002358 0x08002358 0x00000026 Code RO 1842 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o - 0x0800237e 0x0800237e 0x000000ca Code RO 2655 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o - 0x08002448 0x08002448 0x00000074 Code RO 2656 i.UART_CheckIdleState stm32f0xx_hal_uart.o - 0x080024bc 0x080024bc 0x00000014 Code RO 2657 i.UART_DMAAbortOnError stm32f0xx_hal_uart.o - 0x080024d0 0x080024d0 0x0000001e Code RO 2667 i.UART_EndRxTransfer stm32f0xx_hal_uart.o - 0x080024ee 0x080024ee 0x0000001a Code RO 2668 i.UART_EndTransmit_IT stm32f0xx_hal_uart.o - 0x08002508 0x08002508 0x0000007a Code RO 2670 i.UART_Receive_IT stm32f0xx_hal_uart.o - 0x08002582 0x08002582 0x00000002 PAD - 0x08002584 0x08002584 0x0000015c Code RO 2671 i.UART_SetConfig stm32f0xx_hal_uart.o - 0x080026e0 0x080026e0 0x00000066 Code RO 2672 i.UART_Transmit_IT stm32f0xx_hal_uart.o - 0x08002746 0x08002746 0x00000062 Code RO 2673 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o - 0x080027a8 0x080027a8 0x00000010 Code RO 768 i.USART3_4_IRQHandler stm32f0xx_it.o - 0x080027b8 0x080027b8 0x00000020 Code RO 4053 i.__0printf$3 mc_p.l(printf3.o) - 0x080027d8 0x080027d8 0x0000001a Code RO 377 i.__ARM_common_switch8 ps2kb.o - 0x080027f2 0x080027f2 0x0000000e Code RO 4295 i.__scatterload_copy mc_p.l(handlers.o) - 0x08002800 0x08002800 0x00000002 Code RO 4296 i.__scatterload_null mc_p.l(handlers.o) - 0x08002802 0x08002802 0x0000000e Code RO 4297 i.__scatterload_zeroinit mc_p.l(handlers.o) - 0x08002810 0x08002810 0x000001cc Code RO 4060 i._printf_core mc_p.l(printf3.o) - 0x080029dc 0x080029dc 0x00000008 Code RO 603 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 604 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 - 0x08002a86 0x08002a86 0x00000016 Code RO 156 i.gamepad_buf_peek helpers.o - 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 605 i.gamepad_update main.o - 0x08002b70 0x08002b70 0x0000003c Code RO 606 i.gameport_init main.o - 0x08002bac 0x08002bac 0x0000009c Code RO 607 i.handle_protocol_switch main.o - 0x08002c48 0x08002c48 0x00000014 Code RO 608 i.is_protocol_enabled main.o - 0x08002c5c 0x08002c5c 0x00000030 Code RO 159 i.kb_buf_add helpers.o - 0x08002c8c 0x08002c8c 0x00000020 Code RO 160 i.kb_buf_init helpers.o - 0x08002cac 0x08002cac 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o - 0x08002cc8 0x08002cc8 0x00000020 Code RO 163 i.kb_buf_peek helpers.o - 0x08002ce8 0x08002ce8 0x00000018 Code RO 164 i.kb_buf_pop helpers.o - 0x08002d00 0x08002d00 0x0000001c Code RO 165 i.kb_buf_reset helpers.o - 0x08002d1c 0x08002d1c 0x00000100 Code RO 300 i.keyboard_reply ps2kb.o - 0x08002e1c 0x08002e1c 0x00000200 Code RO 609 i.main main.o - 0x0800301c 0x0800301c 0x0000006c Code RO 4226 i.malloc mc_p.l(malloc.o) - 0x08003088 0x08003088 0x00000020 Code RO 487 i.mcp4451_is_available mcp4451.o - 0x080030a8 0x080030a8 0x0000002c Code RO 488 i.mcp4451_reset mcp4451.o - 0x080030d4 0x080030d4 0x00000038 Code RO 489 i.mcp4451_write_wiper mcp4451.o - 0x0800310c 0x0800310c 0x00000010 Code RO 14 i.micros delay_us.o - 0x0800311c 0x0800311c 0x000000c4 Code RO 610 i.microsoft_serial_mouse_update main.o - 0x080031e0 0x080031e0 0x00000032 Code RO 166 i.mouse_buf_add helpers.o - 0x08003212 0x08003212 0x00000018 Code RO 167 i.mouse_buf_init helpers.o - 0x0800322a 0x0800322a 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o - 0x08003246 0x08003246 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o - 0x0800325c 0x0800325c 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o - 0x08003274 0x08003274 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o - 0x0800328a 0x0800328a 0x00000002 PAD - 0x0800328c 0x0800328c 0x00000020 Code RO 611 i.protocol_status_lookup_init main.o - 0x080032ac 0x080032ac 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o - 0x080032f0 0x080032f0 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o - 0x0800330c 0x0800330c 0x0000002c Code RO 303 i.ps2kb_press_key ps2kb.o - 0x08003338 0x08003338 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o - 0x08003364 0x08003364 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o - 0x080034f4 0x080034f4 0x000000fc Code RO 306 i.ps2kb_read ps2kb.o - 0x080035f0 0x080035f0 0x00000020 Code RO 307 i.ps2kb_release_lines ps2kb.o - 0x08003610 0x08003610 0x00000010 Code RO 308 i.ps2kb_reset ps2kb.o - 0x08003620 0x08003620 0x000000b4 Code RO 612 i.ps2kb_update main.o - 0x080036d4 0x080036d4 0x00000044 Code RO 309 i.ps2kb_write ps2kb.o - 0x08003718 0x08003718 0x00000124 Code RO 310 i.ps2kb_write_nowait ps2kb.o - 0x0800383c 0x0800383c 0x00000060 Code RO 388 i.ps2mouse_get_bus_status ps2mouse.o - 0x0800389c 0x0800389c 0x000000ac Code RO 389 i.ps2mouse_get_outgoing_data ps2mouse.o - 0x08003948 0x08003948 0x00000198 Code RO 390 i.ps2mouse_host_req_reply ps2mouse.o - 0x08003ae0 0x08003ae0 0x0000001c Code RO 391 i.ps2mouse_init ps2mouse.o - 0x08003afc 0x08003afc 0x000000f8 Code RO 392 i.ps2mouse_read ps2mouse.o - 0x08003bf4 0x08003bf4 0x00000020 Code RO 393 i.ps2mouse_release_lines ps2mouse.o - 0x08003c14 0x08003c14 0x00000018 Code RO 394 i.ps2mouse_reset ps2mouse.o - 0x08003c2c 0x08003c2c 0x00000024 Code RO 395 i.ps2mouse_restore_defaults ps2mouse.o - 0x08003c50 0x08003c50 0x00000026 Code RO 396 i.ps2mouse_send_update ps2mouse.o - 0x08003c76 0x08003c76 0x00000002 PAD - 0x08003c78 0x08003c78 0x00000064 Code RO 613 i.ps2mouse_update main.o - 0x08003cdc 0x08003cdc 0x00000026 Code RO 397 i.ps2mouse_wait_for_idle ps2mouse.o - 0x08003d02 0x08003d02 0x0000001a Code RO 398 i.ps2mouse_write ps2mouse.o - 0x08003d1c 0x08003d1c 0x00000022 Code RO 399 i.ps2mouse_write_delay_start ps2mouse.o - 0x08003d3e 0x08003d3e 0x00000002 PAD - 0x08003d40 0x08003d40 0x00000120 Code RO 400 i.ps2mouse_write_nowait ps2mouse.o - 0x08003e60 0x08003e60 0x00000010 Code RO 401 i.reset_accumulators ps2mouse.o - 0x08003e70 0x08003e70 0x00000078 Code RO 614 i.spi_error_dump_reboot main.o - 0x08003ee8 0x08003ee8 0x00000030 Code RO 525 i.wait_for_clk_high xt_kb.o - 0x08003f18 0x08003f18 0x00000040 Code RO 526 i.xtkb_check_for_softreset xt_kb.o - 0x08003f58 0x08003f58 0x00000014 Code RO 527 i.xtkb_enable xt_kb.o - 0x08003f6c 0x08003f6c 0x00000014 Code RO 528 i.xtkb_init xt_kb.o - 0x08003f80 0x08003f80 0x00000078 Code RO 529 i.xtkb_press_key xt_kb.o - 0x08003ff8 0x08003ff8 0x00000020 Code RO 530 i.xtkb_release_lines xt_kb.o - 0x08004018 0x08004018 0x00000020 Code RO 531 i.xtkb_reset_bus xt_kb.o - 0x08004038 0x08004038 0x0000003c Code RO 615 i.xtkb_update main.o - 0x08004074 0x08004074 0x000000c0 Code RO 532 i.xtkb_write xt_kb.o - 0x08004134 0x08004134 0x00000079 Data RO 311 .constdata ps2kb.o - 0x080041ad 0x080041ad 0x00000004 Data RO 490 .constdata mcp4451.o - 0x080041b1 0x080041b1 0x00000037 Data RO 621 .constdata main.o - 0x080041e8 0x080041e8 0x00000010 Data RO 3921 .constdata system_stm32f0xx.o - 0x080041f8 0x080041f8 0x00000008 Data RO 3922 .constdata system_stm32f0xx.o - 0x08004200 0x08004200 0x00000020 Data RO 4293 Region$$Table anon$$obj.o + 0x08000444 0x08000444 0x000000b4 Code RO 907 i.HAL_I2C_Init stm32f0xx_hal_i2c.o + 0x080004f8 0x080004f8 0x0000011c Code RO 908 i.HAL_I2C_IsDeviceReady stm32f0xx_hal_i2c.o + 0x08000614 0x08000614 0x00000154 Code RO 926 i.HAL_I2C_Mem_Write stm32f0xx_hal_i2c.o + 0x08000768 0x08000768 0x0000004c Code RO 829 i.HAL_I2C_MspInit stm32f0xx_hal_msp.o + 0x080007b4 0x080007b4 0x00000010 Code RO 3210 i.HAL_IncTick stm32f0xx_hal.o + 0x080007c4 0x080007c4 0x00000020 Code RO 3211 i.HAL_Init stm32f0xx_hal.o + 0x080007e4 0x080007e4 0x00000022 Code RO 3212 i.HAL_InitTick stm32f0xx_hal.o + 0x08000806 0x08000806 0x00000002 PAD + 0x08000808 0x08000808 0x00000044 Code RO 830 i.HAL_MspInit stm32f0xx_hal_msp.o + 0x0800084c 0x0800084c 0x00000014 Code RO 3494 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o + 0x08000860 0x08000860 0x00000008 Code RO 3498 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o + 0x08000868 0x08000868 0x00000120 Code RO 3122 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o + 0x08000988 0x08000988 0x00000154 Code RO 3020 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o + 0x08000adc 0x08000adc 0x0000000c Code RO 3025 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o + 0x08000ae8 0x08000ae8 0x00000020 Code RO 3027 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o + 0x08000b08 0x08000b08 0x00000088 Code RO 3028 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o + 0x08000b90 0x08000b90 0x000003d8 Code RO 3031 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o + 0x08000f68 0x08000f68 0x00000002 Code RO 1403 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o + 0x08000f6a 0x08000f6a 0x00000002 PAD + 0x08000f6c 0x08000f6c 0x000000d4 Code RO 1406 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o + 0x08001040 0x08001040 0x000000b8 Code RO 1407 i.HAL_SPI_Init stm32f0xx_hal_spi.o + 0x080010f8 0x080010f8 0x00000054 Code RO 832 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o + 0x0800114c 0x0800114c 0x00000002 Code RO 1413 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o + 0x0800114e 0x0800114e 0x00000002 PAD + 0x08001150 0x08001150 0x000000d4 Code RO 1418 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o + 0x08001224 0x08001224 0x0000017c Code RO 593 i.HAL_SPI_TxRxCpltCallback main.o + 0x080013a0 0x080013a0 0x00000018 Code RO 3500 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o + 0x080013b8 0x080013b8 0x00000002 Code RO 3501 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o + 0x080013ba 0x080013ba 0x00000002 PAD + 0x080013bc 0x080013bc 0x00000030 Code RO 3502 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o + 0x080013ec 0x080013ec 0x00000008 Code RO 3503 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o + 0x080013f4 0x080013f4 0x00000048 Code RO 2395 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o + 0x0800143c 0x0800143c 0x00000034 Code RO 1741 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o + 0x08001470 0x08001470 0x00000024 Code RO 834 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o + 0x08001494 0x08001494 0x00000018 Code RO 1744 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o + 0x080014ac 0x080014ac 0x000000ee Code RO 1750 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o + 0x0800159a 0x0800159a 0x00000002 Code RO 2964 i.HAL_UARTEx_WakeupCallback stm32f0xx_hal_uart_ex.o + 0x0800159c 0x0800159c 0x00000002 Code RO 2639 i.HAL_UART_ErrorCallback stm32f0xx_hal_uart.o + 0x0800159e 0x0800159e 0x00000002 PAD + 0x080015a0 0x080015a0 0x00000134 Code RO 2642 i.HAL_UART_IRQHandler stm32f0xx_hal_uart.o + 0x080016d4 0x080016d4 0x0000006c Code RO 2643 i.HAL_UART_Init stm32f0xx_hal_uart.o + 0x08001740 0x08001740 0x00000090 Code RO 836 i.HAL_UART_MspInit stm32f0xx_hal_msp.o + 0x080017d0 0x080017d0 0x00000002 Code RO 2649 i.HAL_UART_RxCpltCallback stm32f0xx_hal_uart.o + 0x080017d2 0x080017d2 0x000000c8 Code RO 2651 i.HAL_UART_Transmit stm32f0xx_hal_uart.o + 0x0800189a 0x0800189a 0x00000058 Code RO 2653 i.HAL_UART_Transmit_IT stm32f0xx_hal_uart.o + 0x080018f2 0x080018f2 0x00000002 PAD + 0x080018f4 0x080018f4 0x0000000c Code RO 594 i.HAL_UART_TxCpltCallback main.o + 0x08001900 0x08001900 0x00000002 Code RO 763 i.HardFault_Handler stm32f0xx_it.o + 0x08001902 0x08001902 0x00000022 Code RO 949 i.I2C_Flush_TXDR stm32f0xx_hal_i2c.o + 0x08001924 0x08001924 0x00000074 Code RO 957 i.I2C_IsAcknowledgeFailed stm32f0xx_hal_i2c.o + 0x08001998 0x08001998 0x0000006a Code RO 961 i.I2C_RequestMemoryWrite stm32f0xx_hal_i2c.o + 0x08001a02 0x08001a02 0x00000002 PAD + 0x08001a04 0x08001a04 0x00000024 Code RO 964 i.I2C_TransferConfig stm32f0xx_hal_i2c.o + 0x08001a28 0x08001a28 0x00000048 Code RO 965 i.I2C_WaitOnFlagUntilTimeout stm32f0xx_hal_i2c.o + 0x08001a70 0x08001a70 0x0000004e Code RO 967 i.I2C_WaitOnSTOPFlagUntilTimeout stm32f0xx_hal_i2c.o + 0x08001abe 0x08001abe 0x00000052 Code RO 968 i.I2C_WaitOnTXISFlagUntilTimeout stm32f0xx_hal_i2c.o + 0x08001b10 0x08001b10 0x00000158 Code RO 595 i.MX_GPIO_Init main.o + 0x08001c68 0x08001c68 0x00000054 Code RO 596 i.MX_I2C2_Init main.o + 0x08001cbc 0x08001cbc 0x0000003c Code RO 597 i.MX_SPI1_Init main.o + 0x08001cf8 0x08001cf8 0x00000054 Code RO 598 i.MX_TIM2_Init main.o + 0x08001d4c 0x08001d4c 0x0000004c Code RO 599 i.MX_USART1_UART_Init main.o + 0x08001d98 0x08001d98 0x0000005c Code RO 600 i.MX_USART3_UART_Init main.o + 0x08001df4 0x08001df4 0x00000002 Code RO 764 i.NMI_Handler stm32f0xx_it.o + 0x08001df6 0x08001df6 0x00000002 PAD + 0x08001df8 0x08001df8 0x00000044 Code RO 3504 i.NVIC_SetPriority stm32f0xx_hal_cortex.o + 0x08001e3c 0x08001e3c 0x00000002 Code RO 765 i.PendSV_Handler stm32f0xx_it.o + 0x08001e3e 0x08001e3e 0x00000002 PAD + 0x08001e40 0x08001e40 0x00000010 Code RO 766 i.SPI1_IRQHandler stm32f0xx_it.o + 0x08001e50 0x08001e50 0x00000036 Code RO 1425 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o + 0x08001e86 0x08001e86 0x0000005e Code RO 1426 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o + 0x08001ee4 0x08001ee4 0x00000034 Code RO 1427 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o + 0x08001f18 0x08001f18 0x00000048 Code RO 1428 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o + 0x08001f60 0x08001f60 0x00000052 Code RO 1431 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o + 0x08001fb2 0x08001fb2 0x00000012 Code RO 1434 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o + 0x08001fc4 0x08001fc4 0x0000004c Code RO 1445 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o + 0x08002010 0x08002010 0x00000096 Code RO 1450 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o + 0x080020a6 0x080020a6 0x0000008c Code RO 1451 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o + 0x08002132 0x08002132 0x00000002 Code RO 767 i.SVC_Handler stm32f0xx_it.o + 0x08002134 0x08002134 0x0000000c Code RO 768 i.SysTick_Handler stm32f0xx_it.o + 0x08002140 0x08002140 0x0000006c Code RO 601 i.SystemClock_Config main.o + 0x080021ac 0x080021ac 0x0000005c Code RO 3921 i.SystemInit system_stm32f0xx.o + 0x08002208 0x08002208 0x00000094 Code RO 1827 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o + 0x0800229c 0x0800229c 0x00000016 Code RO 1834 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o + 0x080022b2 0x080022b2 0x00000010 Code RO 1835 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o + 0x080022c2 0x080022c2 0x00000022 Code RO 1841 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o + 0x080022e4 0x080022e4 0x00000026 Code RO 1843 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o + 0x0800230a 0x0800230a 0x000000ca Code RO 2656 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o + 0x080023d4 0x080023d4 0x00000074 Code RO 2657 i.UART_CheckIdleState stm32f0xx_hal_uart.o + 0x08002448 0x08002448 0x00000014 Code RO 2658 i.UART_DMAAbortOnError stm32f0xx_hal_uart.o + 0x0800245c 0x0800245c 0x0000001e Code RO 2668 i.UART_EndRxTransfer stm32f0xx_hal_uart.o + 0x0800247a 0x0800247a 0x0000001a Code RO 2669 i.UART_EndTransmit_IT stm32f0xx_hal_uart.o + 0x08002494 0x08002494 0x0000007a Code RO 2671 i.UART_Receive_IT stm32f0xx_hal_uart.o + 0x0800250e 0x0800250e 0x00000002 PAD + 0x08002510 0x08002510 0x0000015c Code RO 2672 i.UART_SetConfig stm32f0xx_hal_uart.o + 0x0800266c 0x0800266c 0x00000066 Code RO 2673 i.UART_Transmit_IT stm32f0xx_hal_uart.o + 0x080026d2 0x080026d2 0x00000062 Code RO 2674 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o + 0x08002734 0x08002734 0x00000010 Code RO 769 i.USART3_4_IRQHandler stm32f0xx_it.o + 0x08002744 0x08002744 0x00000020 Code RO 4054 i.__0printf$3 mc_p.l(printf3.o) + 0x08002764 0x08002764 0x0000001a Code RO 377 i.__ARM_common_switch8 ps2kb.o + 0x0800277e 0x0800277e 0x0000000e Code RO 4296 i.__scatterload_copy mc_p.l(handlers.o) + 0x0800278c 0x0800278c 0x00000002 Code RO 4297 i.__scatterload_null mc_p.l(handlers.o) + 0x0800278e 0x0800278e 0x0000000e Code RO 4298 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x0800279c 0x0800279c 0x000001cc Code RO 4061 i._printf_core mc_p.l(printf3.o) + 0x08002968 0x08002968 0x00000008 Code RO 603 i.byte_to_int16_t main.o + 0x08002970 0x08002970 0x00000014 Code RO 12 i.delay_us delay_us.o + 0x08002984 0x08002984 0x00000010 Code RO 13 i.delay_us_init delay_us.o + 0x08002994 0x08002994 0x00000018 Code RO 604 i.fputc main.o + 0x080029ac 0x080029ac 0x00000032 Code RO 152 i.gamepad_buf_add helpers.o + 0x080029de 0x080029de 0x00000018 Code RO 153 i.gamepad_buf_init helpers.o + 0x080029f6 0x080029f6 0x0000001c Code RO 155 i.gamepad_buf_is_full helpers.o + 0x08002a12 0x08002a12 0x00000016 Code RO 156 i.gamepad_buf_peek helpers.o + 0x08002a28 0x08002a28 0x00000018 Code RO 157 i.gamepad_buf_pop helpers.o + 0x08002a40 0x08002a40 0x00000016 Code RO 158 i.gamepad_buf_reset helpers.o + 0x08002a56 0x08002a56 0x00000002 PAD + 0x08002a58 0x08002a58 0x000000a4 Code RO 605 i.gamepad_update main.o + 0x08002afc 0x08002afc 0x0000003c Code RO 606 i.gameport_init main.o + 0x08002b38 0x08002b38 0x0000009c Code RO 607 i.handle_protocol_switch main.o + 0x08002bd4 0x08002bd4 0x00000014 Code RO 608 i.is_protocol_enabled main.o + 0x08002be8 0x08002be8 0x00000030 Code RO 159 i.kb_buf_add helpers.o + 0x08002c18 0x08002c18 0x00000020 Code RO 160 i.kb_buf_init helpers.o + 0x08002c38 0x08002c38 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o + 0x08002c54 0x08002c54 0x00000020 Code RO 163 i.kb_buf_peek helpers.o + 0x08002c74 0x08002c74 0x00000018 Code RO 164 i.kb_buf_pop helpers.o + 0x08002c8c 0x08002c8c 0x0000001c Code RO 165 i.kb_buf_reset helpers.o + 0x08002ca8 0x08002ca8 0x00000100 Code RO 300 i.keyboard_reply ps2kb.o + 0x08002da8 0x08002da8 0x000001d0 Code RO 609 i.main main.o + 0x08002f78 0x08002f78 0x0000006c Code RO 4227 i.malloc mc_p.l(malloc.o) + 0x08002fe4 0x08002fe4 0x00000020 Code RO 487 i.mcp4451_is_available mcp4451.o + 0x08003004 0x08003004 0x0000002c Code RO 488 i.mcp4451_reset mcp4451.o + 0x08003030 0x08003030 0x00000038 Code RO 489 i.mcp4451_write_wiper mcp4451.o + 0x08003068 0x08003068 0x00000010 Code RO 14 i.micros delay_us.o + 0x08003078 0x08003078 0x000000c4 Code RO 610 i.microsoft_serial_mouse_update main.o + 0x0800313c 0x0800313c 0x00000032 Code RO 166 i.mouse_buf_add helpers.o + 0x0800316e 0x0800316e 0x00000018 Code RO 167 i.mouse_buf_init helpers.o + 0x08003186 0x08003186 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o + 0x080031a2 0x080031a2 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o + 0x080031b8 0x080031b8 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o + 0x080031d0 0x080031d0 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o + 0x080031e6 0x080031e6 0x00000002 PAD + 0x080031e8 0x080031e8 0x00000020 Code RO 611 i.protocol_status_lookup_init main.o + 0x08003208 0x08003208 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o + 0x0800324c 0x0800324c 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o + 0x08003268 0x08003268 0x0000002c Code RO 303 i.ps2kb_press_key ps2kb.o + 0x08003294 0x08003294 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o + 0x080032c0 0x080032c0 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o + 0x08003450 0x08003450 0x000000fc Code RO 306 i.ps2kb_read ps2kb.o + 0x0800354c 0x0800354c 0x00000020 Code RO 307 i.ps2kb_release_lines ps2kb.o + 0x0800356c 0x0800356c 0x00000010 Code RO 308 i.ps2kb_reset ps2kb.o + 0x0800357c 0x0800357c 0x000000b4 Code RO 612 i.ps2kb_update main.o + 0x08003630 0x08003630 0x00000044 Code RO 309 i.ps2kb_write ps2kb.o + 0x08003674 0x08003674 0x00000124 Code RO 310 i.ps2kb_write_nowait ps2kb.o + 0x08003798 0x08003798 0x00000060 Code RO 388 i.ps2mouse_get_bus_status ps2mouse.o + 0x080037f8 0x080037f8 0x000000ac Code RO 389 i.ps2mouse_get_outgoing_data ps2mouse.o + 0x080038a4 0x080038a4 0x00000170 Code RO 390 i.ps2mouse_host_req_reply ps2mouse.o + 0x08003a14 0x08003a14 0x0000001c Code RO 391 i.ps2mouse_init ps2mouse.o + 0x08003a30 0x08003a30 0x000000f8 Code RO 392 i.ps2mouse_read ps2mouse.o + 0x08003b28 0x08003b28 0x00000020 Code RO 393 i.ps2mouse_release_lines ps2mouse.o + 0x08003b48 0x08003b48 0x00000018 Code RO 394 i.ps2mouse_reset ps2mouse.o + 0x08003b60 0x08003b60 0x00000024 Code RO 395 i.ps2mouse_restore_defaults ps2mouse.o + 0x08003b84 0x08003b84 0x00000022 Code RO 396 i.ps2mouse_send_update ps2mouse.o + 0x08003ba6 0x08003ba6 0x00000002 PAD + 0x08003ba8 0x08003ba8 0x00000088 Code RO 613 i.ps2mouse_update main.o + 0x08003c30 0x08003c30 0x00000026 Code RO 397 i.ps2mouse_wait_for_idle ps2mouse.o + 0x08003c56 0x08003c56 0x0000001a Code RO 398 i.ps2mouse_write ps2mouse.o + 0x08003c70 0x08003c70 0x00000022 Code RO 399 i.ps2mouse_write_delay_start ps2mouse.o + 0x08003c92 0x08003c92 0x00000002 PAD + 0x08003c94 0x08003c94 0x00000124 Code RO 400 i.ps2mouse_write_nowait ps2mouse.o + 0x08003db8 0x08003db8 0x00000010 Code RO 401 i.reset_accumulators ps2mouse.o + 0x08003dc8 0x08003dc8 0x00000078 Code RO 614 i.spi_error_dump_reboot main.o + 0x08003e40 0x08003e40 0x00000030 Code RO 525 i.wait_for_clk_high xt_kb.o + 0x08003e70 0x08003e70 0x00000040 Code RO 526 i.xtkb_check_for_softreset xt_kb.o + 0x08003eb0 0x08003eb0 0x00000014 Code RO 527 i.xtkb_enable xt_kb.o + 0x08003ec4 0x08003ec4 0x00000014 Code RO 528 i.xtkb_init xt_kb.o + 0x08003ed8 0x08003ed8 0x00000078 Code RO 529 i.xtkb_press_key xt_kb.o + 0x08003f50 0x08003f50 0x00000020 Code RO 530 i.xtkb_release_lines xt_kb.o + 0x08003f70 0x08003f70 0x00000020 Code RO 531 i.xtkb_reset_bus xt_kb.o + 0x08003f90 0x08003f90 0x0000003c Code RO 615 i.xtkb_update main.o + 0x08003fcc 0x08003fcc 0x000000c0 Code RO 532 i.xtkb_write xt_kb.o + 0x0800408c 0x0800408c 0x00000079 Data RO 311 .constdata ps2kb.o + 0x08004105 0x08004105 0x00000004 Data RO 490 .constdata mcp4451.o + 0x08004109 0x08004109 0x00000037 Data RO 622 .constdata main.o + 0x08004140 0x08004140 0x00000010 Data RO 3922 .constdata system_stm32f0xx.o + 0x08004150 0x08004150 0x00000008 Data RO 3923 .constdata system_stm32f0xx.o + 0x08004158 0x08004158 0x00000020 Data RO 4294 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004220, Size: 0x00000908, Max: 0x00004000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004178, Size: 0x000008f8, Max: 0x00004000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08004220 0x00000004 Data RW 15 .data delay_us.o - 0x20000004 0x08004224 0x00000014 Data RW 312 .data ps2kb.o - 0x20000018 0x08004238 0x00000020 Data RW 402 .data ps2mouse.o - 0x20000038 0x08004258 0x00000014 Data RW 533 .data xt_kb.o - 0x2000004c 0x0800426c 0x00000024 Data RW 622 .data main.o - 0x20000070 0x08004290 0x00000004 Data RW 3216 .data stm32f0xx_hal.o - 0x20000074 0x08004294 0x00000004 Data RW 3923 .data system_stm32f0xx.o - 0x20000078 0x08004298 0x00000004 Data RW 4267 .data mc_p.l(stdout.o) - 0x2000007c 0x0800429c 0x00000004 Data RW 4270 .data mc_p.l(mvars.o) - 0x20000080 0x080042a0 0x00000004 Data RW 4271 .data mc_p.l(mvars.o) - 0x20000084 - 0x0000027d Zero RW 616 .bss main.o - 0x20000301 0x080042a4 0x00000007 PAD - 0x20000308 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o - 0x20000508 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o + 0x20000000 0x08004178 0x00000004 Data RW 15 .data delay_us.o + 0x20000004 0x0800417c 0x00000014 Data RW 312 .data ps2kb.o + 0x20000018 0x08004190 0x00000020 Data RW 402 .data ps2mouse.o + 0x20000038 0x080041b0 0x00000014 Data RW 533 .data xt_kb.o + 0x2000004c 0x080041c4 0x00000024 Data RW 623 .data main.o + 0x20000070 0x080041e8 0x00000004 Data RW 3217 .data stm32f0xx_hal.o + 0x20000074 0x080041ec 0x00000004 Data RW 3924 .data system_stm32f0xx.o + 0x20000078 0x080041f0 0x00000004 Data RW 4268 .data mc_p.l(stdout.o) + 0x2000007c 0x080041f4 0x00000004 Data RW 4271 .data mc_p.l(mvars.o) + 0x20000080 0x080041f8 0x00000004 Data RW 4272 .data mc_p.l(mvars.o) + 0x20000084 - 0x0000026d Zero RW 616 .bss main.o + 0x200002f1 0x080041fc 0x00000007 PAD + 0x200002f8 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o + 0x200004f8 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o ============================================================================== @@ -2673,10 +2669,10 @@ Image component sizes 52 10 0 4 0 506987 delay_us.o 532 0 0 0 0 11932 helpers.o - 2900 356 55 36 637 22444 main.o + 2888 352 55 36 621 22380 main.o 132 22 4 0 0 2287 mcp4451.o 1526 76 121 20 0 9446 ps2kb.o - 1484 72 0 32 0 11410 ps2mouse.o + 1444 72 0 32 0 11374 ps2mouse.o 28 8 192 0 1536 628 startup_stm32f072xb.o 122 18 0 4 0 3603 stm32f0xx_hal.o 178 28 0 0 0 10499 stm32f0xx_hal_cortex.o @@ -2684,7 +2680,6 @@ Image component sizes 398 36 0 0 0 4019 stm32f0xx_hal_gpio.o 1328 26 0 0 0 10735 stm32f0xx_hal_i2c.o 146 0 0 0 0 1895 stm32f0xx_hal_i2c_ex.o - 116 20 0 0 0 1703 stm32f0xx_hal_iwdg.o 408 48 0 0 0 3412 stm32f0xx_hal_msp.o 1504 102 0 0 0 5149 stm32f0xx_hal_rcc.o 288 14 0 0 0 1500 stm32f0xx_hal_rcc_ex.o @@ -2698,7 +2693,7 @@ Image component sizes 528 52 0 20 0 5894 xt_kb.o ---------------------------------------------------------------------- - 15698 1010 428 120 2180 650243 Object Totals + 15530 986 428 120 2164 648440 Object Totals 0 0 32 0 0 0 (incl. Generated) 34 0 0 0 7 0 (incl. Padding) @@ -2744,15 +2739,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 16500 1054 428 132 2180 643415 Grand Totals - 16500 1054 428 132 2180 643415 ELF Image Totals - 16500 1054 428 132 0 0 ROM Totals + 16332 1030 428 132 2164 641700 Grand Totals + 16332 1030 428 132 2164 641700 ELF Image Totals + 16332 1030 428 132 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 16928 ( 16.53kB) - Total RW Size (RW Data + ZI Data) 2312 ( 2.26kB) - Total ROM Size (Code + RO Data + RW Data) 17060 ( 16.66kB) + Total RO Size (Code + RO Data) 16760 ( 16.37kB) + Total RW Size (RW Data + ZI Data) 2296 ( 2.24kB) + Total ROM Size (Code + RO Data + RW Data) 16892 ( 16.50kB) ============================================================================== diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep index 562d8a8..a7b4966 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep @@ -40,7 +40,7 @@ F (..\Src\helpers.c)(0x61BCF9FD)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 -- I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A) -I (../Inc/helpers.h)(0x61FBBDBE) +I (../Inc/helpers.h)(0x626F16F7) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -78,7 +78,7 @@ F (..\Src\ps2kb.c)(0x626EFE47)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --ap I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A) -I (../Inc/helpers.h)(0x61FBBDBE) +I (../Inc/helpers.h)(0x626F16F7) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -114,11 +114,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893) I (../Inc/shared.h)(0x61B61A00) I (../Inc/ps2kb.h)(0x626EE78C) I (../Inc/delay_us.h)(0x617487C7) -F (..\Src\ps2mouse.c)(0x62423712)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_ibmpc -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\ps2mouse.o --omf_browse ibmpc\ps2mouse.crf --depend ibmpc\ps2mouse.d) +F (..\Src\ps2mouse.c)(0x626F229D)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_ibmpc -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\ps2mouse.o --omf_browse ibmpc\ps2mouse.crf --depend ibmpc\ps2mouse.d) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A) -I (../Inc/helpers.h)(0x61FBBDBE) +I (../Inc/helpers.h)(0x626F16F7) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -152,12 +152,12 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893) I (../Inc/shared.h)(0x61B61A00) -I (../Inc/ps2mouse.h)(0x61BC59D5) +I (../Inc/ps2mouse.h)(0x626F088E) I (../Inc/delay_us.h)(0x617487C7) F (..\Inc\delay_us.h)(0x617487C7)() -F (..\Inc\helpers.h)(0x61FBBDBE)() +F (..\Inc\helpers.h)(0x626F16F7)() F (..\Inc\ps2kb.h)(0x626EE78C)() -F (..\Inc\ps2mouse.h)(0x61BC59D5)() +F (..\Inc\ps2mouse.h)(0x626F088E)() F (..\Inc\shared.h)(0x61B61A00)() F (..\Inc\mcp4451.h)(0x61B64C4C)() F (..\Src\mcp4451.c)(0x624E40C1)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_ibmpc -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\mcp4451.o --omf_browse ibmpc\mcp4451.crf --depend ibmpc\mcp4451.d) @@ -202,7 +202,7 @@ F (..\Src\xt_kb.c)(0x626F0101)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --ap I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A) -I (../Inc/helpers.h)(0x61FBBDBE) +I (../Inc/helpers.h)(0x626F16F7) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -239,7 +239,7 @@ I (../Inc/shared.h)(0x61B61A00) I (../Inc/xt_kb.h)(0x626EFE9E) I (../Inc/delay_us.h)(0x617487C7) F (..\Inc\xt_kb.h)(0x626EFE9E)() -F (../Src/main.c)(0x626F01AC)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_ibmpc -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\main.o --omf_browse ibmpc\main.crf --depend ibmpc\main.d) +F (../Src/main.c)(0x626F2372)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_ibmpc -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\main.o --omf_browse ibmpc\main.crf --depend ibmpc\main.d) I (../Inc/main.h)(0x62423606) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) @@ -275,10 +275,10 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893) I (../Inc/delay_us.h)(0x617487C7) I (../Inc/shared.h)(0x61B61A00) -I (../Inc/helpers.h)(0x61FBBDBE) +I (../Inc/helpers.h)(0x626F16F7) I (../Inc/ps2kb.h)(0x626EE78C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) -I (../Inc/ps2mouse.h)(0x61BC59D5) +I (../Inc/ps2mouse.h)(0x626F088E) I (../Inc/mcp4451.h)(0x61B64C4C) I (../Inc/xt_kb.h)(0x626EFE9E) F (../Src/stm32f0xx_it.c)(0x62423605)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_ibmpc -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\stm32f0xx_it.o --omf_browse ibmpc\stm32f0xx_it.crf --depend ibmpc\stm32f0xx_it.d) diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/main.crf b/firmware/ibmpc/MDK-ARM/ibmpc/main.crf index cc5a5345851bce435784a1ece9f988bc7e6d63c5..464e2892300acc26549cadfe9a775958e3ada185 100644 GIT binary patch delta 13110 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 delta 12976 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 delta 41102 zcmaKV31C#!_4m0ilVn~3msw{mwmaW?sJk_g#JO+_Rs1?(*(iGHkkI zz*m19a9K^qT?dDPQaqezsg>{DH+K)a#AMPh@~>KDzic=ayxjFX<94gJzFEEoxkp`Mjk6q?X2Gr?|OAy~oczcFH4j z&zk$wH$VOaH#>g(a89Gvdj~b{a=EO0a-Y?+rp($v+Kk3kb%c8Kcl*uCj4B;*=oFP7 z(^%2FO1TH1)*~l3zOknF+>z86cgTK?H3y_7*Ys@|RiXSFeluF_k}I{9&yUVLSh`n9 zU$vLnRk~`_BRiBOTfh0Kmo~dj8m6N1(;hwv{ZA=dx$w093uzhiO%K+?DH~Q-kMh(KpQ76Do(~$mcE!U!q6P4i(nfVWO#1D0Y^By0WIin$A4rg? zFF)EfWG*g0p|~&PH*Ef{{LO?rI`gy2gEn_deH#SVx=h0!{W3Ls^xQnF>Wsk6$UNV< zo1Uw#=u)DUj>#4CRvo`sDrRK*bQzVouDWC9m@X}DPUgWbz1{JdH@kFo%QN3}$p#k$ zn{TQvb?)5EAG-e9{e1JVZtuH(ulg{N3SUn88gMThCy5j3jLQ77%$Ocqx_1Z4QsIG| zbRY<^FCncD#V6kqTnx$}R43wa8xlp6Z`NogM5M>_(I8)$-&J((sIOACOIbU0-pW-&WldBaChJgzV9TnN^Om2oY{{yY`KKZMNxBP6rV#OFNOXsaxc*?4lWhb3_%EFd~r!B-}?w{H7km^ncg9*_Ur_{Hc zbm}VFoF7Pb-iWYz^U^~uD+&g?%#Vk4cGqV*O*<*P5ly`b$HvVUPrEe{-h%3_IBwf~ z;LM-O!`o5iny_i}q?X5u!#hyD6USYfQwtAu;XSBs#&PfFg^Lby;eDvK;@GnJ?i0$p zwtoQC2XQ=vt)St)kLhGctCFRB8i>SYZ z4vu#{@!|fZ z2H{^gKJmmiXO(7x@G}rT$MJ-_MwI@Ejr1bD)_$>(E;rQMY_gPu`TuJx?2>-?LqbKh9^U~QpLX1HS za}3(-=YKCn@K=_0DGd`K6yqrI#Anu*?oknP7>78@Jn_GqO1mUN4(j$eI(XuKcbA^v z!U_;lI4V8y;d@Fi?G;vm&z#L?4h9(Z8# zgzB&cgx)y%c;e$nCLh~3><2=B90OV}KQH-QaafD`UN{D|F1au{&V_?f-v`H#*1IoC z9_+$8)Q94zZ*`X>zbS1$9QFNh?2ltaYw=ad$2b7lpOEg&5qufoILsBB6n+PNz0^_D^FV4(l~GVf~5;rqC5Ikz9fs5 zEL|x5D({q~OO`Jb8MU#bUwZYrB!8^q9wCte0i34Kx0mzYk>fX z-ISkCaW^>=0q0BiHh7OV_?~U>o_SpTORqdZt=6=`d$$RwZyWyMZh1jK3Hkh|`GzN8 zuL$edtQa2TVjs_oZIN(u?MpL2k@SyH@%;So@%(`~{>1FX_a=L#YgFxeX>1e6YvXg0 zShk$R@jxCa;1|L1v;tg$A{kbI7vXL^&QC~J&-ZC8lHxW3#ZneCP|}89BJIF;h>=T9 zASLpjhJ3(9SYF}|OXa`dQ=Usu0RG3oMZAB+pKPO$lusZ)1rDD8{5OF|rAWdy@}ay9 zKIOSa1>ipcJSs(4j^Y88$&=ta`X7TMfWX}#M5PGpQ(U23HiJ(GT*CtJ*8`7Ak+f?g zkM%6ZZ{LRBUVaX~wVy+$LmPn(a&pYT9&Px0$lMseq7A=7rpNfHHvE)~Xvq6V0F`Y7 zDy4VKK*u)xj?yj0uWG}ulJCb!t`uRpif6QwyfH4i=#rR#@@Vm;D>6k#bHUiz`GUNXeGrvf>x8Zk}^Ni1NQH19j@fP-I!{4(Fe@{ur z4fJdy(6fz!UTyfja{Lh*KusHdjYJLPLRBQa+wgm*Wnn=E93F8T8pHRNp)q{0bcx~n z$bZM?x)`%#h`blW_mwAOc%9rC!_!0M${3+uei6fm$-EdoTn>)m`^n%KzQ3em_z3y> zz`_7W%Ik%AT1Ls%LIR$(+#JJ4%LOrf3?9N28az;rh~Z;pR16;{J!5!-6cylUC*$QK zu0U3tOpw3D@Pp)m7(P*Mh~blDZ493*C&loCWmXJtlmqj48htiJ`sE4050Ua1eyDsg zItq^~;8b}vh94$dWB4?=HHIH97sv4Fa!L+Q(_oVvl_L(5BOz9uPkC5^hex!VU zKw*Hh8VhtrGE@RPTIxr7Wr~i zVSsbxHN)v20nC#}VgmE!witfATpGg{$Z0Wrp&T2-7sMHh%eol8TFxYH{t>{>WkF2f44E3ke<8zT_?glphW}C$G5lBZ zF&|r6aq#qF3|}J;0+0M7fV1Srn84Zcn;3qMtcc;~%Ip|^o{Wv*=S%+>{%dI$!`I4} z`{n&3fZxb#`$h3`P+lO9#PAE{witeqTpYtMmK8Dl5}6spFO~gc_+`>{zg+w2@N)Sf zf3E=i3VAz*XXMcszD{nA;aAGq7=D%fEQV)gS`5Eh>e4a7HBuSFua&Qc6=vi*c{zr! zmn|{;w{k-PUL<|nTyFWgDFun^X>=`5zWr|4!UVQo+~Xi z!~Bb&6r=_PSckjQM5;UACIrJOa`z&sVa?s4kFua=LrS*d#tl{}9LNeN061VYL;u}Z zfLjKdq`=)t*WK&CqdFvNQZ-cTjtBZ`a#uZwe*vsbMl7j%TEtVk1?eCw!5X!&OzOK=Q0a6Wct@nKk?^$cL{6)kdeUHr zM(}_0o*)oK)JPgADMUC;-zrIiG6JdZrF?`zkrZ}6D8rHDdPwt5t+(L%D;-IO2?rAa zWVlV@3k+9Gdde#f4diQJxGjW6Z@L~@%uLC<6cVseT`d-w3xS& zAWwZ@kbD6tV+HRHLjR{$lA`4;oS_xSpy)Y4N`6$IcsU&K4e?cYbWTw|#g-rd#e10+ zbx3L1UXY}blst^_L}4kZmD<->IgKZ>P+mq$C0*;Kfxlk~HOLRN1}GSa+fquq>(mp% z3XY(%>qg6JXJEk5QZ_&y_3o(GM|B{Kx(qnICnZO#G)ZoNpkEM1f2@E1rU=SII1Yx% z{trMv^&sD$bLV`s10zZYQRK)i1gU#j*I5D~KQ=$+I;g%-d5{`z5K$f%;;84$pbW}! z$Ul%nVOcY^u^*+NGn8~B`5;A|iU(NF_m{tU+bT{WksGD&ILP`D-1ihvB69)_%%O>t z;)u2RgnZ%MPTxmBNcVxecgfF{;7QQ$5-`qC8lrjJXB4ryK0sxFP6!QDPoFSqC?FNv zc@E?SQZB(T)v?f)&Ri}IF@E5sNtD| zRZ>6tC~DAB#dWgl5S0Lv!ui?Hpi_U~*+HO8bxuwpPs~5axa#)8GbB9b;`r|AEs=vk z8gLx*dja}}J%CCQ&gqGZjhoD>^aQa3AlQ`D0p1SJAE~k@Y0r@rbXLBkl+6 z2R&1>yecFI%AQ;_sDv&Bd`OpqKtEcLtstj*V4T{3NkgCqFfD<;NMtKfQsaBHGI(Rt z;AWC>1b24FndN`zA4sql=xa1OREC1WI@U%g;2peO%|Q*R#pZOAoANy)az&~eZX7X) z@jjQEtZtN|z*xd=YObq~OqWAtcXe;le^*8127usJ2B-wOe;VI=NQx*``)lj@s;Flc7!P&BYHS#|xg8%6S;M+^G2(z-%4hbNsfxhlUZ8gw$lp zA?+JA&eZL+pk7n=p$0i3>0YeggOirmxdHPg?$C=(kg5Q~*-)#HBZ1XILaE3lHV!ZZ z4fvX(CSTE)ZP#gi4>fh8w}{+gY>ZbnCgpH=+C%5RUds-IkvBMn)zo15Eo&WM)?BBK z1AdDqBJvv4g1-`#4(jC3>QD)9w6_a|pdwFjqeT(;I|4oM7-jlNd$vA>{g=(Cj~~Jl zT*|05(^yH_b~||1l4@5=HQBA$>*W9x-$lJkQ}Pud-)y0nN3DO>Kzt|3>Z0u5zWPQP z+K(ycr2+i%iskVK3*=j`AQfd!ZHKh`IJJMlO(44)iMJ-`OK??83^6^#_DWLCzX%Fy z?5ivQ)sjdP=l@~)eOZcJU)sS4_(8SiqLc`S%o3+K-W^sk81!eUU#cZl12#zX#B7x~ z=}|%yPuH-B;>M0~KR`kw#lQoOHc2{FqKcD9!Eyr<%G3ZaB=Dv`H3H|0y=iiaQ_t$t zcT}mBN_eOE_(J9F1?yw3a(ofkL4tDoiJa(MrHt41jb}WVQ^no!bx8yKw^NtD3qS)s z;N$`sPTNbjn@}MewuV*W0!IrSDCwB~hDu6SVmyN{j@Ny-k*ntWo3sE-uxCgE*lswQ zhh>dE*11Yh8c^?R>tBO(bQJ=_Rh4qBYw*_-#QB46iYhtH5XCsU8OJpAz?BS^-qQKt zx{O2Ipz<0Ac=W@pS69k7fSVhova4fFqjZ&7)FCt+xLzXI|GcUBUKrHJ#C&0DD--g% z$24cGqJf%KUIn0VpXM#1d0CtT?2RiSh%B)LFr;O<2Q&d?rkws0m0Y1f$d|*_Iq}J) zQ<+kQviXp@{Oev$=8bc6dAOiwWBq-hXSk2WQPUnZGjy8u1Rjejt~TbQUl`&!IM_oxb=dmpm+u zRu&L?kB1kAp&AqY_{ZX4)~H4sIQ9ZS@usz^Dp(7!$moI(p(re6$>-j^3P<5pVgns3 z|AX0hS0obUU-3%Z$P_e6X%~W!vwEi1yf1Q3(5hz#xpg_hRUdm&)wfL*c%~lJH2>CC zYG7f@8HkeDM@>x||M^eeCeB=m%ieR?ZbIcE)QNxUxC@iAFwl3vWt{>!n)q8z78|^Z zaL+)VCB)9+4f?0zZo*`sA5fLOi`V{eUiM!n3kbnq3K*;rSwRSgs|{x$#HX7b?oueP z4gpsgzQ*7M1~J5>>|;C?W?!)KsKFNvYCxcWZ8$EeD#!b7$`3Zk&&0~UaWaPRYo{0F zvM<1=-e*of9WMKvFKv7SYDxdWZ*$S0wBDYSVVKpCfysd$Lpps5*v_J6P~|mAN`0_lYo|JUnTgxJzw4VW7{TH2`v}DBnNORkLhBAipAx)$UwEJg{0zI5@!V zIko_0P+W%!TUucd0QU-k0x1u&7rvbAn%1=Z+v#m?+3QZHN!bkE?!elS{&HT1PUuPe z81Ydbhi3)E=lO5Q%f58_{YBYVmiCfB=97-inK#b4 z4TNa^ZG@czxrY$<;tvsG-QP-xv^_|f{y!re|9l!1{&_`Z{Ah96A`x%q@2;sLVJPc!k{Zk@MV3?9&VaPl8=FO2w=JlAKRn5r3|<6I#rNb?GmJF z1L;T|yMzum5w0-@c%G*LBhVVq%WCm>kq{$rf5N@}+%DTI@N*PTXmxI)ACc zxBkJ_JpFcd5nch^McCQt{WI~u6326@oyPxwu&a~*815W!TyObtc#wudcUHPM{FM>l zWL${|lTJnxVig)s82W`MI1HnmIPP-i5gzX31j2GBrxG^dCX%onUc4H9DPemjw-UnN z9|=1+c@i*9!gD0-;RLI&3ShC4pu*wL5&?(ug#Yn41*@y#n8MiZVRK;k1j3GZL}>W2 zgjEQH5cba^M04?ER01rs*Ak-DcLkjPAlyd+7Ut(n;3dL6o&3}A&j@=uDZyO~<=YYV zax&2HeF$ruOfvjX!rs_k8NQMb3;wx;2IkBB@9|4R6a!KVmc z#ot;Gj%s57^Ii=As)0vE?w}k3x`z<-`wTun2qS+s{$qx3H~eYC)6W~BgfNP9g*gIL zN6?Nr0$m*es-xH2I07CyirK}&qzwR6yW7zJ$btkQJZ|tw!Z-5M?0Vu@!Bi1Y6(Ovd z0{*P=b%}k`{}Bqi@O{#OW9Dj?{@ZY!e&82#T=PM7EW)Yg2v8mUMet?@g24Z75RH@I zEpvp_|I6s=2yy`p!$Aol0pGpa%4W=%dB} zII2RZ3(njAl`#k72c!d!*};;o83a^2=%1~SO9voqqXMAz*-k$3@wm1e^j*Z+BEo2l z9AX9m)gby!y9Bs)37~e#J8ilIc!3?v|7m6jPz}L~wg|We0;qw!>;JfdqrJd@1glIR zQ1zj#gBtit3>Xj-N`m)9J|jeizB0UsH|lIzDN_#tEaQq}c~(5;2v;>tA)q>XTJ))8 z0Q^N71bl@M=|c7uhe?GxMnKm=2)XZ!UWEOpDq#7RU>_$~g;fEoslr$QxQuE5fEvIv zmLcGpAwV6Z82T~26HO0L^`6DT!vKJ%|6&znUEi!}#7I%hz^}{zpc+8G{F(B=A2av_ z;fHM;FEBko)!Wf#9a(_+e;*Yg@BrcN{6eygc-y|7ZUzC>AUb+0<$$X^pbp}H`1gpx zM1KoT{>LV#sfXPJGdvyrk1MSj(CaZ6xQ-~U^An0lh6ci0VH#>Mc$m>+nVN3_0&0Mm z0-9mqnqfd>UxI()Ef-<>P=ALK0Ai1T1;Pm~OzIHV7YU%Sx542?$7MnJ;|)$S{uF~V zj6U07i^1cKe}cgkfO`GcjYHd1ue6o`YD+M}9%aP9wMBs1qK|BT1J@-N@Kefx{tY4Q z>dpuBpG+Tn7o}qlg82_dB?*AKG(thUplv`c77(BYggJMIIk<-qbRA28I+oDkj~E}9 z3+3yz1^gF`{&)D-NMe21Y>oic5mu3yBhb|mpgO|jjyVEd9RcPY{V#rwf*<&o02Oug zavMjWt0O>l^hthp=qN{qblwB%yoa1#oB(%O3o#M2fqHR*oGw7%e`kKvdbI*WS3p2r zfB^b-wYiB>vRScO=?6k=T=oWW_Q1WXHs7_|yvRUx`WAzG-j1bJ6@o54RA++^^N z*$Z|j4^Q83D7vAJ@nI1gPKfaqn{0Pu7f$-G^YpWc-{++uL6!6;Mr>$-;f zyoZ^RbK0bElcn(NJpE6U`-2nongnM#e~m)mZ&*rkxzd(?Yp}#JfqO8eHyG4Q4)j*& zz6O=cjd7bnbgL>nWAJr@ddms!{pC-P=`K{+Hw$Qt!6OZJEcJohY;cRgmkfSwu&N#8(&)>pI(UUvgJbsa_~8bBo$~l? z2DcmBZSeP%p8tfwsKt-7#Sh^51>t4+Oz3vxem{8A!KHb|Srlw_{6t3hiz{jfyQs*Z z8hY62FCzq*JY7@!l%;lq^ZOb!O!qHn2|IXk& z2BW~=Gd!A}`&l4|8k}$Nj3_|e*I+c`76mViZB$>APp$UVqqfi>P5-ZjMzvu%guKXY5UmdS=@(u%l;)jHozvzC&(VYtQDLnYmg7l%$|7{S@)m2W{ zk8ybVZ|lTTTOT6F8qh-)&=t6^j2O?-@gvUfH?nqj4u`ra25e`J4l;P8!9@mF8@$Ni z4F)$GjQsqSezxKf7U5Nx|GOxFi19K_TY&eM3L^!L_;HK)x;81?W?gr!(+@J4!Ds<0 zH^+K^1Ue>?+MQ`oudbZ`=NRF7TX1yAML_y6jRuWAgsB95wWah|mf~{_USMz?A+9u0 z19S}i#m3NjC-1W5u=@p|UjMPzP=ekdq30 zJS}>z`2q<@?e~Pp0N;A*#m8WUrLwhF#yFdB@}ia5afP~T&~YO~?X4W4D0d%)o9 z28)>yWa2LcUpJoTM7Qzq`&e}S*De4dS_z}nMQip9%g8c=XB)(oS{ne{3bz@2 z&7fFjIvB+F5h|C<96kV3!Wx5D7`)lw7K2Y4+-XqX^dMld(VjBc$KW9b=NMdM@D_u2 z8%#&3+rSjzTDg(%H%@LRgahSc-HqhVCLP~&$2%@za}U4)`rt*GldS?ZY_HUQ(!r`%vU zGk7@u4uWtx2Hg>?Krrf)6AWKzkiR`Z{`m$kF{mx9Z@uE%C0!HwBm@>hfZ%? z)Us&*>~DLA2WJ0O8`fnnsSVqwjz7H)rDgx4o0haJIDFJ;P1#hpuw!e#ACg1cSMg_? zW-MHU-$7g~jpL{4?>My{5{8$$@&c>bPpiV-t;OZx&gB1Yu3NUEDtxg}r4=f5W&gW$ zuk7Ky!p91w>7Z+NN6)ahb#zTQ_y6IgWA@Lr;dO<2tqb=GcZC1Dmu}g)!@})_(%#Em z`@l=n@UW(%Ta;aSFn*+~K6~B4VIS8w`{#qhW3o>j8@9{#ni`g5c9w^|=825KO41G& zW%OY?<{jloX;7HR4s8iLr6B+=x&~z;p2e`3q(^#CLQ61$0H#p9$e9tYGIPn$Z&iII zI>UTdt*a76+tCb$uA9SsJdN#E0Ut)>Bj*^r2JcqC#PDCJnxeRb?i^JgC;#A`7-nj& z_;A;a*-1*Cv4iW_5jiPnb3X9`!;MTowH8IQIVVPAQ$1!OCRXS-C!Pj&LZj8wH90j# zs%0t8_R;3kx{l;UP+LPL3jbgO1*u~34bZRHMp|!qhCc@fml35z?HydPPCgd`K&@C#{YT^d&D zc!N%jJa(5^D)gvIJLu&uRKZba_o5yu%T8qq7wF%@YV}-(;d`C9=PO4$ZnX~Y1U{+D z2GhdMY0W@+F1ad0>A7^b6h{=(FG*#8?<4D3;|~tyN;}>uq4dd7APK8lFa*F|Z*9ci zrPzog( zh{@>ks?Qrt0U$@|ui zYdd=?&K0>DD{M^^1vtm$nNxFBnu=sl^=+)+7A#LycSN&Gjtbi+Kk^sxLs?5L2OVf?Yx6^(6qaZ6Pm@^4tVLg?*ikb9}DsG)c zS?i^-pyav~w0)GGH|@iL{Mk8$r;rXB7>yqd)h?JeJ1oimb9z{wy>oh4Olzu- zkE}YXQitr^8DW?7^vJ5G@>g|OJQcKSb5Us}-xn%oqRPq%g7|^wPV`3EJ1{sX>M<}u z;p#5g<7b3b9VS+pLz0$fpPv}>8d5&Vo$5z?9XNMi<>_w^- zi+K*jZuFvgafm4Ly_aovm=#vm@P`fx`kQiRaLjk?F<5U4DW{`xCu_bm@57{W4^*0# zok~;thyi`0cb{I6s*CpZ^*SGe#hDKdwdSkx;;7X{SRU@Q7TAw8fI&M@Jy0*)L-Ud} z?1p=$Qm0CNo_j^UirQ56R@L$NA(p>*dOj-Pl`&bTKR&}n5X(`a+|(mtazu_c{xBk} z-;wP(BkbJE|9%aLurZeq%&B;#tnwXrx#)_UszhD0Ua=|QukGGmekkon#?@+uwf(uZ z=u~l{ceV?^jZ9XcV>P>c25#5ho)wmkfzvj{KND4X++u@?_Khr*@hTH=iM;_sg4@%n z?kmVB>Mr1N*|ph6_s}TOzvd`Z*B@pEVU8E^EWL|p8w-e#iFFS}*65}Qe)&f_ODjh! zI$cKVWyhOyaj(>ZB_zRD3Ni_TU&S9)COAH(N^|3`=E&>Jz8-eF>MLDqJWXhb2eHch zuJy8dP2#W9`42^;LCJa|jeFG^#VGRqc#D-BvaO7XD$%}Yyb+u(6A|W#*TT~G`ZpL+ z3gk%L5*HX0XL*H+-!9isdAzMUtVh2H#2OuxH)Bi}@+Tm1ow8ex3KM=OSFVke@0+jX zl-8mi^KK_75&jCyc<(vsXKQjnBeex`D&Y;l4|Z*yN8{z#UaCtamE(e+ni+Nq`W(cb zJpd?7nl?7VcCezBLMyom@1LM=qxww=yX757B*)4DW*G<61^GPYM zpm>%ics>@CCNQ2>oS|Uk7L+$+D=_@1cey^WK-0A7T#68V0mIR--niO9rQ#^HDciIJ zqi82K8jFDLh=N_LvTQ1vsFu!@)JziRHz|c-ew4q8^4(`toPQ8?b@afgpXbr^R5?Pg zg4qKXgdyM4_)_G7muuEs%WBuoxUPofyAU*c+ZY7hpR3B=Yl5Sf2ZE7wjfr& z?33yLbQq6E=HX>Ofb7f|nB;VVpxE+n%Dh0s@OkAFq0app3yL)qreK=hhGww>U) zg8_0HBw=u$pqY}yY%hW!coA^d`rAf~sOV~mAo8ifeG~o}9t)0RB#`kuNRh z=oMxGdO4LSv%d4=(H^ws4B#PVF;&iC=V*{Hv`Oo5H&ydOjB69GHY1~+_9C!@6_CZ@ zI#}nc{)`;^zitPrW-9E#S2*b##FF5{e=R<{7?6udsq$UvSvc$9pM)3a*1ekL5;m0T z+>__ak*MNs3FlngGNy#os8E{xsBk#4Mf`$g7NUx*Jq{XdxWu_!OhQ@6{HOe^34TDG zVMM~H!YbP{3!NO5bx}p(W&XQps^of~LEc6#qsSF^w2yEpBug+ z_zih&@M%0=@bgpJLTGBP80Ho!@xxk;f!*l48pF`aanpT8{pGXgqGYD^@Bbm=jD3Zt6m_t7OYUJ#u^GWCdAVThc%Y% zN}Xn@=8g*m4z*}c`izqb!@)xSSQyGjyxFa?Ya7JxAaV6n{g9guo4=hyiY1m+6b5sr zuln)K4)>+0;#3BD54R)J@w60kiN$6jYOq<3ge_9CwFnFA+}sZL9t>AqraTj)lPSDN z<*Drp{{ahK`a$Ws!QP-4{sfgwMrY~ihibm8Ugrw-gb;m2-@p_G31I~3g7h*bXgMb_+5IuG5s{W% zQ3wfLqsq{YYN51|!>+$ceMRV_D6o&*`MoVU1zTq|QRm+}tp@AqG`<{SAe3kE6>F6~ zE33;hen!Ql<_@z1qY=LXh8wYZuU3DAsWUu%*$8O_tp#=)El#EmlIw}CE}H5_;{w#> zL_EazvojY8`Ce8P5alacf!i@3pIBNdUz=!?rHqL~P`(Y(5Bsak51rHyg9#kmbxr@E z8L};Bfy*ZJDrL>_MbYvGlK#RW{u%^T6nu)Q=Y&)&&P6#pflz#Y?&r)<27jxK1!YO zu_q+aG!bM=2(D=y+AKMb0sippBM4wn^$`4sepLLNTcIP|1sLv~(xvPk2g*at=H(0^ zUue(|QlArYuDpon6uj#)js?@)oA-zOg&*m;G73mL26iyceFQK-w_Ih+u-(wGRe4w9 zR;g4q&e!3;T>DVFh+-CPG>>c$d9hXURWxMQGg4$u5{GM&G-T~Xd%>J@N>zR+&C8MC zvw{xh63+6@!I^qB`A&aYR!Z}|l$YXXmny<@6;JxhEt{Auj459_$pn!)aNdBmfvFpgdjSx)MJ#XQk9?wQw?UrrEtN|zo0`8K>oa!Fkz84;wHJAY$-8`d zD)f^AcXxhlY1W!0g%&owl2g7r-%NHWL(~mFM}APNKg(sZ>}9$w$dJh0Y?*J}I_hew zJl-t#v;&2uAX@Lan8D~+bEnI$-yuc!_&nl40R1C_TJFKQ6rp?-IRRe&BFuRgl<9^; zv8mhr_fT|p8Hv%5LEQ?**t4vHV+Q6#ED!?Te0>5kg3lZ-#YT0Y34FaltS=Eczy5GnUUsS7>BpD#oNu9}VT`C**U#)#IU>z>wD z=&!|V6l}IdqRqdkA)hOxQ=?NsRn%ax&@ll%RR9`0rYHis2!FKASaCnl#5nS$oYkBf zSs!_`7v~;T0LKL5kK+20)EBP!wKVAELX7zQg-vZ~m(YFZa^MCg`+ z$j1axfvW#4KYf9rvU)weIuZaMzi6b`T%%3DCePHAQ!T|Ii5yobFUeN9U+TXaao73G z?*uxMt>F5|RS_7QgnwNE{~{~lM?4u#YY@XjKxv%XoaAjpNBc&>Qz@~D^JODzD7N@( zGZ2u>#g2g6xTNo4#KaBH^vDC}srOGt62Cr3h{7x(6!PX?M*{wK*v1=CtSL{EYDKl^ zQ*Dij$OR8YFlX)}Sp&nMU$37N_m`%Rx!eJZ3YX=Sn$eedT)Wr*5H(AMxPa=SOib-D zpPIKiM34)EY?j~RK-nK3XiFnOZ`862!oS zr&1fn5Y_%wdIHYu=`Nlvd^Ft)(=SZr9c)lKN6j4G68lXv+l!Rl;2c)kD0&7T>G9() z(683tgbc`zv&IMS1A6Q zn!-Z51JbUOH|#Uk6sogOO8#cu`%1({CSjDXUJ#K_(5K)r2T9BkPpR<^=aO8Sc+qSq z&&e7UhWr~!V2eVSe9?EI(h|_eCgVx4v>+U^!PC)5XHugap6<%k(&|Z5nS8M<0VCB( z2sh!DzZx!RMPE3pf_lPH5*t}7^b^+XLC*Kit9p%RXYkxJGM00p;CkXnqI zYP{-0!1JwF3*ML0iUxj*F`CHR2(YU{tI+mZ+lc5+Rv@J+Rsj@AT8Mtp5xIvnY5bD*f<>fHwvnL}+_ zXc^Om0zr+UcNW#(4ztX#mIGkA;uT+qGVJ*X*tik7FUgxck!*bKR-mpHcYCj9-dj$} zw+U5px_|LqVs7YK-H(t1oBTgb;rujY=V**kgBb=2S~b=>v_jI=(80yjTHxIxvezl8 zipg=%fNHWf%An^^DAdIoqpyMDDCR=l=4>i)JlWA$d0kB>8{r>DP08nf&g%@trU{oH z)0sehMCF56K}-v->4^RyTxx4^t%^)3D}i=lc)*^wF;S^+(gf@_=(d3KPfaE#q2m@) zA~{FijJ&FbMhKzF9>ekjbuCHAHdq}$+NWfOuLWCztC1uv2P3|bR+qPY8`NFe|C3>f zM$g1pWvnoZvV*lII^)>OsguQ^-{$*5I=BqS_NGJB*W2W2`f72HZ< z{Y5a-iO-RpkfrxS`LIaSG8X`wTpyiTVrZ~qvcNRwiYB3lE3>|)KCFSN`2sSo9E<1J zA7lD&tt5YApjTD;J)Ad%Yy4oK7bv1khnIJ>#uHLKt zN^YV;!OCUV~Qc4?=MT*zDv06h6VWN3kokHV1;Zab?V zfZzu&q%|{aqI%eZo#L&o}!SQC+XfU|1q`cA? z>slWg2K|Q+w!iA~x$|m}LE>P=>yX9yZ(dvr_d*G(vdo3uB-(A44`~XcNlLC7@zHD` zGLJ+Qb*Eu*XjX&L$h-mYrzEz3mJ3CNx&CR`AkX*l1CJK)Ci#%!jdHxxXCej43!=Jf zgv5tU+f~OW1caO)wa;i97ot5$w?mmcX{czw>d;LzJw9yG9ca{j;NXwxD76S82@MH6 zeRd-|8C|@fxhL$#$)|`sU1xShZZ_G7 zx|XI20xF^;*xmZg0CoJ~c1J^4Lxf@tWg1UnA`q${e=tsQD(zMXe=IP(LMx1-F%l7} z^+sufVV$fT{#tBgN1drq9rZO}wXCmAEroPv^FJI(5x=pNDp3G}9W=_oiDrY)ZPavz{dyX8_% z(PelL;fHJ9Kc=iV3=7)5R7P76FaznUrbuJC+ym@C7h{`%B(qt*uW7`42Dn1QQ77I& zMt1WaX|>n){pA0AENMz?={f`lDbMzzJg@Q3PZ*Bvj?$ss#be*6`t-6ES4xz8XJXmf zol7--n+^d&n4-RzXGAT&iz9X3e+@5GE$;hb_VXG?O7ykYI)dp_2xMzo0HFWISLRpq@ zcXFpzFcMKV;$RI{ZWF9TQ1a~|lO@F3PlvnxKRg09_NFikpT3ZZlKuy~DyhH5_fMl$ zlM!WcBpk6NNx93vj8n7t+7=r_y{!U|@#?1MpM)BfujJm~xW$&SWVn`L=)cv>pg8|O zQ@rmk2xf zANhYAc+Mp(`PS+$)8nB$b}iK)@kaDts$VFrgj)VAE@qpf45T6E63;}kv{qP}8q@;@ zW`ggP)AoD|RcfQC7e6~+Km+^(5rj2YC6c)yRG263cq46Xu>33eGRNJ9s9CwEnM~Ac z_=BSjRHIh3{t6Z$7VbGMZGgzi763nzB-Hi+m!?l};*XQDBoL%+Q(*&xSWB{jGH{|6 zIqEn$VGuIhq_HqqA6I)1P~MD;`Yx(1;!VvTh=YVhH&R3J*I z@(KCgyCX@LSa0SwU_VNN>b|HKOrOPkM}aW#Ea!7_a$la}_Ch6LjZbECNr%s^gRtj;5{JEiC{iigy&>P~ z4M6na6GD!fs{wwYt6h}*#rjViQ5FrfS-l2L>;@8&{e^~({@;z><1{x@TUg2UpKp54 zrVXl8K*oywm8vAJo(gm(f13>z|=~rvGMv?>TC)T>}#Trf^!eMopksgyDU> z;s+D|(Sd5au%h<|F+p0qpu-cj&x{g$1XMHi4wwaH_VR mF2Rcd_7i^CM%;uVehW7^<=JbP1su`*k%MWK<#-RM_kRFIz#Mb{ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf b/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf index e4866042c1fb1c3dff370c040b37ca0579daea74..bba9509e2d196ab6704eaec8c1ee5e5cd18f1e1e 100644 GIT binary patch delta 2553 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 H*tkCc1h)~8 diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o b/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o index 8d8f671277658ab5a731b9ca5a7b3b2cfb0a23c0..7853af34223f93bd01b0eaa4db2a7124a23465c8 100644 GIT binary patch delta 102 zcmbR9MrF<$l?}($WsDSz42+DF7#JDi<3l`sUE|{wlne~4jLfVI&6^*qw?9^A1Y#y2 yW(HywAZ7((HXvr-{#czOD22@;(L&dlVe&;g%gNg80^3`AIKr8?-|pvdTm}H@*&`nS delta 103 zcmbR9MrF<$l?}($WegRJ42+DF7#JDi<3l`sUE|{wl#Gn5OiipzO`9L9w?9^A1Y#y2 zW(HywAZ7((HXvr-{#czOD23fH#VA?Vm|^loJIl%1>;l_cdN{(Fx8LdKa99Qa52+)5 diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf b/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf index 2350a149d301f4e1ca1eef4a24e6a2cead3f20b4..69d184dc7989ff7fd8ff55c7446ebfba97562245 100644 GIT binary patch delta 3450 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 E0cH~SiU0rr delta 2997 zcma)8dvsLA8K1eko4whDgb)&g4KU$#_d8&bgHq6*QtGK~14t4uQLBe%fb2+;l0`z1 z?&TrDSRjPJrGUy)KoA?C1dCE1Rfz;d>LcuxBlM(3%Og@ihzRL#W@9Yp_(yZj_ub$3 zoSAQCzb~6=v;O^3R$^m3V+Lmwm2CHl#QMN7r)7B@!(VOfXBW-Dzuv#NREudVqwzxn z)fbjjYjNbl%s@qEfP)N>2js2G4EQ2V&K>7{@pVTp__lfKMqToC@kMMIKlyPvzO-a! znB_;iumMTEI5TW%YHd+5`)9N(8;}8|*Oq}P6T=f@zL%q^9lr4~HJt5eO1twS>7Q9x zHtX>)ON*wl0dYvc7s-Th(Tu{9S>f?B%Glg!GBZgpw@CU_3id!WiJ9#h@1&wI+ZpY_ z%z#>aku$N?m(I^S-CKSAyVc*4X-J1xeavgSQ{L(u7-?uvd$wZ-4Y$M%#tvdTt7!MU zv%|CE7SD2QEaq7$y_085VXHb0S}FZA3ZEz}4zr#JHuXU(Wx~{=nUS*a_(^lZg=~w; zs!O;GS*I73jgJKssrB3SzS2pvrZV2Kqw4k@^~FN5q}9@2I&o%Ecn-Tin#fF3Ri#=Q zMY@o&G*vQ|rcFEOx>YHUd3E*Q_!50qUuO3CB4G2lLx#~3Yjv}E5Z_>u z&6DeHwE4^o-|u0b>jX05hVa*&5gBnCk~^`r9%@7^ReNlHpyEnKT-}un|J66?OQk%g z*jI{OSL`O(XtxvlB%c<*otA)AIBB2yf6=E|*)M?I>)ys1^Ql$IwsKmmSS8q&y1AeF zcX13_9bV^AjEV{c8#Hm(|G6MD9*KPbAY$T!`C^%k><#rj)(VjGuVlc zw^&$ds9`!5+oSfQs$)6TBh7O|kmQK#XJ30aAProsF>o8JZN^^ny`&~%&UAm_IsE7|58=!QnjjriG34cnk> z)95CmY^fY6UqszhHeXtuAxsb|r(SjfoEJzd#pdNe3pJYUc4dn+A}Oc|o1=}W(@8iy zC9N(t4+AaMsLUPADl{UeWwdEU9Mm!w<|WcfwRtJf(;Ahy39M2h+RsG@=X*w4U6FZ+ zpvP?f865v8)wP6xmTFXlkYyU-n#45dmrHeNQ=zZY2sbAdLcc;>fKY!Ya-MrtRH3?|rox;uug zamvS-qeo3~?_p~somTJWtYYUCYffqDv9c-OboMUz$p_kK(sMIG=iuIE4EOz1?(;z)7DM{$X z=DTt1IZ4Ul5Ww@2I*V7`T(-e!$T7$GPPumjid=JWjt|w@C@EFYZ?Mg5&=Qx3V$u5i1t?UFJD{o0^LZqO-E6(V0VcnOZZLsEA^zcldjz4STfwBA7DOJOfc z>LKWUgVw=!qv5TB?@njXSTi-UA2r-1NeIe9De^$gsL3!a^pd13L3t{XL0=(RJ8gIS zvfYw;3CcC}BF(UU!9CyEzxzIl94|}iEoiJkEy!^Z^dI=ckbOY5C^{9WXq@ z@Ra@{DJbX-+-oMJ{gOz~2}tqoAXX=-zo4NwDEcHlr5=Fu;5aimRX2D&8q`z>;^7`} zW{)$whxD{jGe!@VXWbs`6-hr9Gz^;6Dqc?tJz3OHIfZxjS4jf}tx(3O3e;mn&5cqw zogI`kNYEsxr+}t{FdH-7EcU8%bDWu;(lLlmOpgOL5nz9ps(r5Ed=?CEYoUyUA-g!g9n!Iww1ewge_zteu=fUK5~u}m?I(u$oG+?<8VJ=@YBfm zu~f~PK8NNK=&~l`9;E+7;@=pdwU-Qot{FIZGHaC71Z@-inhehZXiiEs5ePG%Fzrha W8I_P?ni`KsX}30d@n1UQz5WYWHhz!* diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o b/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o index bb0d5aa59d33e585925a8a4735f637b4c4c89485..65a668d158ff27b426fdec84c32ad6f32ecc45da 100644 GIT binary patch delta 16591 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 delta 16352 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 gJ)f725O)nejx4FN(BG~j7^t6^ZK&f9 zbeK&_l`d#$OE;ySZkwBGZAv#~)Jp%o&t-c@WNM#RG<&|Jo@r^#sPjE>RWqQP zl-1`sq1(JrHT4WqH5D);eO~dL#!Tbw?BbrX|FT85ZG;Q_&fn}M6`OD>v7C&5qg0gmUiux!6$QCzc_5f5Z^JhFomjI}9bUPYy5? z%WeJBzBR;Ng7u~T&Uhiy7pqUl3sKSB>9}K!9$KkB@*-1oqz#d0QHxQ}p`JIi*8lNA zr`=f!T4t!tUs&giFAZDWb|T9SHRO)gIaM?s@iReGUGVY;ehzifiy-Mq zKeDAy`imwy<=LqE%X9Ph1gXD6Wh2!WDz4G%0Jl81pCNA149tq9ffpr2|F z6|W(^HyEr|irXJ?tvQL^1E@)cW}?q3adCIKQkMZb#4Q126WR_c)C=Mc)Z7STKI$N@ zkdI(#ogdt#I{p3i zPSTzXxye5dnVl32Q?CifG*=OiBpz*X9dSMJbmAGrDQZOEb>aU12FCn9Fe|83zHo`= zp%|nZH5oM%HOtV5AgZ-zPjLs~KgH34BC&C3rXRd*D&wRlqJ_06Zq#0o(`tHmFnG e{yhy&ZRHObGAH?$g%9CIcN5J$7s3Cvs{RMkdAJ$? delta 1404 zcmX|>e{2(F9LC@G=(X3bGS;y%C)0OBd;OY4A%P_({>Ut2Or1=PQ8aNb8)EMTCR-=s zz`h$)5ZT5Ua*CTwncx&1KQ^X`;XkLt2qqFUdofLji6*iUbtsxme0oc4`t+X9^M3Dp z_r7;;FZ2|5^b`jt{ETUw(THTG1{6=J3HOE}YJEW=G>o7no)LRMOU&@*EN8tUS8bG2Jjx&PPt z=VBD=_UC`-tpx*8&qORY6=a5yId?#6F&4AeOzUCun9PdDHm+-IiPvsyW{;%um=Va- zAa9P>HN|T)qbyryC4OPobjS<&MyErDwzMFh zeP(&8g{K82FG5?OmlW@?Ls6sMXa#Lke2d*1HOdyaZRQfscEzhlFGYfxJ#3{3unWZ>2iYgTTYnegCHMr}p z<4zV+GLzA6E(V=^)+WsxKtfOihkK#bimyeVc4=Z2sZitrc1SZD5EeeCfbEoKj-Wd5 z1}HIvJEYV2nRL7?Db0}h9_CeP=8B8Xe6~xP3kBVWnkvPoFtS^kdE#4`*QA**&ZGMt zX)Y3EDLxE%T}IF=qKRd=>%B69DaYYDT-OZODI=KRX6F{xm2nYH_oMkr=ppD~=t<}) z#rL3ipNwF#o1EKOw>`DWi0IX@`|X=5VIOdAWe_|)Xa;qh`nxdigOy~+V75^^+`N# zx`S83zvKElc?JAo*DvK!_Kf2E^>!y~R27l30ulEt0p_R&of>1^~ww77zdc delta 86 zcmbQRQf0zQl@0phGKLC921Z6o42%r%@gbhRuJQ2-N=8OjrY2UVrp?~s?cU;yK+FWh h%s|Wn#H>Kf2E^>!y~R27l2{B=EG@RzR&of>1^~#|799Wp diff --git a/firmware/ibmpc/Src/main.c b/firmware/ibmpc/Src/main.c index d9e11a3..c5cc2fa 100644 --- a/firmware/ibmpc/Src/main.c +++ b/firmware/ibmpc/Src/main.c @@ -324,9 +324,16 @@ void ps2mouse_update(void) return; } - // only pop the item if sending is complete - if(ps2mouse_send_update(&my_ps2_outbuf) == 0) - mouse_buf_pop(&my_mouse_buf); + if(ps2mouse_send_update(&my_ps2_outbuf) == PS2_ERROR_HOST_INHIBIT) + { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + while(ps2mouse_get_bus_status() != PS2_BUS_IDLE) + ; + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + while(1) + ; + } + mouse_buf_pop(&my_mouse_buf); } void ps2kb_update(void) @@ -541,9 +548,9 @@ int main(void) MX_TIM2_Init(); MX_USART1_UART_Init(); MX_USART3_UART_Init(); - MX_IWDG_Init(); + // MX_IWDG_Init(); /* USER CODE BEGIN 2 */ - HAL_IWDG_Refresh(&hiwdg); + // HAL_IWDG_Refresh(&hiwdg); printf("%s\nrev%d v%d.%d.%d\n", boot_message, hw_revision, version_major, version_minor, version_patch); delay_us_init(&htim2); protocol_status_lookup_init(); @@ -582,7 +589,7 @@ int main(void) while (1) { - HAL_IWDG_Refresh(&hiwdg); + // HAL_IWDG_Refresh(&hiwdg); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ diff --git a/firmware/ibmpc/Src/ps2mouse.c b/firmware/ibmpc/Src/ps2mouse.c index eb4af57..f9bc769 100644 --- a/firmware/ibmpc/Src/ps2mouse.c +++ b/firmware/ibmpc/Src/ps2mouse.c @@ -69,7 +69,7 @@ void ps2mouse_restore_defaults(void) ps2mouse_sampling_rate = 100; ps2mouse_resolution = 2; ps2mouse_scale = 1; - ps2mouse_data_reporting_enabled = 0; + ps2mouse_data_reporting_enabled = 1; ps2mouse_current_mode = PS2MOUSE_MODE_STREAM; ps2mouse_prev_mode = PS2MOUSE_MODE_STREAM; reset_accumulators(); @@ -113,7 +113,7 @@ uint8_t ps2mouse_read(uint8_t* result, uint8_t timeout_ms) while(ps2mouse_get_bus_status() != PS2_BUS_REQ_TO_SEND) { if(HAL_GetTick() - ps2mouse_wait_start >= timeout_ms) - return 1; + return PS2_ERROR_TIMEOUT; } delay_us(CLKHALF); @@ -150,7 +150,7 @@ uint8_t ps2mouse_read(uint8_t* result, uint8_t timeout_ms) PS2MOUSE_DATA_HI(); *result = data & 0xFF; - return 0; + return PS2_OK; } uint8_t ps2mouse_wait_for_idle(uint8_t timeout_ms) @@ -159,15 +159,15 @@ uint8_t ps2mouse_wait_for_idle(uint8_t timeout_ms) while(ps2mouse_get_bus_status() != PS2_BUS_IDLE) { if(HAL_GetTick() - ps2mouse_wait_start >= timeout_ms) - return 1; + return PS2_ERROR_TIMEOUT; } - return 0; + return PS2_OK; } uint8_t ps2mouse_write_delay_start(uint8_t data, uint8_t timeout_ms) { if(ps2mouse_wait_for_idle(timeout_ms) != 0) - return 1; + return PS2_ERROR_TIMEOUT; delay_us(BYTEWAIT); return ps2mouse_write_nowait(data); } @@ -175,7 +175,7 @@ uint8_t ps2mouse_write_delay_start(uint8_t data, uint8_t timeout_ms) uint8_t ps2mouse_write(uint8_t data, uint8_t timeout_ms) { if(ps2mouse_wait_for_idle(timeout_ms) != 0) - return 1; + return PS2_ERROR_TIMEOUT; return ps2mouse_write_nowait(data); } @@ -237,8 +237,8 @@ void ps2mouse_host_req_reply(uint8_t cmd, mouse_event* mevent) reset_accumulators(); PS2MOUSE_SENDACK(); mouse_device_id = 0; // standard ps/2 mouse - if (sample_rate_history_index > 2 && sample_rate_history[sample_rate_history_index-1] == 80 && sample_rate_history[sample_rate_history_index-2] == 100 && sample_rate_history[sample_rate_history_index-3] == 200) - mouse_device_id = 3; // intellimouse with scroll wheel + // if (sample_rate_history_index > 2 && sample_rate_history[sample_rate_history_index-1] == 80 && sample_rate_history[sample_rate_history_index-2] == 100 && sample_rate_history[sample_rate_history_index-3] == 200) + // mouse_device_id = 3; // intellimouse with scroll wheel ps2mouse_write(mouse_device_id, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS); break; case 0xF0: // set remote mode @@ -336,7 +336,7 @@ uint8_t ps2mouse_get_outgoing_data(mouse_event* this_event, ps2_outgoing_buf* pb pbuf->data[3] = (uint8_t)(this_event->scroll_vertical); if(mouse_device_id != 0) pbuf->size = PS2MOUSE_PACKET_SIZE_INTELLIMOUSE; - return 0; + return PS2_OK; } uint8_t ps2mouse_write_nowait(uint8_t data) @@ -351,7 +351,10 @@ uint8_t ps2mouse_write_nowait(uint8_t data) PS2MOUSE_CLK_HI(); delay_us(CLKHALF); if(PS2MOUSE_READ_CLK_PIN() == GPIO_PIN_RESET) - return 1; + { + ps2mouse_release_lines(); + return PS2_ERROR_HOST_INHIBIT; + } for (int i=0; i < 8; i++) { @@ -366,7 +369,10 @@ uint8_t ps2mouse_write_nowait(uint8_t data) PS2MOUSE_CLK_HI(); delay_us(CLKHALF); if(PS2MOUSE_READ_CLK_PIN() == GPIO_PIN_RESET) - return 1; + { + ps2mouse_release_lines(); + return PS2_ERROR_HOST_INHIBIT; + } parity = parity ^ (data & 0x01); data = data >> 1; @@ -384,7 +390,10 @@ uint8_t ps2mouse_write_nowait(uint8_t data) PS2MOUSE_CLK_HI(); delay_us(CLKHALF); if(PS2MOUSE_READ_CLK_PIN() == GPIO_PIN_RESET) - return 1; + { + ps2mouse_release_lines(); + return PS2_ERROR_HOST_INHIBIT; + } // stop bit PS2MOUSE_DATA_HI(); @@ -396,16 +405,18 @@ uint8_t ps2mouse_write_nowait(uint8_t data) delay_us(BYTEWAIT_END); - return 0; + return PS2_OK; } uint8_t ps2mouse_send_update(ps2_outgoing_buf* pbuf) { + uint8_t write_result; for (int i = 0; i < pbuf->size; ++i) { // return error if inhibited or interrupted while transmitting - if(ps2mouse_write(pbuf->data[i], 255) != 0) - return 1; + write_result = ps2mouse_write(pbuf->data[i], 255); + if(write_result) + return write_result; } - return 0; + return PS2_OK; } diff --git a/firmware/ibmpc/scrap.c b/firmware/ibmpc/scrap.c index bd71db2..fb0d84e 100644 --- a/firmware/ibmpc/scrap.c +++ b/firmware/ibmpc/scrap.c @@ -1,3 +1,60 @@ +if(ps2mouse_send_update(&my_ps2_outbuf) == PS2_ERROR_HOST_INHIBIT) + { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + while(ps2mouse_get_bus_status() != PS2_BUS_IDLE) + ; + // HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + while(1) + ; + } + + while(1) + { + uint8_t send_result = ps2mouse_send_update(&my_ps2_outbuf); + if(send_result == PS2_ERROR_HOST_INHIBIT) + { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + while(ps2mouse_get_bus_status() != PS2_BUS_IDLE) + ; + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + continue; + } + else + { + mouse_buf_pop(&my_mouse_buf); + return; + } + } + // uint8_t send_result = ps2mouse_send_update(&my_ps2_outbuf); + // while(send_result == PS2_ERROR_HOST_INHIBIT) + // { + // HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + // HAL_Delay(10); + // } + // mouse_buf_pop(&my_mouse_buf); + + while(1) + { + uint8_t send_result = ps2mouse_send_update(&my_ps2_outbuf); + if(send_result == PS2_ERROR_HOST_INHIBIT) + { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + HAL_Delay(1); + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + continue; + } + else + { + mouse_buf_pop(&my_mouse_buf); + return; + } + } + // only pop the item if sending is complete + if(ps2mouse_send_update(&my_ps2_outbuf)) + HAL_Delay(1); + else + mouse_buf_pop(&my_mouse_buf); + void xtkb_update(void) { xtkb_check_for_softreset(); diff --git a/photos/'8042' PS_2 Controller - OSDev Wiki.htm b/photos/'8042' PS_2 Controller - OSDev Wiki.htm new file mode 100644 index 0000000..f6b4422 --- /dev/null +++ b/photos/'8042' PS_2 Controller - OSDev Wiki.htm @@ -0,0 +1,1202 @@ + + + +"8042" PS/2 Controller - OSDev Wiki + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            "8042" PS/2 Controller

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            From OSDev Wiki
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Jump to: navigation, + search +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 +Controller (often called a “Keyboard controllerâ€) is located on the +mainboard. In the early days the controller was a single chip (Intel 8042). As of today it is part of the Advanced Integrated Peripheral. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The name is misleading because the controller does more than controlling communication with PS/2 devices. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Overview of the PS/2-Controller
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Contents

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            History

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            A multi-purpose PPI (Intel 8048, Programmable peripheral interface; +also used to control other functions, like sound and parity error) +controlled the original uni-directional, single channel IBM PC and PC-XT + keyboard interface. +The XT controller is 100% obsolete and won't be discussed further in +this page. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +With the PC-AT, IBM introduced new keyboards (with a new bi-directional +protocol) and a new keyboard controller (Intel 8042). The old PPI was +not part of the motherboard any more. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Overview of the AT-Controller
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The 8042 was a powerful micro-controller. To reduce costs, some of +the general purpose input/output capabilities of the AT controller was +used to control various functions unrelated to the keyboard, including: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +With the introduction of the PS/2 series, the main change to the +keyboard controller subsystem was its expansion to control both a +keyboard and a mouse. Previously PC and compatible mice were connected +to different physical interfaces, including Serial Ports. + The AT keyboard controller and its “clones†were not capable of +interfacing the new PS/2 mouse. Eventually (around the late 80486 and +early Pentium time frame) PS/2 style mice became popular, and “PC +compatible†controllers have supported dual channels from then on +(nominally one keyboard and one mouse). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            For the keyboard functions proper, the PS2 and AT controllers are + very similar. The adjunction of a second channel (for the mouse) has +forced however to redefine a few status and control bits. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Translation

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The original IBM-PC keyboards (using the old XT interface) used "scan + code set 1". The new AT keyboards generated different scan codes, or +"scan code set 2". This change would have created compatibility problems + for software that was expecting different scan codes from the keyboard. + To avoid the compatibility problem, the keyboard controller supports a +translation mode. If translation is enabled the controller will +translate "scan code set 2" into "scan code set 1". +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Whenever this translation is enabled (and by default, it is) +there is no way to reverse it in software. For example, if you receive +the byte 0xB5 from the controller, then you can't know if the original +data (sent to the controller by the device) was the byte 0xB5; or if it +was the two bytes 0xF0, 0x33; or if it was the two bytes 0xF0, 0xB3. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            For software to actually use "scan code set 2" (or the even +newer, rarely used, "scan code set 3"), or to allow different devices to + be used in the keyboard port, you need to disable this translation to +avoid having the data from the device mangled. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            USB Legacy Support

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            By modern standards you will find many PCs bundled with USB + input devices. Some PCs may not even have PS/2 connectors at all. To +remain compatible with old software, the mainboard emulates USB +Keyboards and Mice as PS/2 devices. This is called USB Legacy Support. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Because the implementation differ by manufacturer and mainboard there are flaws and sometimes even bugs: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Some emulation layers also handle the communication with the +real PS/2 connectors regardless of any connected USB device. So maybe +not all capabilities of the PS/2 connectors and devices can be used. For + example extended mouse modes needed to use the scroll wheel won't work +or the keyboard only works on the first PS/2 connector and the mouse +only on the second connector. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • The SMM BIOS that's providing the PS/2 USB Legacy Support may not support extended memory techniques or Long Mode and may cause system crashes. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            This USB Legacy Support should be disabled by the OS as soon as the +OS initialises the USB Controller, and this should be done before the OS + attempts to initialise the real PS/2 controller. Otherwise the OS would + only initialise the emulated PS/2 controller and there's a large risk +of problems caused by deficiencies in the firmware's emulation. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Buffer Naming Perspective

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 controller has two (one byte) buffers for data — one buffer +for data received from devices that is waiting to be read by your OS, +and one for data written by your OS that is waiting to be sent to a PS/2 + device. Most data sheets for PS/2 controllers are written from the +perspective of the PS/2 device and not from the perspective of software +running on the host. Because of this, the names given to these buffers +are the opposite of what you expect: the output buffer contains a +device's output data (data waiting to be read by software), and the +input buffer contains a device's input (data that was sent by software). +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2 Controller IO Ports

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 Controller itself uses 2 IO ports (IO ports 0x60 and 0x64). +Like many IO ports, reads and writes may access different internal +registers. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Historical note: The PC-XT PPI had used port 0x61 to reset the +keyboard interrupt request signal (among other unrelated functions). +Port 0x61 has no keyboard related functions on AT and PS/2 compatibles. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            IO Port + Access Type + Purpose +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x60 + Read/Write + Data Port +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x64 + Read + Status Register +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x64 + Write + Command Register +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Data Port

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The Data Port (IO Port 0x60) is used for reading data that was +received from a PS/2 device or from the PS/2 controller itself and +writing data to a PS/2 device or to the PS/2 controller itself. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Status Register

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The Status Register contains various flags that show the state of the PS/2 controller. The meanings for each bit are: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Bit + Meaning +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0 + Output buffer status (0 = empty, 1 = full) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            (must be set before attempting to read data from IO port 0x60) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1 + Input buffer status (0 = empty, 1 = full) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            (must be clear before attempting to write data to IO port 0x60 or IO port 0x64) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            2 + System Flag +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Meant to be cleared on reset and set by firmware (via. PS/2 +Controller Configuration Byte) if the system passes self tests (POST) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            3 + Command/data (0 = data written to input buffer is data for PS/2 +device, 1 = data written to input buffer is data for PS/2 controller +command) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            4 + Unknown (chipset specific) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            May be "keyboard lock" (more likely unused on modern systems) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            5 + Unknown (chipset specific) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            May be "receive time-out" or "second PS/2 port output buffer full" +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            6 + Time-out error (0 = no error, 1 = time-out error) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            7 + Parity error (0 = no error, 1 = parity error) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Command Register

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The Command Port (IO Port 0x64) is used for sending commands to the PS/2 Controller (not to PS/2 devices). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2 Controller Commands

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 Controller accepts commands and performs them. These +commands should not be confused with bytes sent to a PS/2 device (e.g. +keyboard, mouse). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            To send a command to the controller, write the command byte to IO + port 0x64. If there is a "next byte" (the command is 2 bytes) then the +next byte needs to be written to IO Port 0x60 after making sure that the + controller is ready for it (by making sure bit 1 of the Status Register + is clear). If there is a response byte, then the response byte needs to + be read from IO Port 0x60 after making sure it has arrived (by making +sure bit 0 of the Status Register is set). +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Command Byte + Meaning + Response Byte +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x20 +Read "byte 0" from internal RAM +Controller Configuration Byte (see below) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x21 to 0x3F +Read "byte N" from internal RAM (where 'N' is the command byte & 0x1F) +Unknown (only the first byte of internal RAM has a standard purpose) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x60 +Write next byte to "byte 0" of internal RAM (Controller Configuration Byte, see below) +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x61 to 0x7F +Write next byte to "byte N" of internal RAM (where 'N' is the command byte & 0x1F) +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xA7 +Disable second PS/2 port (only if 2 PS/2 ports supported) +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xA8 +Enable second PS/2 port (only if 2 PS/2 ports supported) +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xA9 +Test second PS/2 port (only if 2 PS/2 ports supported) +0x00 test passed +

                                                                                                                                                                                                                                                                                                                                                                                                                                            0x01 clock line stuck low +0x02 clock line stuck high +0x03 data line stuck low +0x04 data line stuck high +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAA +Test PS/2 Controller +0x55 test passed +

                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFC test failed +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAB +Test first PS/2 port +0x00 test passed +

                                                                                                                                                                                                                                                                                                                                                                                                                                            0x01 clock line stuck low +0x02 clock line stuck high +0x03 data line stuck low +0x04 data line stuck high +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAC +Diagnostic dump (read all bytes of internal RAM) +Unknown +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAD +Disable first PS/2 port +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAE +Enable first PS/2 port +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xC0 +Read controller input port +Unknown (none of these bits have a standard/defined purpose) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xC1 +Copy bits 0 to 3 of input port to status bits 4 to 7 +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xC2 +Copy bits 4 to 7 of input port to status bits 4 to 7 +None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD0 +Read Controller Output Port +Controller Output Port (see below) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD1 +Write next byte to Controller Output Port (see below) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Check if output buffer is empty first +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD2 +Write next byte to first PS/2 port output buffer (only if 2 PS/2 ports supported) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            (makes it look like the byte written was received from the first PS/2 port) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD3 +Write next byte to second PS/2 port output buffer (only if 2 PS/2 ports supported) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            (makes it look like the byte written was received from the second PS/2 port) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD4 +Write next byte to second PS/2 port input buffer (only if 2 PS/2 ports supported) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            (sends next byte to the second PS/2 port) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0 to 0xFF +Pulse output line low for 6 ms. Bits 0 to 3 are used as a mask (0 = +pulse line, 1 = don't pulse line) and correspond to 4 different output +lines. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Bit 0 corresponds to the "reset" line. The other output lines don't have a standard/defined purpose. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            None +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Command bytes not listed in the table above should be treated +as either "chipset specific" or "unknown" and shouldn't be issued. +Commands bytes that are marked as "only if 2 PS/2 ports supported" +should also be treated as either "chipset specific" or "unknown" if the +controller only supports one PS/2 port. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2 Controller Configuration Byte

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Commands 0x20 and 0x60 let you read and write the PS/2 Controller +Configuration Byte. This configuration byte has the following format: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Bit + Meaning +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0 + First PS/2 port interrupt (1 = enabled, 0 = disabled) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1 + Second PS/2 port interrupt (1 = enabled, 0 = disabled, only if 2 PS/2 ports supported) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            2 + System Flag (1 = system passed POST, 0 = your OS shouldn't be running) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            3 + Should be zero +
                                                                                                                                                                                                                                                                                                                                                                                                                                            4 + First PS/2 port clock (1 = disabled, 0 = enabled) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            5 + Second PS/2 port clock (1 = disabled, 0 = enabled, only if 2 PS/2 ports supported) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            6 + First PS/2 port translation (1 = enabled, 0 = disabled) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            7 + Must be zero +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Bits listed in the table above as "unknown" should be treated +as either "chipset specific" or "unknown". Bits that are marked as "only + if 2 PS/2 ports supported" should also be treated as either "chipset +specific" or "unknown" if the controller only supports one PS/2 port. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2 Controller Output Port

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Commands 0xD0 and 0xD1 let you read and write the PS/2 Controller Output Port. This output port has the following format: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Bit + Meaning +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0 + System reset (output) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            WARNING always set to '1'. You need to pulse the reset line +(e.g. using command 0xFE), and setting this bit to '0' can lock the +computer up ("reset forever"). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1 + A20 gate (output) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            2 + Second PS/2 port clock (output, only if 2 PS/2 ports supported) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            3 + Second PS/2 port data (output, only if 2 PS/2 ports supported) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            4 + Output buffer full with byte from first PS/2 port (connected to IRQ1) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            5 + Output buffer full with byte from second PS/2 port (connected to IRQ12, only if 2 PS/2 ports supported) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            6 + First PS/2 port clock (output) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            7 + First PS/2 port data (output) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Bits that are marked in the table above as "only if 2 PS/2 +ports supported" should be treated as either "chipset specific" or +"unknown" if the controller only supports one PS/2 port. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Initialising the PS/2 Controller

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Some people assume the PS/2 controller exists and was configured +correctly by firmware. This approach can work, but isn't very robust and + doesn't correctly support "less simple" scenarios. Examples of why this + approach may not work well include: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Something (e.g. a Boot Manager) left the PS/2 Controller in a dodgy state +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • The PS/2 Controller has hardware faults and your OS did no testing +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • There's a USB keyboard and a PS/2 mouse, and the BIOS didn't +bother initialising the PS/2 controller because it was using USB Legacy +Support and not using the mouse +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • You want to reliably send data to the second PS/2 device on +older hardware and have to know the second PS/2 port exists (see the +warning for "Sending Bytes To The Second PS/2 Port" below). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The following steps are for "comprehensive PS/2 Controller +initialisation". It may be excessive for your purposes, and a more +limited version of it may be more suitable. However, it's easy enough to + (selectively) remove steps from the following description. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 1: Initialise USB Controllers

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            This has nothing to do with the PS/2 Controller or PS/2 Devices, +however if the system is using (typically limited/dodgy) USB Legacy +Support it will interfere with PS/2 Controller initialisation. Therefore + you need to initialise USB controllers and disable USB Legacy Support +beforehand. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 2: Determine if the PS/2 Controller Exists

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Before you touch the PS/2 controller at all, you should determine if +it exists. On some systems (e.g. 80x86 Apple machines) it doesn't exist +and any attempt to touch it can cause a system crash. The correct way to + do this is is with ACPI. + Check bit 1 (value = 2, the "8042" flag) in the "IA PC Boot +Architecture Flags" field at offset 109 in the Fixed ACPI Description +Table (FADT). If this bit is clear, then there is no PS/2 Controller to +configure. Otherwise, if the bit is set, or the system doesn't support +ACPI (no ACPI tables and no FADT) then there is a PS/2 Controller. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 3: Disable Devices

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            So that any PS/2 devices can't send data at the wrong time and mess +up your initialisation; start by sending a command 0xAD and command 0xA7 + to the PS/2 controller. If the controller is a "single channel" device, + it will ignore the "command 0xA7". +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 4: Flush The Output Buffer

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Sometimes (e.g. due to interrupt controlled initialisation causing a +lost IRQ) data can get stuck in the PS/2 controller's output buffer. To +guard against this, now that the devices are disabled (and can't send +more data to the output buffer) it can be a good idea to flush the +controller's output buffer. There's 2 ways to do this - poll bit 0 of +the Status Register (while reading from IO Port 0x60 if/when bit 0 +becomes set), or read from IO Port 0x60 without testing bit 0. Either +way should work (as you're discarding the data and don't care what it +was). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 5: Set the Controller Configuration Byte

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Because some bits of the Controller Configuration Byte are "unknown", + this means reading the old value (command 0x20), changing some bits, +then writing the changed value back (command 0x60). You want to disable +all IRQs and disable translation (clear bits 0, 1 and 6). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            While you've got the Configuration Byte, test if bit 5 was set. +If it was clear, then you know it can't be a "dual channel" PS/2 +controller (because the second PS/2 port should be disabled). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 6: Perform Controller Self Test

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            To test the PS/2 controller, send command 0xAA to it. Then wait for +its response and check it replied with 0x55. Note: this can reset the +PS/2 controller on some hardware (tested on a 2016 laptop). At the very +least, the Controller Configuration Byte should be restored for +compatibility with such hardware. You can either determine the correct +value yourself based on the above table or restore the value read before + issuing 0xAA. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 7: Determine If There Are 2 Channels

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            If you know it's a single channel controller (from Step 5) then skip +this step. Otherwise, send a command 0xAE to enable the second PS/2 port + and read the Controller Configuration Byte again. Now bit 5 of the +Controller Configuration Byte should be clear - if it's set then you +know it can't be a "dual channel" PS/2 controller (because the second +PS/2 port should be enabled). If it is a dual channel device, send a +command 0xA7 to disable the second PS/2 port again. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 8: Perform Interface Tests

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            This step tests the PS/2 ports. Use command 0xAB to test the first +PS/2 port, then check the result. Then (if it's a "dual channel" +controller) use command 0xA9 to test the second PS/2 port, then check +the result. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            At this stage, check to see how many PS/2 ports are left. If +there aren't any that work you can just give up (display errors and +terminate the PS/2 Controller driver). Note: If one of the PS/2 ports on a dual PS/2 controller fails, then you can still keep using/supporting the other PS/2 port. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 9: Enable Devices

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Enable any PS/2 port that exists and works using command 0xAE (for +the first port) and command 0xA8 (for the second port). If you're using +IRQs (recommended), also enable interrupts for any (usable) PS/2 ports +in the Controller Configuration Byte (set bit 0 for the first PS/2 port, + and/or bit 1 for the second PS/2 port, then set it with command 0x60). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Step 10: Reset Devices

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            All PS/2 devices should support the "reset" command (which is a +command for the device, and not a command for the PS/2 Controller). To +send the reset, just send the byte 0xFF to each (usable) device. The +device/s will respond with 0xFA (success) or 0xFC (failure), or won't +respond at all (no device present). If your code supports "hot-plug PS/2 + devices" (see later), then you can assume each device is "not present" +and let the hot-plug code figure out that the device is present if/when +0xFA or 0xFC is received on a PS/2 port. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            TODO: Potential wiki error, the 0xFF reset device command seems to respond 0xAA and then 0xFA on self-test success, and PS/2_Keyboard agrees. --Sortie 14:15, 27 April 2015 (CDT) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            TODO: Sortie: I don't think so, I send byte 0xFF to +keyboard (or mouse), then received 0xFA (command acknowledged) after +that received 0xAA (self test successful) the last one was 0x00 - mouse +device ID. --Akasei 00:35, 19 February 2017 (UTC+1) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Detecting PS/2 Device Types

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            All PS/2 devices should support the "identify" command and the +"disable scanning" command (which are commands for the device, and not +commands for the PS/2 Controller). The device should respond to the +"identify" command by sending a sequence of none, one or two +identification bytes. However, if you just send the "identify" command +you can't prevent the response from the "identify" command from being +mixed up with keyboard/mouse data. To fix this problem, you need to send + the "disable scanning" command first. Disabling scanning means that the + device ignores the user (e.g. keyboards ignore key presses, mice ignore + mouse movement and button presses, etc) and won't send data to mess +your device identification code up. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The full sequence is: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Send the "disable scanning" command 0xF5 to the device +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Wait for the device to send "ACK" back (0xFA) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Send the "identify" command 0xF2 to the device +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Wait for the device to send "ACK" back (0xFA) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Wait for the device to send up to 2 bytes of reply, with a +time-out to determine when it's finished (e.g. in case it only sends 1 +byte) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            A partial list of responses includes: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Byte/s + Device Type +
                                                                                                                                                                                                                                                                                                                                                                                                                                            None + Ancient AT keyboard with translation enabled in the PS/Controller (not possible for the second PS/2 port) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x00 + Standard PS/2 mouse +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x03 + Mouse with scroll wheel +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x04 + 5-button mouse +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAB, 0x41 or 0xAB, 0xC1 + MF2 keyboard with translation enabled in the PS/Controller (not possible for the second PS/2 port) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAB, 0x83 + MF2 keyboard +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: If anyone sees any other responses please add to the list above! +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Once your PS/2 Controller driver knows what types of PS/2 devices + are present, it can start suitable device drivers for those devices. +Don't forget that we've left devices in a "scanning disabled" state. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Hot Plug PS/2 Devices

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            WARNING: PS/2 was never intentionally designed to support +hot-plug. Usually it is fine as most PS/2 controllers have reasonably +robust IO lines, however some PS/2 controllers (mostly those in old +chipsets) might get damaged. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Despite the warning, most OSs (Windows, Linux, etc) do support +hot-plug PS/2. It is also relied on by old "mechanical switch" KVMs +(which allow multiple computers to share the same PS/2 devices by +effectively disconnecting the device from one computer and connecting it + to the next). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When a PS/2 device is removed the PS/2 controller won't know. To +work around this, when no data has been received from the device for +some length of time (e.g. 2 seconds), an OS can periodically test for +the presence of the device by sending an "echo" command to the device +and checking for a reply. If the device doesn't respond, then assume the + device has been unplugged. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When a PS/2 device is first powered up (e.g. when it is plugged +in to a PS/2 port), the device should perform its Basic Assurance Test +and then attempt to send a "BAT completion code". This means that +software (e.g. an OS) can automatically detect when a PS/2 device has +been inserted. Note: If a device is removed and then another device +(or the same device) is plugged in quickly enough, the software may not +have had time to detect the removal. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When software detects that a device was plugged in it can +determine the type of device (see above). If the device was the same +type as before software can re-configure it so that the device is in the + same state as it was before removal. This means that (for example) +someone using an old "mechanical switch" KVMs doesn't lose state (things + like keyboard LEDs, typematic rate, etc) when switching between +computers. If the device is not the same as before or there was no +previously connected device, then software may need to start a new +device driver (and terminate the old device driver, if any). +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Sending Bytes To Device/s

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Unfortunately, the PS/2 Controller does not support interrupt driven +transmission (e.g. you can't have a queue of bytes waiting to be sent +and then send each byte from inside a "transmitter empty" IRQ handler). +Fortunately, little data needs to be sent to typical PS/2 devices and +polling suffices. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            First PS/2 Port

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            To send data to the first PS/2 Port: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Set up some timer or counter to use as a time-out +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Poll bit 1 of the Status Register ("Input buffer empty/full") until it becomes clear, or until your time-out expires +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • If the time-out expired, return an error +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Otherwise, write the data to the Data Port (IO port 0x60) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Second PS/2 Port

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Sending data to the second PS/2 port is a little more complicated, as + you need to send a command to the PS/2 controller to tell it that you +want to talk to the second PS/2 port instead of the first PS/2 port. To +send data to the second PS/2 Port: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Write the command 0xD4 to IO Port 0x64 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Set up some timer or counter to use as a time-out +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Poll bit 1 of the Status Register ("Input buffer empty/full") until it becomes clear, or until your time-out expires +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • If the time-out expired, return an error +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Otherwise, write the data to the Data Port (IO port 0x60) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            WARNING: If the PS/2 controller is an (older) "single PS/2 +device only" controller, if you attempt to send a byte to the second +PS/2 port the controller will ignore the command 0xD4 you send to IO +Port 0x64, and therefore the byte you send will be sent to the first +PS/2 device. This means that (if you support older hardware) to reliably + send data to the second device you have to know that the PS/2 +Controller actually has a second PS/2 port. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Receiving Bytes From Device/s

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            There are 2 ways to receive bytes from device/s: polling and using IRQ. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Polling

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            To poll, wait until bit 0 of the Status Register becomes set, then read the received byte of data from IO Port 0x60. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            There are 2 major problems with polling. The first problem is +that (like all polling) it wastes a lot of CPU time for nothing. The +second problem is that if the PS/2 controller supports two PS/2 devices, + there's no way to reliably determine which device sent the byte you +received, unless one of them is disabled and unable to send data. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: if the PS/2 controller uses bit 5 of the Status Register as + a "second PS/2 port output buffer full" flag, you'd still have problems + trying to determine which device sent a byte of data you've received +without race conditions. For example, there may be data from the second +PS/2 device waiting for you when you check the flag, but before you read + from IO Port 0x60 data from the first PS/2 device might arrive and you +might read data from the first PS/2 device when you think you're reading + data from the second PS/2 device. There's also no easy way to know if +the PS/2 controller uses bit 5 of the Status Register as a "second PS/2 +port output buffer full" flag. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Interrupts

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Using interrupts is easy. When IRQ1 occurs you just read from IO Port + 0x60 (there is no need to check bit 0 in the Status Register first), +send the EOI to the interrupt controller and return from the interrupt +handler. You know that the data came from the first PS/2 device because +you received an IRQ1. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When IRQ12 occurs you read from IO Port 0x60 (there is no need to + check bit 0 in the Status Register first), send the EOI to the +interrupt controller/s and return from the interrupt handler. You know +that the data came from the second PS/2 device because you received an +IRQ12. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Unfortunately, there is one problem to worry about. If you send a + command to the PS/2 controller that involves a response, the PS/2 +controller may generate IRQ1, IRQ12, or no IRQ (depending on the +firmware) when it puts the "response byte" into the buffer. In all three + cases, you can't tell if the byte came from a PS/2 device or the PS/2 +controller. In the no IRQ case, you additionally will need to poll for +the byte. Fortunately, you should never need to send a command to the +PS/2 controller itself after initialisation (and you can disable IRQs +and both PS/2 devices where necessary during initialisation). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            CPU Reset

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            To trigger a CPU Reset, regardless of what state the CPU is in, write the value 0xFE to the Output port. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                             ;Wait for a empty Input Buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            + wait1:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + in   al, 0x64
                                                                                                                                                                                                                                                                                                                                                                                                                                            + test al, 00000010b
                                                                                                                                                                                                                                                                                                                                                                                                                                            + jne  wait1
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + ;Send 0xFE to the keyboard controller.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + mov  al, 0xFE
                                                                                                                                                                                                                                                                                                                                                                                                                                            + out  0x64, al
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            See Also

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Threads

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            External Links

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Personal tools
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Namespaces
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Variants
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Views
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Actions
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Navigation
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            About
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            In other languages
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + \ No newline at end of file diff --git a/photos/'8042' PS_2 Controller - OSDev Wiki_files/At-kbc.png b/photos/'8042' PS_2 Controller - OSDev Wiki_files/At-kbc.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0498ff492692f332bf861255931bf4415e2b1b GIT binary patch literal 22101 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

                                                                                                                                                                                                                                                                                                                                                                                                                                            R=S?=F|$jeK~WgO7dbOk$d$ypGNHLvwRlU*e{ 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 literal 0 HcmV?d00001 diff --git a/photos/'8042' PS_2 Controller - OSDev Wiki_files/load.css b/photos/'8042' PS_2 Controller - OSDev Wiki_files/load.css new file mode 100644 index 0000000..1ae8854 --- /dev/null +++ b/photos/'8042' PS_2 Controller - OSDev Wiki_files/load.css @@ -0,0 +1,3 @@ +@media print{ a.stub,a.new{color:#ba0000;text-decoration:none}#toc{border:1px solid #aaaaaa;background-color:#f9f9f9;padding:5px}.tocindent{margin-left:2em}.tocline{margin-bottom:0px} div.floatright{float:right;clear:right;position:relative;margin:0.5em 0 0.8em 1.4em}div.floatright p{font-style:italic}div.floatleft{float:left;clear:left;position:relative;margin:0.5em 1.4em 0.8em 0}div.floatleft p{font-style:italic}div.center{text-align:center} div.thumb{border:none;width:auto;margin-top:0.5em;margin-bottom:0.8em;background-color:transparent}div.thumbinner{border:1px solid #cccccc;padding:3px !important;background-color:White;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{border:1px solid #cccccc}html .thumbcaption{border:none;text-align:left;line-height:1.4em;padding:3px !important;font-size:94%}div.magnify{display:none} div.tright{float:right;clear:right;margin:0.5em 0 0.8em 1.4em} div.tleft{float:left;clear:left;margin:0.5em 1.4em 0.8em 0}img.thumbborder{border:1px solid #dddddd} table.rimage{float:right;width:1pt;position:relative;margin-left:1em;margin-bottom:1em;text-align:center}body{background:White; color:Black;margin:0;padding:0}.noprint,div#jump-to-nav,div.top,div#column-one,#colophon,.editsection,.toctoggle,.tochidden,div#f-poweredbyico,div#f-copyrightico,li#viewcount,li#about,li#disclaimer,li#privacy,#footer-places,#mw-hidden-catlinks{ display:none}ul{list-style-type:square}#content{background:none;border:none ! important;padding:0 ! important;margin:0 ! important;direction:ltr}#footer{background :white;color :black;margin-top:1em;border-top:1px solid #AAA;direction:ltr}h1,h2,h3,h4,h5,h6{font-weight:bold}p,.documentDescription{margin:1em 0 ! important;line-height:1.2em}.tocindent p{margin:0 0 0 0 ! important}pre{border:1pt dashed black;white-space:pre;font-size:8pt;overflow:auto;padding:1em 0;background:white;color:black}table.listing,table.listing td{border:1pt solid black;border-collapse:collapse}a{color:Black !important;background:none !important;padding:0 !important}a:link,a:visited{color:#520;background:transparent;text-decoration:underline}#content a.external.text:after,#content a.external.autonumber:after{ content:" (" attr(href) ") "}#globalWrapper{width:100% !important;min-width:0 !important}#content{background:white;color:black}#column-content{margin:0 !important}#column-content #content{padding:1em;margin:0 !important} a,a.external,a.new,a.stub{color:black ! important;text-decoration:none ! important} a,a.external,a.new,a.stub{color:inherit ! important;text-decoration:inherit ! important}img{border:none;vertical-align:middle} span.texhtml{font-family:serif}#siteNotice{display:none} li.gallerybox{vertical-align:top;border:solid 2px white;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word} table.diff{background:white}td.diff-otitle{background:#ffffff}td.diff-ntitle{background:#ffffff}td.diff-addedline{background:#ccffcc;font-size:smaller;border:solid 2px black}td.diff-deletedline{background:#ffffaa;font-size:smaller;border:dotted 2px black}td.diff-context{background:#eeeeee;font-size:smaller}.diffchange{color:silver;font-weight:bold;text-decoration:underline} table.wikitable{margin:1em 1em 1em 0;border:1px #aaa solid;background:white;border-collapse:collapse}.wikitable th,.wikitable td{border:1px #aaa solid;padding:0.2em}.wikitable th{text-align:center;background:white;font-weight:bold}.wikitable caption{font-weight:bold}a.sortheader{margin:0px 0.3em} .wikitable,.thumb,img{page-break-inside:avoid}h2,h3,h4,h5,h6,h7{page-break-after:avoid}p{widows:3;orphans:3} .catlinks ul{display:inline;margin:0px;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle !ie}.catlinks li{display:inline-block;line-height:1.15em;padding:0 .4em;border-left:1px solid #AAA;margin:0.1em 0;zoom:1;display:inline !ie}.catlinks li:first-child{padding-left:.2em;border-left:none}}@media screen{ .mw-content-ltr{direction:ltr}.mw-content-rtl{direction:rtl} .sitedir-ltr textarea,.sitedir-ltr input{direction:ltr}.sitedir-rtl textarea,.sitedir-rtl input{direction:rtl} input[type="submit"],input[type="button"],input[type="reset"],input[type="file"]{direction:ltr} textarea[dir="ltr"],input[dir="ltr"]{direction:ltr}textarea[dir="rtl"],input[dir="rtl"]{direction:rtl} abbr,acronym,.explain{border-bottom:1px dotted black;cursor:help} .mw-plusminus-pos{color:#006400} .mw-plusminus-neg{color:#8b0000} .mw-plusminus-null{color:#aaa} .allpagesredirect,.redirect-in-category,.watchlistredir{font-style:italic} span.comment{font-style:italic}span.changedby{font-size:95%} .texvc{direction:ltr;unicode-bidi:embed}img.tex{vertical-align:middle}span.texhtml{font-family:serif} #wikiPreview.ontop{margin-bottom:1em} #editform,#toolbar,#wpTextbox1{clear:both}#toolbar img{cursor:pointer}div#mw-js-message{margin:1em 5%;padding:0.5em 2.5%;border:solid 1px #ddd;background-color:#fcfcfc} .editsection{float:right;margin-left:5px} .mw-content-ltr .editsection,.mw-content-rtl .mw-content-ltr .editsection{float:right}.mw-content-rtl .editsection,.mw-content-ltr .mw-content-rtl .editsection{float:left} h2#filehistory{clear:both}table.filehistory th,table.filehistory td{vertical-align:top}table.filehistory th{text-align:left}table.filehistory td.mw-imagepage-filesize,table.filehistory th.mw-imagepage-filesize{white-space:nowrap}table.filehistory td.filehistory-selected{font-weight:bold} li span.deleted,span.history-deleted{text-decoration:line-through;color:#888;font-style:italic} .not-patrolled{background-color:#ffa}.unpatrolled{font-weight:bold;color:red}div.patrollink{font-size:75%;text-align:right} td.mw-label{text-align:right}td.mw-input{text-align:left}td.mw-submit{text-align:left}td.mw-label{vertical-align:top}.prefsection td.mw-label{width:20%}.prefsection table{width:100%}td.mw-submit{white-space:nowrap}table.mw-htmlform-nolabel td.mw-label{width:0 !important}tr.mw-htmlform-vertical-label td.mw-label{text-align:left !important}.mw-htmlform-invalid-input td.mw-input input{border-color:red}.mw-htmlform-multiselect-flatlist div.mw-htmlform-multiselect-item{display:inline;margin-right:1em;white-space:nowrap}input#wpSummary{width:80%} .thumbcaption{text-align:left}.magnify{float:right} #catlinks{ text-align:left}#catlinks ul{display:inline;margin:0px;padding:0px;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle !ie}#catlinks li{display:inline-block;line-height:1.35em;padding:0 .7em;border-left:1px solid #AAA;margin:0.3em 0;zoom:1;display:inline !ie}#catlinks li:first-child{padding-left:.4em;border-left:none} .mw-hidden-cats-hidden{display:none}.catlinks-allhidden{display:none} p.mw-ipb-conveniencelinks,p.mw-protect-editreasons,p.mw-filedelete-editreasons,p.mw-delete-editreasons,p.mw-revdel-editreasons{font-size:90%;text-align:right} .os-suggest{overflow:auto;overflow-x:hidden;position:absolute;top:0px;left:0px;width:0px;background-color:white;background-color:Window;border-style:solid;border-color:#AAAAAA;border-width:1px;z-index:99;font-size:95%}table.os-suggest-results{font-size:95%;cursor:pointer;border:0;border-collapse:collapse;width:100%}.os-suggest-result,.os-suggest-result-hl{white-space:nowrap;background-color:white;background-color:Window;color:black;color:WindowText;padding:2px}.os-suggest-result-hl,.os-suggest-result-hl-webkit{background-color:#4C59A6;color:white}.os-suggest-result-hl{ background-color:Highlight;color:HighlightText}.os-suggest-toggle{position:relative;left:1ex;font-size:65%}.os-suggest-toggle-def{position:absolute;top:0px;left:0px;font-size:65%;visibility:hidden} .autocomment{color:gray}#pagehistory .history-user{margin-left:0.4em;margin-right:0.2em}#pagehistory span.minor{font-weight:bold}#pagehistory li{border:1px solid white}#pagehistory li.selected{background-color:#f9f9f9;border:1px dashed #aaa}.mw-history-revisiondelete-button,#mw-fileduplicatesearch-icon{float:right} .newpage,.minor,.bot{font-weight:bold}#shared-image-dup,#shared-image-conflict{font-style:italic} div.mw-warning-with-logexcerpt{padding:3px;margin-bottom:3px;border:2px solid #2F6FAB;clear:both}div.mw-warning-with-logexcerpt ul li{font-size:90%} span.mw-revdelundel-link,strong.mw-revdelundel-link{font-size:90%}span.mw-revdelundel-hidden,input.mw-revdelundel-hidden{visibility:hidden}td.mw-revdel-checkbox,th.mw-revdel-checkbox{padding-right:10px;text-align:center} a.feedlink{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH2AkOCjkSL9xYhAAAAc9JREFUKJE90LFrU1EYQPHzffe+l/iSVkXTmNiANBU7iE5OLrbSVYKIiy5dnARB3FwEB5dOOhQKuthJEEHRsUXBoosO0lKKEYRa29LWQk3S5L53r0PVv+D8OPJlolrrr1ZmI7F1BFEjqBXECGJAjSBCaLddc7u5Mmb7q5U5007rWh5E9rYR/xsTBBXBWMVEglqRpGiGhcE5G6kdyugxcGsGyRdJ15ZwC29IF55jNEWt8K+aFOMhc+dC7Z6SITjC7ga2MkI8cpH41Dhh7RPa20Gt4toZac+IqhFMTpG0hVt8RetJg967SaTvGLnGNKZ0EtfOcB1P5jyqVjCRkIzfpnjtMYXrT2FrCff6JqhFRx/gnCXtZHgXUFHQSGg/u4Gbf4T2lYkvTaFGce8fIgePY09fwXU8Pg3sk2JFu5v4lQ+4FxPge+j5u3Q+v8TvrBKfbZB1PT4LqJh9Uv7yFLmrM2i+gPs4jRyqIaUz7C2+xZZOEA4cJaSgaAhqhbC1DK0N3K9NusvzAHB4GLf+HQBJBsiCD7J6/9zXI2VbVyv/b6Sdv1e6nrTryboB7wVbyjXt1rcfo0Frs4UkqvtUJHMBjyVEAcSjFiQJwRvf3F3/OfYH/dDFWrCooaIAAAAASUVORK5CYII=) center left no-repeat;background:url(https://wiki.osdev.org/skins/common/images/feed-icon.png?2012-01-04T05:30:00Z) center left no-repeat!ie;padding-left:16px} .plainlinks a{background:none !important;padding:0 !important} .rtl a.external.free,.rtl a.external.autonumber{direction:ltr;unicode-bidi:embed} table.wikitable{margin:1em 1em 1em 0;background:#f9f9f9;border:1px #aaa solid;border-collapse:collapse;color:black}.wikitable th,.wikitable td{border:1px #aaa solid;padding:0.2em}.wikitable th{background:#f2f2f2;text-align:center}.wikitable caption{font-weight:bold} table.collapsed tr.collapsable{display:none} .success{color:green;font-size:larger}.warning{color:#FFA500; font-size:larger}.error{color:red;font-size:larger}.errorbox,.warningbox,.successbox{font-size:larger;border:2px solid;padding:.5em 1em;float:left;margin-bottom:2em;color:#000}.errorbox{border-color:red;background-color:#fff2f2}.warningbox{border-color:#FF8C00; background-color:#FFFFC0}.successbox{border-color:green;background-color:#dfd}.errorbox h2,.warningbox h2,.successbox h2{font-size:1em;font-weight:bold;display:inline;margin:0 .5em 0 0;border:none} .mw-infobox{border:2px solid #ff7f00;margin:0.5em;clear:left;overflow:hidden}.mw-infobox-left{margin:7px;float:left;width:35px}.mw-infobox-right{margin:0.5em 0.5em 0.5em 49px} .previewnote{color:#c00;margin-bottom:1em}.previewnote p{text-indent:3em;margin:0.8em 0}.visualClear{clear:both}#mw_trackbacks{border:solid 1px #bbbbff;background-color:#eeeeff;padding:0.2em} .TablePager{min-width:80%;border-collapse:collapse}.TablePager_nav{margin:0 auto}.TablePager_nav td{padding:3px;text-align:center}.TablePager_nav a{text-decoration:none}.TablePager,.TablePager td,.TablePager th{border:1px solid #aaaaaa;padding:0 0.15em 0 0.15em}.TablePager th{background-color:#eeeeff}.TablePager td{background-color:#ffffff}.TablePager tr:hover td{background-color:#eeeeff}.imagelist td,.imagelist th{white-space:nowrap}.imagelist .TablePager_col_links{background-color:#eeeeff}.imagelist .TablePager_col_img_description{white-space:normal}.imagelist th.TablePager_sort{background-color:#ccccff} ul#filetoc{text-align:center;border:1px solid #aaaaaa;background-color:#f9f9f9;padding:5px;font-size:95%;margin-bottom:0.5em;margin-left:0;margin-right:0}#filetoc li{display:inline;list-style-type:none;padding-right:2em} table.mw_metadata{font-size:0.8em;margin-left:0.5em;margin-bottom:0.5em;width:400px}table.mw_metadata caption{font-weight:bold}table.mw_metadata th{font-weight:normal}table.mw_metadata td{padding:0.1em}table.mw_metadata{border:none;border-collapse:collapse}table.mw_metadata td,table.mw_metadata th{text-align:center;border:1px solid #aaaaaa;padding-left:5px;padding-right:5px}table.mw_metadata th{background-color:#f9f9f9}table.mw_metadata td{background-color:#fcfcfc}table.mw_metadata ul.metadata-langlist{list-style-type:none;list-style-image:none;padding-right:5px;padding-left:5px;margin:0} .mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{ margin:0.3em 0 0 1.5em;padding:0}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{ margin:0.3em 1.5em 0 0;padding:0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{ margin:0.3em 0 0 3.2em;padding:0}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{ margin:0.3em 3.2em 0 0;padding:0} .mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{margin:.3em 0 0 1.5em}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{margin:.3em 1.5em 0 0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{margin:.3em 0 0 3.2em}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{margin:.3em 3.2em 0 0} li.gallerybox{vertical-align:top;border:solid 2px white;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;background-color:#f9f9f9;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.mw-ajax-loader{background-image:url(data:image/gif;base64,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);background-image:url(https://wiki.osdev.org/skins/common/images/ajax-loader.gif?2012-01-04T05:30:00Z)!ie;background-position:center center;background-repeat:no-repeat;padding:16px;position:relative;top:-16px}.mw-small-spinner{padding:10px !important;margin-right:0.6em;background-image:url(data:image/gif;base64,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);background-image:url(https://wiki.osdev.org/skins/common/images/spinner.gif?2012-01-04T05:30:00Z)!ie;background-position:center center;background-repeat:no-repeat} ol:lang(bcc) li,ol:lang(bqi) li,ol:lang(fa) li,ol:lang(glk) li,ol:lang(kk-arab) li,ol:lang(mzn) li{list-style-type:-moz-persian;list-style-type:persian}ol:lang(ckb) li{list-style-type:-moz-arabic-indic;list-style-type:arabic-indic}ol:lang(as) li,ol:lang(bn) li{list-style-type:-moz-bengali;list-style-type:bengali}ol:lang(or) li{list-style-type:-moz-oriya;list-style-type:oriya}#toc ul,.toc ul{margin:.3em 0} .mw-content-ltr .toc ul,.mw-content-ltr #toc ul,.mw-content-rtl .mw-content-ltr .toc ul,.mw-content-rtl .mw-content-ltr #toc ul{text-align:left}.mw-content-rtl .toc ul,.mw-content-rtl #toc ul,.mw-content-ltr .mw-content-rtl .toc ul,.mw-content-ltr .mw-content-rtl #toc ul{text-align:right}.mw-content-ltr .toc ul ul,.mw-content-ltr #toc ul ul,.mw-content-rtl .mw-content-ltr .toc ul ul,.mw-content-rtl .mw-content-ltr #toc ul ul{margin:0 0 0 2em}.mw-content-rtl .toc ul ul,.mw-content-rtl #toc ul ul,.mw-content-ltr .mw-content-rtl .toc ul ul,.mw-content-ltr .mw-content-rtl #toc ul ul{margin:0 2em 0 0}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{direction:ltr} .mw-help-field-hint{display:none;margin-left:2px;margin-bottom:-8px;padding:0px 0px 0px 15px;background-image:url(data:image/gif;base64,R0lGODlhCwALALMAAP///01NTZOTk1lZWefn57i4uJSUlPPz82VlZdDQ0HFxcaysrNvb28TExAAAAAAAACH5BAAAAAAALAAAAAALAAsAAAQrUIRJqQQ455nNNBgHJANBDAwgZsVwqIG2IEQYYwXy2lq/Kg3NqqeSVCqCCAA7);background-image:url(https://wiki.osdev.org/skins/common/images/help-question.gif?2012-01-04T05:30:00Z)!ie;background-position:left center;background-repeat:no-repeat;cursor:pointer;font-size:.8em;text-decoration:underline;color:#0645ad}.mw-help-field-hint:hover{background-image:url(data:image/gif;base64,R0lGODlhCwALALMAAAtop+7z+GCWwpW51oStz8rb6yZzrafF3bnR5Nzn8QBcoD91oABQmf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE5NkQ0QUQzRjI0NzRCNUQwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBN0FFQTQwQjlGQzExREY5RDlBQTRBODQyMkJCMkFDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBN0FFQTNGQjlGQzExREY5RDlBQTRBODQyMkJCMkFDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkM3RjExNzQwNzIwNjgxMTk1RkVBQ0ZBOEQxNTU5MkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDI4MDExNzQwNzIwNjgxMTk2RDRBRDNGMjQ3NEI1RDAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAACwALAAAEK3CxSalsOOeZxRQY1yBKkihFI2aDEqiMRgBJGGMD8NpavxoHzaqnklQqiwgAOw==);background-image:url(https://wiki.osdev.org/skins/common/images/help-question-hover.gif?2012-01-04T05:30:00Z)!ie}.mw-help-field-data{display:block;background-color:#d6f3ff;padding:5px 8px 4px 8px;border:1px solid #5dc9f4;margin-left:20px}.tipsy{padding:5px 5px 10px;font-size:12px;position:absolute;z-index:100000;overflow:visible}.tipsy-inner{padding:5px 8px 4px 8px;background-color:#d6f3ff;color:black;border:1px solid #5dc9f4;max-width:300px;text-align:left}.tipsy-arrow{position:absolute;background:url(data:image/gif;base64,R0lGODlhDQANAMQAAPf399bz/9vu9m/O9NXy/8Pm9svp9pfd+YLW943X9LTn++z093XQ9WnM9OLw9p/c9YTU9InY9/T292DK9Jre+afj+rvq/Nzv9rjk9brl9cPt/ZLb+GbL9MLs/ZHb+KLh+iH5BAAAAAAALAAAAAANAA0AAAVK4BGMZBkcg2WW1lBEKxkVAFTFFQQAwkSYhIlgB3hQTJQHEbBodEiaxmIJyHhIGwwVIGEoAgqGZAswIAIIA3mX+CTWOwfHAd9dtiEAOw==) no-repeat top left;background:url(https://wiki.osdev.org/skins/common/images/tipsy-arrow.gif?2012-01-04T05:30:00Z) no-repeat top left!ie;width:13px;height:13px}.tipsy-se .tipsy-arrow{bottom:-2px;right:10px;background-position:0% 100%} table.sortable th.headerSort{background-image:url(images/sort_both.gif);cursor:pointer;background-repeat:no-repeat;background-position:center right;padding-right:21px}table.sortable th.headerSortUp{background-image:url(images/sort_up.gif)}table.sortable th.headerSortDown{background-image:url(images/sort_down.gif)} .ltr{ direction:ltr;unicode-bidi:embed}#mw-clearyourcache,#mw-sitecsspreview,#mw-sitejspreview,#mw-usercsspreview,#mw-userjspreview{direction:ltr;unicode-bidi:embed} .diff-currentversion-title,.diff{direction:ltr;unicode-bidi:embed} .diff-contentalign-right td{direction:rtl;unicode-bidi:embed} .diff-contentalign-left td{direction:ltr;unicode-bidi:embed}.diff-otitle,.diff-ntitle,.diff-lineno{direction:ltr !important;unicode-bidi:embed}#mw-revision-info,#mw-revision-nav{direction:ltr} div.tright,div.floatright,table.floatright{clear:right;float:right}div.tleft,div.floatleft,table.floatleft{float:left;clear:left}div.floatright,table.floatright,div.floatleft,table.floatleft{position:relative} #mw-credits a{unicode-bidi:embed}}@media screen{ html,body{height:100%;margin:0;padding:0;font-family:sans-serif;font-size:1em}body{background-color:#f3f3f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeF4FwTEBAAAAwJD1D+weGQD4APc0a6VeAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/page-base.png?2012-01-04T05:30:00Z)!ie} div#content{margin-left:10em;padding:1em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeF4FwTEBAAAAgjD7FzESWfjYdgwEoAJ4lTsaxgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/border.png?2012-01-04T05:30:00Z)!ie;background-position:top left;background-repeat:repeat-y;background-color:white;color:black;direction:ltr} #mw-page-base{height:5em;background-color:white;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADpJREFUeF5VjUkOAEAIwoD//7lzGJd4MJHGSoBImkFETP67CdLldUd7KC6f8fv3+psd8znbtU5x354HaWQjOx76v7MAAAAASUVORK5CYII=);background-image:url(https://wiki.osdev.org/skins/vector/images/page-fade.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:repeat-x}#mw-head-base{margin-top:-5em;margin-left:10em;height:5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeF4FwTEBAAAAgjD7FzESWfjYdgwEoAJ4lTsaxgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/border.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:repeat-x}div#mw-head{position:absolute;top:0;right:0;width:100%}div#mw-head h5{margin:0;padding:0} div.emptyPortlet{display:none} #p-personal{position:absolute;top:0;right:0.75em}#p-personal h5{display:none}#p-personal ul{list-style:none;margin:0;padding-left:10em; } #p-personal li{line-height:1.125em;float:left} #p-personal li{margin-left:0.75em;margin-top:0.5em;font-size:0.75em;white-space:nowrap} #left-navigation{position:absolute;left:10em;top:2.5em}#right-navigation{float:right;margin-top:2.5em} div.vectorTabs h5,div.vectorMenu h5 span{display:none} div.vectorTabs{float:left;height:2.5em}div.vectorTabs{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:no-repeat;padding-left:1px} div.vectorTabs ul{float:left}div.vectorTabs ul{height:100%;list-style:none;margin:0;padding:0} div.vectorTabs ul li{float:left} div.vectorTabs ul li{line-height:1.125em;display:inline-block;height:100%;margin:0;padding:0;background-color:#f3f3f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAIAAADITs03AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeF7litsRACAMwrD77+Q0rtGoV98r+MEFchhgkr4NnZyb3bk/LM/yMCjiH4wots/++hYR3iXLJVWUBS1AtOi2fwAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-normal-fade.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:repeat-x;white-space:nowrap} div.vectorTabs ul > li{display:block}div.vectorTabs li.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkAQAAAABvV2fNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeF7dwQEBAAAAQCDTTfdD4WOJ5TIB3ib9EgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-current-fade.png?2012-01-04T05:30:00Z)!ie} div.vectorTabs li a{display:inline-block;height:1.9em;padding-left:0.5em;padding-right:0.5em;color:#0645ad;cursor:pointer;font-size:0.8em} div.vectorTabs li > a{display:block}div.vectorTabs li.icon a{background-position:bottom right;background-repeat:no-repeat} div.vectorTabs span a{display:inline-block;padding-top:1.25em} div.vectorTabs span > a{float:left;display:block}div.vectorTabs span{display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom right;background-repeat:no-repeat}div.vectorTabs li.selected a,div.vectorTabs li.selected a:visited{color:#333333;text-decoration:none}div.vectorTabs li.new a,div.vectorTabs li.new a:visited{color:#a55858} div.vectorMenu{direction:ltr;float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAQBAMAAACfEoDkAAAAAXNSR0IArs4c6QAAABtQTFRFAAAAeXl5kpKSmpqara2tsbGxv7+/3d3d4+Pj/0BzBAAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2wQZDQ02HnCAHgAAAEJJREFUGNNjYBhEgN1QUFDQHMzkcFJSUvKAihcLCgoXQJgtSkoqDQjl5lAmULkH3JhimGKgcrhioPJwOJMjY6C8CAC3YAg/E2WR5gAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/arrow-down-icon.png?2012-01-04T05:30:00Z)!ie;background-position:0px 60%;background-repeat:no-repeat;cursor:pointer}div.vectorMenuFocus{ background-image:url(images/arrow-down-focus-icon.png);background-position:100% 60%} body.rtl div.vectorMenu{direction:rtl} div#mw-head div.vectorMenu h5{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-repeat:no-repeat} div#mw-head div.vectorMenu h5{background-position:bottom left;margin-left:-1px} div#mw-head div.vectorMenu > h5{background-image:none}div#mw-head div.vectorMenu h4{display:inline-block;float:left;font-size:0.8em;padding-left:0.5em;padding-top:1.375em;font-weight:normal;border:none} div.vectorMenu h5 a{display:inline-block;width:24px;height:2.5em;text-decoration:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-repeat:no-repeat} div.vectorMenu h5 a{background-position:bottom right} div.vectorMenu h5 > a{display:block}div.vectorMenu div.menu{position:relative;display:none;clear:both;text-align:left} body.rtl div.vectorMenu div.menu{margin-left:24px} body.rtl div.vectorMenu > div.menu{margin-left:auto} body.rtl div.vectorMenu > div.menu,x:-moz-any-link{margin-left:23px} div.vectorMenu:hover div.menu,div.vectorMenu div.menuForceShow{display:block}div.vectorMenu ul{position:absolute;background-color:white;border:solid 1px silver;border-top-width:0;list-style:none;list-style-image:none;list-style-type:none;padding:0;margin:0;margin-left:-1px;text-align:left} div.vectorMenu ul,x:-moz-any-link{min-width:5em} div.vectorMenu ul,x:-moz-any-link,x:default{min-width:0}div.vectorMenu li{padding:0;margin:0;text-align:left;line-height:1em} div.vectorMenu li a{display:inline-block;padding:0.5em;white-space:nowrap;color:#0645ad;cursor:pointer;font-size:0.8em} div.vectorMenu li > a{display:block}div.vectorMenu li.selected a,div.vectorMenu li.selected a:visited{color:#333333;text-decoration:none} #p-search h5{display:none} #p-search{float:left}#p-search{margin-right:0.5em;margin-left:0.5em}#p-search form,#p-search input{margin:0;margin-top:0.4em}div#simpleSearch{display:block;width:14em;height:1.4em;margin-top:0.65em;position:relative;min-height:1px; border:solid 1px #AAAAAA;color:black;background-color:white;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAIAAABY/YLgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACZJREFUeF5diqERACAQgID95/3s+cFg4CDQzASkXl4jidvrCPzfA7puAx52W1pnAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/search-fade.png?2012-01-04T05:30:00Z)!ie;background-position:top left;background-repeat:repeat-x}div#simpleSearch label{ font-size:13px;top:0.25em;direction:ltr}div#simpleSearch input{color:black;direction:ltr}div#simpleSearch input:focus{outline:none}div#simpleSearch input.placeholder{color:#999999}div#simpleSearch input::-webkit-input-placeholder{color:#999999}div#simpleSearch input#searchInput{position:absolute;top:0;left:0;width:90%;margin:0;padding:0;padding-left:0.2em;padding-top:0.2em;padding-bottom:0.2em;outline:none;border:none; font-size:13px;background-color:transparent;direction:ltr}div#simpleSearch button#searchButton{position:absolute;width:10%;right:0;top:0;padding:0;padding-top:0.3em;padding-bottom:0.2em;padding-right:0.4em;margin:0;border:none;cursor:pointer;background-color:transparent;background-image:none} div#simpleSearch button#searchButton img{border:none;margin:0;margin-top:-3px;padding:0} div#simpleSearch button#searchButton > img{margin:0} div#mw-panel{position:absolute;top:160px;padding-top:1em;width:10em;left:0}div#mw-panel div.portal{padding-bottom:1.5em;direction:ltr}div#mw-panel div.portal h5{font-weight:normal;color:#444444;padding:0.25em;padding-top:0;padding-left:1.75em;cursor:default;border:none;font-size:0.75em}div#mw-panel div.portal div.body{margin:0;padding-top:0.5em;margin-left:1.25em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAAABCAAAAAAphRnkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeF61yMEJACAQxMCN/Xfr/yIsaAfOJxC2UTPWS6f5gABhUTedBz7fGPSonIP/AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/portal-break.png?2012-01-04T05:30:00Z)!ie;background-repeat:no-repeat;background-position:top left}div#mw-panel div.portal div.body ul{list-style:none;list-style-image:none;list-style-type:none;padding:0;margin:0}div#mw-panel div.portal div.body ul li{line-height:1.125em;padding:0;padding-bottom:0.5em;margin:0;overflow:hidden;font-size:0.75em}div#mw-panel div.portal div.body ul li a{color:#0645ad}div#mw-panel div.portal div.body ul li a:visited{color:#0b0080} div#footer{margin-left:10em;margin-top:0;padding:0.75em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeF4FwTEBAAAAgjD7FzESWfjYdgwEoAJ4lTsaxgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/border.png?2012-01-04T05:30:00Z)!ie;background-position:top left;background-repeat:repeat-x;direction:ltr}div#footer ul{list-style:none;list-style-image:none;list-style-type:none;margin:0;padding:0}div#footer ul li{margin:0;padding:0;padding-top:0.5em;padding-bottom:0.5em;color:#333333;font-size:0.7em}div#footer #footer-icons{float:right} body.ltr div#footer #footer-places{float:left}div#footer #footer-info li{line-height:1.4em}div#footer #footer-icons li{float:left;margin-left:0.5em;line-height:2em;text-align:right}div#footer #footer-places li{float:left;margin-right:1em;line-height:2em} #p-logo{position:absolute;top:-160px;left:0;width:10em;height:160px}#p-logo a{display:block;width:10em;height:160px;background-repeat:no-repeat;background-position:center center;text-decoration:none} #preftoc{ width:100%;float:left;clear:both;margin:0 !important;padding:0 !important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAhCAQAAACysAk0AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAABAAAAIQBSEXtPAAAAAmJLR0QA/vCI/CkAAAAmSURBVAjXY2BgYPj3n+k/AwL9g5Fwxl8GJgYGpr+ogmgITQuSgQA1QiAL/go8LAAAACV0RVh0Y3JlYXRlLWRhdGUAMjAwOS0wOC0wOVQxOTowNTo0MSswMDowMCYO2tEAAAAldEVYdG1vZGlmeS1kYXRlADIwMDktMDgtMDlUMTk6MDU6NDErMDA6MDB5v6zlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:no-repeat}#preftoc li{ float:left;margin:0;padding:0;padding-right:1px;height:2.25em;white-space:nowrap;list-style-type:none;list-style-image:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAhCAQAAACysAk0AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAABAAAAIQBSEXtPAAAAAmJLR0QA/vCI/CkAAAAmSURBVAjXY2BgYPj3n+k/AwL9g5Fwxl8GJgYGpr+ogmgITQuSgQA1QiAL/go8LAAAACV0RVh0Y3JlYXRlLWRhdGUAMjAwOS0wOC0wOVQxOTowNTo0MSswMDowMCYO2tEAAAAldEVYdG1vZGlmeS1kYXRlADIwMDktMDgtMDlUMTk6MDU6NDErMDA6MDB5v6zlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom right;background-repeat:no-repeat} #preftoc li:first-child{margin-left:1px}#preftoc a,#preftoc a:active{display:inline-block;position:relative;color:#0645ad;padding:0.5em;text-decoration:none;background-image:none;font-size:0.9em}#preftoc a:hover,#preftoc a:focus{text-decoration:underline}#preftoc li.selected a{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAhCAQAAACysAk0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeF5twskJAAAMAjD3H7mXfYogCQiQeun68Z2WPk0SQHDa/pxXAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-fade.png?2012-01-04T05:30:00Z)!ie;background-position:bottom;background-repeat:repeat-x;color:#333333;text-decoration:none}#preferences{float:left;width:100%;margin:0;margin-top:-2px;clear:both;border:solid 1px #cccccc;background-color:#f9f9f9;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeF4FwTEBAAAAwJD1j+waGQD8APvyfoZlAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-base.png?2012-01-04T05:30:00Z)!ie}#preferences fieldset{border:none;border-top:solid 1px #cccccc}#preferences fieldset.prefsection{border:none;padding:0;margin:1em}#preferences legend{color:#666666}#preferences fieldset.prefsection legend.mainLegend{display:none}#preferences td{padding-left:0.5em;padding-right:0.5em}#preferences td.htmlform-tip{font-size:x-small;padding:.2em 2em;color:#666666}#preferences div.mw-prefs-buttons{padding:1em}#preferences div.mw-prefs-buttons input{margin-right:0.25em} #userlogin,#userloginForm{border:solid 1px #cccccc;padding:1.2em;margin:.5em;float:left}#userlogin{min-width:20em;max-width:90%;width:40em} div#content{line-height:1.5em}#bodyContent{font-size:0.8em} a{text-decoration:none;color:#0645ad;background:none}a:visited{color:#0b0080}a:active{color:#faa700}a:hover,a:focus{text-decoration:underline}a.stub{color:#772233}a.new,#p-personal a.new{color:#ba0000}a.new:visited,#p-personal a.new:visited{color:#a55858} img{border:none;vertical-align:middle}hr{height:1px;color:#aaa;background-color:#aaa;border:0;margin:.2em 0 .2em 0} h1,h2,h3,h4,h5,h6{color:black;background:none;font-weight:normal;margin:0;overflow:hidden;padding-top:.5em;padding-bottom:.17em;border-bottom:1px solid #aaa;width:auto}h1{font-size:188%}h1 .editsection{font-size:53%}h2{font-size:150%}h2 .editsection{font-size:67%}h3,h4,h5,h6{border-bottom:none;font-weight:bold}h3{font-size:132%}h3 .editsection{font-size:76%;font-weight:normal}h4{font-size:116%}h4 .editsection{font-size:86%;font-weight:normal}h5{font-size:100%}h5 .editsection{font-weight:normal}h6{font-size:80%}h6 .editsection{font-size:125%;font-weight:normal}.editsection{float:right}p{margin:.4em 0 .5em 0;line-height:1.5em}p img{margin:0}q{font-family:Times,"Times New Roman",serif;font-style:italic} pre,code,tt,kbd,samp{ font-family:monospace,"Courier New"}code{background-color:#f9f9f9}pre{padding:1em;border:1px dashed #2f6fab;color:black;background-color:#f9f9f9;line-height:1.3em}ul{line-height:1.5em;list-style-type:square;margin:.3em 0 0 1.5em;padding:0;list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAMAAABW4lS6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFAFKM////QIUK9QAAAAJ0Uk5T/wDltzBKAAAAGklEQVR42mJgBAEGokgGBjBGBxBxsBqAAAMACHwALd5r8ygAAAAASUVORK5CYII=);list-style-image:url(https://wiki.osdev.org/skins/vector/images/bullet-icon.png?2012-01-04T05:30:00Z)!ie}ol{line-height:1.5em;margin:.3em 0 0 3.2em;padding:0;list-style-image:none}li{margin-bottom:.1em}dt{font-weight:bold;margin-bottom:.1em}dl{margin-top:.2em;margin-bottom:.5em}dd{line-height:1.5em;margin-left:2em;margin-bottom:.1em} table{font-size:100%} fieldset{border:1px solid #2f6fab;margin:1em 0 1em 0;padding:0 1em 1em;line-height:1.5em}fieldset.nested{margin:0 0 0.5em 0;padding:0 0.5em 0.5em}legend{padding:.5em;font-size:95%}form{border:none;margin:0}textarea{width:100%;padding:.1em}select{vertical-align:top} #toc,.toc,.mw-warning{border:1px solid #aaa;background-color:#f9f9f9;padding:5px;font-size:95%}#toc h2,.toc h2{display:inline;border:none;padding:0;font-size:100%;font-weight:bold}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{text-align:center}#toc ul,.toc ul{list-style-type:none;list-style-image:none;margin-left:0;padding:0;text-align:left}#toc ul ul,.toc ul ul{margin:0 0 0 2em}#toc .toctoggle,.toc .toctoggle{font-size:94%} div.floatright,table.floatright{margin:0 0 .5em .5em;border:0}div.floatright p{font-style:italic}div.floatleft,table.floatleft{margin:0 .5em .5em 0;border:0}div.floatleft p{font-style:italic} div.thumb{margin-bottom:.5em;width:auto;background-color:transparent}div.thumbinner{border:1px solid #ccc;padding:3px !important;background-color:#f9f9f9;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{border:1px solid #ccc}html .thumbcaption{border:none;text-align:left;line-height:1.4em;padding:3px !important;font-size:94%}div.magnify{float:right;border:none !important;background:none !important}div.magnify a,div.magnify img{display:block;border:none !important;background:none !important}div.tright{margin:.5em 0 1.3em 1.4em}div.tleft{margin:.5em 1.4em 1.3em 0}img.thumbborder{border:1px solid #dddddd} .mw-warning{margin-left:50px;margin-right:50px;text-align:center} .usermessage{background-color:#ffce7b;border:1px solid #ffa500;color:black;font-weight:bold;margin:2em 0 1em;padding:.5em 1em;vertical-align:middle} #siteNotice{position:relative;text-align:center;font-size:0.8em;margin:0}#localNotice{margin-bottom:0.9em} .catlinks{border:1px solid #aaa;background-color:#f9f9f9;padding:5px;margin-top:1em;clear:both} #siteSub{display:none}#jump-to-nav{display:none}#contentSub,#contentSub2{font-size:84%;line-height:1.2em;margin:0 0 1.4em 1em;color:#7d7d7d;width:auto}span.subpages{display:block} .center{width:100%;text-align:center}*.center *{margin-left:auto;margin-right:auto} .small{font-size:94%}table.small{font-size:100%} h1,h2{margin-bottom:.6em}h3,h4,h5{margin-bottom:.3em}#firstHeading{padding-top:0;margin-top:0;padding-top:0;margin-bottom:0.1em;line-height:1.2em;font-size:1.6em;padding-bottom:0}div#content a.external,div#content a.external[href ^="gopher://"]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/external-link-ltr-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="https://"],.link-https{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeF6tjzsKg0AQhi09mimsFJLCzpNYCGKbK3gAtfUIljaCoKCCZIs8MMV2v+yCg8siWlh8zOtjhjEAEFmeIopDQtTrTJNEZIxhWysiNfULJFJjDzGnba/aBt4+wAuBzD+tg6a8SVkXf4GET96xmDxNzP39IvE/PPDtXIyVpYinv14A5F0laJ8oYFgAAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/lock-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="mailto:"],.link-mailto{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF////////iIqF9vb26urpycfDvb275eXj2djV+/v4srKy6efio6GcqKejsa6q8fDtVM9qIQAAAAF0Uk5TAEDm2GYAAABOSURBVHheBcExDkAwGIDRL43NpJOt6a9hMdVilP8gklqsHMJmt4qeyeI03oNSNkCrAIU/7YTWbwp0zz4rTXZHxF/9YA15HTG4+4NFRNofUBMMOBBNZngAAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/mail-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="news://"]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeF6NkEEKgCAQRT2w1wiiUxgk0SKiTe6i9oKeQXDhKSZmYAJRKeHh4j//DIp+6OAPJH6cXJRSZqSUQClViBjUKER8zXAbUhev+6Q7hMA0G1msNtIo5zxhrX3xzlNG4ravYMwBMUZsKsBsXjQIABCTHlsfTXuj8wCN3T2QBjtcwQAAAABJRU5ErkJggg==) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/news-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="ftp://"],.link-ftp{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAExJREFUeF5VyEEKwCAMAMH83o/0LT6kFHqQYqkevG1jIITs3kaQgn+A7A29ujnw5NKrsaPCrTegBBrRMzYeXkbGzsdkZRwsPWMUmEd+CkSgVeVp2OkAAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/file-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="irc://"],div#content a.external[href ^="ircs://"],.link-irc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHRJREFUeF590E0KgCAQBWAvH0TXigI3ZccQ/8H91ExqKNrAW8j7kFG27SvMyzQM9s8whuBnENdQSllFKdWFWFC01pQQwhASMMaAtXYIMQScc/0dxSXyIaPq1ZzzF6JOsKBTHOC9hxgjoQLbf2tRgekWKka5AShBSepvauUSAAAAAElFTkSuQmCC) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/talk-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href $=".ogg"],div#content a.external[href $=".OGG"],div#content a.external[href $=".mid"],div#content a.external[href $=".MID"],div#content a.external[href $=".midi"],div#content a.external[href $=".MIDI"],div#content a.external[href $=".mp3"],div#content a.external[href $=".MP3"],div#content a.external[href $=".wav"],div#content a.external[href $=".WAV"],div#content a.external[href $=".wma"],div#content a.external[href $=".WMA"],.link-audio{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF////dX8qyNF7eYMzwsxrsr9G8PHrm6Jrt7uakJVmn6OB1duat8NQi5YzhI4ykZR07gQraQAAAAF0Uk5TAEDm2GYAAABJSURBVHheNcSxDUBQFIbR727glxvKl3dHsIHCGESrNIIR7KE1hQ1MoDSCiMhJDixSDWVEhuZbei/sf/Jqbdn28+jxYe4u7CaND+p5C05J6bE1AAAAAElFTkSuQmCC) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/audio-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href $=".ogm"],div#content a.external[href $=".OGM"],div#content a.external[href $=".avi"],div#content a.external[href $=".AVI"],div#content a.external[href $=".mpeg"],div#content a.external[href $=".MPEG"],div#content a.external[href $=".mpg"],div#content a.external[href $=".MPG"],.link-video{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAAAAACoWZBhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAP9bkSK1AAAAXElEQVR4Xi2NMQoFMQgFvbpgHUj5LvF6K7sFQXKFsOew2G/xuylmGPn62Wb76U+ayHsTbDnrQMNrHdkZRChyi730KvK1QUWVD47gzoCOMBkXPSZrIuumseW/iKU/eKdG9xXBa10AAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/video-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href $=".pdf"],div#content a.external[href $=".PDF"],div#content a.external[href *=".pdf#"],div#content a.external[href *=".PDF#"],div#content a.external[href *=".pdf?"],div#content a.external[href *=".PDF?"],.link-document{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeF5lykEKgDAMBdF/+17Es/QkiosiCBURXIzJooZohmweX6gwmkCeI+Oqc2C1FnvnF2ejlQYU0tLK2NjY6f/l8V12Ti7uhFFgDj19b58EwXuqkAAAAABJRU5ErkJggg==) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/document-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px} div#content a.extiw,div#content a.extiw:active{color:#36b; background:none;padding:0}div#content a.extiw:visited{color:#636}div#content a.extiw:active{color:#b63} div#content a.external{color:#36b}div#content a.external:visited{color:#636; }div#content a.external:active{color:#b63}div#content .printfooter{display:none} #pt-userpage,#pt-anonuserpage,#pt-login{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAANCAYAAACQN/8FAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAHOSURBVCjPY2BAAjtLxLmPN4pFn2gSTdrfICDAgA2c65C0uznf6erT9dH/H6/0+39zut6d051SfiiK9jcwsFyfa3v21Z7S/++Odf1/uSP7/6OF1v+vT9O7ub9BlAdJoajBw+W+P98crPv/8eLC/6/2lPx/vNj+/705xv+PNwsHwRUerOFTvTXX9sfzjTFg056tC/v/YJbu//tzjP4eaxR3hiv8z8DAuKPF4N7DuUb/H84z/X9/hsb/BzM1/x/qMnxwJo2BFa5QP3rKpMjSiT/XtTr+vzzV+P+Vacb/N7fb/48v6fikHTYhFaxII3iSr0vRmm/muZv++9du/L969Yr/Wzeu+O9Tvvq/Rcay//aZC15reHXoMtimz91ulrnyv1n22v/muRv/960693/Fniv/TdKX/zdKXvDfPHX+f9PYySsYbFJnXDWIm/nfOG0pWDKkdsP/oonbgYoW/jdImPNfL2bKf+v4SRcZTCK6D5gkTAcLGibO/W+aMu+/b8mS//pxM8CKdAPr/xtFdB9lkDQNszOP7r1tnTLzr03qzP/WQGyVAqRTpv+3Tprxzzi88560VZo3xNui2jxi+oFB4oYRNaL6Ic0gDGEHh4HkQEoAjALoHv5slukAAAAASUVORK5CYII=) left top no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/user-icon.png?2012-01-04T05:30:00Z) left top no-repeat!ie;padding-left:15px !important;text-transform:none}.redirectText{font-size:140%}.redirectMsg img{vertical-align:text-bottom}.toccolours{border:1px solid #aaa;background-color:#f9f9f9;padding:5px;font-size:95%}#bodyContent{position:relative;width:100%}#mw-js-message{font-size:0.8em}div#bodyContent{line-height:1.5em} #ca-unwatch.icon a,#ca-watch.icon a{margin:0;padding:0;outline:none;display:block;width:26px; padding-top:3.1em;margin-top:0; margin-top:-0.8em !ie;height:0;overflow:hidden;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAAAQCAMAAAClQEgHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFoNb/+vr52tXLdcP/ltL/ysKt39rPrdz/xtDT8vLwwrJxodr/vqxjzdnr8v7+ntb/uuX/i87/ytTV9fb3zuz+8eOU+fr8zvH/wuX/ecT/hbrnj7XBltb/m9T/h8z/jtH+c8H/vq53lL/Ovq109vb1/v7rx8CuhcT0xLJlot3/2PL/kc//59N3s9//v7KGbL7/mNf//v395NSLmdr//Pz7ccT/wbOIZ7v/ybZk6OzzpNf/icPu0cm2g8n/p9n/9fTzva1ouuL/samQwu3/scfhfrbj8e/q4+bnyLJQ6u3tqtr/irbG7PH5fcz/0d7ww+r/zcuL6Obh9f7/hsv/s8+r+e2rw7J2rb3C+fj2icTy1O7/jrvO1s++vMyUz8zGocna6+rn8vDtlLK8aL3/d8X///vV7fz/vraklMr039nMtNjqp97/o9362ejN4vb/zcN7sN3/vfP/bsD/1dLNhK2+yLeIkrri28drz7tp5N7TiK26grXi3trTccP/vub/rd//+v//qM7fyeHMztmq5PT8u6t0/f3+/P39ksDwk8HQtMTH3fn/kdH/ltLpxb5o0dzsnND6ssXbzun5rdru2+Dh5+vsz9nadrrx1eLz+fLM7/z/w71z//zPgMz/8eWrwtKT9vn8jbPCf7vs1N3pua1terXo1O3tqtfWwOX51cV5dMH/vtmy28p8fLXR4efx9emq///8z9TbzrxowLOP5ea57///nq2xy7xo///5frrnwrSP9PX2+vv7ztzwvd3P2vH5r9z/8/X4nMrlsN//qLq9wa5zh7fikdf/tuL9zbpo3tnQ1u/kx8rL+/z8kq+6+vLGkqKq6f//oMrfxuf8xbVwqLvSh7vq8PP3ltD6d8P/v7Ngx7dqwbFt/PGyk8jv9vf3zLhofqy/wdPqyeTc0vH9//3kxun5i7O/x87X09mr1sRzmK3C3dnQz9XXmLvg///6uc7ozLpq7O7u//zc7evoyfT/+/z+mtf/9e25zcJt7ezowMXGu8nM+Pn5////8/n77InDmQAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAJbSURBVHjaYvgPAb+3/ccK4tKxi7+4SkA9A5SWnuyJVSGXDidWcSnN6/jVQw0+s//fBWzqin9scMImvtF/62us6rfwOaEYXPLvXyM2pzn8+7dGBYt4dZ5WhjA29d3i+Sowg/d4TjuX9+9fQwnH1L8oqhIrN5//909VOdPNBEXcZ8Y7CQlHEam9Pt/Q1O/KrXNcdhSsnuFIZ3zWpLR/QMAnkhWvJA1TxVqx0mheKkj883qjVx9LYeIukRkT2P3rCtgPCGTfiLTuQKjPD3iZK1DAzv64OWD27VIG9+h/SOASB0xhwklk8XImmLilOp+IhK6XFQODrCyD+D1euPoHF50FDoPFZWQKfzIx/N/9PAiuP3oKwmOMYU9hwu8tAhHiYteidO34WbRtFZg1d65DVn+6HiJem3MrEBTGZ6taIPqDvN1RwkxxJkRcVeMLivixEwwsgpLmRfKulqjqm/jB4r08vyCp4tMhiAFPOFCj2L4cIh7KhCp+UJ1bjjlZ/6Y8L5r6PmOQuGkIEzS5vV0BMWBWOKrCGlGIeCorqvhieTlm5pRVkgYuaOpj5zLXmiqkLGeFGhwOTBRRl4EmJKEqVJsDdC3Q8B16qOITs4MNegS/B3OXoanf53s8JNbYN0cPanDSPy3vP0JVz/4tRFVo9u+uRcwbZdF/d1DFy8S5Fz3qr5ZxdkVT/3W1Rsyp1vmFS6AGP1TqAolzSK+9j6KQZ5MNiGK64sGIIr7U+gOI4pWaLoaqfjtEPRdIPdDgdiFY5hRCyaWGbDDz2CKQxdv8YOb5LcCtnuE/jQBAgAEAQlFsBT+lqfQAAAAASUVORK5CYII=);background-image:url(https://wiki.osdev.org/skins/vector/images/watch-icons.png?2012-01-04T05:30:00Z)!ie}#ca-unwatch.icon a{background-position:-43px 60%}#ca-watch.icon a{background-position:5px 60%}#ca-unwatch.icon a:hover,#ca-unwatch.icon a:focus{background-position:-67px 60%}#ca-watch.icon a:hover,#ca-watch.icon a:focus{background-position:-19px 60%}#ca-unwatch.icon a.loading,#ca-watch.icon a.loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAMQfANra2uLi4vDw8PLy8ujo6Ozs7NbW1vj4+Pb29s7Oztzc3NTU1O7u7uDg4NHR0erq6v39/d7e3vz8/Pv7+/7+/tPT09jY2Pr6+tnZ2efn5/X19eXl5ebm5vT09P///////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAwAfACwAAAAAEAAQAAAFa+Anjl9QkShacVqabp2XuKjjecHhStrjHDdIgtORiCyWSEZwud0mg0zEUhkYnNhsY/O5OCRZrEEwgvzCkgqZhGiEB1wUgRGeAFKApqcjcJ5QCx4aFQEECX1/JAlJJBsVFRMkEBkXLhyVNJkhACH5BAkDAB8ALAAAAAAQABAAAAV74CeO4hUQZEoGhqGqWzQtEnlYRCYMGSB5BkTKQCgUOBGPkjBIdQDKqBLhaJI4D6l0gylMRg6IVkmhNBIjxWBM8XAwHNFAIdYWDA0SRhNtKy0CJAUVEAcRAQJkFikZDg4EBB0RDR4dGCkIEhAjFBsBDwovKo0BoioFQiMhACH5BAkDAB8ALAAAAAAQABAAAAWB4CeO5HeU33OVl5IIpYEFh/QR1rYNZSMUAYVBwfBYbKRJwwPxFDxQjAbloECvHgMEBUBgPZTApjSxeL+eQGDUsQwkaGhBcUBYinGI5GBIEBwEGhxwVwwLFgoRHQwECgIADRFXBgUfEygfEBEDTmuYIxAJFAYwnyMFABVbpiMYGSghACH5BAkDAB8ALAAAAAAQABAAAAV+4CdKjWieKOJs6De1U5Zhg4YcmaG0kXcElQDtEWkZPMgMBGlofQDIqK9pmhAADClSEDBtAICJROvR7EQGx5LsgQAOogKm0LhQ2IDRQRJRFKIHAh4XAXknEw5REQsRBgAOEigRFBQEERofAgJiKBoZAgsXTicUDgYDoygNXU4hACH5BAUDAB8ALAAAAAAQABAAAAV54Cd+EFBNY6p+hgCssOERGwSP3eZBgUIEG0xhdGFpPMjChjNoRD6XIGBDQVo9FIcogZnsrlbLQNRQfMEewVN0ERAaaE9AoDoECGj76lBBTxQwDlYBEQweGwwqEDIHCwIbBgAAFioUBgUOdCIaBRwrBhUHNykQY6MfIQA7);background-image:url(https://wiki.osdev.org/skins/vector/images/watch-icon-loading.gif?2012-01-04T05:30:00Z)!ie;background-position:5px 60%}#ca-unwatch.icon a span,#ca-watch.icon a span{display:none}div.vectorTabs ul{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-position:right bottom;background-repeat:no-repeat} .tipsy{font-size:0.8em}} + +/* cache key: wikidb:resourceloader:filter:minify-css:4:9813f17bb9dcd36e8b2c4e2efdf185fb */ diff --git a/photos/'8042' PS_2 Controller - OSDev Wiki_files/load_002.css b/photos/'8042' PS_2 Controller - OSDev Wiki_files/load_002.css new file mode 100644 index 0000000..e2f0d1f --- /dev/null +++ b/photos/'8042' PS_2 Controller - OSDev Wiki_files/load_002.css @@ -0,0 +1,3 @@ +div.mw-geshi div,div.mw-geshi div pre,span.mw-geshi,pre.source-css,pre.source-javascript{font-family:monospace,Courier !important} @media print{ } + +/* cache key: wikidb:resourceloader:filter:minify-css:4:990d0644862009377a1a48a78b53b366 */ diff --git a/photos/'8042' PS_2 Controller - OSDev Wiki_files/poweredby_mediawiki_88x31.png b/photos/'8042' PS_2 Controller - OSDev Wiki_files/poweredby_mediawiki_88x31.png new file mode 100644 index 0000000000000000000000000000000000000000..835e860b77d7f6d9746856d18a003c0f2cd47ece GIT binary patch literal 3605 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 + + + Linux/m68k for Macintosh - Mac Plus hardware + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            MacPenguin
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                             ::development::Mac Plus technical information 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + KY Overview of the Hardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  OVERVIEW OF THE HARDWARE                                MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh and Macintosh Plus computers contain a Motorola MC68000
                                                                                                                                                                                                                                                                                                                                                                                                                                            +microprocessor clocked at 7.8336 megahertz, random access memory (RAM),
                                                                                                                                                                                                                                                                                                                                                                                                                                            +read-only memory (ROM), and several chips that enable them to communicate
                                                                                                                                                                                                                                                                                                                                                                                                                                            +with external devices. There are five I/O devices:  the video display; the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sound generator; a Synertek SY6522 Versatile Interface Adapter (VIA) for the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +mouse and keyboard; a Zilog Z8530 Serial Communications Controller (SCC) for
                                                                                                                                                                                                                                                                                                                                                                                                                                            +serial communication; and an Apple custom chip, called the IWM ("Integrated
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Woz Machine") for disk control. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +In addition to the five I/O devices found in the Macintosh 128K, 512K, and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +512K enhanced (the video display, sound generator, VIA, SCC and IWM), the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh Plus contains a NCR 5380 Small Computer Standard Interface (SCSI)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +chip for high-speed parallel communication with devices such as hard disks. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Features of the Macintosh 512K enhanced (not found in the Macintosh 128K and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +512K)  are: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  800K internal disk drive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  128K ROM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Features of the Macintosh Plus are:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  800K internal disk drive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  128K ROM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  SCSI high-speed peripheral port
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  1Mb RAM, expandable to 2Mb, 2.5Mb, or 4Mb.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  2 Mini-8 connectors for serial ports, replacing the 2 DB-9 connectors
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     found on the Macintosh 128K, 512K, and 512K enhanced.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  keyboard with built-in cursor keys and numeric keypad
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh uses memory-mapped I/O, which means that each device in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +system is accessed by reading or writing to specific locations in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +address space of the computer. Each device contains logic that recognizes
                                                                                                                                                                                                                                                                                                                                                                                                                                            +when it's being accessed and responds in the appropriate manner. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The MC68000 can directly access 16 megabytes (Mb) of address space. In the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh, this is divided into four equal sections. The first four Mb are
                                                                                                                                                                                                                                                                                                                                                                                                                                            +for RAM, the second four Mb are for ROM, the third are for the SCC, and the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +last four are for the IWM and the VIA. Since each of the devices within the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +blocks has far fewer than four Mb of individually addressable locations or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +registers, the addresses within each block "wrap around" and are repeated
                                                                                                                                                                                                                                                                                                                                                                                                                                            +several times within the block. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +In the Macintosh Plus, the 16 Mb of addressable space is also divided into
                                                                                                                                                                                                                                                                                                                                                                                                                                            +four equal sections. The first four megabytes are for RAM, the second four
                                                                                                                                                                                                                                                                                                                                                                                                                                            +megabytes are for ROM and SCSI, the third are for the SCC, and the last four
                                                                                                                                                                                                                                                                                                                                                                                                                                            +are for the IWM and the VIA.  Since the devices within each block may have
                                                                                                                                                                                                                                                                                                                                                                                                                                            +far fewer than four megabytes of individually addressable locations or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +registers, the addressing for a device may "wrap around" (a particular
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register appears at several different addresses) within its block. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +RAM is the "working memory" of the system. Its base address is address 0.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The first 256 bytes of RAM (addresses 0 through $FF) are used by the MC68000
                                                                                                                                                                                                                                                                                                                                                                                                                                            +as exception vectors; these are the addresses of the routines that gain
                                                                                                                                                                                                                                                                                                                                                                                                                                            +control whenever an exception such as an interrupt or a trap occurs. (The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +summary at the end of this chapter includes a list of all the exception
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vectors.) RAM also contains the system and application heaps, the stack, and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +other information used by applications. In addition, the following hardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +devices share the use of RAM with the MC68000: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  the video display, which reads the information for the display from
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     one of two screen buffers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  the sound generator, which reads its information from one of two
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     sound buffers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  the disk speed controller, which shares its data space with the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     sound buffers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The MC68000 accesses to RAM are interleaved (alternated) with the video
                                                                                                                                                                                                                                                                                                                                                                                                                                            +display's accesses during the active portion of a screen scan line (video
                                                                                                                                                                                                                                                                                                                                                                                                                                            +scanning is described in the next section). The sound generator and disk
                                                                                                                                                                                                                                                                                                                                                                                                                                            +speed controller are given the first access after each scan line. At all
                                                                                                                                                                                                                                                                                                                                                                                                                                            +other times, the MC68000 has uninterrupted access to RAM, increasing the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +average RAM access rate to about 6 megahertz (MHz). 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus RAM is provided in four packages known as Single In-line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Memory Modules (SIMMs). Each SIMM contains eight surface-mounted Dynamic RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(DRAM) chips on a small printed circuit board with electrical "finger"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +contacts along one edge. Various RAM configurations are possible depending
                                                                                                                                                                                                                                                                                                                                                                                                                                            +on whether two or four SIMMs are used and on the density of the DRAM chips
                                                                                                                                                                                                                                                                                                                                                                                                                                            +that are plugged into the SIMMs: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  If the SIMMs contain 256K-bit DRAM chips, two SIMMs will provide 512K
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     bytes of RAM, or four SIMMs will provide 1Mb of RAM (this is the standard
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     configuration).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  If the SIMMs contain 1M-bit DRAM chips, two SIMMs will provide 2Mb of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     RAM, or four SIMMs will provide 4Mb of RAM.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  If two of the SIMMs contain 1M-bit DRAM chips, and two of the SIMMs
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     contain 256K-bit DRAM chips, then these four SIMMs will provide 2.5Mb
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     of RAM. For this configuration, the 1M-bit SIMMs must be placed in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     sockets closest to the 68000 CPU.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Other configurations, such as a single SIMM or a pair of SIMMs
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          containing DRAMs of different density, are not allowed. If only
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          two SIMMs are installed, they must be placed in the sockets closest
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          to the MC68000.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The SIMMs can be changed by simply releasing one and snapping in another.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +However, there are also two resistors on the Macintosh Plus logic board (in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the area labelled "RAM SIZE") which tell the electronics how much RAM is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +installed. If two SIMMs are plugged in, resistor R9 (labeled "ONE ROW") must
                                                                                                                                                                                                                                                                                                                                                                                                                                            +be installed; if four SIMMs are plugged in, this resistor must be removed.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Resistor R8 (labelled "256K BIT") must be installed if all of the SIMMs
                                                                                                                                                                                                                                                                                                                                                                                                                                            +contain 256K-bit DRAM chips. If either two or four of the SIMMs contain
                                                                                                                                                                                                                                                                                                                                                                                                                                            +1M-bit chips, resistor R8 must be removed. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Each time you turn on the Macintosh Plus, system software does a memory test
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and determines how much RAM is present in the machine. This information is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +stored in the global variable MemTop, which contains the address (plus one)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of the last byte in RAM. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + ROM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ROM is the system's permanent read-only memory. Its base address, $400000,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is available as the constant romStart and is also stored in the global
                                                                                                                                                                                                                                                                                                                                                                                                                                            +variable ROMBase. ROM contains the routines for the Toolbox and Operating
                                                                                                                                                                                                                                                                                                                                                                                                                                            +System, and the various system traps. Since the ROM is used exclusively by
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the MC68000, it's always accessed at the full processor rate of 7.83 MHz. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The address space reserved for the device I/O contains blocks devoted to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +each of the devices within the computer. This region begins at address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$800000 and continues to the highest address at $FFFFFF. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  Since the VIA is involved in some way in almost every operation of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       Macintosh, the following sections frequently refer to the VIA and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       VIA-related constants. The VIA itself is described later, and all the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       constants are listed in the summary at the end of this chapter.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus contains two 512K-bit (64K x 8) ROM chips, providing 128K
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bytes of ROM. This is the largest size of ROM that can be installed in a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh 128K, 512K, or 512K enhanced. The Macintosh Plus ROM sockets,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +however, can accept ROM chips of up to 1M-bit (128K x 8) in size. A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +configuration of two 1M-bit ROM chips would provide 256K bytes of ROM. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The Video Interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE VIDEO INTERFACE                                     MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The video display is created by a moving electron beam that scans across the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +screen, turning on and off as it scans in order to create black and white
                                                                                                                                                                                                                                                                                                                                                                                                                                            +pixels. Each pixel is a square, approximately 1/74 inch on a side. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To create a screen image, the electron beam starts at the top left corner of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the screen (see Figure 1). The beam scans horizontally across the screen
                                                                                                                                                                                                                                                                                                                                                                                                                                            +from left to right, creating the top line of graphics. When it reaches the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +last pixel on the right end of the top line it turns off, and continues past
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the last pixel to the physical right edge of the screen. Then it flicks
                                                                                                                                                                                                                                                                                                                                                                                                                                            +invisibly back to the left edge and moves down one scan line. After tracing
                                                                                                                                                                                                                                                                                                                                                                                                                                            +across the black border, it begins displaying the data in the second scan
                                                                                                                                                                                                                                                                                                                                                                                                                                            +line. The time between the display of the rightmost pixel on one line and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the leftmost pixel on the next is called the horizontal blanking interval. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +When the electron beam reaches the last pixel of the last (342nd) line on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the screen, it traces out to the right edge and then flicks up to the top
                                                                                                                                                                                                                                                                                                                                                                                                                                            +left corner, where it traces the left border and then begins once again to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +display the top line. The time between the last pixel on the bottom line and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the first one on the top line is called the vertical blanking interval. At
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the beginning of the vertical blanking interval, the VIA generates a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vertical blanking interrupt. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The pixel clock rate (the frequency at which pixels are displayed) is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +15.6672 MHz, or about .064 microseconds (usec) per pixel. For each scan
                                                                                                                                                                                                                                                                                                                                                                                                                                            +line, 512 pixels are drawn on the screen, requiring 32.68 usec. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +horizontal blanking interval takes the time of an additional 192 pixels, or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +12.25 usec. Thus, each full scan line takes 44.93 usec, which means the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +horizontal scan rate is 22.25 kilohertz. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 1.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 1-Video Scanning Pattern
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +A full screen display consists of 342 horizontal scan lines, occupying
                                                                                                                                                                                                                                                                                                                                                                                                                                            +15367.65 usec, or about 15.37 milliseconds (msec). The vertical blanking
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interval takes the time of an additional 28 scan lines-1258.17 usec, or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +about 1.26 msec. This means the full screen is redisplayed once every
                                                                                                                                                                                                                                                                                                                                                                                                                                            +16625.8 usec. That's about 16.6 msec per frame, which means the vertical
                                                                                                                                                                                                                                                                                                                                                                                                                                            +scan rate (the full screen display frequency) is 60.15 hertz. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The video generator uses 21,888 bytes of RAM to compose a bit-mapped video
                                                                                                                                                                                                                                                                                                                                                                                                                                            +image 512 pixels wide by 342 pixels tall. Each bit in this range controls a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +single pixel in the image:  A 0 bit is white, and a 1 bit is black. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +There are two screen buffers (areas of memory from which the video circuitry
                                                                                                                                                                                                                                                                                                                                                                                                                                            +can read information to create a screen display):  the main buffer and the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +alternate buffer.  The starting addresses of the screen buffers depend on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +how much memory you have in your Macintosh. In a Macintosh 128K, the main
                                                                                                                                                                                                                                                                                                                                                                                                                                            +screen buffer starts at $1A700 and the alternate buffer starts at $12700;
                                                                                                                                                                                                                                                                                                                                                                                                                                            +for a 512K Macintosh, add $60000 to these numbers. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  To be sure you don't use the wrong area of memory and to maintain
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          compatibility with future Macintosh systems, you should get the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          video base address and bit map dimensions from screenBits (see
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          the QuickDraw chapter).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Each scan line of the screen displays the contents of 32 consecutive words
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of memory, each word controlling 16 horizontally adjacent pixels. In each
                                                                                                                                                                                                                                                                                                                                                                                                                                            +word, the high-order bit (bit 15) controls the leftmost pixel and the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +low-order bit (bit 0) controls the rightmost pixel. The first word in each
                                                                                                                                                                                                                                                                                                                                                                                                                                            +scan line follows the last word on the line above it. The starting address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of the screen is thus in the top left corner, and the addresses progress
                                                                                                                                                                                                                                                                                                                                                                                                                                            +from there to the right and down, to the last byte in the extreme bottom
                                                                                                                                                                                                                                                                                                                                                                                                                                            +right corner. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Normally, the video display doesn't flicker when you read from or write to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +it, because the video memory accesses are interleaved with the processor
                                                                                                                                                                                                                                                                                                                                                                                                                                            +accesses. But if you're creating an animated image by repeatedly drawing the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +graphics in quick succession, it may appear to flicker if the electron beam
                                                                                                                                                                                                                                                                                                                                                                                                                                            +displays it when your program hasn't finished updating it, showing some of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the new image and some of the old in the same frame. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +One way to prevent flickering when you're updating the screen continuously
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is to use the vertical and horizontal blanking signals to synchronize your
                                                                                                                                                                                                                                                                                                                                                                                                                                            +updates to the scanning of video memory. Small changes to your screen can be
                                                                                                                                                                                                                                                                                                                                                                                                                                            +completed entirely during the interval between frames (the first 1.26 msec
                                                                                                                                                                                                                                                                                                                                                                                                                                            +following a vertical blanking interrupt), when nothing is being displayed on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the screen. When making larger changes, the trick is to keep your changes
                                                                                                                                                                                                                                                                                                                                                                                                                                            +happening always ahead of the spot being displayed by the electron beam, as
                                                                                                                                                                                                                                                                                                                                                                                                                                            +it scans byte by byte through the video memory. Changes you make in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +memory already passed over by the scan spot won't appear until the next
                                                                                                                                                                                                                                                                                                                                                                                                                                            +frame. If you start changing your image when the vertical blanking interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +occurs, you have 1.26 msec of unrestricted access to the image. After that,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +you can change progressively less and less of your image as it's scanned
                                                                                                                                                                                                                                                                                                                                                                                                                                            +onto the screen, starting from the top (the lowest video memory address).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +From vertical blanking interrupt, you have only 1.26 msec in which to change
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the first (lowest address) screen location, but you have almost 16.6 msec to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +change the last (highest address) screen location. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Another way to create smooth, flicker-free graphics, especially useful with
                                                                                                                                                                                                                                                                                                                                                                                                                                            +changes that may take more 16.6 msec, is to use the two screen buffers as
                                                                                                                                                                                                                                                                                                                                                                                                                                            +alternate displays.  If you draw into the one that's currently not being
                                                                                                                                                                                                                                                                                                                                                                                                                                            +displayed, and then switch the buffers during the next vertical blanking,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +your graphics will change all at once, producing a clean animation. (See the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Vertical Retrace Manager chapter to find out how to specify tasks to be
                                                                                                                                                                                                                                                                                                                                                                                                                                            +performed during vertical blanking.) 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +If you want to use the alternate screen buffer, you'll have to specify this
                                                                                                                                                                                                                                                                                                                                                                                                                                            +to the Segment Loader (see the Segment Loader chapter for details). To
                                                                                                                                                                                                                                                                                                                                                                                                                                            +switch to the alternate screen buffer, clear the following bit of VIA data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register A (vBase+vBufA): 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vPage2    .EQU    6    ;0 = alternate screen buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +For example:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  BCLR    #vPage2,vBase+vBufA
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To switch back to the main buffer, set the same bit.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Whenever you change a bit in a VIA data register, be sure to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          leave the other bits in the register unchanged.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  The alternate screen buffer may not be supported in future
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          versions of the Macintosh.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The starting addresses of the Macintosh Plus screen buffers depend on the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +amount of memory present in the machine. The following table shows the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +starting address of the main and the alternate screen buffer for various
                                                                                                                                                                                                                                                                                                                                                                                                                                            +memory configurations of the Macintosh Plus: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  System                   Main Screen    Alternate
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 1Mb      $FA700         $F2700
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 2Mb      $1FA700        $1F2700
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 2.5Mb    $27A700        $272700
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 4Mb      $3FA700        $3F2700
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  To ensure that software will run on Macintoshes of different memory
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          size, as well as on future Macintoshes, use the address stored in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          the global variable ScrnBase. Also, the alternate screen buffer may
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          not be available in future versions of the Macintosh and may not be
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          found in some software configurations of current Macintoshes.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The Sound Generator
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE SOUND GENERATOR                                     MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh sound circuitry uses a series of values taken from an area of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +RAM to create a changing waveform in the output signal. This signal drives a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +small speaker inside the Macintosh and is connected to the external sound
                                                                                                                                                                                                                                                                                                                                                                                                                                            +jack on the back of the computer. If a plug is inserted into the external
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sound jack, the internal speaker is disabled. The external sound line can
                                                                                                                                                                                                                                                                                                                                                                                                                                            +drive a load of 600 or more ohms, such as the input of almost any audio
                                                                                                                                                                                                                                                                                                                                                                                                                                            +amplifier, but not a directly connected external speaker. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The sound generator may be turned on or off by writing 1 (off) or 0 (on) to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the following bit of VIA data register B (vBase+vBufB): 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vSndEnb    .EQU    7    ;0 = sound enabled, 1 = disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +For example:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  BSET    #vSndEnb,vBase+vBufB    ;turn off sound
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +By storing a range of values in the sound buffer, you can create the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +corresponding waveform in the sound channel. The sound generator uses a form
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of pulse-width encoding to create sounds. The sound circuitry reads one word
                                                                                                                                                                                                                                                                                                                                                                                                                                            +in the sound buffer during each horizontal blanking interval (including the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +"virtual" intervals during vertical blanking) and uses the high-order byte
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of the word to generate a pulse of electricity whose duration (width) is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +proportional to the value in the byte. Another circuit converts this pulse
                                                                                                                                                                                                                                                                                                                                                                                                                                            +into a voltage that's attenuated (reduced) by a three-bit value from the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +VIA. This reduction corresponds to the current setting of the volume level.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To set the volume directly, store a three-bit number in the low-order bits
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of VIA data register A (vBase+vBufA). You can use the following constant to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +isolate the bits involved: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vSound    .EQU    7    ;sound volume bits
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Here's an example of how to set the sound level:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  MOVE.B    vBase+vBufA,D0    ;get current value of register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  ANDI.B    #255-vSound,D0    ;clear the sound bits
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  ORI.B     #3,D0             ;set medium sound level
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  MOVE.B    D0,vBase+vBufA    ;put the data back
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +After attenuation, the sound signal is passed to the audio output line.  The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sound circuitry scans the sound buffer at a fixed rate of 370 words per
                                                                                                                                                                                                                                                                                                                                                                                                                                            +video frame, repeating the full cycle 60.15 times per second. To create
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sounds with frequencies other than multiples of the basic scan rate, you
                                                                                                                                                                                                                                                                                                                                                                                                                                            +must store phase-shifted patterns into the sound buffer between each scan.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +You can use the vertical and horizontal blanking signals (available in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +VIA) to synchronize your sound buffer updates to the buffer scan. You may
                                                                                                                                                                                                                                                                                                                                                                                                                                            +find that it's much easier to use the routines in the Sound Driver to do
                                                                                                                                                                                                                                                                                                                                                                                                                                            +these functions. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  The low-order byte of each word in the sound buffer is used to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          control the speed of the motor in the disk drive. Don't store
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          any information there, or you'll interfere with the disk I/O.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +There are two sound buffers, just as there are two screen buffers. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +address of the main sound buffer is stored in the global variable SoundBase
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and is also available as the constant soundLow. The main sound buffer is at
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$1FD00 in a 128K Macintosh, and the alternate buffer is at $1A100; for a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +512K Macintosh, add $60000 to these values.  Each sound buffer contains 370
                                                                                                                                                                                                                                                                                                                                                                                                                                            +words of data. As when you want to use the alternate screen buffer, you'll
                                                                                                                                                                                                                                                                                                                                                                                                                                            +have to specify to the Segment Loader that you want the alternate buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(see the Segment Loader chapter for details). To select the alternate sound
                                                                                                                                                                                                                                                                                                                                                                                                                                            +buffer for output, clear the following bit of VIA data register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(vBase+vBufA): 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vSndPg2    .EQU    3    ;0 = alternate sound buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To return to the main buffer, set the same bit.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Be sure to switch back to the main sound buffer before doing a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          disk access, or the disk won't work properly.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  The alternate sound buffer may not be supported in future
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          versions of the Macintosh.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +There's another way to generate a simple, square-wave tone of any frequency,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +using almost no processor intervention. To do this, first load a constant
                                                                                                                                                                                                                                                                                                                                                                                                                                            +value into all 370 sound buffer locations (use $00's for minumum volume,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$FF's for maximum volume).  Next, load a value into the VIA's timer 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +latches, and set the high-order two bits of the VIA's auxiliary control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register (vBase+vACR) for "square wave output" from timer 1. The timer will
                                                                                                                                                                                                                                                                                                                                                                                                                                            +then count down from the latched value at 1.2766 usec/count, over and over,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +inverting the vSndEnb bit of VIA register B (vBase+vBufB) after each count
                                                                                                                                                                                                                                                                                                                                                                                                                                            +down. This takes the constant voltage being generated from the sound buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and turns it on and off, creating a square-wave sound whose period is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2 * 1.2766 usec * timer 1's latched value
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  You may want to disable timer 1 interrupts during this process (bit 6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       in the VIA's interrupt enable register, which is at vBase+vIER).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To stop the square-wave sound, reset the high-order two bits of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +auxiliary control register. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  See the SY6522 technical specifications for details of the VIA
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       registers. See also "Sound Driver Hardware" in the Sound Driver
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       chapter.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 2 shows a block diagram for the sound port.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The starting addresses of the Macintosh Plus sound buffers depend on the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +amount of memory present in the machine. The following table shows the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +starting address of the main and the alternate sound buffer for various
                                                                                                                                                                                                                                                                                                                                                                                                                                            +memory configurations of the Macintosh Plus: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  System                   Main Sound    Alternate
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 1Mb      $FFD00        $FA100
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 2Mb      $1FFD00       $1FA100
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 2.5Mb    $27FD00       $27A100
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Macintosh Plus, 4Mb      $3FFD00       $3FA100
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  To ensure that software will run on Macintoshes of different memory
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          size, as well as future Macintoshes, use the address stored in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          global variable SoundBase. Also, the alternate sound buffer may not
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          be available in future versions of the Macintosh and may not be found
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          in some software configurations of current Macintoshes.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The SCC
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE SCC                                                 MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The two serial ports are controlled by a Zilog Z8530 Serial Communications
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Controller (SCC). The port known as SCC port A is the one with the modem
                                                                                                                                                                                                                                                                                                                                                                                                                                            +icon on the back of the Macintosh. SCC port B is the one with the printer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +icon. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh serial ports conform to the EIA standard RS422, which differs from
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the more common RS232C standard. While RS232C modulates a signal with
                                                                                                                                                                                                                                                                                                                                                                                                                                            +respect to a common ground ("single-ended" transmission), RS422 modulates
                                                                                                                                                                                                                                                                                                                                                                                                                                            +two signals against each other ("differential" transmission). The RS232C
                                                                                                                                                                                                                                                                                                                                                                                                                                            +receiver senses whether the received signal is sufficiently negative with
                                                                                                                                                                                                                                                                                                                                                                                                                                            +respect to ground to be a logic "1", whereas the RS422 receiver simply
                                                                                                                                                                                                                                                                                                                                                                                                                                            +senses which line is more negative than the other. This makes RS422 more
                                                                                                                                                                                                                                                                                                                                                                                                                                            +immune to noise and interference, and more versatile over longer distances.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +If you ground the positive side of each RS422 receiver and leave unconnected
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the positive side of each transmitter, you've converted to EIA standard
                                                                                                                                                                                                                                                                                                                                                                                                                                            +RS423, which can be used to communicate with most RS232C devices over
                                                                                                                                                                                                                                                                                                                                                                                                                                            +distances up to fifty feet or so. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 2.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 2-Diagram of Sound Port
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The serial inputs and outputs of the SCC are connected to the ports through
                                                                                                                                                                                                                                                                                                                                                                                                                                            +differential line drivers (26LS30) and receivers (26LS32). The line drivers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +can be put in the high-impedance mode between transmissions, to allow other
                                                                                                                                                                                                                                                                                                                                                                                                                                            +devices to transmit over those lines. A driver is activated by lowering the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SCC's Request To Send (RTS) output for that port. Port A and port B are
                                                                                                                                                                                                                                                                                                                                                                                                                                            +identical except that port A (the modem port)  has a higher interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +priority, making it more suitable for high-speed communication. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 3 shows the DB-9 pinout for the SCC output jacks.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 3.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 3-Pinout for SCC Output Jacks
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Do not draw more than 100 milliamps at +12 volts, and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          200 milliamps at +5 volts from all connectors combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Each port's input-only handshake line (pin 7) is connected to the SCC's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Clear To Send (CTS) input for that port, and is designed to accept an
                                                                                                                                                                                                                                                                                                                                                                                                                                            +external device's Data Terminal Ready (DTR) handshake signal. This line is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +also connected to the SCC's external synchronous clock (TRxC) input for that
                                                                                                                                                                                                                                                                                                                                                                                                                                            +port, so that an external device can perform high-speed synchronous data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +exchange. Note that you can't use the line for receiving DTR if you're using
                                                                                                                                                                                                                                                                                                                                                                                                                                            +it to receive a high-speed data clock. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The handshake line is sensed by the Macintosh using the positive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(noninverting) input of one of the standard RS422 receivers (26LS32 chip),
                                                                                                                                                                                                                                                                                                                                                                                                                                            +with the negative input grounded.  The positive input was chosen because
                                                                                                                                                                                                                                                                                                                                                                                                                                            +this configuration is more immune to noise when no active device is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +connected to pin 7. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  Because this is a differential receiver, any handshake or clock signal
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       driving it must be "bi-polar", alternating between a positive voltage
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       and a negative voltage, with respect to the internally grounded negative
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       input. If a device tries to use ground (0 volts) as one of its handshake
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       logic levels, the Macintosh will receive that level as an indeterminate
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       state, with unpredicatbale results.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The SCC itself (at its PCLK pin) is clocked at 3.672 megahertz. The internal
                                                                                                                                                                                                                                                                                                                                                                                                                                            +synchronous clock (RTxC) pins for both ports are also connected to this
                                                                                                                                                                                                                                                                                                                                                                                                                                            +3.672 MHz clock. This is the clock that, after dividing by 16, is normally
                                                                                                                                                                                                                                                                                                                                                                                                                                            +fed to the SCC's internal baud-rate generator. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The SCC chip generates level-2 processor interrupts during I/O over the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +serial lines.  For more information about SCC interrupts, see the Device
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Manager chapter. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The locations of the SCC control and data lines are given in the following
                                                                                                                                                                                                                                                                                                                                                                                                                                            +table as offsets from the constant sccWBase for writes, or sccRBase for
                                                                                                                                                                                                                                                                                                                                                                                                                                            +reads. These base addresses are also available in the global variables SCCWr
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and SCCRd. The SCC is on the upper byte of the data bus, so you must use
                                                                                                                                                                                                                                                                                                                                                                                                                                            +only even-addressed byte reads (a byte read of an odd SCC read address tries
                                                                                                                                                                                                                                                                                                                                                                                                                                            +to reset the entire SCC). When writing, however, you must use only
                                                                                                                                                                                                                                                                                                                                                                                                                                            +odd-addressed byte writes (the MC68000 puts your data on both bytes of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bus, so it works correctly). A word access to any SCC address will shift the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +phase of the computer's high-frequency timing by 128 nanoseconds (system
                                                                                                                                                                                                                                                                                                                                                                                                                                            +software adjusts it correctly during the system startup process). 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Location          Contents
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccWBase+aData    Write data register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccRBase+aData    Read data register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccWBase+bData    Write data register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccRBase+bData    Read data register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccWBase+aCtl     Write control register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccRBase+aCtl     Read control register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccWBase+bCtl     Write control register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  sccRBase+bCtl     Read control register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Don't access the SCC chip more often than once every 2.2 usec. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          SCC requires that much time to let its internal lines stabilize.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Refer to the technical specifications of the Zilog Z8530 for the detailed
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bit maps and control methods (baud rates, protocols, and so on) of the SCC. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 4 shows a circuit diagram for the serial ports.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 4.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 4-Diagram of Serial Ports
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus uses two Mini-8 connectors for the two serial ports,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +replacing the two DB-9 connectors used for the serial ports on the Macintosh
                                                                                                                                                                                                                                                                                                                                                                                                                                            +128K, 512K, and 512K enhanced. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Mini-8 connectors provide an output handshake signal, but do not provide
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the +5 volts and +12 volts found on the Macintosh 128K, 512K, and 512K
                                                                                                                                                                                                                                                                                                                                                                                                                                            +enhanced serial ports. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The output handshake signal for each Macintosh Plus serial port originates
                                                                                                                                                                                                                                                                                                                                                                                                                                            +at the SCC's Data Terminal Ready (DTR) output for that port, and is driven
                                                                                                                                                                                                                                                                                                                                                                                                                                            +by an RS423 line driver. Other signals provided include input
                                                                                                                                                                                                                                                                                                                                                                                                                                            +handshake/external clock, Transmit Data + and -, and Receive Data + and -. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 5 shows the Mini-8 pinout for the SCC serial connectors.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 5.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 5-Pinout for SCC Serial Connectors
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 6 shows a circuit diagram for the Macintosh Plus serial ports.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 6.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 6-Circuit Diagram for the Macintosh Plus Serial Ports
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The.Mouse
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE MOUSE                                               MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The DB-9 connector labeled with the mouse icon connects to the Apple mouse
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(Apple II, Apple III, Lisa, and Macintosh mice are electrically identical).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The mouse generates four square-wave signals that describe the amount and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +direction of the mouse's travel. Interrupt-driven routines in the Macintosh
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ROM convert this information into the corresponding motion of the pointer on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the screen. By turning an option called mouse scaling on or off in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Control Panel desk accessory, the user can change the amount of screen
                                                                                                                                                                                                                                                                                                                                                                                                                                            +pointer motion that corresponds to a given mouse motion, depending on how
                                                                                                                                                                                                                                                                                                                                                                                                                                            +fast the mouse is moved; for more information about mouse scaling, see the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +discussion of parameter RAM in the Operating System Utilities chapter. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  The mouse is a relative-motion device; that is, it doesn't report
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       where it is, only how far and in which direction it's moving. So if
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       you want to connect graphics tablets, touch screens, light pens, or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       other absolute-position devices to the mouse port, you must either
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       convert their coordinates into motion information or install your
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       own device-handling routines.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The mouse operates by sending square-wave trains of information to the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh that change as the velocity and direction of motion change. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +rubber-coated steel ball in the mouse contacts two capstans, each connected
                                                                                                                                                                                                                                                                                                                                                                                                                                            +to an interrupter wheel:  Motion along the mouse's X axis rotates one of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +wheels and motion along the Y axis rotates the other wheel. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh uses a scheme known as quadrature to detect which direction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the mouse is moving along each axis. There's a row of slots on an
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interrupter wheel, and two beams of infrared light shine through the slots,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +each one aimed at a phototransistor detector. The detectors are offset just
                                                                                                                                                                                                                                                                                                                                                                                                                                            +enough so that, as the wheel turns, they produce two square-wave signals
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(called the interrupt signal and the quadrature signal) 90 degrees out of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +phase. The quadrature signal precedes the interrupt signal by 90 degrees
                                                                                                                                                                                                                                                                                                                                                                                                                                            +when the wheel turns one way, and trails it when the wheel turns the other
                                                                                                                                                                                                                                                                                                                                                                                                                                            +way. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The interrupt signals, X1 and Y1, are connected to the SCC's DCDA and DCDB
                                                                                                                                                                                                                                                                                                                                                                                                                                            +inputs, respectively, while the quadrature signals, X2 and Y2, go to inputs
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of the VIA's data register B. When the Macintosh is interrupted (from the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SCC) by the rising edge of a mouse interrupt signal, it checks the VIA for
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the state of the quadrature signal for that axis:  If it's low, the mouse is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +moving to the left (or down), and if it's high, the mouse is moving to the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +right (or up). When the SCC interrupts on the falling edge, a high
                                                                                                                                                                                                                                                                                                                                                                                                                                            +quadrature level indicates motion to the left (or down) and a low quadrature
                                                                                                                                                                                                                                                                                                                                                                                                                                            +level indicates motion to the right (or up): 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  SCC                VIA                 Mouse
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Mouse interrupt    Mouse quadrature    Motion direction in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  X1 (or Y1)         X2 (or Y2)          X (or Y) axis
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Positive edge      Low                 Left (or down)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +                     High                Right (or up)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Negative edge      Low                 Right (or up)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +                     High                Left (or down)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 7 shows the interrupt (Y1) and quadrature (Y2) signals when the mouse
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is moved downwards. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The switch on the mouse is a pushbutton that grounds pin 7 on the mouse
                                                                                                                                                                                                                                                                                                                                                                                                                                            +connector when pressed. The state of the button is checked by software
                                                                                                                                                                                                                                                                                                                                                                                                                                            +during each vertical blanking interrupt. The small delay between each check
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is sufficient to debounce the button. You can look directly at the mouse
                                                                                                                                                                                                                                                                                                                                                                                                                                            +button's state by examining the following bit of VIA data register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(vBase+vBufB): 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vSW    .EQU    3    ;0 = mouse button is down
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +If the bit is clear, the mouse button is down. However, it's recommended
                                                                                                                                                                                                                                                                                                                                                                                                                                            +that you let the Operating System handle this for you through the event
                                                                                                                                                                                                                                                                                                                                                                                                                                            +mechanism. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 8 shows the DB-9 pinout for the mouse jack at the back of the Macintosh.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 7.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 7-Mouse Mechanism
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 8.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 8-Pinout for Mouse Jack
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Do not draw more than 200 milliamps at +5 volts from all
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          connectors combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 9 shows a circuit diagram for the mouse port.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 9.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 9-Diagram of Mouse Port
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The Keyboard and Keypad
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE KEYBOARD AND KEYPAD                                 MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh keyboard and numeric keypad each contain an Intel 8021
                                                                                                                                                                                                                                                                                                                                                                                                                                            +microprocessor that scans the keys. The 8021 contains ROM and RAM, and is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +programmed to conform to the interface protocol described below. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The keyboard plugs into the Macintosh through a four-wire RJ-11
                                                                                                                                                                                                                                                                                                                                                                                                                                            +telephone-style jack.  If a numeric keypad is installed in the system, the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard plugs into it and it in turn plugs into the Macintosh. Figure 10
                                                                                                                                                                                                                                                                                                                                                                                                                                            +shows the pinout for the keyboard jack on the Macintosh, on the keyboard
                                                                                                                                                                                                                                                                                                                                                                                                                                            +itself, and on the numeric keypad. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 10.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 10-Pinout for Keyboard Jack
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Do not draw more than 200 milliamps at +5 volts from all
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          connectors combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus keyboard, which includes a built-in numeric keypad,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +contains a microprocessor that scans the keys. The microprocessor contains
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ROM and RAM, and is programmed to conform to the same keyboard interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            +protocol described below. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus keyboard reproduces all of the key-down transitions
                                                                                                                                                                                                                                                                                                                                                                                                                                            +produced by the keyboard and optional keypad used by the Macintosh 128K,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +512K, and 512K enhanced;  the Macintosh Plus keyboard is also completely
                                                                                                                                                                                                                                                                                                                                                                                                                                            +compatible with these other machines.  If a key transition occurs for a key
                                                                                                                                                                                                                                                                                                                                                                                                                                            +that used to be on the optional keypad in lowercase, the Macintosh Plus
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard still responds to an Inquiry command by sending back the Keypad
                                                                                                                                                                                                                                                                                                                                                                                                                                            +response ($79) to the Macintosh Plus. If a key transition occurs for an key
                                                                                                                                                                                                                                                                                                                                                                                                                                            +that used to be on the optional keypad in uppercase, the Macintosh Plus
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard responds to an Inquiry command by sending back the Shift Key-down
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Transition response ($71), followed by the Keypad response ($79). The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +responses for key-down transitions on the original Macintosh and Macintosh
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Plus are shown (in hexadecimal) in Figure 11. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 11.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 11-Key-Down Transitions
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard Communication Protocol
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The keyboard data line is bidirectional and is driven by whatever device is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sending data. The keyboard clock line is driven by the keyboard only. All
                                                                                                                                                                                                                                                                                                                                                                                                                                            +data transfers are synchronous with the keyboard clock. Each transmission
                                                                                                                                                                                                                                                                                                                                                                                                                                            +consists of eight bits, with the highest-order bits first. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +When sending data to the Macintosh, the keyboard clock transmits eight
                                                                                                                                                                                                                                                                                                                                                                                                                                            +330-usec cycles (160 usec low, 170 usec high) on the normally high clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            +line. It places the data bit on the data line 40 usec before the falling
                                                                                                                                                                                                                                                                                                                                                                                                                                            +edge of the clock line and maintains it for 330 usec. The data bit is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clocked into the Macintosh's VIA shift register on the rising edge of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard clock cycle. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +When the Macintosh sends data to the keyboard, the keyboard clock transmits
                                                                                                                                                                                                                                                                                                                                                                                                                                            +eight 400-usec cycles (180 usec low, 220 usec high) on the clock line. On
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the falling edge of the keyboard clock cycle, the Macintosh places the data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bit on the data line and holds it there for 400 usec. The keyboard reads the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +data bit 80 usec after the rising edge of the keyboard clock cycle. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Only the Macintosh can initiate communication over the keyboard lines. On
                                                                                                                                                                                                                                                                                                                                                                                                                                            +power-up of either the Macintosh or the keyboard, the Macintosh is in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +charge, and the external device is passive. The Macintosh signals that it's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ready to begin communication by pulling the keyboard data line low. Upon
                                                                                                                                                                                                                                                                                                                                                                                                                                            +detecting this, the keyboard starts clocking and the Macintosh sends a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +command. The last bit of the command leaves the keyboard data line low; the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh then indicates it's ready to receive the keyboard's response by
                                                                                                                                                                                                                                                                                                                                                                                                                                            +setting the data line high. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The first command the Macintosh sends out is the Model Number command. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard's response to this command is to reset itself and send back its
                                                                                                                                                                                                                                                                                                                                                                                                                                            +model number to the Macintosh. If no response is received for 1/2 second,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the Macintosh tries the Model Number command again. Once the Macintosh has
                                                                                                                                                                                                                                                                                                                                                                                                                                            +successfully received a model number from the keyboard, normal operation can
                                                                                                                                                                                                                                                                                                                                                                                                                                            +begin. The Macintosh sends the Inquiry command;  the keyboard sends back a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Key Transition response if a key has been pressed or released.  If no key
                                                                                                                                                                                                                                                                                                                                                                                                                                            +transition has occurred after 1/4 second, the keyboard sends back a Null
                                                                                                                                                                                                                                                                                                                                                                                                                                            +response to let the Macintosh know it's still there. The Macintosh then
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sends the Inquiry command again. In normal operation, the Macintosh sends
                                                                                                                                                                                                                                                                                                                                                                                                                                            +out an Inquiry command every 1/4 second. If it receives no response within
                                                                                                                                                                                                                                                                                                                                                                                                                                            +1/2 second, it assumes the keyboard is missing or needs resetting, so it
                                                                                                                                                                                                                                                                                                                                                                                                                                            +begins again with the Model Number command. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +There are two other commands the Macintosh can send:  the Instant command,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +which gets an instant keyboard status without the 1/4-second timeout, and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the Test command, to perform a keyboard self-test. Here's a list of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +commands that can be sent from the Macintosh to the keyboard: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Command name    Value    Keyboard response
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Inquiry         $10      Key Transition code or Null ($7B)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Instant         $14      Key Transition code or Null ($7B)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Model Number    $16      Bit 0:    1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +                           Bits 1-3: keyboard model number, 1-8
                                                                                                                                                                                                                                                                                                                                                                                                                                            +                           Bits 4-6: next device number, 1-8
                                                                                                                                                                                                                                                                                                                                                                                                                                            +                           Bit 7:    1 if another device connected
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Test            $36      ACK ($7D) or NAK ($77)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Key Transition responses are sent out by the keyboard as a single byte: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Bit 7 high means a key-up transition, and bit 7 low means a key-down. Bit 0
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is always high.  The Key Transition responses for key-down transitions on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the keyboard are shown (in hexadecimal) in Figure 12. Note that these
                                                                                                                                                                                                                                                                                                                                                                                                                                            +response codes are different from the key codes returned by the keyboard
                                                                                                                                                                                                                                                                                                                                                                                                                                            +driver software. The keyboard driver strips off bit 7 of the response and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +shifts the result one bit to the right, removing bit 0. For example,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +response code $33 becomes $19, and $2B becomes $15. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keypad Communication Protocol
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +When a numeric keypad is used, it must be inserted between the keyboard and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the Macintosh; that is, the keypad cable plugs into the jack on the front of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the Macintosh, and the keyboard cable plugs into a jack on the numeric
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keypad. In this configuration, the timings and protocol for the clock and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +data lines work a little differently:  The keypad acts like a keyboard when
                                                                                                                                                                                                                                                                                                                                                                                                                                            +communicating with the Macintosh, and acts like a Macintosh when
                                                                                                                                                                                                                                                                                                                                                                                                                                            +communicating over the separate clock and data lines going to the keyboard.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +All commands from the Macintosh are now received by the keypad instead of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the keyboard, and only the keypad can communicate directly with the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +When the Macintosh sends out an Inquiry command, one of two things may
                                                                                                                                                                                                                                                                                                                                                                                                                                            +happen, depending on the state of the keypad. If no key transitions have
                                                                                                                                                                                                                                                                                                                                                                                                                                            +occurred on the keypad since the last Inquiry, the keypad sends an Inquiry
                                                                                                                                                                                                                                                                                                                                                                                                                                            +command to the keyboard and, later, retransmits the keyboard's response back
                                                                                                                                                                                                                                                                                                                                                                                                                                            +to the Macintosh. But if a key transition has occurred on the keypad, the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keypad responds to an Inquiry by sending back the Keypad response ($79) to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the Macintosh. In that case, the Macintosh immediately sends an Instant
                                                                                                                                                                                                                                                                                                                                                                                                                                            +command, and this time the keypad sends back its own Key Transition
                                                                                                                                                                                                                                                                                                                                                                                                                                            +response.  As with the keyboard, bit 7 high means key-up and bit 7 low means
                                                                                                                                                                                                                                                                                                                                                                                                                                            +key-down. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Key Transition responses for key-down transitions on the keypad are shown in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 12.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 12.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 12-Key-Down Transitions
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Again, note that these response codes are different from the key codes
                                                                                                                                                                                                                                                                                                                                                                                                                                            +returned by the keyboard driver software. The keyboard driver strips off bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            +7 of the response and shifts the result one bit to the right, removing bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            +0. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The Floppy Disk Interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE FLOPPY DISK INTERFACE                               MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh disk interface uses a design similar to that used on the Apple
                                                                                                                                                                                                                                                                                                                                                                                                                                            +II and Apple III computers, employing the Apple custom IWM chip. Another
                                                                                                                                                                                                                                                                                                                                                                                                                                            +custom chip called the Analog Signal Generator (ASG) reads the disk speed
                                                                                                                                                                                                                                                                                                                                                                                                                                            +buffer in RAM and generates voltages that control the disk speed. Together
                                                                                                                                                                                                                                                                                                                                                                                                                                            +with the VIA, the IWM and the ASG generate all the signals necessary to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +read, write, format, and eject the 3 1/2-inch disks used by the Macintosh. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus has an internal double-sided disk drive; an external double-sided
                                                                                                                                                                                                                                                                                                                                                                                                                                            +drive or the older single-sided drive, can be attached as well.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  The external double-sided drive can be attached to a Macintosh 512K
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       through the back of a Hard Disk 20. The Hard Disk 20 start-up software
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       contains a device driver for this drive and the hierarchical (128K ROM)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       version of the File Manager.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The double-sided drive can format, read, and write both 800K double-sided
                                                                                                                                                                                                                                                                                                                                                                                                                                            +disks and 400K single-sided disks. The operation of the drive with
                                                                                                                                                                                                                                                                                                                                                                                                                                            +double-sided disks differs from that on single-sided disks. With
                                                                                                                                                                                                                                                                                                                                                                                                                                            +double-sided disks, a single mechanism positions two read/write heads-one
                                                                                                                                                                                                                                                                                                                                                                                                                                            +above the disk and one below-so that the drive can access two tracks
                                                                                                                                                                                                                                                                                                                                                                                                                                            +simultaneously-one on the top side, and a second, directly beneath the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +first, on the bottom side. This lets the drive read or write two complete
                                                                                                                                                                                                                                                                                                                                                                                                                                            +tracks of information before it has to move the heads, significantly
                                                                                                                                                                                                                                                                                                                                                                                                                                            +reducing access time. For 400K disks, the double-sided drive restricts
                                                                                                                                                                                                                                                                                                                                                                                                                                            +itself to one side of the disk. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Applications (for instance, copy protection schemes) should never
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          interfere with, or depend on, disk speed control. The double-sided
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          drive controls its own motor speed, ignoring the speed signal (PWM)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          from the Analog Signal Generator (ASG).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The IWM controls four of the disk state-control lines (called CA0, CA1, CA2,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and LSTRB), chooses which drive (internal or external) to enable, and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +processes the disk's read-data and write-data signals. The VIA provides
                                                                                                                                                                                                                                                                                                                                                                                                                                            +another disk state-control line called SEL. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +A buffer in RAM (actually the low-order bytes of words in the sound buffer)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is read by the ASG to generate a pulse-width modulated signal that's used to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +control the speed of the disk motor. The Macintosh Operating System uses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +this speed control to allow it to store more sectors of information in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +tracks closer to the edge of the disk by running the disk motor at slower
                                                                                                                                                                                                                                                                                                                                                                                                                                            +speeds. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 13 shows the DB-19 pinout for the external disk jack at the back of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the Macintosh. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 13.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 13-Pinout for Disk Jack
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  This connector was designed for a Macintosh 3 1/2-inch disk drive,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          which represents a load of 500 milliamps at +12 volts, 500 milliamps
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          at +5 volts, and 0 milliamps at -12 volts. If any other device uses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          this connector, it must not exceed these loads by more than 100
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          milliamps at +12 volts, 200 milliamps at +5 volts, and 10 milliamps
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          at -12 volts, including loads from all other connectors combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Controlling the Disk State-Control Lines
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The IWM contains registers that can be used by the software to control the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +state-control lines leading out to the disk. By reading or writing certain
                                                                                                                                                                                                                                                                                                                                                                                                                                            +memory locations, you can turn these state-control lines on or off. Other
                                                                                                                                                                                                                                                                                                                                                                                                                                            +locations set various IWM internal states. The locations are given in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +following table as offsets from the constant dBase, the base address of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +IWM; this base address is also available in a global variable named IWM. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +IWM is on the lower byte of the data bus, so use odd-addressed byte accesses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +only. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +              Location to     Location to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  IWM line    turn line on    turn line off
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Disk state-control lines:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    CA0       dBase+ph0H      dBase+ph0L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    CA1       dBase+ph1H      dBase+ph1L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    CA2       dBase+ph2H      dBase+ph2L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    LSTRB     dBase+ph3H      dBase+ph3L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Disk enable line:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    ENABLE    dBase+motorOn   dBase+motorOff
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  IWM internal states:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    SELECT    dBase+extDrive  dBase+intDrive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    Q6        dBase+q6H       dBase+q6L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    Q7        dBase+q7H       dBase+q7L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To turn one of the lines on or off, do any kind of memory byte access (read
                                                                                                                                                                                                                                                                                                                                                                                                                                            +or write)  to the respective location. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The CA0, CA1, and CA2 lines are used along with the SEL line from the VIA to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +select from among the registers and data signals in the disk drive. The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +LSTRB line is used when writing control information to the disk registers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(as described below), and the ENABLE line enables the selected disk drive.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SELECT is an IWM internal line that chooses which disk drive can be enabled: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +On selects the external drive, and off selects the internal drive. The Q6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and Q7 lines are used to set up the internal state of the IWM for reading
                                                                                                                                                                                                                                                                                                                                                                                                                                            +disk register information, as well as for reading or writing actual
                                                                                                                                                                                                                                                                                                                                                                                                                                            +disk-storage data. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +You can read information from several registers in the disk drive to find
                                                                                                                                                                                                                                                                                                                                                                                                                                            +out whether the disk is locked, whether a disk is in the drive, whether the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +head is at track 0, how many heads the drive has, and whether there's a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +drive connected at all. In turn, you can write to some of these registers to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +step the head, turn the motor on or off, and eject the disk. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Reading from the Disk Registers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Before you can read from any of the disk registers, you must set up the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +state of the IWM so that it can pass the data through to the MC68000's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +memory space where you'll be able to read it. To do that, you must first
                                                                                                                                                                                                                                                                                                                                                                                                                                            +turn off Q7 by reading or writing dBase+q7L. Then turn on Q6 by accessing
                                                                                                                                                                                                                                                                                                                                                                                                                                            +dBase+q6H. After that, the IWM will be able to pass data from the disk's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +RD/SENSE line through to you. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Once you've set up the IWM for disk register access, you must next select
                                                                                                                                                                                                                                                                                                                                                                                                                                            +which register you want to read. To read one of the disk registers, first
                                                                                                                                                                                                                                                                                                                                                                                                                                            +enable the drive you want to use (by accessing dBase+intDrive or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +dBase+extDrive and then dBase+motorOn)  and make sure LSTRB is low. Then set
                                                                                                                                                                                                                                                                                                                                                                                                                                            +CA0, CA1, CA2, and SEL to address the register you want. Once this is done,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +you can read the disk register data bit in the high-order bit of dBase+q7L.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +After you've read the data, you may read another disk register by again
                                                                                                                                                                                                                                                                                                                                                                                                                                            +setting the proper values in CA0, CA1, CA2, and SEL, and then reading
                                                                                                                                                                                                                                                                                                                                                                                                                                            +dBase+q7L. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  When you're finished reading data from the disk registers, it's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          important to leave the IWM in a state that the Disk Driver will
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          recognize. To be sure it's in a valid logic state, always turn Q6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          back off (by accessing dBase+q6L) after you've finished reading
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          the disk registers.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Following table shows how you must set the disk state-control lines to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +read from the various disk registers and data signals: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    State-control lines       Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  CA2    CA1    CA0    SEL    addressed    Information in register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      0      0      0      DIRTN        Head step direction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      0      0      1      CSTIN        Disk in place
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      0      1      0      STEP         Disk head stepping
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      0      1      1      WRTPRT       Disk locked
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      1      0      0      MOTORON      Disk motor running
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      1      0      1      TKO          Head at track 0
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      1      1      1      TACH         Tachometer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1      0      0      0      RDDATA0      Read data, lower head
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1      0      0      1      RDDATA1      Read data, upper head
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1      1      0      0      SIDES        Single- or double-sided drive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1      1      1      1      DRVIN        Drive installed
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Writing to the Disk Registers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To write to a disk register, first be sure that LSTRB is off, then turn on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +CA0 and CA1. Next, set SEL to 0. Set CA0 and CA1 to the proper values from
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the table below, then set CA2 to the value you want to write to the disk
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register. Hold LSTRB high for at least one usec but not more than one msec
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(unless you're ejecting a disk) and bring it low again. Be sure that you
                                                                                                                                                                                                                                                                                                                                                                                                                                            +don't change CA0-CA2 or SEL while LSTRB is high, and that CA0 and CA1 are
                                                                                                                                                                                                                                                                                                                                                                                                                                            +set high before changing SEL. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The following table shows how you must set the disk state-control lines to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +write to the various disk registers: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    Control lines      Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  CA1    CA0    SEL    addressed    Register function
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      0      0      DIRTN        Set stepping direction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0      1      0      STEP         Step disk head one track
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1      0      0      MOTORON      Turn on/off disk motor
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1      1      0      EJECT        Eject the disk
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Explanations of the Disk Registers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The information written to or read from the various disk registers can be
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interpreted as follows: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  The DIRTN signal sets the direction of subsequent head stepping:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     0 causes steps to go toward the inside track (track 79),
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     1 causes them to go toward the outside track (track 0).
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  CSTIN is 0 only when a disk is in the drive.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  Setting STEP to 0 steps the head one full track in the direction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     last set by DIRTN. When the step is complete (about 12 msec), the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     disk drive sets STEP back to 1, and then you can step again.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  WRTPRT is 0 whenever the disk is locked. Do not write to a disk
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     unless WRTPRT is 1.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  MOTORON controls the state of the disk motor:  0 turns on the motor,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     and 1 turns it off. The motor will run only if the drive is enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     and a disk is in place; otherwise, writing to this line will have no
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     effect.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  TKO goes to 0 only if the head is at track 0. This is valid beginning
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     12 msec after the step that puts it at track 0.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  Writing 1 to EJECT ejects the disk from the drive. To eject a disk,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     you must hold LSTRB high for at least 1/2 second.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  The current disk speed is available as a pulse train on TACH. The TACH
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     line produces 60 pulses for each rotation of the drive motor. The disk
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     motor speed is controlled by the ASG as it reads the disk speed RAM buffer.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  RDDATA0 and RDDATA1 carry the instantaneous data from the disk head.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  SIDES is always 0 on single-sided drives and 1 on double-sided drives.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  *  DRVIN is always 0 if the selected disk drive is physically connected to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +     the Macintosh, otherwise it floats to 1.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The Real-Time Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE REAL-TIME CLOCK                                     MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh real-time clock is a custom chip whose interface lines are
                                                                                                                                                                                                                                                                                                                                                                                                                                            +available through the VIA. The clock contains a four-byte counter that's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +incremented once each second, as well as a line that can be used by the VIA
                                                                                                                                                                                                                                                                                                                                                                                                                                            +to generate an interrupt once each second. It also contains 20 bytes of RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +that are powered by a battery when the Macintosh is turned off. These RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bytes, called parameter RAM, contain important data that needs to be
                                                                                                                                                                                                                                                                                                                                                                                                                                            +preserved even when the system power is not available. The Operating System
                                                                                                                                                                                                                                                                                                                                                                                                                                            +maintains a copy of parameter RAM that you can access in low memory.  To
                                                                                                                                                                                                                                                                                                                                                                                                                                            +find out how to use the values in parameter RAM, see the Operating System
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Utilities chapter. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus real-time clock is a new custom chip. The commands
                                                                                                                                                                                                                                                                                                                                                                                                                                            +described below for accessing the Macintosh 512K clock chip are also used to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +access the new chip. The new chip includes additional parameter RAM that's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +reserved by Apple. The parameter RAM information provided in the Operating
                                                                                                                                                                                                                                                                                                                                                                                                                                            +System Utilities chapter, as well as the descriptions of the routines used
                                                                                                                                                                                                                                                                                                                                                                                                                                            +for accessing that information, apply for the new clock chip as well. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Accessing the Clock Chip
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The clock is accessed through the following bits of VIA data register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(vBase+vBufB):
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  rTCData    .EQU    0    ;real-time clock serial data line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  rTCClk     .EQU    1    ;real-time clock data-clock line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  rTCEnb     .EQU    2    ;real-time clock serial enable
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +These three bits constitute a simple serial interface. The rTCData bit is a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bidirectional serial data line used to send command and data bytes back and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +forth. The rTCClk bit is a data-clock line, always driven by the processor
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(you set it high or low yourself)  that regulates the transmission of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +data and command bits. The rTCEnb bit is the serial enable line, which
                                                                                                                                                                                                                                                                                                                                                                                                                                            +signals the real-time clock that the processor is about to send it serial
                                                                                                                                                                                                                                                                                                                                                                                                                                            +commands and data. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To access the clock chip, you must first enable its serial function. To do
                                                                                                                                                                                                                                                                                                                                                                                                                                            +this, set the serial enable line (rTCEnb) to 0. Keep the serial enable line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +low during the entire transaction; if you set it to 1, you'll abort the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +transfer. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Be sure you don't alter any of bits 3-7 of VIA data register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          B during clock serial access.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +A command can be either a write request or a read request. After the eight
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bits of a write request, the clock will expect the next eight bits across
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the serial data line to be your data for storage into one of the internal
                                                                                                                                                                                                                                                                                                                                                                                                                                            +registers of the clock. After receiving the eight bits of a read request,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the clock will respond by putting eight bits of its data on the serial data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +line. Commands and data are transferred serially in eight-bit groups over
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the serial data line, with the high-order bit first and the low-order bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            +last. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To send a command to the clock, first set the rTCData bit of VIA data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +direction register B (vBase+vDirB) so that the real-time clock's serial data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +line will be used for output to the clock. Next, set the rTCClk bit of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vBase+vBufB to 0, then set the rTCData bit to the value of the first
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(high-order) bit of your data byte. Then raise (set to 1) the data-clock bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(rTCClk). Then lower the data-clock, set the serial data line to the next
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bit, and raise the data-clock line again. After the last bit of your command
                                                                                                                                                                                                                                                                                                                                                                                                                                            +has been sent in this way, you can either continue by sending your data byte
                                                                                                                                                                                                                                                                                                                                                                                                                                            +in the same way (if your command was a write request) or switch to receiving
                                                                                                                                                                                                                                                                                                                                                                                                                                            +a data byte from the clock (if your command was a read request). 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To receive a byte of data from the clock, you must first send a command
                                                                                                                                                                                                                                                                                                                                                                                                                                            +that's a read request. After you've clocked out the last bit of the command,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clear the rTCData bit of the data direction register so that the real-time
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clock's serial data line can be used for input from the clock; then lower
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the data-clock bit (rTCClk) and read the first (high-order) bit of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clock's data byte on the serial data line. Then raise the data-clock, lower
                                                                                                                                                                                                                                                                                                                                                                                                                                            +it again, and read the next bit of data.  Continue this until all eight bits
                                                                                                                                                                                                                                                                                                                                                                                                                                            +are read, then raise the serial enable line (rTCEnb), disabling the data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +transfer. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The following table lists the commands you can send to the clock. A 1 in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +high-order bit makes your command a read request; a 0 in the high-order bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            +makes your command a write request. (In this table, "z" is the bit that
                                                                                                                                                                                                                                                                                                                                                                                                                                            +determines read or write status, and bits marked "a" are bits whose values
                                                                                                                                                                                                                                                                                                                                                                                                                                            +depend on what parameter RAM byte you want to address.) 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Command byte    Register addressed by the command
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    z0000001      Seconds register 0 (lowest-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    z0000101      Seconds register 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    z0001001      Seconds register 2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    z0001101      Seconds register 3 (highest-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    00110001      Test register (write only)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    00110101      Write-protect register (write only)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    z010aa01      RAM address 100aa ($10-$13)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    z1aaaa01      RAM address 0aaaa ($00-$0F)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note that the last two bits of a command byte must always be 01.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +If the high-order bit (bit 7) of the write-protect register is set, this
                                                                                                                                                                                                                                                                                                                                                                                                                                            +prevents writing into any other register on the clock chip (including
                                                                                                                                                                                                                                                                                                                                                                                                                                            +parameter RAM). Clearing the bit allows you to change any values in any
                                                                                                                                                                                                                                                                                                                                                                                                                                            +registers on the chip. Don't try to read from this register; it's a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +write-only register. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The two highest-order bits (bits 7 and 6) of the test register are used as
                                                                                                                                                                                                                                                                                                                                                                                                                                            +device control bits during testing, and should always be set to 0 during
                                                                                                                                                                                                                                                                                                                                                                                                                                            +normal operation.  Setting them to anything else will interfere with normal
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clock counting. Like the write-protect register, this is a write-only
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register; don't try to read from it. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +All clock data must be sent as full eight-bit bytes, even if only one or two
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bits are of interest. The rest of the bits may not matter, but you must send
                                                                                                                                                                                                                                                                                                                                                                                                                                            +them to the clock or the write will be aborted when you raise the serial
                                                                                                                                                                                                                                                                                                                                                                                                                                            +enable line. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +It's important to use the proper sequence if you're writing to the clock's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +seconds registers. If you write to a given seconds register, there's a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +chance that the clock may increment the data in the next higher-order
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register during the write, causing unpredictable results. To avoid this
                                                                                                                                                                                                                                                                                                                                                                                                                                            +possibility, always write to the registers in low-to-high order. Similarly,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the clock data may increment during a read of all four time bytes, which
                                                                                                                                                                                                                                                                                                                                                                                                                                            +could cause invalid data to be read. To avoid this, always read the time
                                                                                                                                                                                                                                                                                                                                                                                                                                            +twice (or until you get the same value twice). 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  When you've finished reading from the clock registers, always end
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          by doing a final write such as setting the write-protect bit. Failure
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          to do this may leave the clock in a state that will run down the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          battery more quickly than necessary.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The One-Second Interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The clock also generates a VIA interrupt once each second (if this interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +is enabled). The enable status for this interrupt can be read from or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +written to bit 0 of the VIA's interrupt enable register (vBase+vIER). When
                                                                                                                                                                                                                                                                                                                                                                                                                                            +reading the enable register, a 1 bit indicates the interrupt is enabled, and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +0 means it's disabled. Writing $01 to the enable register disables the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clock's one-second interrupt (without affecting any other interrupts), while
                                                                                                                                                                                                                                                                                                                                                                                                                                            +writing $81 enables it again. See the Device Manager chapter for more
                                                                                                                                                                                                                                                                                                                                                                                                                                            +information about writing your own interrupt handlers. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Be sure when you write to bit 0 of the VIA's interrupt enable
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          register that you don't change any of the other bits.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The SCSI Interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE SCSI INTERFACE                                      MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  This section refers to the Macintosh Plus.  Earlier Macintosh models
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       are not equipped with a SCSI interface.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The NCR 5380 Small Computer Standard Interface (SCSI) chip controls a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +high-speed parallel port for communicating with up to seven SCSI peripherals
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(such as hard disks, streaming tapes, and high speed printers). The
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh Plus SCSI port can be used to implement all of the protocols,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +arbitration, interconnections, etc. of the SCSI interface as defined by the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ANSI X3T9.2 committee. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Macintosh Plus SCSI port differs from the ANSI X3T9.2 standard in two
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ways.  First, it uses a DB-25 connector instead of the standard 50-pin
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ribbon connector. An Apple adapter cable, however, can be used to convert
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the DB-25 connector to the standard 50-pin connector. Second, power for
                                                                                                                                                                                                                                                                                                                                                                                                                                            +termination resistors is not provided at the SCSI connector nor is a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +termination resistor provided in the Macintosh Plus SCSI circuitry. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  Do not connect an RS232 device to the SCSI port. The SCSI interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          is designed to use standard TTL logic levels of 0 and +5 volts;
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          RS232 devices may impose levels of -25 and +25 volts on some lines,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          thereby causing damage to the logic board.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The NCR 5380 interrupt signal is not connected to the processor, but the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +progress of a SCSI operation may be determined at any time by examining the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +contents of various status registers in the NCR 5380. SCSI data transfers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +are performed by the MC68000;  pseudo-DMA mode operations can assert the NCR
                                                                                                                                                                                                                                                                                                                                                                                                                                            +5380 DMA Acknowledge (DACK) signal by reading or writing to the appropriate
                                                                                                                                                                                                                                                                                                                                                                                                                                            +address (see table below). Approximate transfer rates are 142K bytes per
                                                                                                                                                                                                                                                                                                                                                                                                                                            +second for nonblind transfers and 312K bytes per second for blind transfers.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(With nonblind transfers, each byte transferred is polled, or checked.) 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 14 shows the DB-25 pinout for the SCSI connector at the back of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Macintosh Plus. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +***Refer to Figure 14.***
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Figure 14-Pinout for SCSI Connector
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The locations of the NCR 5380 control and data registers are given in the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +following table as offsets from the constant scsiWr for write operations, or
                                                                                                                                                                                                                                                                                                                                                                                                                                            +scsiRd for read operations. These base addresses are not available in global
                                                                                                                                                                                                                                                                                                                                                                                                                                            +variables; instead of using absolute addresses, you should use the routines
                                                                                                                                                                                                                                                                                                                                                                                                                                            +provided by the SCSI Manager. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Read and write operations must be made in bytes. Read operations must be to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +even addresses and write operations must be to odd addresses; otherwise an
                                                                                                                                                                                                                                                                                                                                                                                                                                            +undefined operation will result. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The address of each register is computed as follows:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  $580drn
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  where r represents the register number (from 0 through 7),
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  n determines whether it a read or write operation
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  (0 for reads, or 1 for writes), and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  d determines whether the DACK signal to the NCR 5380 is asserted.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  (0 for not asserted, 1 is for asserted)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Here's an example of the address expressed in binary:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0101 1000 0000 00d0 0rrr 000n
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  Asserting the DACK signal applies only to write operations to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       the output data register and read operations from the input
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       data register.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Symbolic            Memory
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Location            Location   NCR 5380 Internal Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sODR+dackWr  $580201    Output Data Register with DACK
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sIDR+dackRd  $580260    Current SCSI Data with DACK
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sODR         $580001    Output Data Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sICR         $580011    Initiator Command Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sMR          $580021    Mode Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sTCR         $580031    Target Command Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sSER         $580041    Select Enable Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sDMAtx       $580051    Start DMA Send
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sTDMArx      $580061    Start DMA Target Receive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiWr+sIDMArx      $580071    Start DMA Initiator Receive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sCDR         $580000    Current SCSI Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sICR         $580010    Initiator Command Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sMR          $580020    Mode Registor
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sTCR         $580030    Target Command Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sCSR         $580040    Current SCSI Bus Status
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sBSR         $580050    Bus and Status Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sIDR         $580060    Input Data Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  scsiRd+sRESET       $580070    Reset Parity/Interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  For more information on the registers and control structure of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       the SCSI, consult the technical specifications for the NCR 5380 chip.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY The VIA
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  THE VIA                                                 MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The Synertek SY6522 Versatile Interface Adapter (VIA) controls the keyboard,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +internal real-time clock, parts of the disk, sound, and mouse interfaces,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and various internal Macintosh signals. Its base address is available as the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +constant vBase and is also stored in a global variable named VIA. The VIA is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +on the upper byte of the data bus, so use even-addressed byte accesses only. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +There are two parallel data registers within the VIA, called A and B, each
                                                                                                                                                                                                                                                                                                                                                                                                                                            +with a data direction register. There are also several event timers, a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +clocked shift register, and an interrupt flag register with an interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +enable register. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Normally you won't have to touch the direction registers, since the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Operating System sets them up for you at system startup. A 1 bit in a data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +direction register means the corresponding bit of the respective data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register will be used for output, while a 0 bit means it will be used for
                                                                                                                                                                                                                                                                                                                                                                                                                                            +input. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  For more information on the registers and control structure of the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       VIA, consult the technical specifications for the SY6522 chip.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + VIA Register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +VIA data register A is at vBase+vBufA. The corresponding data direction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register is at vBase+vDirA. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Bit(s)    Name             Description
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    7       vSCCWReq         SCC wait/request
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    6       vPage2           Alternate screen buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    5       vHeadSel         Disk SEL line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    4       vOverlay         ROM low-memory overlay
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    3       vSndPg2          Alternate sound buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +    0-2     vSound (mask)    Sound volume
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The vSCCWReq bit can signal that the SCC has received a character (used to
                                                                                                                                                                                                                                                                                                                                                                                                                                            +maintain serial communications during disk accesses, when the CPU's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interrupts from the SCC are disabled). The vPage2 bit controls which screen
                                                                                                                                                                                                                                                                                                                                                                                                                                            +buffer is being displayed, and the vHeadSel bit is the SEL control line used
                                                                                                                                                                                                                                                                                                                                                                                                                                            +by the disk interface. The vOverlay bit (used only during system startup)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +can be used to place another image of ROM at the bottom of memory, where RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +usually is (RAM moves to $600000). The sound buffer is selected by the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSndPg2 bit. Finally, the vSound bits control the sound volume. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + VIA Register B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +VIA data register B is at vBase+vBufB. The corresponding data direction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +register is at vBase+vDirB. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Bit    Name       Description
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   7     vSndEnb    Sound enable/disable
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   6     vH4        Horizontal blanking
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   5     vY2        Mouse Y2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   4     vX2        Mouse X2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   3     vSW        Mouse switch
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   2     rTCEnb     Real-time clock serial enable
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   1     rTCClk     Real-time clock data-clock line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   0     rTCData    Real-time clock serial data
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The vSndEnb bit turns the sound generator on or off, and the vH4 bit is set
                                                                                                                                                                                                                                                                                                                                                                                                                                            +when the video beam is in its horizontal blanking period. The vY2 and vX2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bits read the quadrature signals from the Y (vertical) and X (horizontal)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +directions, respectively, of the mouse's motion lines. The vSW bit reads the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +mouse switch. The rTCEnb, rTCClk, and rTCData bits control and read the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +real-time clock. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The VIA Peripheral Control Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The VIA's peripheral control register, at vBase+vPCR, allows you to set some
                                                                                                                                                                                                                                                                                                                                                                                                                                            +very low-level parameters (such as positive-edge or negative-edge
                                                                                                                                                                                                                                                                                                                                                                                                                                            +triggering) dealing with the keyboard data and clock interrupts, the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +one-second real-time clock interrupt line, and the vertical blanking
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interrupt. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Bit(s)    Description
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   5-7      Keyboard data interrupt control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   4        Keyboard clock interrupt control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   1-3      One-second interrupt control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   0        Vertical blanking interrupt control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The VIA Timers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The timers controlled by the VIA are called timer 1 and timer 2. Timer 1 is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +used to time various events having to do with the Macintosh sound generator.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Timer 2 is used by the Disk Driver to time disk I/O events. If either timer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +isn't being used by the Operating System, you're free to use it for your own
                                                                                                                                                                                                                                                                                                                                                                                                                                            +purposes.  When a timer counts down to 0, an interrupt will be generated if
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the proper interrupt enable has been set. See the Device Manager chapter for
                                                                                                                                                                                                                                                                                                                                                                                                                                            +information about writing your own interrupt handlers. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +To start one of the timers, store the appropriate values in the high- and
                                                                                                                                                                                                                                                                                                                                                                                                                                            +low-order bytes of the timer counter (or the timer 1 latches, for multiple
                                                                                                                                                                                                                                                                                                                                                                                                                                            +use of the value).  The counters and latches are at the following locations: 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Location       Contents
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vBase+vT1C     Timer 1 counter (low-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vBase+vT1CH    Timer 1 counter (high-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vBase+vT1L     Timer 1 latch (low-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vBase+vT1LH    Timer 1 latch (high-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vBase+vT2C     Timer 2 counter (low-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  vBase+vT2CH    Timer 2 counter (high-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note:  When setting a timer, it's not enough to simply store a full word
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       to the high-order address, because the high- and low-order bytes of
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       the counters are not adjacent. You must explicitly do two stores,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +       one for the high-order byte and one for the low-order byte.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + VIA Interrupts
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The VIA (through its IRQ line) can cause a level-1 processor interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +whenever one of the following occurs:  Timer 1 or timer 2 times out; the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +keyboard is clocking a bit in through its serial port; the shift register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +for the keyboard serial interface has finished shifting in or out; the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vertical blanking interval is beginning; or the one-second clock has ticked.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +For more information on how to use these interrupts, see the Device Manager
                                                                                                                                                                                                                                                                                                                                                                                                                                            +chapter. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The interrupt flag register at vBase+vIFR contains flag bits that are set
                                                                                                                                                                                                                                                                                                                                                                                                                                            +whenever the interrupt corresponding to that bit has occurred. The Operating
                                                                                                                                                                                                                                                                                                                                                                                                                                            +System uses these flags to determine which device has caused an interrupt.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Bit 7 of the interrupt flag register is not really a flag:  It remains set
                                                                                                                                                                                                                                                                                                                                                                                                                                            +(and the IRQ line to the processor is held low) as long as any enabled VIA
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interrupt is occurring. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Bit    Interrupting device
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   7     IRQ (all enabled VIA interrupts)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   6     Timer 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   5     Timer 2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   4     Keyboard clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   3     Keyboard data bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   2     Keyboard data ready
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   1     Vertical blanking interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   0     One-second interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The interrupt enable register, at vBase+vIER, lets you enable or disable any
                                                                                                                                                                                                                                                                                                                                                                                                                                            +of these interrupts. If an interrupt is disabled, its bit in the interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +flag register will continue to be set whenever that interrupt occurs, but it
                                                                                                                                                                                                                                                                                                                                                                                                                                            +won't affect the IRQ flag, nor will it interrupt the processor. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The bits in the interrupt enable register are arranged just like those in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the interrupt flag register, except for bit 7. When you write to the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +interrupt enable register, bit 7 is "enable/disable":  If bit 7 is a 1, each
                                                                                                                                                                                                                                                                                                                                                                                                                                            +1 in bits 0-6 enables the corresponding interrupt; if bit 7 is a 0, each 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +in bits 0-6 disables that interrupt. In either case, 0's in bits 0-6 do not
                                                                                                                                                                                                                                                                                                                                                                                                                                            +change the status of those interrupts. Bit 7 is always read as a 1. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Other VIA Registers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The shift register, at vBase+vSR, contains the eight bits of data that have
                                                                                                                                                                                                                                                                                                                                                                                                                                            +been shifted in or that will be shifted out over the keyboard data line. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +The auxiliary control register, at vBase+vACR, is described in the SY6522
                                                                                                                                                                                                                                                                                                                                                                                                                                            +documentation.  It controls various parameters having to do with the timers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +and the shift register. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY System.Startup
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  SYSTEM STARTUP                                          MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +When power is first supplied to the Macintosh, a carefully orchestrated
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sequence of events takes place. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +First, the processor is held in a wait state while a series of circuits gets
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the system ready for operation. The VIA and IWM are initialized, and the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +mapping of ROM and RAM are altered temporarily by setting the overlay bit in
                                                                                                                                                                                                                                                                                                                                                                                                                                            +VIA data register A.  This places the ROM starting at the normal ROM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +location $400000, and a duplicate image of the same ROM starting at address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +0 (where RAM normally is), while RAM is placed starting at $600000. Under
                                                                                                                                                                                                                                                                                                                                                                                                                                            +this mapping, the Macintosh software executes out of the normal ROM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +locations above $400000, but the MC68000 can obtain some critical low-memory
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vectors from the ROM image it finds at address 0. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Next, a memory test and several other system tests take place. After the
                                                                                                                                                                                                                                                                                                                                                                                                                                            +system is fully tested and initialized, the software clears the VIA's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +overlay bit, mapping the system RAM back where it belongs, starting at
                                                                                                                                                                                                                                                                                                                                                                                                                                            +address 0. Then the disk startup process begins. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +First the internal disk is checked:  If there's a disk inserted, the system
                                                                                                                                                                                                                                                                                                                                                                                                                                            +attempts to read it. If no disk is in the internal drive and there's an
                                                                                                                                                                                                                                                                                                                                                                                                                                            +external drive with an inserted disk, the system will try to read that one.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Otherwise, the question-mark disk icon is displayed until a disk is
                                                                                                                                                                                                                                                                                                                                                                                                                                            +inserted. If the disk startup fails for some reason, the "sad Macintosh"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +icon is displayed and the Macintosh goes into an endless loop until it's
                                                                                                                                                                                                                                                                                                                                                                                                                                            +turned off again. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Once a readable disk has been inserted, the first two sectors (containing
                                                                                                                                                                                                                                                                                                                                                                                                                                            +the system startup blocks) are read in and the normal disk load begins. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ KY Summary of the Macintosh Hardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            ++ C  SUMMARY OF THE MACINTOSH HARDWARE                       MacintoshHardware
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Warning:  This information applies only to the Macintosh 128K, 512K,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +          not to the Macintosh XL.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Constants
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; VIA base addresses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vBase     .EQU    $EFE1FE    ;main base for VIA chip (in variable VIA)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aVBufB    .EQU    vBase      ;register B base
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aVBufA    .EQU    $EFFFFE    ;register A base
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aVBufM    .EQU    aVBufB     ;register containing mouse signals
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aVIFR     .EQU    $EFFBFE    ;interrupt flag register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aVIER     .EQU    $EFFDFE    ;interrupt enable register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; Offsets from vBase
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vBufB     .EQU    512*0      ;register B (zero offset)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vDirB     .EQU    512*2      ;register B direction register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vDirA     .EQU    512*3      ;register A direction register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vT1C      .EQU    512*4      ;timer 1 counter (low-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vT1CH     .EQU    512*5      ;timer 1 counter (high-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vT1L      .EQU    512*6      ;timer 1 latch (low-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vT1LH     .EQU    512*7      ;timer 1 latch (high-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vT2C      .EQU    512*8      ;timer 2 counter (low-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vT2CH     .EQU    512*9      ;timer 2 counter (high-order byte)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSR       .EQU    512*10     ;shift register (keyboard)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vACR      .EQU    512*11     ;auxiliary control register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vPCR      .EQU    512*12     ;peripheral control register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vIFR      .EQU    512*13     ;interrupt flag register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vIER      .EQU    512*14     ;interrupt enable register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vBufA     .EQU    512*15     ;register A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; VIA register A constants
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vAOut     .EQU    $7F        ;direction register A:  1 bits = outputs
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vAInit    .EQU    $7B        ;initial value for vBufA (medium volume)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSound    .EQU    7          ;sound volume bits
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; VIA register A bit numbers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSndPg2   .EQU    3          ;0 = alternate sound buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vOverlay  .EQU    4          ;1 = ROM overlay (system startup only)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vHeadSel  .EQU    5          ;disk SEL control line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vPage2    .EQU    6          ;0 = alternate screen buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSCCWReq  .EQU    7          ;SCC wait/request line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; VIA register B constants
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vBOut     .EQU    $87        ;direction register B:  1 bits = outputs
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vBInit    .EQU    $07        ;initial value for vBufB
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; VIA register B bit numbers
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +rTCData   .EQU    0          ;real-time clock serial data line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +rTCClk    .EQU    1          ;real-time clock data-clock line
                                                                                                                                                                                                                                                                                                                                                                                                                                            +rTCEnb    .EQU    2          ;real-time clock serial enable
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSW       .EQU    3          ;0 = mouse button is down
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vX2       .EQU    4          ;mouse X quadrature level
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vY2       .EQU    5          ;mouse Y quadrature level
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vH4       .EQU    6          ;1 = horizontal blanking
                                                                                                                                                                                                                                                                                                                                                                                                                                            +vSndEnb   .EQU    7          ;0 = sound enabled, 1 = disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; SCC base addresses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sccRBase  .EQU    $9FFFF8    ;SCC base read address (in variable SCCRd)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sccWBase  .EQU    $BFFFF9    ;SCC base write address (in variable SCCWr)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; Offsets from SCC base addresses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aData     .EQU    6          ;channel A data in or out
                                                                                                                                                                                                                                                                                                                                                                                                                                            +aCtl      .EQU    2          ;channel A control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bData     .EQU    4          ;channel B data in or out
                                                                                                                                                                                                                                                                                                                                                                                                                                            +bCtl      .EQU    0          ;channel B control
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; Bit numbers for control register RR0
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +rxBF      .EQU    0          ;1 = SCC receive buffer full
                                                                                                                                                                                                                                                                                                                                                                                                                                            +txBE      .EQU    2          ;1 = SCC send buffer empty
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; IWM base address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +dBase     .EQU    $DFE1FF    ;IWM base address (in variable IWM)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; Offsets from dBase
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph0L      .EQU    512*0      ;CA0 off (0)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph0H      .EQU    512*1      ;CA0 on (1)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph1L      .EQU    512*2      ;CA1 off (0)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph1H      .EQU    512*3      ;CA1 on (1)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph2L      .EQU    512*4      ;CA2 off (0)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph2H      .EQU    512*5      ;CA2 on (1)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph3L      .EQU    512*6      ;LSTRB off (low)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ph3H      .EQU    512*7      ;LSTRB on (high)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +mtrOff    .EQU    512*8      ;disk enable off
                                                                                                                                                                                                                                                                                                                                                                                                                                            +mtrOn     .EQU    512*9      ;disk enable on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +intDrive  .EQU    512*10     ;select internal drive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +extDrive  .EQU    512*11     ;select external drive
                                                                                                                                                                                                                                                                                                                                                                                                                                            +q6L       .EQU    512*12     ;Q6 off
                                                                                                                                                                                                                                                                                                                                                                                                                                            +q6H       .EQU    512*13     ;Q6 on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +q7L       .EQU    512*14     ;Q7 off
                                                                                                                                                                                                                                                                                                                                                                                                                                            +q7H       .EQU    512*15     ;Q7 on
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; Screen and sound addresses for 512K Macintosh (will also work
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; for 128K, since addresses wrap)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +screenLow   .EQU    $7A700    ;top left corner of main screen buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +soundLow    .EQU    $7FD00    ;main sound buffer (in variable SoundBase)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +pwmBuffer   .EQU    $7FD01    ;main disk speed buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ovlyRAM     .EQU    $600000   ;RAM start address when overlay is set
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ovlyScreen  .EQU    $67A700   ;screen start with overlay set
                                                                                                                                                                                                                                                                                                                                                                                                                                            +romStart    .EQU    $400000   ;ROM start address (in variable ROMBase)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Constants (Macintosh Plus Only)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; SCSI base addresses
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +scsiRd    .EQU    $580000    ;base address for read operations
                                                                                                                                                                                                                                                                                                                                                                                                                                            +scsiWr    .EQU    $580001    ;base address for write operations
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; SCSI offsets for DACK
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +dackRd    .EQU    $200       ;for use with sOCR and sIDR
                                                                                                                                                                                                                                                                                                                                                                                                                                            +dackWr    .EQU    $200       ;for use with sOCR and sIDR
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +; SCSI offsets to NCR 5380 register
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sCDR      .EQU    $00        ;Current SCSI Read Data (read)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sOCR      .EQU    $00        ;Output Data Register (write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sICR      .EQU    $10        ;Initiator Command Register (read/write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sMR       .EQU    $20        ;Mode Register (read/write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sTCR      .EQU    $30        ;Target Command Register (read/write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sCSR      .EQU    $40        ;Current SCSI Bus Status (read)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sSER      .EQU    $40        ;Select Enable Register (write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sBSR      .EQU    $50        ;Bus & Status Register (read)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sDMAtx    .EQU    $50        ;DMA Transmit Start (write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sIDR      .EQU    $60        ;Data input register (read)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sTDMArx   .EQU    $60        ;Start Target DMA receive (write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sRESET    .EQU    $70        ;Reset Parity/Interrupt (read)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +sIDMArx   .EQU    $70        ;Start Initiator DMA receive (write)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Variables
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +ROMBase      Base address of ROM
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SoundBase    Address of main sound buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SCCRd        SCC read base address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SCCWr        SCC write base address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +IWM          IWM base address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +VIA          VIA base address
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Exception Vectors
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Location    Purpose
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$00         Reset:  initial stack pointer (not a vector)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$04         Reset:  initial vector
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$08         Bus error
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$0C         Address error
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$10         Illegal instruction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$14         Divide by zero
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$18         CHK instruction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$1C         TRAPV instruction
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$20         Privilege violation
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$24         Trace interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$28         Line 1010 emulator
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$2C         Line 1111 emulator
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$30-$3B     Unassigned (reserved)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$3C         Uninitialized interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$40-$5F     Unassigned (reserved)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$60         Spurious interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$64         VIA interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$68         SCC interrupt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$6C         VIA+SCC vector (temporary)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$70         Interrupt switch
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$74         Interrupt switch + VIA
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$78         Interrupt switch + SCC
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$7C         Interrupt switch + VIA + SCC
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$80-$BF     TRAP instructions
                                                                                                                                                                                                                                                                                                                                                                                                                                            +$C0-$FF     Unassigned (reserved)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Further Reference:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +_______________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Device Manager
                                                                                                                                                                                                                                                                                                                                                                                                                                            +SCSI Manager
                                                                                                                                                                                                                                                                                                                                                                                                                                            +Vertical Retrace Manager
                                                                                                                                                                                                                                                                                                                                                                                                                                            +"Macintosh Family Hardware Reference"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +"Designing Cards and Drivers for the Macintosh II and Macintosh SE"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Valid HTML 4.01 TransitionalValid CSS!sourceforge.netCopyright © 2000-2020 Linux/m68k for Macintosh Project.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + \ No newline at end of file diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_leftbottom.gif b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_leftbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..56b6f0d44813846face52e8fbe348446612aa04c GIT binary patch literal 444 zcmZ?wbhEHb6k!ly_#(i-#lGuZfI!e<>eI{8=H}lQCwWy*48$E{`}ReS8v|D z`N)wYmoHy__wL=lfBzUr1d2ad7#SG^7<54TKz1^){!{p1bN({|@jrmD8=!*9Cdjhq znT1XvDL(&M<~W$k{{w2mNmSDw2%%`_FO~tD1~dGyP6M)O%tqaX2$!7yY;Z=%0H_{r zIL~H(^b literal 0 HcmV?d00001 diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_lefttop.gif b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_lefttop.gif new file mode 100644 index 0000000000000000000000000000000000000000..9865ec2f32c8a5e25b0e1df6d2e626eea10d5de9 GIT binary patch literal 444 zcmZ?wbhEHb6k!ly_#(i-#lGuZfI!e<>eI{8=H}lQCwWy*48$E{`}ReS8v|D z`N)wYmoHy__wL=lfBzUr1d2ad7#SG^7<54TKz1^){!=(?zyn1Z?1~HwPwD;#)e1LA%L={=Lg!~FxowE@XGi-4s-A|S(^CE#5C!v;Qq zK=B5s2vF7tsu3i@Y;=an0InElxKANSmLF#L872!PSsR678DuWMFxZ7~!zc3~%bsVJ lI}UO%90{BPv8@oMJ0aviiWDBem4X=jA0S+q(}kHBtO3*O#4!K> literal 0 HcmV?d00001 diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_rightbottom.gif b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_rightbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..60f37263bdb1c5dcfba4ccbf2b0e219f63b6c11b GIT binary patch literal 444 zcmZ?wbhEHb6k!ly_#(i-#lGuZfI!e<>eI{8=H}lQCwWy*48$E{`}ReS8v|D z`N)wYmoHy__wL=lfB*jf|Ia`QQ2fcl$jBhTpaaqbvXg=J--FLK=aJ9>D7yh7$oBz7 zwwJ*US#iG;RF?k-m{BZ)EPLKq1;y~oEN4&*mtjM)_xxi9Zf0b|W!MfQ8*XsmkO7k6 zJRFA&kPH`LJ#2tvxCF~#10J~H!2&!$F3fO#V-XM+YPgjJJBI?84>tX>Ov6T?90)yl cY;www<=7!8mxqDl$V4E!;S5AXn2Es}07~h~=l}o! literal 0 HcmV?d00001 diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_righttop.gif b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/curve_righttop.gif new file mode 100644 index 0000000000000000000000000000000000000000..b31ae262ee1793ae2ddd3d2455edb2bcc8d0986e GIT binary patch literal 444 zcmZ?wbhEHb6k!ly_#(i-#lGuZfI!e<>eI{8=H}lQCwWy*48$E{`}ReS8v|D z`N)wYmoHy__wL=lfB*jf|Ia`QQ2fcl$jBhTpaaqbvXg=Jp8^BNk%-5NbHs%)<=ahhc{Q05RMT8i34!A-)Ajh64qQC6En2|Jj5Q xrV^sXnF-=@mi=57?(K^P6rueaR6!@$mu}DFTliL4FHin$_)Sj literal 0 HcmV?d00001 diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/mac68k.css b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/mac68k.css new file mode 100644 index 0000000..5fc45fe --- /dev/null +++ b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/mac68k.css @@ -0,0 +1,71 @@ +/* $Id$ */ + +body { + font-family: sans-serif, verdana, arial, helvetica; + padding: 0em; + border-width: 0em; +} + +table.fullheight { + background-color: #c4c4c4; + height: 100%; +} + +.gray { + background-color: #c4c4c4; +} + +.white { + background-color: #ffffff; +} + +.nomargin { + margin: 0em; +} + +.bordertop { + background-color: #ffffff; + background-image: url("/gfx/border_top.gif"); + background-repeat: repeat; +} +.borderbottom { + background-color: #ffffff; + background-image: url("/gfx/border_bottom.gif"); + background-repeat: repeat; +} +.borderleft { + background-color: #ffffff; + background-image: url("/gfx/border_left.gif"); + background-repeat: repeat; +} +.borderright { + background-color: #ffffff; + background-image: url("/gfx/border_right.gif"); + background-repeat: repeat; +} + +td.submenu { + white-space: nowrap; +} + +a:link { text-decoration: none; font-weight: bold; color: #5555aa; } +a:visited { text-decoration: none; font-weight: bold; color: #222266; } +a:active { text-decoration: none; font-weight: bold; color: #7777ff; } +a:hover { text-decoration: none; font-weight: bold; color: #7777ff; } +a.active { text-decoration: none; font-weight: bold; color: #555555; } + +h1 { + font-size: xx-large; + font-weight: bold; +} +h2 { + font-size: x-large; + font-weight: bold; +} +h3 { + font-size: large; + font-weight: bold; +} +h4 { + font-weight: bold; +} diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/macpenguin.gif b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/macpenguin.gif new file mode 100644 index 0000000000000000000000000000000000000000..59752c1f71090f13f373f70d925ab02d314f9b6c GIT binary patch literal 2448 zcmc(f`%_bQ8pgj#PLh+5q$eRjKwuLvG+aVc4HUF$5+Y)V5(FvMO9N#UP-(Oj@zy3G zVhCO$B1AxXK*ey=V~fCg+Y`JYt=*tlBO|*385{8yg<9OY%<5m!XXbr>cz$^2`OGu( zE?JtKkeDL_so*tur|EYC10do77={r9;q!SSktE^M1gFzEJw5I9dT|^tEiLtUJX)>R z?RL9duI%h=jYcDr$@=^I6A}_qQc@%m36IA!o6S0%&b&!twOU0Ykw%kZwVF{B?d|Qw z>?nTKiD8(_X@7UaGw#7mK%WV4Gw9U=YaZ}mh_@G+#$gWzyE=f^$@e;8mmSVe0XCb> zg^Bvjum=azy-05A zs1A1b0(S@C^Z9zcK0iNy8hZ!(p8v0v;0;80pCIP_dfy44&gg-$%(SO`uaRIOnD-wz zXx&?R`0$~c+Wpmam9}HH`om-@rJ=EwZf|X~qn(y^thMEA`{~nN?JZ0n7VDx9j(7L; z+F30e7J{&mOaHpk>9});j3RCGk?U&tr#T6!F#WD-3GO1O2>%`M$Yan#Yl>K}@D&sHX(usOLPHz=Z z5P$Qe(r|Q65 zyh+TusuzskUfi8WeH;~I(8y6?;Oc?IeG($6vVjM3 zqT(|I5x$u-xE_AG*bmUcq=Q#{mm+eAlW>AhBt=L-UNSp!MgL}2v97UJzVte%7E2vT zbhY$lIIY!w?r%VQckXbFI-ZLY*IFM;H5$#W^&Gj=on?DSU zsfarLx#LyanNEP$6W33aOq>NVKXjbIbWY2TDp%uAc`9FeMD4h1#RiJF*z+{>W_`75e+E4vc176q-~s|KN8V2vr?yo2v4#U za8QRLRw7giu8{&XS^_!XQ~ns};!R4|)1oeM|w& zEV?zTY^M@lTI-%-3q_kZ((+ZRbG59z2NmSy0iDIL`Xlk{3z=n4rn-dITc=>vaFk+4 z?4m*%Mf(x6WKex?bNtZqQz6fX+`|J?_cP{NyGb9w>Z!5RMdH`@%eO7-ewd!N@n!3& zAl6r7=f%sU|6cbWXYcJ%W5_qIoFr!4qYc!ZTey+AV{$k|a(Uaxx+lA**viRomDCrZ zXY4Cr;{pytY^vf5%1a#zu zlG=TZ-MPKl$4!}s87P}DLb_8%8VE4fHs#K4KK@fUH^;y#mXSCv85i^?JQ(TJE}nm6 zFzYkJkGo$iKcLM4MX15&ZQ7=sAGMUl8@l)ZE-o-+3^#{0!F0yQP@o8BEV`k@D)8-^ z@%oALue%BiW1N+lO0Md&%aeB*Un!#vo<{q;+Y3&wszHAaTQjYg9DGjU?K=MAVno-2 zKrvLh4`T0f8wZDQ&T4qSSiHu-w{B5258sjxXu*hpqVO6%$R?5g z2gza+D#_HS4AQK3U*q~wM|gtP6m(HrHy?e(sM7FG=VkaY+&F6;FbPV(W|NQuEUjcu z(m0mKoG59A&eoehO>xs>@Sk&N}ot*{fml$T8k*$;sP zbJ!?tj?Q_Y3Y`fl47J01><-p?Nm=poN!eq@1Vi6e7Ni+FhO9L(8oegoK6__~SfM%@ z2`L}}WwoC|eti4T_o|GA%KU=(4Ofk`H~mKbew?LBOC%j{UV$X*9MTI>w@jga9rC+! zhQC1FK-SWtB{3SG^JN3{bF~X?(O~9gYIR*#?e1d{AAct^mG>r)|G$+OaLcqmKQ8IZ+mf&ZT6oaKN@BKl__Sl#5T>x1?T3 zoqEWTBT6)CiO=~p)d&19P6~ zH0;p)7A)P~qWj#)tP8)aew$4$%ALcpVn#uXgKN|n=|u6#P(~9?t?Al3|6?H3c2Of` ilZXu^ssj{vQq8|}GPR^d_02<3W?y>&vqA>I{Qm=RT(6M; literal 0 HcmV?d00001 diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/sflogo.png b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/sflogo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5db80bded04faa2432091240d260a0ed7d3dad9 GIT binary patch literal 948 zcmV;l155mgP)RroX=-Y2Z*R4=we)--L`6ma{rvp={Pl$}_@`;Fu(0m#?vj&}%*@Plb9429 zDg55XQBqQVetw&roZQ^p{pQubzrXmban#h*#KpyggoJ>Bf#T!ikB^Vh(b1NcmZPMk zWoKvK-`}2}pXcZ2OH52wS6BD<_ww@cV`OA_cz9i2UVMCf=H}+>>+ANBL;v^kdV71x z$;n4ZNd4v0`ooy|yp8?q-Tc_S_nTDu$)fqQe*4U*=rS$p00087Nkl+$*d z^%~r#u6F-$Ew1$Qu5)RhMZT|^c42bET}$6COm4WH)fstfQ`^UJ6l~@j1B1bqPnUi0 zXk}L_#(HYoG;~3wTna>EE{cl=V`r8u0bD{zHNXJOq|TktgC!9zA80xO5FV(PxKtQ2L6Z_#8~qG|h%=(3r*)1W)|hF`Fq>Rm}w>I7|;2 zKXCBtY7NloYT7TcuT<^$2sTf^X)R-QKfs}37+VhB<#|3j1v|`+FllZ|k+ac)p?2lL zYmxC=7rE`u*6m1Dns8)6q6!~vZuNxQJTpJHdb0ObW6nA-0jhn2NGJJ5 zA*J((pNf7zoEs8GSxClqk6$VHAcZO{;~62r1Psz#AZ~6on=`p!4*me1g9vk0o4B@M zIaT${5o)`A?z5yHqd%t((!aV7rN8|;tufhd@YjI)y{QQ0m?oBuSYyAeA W3PZcTU(@XX0000W4Z03?%u3dP|Eu|>sei<{2nR^P0$e6X%OQf1axrJ=gh=^QfZ*r+K zX6~jC5|Uf-x*UteD0=bk{V(3Ez&M*K74Y|8`!Ua}RLIeVV$U;RGWyMt$z#4}n<>lqo)YP=pr3^G>jbL&ndJ3AF znmRf<#-~r2nVH!dt2mmfxmswToUMG|$1WhWF1x`Zz4fDg4Q@D|BVIV37-ED%p*-B2 zy**sLyu1Pe0wOLVLqkJxI2;idOdt^A%g<#)OBBLisNl*qqAHF? zSN=h)(!D`9iu>!#?OM~s*OsJu_=855G^STJ%l`@cBDpn$))8LV8TGt7rmQ!is*fxJ z$_Ib~ago#`%7tfO#ZqE#%r(j_^^zk@9!8zXy>Xr#YhHB6ifMb4?V|mhh-pQ^+T3+G zfhPu|&yL=*7*DjyPQjIuY#3?q+6;&Kd%lg?2<8(co9a@UgR3hFYbqyp7NDjd!3SQT z2g@;|)m{?}@9A3Kxjf_o&2_oh{d=Y7T!a6@+W>C!C4NWnb~kqKeP~ir5`{vcQmK_? z&l+l|bUMAhzMjoylNbZZuLjfVhabNgAvcXuo5yG^<3()~r5#@?dZwy-r(gGfZ5*6y zZ*TAG>l+yvX&qhco>=Oi;eMQ3omyVs=XNhHE^@itzgIVxe{8MtfARVJ^`ASNzkcuS z?Fk}r8FmJOQfVIhxR&+?n}>tqJa8<4j@xae5)sa{nO7B(XX1RW6P{)v!N1+3IiF z?rTh64#s?pBpL1)(~Z2+iJ~cOy;R5(aVoJkfpBtEOy&xRuq{KN54qJTJyjIZ`g-$h z&eMbfnANA6jdPk1dRDq=P*6xt>&fo*OwqMsO6p9l>s<=EDn<1Z5H{*OhM6sKUozJ* zZcx+KS@@!!2R6+T*-)G;S!%O*q`s8aLm8ya*AW;k^w~ZZU?RH? z!B4CbO8q3O-*b{zHpxBAg?GX$H)G=^V?oi^TT&1$cr4^|6w~8K%c-2tG>Xub-8>hP zzI>cz6(#Q%e<*oocEZ=sg-U~k_nO68gly? ztdD;@rP?evH6=08)u}FDSo?%CdE3IkZZ5` zWac#HOKJA=m)Vw871;#;D`w4ActE4^OEO^-A=FAU2goAuCS6MbQHdZgCv{JaFPsjl2I&NtL zfkDeSACBV|$XW@-sP;j+@}i$!%f!-H5fy^p0i56{dxmWg>0c_RB|-oI literal 0 HcmV?d00001 diff --git a/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/vcss.gif b/resources/Linux_m68k for Macintosh - Mac Plus hardware_files/vcss.gif new file mode 100644 index 0000000000000000000000000000000000000000..020c75a73a8e73243d762f000ab6e47c24f2418a GIT binary patch literal 1547 zcmd7R`#;lr9Ki9*?w3;lv0J2Bx4B zfYsI2IB^%wQ|b^=9eA;6X#CyG%nXOasjjY;N~Nu>t#zv5;=2Pml~3q&Iso9(rArhF zW#-+I`TkPnqw$Q43>*$;P}Jwnt!FZsF&DC9 zV`F=Jdslm-j+JzRCoK67CH z5di}r0erbM`0^ouUg1&sf~4e>%c;V&E9uDzSy@z&E6%%mEnh+_D3tzEBrBGAdf14v zCFK?6@~Y|@+OMTIb1LuLscmekE4i7_a95fCTYJ^5Rz=&x+>XAYuKFG|=zmu5SkwT6 z;9>-X$U{P7Z^m*_Xfy_3wZzY#Y07~17%~?(A=Vjx^9n^_k}>8G;{5#ezR&JLiol!r zV9T6U7=+Y%iSPq{BZ*PAI%K~p{ynQ}x zLbLsZn8sIJRDs_zJ@c^LTjsXe*=pRCy z*I*Qh6~2z(v*w2-PvKLShoNT+KPfYa&RnOIvtub^L%2*|qn(=j zEQLkVc?As)_Rt3+*D<#4w+ISwnxrAZ78bshhCgxn0Ca11DpXbsu=tRNkQ-2FdRAzb zM@)!3%cGJDnVw@s1R0;x6TcB0{UdT|@T64a6&9LjMk9d-*cEQ~6^rjJ47~4+e1MAv zLy}cGVX^8XK@4#NR_JQ26pCKE@ALjq#{|=#W-_dA#K5KpV$qhY0ey*As&FH5k6B!| zqrR`j3%4E}R^q|G+<^g@WODKLJ7e3}La%9IJDq(%ofYsA!}|_Km%xo6JvP3LRXPxo zQ$lk{+!T4D9O3WinLO?y17>(NoHAB2RUuBBU~h{GeO(%Q)e8jKW?$GIUF);_O~&@V z9ec|2)q8tl8l=q61^La*7vy*DabI@p51r20(r9-*enw~buv<*&^sb3&>)my-+1BO7 zx3l+G*PG8N5JoX`N{lH5PI{eF+or;M(&yVrIzch>9pvN7wgmqrBIYX(tuH)a00yXl z@|6ep508w@EKzn&t~hlqZNXaFNl0jo2mjx+leJ|?KJJDFPD%3HTHlj!%?n zUx)Nbq-zif80Zj804qieW-eUI);bGe40H2~V71NSD+ThHbxh z$HPgdsce@GnB!UX(FZXElA|knQW{4h(Rh(C?T(|U=)=xnBa$4txy^4ko0*vMLJ5B1cI f%k==yiB~9# + + +PS/2 Keyboard - OSDev Wiki + + + + + + + + + + + + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2 Keyboard

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            From OSDev Wiki
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Jump to: navigation, + search +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Contents

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Overview

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 Keyboard is a device that talks to a PS/2 controller using serial communication. + Ideally, each different type of PS/2 controller driver should provide +some sort of standard/simple "send byte/receive byte" interface, and the + PS/2 Keyboard driver would use this interface without caring about +lower level details (like what type of PS/2 controller the device is +plugged into). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 Keyboard accepts commands and sends responses to those +commands, and also sends scan codes indicating when a key was pressed or + released. Keep in mind that these scan codes (from the tables below) +may be altered (i.e. translated) by the PS/2 controller, depending on +the controller's settings. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Commands

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            A PS/2 Keyboard accepts many types of commands. A command is one +byte. Some commands have data byte/s which must be sent after the +command byte. The keyboard typically responds to a command by sending +either an "ACK" (to acknowledge the command) or a "Resend" (to say +something was wrong with the previous command) back. Don't forget to +wait between the command, the data and the response from keyboard. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The commands that a PS/2 Keyboard accepts are: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Command Byte + Data Byte/s + Meaning + Response +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xED + LED states: + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Bit + Use +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0 + ScrollLock +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1 + NumberLock +
                                                                                                                                                                                                                                                                                                                                                                                                                                            2 + CapsLock +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Other bits may be used in international keyboards for other +purposes (e.g. a Japanese keyboard might use bit 4 for a "Kana mode" +LED). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Set LEDs + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xEE + None + Echo (for diagnostic purposes, and useful for device removal detection) + 0xEE (Echo) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0 + Sub-command: + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Value + Use +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0 + Get current scan code set +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1 + Set scan code set 1 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            2 + Set scan code set 2 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            3 + Set scan code set 3 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Get/set current scan code set + 0xFA (ACK) or 0xFE (Resend) if scan code is being set; 0xFA (ACK) +then the scan code set number, or 0xFE (Resend) if you're getting the +scancode. If getting the scancode the table indicates the value that +identify each set: + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Value + Use +
                                                                                                                                                                                                                                                                                                                                                                                                                                            43 + Scan code set 1 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            41 + Scan code set 2 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            3f + Scan code set 3 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF2 + None + Identify keyboard + 0xFA (ACK) followed by none or more ID bytes (see "Detecting Device Types") +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF3 + Typematic byte: + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Bit/s + Meaning +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0 to 4 + Repeat rate (00000b = 30 Hz, ..., 11111b = 2 Hz) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            5 to 6 + Delay before keys repeat (00b = 250 ms, 01b = 500 ms, 10b = 750 ms, 11b = 1000 ms) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            7 + Must be zero +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Set typematic rate and delay + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF4 + None + Enable scanning (keyboard will send scan codes) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF5 + None + Disable scanning (keyboard won't send scan codes) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: May also restore default parameters +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF6 + None + Set default parameters + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF7 + None + Set all keys to typematic/autorepeat only (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF8 + None + Set all keys to make/release (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF9 + None + Set all keys to make only (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFA + None + Set all keys to typematic/autorepeat/make/release (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFB + Scancode for key + Set specific key to typematic/autorepeat only (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFC + Scancode for key + Set specific key to make/release (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFD + Scancode for key + Set specific key to make only (scancode set 3 only) + 0xFA (ACK) or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFE + None + Resend last byte + Previously sent byte or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFF + None + Reset and start self-test + 0xAA (self-test passed), 0xFC or 0xFD (self test failed), or 0xFE (Resend) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Special Bytes

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The keyboard sends bytes to the system. Some of these bytes have +special meaning (e.g. responses from the commands above). The bytes the +keyboard may send are: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Response Byte + Meaning +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x00 + Key detection error or internal buffer overrun +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAA + Self test passed (sent after "0xFF (reset)" command or keyboard power up) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xEE + Response to "0xEE (echo)" command +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFA + Command acknowledged (ACK) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFC and 0xFD + Self test failed (sent after "0xFF (reset)" command or keyboard power up) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFE + Resend (keyboard wants controller to repeat last command it sent) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xFF + Key detection error or internal buffer overrun +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            All other bytes sent by the keyboard are scan codes, where interpretation depends on the currently selected scan code set. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Driver Model

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Command Queue and State Machine

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Commands must be sent one at a time (e.g. if your driver is interrupt + driven, you can't start sending a command within the IRQ handler +because code outside the IRQ handler may be in the middle of sending a +command). The command isn't completed until you've received an ACK for +it. For example, if you send a command and the keyboard responds with +"0xFE (resend)" then you have to send the command again (possibly +limited to 3 retries before you give up and assume the keyboard doesn't +support the command you're sending or there's been a hardware failure). +Finally, sometimes you want to send several commands at once. For +example, you might have a "reinitialise()" function that sets the scan +code set, sets the typematic byte, sets the LEDs and enables scanning. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The simplest way to achieve this is for the driver to maintain a +queue of commands. When you add a command to the queue, if the queue is +empty you start sending the command; otherwise you append the command to + the queue. When you receive an "0xFA (ACK)" from the keyboard you +discard the command at the head of the queue and start sending the next +command in the queue (if any). If you receive an "0xFE (Resend)" from +the keyboard you can resend the command at the head of the queue. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The remainder of the driver should be a kind of state machine. +The state machine moves into a different state when some commands are +successfully completed, and when various bytes are received from the +keyboard. For example, the driver might be in a default state and +receive a break code that puts it into a "waiting for scan code after +receiving break code" state. Then it might receive the first byte of a +multi-byte scan code and shift to a "waiting for second byte of scan +code after receiving break code" state. Finally it might receive the +second/last byte of the scan code and then switch back to the default +state. +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan Code Sets, Scan Codes and Key Codes

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            A scan code set is a set of codes that determine when a key is +pressed or repeated, or released. There are 3 different sets of scan +codes. The oldest is "scan code set 1", the default is "scan code set +2", and there is a newer (more complex) "scan code set 3". Note: +Normally on PC compatible systems the keyboard itself uses scan code set + 2 and the keyboard controller translates this into scan code set 1 for +compatibility. See "8042"_PS/2_Controller for more information about this translation. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Modern keyboards should support all three scan code sets, however + some don't. Scan code set 2 (the default) is the only scan code set +that is guaranteed to be supported. In theory (I haven't tried it) it +should be possible to attempt to set scan code set 1 or scan code set 3, + and then ask the keyboard which scan code it is currently using and see + if it actually is using the requested scan code set. In this way it may + be possible to determine which scan code sets the keyboard does +support. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan codes themselves are sequences of one or more bytes. In some + cases the sequence can be as many as 6 bytes (e.g. the Pause/Break key +in scan code set 1 +generates the sequence 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5 when pressed). + This situation isn't really ideal. In general (for later processing) +you want to convert these "one or more byte sequences" into a single +integer that uniquely identifies a specific key, that can be used +effectively in things like lookup tables (without having sparsely used +"many GiB" lookup tables). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            There is no standard for "key codes" - it's something you have to + make up or invent for your OS. I personally like the idea of having an +8-bit key code where the highest 3 bits determine which row on the +keyboard and the lowest 5 bits determine which column (essentially, the +keyboard is treated as a grid of up to 8 rows and up to 32 columns of +keys). Regardless of what you choose to use for your key codes, it +should be something that is used by all keyboard drivers (including USB +Keyboards) and could possibly also be used for other input devices (e.g. + left mouse button might be treated as "key code 0xF1"). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Basically, when the keyboard driver's state machine knows it has +received a complete scan code, the next step is to convert the "one or +more byte" scan code into a key code. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Key Codes, Key States and Key Mappings

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Once you've got key codes, then next step is to keep track of which +keys are currently being pressed. Imagine a computer game that uses the +"WASD" keys for player movement - when the 'A' key is being pressed the +player rotates clockwise. How does the game know if the 'A' key is +currently being pressed? For this you'd want an array of flags, where +each flag corresponds to a key code. There is a hidden bonus here - the +keyboard driver itself can use the same "array of flags" to determine if + a shift key, control key, alt key, etc is down, which can be quite +useful when trying to convert the key code into an actual ASCII +character or Unicode code point. For example, if the user presses the +'a' key then it might correspond to 'a' or 'A' (depending on capslock +state and whether or not a shift key is being held down at the time) or +might not correspond to a valid character at all (e.g. "control-a" or +"alt-a"). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Also note that (for example) a "WASD" game doesn't care if the +keys are 'W', 'A', 'S' and 'D'. The game wants to know about keys in a +specific "T-shaped" pattern on the left of the keyboard. If the keyboard + happens to be something different, then the keys in the same location +may be completely different (e.g. they would be '<', 'A', 'O' and 'E' + keys on a Dvorak keyboard). This helps to explain my preference of +having an 8-bit key code where the highest 3 bits determine which row on + the keyboard and the lowest 5 bits determine which column (it's easy +for a game to ask about the state of the third key on the left of the +third row). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Once you're able to keep track of which keys are currently being +pressed, the next step is to (attempt to) convert the key into an ASCII +character or Unicode code point. At this point you need to know what +type of keyboard the user has - is it "US QWERTY", or "French AZERTY", +some form of Dvorak, or perhaps it's Arabic. To handle many different +keyboard layouts, the keyboard driver needs to use tables to convert key + codes into ASCII characters or Unicode code points; so that you only +need to load a different "Key Mapping" table to support different +keyboard layouts. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            However, it's not quite that simple. Different keyboard layouts +can have different meta keys, different status LEDs, etc. The Key +Mapping table has to sort these differences out too. This is why you +don't want to detect if the keyboard LEDs have changed earlier, but want + to send the "set LEDs" command (if necessary) *after* you've found the +entry for the key code in your key map table. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The final step of processing is to combine all relevant +information into some sort of "keypress packet" structure, and send it +to whomever (e.g. GUI). The entire "keypress packet" might include the +following: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Unicode code point (if applicable) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Key code +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Pressed/released flag +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Various other key states (shift, alt, control, etc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Various "toggle" states (CapsLock, ScrollLock, NumberLock, etc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan Code Sets

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            As there are 3 different scan code sets, there are 3 different tables + (one for each scan code set). Some of the scan codes correspond to +extra keys that have been added over time and have become "relatively +standard". To help keep track scan codes have been categorized and +tagged in the tables below. The tags used are: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Tag + Meaning +
                                                                                                                                                                                                                                                                                                                                                                                                                                            (keypad) + A key that is on the numerics keypad (typically found on the right hand side of the keyboard). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            (ACPI) + A key that is part of the "ACPI" group of keys (typically found +near the top of the keyboard). A lot of modern keyboards don't actually +have these keys (if I remember right, they were fashionable in the late +1990's but have become less common since). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: Don't let the name fool you - these keys have nothing to do +with ACPI at all and do behave like any other normal key (but could be +useful for an OS that supports power management). +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            (multimedia) + A key that is part of the multimedia group of keys (typically found + near the top of the keyboard). A lot of modern keyboards do have at +least some of these keys. Some of these keys are intended to be used for + media players (volume control, play/pause, next track, previous track, +etc), some are intended for web browsing (previous web page, next web +page, refresh, favourites/bookmarks, etc), and and some are intended for + launching applications (e.g. starting an email client, starting a +calculator, opening "my computer", etc). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan Code Set 1

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The following table shows which scan codes correspond to which keys +when using scan code set 1 (for a "US QWERTY" keyboard only): +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note that scancodes with extended byte (E0) generates two +different interrupts: the first containing the E0 byte, the second +containing the scancode +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan code + Key + Scan code + Key + Scan code + Key + Scan code + Key +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x01 + escape pressed + 0x02 + 1 pressed + 0x03 + 2 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x04 + 3 pressed + 0x05 + 4 pressed + 0x06 + 5 pressed + 0x07 + 6 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x08 + 7 pressed + 0x09 + 8 pressed + 0x0A + 9 pressed + 0x0B + 0 (zero) pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x0C + - pressed + 0x0D + = pressed + 0x0E + backspace pressed + 0x0F + tab pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x10 + Q pressed + 0x11 + W pressed + 0x12 + E pressed + 0x13 + R pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x14 + T pressed + 0x15 + Y pressed + 0x16 + U pressed + 0x17 + I pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x18 + O pressed + 0x19 + P pressed + 0x1A + [ pressed + 0x1B + ] pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x1C + enter pressed + 0x1D + left control pressed + 0x1E + A pressed + 0x1F + S pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x20 + D pressed + 0x21 + F pressed + 0x22 + G pressed + 0x23 + H pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x24 + J pressed + 0x25 + K pressed + 0x26 + L pressed + 0x27 + ; pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x28 + ' (single quote) pressed + 0x29 + ` (back tick) pressed + 0x2A + left shift pressed + 0x2B + \ pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x2C + Z pressed + 0x2D + X pressed + 0x2E + C pressed + 0x2F + V pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x30 + B pressed + 0x31 + N pressed + 0x32 + M pressed + 0x33 + , pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x34 + . pressed + 0x35 + / pressed + 0x36 + right shift pressed + 0x37 + (keypad) * pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x38 + left alt pressed + 0x39 + space pressed + 0x3A + CapsLock pressed + 0x3B + F1 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x3C + F2 pressed + 0x3D + F3 pressed + 0x3E + F4 pressed + 0x3F + F5 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x40 + F6 pressed + 0x41 + F7 pressed + 0x42 + F8 pressed + 0x43 + F9 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x44 + F10 pressed + 0x45 + NumberLock pressed + 0x46 + ScrollLock pressed + 0x47 + (keypad) 7 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x48 + (keypad) 8 pressed + 0x49 + (keypad) 9 pressed + 0x4A + (keypad) - pressed + 0x4B + (keypad) 4 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x4C + (keypad) 5 pressed + 0x4D + (keypad) 6 pressed + 0x4E + (keypad) + pressed + 0x4F + (keypad) 1 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x50 + (keypad) 2 pressed + 0x51 + (keypad) 3 pressed + 0x52 + (keypad) 0 pressed + 0x53 + (keypad) . pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0x57 + F11 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x58 + F12 pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x81 + escape released + 0x82 + 1 released + 0x83 + 2 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x84 + 3 released + 0x85 + 4 released + 0x86 + 5 released + 0x87 + 6 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x88 + 7 released + 0x89 + 8 released + 0x8A + 9 released + 0x8B + 0 (zero) released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x8C + - released + 0x8D + = released + 0x8E + backspace released + 0x8F + tab released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x90 + Q released + 0x91 + W released + 0x92 + E released + 0x93 + R released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x94 + T released + 0x95 + Y released + 0x96 + U released + 0x97 + I released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x98 + O released + 0x99 + P released + 0x9A + [ released + 0x9B + ] released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x9C + enter released + 0x9D + left control released + 0x9E + A released + 0x9F + S released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xA0 + D released + 0xA1 + F released + 0xA2 + G released + 0xA3 + H released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xA4 + J released + 0xA5 + K released + 0xA6 + L released + 0xA7 + ; released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xA8 + ' (single quote) released + 0xA9 + ` (back tick) released + 0xAA + left shift released + 0xAB + \ released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xAC + Z released + 0xAD + X released + 0xAE + C released + 0xAF + V released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xB0 + B released + 0xB1 + N released + 0xB2 + M released + 0xB3 + , released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xB4 + . released + 0xB5 + / released + 0xB6 + right shift released + 0xB7 + (keypad) * released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xB8 + left alt released + 0xB9 + space released + 0xBA + CapsLock released + 0xBB + F1 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xBC + F2 released + 0xBD + F3 released + 0xBE + F4 released + 0xBF + F5 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xC0 + F6 released + 0xC1 + F7 released + 0xC2 + F8 released + 0xC3 + F9 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xC4 + F10 released + 0xC5 + NumberLock released + 0xC6 + ScrollLock released + 0xC7 + (keypad) 7 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xC8 + (keypad) 8 released + 0xC9 + (keypad) 9 released + 0xCA + (keypad) - released + 0xCB + (keypad) 4 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xCC + (keypad) 5 released + 0xCD + (keypad) 6 released + 0xCE + (keypad) + released + 0xCF + (keypad) 1 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD0 + (keypad) 2 released + 0xD1 + (keypad) 3 released + 0xD2 + (keypad) 0 released + 0xD3 + (keypad) . released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xD7 + F11 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xD8 + F12 released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x10 + (multimedia) previous track pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x19 + (multimedia) next track pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x1C + (keypad) enter pressed + 0xE0, 0x1D + right control pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x20 + (multimedia) mute pressed + 0xE0, 0x21 + (multimedia) calculator pressed + 0xE0, 0x22 + (multimedia) play pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x24 + (multimedia) stop pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0x2E + (multimedia) volume down pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x30 + (multimedia) volume up pressed + + + 0xE0, 0x32 + (multimedia) WWW home pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x35 + (keypad) / pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x38 + right alt (or altGr) pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x47 + home pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x48 + cursor up pressed + 0xE0, 0x49 + page up pressed + + + 0xE0, 0x4B + cursor left pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x4D + cursor right pressed + + + 0xE0, 0x4F + end pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x50 + cursor down pressed + 0xE0, 0x51 + page down pressed + 0xE0, 0x52 + insert pressed + 0xE0, 0x53 + delete pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x5B + left GUI pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x5C + right GUI pressed + 0xE0, 0x5D + "apps" pressed + 0xE0, 0x5E + (ACPI) power pressed + 0xE0, 0x5F + (ACPI) sleep pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x63 + (ACPI) wake pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x65 + (multimedia) WWW search pressed + 0xE0, 0x66 + (multimedia) WWW favorites pressed + 0xE0, 0x67 + (multimedia) WWW refresh pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x68 + (multimedia) WWW stop pressed + 0xE0, 0x69 + (multimedia) WWW forward pressed + 0xE0, 0x6A + (multimedia) WWW back pressed + 0xE0, 0x6B + (multimedia) my computer pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x6C + (multimedia) email pressed + 0xE0, 0x6D + (multimedia) media select pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x90 + (multimedia) previous track released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x99 + (multimedia) next track released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x9C + (keypad) enter released + 0xE0, 0x9D + right control released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xA0 + (multimedia) mute released + 0xE0, 0xA1 + (multimedia) calculator released + 0xE0, 0xA2 + (multimedia) play released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xA4 + (multimedia) stop released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0xAE + (multimedia) volume down released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xB0 + (multimedia) volume up released + + + 0xE0, 0xB2 + (multimedia) WWW home released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0xB5 + (keypad) / released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xB8 + right alt (or altGr) released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xC7 + home released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xC8 + cursor up released + 0xE0, 0xC9 + page up released + + + 0xE0, 0xCB + cursor left released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0xCD + cursor right released + + + 0xE0, 0xCF + end released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xD0 + cursor down released + 0xE0, 0xD1 + page down released + 0xE0, 0xD2 + insert released + 0xE0, 0xD3 + delete released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xDB + left GUI released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xDC + right GUI released + 0xE0, 0xDD + "apps" released + 0xE0, 0xDE + (ACPI) power released + 0xE0, 0xDF + (ACPI) sleep released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xE3 + (ACPI) wake released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0xE5 + (multimedia) WWW search released + 0xE0, 0xE6 + (multimedia) WWW favorites released + 0xE0, 0xE7 + (multimedia) WWW refresh released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xE8 + (multimedia) WWW stop released + 0xE0, 0xE9 + (multimedia) WWW forward released + 0xE0, 0xEA + (multimedia) WWW back released + 0xE0, 0xEB + (multimedia) my computer released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xEC + (multimedia) email released + 0xE0, 0xED + (multimedia) media select released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x2A, 0xE0, 0x37 + print screen pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xB7, 0xE0, 0xAA + print screen released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5 + pause pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +Note: There is no scan code for "pause key released" (it behaves as if it is released as soon as it's pressed) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan Code Set 2

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The following table shows which "make" scan codes correspond to which + keys when using scan code set 2 (for a "US QWERTY" keyboard only): +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan code + Key + Scan code + Key + Scan code + Key + Scan code + Key +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x01 + F9 pressed + + + 0x03 + F5 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x04 + F3 pressed + 0x05 + F1 pressed + 0x06 + F2 pressed + 0x07 + F12 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x09 + F10 pressed + 0x0A + F8 pressed + 0x0B + F6 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x0C + F4 pressed + 0x0D + tab pressed + 0x0E + ` (back tick) pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x11 + left alt pressed + 0x12 + left shift pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x14 + left control pressed + 0x15 + Q pressed + 0x16 + 1 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0x1A + Z pressed + 0x1B + S pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x1C + A pressed + 0x1D + W pressed + 0x1E + 2 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x21 + C pressed + 0x22 + X pressed + 0x23 + D pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x24 + E pressed + 0x25 + 4 pressed + 0x26 + 3 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x29 + space pressed + 0x2A + V pressed + 0x2B + F pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x2C + T pressed + 0x2D + R pressed + 0x2E + 5 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x31 + N pressed + 0x32 + B pressed + 0x33 + H pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x34 + G pressed + 0x35 + Y pressed + 0x36 + 6 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0x3A + M pressed + 0x3B + J pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x3C + U pressed + 0x3D + 7 pressed + 0x3E + 8 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x41 + , pressed + 0x42 + K pressed + 0x43 + I pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x44 + O pressed + 0x45 + 0 (zero) pressed + 0x46 + 9 pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x49 + . pressed + 0x4A + / pressed + 0x4B + L pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x4C + ; pressed + 0x4D + P pressed + 0x4E + - pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0x52 + ' pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x54 + [ pressed + 0x55 + = pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x58 + CapsLock pressed + 0x59 + right shift pressed + 0x5A + enter pressed + 0x5B + ] pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x5D + \ pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +   + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0x66 + backspace pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0x69 + (keypad) 1 pressed + + + 0x6B + (keypad) 4 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x6C + (keypad) 7 pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x70 + (keypad) 0 pressed + 0x71 + (keypad) . pressed + 0x72 + (keypad) 2 pressed + 0x73 + (keypad) 5 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x74 + (keypad) 6 pressed + 0x75 + (keypad) 8 pressed + 0x76 + escape pressed + 0x77 + NumberLock pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x78 + F11 pressed + 0x79 + (keypad) + pressed + 0x7A + (keypad) 3 pressed + 0x7B + (keypad) - pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x7C + (keypad) * pressed + 0x7D + (keypad) 9 pressed + 0x7E + ScrollLock pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0x83 + F7 pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x10 + (multimedia) WWW search pressed + 0xE0, 0x11 + right alt pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x14 + right control pressed + 0xE0, 0x15 + (multimedia) previous track pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x18 + (multimedia) WWW favourites pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x1F + left GUI pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x20 + (multimedia) WWW refresh pressed + 0xE0, 0x21 + (multimedia) volume down pressed + + + 0xE0, 0x23 + (multimedia) mute pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x27 + right GUI pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x28 + (multimedia) WWW stop pressed + + + + + 0xE0, 0x2B + (multimedia) calculator pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x2F + apps pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x30 + (multimedia) WWW forward pressed + + + 0xE0, 0x32 + (multimedia) volume up pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x34 + (multimedia) play/pause pressed + + + + + 0xE0, 0x37 + (ACPI) power pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x38 + (multimedia) WWW back pressed + + + 0xE0, 0x3A + (multimedia) WWW home pressed + 0xE0, 0x3B + (multimedia) stop pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0x3F + (ACPI) sleep pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x40 + (multimedia) my computer pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x48 + (multimedia) email pressed + + + 0xE0, 0x4A + (keypad) / pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x4D + (multimedia) next track pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x50 + (multimedia) media select pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0x5A + (keypad) enter pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0x5E + (ACPI) wake pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x69 + end pressed + + + 0xE0, 0x6B + cursor left pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x6C + home pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x70 + insert pressed + 0xE0, 0x71 + delete pressed + 0xE0, 0x72 + cursor down pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x74 + cursor right pressed + 0xE0, 0x75 + cursor up pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0x7A + page down pressed + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0x7D + page up pressed + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x01 + F9 released + + + 0xF0, 0x03 + F5 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x04 + F3 released + 0xF0, 0x05 + F1 released + 0xF0, 0x06 + F2 released + 0xF0, 0x07 + F12 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x09 + F10 released + 0xF0, 0x0A + F8 released + 0xF0, 0x0B + F6 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x0C + F4 released + 0xF0, 0x0D + tab released + 0xF0, 0x0E + ` (back tick) released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x11 + left alt released + 0xF0, 0x12 + left shift released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x14 + left control released + 0xF0, 0x15 + Q released + 0xF0, 0x16 + 1 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xF0, 0x1A + Z released + 0xF0, 0x1B + S released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x1C + A released + 0xF0, 0x1D + W released + 0xF0, 0x1E + 2 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x21 + C released + 0xF0, 0x22 + X released + 0xF0, 0x23 + D released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x24 + E released + 0xF0, 0x25 + 4 released + 0xF0, 0x26 + 3 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x29 + space released + 0xF0, 0x2A + V released + 0xF0, 0x2B + F released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x2C + T released + 0xF0, 0x2D + R released + 0xF0, 0x2E + 5 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x31 + N released + 0xF0, 0x32 + B released + 0xF0, 0x33 + H released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x34 + G released + 0xF0, 0x35 + Y released + 0xF0, 0x36 + 6 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xF0, 0x3A + M released + 0xF0, 0x3B + J released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x3C + U released + 0xF0, 0x3D + 7 released + 0xF0, 0x3E + 8 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x41 + , released + 0xF0, 0x42 + K released + 0xF0, 0x43 + I released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x44 + O released + 0xF0, 0x45 + 0 (zero) released + 0xF0, 0x46 + 9 released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x49 + . released + 0xF0, 0x4A + / released + 0xF0, 0x4B + L released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x4C + ; released + 0xF0, 0x4D + P released + 0xF0, 0x4E + - released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xF0, 0x52 + ' released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x54 + [ released + 0xF0, 0x55 + = released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x58 + CapsLock released + 0xF0, 0x59 + right shift released + 0xF0, 0x5A + enter released + 0xF0, 0x5B + ] released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x5D + \ released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +   + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xF0, 0x66 + backspace released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xF0, 0x69 + (keypad) 1 released + + + 0xF0, 0x6B + (keypad) 4 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x6C + (keypad) 7 released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x70 + (keypad) 0 released + 0xF0, 0x71 + (keypad) . released + 0xF0, 0x72 + (keypad) 2 released + 0xF0, 0x73 + (keypad) 5 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x74 + (keypad) 6 released + 0xF0, 0x75 + (keypad) 8 released + 0xF0, 0x76 + escape released + 0xF0, 0x77 + NumberLock released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x78 + F11 released + 0xF0, 0x79 + (keypad) + released + 0xF0, 0x7A + (keypad) 3 released + 0xF0, 0x7B + (keypad) - released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xF0, 0x7C + (keypad) * released + 0xF0, 0x7D + (keypad) 9 released + 0xF0, 0x7E + ScrollLock released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xF0, 0x83 + F7 released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0x12, 0xE0, 0x7C + print screen pressed + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x10 + (multimedia) WWW search released + 0xE0, 0xF0, 0x11 + right alt released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x14 + right control released + 0xE0, 0xF0, 0x15 + (multimedia) previous track released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x18 + (multimedia) WWW favourites released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xF0, 0x1F + left GUI released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x20 + (multimedia) WWW refresh released + 0xE0, 0xF0, 0x21 + (multimedia) volume down released + + + 0xE0, 0xF0, 0x23 + (multimedia) mute released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xF0, 0x27 + right GUI released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x28 + (multimedia) WWW stop released + + + + + 0xE0, 0xF0, 0x2B + (multimedia) calculator released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xF0, 0x2F + apps released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x30 + (multimedia) WWW forward released + + + 0xE0, 0xF0, 0x32 + (multimedia) volume up released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x34 + (multimedia) play/pause released + + + + + 0xE0, 0xF0, 0x37 + (ACPI) power released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x38 + (multimedia) WWW back released + + + 0xE0, 0xF0, 0x3A + (multimedia) WWW home released + 0xE0, 0xF0, 0x3B + (multimedia) stop released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE0, 0xF0, 0x3F + (ACPI) sleep released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x40 + (multimedia) my computer released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x48 + (multimedia) email released + + + 0xE0, 0xF0, 0x4A + (keypad) / released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0xF0, 0x4D + (multimedia) next track released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x50 + (multimedia) media select released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0xF0, 0x5A + (keypad) enter released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0xF0, 0x5E + (ACPI) wake released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0xF0, 0x69 + end released + + + 0xE0, 0xF0, 0x6B + cursor left released +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x6C + home released + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x70 + insert released + 0xE0, 0xF0, 0x71 + delete released + 0xE0, 0xF0, 0x72 + cursor down released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0xE0, 0xF0, 0x74 + cursor right released + 0xE0, 0xF0, 0x75 + cursor up released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0xF0, 0x7A + page down released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0xE0, 0xF0, 0x7D + page up released + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + 0xE0, 0xF0, 0x7C, 0xE0, 0xF0, 0x12 + print screen released + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + 0xE1, 0x14, 0x77, 0xE1, 0xF0, 0x14, 0xF0, 0x77 + pause pressed +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note: There is no scan code for "pause key released" (it behaves as if it is released as soon as it's pressed) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan Code Set 3

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The following table shows which scan codes correspond to which keys +when using scan code set 3 (for a "US QWERTY" keyboard only): +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +Scan code

                                                                                                                                                                                                                                                                                                                                                                                                                                            See Also

                                                                                                                                                                                                                                                                                                                                                                                                                                            Forum Threads

                                                                                                                                                                                                                                                                                                                                                                                                                                            External Links

                                                                                                                                                                                                                                                                                                                                                                                                                                            Implementations

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Key +Code for Scan code set 3 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            A 1C +
                                                                                                                                                                                                                                                                                                                                                                                                                                            B 32 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            C 21 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            D 23 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            E 24 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            F 2B +
                                                                                                                                                                                                                                                                                                                                                                                                                                            G 34 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            H 33 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            I 43 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            J 3B +
                                                                                                                                                                                                                                                                                                                                                                                                                                            K 42 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            L 4B +
                                                                                                                                                                                                                                                                                                                                                                                                                                            M 3A +
                                                                                                                                                                                                                                                                                                                                                                                                                                            N 31 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            O 44 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            P 4D +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Q 15 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            R 2D +
                                                                                                                                                                                                                                                                                                                                                                                                                                            S 1B +
                                                                                                                                                                                                                                                                                                                                                                                                                                            T 2C +
                                                                                                                                                                                                                                                                                                                                                                                                                                            U 3C +
                                                                                                                                                                                                                                                                                                                                                                                                                                            V 2A +
                                                                                                                                                                                                                                                                                                                                                                                                                                            W 1D +
                                                                                                                                                                                                                                                                                                                                                                                                                                            X 22 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Y 35 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Z 1A +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Personal tools
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Namespaces
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Variants
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Views
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Actions
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Navigation
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            About
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            In other languages
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/PS_2 Keyboard - OSDev Wiki_files/load.css b/resources/PS_2 Keyboard - OSDev Wiki_files/load.css new file mode 100644 index 0000000..1ae8854 --- /dev/null +++ b/resources/PS_2 Keyboard - OSDev Wiki_files/load.css @@ -0,0 +1,3 @@ +@media print{ a.stub,a.new{color:#ba0000;text-decoration:none}#toc{border:1px solid #aaaaaa;background-color:#f9f9f9;padding:5px}.tocindent{margin-left:2em}.tocline{margin-bottom:0px} div.floatright{float:right;clear:right;position:relative;margin:0.5em 0 0.8em 1.4em}div.floatright p{font-style:italic}div.floatleft{float:left;clear:left;position:relative;margin:0.5em 1.4em 0.8em 0}div.floatleft p{font-style:italic}div.center{text-align:center} div.thumb{border:none;width:auto;margin-top:0.5em;margin-bottom:0.8em;background-color:transparent}div.thumbinner{border:1px solid #cccccc;padding:3px !important;background-color:White;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{border:1px solid #cccccc}html .thumbcaption{border:none;text-align:left;line-height:1.4em;padding:3px !important;font-size:94%}div.magnify{display:none} div.tright{float:right;clear:right;margin:0.5em 0 0.8em 1.4em} div.tleft{float:left;clear:left;margin:0.5em 1.4em 0.8em 0}img.thumbborder{border:1px solid #dddddd} table.rimage{float:right;width:1pt;position:relative;margin-left:1em;margin-bottom:1em;text-align:center}body{background:White; color:Black;margin:0;padding:0}.noprint,div#jump-to-nav,div.top,div#column-one,#colophon,.editsection,.toctoggle,.tochidden,div#f-poweredbyico,div#f-copyrightico,li#viewcount,li#about,li#disclaimer,li#privacy,#footer-places,#mw-hidden-catlinks{ display:none}ul{list-style-type:square}#content{background:none;border:none ! important;padding:0 ! important;margin:0 ! important;direction:ltr}#footer{background :white;color :black;margin-top:1em;border-top:1px solid #AAA;direction:ltr}h1,h2,h3,h4,h5,h6{font-weight:bold}p,.documentDescription{margin:1em 0 ! important;line-height:1.2em}.tocindent p{margin:0 0 0 0 ! important}pre{border:1pt dashed black;white-space:pre;font-size:8pt;overflow:auto;padding:1em 0;background:white;color:black}table.listing,table.listing td{border:1pt solid black;border-collapse:collapse}a{color:Black !important;background:none !important;padding:0 !important}a:link,a:visited{color:#520;background:transparent;text-decoration:underline}#content a.external.text:after,#content a.external.autonumber:after{ content:" (" attr(href) ") "}#globalWrapper{width:100% !important;min-width:0 !important}#content{background:white;color:black}#column-content{margin:0 !important}#column-content #content{padding:1em;margin:0 !important} a,a.external,a.new,a.stub{color:black ! important;text-decoration:none ! important} a,a.external,a.new,a.stub{color:inherit ! important;text-decoration:inherit ! important}img{border:none;vertical-align:middle} span.texhtml{font-family:serif}#siteNotice{display:none} li.gallerybox{vertical-align:top;border:solid 2px white;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word} table.diff{background:white}td.diff-otitle{background:#ffffff}td.diff-ntitle{background:#ffffff}td.diff-addedline{background:#ccffcc;font-size:smaller;border:solid 2px black}td.diff-deletedline{background:#ffffaa;font-size:smaller;border:dotted 2px black}td.diff-context{background:#eeeeee;font-size:smaller}.diffchange{color:silver;font-weight:bold;text-decoration:underline} table.wikitable{margin:1em 1em 1em 0;border:1px #aaa solid;background:white;border-collapse:collapse}.wikitable th,.wikitable td{border:1px #aaa solid;padding:0.2em}.wikitable th{text-align:center;background:white;font-weight:bold}.wikitable caption{font-weight:bold}a.sortheader{margin:0px 0.3em} .wikitable,.thumb,img{page-break-inside:avoid}h2,h3,h4,h5,h6,h7{page-break-after:avoid}p{widows:3;orphans:3} .catlinks ul{display:inline;margin:0px;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle !ie}.catlinks li{display:inline-block;line-height:1.15em;padding:0 .4em;border-left:1px solid #AAA;margin:0.1em 0;zoom:1;display:inline !ie}.catlinks li:first-child{padding-left:.2em;border-left:none}}@media screen{ .mw-content-ltr{direction:ltr}.mw-content-rtl{direction:rtl} .sitedir-ltr textarea,.sitedir-ltr input{direction:ltr}.sitedir-rtl textarea,.sitedir-rtl input{direction:rtl} input[type="submit"],input[type="button"],input[type="reset"],input[type="file"]{direction:ltr} textarea[dir="ltr"],input[dir="ltr"]{direction:ltr}textarea[dir="rtl"],input[dir="rtl"]{direction:rtl} abbr,acronym,.explain{border-bottom:1px dotted black;cursor:help} .mw-plusminus-pos{color:#006400} .mw-plusminus-neg{color:#8b0000} .mw-plusminus-null{color:#aaa} .allpagesredirect,.redirect-in-category,.watchlistredir{font-style:italic} span.comment{font-style:italic}span.changedby{font-size:95%} .texvc{direction:ltr;unicode-bidi:embed}img.tex{vertical-align:middle}span.texhtml{font-family:serif} #wikiPreview.ontop{margin-bottom:1em} #editform,#toolbar,#wpTextbox1{clear:both}#toolbar img{cursor:pointer}div#mw-js-message{margin:1em 5%;padding:0.5em 2.5%;border:solid 1px #ddd;background-color:#fcfcfc} .editsection{float:right;margin-left:5px} .mw-content-ltr .editsection,.mw-content-rtl .mw-content-ltr .editsection{float:right}.mw-content-rtl .editsection,.mw-content-ltr .mw-content-rtl .editsection{float:left} h2#filehistory{clear:both}table.filehistory th,table.filehistory td{vertical-align:top}table.filehistory th{text-align:left}table.filehistory td.mw-imagepage-filesize,table.filehistory th.mw-imagepage-filesize{white-space:nowrap}table.filehistory td.filehistory-selected{font-weight:bold} li span.deleted,span.history-deleted{text-decoration:line-through;color:#888;font-style:italic} .not-patrolled{background-color:#ffa}.unpatrolled{font-weight:bold;color:red}div.patrollink{font-size:75%;text-align:right} td.mw-label{text-align:right}td.mw-input{text-align:left}td.mw-submit{text-align:left}td.mw-label{vertical-align:top}.prefsection td.mw-label{width:20%}.prefsection table{width:100%}td.mw-submit{white-space:nowrap}table.mw-htmlform-nolabel td.mw-label{width:0 !important}tr.mw-htmlform-vertical-label td.mw-label{text-align:left !important}.mw-htmlform-invalid-input td.mw-input input{border-color:red}.mw-htmlform-multiselect-flatlist div.mw-htmlform-multiselect-item{display:inline;margin-right:1em;white-space:nowrap}input#wpSummary{width:80%} .thumbcaption{text-align:left}.magnify{float:right} #catlinks{ text-align:left}#catlinks ul{display:inline;margin:0px;padding:0px;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle !ie}#catlinks li{display:inline-block;line-height:1.35em;padding:0 .7em;border-left:1px solid #AAA;margin:0.3em 0;zoom:1;display:inline !ie}#catlinks li:first-child{padding-left:.4em;border-left:none} .mw-hidden-cats-hidden{display:none}.catlinks-allhidden{display:none} p.mw-ipb-conveniencelinks,p.mw-protect-editreasons,p.mw-filedelete-editreasons,p.mw-delete-editreasons,p.mw-revdel-editreasons{font-size:90%;text-align:right} .os-suggest{overflow:auto;overflow-x:hidden;position:absolute;top:0px;left:0px;width:0px;background-color:white;background-color:Window;border-style:solid;border-color:#AAAAAA;border-width:1px;z-index:99;font-size:95%}table.os-suggest-results{font-size:95%;cursor:pointer;border:0;border-collapse:collapse;width:100%}.os-suggest-result,.os-suggest-result-hl{white-space:nowrap;background-color:white;background-color:Window;color:black;color:WindowText;padding:2px}.os-suggest-result-hl,.os-suggest-result-hl-webkit{background-color:#4C59A6;color:white}.os-suggest-result-hl{ background-color:Highlight;color:HighlightText}.os-suggest-toggle{position:relative;left:1ex;font-size:65%}.os-suggest-toggle-def{position:absolute;top:0px;left:0px;font-size:65%;visibility:hidden} .autocomment{color:gray}#pagehistory .history-user{margin-left:0.4em;margin-right:0.2em}#pagehistory span.minor{font-weight:bold}#pagehistory li{border:1px solid white}#pagehistory li.selected{background-color:#f9f9f9;border:1px dashed #aaa}.mw-history-revisiondelete-button,#mw-fileduplicatesearch-icon{float:right} .newpage,.minor,.bot{font-weight:bold}#shared-image-dup,#shared-image-conflict{font-style:italic} div.mw-warning-with-logexcerpt{padding:3px;margin-bottom:3px;border:2px solid #2F6FAB;clear:both}div.mw-warning-with-logexcerpt ul li{font-size:90%} span.mw-revdelundel-link,strong.mw-revdelundel-link{font-size:90%}span.mw-revdelundel-hidden,input.mw-revdelundel-hidden{visibility:hidden}td.mw-revdel-checkbox,th.mw-revdel-checkbox{padding-right:10px;text-align:center} a.feedlink{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH2AkOCjkSL9xYhAAAAc9JREFUKJE90LFrU1EYQPHzffe+l/iSVkXTmNiANBU7iE5OLrbSVYKIiy5dnARB3FwEB5dOOhQKuthJEEHRsUXBoosO0lKKEYRa29LWQk3S5L53r0PVv+D8OPJlolrrr1ZmI7F1BFEjqBXECGJAjSBCaLddc7u5Mmb7q5U5007rWh5E9rYR/xsTBBXBWMVEglqRpGiGhcE5G6kdyugxcGsGyRdJ15ZwC29IF55jNEWt8K+aFOMhc+dC7Z6SITjC7ga2MkI8cpH41Dhh7RPa20Gt4toZac+IqhFMTpG0hVt8RetJg967SaTvGLnGNKZ0EtfOcB1P5jyqVjCRkIzfpnjtMYXrT2FrCff6JqhFRx/gnCXtZHgXUFHQSGg/u4Gbf4T2lYkvTaFGce8fIgePY09fwXU8Pg3sk2JFu5v4lQ+4FxPge+j5u3Q+v8TvrBKfbZB1PT4LqJh9Uv7yFLmrM2i+gPs4jRyqIaUz7C2+xZZOEA4cJaSgaAhqhbC1DK0N3K9NusvzAHB4GLf+HQBJBsiCD7J6/9zXI2VbVyv/b6Sdv1e6nrTryboB7wVbyjXt1rcfo0Frs4UkqvtUJHMBjyVEAcSjFiQJwRvf3F3/OfYH/dDFWrCooaIAAAAASUVORK5CYII=) center left no-repeat;background:url(https://wiki.osdev.org/skins/common/images/feed-icon.png?2012-01-04T05:30:00Z) center left no-repeat!ie;padding-left:16px} .plainlinks a{background:none !important;padding:0 !important} .rtl a.external.free,.rtl a.external.autonumber{direction:ltr;unicode-bidi:embed} table.wikitable{margin:1em 1em 1em 0;background:#f9f9f9;border:1px #aaa solid;border-collapse:collapse;color:black}.wikitable th,.wikitable td{border:1px #aaa solid;padding:0.2em}.wikitable th{background:#f2f2f2;text-align:center}.wikitable caption{font-weight:bold} table.collapsed tr.collapsable{display:none} .success{color:green;font-size:larger}.warning{color:#FFA500; font-size:larger}.error{color:red;font-size:larger}.errorbox,.warningbox,.successbox{font-size:larger;border:2px solid;padding:.5em 1em;float:left;margin-bottom:2em;color:#000}.errorbox{border-color:red;background-color:#fff2f2}.warningbox{border-color:#FF8C00; background-color:#FFFFC0}.successbox{border-color:green;background-color:#dfd}.errorbox h2,.warningbox h2,.successbox h2{font-size:1em;font-weight:bold;display:inline;margin:0 .5em 0 0;border:none} .mw-infobox{border:2px solid #ff7f00;margin:0.5em;clear:left;overflow:hidden}.mw-infobox-left{margin:7px;float:left;width:35px}.mw-infobox-right{margin:0.5em 0.5em 0.5em 49px} .previewnote{color:#c00;margin-bottom:1em}.previewnote p{text-indent:3em;margin:0.8em 0}.visualClear{clear:both}#mw_trackbacks{border:solid 1px #bbbbff;background-color:#eeeeff;padding:0.2em} .TablePager{min-width:80%;border-collapse:collapse}.TablePager_nav{margin:0 auto}.TablePager_nav td{padding:3px;text-align:center}.TablePager_nav a{text-decoration:none}.TablePager,.TablePager td,.TablePager th{border:1px solid #aaaaaa;padding:0 0.15em 0 0.15em}.TablePager th{background-color:#eeeeff}.TablePager td{background-color:#ffffff}.TablePager tr:hover td{background-color:#eeeeff}.imagelist td,.imagelist th{white-space:nowrap}.imagelist .TablePager_col_links{background-color:#eeeeff}.imagelist .TablePager_col_img_description{white-space:normal}.imagelist th.TablePager_sort{background-color:#ccccff} ul#filetoc{text-align:center;border:1px solid #aaaaaa;background-color:#f9f9f9;padding:5px;font-size:95%;margin-bottom:0.5em;margin-left:0;margin-right:0}#filetoc li{display:inline;list-style-type:none;padding-right:2em} table.mw_metadata{font-size:0.8em;margin-left:0.5em;margin-bottom:0.5em;width:400px}table.mw_metadata caption{font-weight:bold}table.mw_metadata th{font-weight:normal}table.mw_metadata td{padding:0.1em}table.mw_metadata{border:none;border-collapse:collapse}table.mw_metadata td,table.mw_metadata th{text-align:center;border:1px solid #aaaaaa;padding-left:5px;padding-right:5px}table.mw_metadata th{background-color:#f9f9f9}table.mw_metadata td{background-color:#fcfcfc}table.mw_metadata ul.metadata-langlist{list-style-type:none;list-style-image:none;padding-right:5px;padding-left:5px;margin:0} .mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{ margin:0.3em 0 0 1.5em;padding:0}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{ margin:0.3em 1.5em 0 0;padding:0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{ margin:0.3em 0 0 3.2em;padding:0}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{ margin:0.3em 3.2em 0 0;padding:0} .mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{margin:.3em 0 0 1.5em}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{margin:.3em 1.5em 0 0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{margin:.3em 0 0 3.2em}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{margin:.3em 3.2em 0 0} li.gallerybox{vertical-align:top;border:solid 2px white;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;background-color:#f9f9f9;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.mw-ajax-loader{background-image:url(data:image/gif;base64,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);background-image:url(https://wiki.osdev.org/skins/common/images/ajax-loader.gif?2012-01-04T05:30:00Z)!ie;background-position:center center;background-repeat:no-repeat;padding:16px;position:relative;top:-16px}.mw-small-spinner{padding:10px !important;margin-right:0.6em;background-image:url(data:image/gif;base64,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);background-image:url(https://wiki.osdev.org/skins/common/images/spinner.gif?2012-01-04T05:30:00Z)!ie;background-position:center center;background-repeat:no-repeat} ol:lang(bcc) li,ol:lang(bqi) li,ol:lang(fa) li,ol:lang(glk) li,ol:lang(kk-arab) li,ol:lang(mzn) li{list-style-type:-moz-persian;list-style-type:persian}ol:lang(ckb) li{list-style-type:-moz-arabic-indic;list-style-type:arabic-indic}ol:lang(as) li,ol:lang(bn) li{list-style-type:-moz-bengali;list-style-type:bengali}ol:lang(or) li{list-style-type:-moz-oriya;list-style-type:oriya}#toc ul,.toc ul{margin:.3em 0} .mw-content-ltr .toc ul,.mw-content-ltr #toc ul,.mw-content-rtl .mw-content-ltr .toc ul,.mw-content-rtl .mw-content-ltr #toc ul{text-align:left}.mw-content-rtl .toc ul,.mw-content-rtl #toc ul,.mw-content-ltr .mw-content-rtl .toc ul,.mw-content-ltr .mw-content-rtl #toc ul{text-align:right}.mw-content-ltr .toc ul ul,.mw-content-ltr #toc ul ul,.mw-content-rtl .mw-content-ltr .toc ul ul,.mw-content-rtl .mw-content-ltr #toc ul ul{margin:0 0 0 2em}.mw-content-rtl .toc ul ul,.mw-content-rtl #toc ul ul,.mw-content-ltr .mw-content-rtl .toc ul ul,.mw-content-ltr .mw-content-rtl #toc ul ul{margin:0 2em 0 0}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{direction:ltr} .mw-help-field-hint{display:none;margin-left:2px;margin-bottom:-8px;padding:0px 0px 0px 15px;background-image:url(data:image/gif;base64,R0lGODlhCwALALMAAP///01NTZOTk1lZWefn57i4uJSUlPPz82VlZdDQ0HFxcaysrNvb28TExAAAAAAAACH5BAAAAAAALAAAAAALAAsAAAQrUIRJqQQ455nNNBgHJANBDAwgZsVwqIG2IEQYYwXy2lq/Kg3NqqeSVCqCCAA7);background-image:url(https://wiki.osdev.org/skins/common/images/help-question.gif?2012-01-04T05:30:00Z)!ie;background-position:left center;background-repeat:no-repeat;cursor:pointer;font-size:.8em;text-decoration:underline;color:#0645ad}.mw-help-field-hint:hover{background-image:url(data:image/gif;base64,R0lGODlhCwALALMAAAtop+7z+GCWwpW51oStz8rb6yZzrafF3bnR5Nzn8QBcoD91oABQmf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE5NkQ0QUQzRjI0NzRCNUQwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBN0FFQTQwQjlGQzExREY5RDlBQTRBODQyMkJCMkFDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBN0FFQTNGQjlGQzExREY5RDlBQTRBODQyMkJCMkFDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkM3RjExNzQwNzIwNjgxMTk1RkVBQ0ZBOEQxNTU5MkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDI4MDExNzQwNzIwNjgxMTk2RDRBRDNGMjQ3NEI1RDAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAACwALAAAEK3CxSalsOOeZxRQY1yBKkihFI2aDEqiMRgBJGGMD8NpavxoHzaqnklQqiwgAOw==);background-image:url(https://wiki.osdev.org/skins/common/images/help-question-hover.gif?2012-01-04T05:30:00Z)!ie}.mw-help-field-data{display:block;background-color:#d6f3ff;padding:5px 8px 4px 8px;border:1px solid #5dc9f4;margin-left:20px}.tipsy{padding:5px 5px 10px;font-size:12px;position:absolute;z-index:100000;overflow:visible}.tipsy-inner{padding:5px 8px 4px 8px;background-color:#d6f3ff;color:black;border:1px solid #5dc9f4;max-width:300px;text-align:left}.tipsy-arrow{position:absolute;background:url(data:image/gif;base64,R0lGODlhDQANAMQAAPf399bz/9vu9m/O9NXy/8Pm9svp9pfd+YLW943X9LTn++z093XQ9WnM9OLw9p/c9YTU9InY9/T292DK9Jre+afj+rvq/Nzv9rjk9brl9cPt/ZLb+GbL9MLs/ZHb+KLh+iH5BAAAAAAALAAAAAANAA0AAAVK4BGMZBkcg2WW1lBEKxkVAFTFFQQAwkSYhIlgB3hQTJQHEbBodEiaxmIJyHhIGwwVIGEoAgqGZAswIAIIA3mX+CTWOwfHAd9dtiEAOw==) no-repeat top left;background:url(https://wiki.osdev.org/skins/common/images/tipsy-arrow.gif?2012-01-04T05:30:00Z) no-repeat top left!ie;width:13px;height:13px}.tipsy-se .tipsy-arrow{bottom:-2px;right:10px;background-position:0% 100%} table.sortable th.headerSort{background-image:url(images/sort_both.gif);cursor:pointer;background-repeat:no-repeat;background-position:center right;padding-right:21px}table.sortable th.headerSortUp{background-image:url(images/sort_up.gif)}table.sortable th.headerSortDown{background-image:url(images/sort_down.gif)} .ltr{ direction:ltr;unicode-bidi:embed}#mw-clearyourcache,#mw-sitecsspreview,#mw-sitejspreview,#mw-usercsspreview,#mw-userjspreview{direction:ltr;unicode-bidi:embed} .diff-currentversion-title,.diff{direction:ltr;unicode-bidi:embed} .diff-contentalign-right td{direction:rtl;unicode-bidi:embed} .diff-contentalign-left td{direction:ltr;unicode-bidi:embed}.diff-otitle,.diff-ntitle,.diff-lineno{direction:ltr !important;unicode-bidi:embed}#mw-revision-info,#mw-revision-nav{direction:ltr} div.tright,div.floatright,table.floatright{clear:right;float:right}div.tleft,div.floatleft,table.floatleft{float:left;clear:left}div.floatright,table.floatright,div.floatleft,table.floatleft{position:relative} #mw-credits a{unicode-bidi:embed}}@media screen{ html,body{height:100%;margin:0;padding:0;font-family:sans-serif;font-size:1em}body{background-color:#f3f3f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeF4FwTEBAAAAwJD1D+weGQD4APc0a6VeAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/page-base.png?2012-01-04T05:30:00Z)!ie} div#content{margin-left:10em;padding:1em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeF4FwTEBAAAAgjD7FzESWfjYdgwEoAJ4lTsaxgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/border.png?2012-01-04T05:30:00Z)!ie;background-position:top left;background-repeat:repeat-y;background-color:white;color:black;direction:ltr} #mw-page-base{height:5em;background-color:white;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADpJREFUeF5VjUkOAEAIwoD//7lzGJd4MJHGSoBImkFETP67CdLldUd7KC6f8fv3+psd8znbtU5x354HaWQjOx76v7MAAAAASUVORK5CYII=);background-image:url(https://wiki.osdev.org/skins/vector/images/page-fade.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:repeat-x}#mw-head-base{margin-top:-5em;margin-left:10em;height:5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeF4FwTEBAAAAgjD7FzESWfjYdgwEoAJ4lTsaxgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/border.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:repeat-x}div#mw-head{position:absolute;top:0;right:0;width:100%}div#mw-head h5{margin:0;padding:0} div.emptyPortlet{display:none} #p-personal{position:absolute;top:0;right:0.75em}#p-personal h5{display:none}#p-personal ul{list-style:none;margin:0;padding-left:10em; } #p-personal li{line-height:1.125em;float:left} #p-personal li{margin-left:0.75em;margin-top:0.5em;font-size:0.75em;white-space:nowrap} #left-navigation{position:absolute;left:10em;top:2.5em}#right-navigation{float:right;margin-top:2.5em} div.vectorTabs h5,div.vectorMenu h5 span{display:none} div.vectorTabs{float:left;height:2.5em}div.vectorTabs{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:no-repeat;padding-left:1px} div.vectorTabs ul{float:left}div.vectorTabs ul{height:100%;list-style:none;margin:0;padding:0} div.vectorTabs ul li{float:left} div.vectorTabs ul li{line-height:1.125em;display:inline-block;height:100%;margin:0;padding:0;background-color:#f3f3f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAIAAADITs03AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeF7litsRACAMwrD77+Q0rtGoV98r+MEFchhgkr4NnZyb3bk/LM/yMCjiH4wots/++hYR3iXLJVWUBS1AtOi2fwAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-normal-fade.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:repeat-x;white-space:nowrap} div.vectorTabs ul > li{display:block}div.vectorTabs li.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkAQAAAABvV2fNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeF7dwQEBAAAAQCDTTfdD4WOJ5TIB3ib9EgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-current-fade.png?2012-01-04T05:30:00Z)!ie} div.vectorTabs li a{display:inline-block;height:1.9em;padding-left:0.5em;padding-right:0.5em;color:#0645ad;cursor:pointer;font-size:0.8em} div.vectorTabs li > a{display:block}div.vectorTabs li.icon a{background-position:bottom right;background-repeat:no-repeat} div.vectorTabs span a{display:inline-block;padding-top:1.25em} div.vectorTabs span > a{float:left;display:block}div.vectorTabs span{display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom right;background-repeat:no-repeat}div.vectorTabs li.selected a,div.vectorTabs li.selected a:visited{color:#333333;text-decoration:none}div.vectorTabs li.new a,div.vectorTabs li.new a:visited{color:#a55858} div.vectorMenu{direction:ltr;float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAQBAMAAACfEoDkAAAAAXNSR0IArs4c6QAAABtQTFRFAAAAeXl5kpKSmpqara2tsbGxv7+/3d3d4+Pj/0BzBAAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2wQZDQ02HnCAHgAAAEJJREFUGNNjYBhEgN1QUFDQHMzkcFJSUvKAihcLCgoXQJgtSkoqDQjl5lAmULkH3JhimGKgcrhioPJwOJMjY6C8CAC3YAg/E2WR5gAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/arrow-down-icon.png?2012-01-04T05:30:00Z)!ie;background-position:0px 60%;background-repeat:no-repeat;cursor:pointer}div.vectorMenuFocus{ background-image:url(images/arrow-down-focus-icon.png);background-position:100% 60%} body.rtl div.vectorMenu{direction:rtl} div#mw-head div.vectorMenu h5{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-repeat:no-repeat} div#mw-head div.vectorMenu h5{background-position:bottom left;margin-left:-1px} div#mw-head div.vectorMenu > h5{background-image:none}div#mw-head div.vectorMenu h4{display:inline-block;float:left;font-size:0.8em;padding-left:0.5em;padding-top:1.375em;font-weight:normal;border:none} div.vectorMenu h5 a{display:inline-block;width:24px;height:2.5em;text-decoration:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-repeat:no-repeat} div.vectorMenu h5 a{background-position:bottom right} div.vectorMenu h5 > a{display:block}div.vectorMenu div.menu{position:relative;display:none;clear:both;text-align:left} body.rtl div.vectorMenu div.menu{margin-left:24px} body.rtl div.vectorMenu > div.menu{margin-left:auto} body.rtl div.vectorMenu > div.menu,x:-moz-any-link{margin-left:23px} div.vectorMenu:hover div.menu,div.vectorMenu div.menuForceShow{display:block}div.vectorMenu ul{position:absolute;background-color:white;border:solid 1px silver;border-top-width:0;list-style:none;list-style-image:none;list-style-type:none;padding:0;margin:0;margin-left:-1px;text-align:left} div.vectorMenu ul,x:-moz-any-link{min-width:5em} div.vectorMenu ul,x:-moz-any-link,x:default{min-width:0}div.vectorMenu li{padding:0;margin:0;text-align:left;line-height:1em} div.vectorMenu li a{display:inline-block;padding:0.5em;white-space:nowrap;color:#0645ad;cursor:pointer;font-size:0.8em} div.vectorMenu li > a{display:block}div.vectorMenu li.selected a,div.vectorMenu li.selected a:visited{color:#333333;text-decoration:none} #p-search h5{display:none} #p-search{float:left}#p-search{margin-right:0.5em;margin-left:0.5em}#p-search form,#p-search input{margin:0;margin-top:0.4em}div#simpleSearch{display:block;width:14em;height:1.4em;margin-top:0.65em;position:relative;min-height:1px; border:solid 1px #AAAAAA;color:black;background-color:white;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAIAAABY/YLgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACZJREFUeF5diqERACAQgID95/3s+cFg4CDQzASkXl4jidvrCPzfA7puAx52W1pnAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/search-fade.png?2012-01-04T05:30:00Z)!ie;background-position:top left;background-repeat:repeat-x}div#simpleSearch label{ font-size:13px;top:0.25em;direction:ltr}div#simpleSearch input{color:black;direction:ltr}div#simpleSearch input:focus{outline:none}div#simpleSearch input.placeholder{color:#999999}div#simpleSearch input::-webkit-input-placeholder{color:#999999}div#simpleSearch input#searchInput{position:absolute;top:0;left:0;width:90%;margin:0;padding:0;padding-left:0.2em;padding-top:0.2em;padding-bottom:0.2em;outline:none;border:none; font-size:13px;background-color:transparent;direction:ltr}div#simpleSearch button#searchButton{position:absolute;width:10%;right:0;top:0;padding:0;padding-top:0.3em;padding-bottom:0.2em;padding-right:0.4em;margin:0;border:none;cursor:pointer;background-color:transparent;background-image:none} div#simpleSearch button#searchButton img{border:none;margin:0;margin-top:-3px;padding:0} div#simpleSearch button#searchButton > img{margin:0} div#mw-panel{position:absolute;top:160px;padding-top:1em;width:10em;left:0}div#mw-panel div.portal{padding-bottom:1.5em;direction:ltr}div#mw-panel div.portal h5{font-weight:normal;color:#444444;padding:0.25em;padding-top:0;padding-left:1.75em;cursor:default;border:none;font-size:0.75em}div#mw-panel div.portal div.body{margin:0;padding-top:0.5em;margin-left:1.25em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAAABCAAAAAAphRnkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeF61yMEJACAQxMCN/Xfr/yIsaAfOJxC2UTPWS6f5gABhUTedBz7fGPSonIP/AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/portal-break.png?2012-01-04T05:30:00Z)!ie;background-repeat:no-repeat;background-position:top left}div#mw-panel div.portal div.body ul{list-style:none;list-style-image:none;list-style-type:none;padding:0;margin:0}div#mw-panel div.portal div.body ul li{line-height:1.125em;padding:0;padding-bottom:0.5em;margin:0;overflow:hidden;font-size:0.75em}div#mw-panel div.portal div.body ul li a{color:#0645ad}div#mw-panel div.portal div.body ul li a:visited{color:#0b0080} div#footer{margin-left:10em;margin-top:0;padding:0.75em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeF4FwTEBAAAAgjD7FzESWfjYdgwEoAJ4lTsaxgAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/border.png?2012-01-04T05:30:00Z)!ie;background-position:top left;background-repeat:repeat-x;direction:ltr}div#footer ul{list-style:none;list-style-image:none;list-style-type:none;margin:0;padding:0}div#footer ul li{margin:0;padding:0;padding-top:0.5em;padding-bottom:0.5em;color:#333333;font-size:0.7em}div#footer #footer-icons{float:right} body.ltr div#footer #footer-places{float:left}div#footer #footer-info li{line-height:1.4em}div#footer #footer-icons li{float:left;margin-left:0.5em;line-height:2em;text-align:right}div#footer #footer-places li{float:left;margin-right:1em;line-height:2em} #p-logo{position:absolute;top:-160px;left:0;width:10em;height:160px}#p-logo a{display:block;width:10em;height:160px;background-repeat:no-repeat;background-position:center center;text-decoration:none} #preftoc{ width:100%;float:left;clear:both;margin:0 !important;padding:0 !important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAhCAQAAACysAk0AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAABAAAAIQBSEXtPAAAAAmJLR0QA/vCI/CkAAAAmSURBVAjXY2BgYPj3n+k/AwL9g5Fwxl8GJgYGpr+ogmgITQuSgQA1QiAL/go8LAAAACV0RVh0Y3JlYXRlLWRhdGUAMjAwOS0wOC0wOVQxOTowNTo0MSswMDowMCYO2tEAAAAldEVYdG1vZGlmeS1kYXRlADIwMDktMDgtMDlUMTk6MDU6NDErMDA6MDB5v6zlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom left;background-repeat:no-repeat}#preftoc li{ float:left;margin:0;padding:0;padding-right:1px;height:2.25em;white-space:nowrap;list-style-type:none;list-style-image:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAhCAQAAACysAk0AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAABAAAAIQBSEXtPAAAAAmJLR0QA/vCI/CkAAAAmSURBVAjXY2BgYPj3n+k/AwL9g5Fwxl8GJgYGpr+ogmgITQuSgQA1QiAL/go8LAAAACV0RVh0Y3JlYXRlLWRhdGUAMjAwOS0wOC0wOVQxOTowNTo0MSswMDowMCYO2tEAAAAldEVYdG1vZGlmeS1kYXRlADIwMDktMDgtMDlUMTk6MDU6NDErMDA6MDB5v6zlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-break.png?2012-01-04T05:30:00Z)!ie;background-position:bottom right;background-repeat:no-repeat} #preftoc li:first-child{margin-left:1px}#preftoc a,#preftoc a:active{display:inline-block;position:relative;color:#0645ad;padding:0.5em;text-decoration:none;background-image:none;font-size:0.9em}#preftoc a:hover,#preftoc a:focus{text-decoration:underline}#preftoc li.selected a{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAhCAQAAACysAk0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeF5twskJAAAMAjD3H7mXfYogCQiQeun68Z2WPk0SQHDa/pxXAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-fade.png?2012-01-04T05:30:00Z)!ie;background-position:bottom;background-repeat:repeat-x;color:#333333;text-decoration:none}#preferences{float:left;width:100%;margin:0;margin-top:-2px;clear:both;border:solid 1px #cccccc;background-color:#f9f9f9;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeF4FwTEBAAAAwJD1j+waGQD8APvyfoZlAAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/preferences-base.png?2012-01-04T05:30:00Z)!ie}#preferences fieldset{border:none;border-top:solid 1px #cccccc}#preferences fieldset.prefsection{border:none;padding:0;margin:1em}#preferences legend{color:#666666}#preferences fieldset.prefsection legend.mainLegend{display:none}#preferences td{padding-left:0.5em;padding-right:0.5em}#preferences td.htmlform-tip{font-size:x-small;padding:.2em 2em;color:#666666}#preferences div.mw-prefs-buttons{padding:1em}#preferences div.mw-prefs-buttons input{margin-right:0.25em} #userlogin,#userloginForm{border:solid 1px #cccccc;padding:1.2em;margin:.5em;float:left}#userlogin{min-width:20em;max-width:90%;width:40em} div#content{line-height:1.5em}#bodyContent{font-size:0.8em} a{text-decoration:none;color:#0645ad;background:none}a:visited{color:#0b0080}a:active{color:#faa700}a:hover,a:focus{text-decoration:underline}a.stub{color:#772233}a.new,#p-personal a.new{color:#ba0000}a.new:visited,#p-personal a.new:visited{color:#a55858} img{border:none;vertical-align:middle}hr{height:1px;color:#aaa;background-color:#aaa;border:0;margin:.2em 0 .2em 0} h1,h2,h3,h4,h5,h6{color:black;background:none;font-weight:normal;margin:0;overflow:hidden;padding-top:.5em;padding-bottom:.17em;border-bottom:1px solid #aaa;width:auto}h1{font-size:188%}h1 .editsection{font-size:53%}h2{font-size:150%}h2 .editsection{font-size:67%}h3,h4,h5,h6{border-bottom:none;font-weight:bold}h3{font-size:132%}h3 .editsection{font-size:76%;font-weight:normal}h4{font-size:116%}h4 .editsection{font-size:86%;font-weight:normal}h5{font-size:100%}h5 .editsection{font-weight:normal}h6{font-size:80%}h6 .editsection{font-size:125%;font-weight:normal}.editsection{float:right}p{margin:.4em 0 .5em 0;line-height:1.5em}p img{margin:0}q{font-family:Times,"Times New Roman",serif;font-style:italic} pre,code,tt,kbd,samp{ font-family:monospace,"Courier New"}code{background-color:#f9f9f9}pre{padding:1em;border:1px dashed #2f6fab;color:black;background-color:#f9f9f9;line-height:1.3em}ul{line-height:1.5em;list-style-type:square;margin:.3em 0 0 1.5em;padding:0;list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAMAAABW4lS6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFAFKM////QIUK9QAAAAJ0Uk5T/wDltzBKAAAAGklEQVR42mJgBAEGokgGBjBGBxBxsBqAAAMACHwALd5r8ygAAAAASUVORK5CYII=);list-style-image:url(https://wiki.osdev.org/skins/vector/images/bullet-icon.png?2012-01-04T05:30:00Z)!ie}ol{line-height:1.5em;margin:.3em 0 0 3.2em;padding:0;list-style-image:none}li{margin-bottom:.1em}dt{font-weight:bold;margin-bottom:.1em}dl{margin-top:.2em;margin-bottom:.5em}dd{line-height:1.5em;margin-left:2em;margin-bottom:.1em} table{font-size:100%} fieldset{border:1px solid #2f6fab;margin:1em 0 1em 0;padding:0 1em 1em;line-height:1.5em}fieldset.nested{margin:0 0 0.5em 0;padding:0 0.5em 0.5em}legend{padding:.5em;font-size:95%}form{border:none;margin:0}textarea{width:100%;padding:.1em}select{vertical-align:top} #toc,.toc,.mw-warning{border:1px solid #aaa;background-color:#f9f9f9;padding:5px;font-size:95%}#toc h2,.toc h2{display:inline;border:none;padding:0;font-size:100%;font-weight:bold}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{text-align:center}#toc ul,.toc ul{list-style-type:none;list-style-image:none;margin-left:0;padding:0;text-align:left}#toc ul ul,.toc ul ul{margin:0 0 0 2em}#toc .toctoggle,.toc .toctoggle{font-size:94%} div.floatright,table.floatright{margin:0 0 .5em .5em;border:0}div.floatright p{font-style:italic}div.floatleft,table.floatleft{margin:0 .5em .5em 0;border:0}div.floatleft p{font-style:italic} div.thumb{margin-bottom:.5em;width:auto;background-color:transparent}div.thumbinner{border:1px solid #ccc;padding:3px !important;background-color:#f9f9f9;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{border:1px solid #ccc}html .thumbcaption{border:none;text-align:left;line-height:1.4em;padding:3px !important;font-size:94%}div.magnify{float:right;border:none !important;background:none !important}div.magnify a,div.magnify img{display:block;border:none !important;background:none !important}div.tright{margin:.5em 0 1.3em 1.4em}div.tleft{margin:.5em 1.4em 1.3em 0}img.thumbborder{border:1px solid #dddddd} .mw-warning{margin-left:50px;margin-right:50px;text-align:center} .usermessage{background-color:#ffce7b;border:1px solid #ffa500;color:black;font-weight:bold;margin:2em 0 1em;padding:.5em 1em;vertical-align:middle} #siteNotice{position:relative;text-align:center;font-size:0.8em;margin:0}#localNotice{margin-bottom:0.9em} .catlinks{border:1px solid #aaa;background-color:#f9f9f9;padding:5px;margin-top:1em;clear:both} #siteSub{display:none}#jump-to-nav{display:none}#contentSub,#contentSub2{font-size:84%;line-height:1.2em;margin:0 0 1.4em 1em;color:#7d7d7d;width:auto}span.subpages{display:block} .center{width:100%;text-align:center}*.center *{margin-left:auto;margin-right:auto} .small{font-size:94%}table.small{font-size:100%} h1,h2{margin-bottom:.6em}h3,h4,h5{margin-bottom:.3em}#firstHeading{padding-top:0;margin-top:0;padding-top:0;margin-bottom:0.1em;line-height:1.2em;font-size:1.6em;padding-bottom:0}div#content a.external,div#content a.external[href ^="gopher://"]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/external-link-ltr-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="https://"],.link-https{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeF6tjzsKg0AQhi09mimsFJLCzpNYCGKbK3gAtfUIljaCoKCCZIs8MMV2v+yCg8siWlh8zOtjhjEAEFmeIopDQtTrTJNEZIxhWysiNfULJFJjDzGnba/aBt4+wAuBzD+tg6a8SVkXf4GET96xmDxNzP39IvE/PPDtXIyVpYinv14A5F0laJ8oYFgAAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/lock-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="mailto:"],.link-mailto{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF////////iIqF9vb26urpycfDvb275eXj2djV+/v4srKy6efio6GcqKejsa6q8fDtVM9qIQAAAAF0Uk5TAEDm2GYAAABOSURBVHheBcExDkAwGIDRL43NpJOt6a9hMdVilP8gklqsHMJmt4qeyeI03oNSNkCrAIU/7YTWbwp0zz4rTXZHxF/9YA15HTG4+4NFRNofUBMMOBBNZngAAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/mail-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="news://"]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeF6NkEEKgCAQRT2w1wiiUxgk0SKiTe6i9oKeQXDhKSZmYAJRKeHh4j//DIp+6OAPJH6cXJRSZqSUQClViBjUKER8zXAbUhev+6Q7hMA0G1msNtIo5zxhrX3xzlNG4ravYMwBMUZsKsBsXjQIABCTHlsfTXuj8wCN3T2QBjtcwQAAAABJRU5ErkJggg==) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/news-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="ftp://"],.link-ftp{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAExJREFUeF5VyEEKwCAMAMH83o/0LT6kFHqQYqkevG1jIITs3kaQgn+A7A29ujnw5NKrsaPCrTegBBrRMzYeXkbGzsdkZRwsPWMUmEd+CkSgVeVp2OkAAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/file-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href ^="irc://"],div#content a.external[href ^="ircs://"],.link-irc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHRJREFUeF590E0KgCAQBWAvH0TXigI3ZccQ/8H91ExqKNrAW8j7kFG27SvMyzQM9s8whuBnENdQSllFKdWFWFC01pQQwhASMMaAtXYIMQScc/0dxSXyIaPq1ZzzF6JOsKBTHOC9hxgjoQLbf2tRgekWKka5AShBSepvauUSAAAAAElFTkSuQmCC) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/talk-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href $=".ogg"],div#content a.external[href $=".OGG"],div#content a.external[href $=".mid"],div#content a.external[href $=".MID"],div#content a.external[href $=".midi"],div#content a.external[href $=".MIDI"],div#content a.external[href $=".mp3"],div#content a.external[href $=".MP3"],div#content a.external[href $=".wav"],div#content a.external[href $=".WAV"],div#content a.external[href $=".wma"],div#content a.external[href $=".WMA"],.link-audio{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF////dX8qyNF7eYMzwsxrsr9G8PHrm6Jrt7uakJVmn6OB1duat8NQi5YzhI4ykZR07gQraQAAAAF0Uk5TAEDm2GYAAABJSURBVHheNcSxDUBQFIbR727glxvKl3dHsIHCGESrNIIR7KE1hQ1MoDSCiMhJDixSDWVEhuZbei/sf/Jqbdn28+jxYe4u7CaND+p5C05J6bE1AAAAAElFTkSuQmCC) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/audio-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href $=".ogm"],div#content a.external[href $=".OGM"],div#content a.external[href $=".avi"],div#content a.external[href $=".AVI"],div#content a.external[href $=".mpeg"],div#content a.external[href $=".MPEG"],div#content a.external[href $=".mpg"],div#content a.external[href $=".MPG"],.link-video{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAAAAACoWZBhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAP9bkSK1AAAAXElEQVR4Xi2NMQoFMQgFvbpgHUj5LvF6K7sFQXKFsOew2G/xuylmGPn62Wb76U+ayHsTbDnrQMNrHdkZRChyi730KvK1QUWVD47gzoCOMBkXPSZrIuumseW/iKU/eKdG9xXBa10AAAAASUVORK5CYII=) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/video-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px}div#content a.external[href $=".pdf"],div#content a.external[href $=".PDF"],div#content a.external[href *=".pdf#"],div#content a.external[href *=".PDF#"],div#content a.external[href *=".pdf?"],div#content a.external[href *=".PDF?"],.link-document{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeF5lykEKgDAMBdF/+17Es/QkiosiCBURXIzJooZohmweX6gwmkCeI+Oqc2C1FnvnF2ejlQYU0tLK2NjY6f/l8V12Ti7uhFFgDj19b58EwXuqkAAAAABJRU5ErkJggg==) center right no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/document-icon.png?2012-01-04T05:30:00Z) center right no-repeat!ie;padding-right:13px} div#content a.extiw,div#content a.extiw:active{color:#36b; background:none;padding:0}div#content a.extiw:visited{color:#636}div#content a.extiw:active{color:#b63} div#content a.external{color:#36b}div#content a.external:visited{color:#636; }div#content a.external:active{color:#b63}div#content .printfooter{display:none} #pt-userpage,#pt-anonuserpage,#pt-login{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAANCAYAAACQN/8FAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAHOSURBVCjPY2BAAjtLxLmPN4pFn2gSTdrfICDAgA2c65C0uznf6erT9dH/H6/0+39zut6d051SfiiK9jcwsFyfa3v21Z7S/++Odf1/uSP7/6OF1v+vT9O7ub9BlAdJoajBw+W+P98crPv/8eLC/6/2lPx/vNj+/705xv+PNwsHwRUerOFTvTXX9sfzjTFg056tC/v/YJbu//tzjP4eaxR3hiv8z8DAuKPF4N7DuUb/H84z/X9/hsb/BzM1/x/qMnxwJo2BFa5QP3rKpMjSiT/XtTr+vzzV+P+Vacb/N7fb/48v6fikHTYhFaxII3iSr0vRmm/muZv++9du/L969Yr/Wzeu+O9Tvvq/Rcay//aZC15reHXoMtimz91ulrnyv1n22v/muRv/960693/Fniv/TdKX/zdKXvDfPHX+f9PYySsYbFJnXDWIm/nfOG0pWDKkdsP/oonbgYoW/jdImPNfL2bKf+v4SRcZTCK6D5gkTAcLGibO/W+aMu+/b8mS//pxM8CKdAPr/xtFdB9lkDQNszOP7r1tnTLzr03qzP/WQGyVAqRTpv+3Tprxzzi88560VZo3xNui2jxi+oFB4oYRNaL6Ic0gDGEHh4HkQEoAjALoHv5slukAAAAASUVORK5CYII=) left top no-repeat;background:url(https://wiki.osdev.org/skins/vector/images/user-icon.png?2012-01-04T05:30:00Z) left top no-repeat!ie;padding-left:15px !important;text-transform:none}.redirectText{font-size:140%}.redirectMsg img{vertical-align:text-bottom}.toccolours{border:1px solid #aaa;background-color:#f9f9f9;padding:5px;font-size:95%}#bodyContent{position:relative;width:100%}#mw-js-message{font-size:0.8em}div#bodyContent{line-height:1.5em} #ca-unwatch.icon a,#ca-watch.icon a{margin:0;padding:0;outline:none;display:block;width:26px; padding-top:3.1em;margin-top:0; margin-top:-0.8em !ie;height:0;overflow:hidden;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAAAQCAMAAAClQEgHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFoNb/+vr52tXLdcP/ltL/ysKt39rPrdz/xtDT8vLwwrJxodr/vqxjzdnr8v7+ntb/uuX/i87/ytTV9fb3zuz+8eOU+fr8zvH/wuX/ecT/hbrnj7XBltb/m9T/h8z/jtH+c8H/vq53lL/Ovq109vb1/v7rx8CuhcT0xLJlot3/2PL/kc//59N3s9//v7KGbL7/mNf//v395NSLmdr//Pz7ccT/wbOIZ7v/ybZk6OzzpNf/icPu0cm2g8n/p9n/9fTzva1ouuL/samQwu3/scfhfrbj8e/q4+bnyLJQ6u3tqtr/irbG7PH5fcz/0d7ww+r/zcuL6Obh9f7/hsv/s8+r+e2rw7J2rb3C+fj2icTy1O7/jrvO1s++vMyUz8zGocna6+rn8vDtlLK8aL3/d8X///vV7fz/vraklMr039nMtNjqp97/o9362ejN4vb/zcN7sN3/vfP/bsD/1dLNhK2+yLeIkrri28drz7tp5N7TiK26grXi3trTccP/vub/rd//+v//qM7fyeHMztmq5PT8u6t0/f3+/P39ksDwk8HQtMTH3fn/kdH/ltLpxb5o0dzsnND6ssXbzun5rdru2+Dh5+vsz9nadrrx1eLz+fLM7/z/w71z//zPgMz/8eWrwtKT9vn8jbPCf7vs1N3pua1terXo1O3tqtfWwOX51cV5dMH/vtmy28p8fLXR4efx9emq///8z9TbzrxowLOP5ea57///nq2xy7xo///5frrnwrSP9PX2+vv7ztzwvd3P2vH5r9z/8/X4nMrlsN//qLq9wa5zh7fikdf/tuL9zbpo3tnQ1u/kx8rL+/z8kq+6+vLGkqKq6f//oMrfxuf8xbVwqLvSh7vq8PP3ltD6d8P/v7Ngx7dqwbFt/PGyk8jv9vf3zLhofqy/wdPqyeTc0vH9//3kxun5i7O/x87X09mr1sRzmK3C3dnQz9XXmLvg///6uc7ozLpq7O7u//zc7evoyfT/+/z+mtf/9e25zcJt7ezowMXGu8nM+Pn5////8/n77InDmQAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAJbSURBVHjaYvgPAb+3/ccK4tKxi7+4SkA9A5SWnuyJVSGXDidWcSnN6/jVQw0+s//fBWzqin9scMImvtF/62us6rfwOaEYXPLvXyM2pzn8+7dGBYt4dZ5WhjA29d3i+Sowg/d4TjuX9+9fQwnH1L8oqhIrN5//909VOdPNBEXcZ8Y7CQlHEam9Pt/Q1O/KrXNcdhSsnuFIZ3zWpLR/QMAnkhWvJA1TxVqx0mheKkj883qjVx9LYeIukRkT2P3rCtgPCGTfiLTuQKjPD3iZK1DAzv64OWD27VIG9+h/SOASB0xhwklk8XImmLilOp+IhK6XFQODrCyD+D1euPoHF50FDoPFZWQKfzIx/N/9PAiuP3oKwmOMYU9hwu8tAhHiYteidO34WbRtFZg1d65DVn+6HiJem3MrEBTGZ6taIPqDvN1RwkxxJkRcVeMLivixEwwsgpLmRfKulqjqm/jB4r08vyCp4tMhiAFPOFCj2L4cIh7KhCp+UJ1bjjlZ/6Y8L5r6PmOQuGkIEzS5vV0BMWBWOKrCGlGIeCorqvhieTlm5pRVkgYuaOpj5zLXmiqkLGeFGhwOTBRRl4EmJKEqVJsDdC3Q8B16qOITs4MNegS/B3OXoanf53s8JNbYN0cPanDSPy3vP0JVz/4tRFVo9u+uRcwbZdF/d1DFy8S5Fz3qr5ZxdkVT/3W1Rsyp1vmFS6AGP1TqAolzSK+9j6KQZ5MNiGK64sGIIr7U+gOI4pWaLoaqfjtEPRdIPdDgdiFY5hRCyaWGbDDz2CKQxdv8YOb5LcCtnuE/jQBAgAEAQlFsBT+lqfQAAAAASUVORK5CYII=);background-image:url(https://wiki.osdev.org/skins/vector/images/watch-icons.png?2012-01-04T05:30:00Z)!ie}#ca-unwatch.icon a{background-position:-43px 60%}#ca-watch.icon a{background-position:5px 60%}#ca-unwatch.icon a:hover,#ca-unwatch.icon a:focus{background-position:-67px 60%}#ca-watch.icon a:hover,#ca-watch.icon a:focus{background-position:-19px 60%}#ca-unwatch.icon a.loading,#ca-watch.icon a.loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAMQfANra2uLi4vDw8PLy8ujo6Ozs7NbW1vj4+Pb29s7Oztzc3NTU1O7u7uDg4NHR0erq6v39/d7e3vz8/Pv7+/7+/tPT09jY2Pr6+tnZ2efn5/X19eXl5ebm5vT09P///////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAwAfACwAAAAAEAAQAAAFa+Anjl9QkShacVqabp2XuKjjecHhStrjHDdIgtORiCyWSEZwud0mg0zEUhkYnNhsY/O5OCRZrEEwgvzCkgqZhGiEB1wUgRGeAFKApqcjcJ5QCx4aFQEECX1/JAlJJBsVFRMkEBkXLhyVNJkhACH5BAkDAB8ALAAAAAAQABAAAAV74CeO4hUQZEoGhqGqWzQtEnlYRCYMGSB5BkTKQCgUOBGPkjBIdQDKqBLhaJI4D6l0gylMRg6IVkmhNBIjxWBM8XAwHNFAIdYWDA0SRhNtKy0CJAUVEAcRAQJkFikZDg4EBB0RDR4dGCkIEhAjFBsBDwovKo0BoioFQiMhACH5BAkDAB8ALAAAAAAQABAAAAWB4CeO5HeU33OVl5IIpYEFh/QR1rYNZSMUAYVBwfBYbKRJwwPxFDxQjAbloECvHgMEBUBgPZTApjSxeL+eQGDUsQwkaGhBcUBYinGI5GBIEBwEGhxwVwwLFgoRHQwECgIADRFXBgUfEygfEBEDTmuYIxAJFAYwnyMFABVbpiMYGSghACH5BAkDAB8ALAAAAAAQABAAAAV+4CdKjWieKOJs6De1U5Zhg4YcmaG0kXcElQDtEWkZPMgMBGlofQDIqK9pmhAADClSEDBtAICJROvR7EQGx5LsgQAOogKm0LhQ2IDRQRJRFKIHAh4XAXknEw5REQsRBgAOEigRFBQEERofAgJiKBoZAgsXTicUDgYDoygNXU4hACH5BAUDAB8ALAAAAAAQABAAAAV54Cd+EFBNY6p+hgCssOERGwSP3eZBgUIEG0xhdGFpPMjChjNoRD6XIGBDQVo9FIcogZnsrlbLQNRQfMEewVN0ERAaaE9AoDoECGj76lBBTxQwDlYBEQweGwwqEDIHCwIbBgAAFioUBgUOdCIaBRwrBhUHNykQY6MfIQA7);background-image:url(https://wiki.osdev.org/skins/vector/images/watch-icon-loading.gif?2012-01-04T05:30:00Z)!ie;background-position:5px 60%}#ca-unwatch.icon a span,#ca-watch.icon a span{display:none}div.vectorTabs ul{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeF5lTtEKgEAMMv//j/O0IxlH9CA6N2WURAA/OHl5GeWAwUUHBcKV795FtTePxpmV3t9uv8Z3/cmvM88vzbbrAV/dQdX+eas3AAAAAElFTkSuQmCC);background-image:url(https://wiki.osdev.org/skins/vector/images/tab-break.png?2012-01-04T05:30:00Z)!ie;background-position:right bottom;background-repeat:no-repeat} .tipsy{font-size:0.8em}} + +/* cache key: wikidb:resourceloader:filter:minify-css:4:9813f17bb9dcd36e8b2c4e2efdf185fb */ diff --git a/resources/PS_2 Keyboard - OSDev Wiki_files/load_002.css b/resources/PS_2 Keyboard - OSDev Wiki_files/load_002.css new file mode 100644 index 0000000..e2f0d1f --- /dev/null +++ b/resources/PS_2 Keyboard - OSDev Wiki_files/load_002.css @@ -0,0 +1,3 @@ +div.mw-geshi div,div.mw-geshi div pre,span.mw-geshi,pre.source-css,pre.source-javascript{font-family:monospace,Courier !important} @media print{ } + +/* cache key: wikidb:resourceloader:filter:minify-css:4:990d0644862009377a1a48a78b53b366 */ diff --git a/resources/PS_2 Keyboard - OSDev Wiki_files/poweredby_mediawiki_88x31.png b/resources/PS_2 Keyboard - OSDev Wiki_files/poweredby_mediawiki_88x31.png new file mode 100644 index 0000000000000000000000000000000000000000..835e860b77d7f6d9746856d18a003c0f2cd47ece GIT binary patch literal 3605 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 + + + + + PS/2 PC Keyboard Scan Sets Translation Table + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Vetra Systems Corporation + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + KVM solutions that work +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Application Note +V-107
                                                                                                                                                                                                                                                                                                                                                                                                                                            +PS/2 PC Keyboard Scan Sets Translation Table

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             IBM + Key No.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Set 1 + Make/Break
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Set 2 + Make/Break
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Set 3 + Make/Break
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Base
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Case
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Upper + Case
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  29/A9 +  0E/F0 0E +  0E/F0 0E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             `
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             ~
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  02/82 +  16/F0 16 +  16/F0 16 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             !
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             3
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  03/83 +  1E/F0 1E +  1E/F0 1E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             @
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             4
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  04/84 +  26/F0 26 +  26/F0 26 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             3
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             #
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             5
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  05/85 +  25/F0 25 +  25/F0 25 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             4
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             $
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  06/86 +  2E/F0 2E +  2E/F0 2E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             5
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             %
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             7
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  07/87 +  36/F0 36 +  36/F0 36 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             ^
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             8
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  08/88 +  3D/F0 3D +  3D/F0 3D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             7
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             &
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             9
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  09/89 +  3E/F0 3E +  3E/F0 3E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             8
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             *
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             10
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0A/8A +  46/F0 46 +  46/F0 46 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             9
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             (
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             11
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0B/8B +  45/F0 45 +  45/F0 45 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             0
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             )
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             12
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0C/8C +  4E/F0 4E +  4E/F0 4E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             -
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             _
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             13
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0D/8D +  55/F0 55 +  55/F0 55 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             =
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             15
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0E/8E +  66/F0 66 +  66/F0 66 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Backspace
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             16
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  0F/8F +  0D/F0 0D +  0D/F0 0D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Tab
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             17
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  10/90 +  15/F0 15 +  15/F0 15 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             q
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Q
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             18
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  11/91 +  1D/F0 1D +  1D/F0 1D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             w
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             W
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             19
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  12/92 +  24/F0 24 +  24/F0 24 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             e
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             E
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             20
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  13/93 +  2D/F0 2D +  2D/F0 2D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             r
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             R
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             21
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  14/94 +  2C/F0 2C +  2C/F0 2C +

                                                                                                                                                                                                                                                                                                                                                                                                                                             t
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             T
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             22
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  15/95 +  35/F0 35 +  35/F0 35 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             y
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Y
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             23
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  16/96 +  3C/F0 3C +  3C/F0 3C +

                                                                                                                                                                                                                                                                                                                                                                                                                                             u
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             U
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             24
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  17/97 +  43/F0 43 +  43/F0 43 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             i
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             I
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             25
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  18/98 +  44/F0 44 +  44/F0 44 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             o
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             O
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             26
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  19/99 +  4D/F0 4D +  4D/F0 4D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             p
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             P
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             27
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1A/9A +  54/F0 54 +  54/F0 54 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             {
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             28
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1B/9B +  5B/F0 5B +  5B/F0 5B +

                                                                                                                                                                                                                                                                                                                                                                                                                                             ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             }
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             30
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  3A/BA +  58/F0 58 +  58/F0 58 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Caps Lock
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             31
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1E/9E +  1C/F0 1C +  1C/F0 1C +

                                                                                                                                                                                                                                                                                                                                                                                                                                             a
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             A
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             32
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1F/9F +  1B/F0 1B +  1B/F0 1B +

                                                                                                                                                                                                                                                                                                                                                                                                                                             s
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             S
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             33
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  20/A0 +  23/F0 23 +  23/F0 23 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             d
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             D
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             34
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  21/A1 +  2B/F0 2B +  2B/F0 2B +

                                                                                                                                                                                                                                                                                                                                                                                                                                             f
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             35
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  22/A2 +  34/F0 34 +  34/F0 34 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             g
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             G
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             36
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  23/A3 +  33/F0 33 +  33/F0 33 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             h
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             H
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             37
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  24/A4 +  3B/F0 3B +  3B/F0 3B +

                                                                                                                                                                                                                                                                                                                                                                                                                                             j
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             J
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             38
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  25/A5 +  42/F0 42 +  42/F0 42 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             k
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             K
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             39
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  26/A6 +  4B/F0 4B +  4B/F0 4B +

                                                                                                                                                                                                                                                                                                                                                                                                                                             l
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             L
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             40
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  27/A7 +  4C/F0 4C +  4C/F0 4C +

                                                                                                                                                                                                                                                                                                                                                                                                                                             ;
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             :
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             41
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  28/A8 +  52/F0 52 +  52/F0 52 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             '
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             "
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             43
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1C/9C +  5A/F0 5A +  5A/F0 5A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Enter
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Enter
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             44
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2A/AA +  12/F0 12 +  12/F0 12 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Left Shift
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             46
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2C/AC +  1A/F0 1A +  1A/F0 1A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             z
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             47
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2D/AD +  22/F0 22 +  22/F0 22 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             x
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             X
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             48
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2E/AE +  21/F0 21 +  21/F0 21 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             c
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             C
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             49
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2F/AF +  2A/F0 2A +  2A/F0 2A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             v
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             V
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             50
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  30/B0 +  32/F0 32 +  32/F0 32 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             b
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             B
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             51
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  31/B1 +  31/F0 31 +  31/F0 31 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             n
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             N
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             52
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  32/B2 +  3A/F0 3A +  3A/F0 3A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             m
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             M
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             53
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  33/B3 +  41/F0 41 +  41/F0 41 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             ,
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             <
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             54
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  34/B4 +  49/F0 49 +  49/F0 49 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             .
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             >
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             55
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  35/B5 +  4A/F0 4A +  4A/F0 4A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             /
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             ?
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             57
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  36/B6 +  59/F0 59 +  59/F0 59 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Right Shift
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             58
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  1D/9D +  14/F0 14 +  11/F0 11 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Left Ctrl
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             60
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  38/B8 +  11/F0 11 +  19/F0 19 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Left Alt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             61
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  39/B9 +  29/F0 29 +  29/F0 29 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Spacebar
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             62
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 38/E0 B8 +  E0 11/E0 F0 11 +  39/F0 39 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Right Alt
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             64
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 1D/E0 9D +  E0 14/E0 F0 14 +  58/F0 58 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Right Ctrl
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             75
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 52/E0 D2 (base) +  E0 70/E0 F0 70 (base) +  67/F0 67 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Insert
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             76
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 4B/E0 CB (base) +  E0 71/E0 F0 71 (base) +  64/F0 64 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Delete
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             79
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 4B/E0 CB (base) +  E0 6B/E0 F0 6B (base) +  61/F0 61 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Left Arrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             80
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 47/E0 C7 (base) +  E0 6C/E0 F0 6C (base) +  6E/F0 6E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Home
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             81
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 4F/E0 CF (base) +  E0 69/E0 F0 69 (base) +  65/F0 65 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             End
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             83
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 48/E0 C8 (base) +  E0 75/E0 F0 75 (base) +  63/F0 63 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Up Arrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             84
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 50/E0 D0 (base) +  E0 72/E0 F0 72 (base) +  60/F0 60 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Down + Arrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             85
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 49/E0 C9 (base) +  E0 7D/E0 F0 7D (base) +  6F/F0 6F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Page Up
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             86
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 51/E0 D1 (base) +  E0 7A/E0 F0 7A (base) +  6D/F0 6D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Page Down
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             89
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 4D/E0 CD (base) +  E0 74/E0 F0 74 (base) +  6A/F0 6A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Right Arrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             90
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  45/C5 +  77/F0 77 +  76/F0 76 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Num Lock
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             91
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  47/C7 +  6C/F0 6C +  6C/F0 6C +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad + 7
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             92
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  4B/CB +  6B/F0 6B +  6B/F0 6B +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 4
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             93
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  4F/CF +  69/F0 69 +  69/F0 69 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             95
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 35/E0 B5 (base) +  E0 4A/E0 F0 4A (base) +  77/F0 77 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad /
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             96
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  48/C8 +  75/F0 75 +  75/F0 75 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 8
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             97
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  4C/CC +  73/F0 73 +  73/F0 73 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 5
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             98
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  50/D0 +  72/F0 72 +  72/F0 72 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             99
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  52/D2 +  70/F0 70 +  70/F0 70 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 0
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             100
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  37/B7 +  7C/F0 7C +  7E/F0 7E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad *
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             101
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  49/C9 +  7D/F0 7D +  7D/F0 7D +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 9
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             102
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  4D/CD +  74/F0 74 +  74/F0 74 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             103
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  51/D1 +  7A/F0 7A +  7A/F0 7A +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad 3
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             104
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  53/D3 +  71/F0 71 +  71/F0 71 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad .
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             105
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  4A/CA +  7B/F0 7B +  84/F0 84 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad -
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             106
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  4E/CE +  79/F0 79 +  7C/F0 7C +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             108
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 1C/E0 9C +  E0 5A/E0 F0 5A +  79/F0 79 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Keypad Enter
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             110
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  01/81 +  76/F0 76 +  08/F0 08 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Esc
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             112
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  3B/BB +  05/F0 05 +  07/F0 07 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             113
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  3C/BC +  06/F0 06 +  0F/F0 0F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             114
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  3D/BD +  04/F0 04 +  17/F0 17 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F3
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             115
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  3E/BE +  0C/F0 0C +  1F/F0 1F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F4
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             116
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  3F/BF +  03/F0 03 +  27/F0 27 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F5
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             117
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  40/C0 +  0B/F0 0B +  2F/F0 2F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F6
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             118
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  41/C1 +  83/F0 83 +  37/F0 37 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F7
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             119
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  42/C2 +  0A/F0 0A +  3F/F0 3F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F8
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             120
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  43/C3 +  01/F0 01 +  47/F0 47 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F9
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             121
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  44/C4 +  09/F0 09 +  4F/F0 4F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F10
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             122
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  57/D7 +  78/F0 78 +  56/F0 56 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F11
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             123
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  58/D8 +  07/F0 07 +  5E/F0 5E +

                                                                                                                                                                                                                                                                                                                                                                                                                                             F12
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             124
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E0 2A E0 37/E0 B7 E0 AA +  E0 12 E0 7C/E0 F0 7C E0 F0 + 12 +  57/F0 57 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Print Screen
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             125
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  46/C6 +  7E/F0 7E +  5F/F0 5F +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Scroll Lock
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             126
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  E1 1D 45/E1 9D C5 +  E1 14 77 E1/F0 14 F0 77 +  62/F0 62 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             Pause Break
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             29 or 42*
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  2B/AB +  5D/F0 5D +  5C/F0 5C or 53/F0 53 +

                                                                                                                                                                                                                                                                                                                                                                                                                                             \
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             |

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Notes:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *42 is only applicable to non-U.S. + keyboards. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Some key numbers and scan code + numbers are missing and reserved by IBM. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • In set 1, shift case adds an + E0 AA preceding the make code, and an E0 2A following the break + code (for applicable keys only). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • In set 1, num lock case adds + an E0 2A preceding the make code, and an E0 AA following the + break code (for applicable keys only). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • In set 2, shift case adds an + E0 F0 12 preceding the make code, and an E0 12 following the + break code (for applicable keys only). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • In set 2, num lock case adds + an E0 12 preceding the make code, and an E0 F0 12 following the + break code (for applicable keys only). +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Set 2 is the default set. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Source: IBM PS/2 Model 50 and 60 Technical Reference
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Home + ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                              [ Products + ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                              [ About + Us ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Site + Map ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Contact + Us ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Order + Info ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ What's + New ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ KVM + Switches ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Dual-Head + KVM Switches ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                              [ Touch + Screen Products ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Video + Products ] 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ KVM + Splitters ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ PC + Keyboard Encoders ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Keyboard + & Mouse Terminators ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ KVM + Extenders ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Safe + Computing Products ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Foot-operated + Devices ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Protocol + Converters ]
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                             [ Accessories + ]

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  Vetra Systems Corporation logo +

                                                                                                                                                                                                                                                                                                                                                                                                                                             VETRA Systems + Corporation
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            275 Marcus Blvd. Ste-J + Hauppauge, NY 11788-2022 USA
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Toll Free 1-800-537-9296
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Tel: 631-434-3185 Fax: 631-434-3516 e-mail: + sales@vetra.com
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            \ No newline at end of file diff --git a/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/kvmsolutions.gif b/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/kvmsolutions.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c0e0b153dbfbaf1543de9bfd1ccf995f82945d6 GIT binary patch literal 3675 zcmeH``#;l*AICr2Tt+T)tGVP%8H-|ME}=6NLrf#L5av#&$)$z94Re{sTq8|qVMKIL z6w)yU6 z7|g)Hz{0}9+1Z&uAP|Yfl$4ar%uG6+&SWy%+uH{Q26#N4Kp+r_L}IB_B$aYSV!l|~ zE)-MwqD;O>AeMFu#gzgvoi9q{iJS+709(KnNe6^tra+v+69scc1g^+qKxok|+|wu29VWbxlm=i4uRZ1EM{@5TWqrQ-QdW zFQ)TEDO^$TfQZQ#XL3cv0TEv$?f!}I#9X12%@XjY3s|TW073O|9V|{RRKp}>tmEqa0@!X3Ca$x75%!Mi~ef=WuZO5)P{7 zZAlw!WIwogAaa7Ky^*7WJdkA4ONxlaU$M{K(rj&vdu-s5j|w%3D5N6s(YPNU4HU|* z+o$WzWyll;AaqI*?<{)u&gmbXYV~@M-oDU7dNEP#8SqDtau{P3u^urF+i4`P9_M@q z4ax=ADghrUBrwMdx)<>s@d+eDRkMbN+@S&TV2G6kdJ0L@e0thm8#$a zDW}(qIuk?Amo@xbq95`0$bqO8`CaxglOJ2Jo-ft{zQJ--tve7ys)nV5+1t!3DG(L( zAZ17a<##Pdac9)Em-%|>%P$KM`KVWgh8N>r(NIm#t}5Do_i<50b8-AY$5i%gm^&^{ zBfP&;_?m&0+p|=9$oaE=)~>Q!<>ls>ahY(d!!7qASmiv;bA;#?wvv15yEoP0`SDt6 z#IU?${&DraRsJEM2x8cYbH|9P*s1u~I`UAUka>1uS@ zcX-yo4JFFvic66b0v`@VSr6%e&D_WF;%Z%hDA06YHY5ngzE)ck45g`vdbZg{=W4~G!&Rh3|=WL8FvdS+%lhfxtuwZugQ{Vd! zcf%hoAP1sr<2UC5Usk8rCS7ka3J95z#4s&Z7H0lD_br|;i2Wp8JM)4f-A7)eZtNu9 zBkiw!-S6QrNObz!GBX%L+vn;-^wNA7q#>(RiH(IKeOBXy7N1Sq_S;`iiG5b5ve$XV z!asr6T(#vBS!deb@6vC#_OF|lF>S2}zg-o1n_yHm-Jl-jJ|ho@WplzL?3Ncw2%yX{ z?8lc`7iDQXY)Ecz2PHhm+)9E_(hMd?$irJv((j*V%_E_`YKU78pamvA_q||M334tv zz^k@c86V0uv)gtWT8$#o33uCu^T`a`rq^bg^qk)c4= zjJCS7>j4#*@)-hrkX3v`L2(KJH9*&l0Hs#_zQH1?jOB3L4{xN;eZFVkVU5wy!DPRu z<5_e9n^drKr=y~!j}R)gN_JI3%i zs9SI*;Eu?>Us5`ezS|SqtPgb(G&U>1Y*`Q{q<0dhk_V8Z42;SFOi6QMaq*8t1v%^n|Sgvjz+l;XT%GqPId~RipDBP0p1N z>KhxAJ>n^kkfV$|i?LHBuWx3DOrjS-i(nA+${dt(W_K^mmsS1STDI(7ZBqOu762

                                                                                                                                                                                                                                                                                                                                                                                                                                            UEf+*|48vPSoO4-0IitG1K}4FN=h7RJK?1 zE}~4UqlFh%Y&eaEsE^# z${fXnso(T*;gwx|n#t-t*hVQP+xD`33)VkxA}6aPtth$h{ZMU9ntFU%TLq7_!`Y6g zWte{8LX8qK$Ihp|3YV}3HD`>4-X5YJUv#{3q|}CO9Q-bXQ9iqIr2uqq{`yI`Dg36S zAzMEV$O3d=K06axV+qzyfC^e61RcHuE*Ufr_xZMca#7A+!hw}^P>qkgl-IQ#EZ540 zrI%hFS^dkuLGcC_9bg4jH!A2_nsg$K!@-872t^bCQY>{*-cki&df+AdxR-XChL7r3 zSrkXmUmxPZ%T;ld3ks!_znrJ@e$xeHl&}DVo(8fs8U!7}Of4@3T6Y|Ixf)f?`H1SB zApXNkfwBG$w3C;D5ckYVi>`$-(8c{nH$EJXcNWyxde;nn=ikmER1(eJ6cwb$zz3d< zn7dZcqx*K;yBBX`PuqA>bMQHH(w%x^ey-Gr8F(_cr^P!+C8s8ceg^7;A2-khu|477 zo?OqjxJv6#L6C~E&d%We4I+~`c*=caK}Is)C)bJj8QCPu<8~2@aZIV5N!>B`HU%Zb z#gma_9a%I$tv5Laz@|)w;EM&Pw~mS^?qSi~#IW~OVJA9mP7Kc5yJBET%5kNl|ETu7 z_@=*_ka>VKq@stF9F}kb!UOX)?sh2Iv<l1gsywI`T8uTTxm4*p?he=VCbGYtqV-iSky9poQLP=(eG(`CB)EZKcuA3V4rcb+IYfETj|_ zk$e2;t^!cqleOo%UHmn!al%=B0s1QWNb+O1vw;tO@2iarFmv7SIsF+KMX(NVqQo^= z&!ia5S8Bys*@S)aTKepD$vV5*b+;NS#YP={r3Zb?EoPUYY5rrJzCWCC6hAiObSVnn z^(7VfcpOa8)89C*8kr>vb|YL z&ZJRov;CHKMtM6qk*E=M3`fHS8<5(a7xpY~<%y=n;CZ5L{&{)wTAop^&57@vjLqm% zq-Do1vb(qZWwz2ua<@q;v!qNYB1=MojgmCaBp0y*wQrMk0}j&Jh5Ew466sj7-fVLD zGPwjtGZm52t6Y}#4lK6g>=jwSv5OSM2U#{03u!wrx+CBXO7nWtl6k6l1d zDzs*OPYD`MePxr2Hu}&&V=M`S!B5+cM`@~J&E78Zg0d$e*I`tD|8p=Hw0W>uJW(y#sh E0$zZ){r~^~ literal 0 HcmV?d00001 diff --git a/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/logo_250.jpg b/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/logo_250.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a1cb7a8fd6fdd0d32c0df2796d0bcbe227ef757 GIT binary patch literal 5111 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 b7ruGA-4$UoJ(G6}W_qU|wdnRi5QzN?&bd;N literal 0 HcmV?d00001 diff --git a/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navnews1.gif b/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navnews1.gif new file mode 100644 index 0000000000000000000000000000000000000000..84bb3444ac00332207b1280df876646f022179f6 GIT binary patch literal 1477 zcmeH`{ZAVO9EZQx7r2$iT>!hDgK}ll9i%a>fWkCd3QX#v7Pirj6ggIdq!5Rhm^p~) zjY&AmuIic&6KH`45Cnl21Wpi=9MAAVgyk1lzCXzsB5aZqVk{qGcu$6RCb{ky*Sx^J z6k&B?RvBV3KZE)imKVYd@5}I>BzGvrwQc~MAu#&(3J_T?Xur^ z_QbWR>O;TXHuf$#>F4QJP~G>z#Xz2GSN&s8Ipw(8vU_r_ zA^O@56$B6|ErTa#rP%RHTj4%VMT z1H-vKs!OsyZaylLfa&N53S+K5hje0FktXB|+S}Z6(tsYRvY7K;2x_CCaApl4Ua$F~ z?##7QSfEE;8F1v0=*U!CiFV!&#gY?*y!++!(!Tvc%q*4doxSt!-EbQAiQVxP<+uG|LHM zFDtYJg>wP^sGl!b0C;0Bx4xHK>EbjC7>Bj6(8AI|p~lab4DkgX&f?+KGzaI{ATN5@ zzh1%5iLRi~5)hz{WqFYoMEI}&3;e4Ek{5y&z5tjA1}r{tw$5P3@DB5+^7C**c!H5O z_jNrxt4=#KIofyQ`2`|vvm&>7YP30VLr30==&vtZ^(8Oq+=1>_ZRtn9PrexFd3~L9 zeAqZnjWkM$qUbk_rbMzxS=7-KD$bI+mZZRhj4(;gEbBoNo9;P>`@?fUiL?@OK(doZ z3Vx1+0~ViNy=7hLZmRHASNrY!l-*D4Va|EtO6mxvFRm@L0^`79)G=837m||1qBpJ8 zhyfiWQny)~$ftXvA(gheZHPT4j`Y@dhB75l-K(6><_R|$tJoJSogGF`1Cs3gmJtVX z8BFbHpq5ryJpDa7aV$e)Yy^E`t$EzD=Ir?;cQ$QAYLL@?xh5zJbydr7L<_^xRYVzD z8L5!A9l=3K$)`<#Dsb9O)#}`WtproO+j;7}>L6v%0OP|Gfb^Zz=gp#3L>9KVT1P;p zMV3B~)a!07zg+mc+&m@?gU~g3ls6Qrm#c4HiZEBI5Wp)KDs0enYs{|G>U~n()P%22 zl>rQzO6OA-jgb}htMIpEvx-)JYOMTXLTmQ-<)HX@J85&I-93iN^yV_BgOJz&i^@|n z;Z+*uO7@(_{ZQM_iJdasR%$q&pd}5KxU~~+ zx5uZ%7^KCK6{UtK?};P*nQP{Ju4r}A*ua6+A6H}<8;(tz;){~rJP0);%{-iHJv=k` at^4-Oqv`uUW**P_lX&l3@S}x<4SxV?99mKU literal 0 HcmV?d00001 diff --git a/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navprod1.gif b/resources/PS_2 PC Keyboard Scan Sets Translation Table_files/navprod1.gif new file mode 100644 index 0000000000000000000000000000000000000000..1fa71b306170339a29db566b0afae24e6c15909e GIT binary patch literal 1344 zcmeH`-%C?*0L8!Cy|cUPHKwjPbIPvW5os+^(JPAbkq3QZ)>>+6Yi zig6O&I2~;w!@aPcaFYz^AP9<~Xa*eXc!B@CK+IA9(H8*1fOJHZ<1oA0kw96=q9feJ zKN+af=S&R0>k-D+Y%ETUEIbsacZ+f-N0<7e@@*wcla>#I^2+z7+}F=mo}7vNY5)=Q z8QlTWfTrieX(VEfYC$im~Pa0`!^EJ+#(lqHG z06`@tq?PFP)M^$O7++uk-$hO@ChPE|)d8_`Hv9I<&vh&i*(=1NC4<^VV?`!@S2}9l zgvvs1sE{9NyKF965VVz5G;}$S%~o`>IV=UP#aL$i6B-NC1r5UKM^7Q~vV6{GJX*7Z ziS%*}bRKRl%??mh^GZ|}Jgvx4dSbSnB@xf%ONE&(^fULGp=^LNSj9GR%$j>4T8~T3 z$=#Y&Vo467Sft>!!TyLu3x$fO)(ZQQnvGD1X-W%8Q>?wV&Qy5dO0_-m%l?a+?WzO& j^q%eD<=bET2d{9Svxkm(LG9thqV)OU + + + + + + + + + + The PS/2 Keyboard Interface + + + + + The PS/2 +Keyboard Interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Source: http://www.Computer-Engineering.org
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Author: Adam Chapweske
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Last Updated: 04/01/03
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Legal Information:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + All information within this article is provided "as is" and without +any express or implied warranties, including, without limitation, the implied + warranties of merchantibility and fitness for a particular purpose.  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + This article is protected under copyright law.  This document may + be copied only if the source, author, date, and legal information is included.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Abstract:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + This article tries to cover every aspect of AT and PS/2 keyboards.  + It includes information on the low-level signals and protocol, scan codes, + the command set, initialization, compatibility issues, and other miscellaneous + information.  Since it's closely related, I've also included information + on the PC keyboard controller.  All code samples involving the keyboard + encoder are written in assembly for Microchip's + PIC microcontrollers.  All code samples related to the keyboard +controller are written in x86 assembly
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            A History Lesson:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The most popular keyboards in use today include:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • USB keyboard - Latest keyboard supported by all new computers (Macintosh + and IBM/compatible).  These are relatively complicated to interface + and are not covered in this article.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • IBM/Compatible keyboards - Also known as "AT keyboards" or "PS/2 + keyboards", all modern PCs support this device.  They're the easiest + to interface, and are the subject of this article.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • ADB keyboards - Connect to the Apple Desktop Bus of older Macintosh + systems.  These are not covered in this article 
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + IBM introduced a new keyboard with each of its major desktop computer + models.  The original IBM PC, and later the IBM XT, used what we +call the "XT keyboard."  These are obsolete and differ significantly +from modern keyboards; the XT keyboard is not covered in this article.  + Next came the IBM AT system and later the IBM PS/2.  They introduced + the keyboards we use today, and are the topic of this article.  AT + keyboards and PS/2 keyboards were very similar devices, but the PS/2 device + used a smaller connector and supported a few additional features.  + +Nonetheless, it remained backward compatible with AT systems and few of +the additional features ever caught on (since software also wanted to +remain backward compatible.)  Below is a summary of IBM's three major +keyboards. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            IBM PC/XT Keyboard (1981):

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 83 keys
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 5-pin DIN connector
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Simple uni-directional serial protocol
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Uses what we now refer to as scan code set 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • No host-to-keyboard commands
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + IBM AT Keyboard (1984) - Not backward compatible with XT systems(1). + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 84 -101 keys
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 5-pin DIN connector
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Bi-directional serial protocol
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Uses what we now refer to as scan code set 2
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Eight host-to-keyboard commands
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + IBM PS/2 Keyboard (1987) - Compatible with AT systems, not compatible + with XT systems(1). + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 84 - 101 keys
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 6-pin mini-DIN connector
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Bi-direction serial protocol
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Offers optional scan code set 3
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 17 host-to-keyboard commands 
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The PS/2 keyboard was originally an extension of the AT device.  + It supported a few additional host-to-keyboard commands and featured +a smaller connector.  These were the only differences between the +two devices.  However, computer hardware has never been about standards + as much as compatibility.  For this reason, any keyboard you buy +today will be compatible with PS/2 and AT systems, but it may not +fully support all the features of the original devices. + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Today, "AT keyboard" and "PS/2 keyboard" refers only to their connector + size.  Which settings/commands any given keyboard does or does not + support is anyone's guess.  For example, the keyboard I'm using right + now has a PS/2-style connector but only fully supports seven commands, partially + supports two, and merely "acknowledges" the rest.  In contrast, my + "Test" keyboard has an AT-style connector but supports every feature/command + of the original PS/2 device (plus a few extra.)  It's important you + treat modern keyboards as compatible, not standard.  If your design +a keyboard-related device that relies on non-general features, it may work +on some systems, but not on others...

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Modern PS/2 (AT) compatible keyboards

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Any number of keys (usually 101 or 104)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 5-pin or 6-pin connector; adaptor usually included
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Bi-directional serial protocol
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Only scan code set 2 guaranteed.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Acknowledges all commands; may not act on all of them.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Footnote 1) XT keyboards use a completely different protocol + than that used by AT and PS/2 systems, making it incompatible with the + newer PCs.  However, there was a transition period where some keyboard + controllers supported both XT and AT (PS/2) keyboards (through a switch, +jumper, or auto-sense.)  Also, some keyboards were made to work on +both types of systems (again, through the use of a switch or auto-sensing.)  +If you've owned such a PC or keyboard, don't let it fool you--XT keyboards +are NOT compatible with modern computers. + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            General Description:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Keyboards consist of a large matrix of keys, all of which are monitored + by an on-board processor (called the "keyboard encoder".)  The specific + processor(1) varies + from keyboard-to-keyboard but they all basically do the same thing:  + Monitor which key(s) are being pressed/released and send the appropriate + data to the host.  This processor takes care of all the debouncing +and buffers any data in its 16-byte buffer, if needed.  Your motherboard + contains a "keyboard controller"(2) that is in charge of decoding + all of the data received from the keyboard and informing your software of + what's going on.  All communication between the host and the keyboard + uses an IBM protocol. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Footnote 1)  Originally, IBM used the Intel 8048 microcontroller + as its keyboard encoder.  There are now a wide variety of keyboard + encoder chips available from many different manufacturers.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + Footnote 2) Originally, + IBM used the Intel 8042 microcontroller as its keyboard controller.  + This has since been replaces with compatible devices integrated in motherboards' + chipsets. The keyboard controller is covered later in this article. + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Electrical Interface / Protocol:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The AT and PS/2 keyboards use the same protocol as the PS/2 mouse.  + Click here for detailed information on + this protocol.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Scan Codes:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Your keyboard's processor spends most of its time "scanning", or monitoring, + the matrix of keys.  If it finds that any key is being pressed, released, + or held down, the keyboard will send a packet of information known as a +"scan code" to your computer.  There are two different types of scan +codes: "make codes" and "break codes".  A make code is sent when +a key is pressed or held down.  A break code is sent when a key is +released.  Every key is assigned its own unique make code and break +code so the host can determine exactly what happened to which key by looking + at a single scan code.  The set of make and break codes for every key + comprises a "scan code set".  There are three standard scan code sets, + named one, two, and three.  All modern keyboards default to set two.(1)

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            So how do you figure out what the scan codes are for each key?  + Unfortunately, there's no simple formula for calculating this.  If + you want to know what the make code or break code is for a specific key, + you'll have to look it up in a table.  I've composed tables for all +make codes and break codes in all three scan code sets:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Footnote 1) Originally, the AT keyboard only supported set + two, and the PS/2 keyboard would default to set two but supported all three.  + Most modern keyboards behave like the PS/2 device, but I have come across + a few that didn't support set one, set three, or both.  Also, if +you've ever done any low-level PC programming, you've probably notice +the keyboard controller supplies set ONE scan codes by default.  This +is because the keyboard controller converts all incomming scan codes to +set one (this stems from retaining compatibility with software written for +XT systems.)  However, it's still set two scan codes being sent down +the keyboard's serial line.  + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Make Codes, Break Codes, and Typematic Repeat:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Whenever a key is pressed, that key's make code is sent to the computer.  + Keep in mind that a make code only represents a key on a keyboard--it + does not represent the character printed on that key.  This means + that there is no defined relationship between a make code and an ASCII code.  + + It's up to the host  to translate scan codes to characters or commands. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Although most set two make codes are only one-byte wide, there are a + handfull of "extended keys" whose make codes are two or four bytes wide.  + These make codes can be identified by the fact that their first byte is + E0h. 

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Just as a make code is sent to the computer whenever a key is pressed, + a break code is sent whenever a key is released.  In addition to +every key having its own unique make code, they all have their own unique +break code(1).  Fortunately, + however, you won't always have to use lookup tables to figure out a key's + break code--certain relationships do exist between make codes and break + codes.  Most set two break codes are two bytes long where the first + byte is F0h and the second byte is the make code for that key.  Break + codes for extended keys are usually three bytes long where the first two +bytes are E0h, F0h, and the last byte is the last byte of that key's make +code.  As an example, I have listed below a the set two make codes and +break codes for a few keys: 

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Key
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            (Set 2)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Make Code
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            (Set 2)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Break Code
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            "A"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1C
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            F0,1C
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            "5"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            2E
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            F0,2E
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            "F10"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            09
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            F0,09
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Right Arrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            E0, 74
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            E0, F0, 74
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Right "Ctrl"
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            E0, 14
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            E0, F0, 14
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Example:  What sequence of make codes and break codes should + be sent to your computer for the character "G" to appear in a word processor?  + Since this is an upper-case letter, the sequence of events that need to + take place are: press the "Shift" key, press the "G" key, release the "G" + key, release the "Shift" key.  The scan codes associated with these + events are the following:  make code for the "Shift" key (12h), make + code for the "G" key (34h), break code for the "G" key(F0h,34h), break code + for the "Shift" key (F0h,12h).  Therefore, the data sent to your computer + would be: 12h, 34h, F0h, 34h, F0h, 12h.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + If you press a key, its make code is sent to the computer.  +When you press and hold down a key, that key becomes typematic, +which means the keyboard will keep sending that key's make code until the +key is released or another key is pressed.  To verify this, open a text +editor and hold down the "A" key.  When you first press the key, the +character "a" immediately appears on your screen.  After a short delay, +another "a" will appear followed by a whole stream of "a"s until you release +the "A" key.  There are two important parameters here:  the typematic + delay, which is the short delay between the first and second "a", +and the typematic rate, which is how many characters per second +will appear on your screen after the typematic delay.  The typematic +delay can range from 0.25 seconds to 1.00 second and the typematic rate +can range from 2.0 cps (characters per second) to 30.0 cps.  You may +change the typematic rate and delay using the "Set Typematic Rate/Delay" +(0xF3) command. + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Typematic data is not buffered within the keyboard.  In the case + where more than one key is held down, only the last key pressed becomes + typematic.  Typematic repeat then stops when that key is released, + even though other keys may be held down.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            + Footnote 1) Actually, the "Pause/Break" key does not have + a break code in scan code sets one and two.  When this key is pressed, + its make code is sent; when it's released, it doesn't send anything.  So + how do you tell when this key has been released?  You can't.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Reset:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            At power-on or software reset (see the "Reset" command) the keyboard + performs a diagnostic self-test referred to as BAT (Basic Assurance Test) + and loads the following default values: 

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Typematic delay 500 ms.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Typematic rate 10.9 cps.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Scan code set 2.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Set all keys typematic/make/break.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When entering BAT, the keyboard enables its three LED indicators, and + turns them off when BAT has completed.  At this time, a BAT completion + code of either 0xAA (BAT successful) or 0xFC (Error) is sent to the host. +   This BAT completion code must be sent 500~750 milliseconds after +power-on.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Many of the keyboards I've tested ignore their CLOCK and DATA lines until +after the BAT completion code has been sent.  Therefore, an +"Inhibit" condition (CLOCK line low) may not prevent the keyboard from + sending its BAT completion code.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Command Set:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            A few notes regarding commands the host can issue to the keyboard:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • The keyboard clears its output buffer when it recieves any command.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • If the keyboard receives an invalid command or argument, it must +respond with "resend" (0xFE).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • The keyboard must not send any scancodes while processing a command.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • If the keyboard is waiting for an argument byte and it instead +receives a command, it should discard the previous command and process this + new one.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Below are all the commands the host may send to the keyboard:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xFF (Reset) - Keyboard responds with "ack" (0xFA), then enters + "Reset" mode.  (See "Reset" section.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xFE (Resend) - Keyboard responds by resending the last-sent byte. +  The exception to this is if the last-sent byte was "resend" (0xFE). +  If this is the case, the keyboard resends the last non-0xFE byte. +  This command is used by the host to indicate an error in reception.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            The next six commands can be issued when the keyboard is in any +mode, but it only effects the behavior of the keyboard when in "mode 3" +(ie, set to scan code set 3.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xFD (Set Key Type Make) - Disable break codes and typematic repeat + for specified keys.  Keyboard responds with "ack" (0xFA), then disables + scanning (if enabled) and reads a list of keys from the host.  These + keys are specified by their set 3 make codes.  Keyboard responds to + each make code with "ack".  Host terminates this list by sending an +invalid set 3 make code (eg, a valid command.)  The keyboard then re-enables + scanning (if previously disabled).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xFC (Set Key Type Make/Break) - Similar to previous command, + except this one only disables typematic repeat.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xFB (Set Key Type Typematic) - Similar to previous two, except + this one only disables break codes.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xFA (Set All Keys Typematic/Make/Break) - Keyboard responds with + "ack" (0xFA).  Sets all keys to their normal setting (generate scan +codes on make, break, and typematic repeat)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xF9 (Set All Keys Make) - Keyboard responds with "ack" (0xFA). +  Similar to 0xFD, except applies to all keys.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xF8 (Set All Keys Make/Break) - Keyboard responds with "ack" + (0xFA).  Similar to 0xFC, except applies to all keys.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xF7 (Set All Keys Typematic) - Keyboard responds with "ack" (0xFA). +  Similar to 0xFB, except applies to all keys.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xF6 (Set Default) - Load default typematic rate/delay (10.9cps + / 500ms), key types (all keys typematic/make/break), and scan code set (2).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xF5 (Disable) - Keyboard stops scanning, loads default values + (see "Set Default" command), and waits further instructions.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xF4 (Enable) - Re-enables keyboard after disabled using previous + command.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xF3 (Set Typematic Rate/Delay) - Host follows this command with + one argument byte that defines the typematic rate and delay as follows:
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + . +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Repeat Rate
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Bits 0-4
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Rate(cps)
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Bits 0-4
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Rate(cps)
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Bits 0-4
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Rate(cps)
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Bits 0-4
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Rate(cps)
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              00h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              30.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              08h
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              15.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              10h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              7.5
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              18h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              3.7
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              01h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              26.7
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              09h
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              13.3
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              11h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              6.7
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              19h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              3.3
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              02h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              24.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0Ah
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              12.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              12h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              6.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1Ah
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              3.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              03h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              21.8
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0Bh
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              10.9
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              13h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              5.5
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1Bh
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              2.7
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              04h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              20.7
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0Ch
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              10.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              14h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              5.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1Ch
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 2.5
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              05h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              18.5
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0Dh
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              9.2
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              15h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              4.6
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1Dh
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              2.3
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              06h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              17.1
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0Eh
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              8.6
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              16h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              4.3
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1Eh
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              2.1
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              07h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              16.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0Fh
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              8.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              17h
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              4.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1Fh
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 2.0
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                              Delay

                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Bits 5-6
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              Delay (seconds)
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              00b
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0.25
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              01b
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0.50
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              10b
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              0.75
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              11b
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              1.00
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +  
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xF2 (Read ID) - The keyboard responds by sending a +two-byte device ID of 0xAB, 0x83. (0xAB is sent first, followed by 0x83.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • *0xF0 (Set Scan Code Set) -  Keyboard responds with "ack", + then reads argument byte from the host.  This argument byte may be 0x01, + 0x02, or 0x03 to select scan code set 1, 2, or 3, respectively.  The + keyboard responds to this argument byte with "ack".  If the argument + byte is 0x00, the keyboard responds with "ack" followed by the current scan + code set.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xEE (Echo) - The keyboard responds with "Echo" (0xEE).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xED (Set/Reset LEDs) - The host follows this command with one + argument byte, that specifies the state of the keyboard's Num Lock, Caps + Lock, and Scroll Lock LEDs.  This argument byte is defined as follows:
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            MSb
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            LSb
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Always 0Always 0Always 0Always 0Always 0Caps LockNum LockScroll Lock
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • "Scroll Lock" - Scroll Lock LED off(0)/on(1)
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • "Num Lock" - Num Lock LED off(0)/on(1)
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • "Caps Lock" - Caps Lock LED off(0)/on(1)
                                                                                                                                                                                                                                                                                                                                                                                                                                              • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + *Originally available in PS/2 keyboards only. + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Emulation:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + Click here for keyboard/mouse routines.  Source in MPASM for + PIC microcontrollers. + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The i8042 Keyboard Controller: + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Up to this point in the article, all information has been presented +from a hardware point-of-view.  However, if you're writing low-level + keyboard-related software for the host PC, you won't be communicating +directly with the keyboard.  Instead, a keyboard controller provides +an interface between the keyboard and the peripheral bus.  This controller +takes care of all the signal-level and protocol details, as well as providing + some conversion, interpretation, and handling of scan codes and commands.  +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            An Intel 8042/compatible microcontroller is used as the PC's keyboard + controller.  In modern computers, this microcontroller is hidden within + the motherboard's chipset, which integrates many controllers in a single + package.  Nonetheless, this device is still there, and the keyboard + controller is still commonly referred to as "the 8042".

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Depending on the motherboard, the keyboard controller may operate in + one of two modes: "AT-compatible" mode, or "PS/2-compatible" mode.  + The latter is used if a PS/2 mouse is supported by the motherboard.  + If this is the case, the 8042 acts as the keyboard controller and the +mouse controller.  The keyboard controller auto-detects which mode +it is to use according to how it's wired to the keyboard port.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The 8042 contains the following registers:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • A one-byte input buffer - contains byte read from keyboard; read-only
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • A one-byte output buffer - contains byte to-be-written to keyboard; + write-only
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • A one-byte status register - 8 status flags; read-only
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • A one-byte control register - 7 control flags; read/write 
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The first three registers (input, output, status) are directly accessible + via ports 0x60 and 0x64.  The last register (control) is read using + the "Read Command Byte" command, and written using the "Write Command Byte" + command.  The following table shows how the peripheral ports are +used to interface the 8042:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +   +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Read / 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Write
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Function
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x60ReadRead Input Buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x60WriteWrite Output Buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x64ReadRead Status Register
                                                                                                                                                                                                                                                                                                                                                                                                                                            0x64WriteSend Command
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Writing to port 0x64 doesn't write to any specific register, but sends + a command for the 8042 to interpret.  If the command accepts a parameter, + this parameter is sent to port 0x60.  Likewise, any results returned + by the command may be read from port 0x60.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When describing the 8042, I may occasionally refer to its physical I/O + pins.  These pins are defined below:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            AT-compatible mode

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port 1 (Input Port): + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PinNameFunction
                                                                                                                                                                                                                                                                                                                                                                                                                                            0P10
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            1P11
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            2P12
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            3P13
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            4P14External RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Enable external RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0: Disable external RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            5P15Manufacturing Setting
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Setting enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0: Setting disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            6P16Display Type Switch
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Color display
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0: Monochrome
                                                                                                                                                                                                                                                                                                                                                                                                                                            7P17Keyboard Inhibit Switch
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Keyboard enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + 0: Keyboard inhibited
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port 2 (Output Port): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PinNameFunction
                                                                                                                                                                                                                                                                                                                                                                                                                                            0P20System Reset
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Normal
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: Reset computer
                                                                                                                                                                                                                                                                                                                                                                                                                                            1P21
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Gate A20
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            2P22
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            3P23
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            4P24
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Input Buffer Full
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            5P25
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Output Buffer Empty
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            6P26Keyboard Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Pull Clock low
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: High-Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            7P27Keyboard Data:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Pull Data low
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: High-Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port 3 (Test Port): + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PinNameFunction
                                                                                                                                                                                                                                                                                                                                                                                                                                            0T0Keyboard Clock 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Input)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            1T1Keyboard Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Input)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            2--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            3--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            4--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            5--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            6--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            7--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2-compatible mode

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port 1 (Input Port): + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PinNameFunction
                                                                                                                                                                                                                                                                                                                                                                                                                                            0P10Keyboard Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Input)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            1P11Mouse Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Input)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            2P12
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            3P13
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            4P14External RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Enable external RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: Disable external RAM
                                                                                                                                                                                                                                                                                                                                                                                                                                            5P15Manufacturing Setting
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Setting enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: Setting disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            6P16Display Type Switch
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Color display
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: Monochrome
                                                                                                                                                                                                                                                                                                                                                                                                                                            7P17Keyboard Inhibit Switch
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Keyboard enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: Keyboard disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port 2 (Output Port): + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PinNameFunction
                                                                                                                                                                                                                                                                                                                                                                                                                                            0P20System Reset
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Normal
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: Reset computer
                                                                                                                                                                                                                                                                                                                                                                                                                                            1P21
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Gate A20
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            2P22Mouse Data:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Pull Data low
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: High-Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            3P23Mouse Clock:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Pull Clock low
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: High-Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            4P24Keyboard IBF interrupt:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Assert IRQ 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: De-assert IRQ 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            5P25Mouse IBF interrupt:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Assert IRQ 12
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: De-assert IRQ 12
                                                                                                                                                                                                                                                                                                                                                                                                                                            6P26Keyboard Clock:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Pull Clock low
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: High-Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            7P27Keyboard Data:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1: Pull Data low
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 0: High-Z
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Port 3 (Test Port): + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PinNameFunction
                                                                                                                                                                                                                                                                                                                                                                                                                                            0T0Keyboard Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Input)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            1T1Mouse Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Input)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            2--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            3--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            4--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            5--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            6--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            7--
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Undefined
                                                                                                                                                                                                                                                                                                                                                                                                                                            + .
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            (Note: Reading keyboard controller datasheets can be confusing--it will + refer to the "input buffer" as the "output buffer" and vice versa.  + This makes sense from the point-of-view of someone writing firmware for + the controller, but for somebody used to interfacing the controller, this + can cause problems.  Throughout this document, I only refer to the +"input buffer" as the one containing input from the keyboard, and the "output + buffer" as the one that contains output to be sent to the keyboard.) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Status Register:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The 8042's status flags are read from port 0x64.  They contain +error information, status information, and indicate whether or not data +is present in the input and output buffers.  The flags are defined as + follows:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +  

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            MSb
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            LSb
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            AT-compatible mode: + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PERR
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            RxTO
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            TxTO
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            INH
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            A2
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            SYS
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            IBF
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            OBF
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2-compatible mode:  + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PERR
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            TO
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            MOBF
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            INH
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            A2
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            SYS
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            IBF
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            OBF
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • OBF (Output Buffer Full) - Indicates when it's okay to write to + output buffer.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: Output buffer empty - Okay to write to port 0x60
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Output buffer full - Don't write to port 0x60
                                                                                                                                                                                                                                                                                                                                                                                                                                            • IBF (Input +Buffer Full) - Indicates when input is available in the input buffer.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + + 0: Input buffer empty - No unread input at port 0x60
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Input buffer full - New input can be read from port 0x60
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +SYS (System flag) - Post reads this to determine if power-on reset, or +software reset.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: Power-up value - System is in power-on reset.
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: BAT code received - System has already beed initialized.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +A2 (Address line A2) - Used internally by the keyboard controller
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: A2 = 0 - Port 0x60 was last written to
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: A2 = 1 - Port 0x64 was last written to
                                                                                                                                                                                                                                                                                                                                                                                                                                            • INH (Inhibit flag) +- Indicates whether or not keyboard communication is inhibited.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: Keyboard Clock = 0 - Keyboard is inhibited
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Keyboard Clock = 1 - Keyboard is not inhibited
                                                                                                                                                                                                                                                                                                                                                                                                                                            • TxTO (Transmit + Timeout) - Indicates keyboard isn't accepting input (kbd may not be plugged + in).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: No Error - Keyboard accepted the last byte written to it.
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Timeout error - Keyboard didn't generate clock signals within +15 ms of "request-to-send".
                                                                                                                                                                                                                                                                                                                                                                                                                                            • RxTO (Receive Timeout) - Indicates keyboard + didn't respond to a command (kbd probably broke)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: No Error - Keyboard responded to last byte.
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Timeout error - Keyboard didn't generate clock signals within +20 ms of command reception.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • PERR (Parity Error) - Indicates communication + error with keyboard (possibly noisy/loose connection)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: No Error - Odd parity received and proper command response recieved. +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Parity Error - Even parity received or 0xFE received as command + response.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • MOBF (Mouse Output Buffer Full) - Similar to OBF, + except for PS/2 mouse.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: Output buffer empty - Okay to write to auxillary device's output + buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Output buffer full - Don't write to port auxillary device's output + buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                            • TO (General Timout) - Indicates timeout during command + write or response. (Same as TxTO + RxTO.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 0: No Error - Keyboard received and responded to last command.
                                                                                                                                                                                                                                                                                                                                                                                                                                              + 1: Timeout Error - See TxTO and RxTO for more information. + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + [EG: On my PC, the normal value of the 8042's "Status" register +is 14h = 00010100b.  This indicates keyboard communication is not +inhibited, and the 8042 has already completed its self-test ("BAT").  +The "Status" register is accessed by reading from port 64h ("IN AL, 64h")] + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Reading keyboard input:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When the 8042 recieves a valid scan code from the keyboard, it is converted + to its set 1 equivalent.  The converted scan code is then placed in + the input buffer, the IBF (Input Buffer Full) flag is set, and IRQ 1 is asserted.  + Furthermore, when any byte is received from the keyboard, the 8042 inhibits + further reception (by pulling the "Clock" line low), so no other scan codes + will be received until the input buffer is emptied.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            If enabled, IRQ 1 will activate the keyboard driver, pointed to by interrupt + vector 0x09.  The driver reads the scan code from port 0x60, which causes + the 8042 to de-assert IRQ 1 and reset the IBF flag.  The scan code +is then processed by the driver, which responds to special key combinations +and updates an area of the system RAM reserved for keyboard input.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            If you don't want to patch into interrupt 0x09, you may poll the keyboard + controller for input.  This is accomplished by disabling the 8042's + IBF Interrupt and polling the IBF flag.  This flag is set (1) when + data is available in the input buffer, and is cleared (0) when data is read + from the input buffer.  Reading the input buffer is accomplished + by reading from port 0x60, and the IBF flag is at port 0x64, bit 1.  + The following assembly code illustrates this:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            kbRead:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + WaitLoop:    in     +al, 64h     ; Read Status byte
                                                                                                                                                                                                                                                                                                                                                                                                                                            +              + and    al, 10b     ; Test IBF flag +(Status<1>)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +              + jz     WaitLoop    ; Wait for IBF = + 1
                                                                                                                                                                                                                                                                                                                                                                                                                                            +              + in     al, 60h     ; Read input + buffer

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Writing to keyboard:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            When you write to the 8042's output buffer (via port 0x60), the controller + sets the OBF ("Output Buffer Full") flag and processes the data.  The + 8042 will send this data to the keyboard and wait for a response.  +If the keyboard does not accept or generate a response within a given amount + of time, the appropriate timeout flag will be set (see Status register + definition for more info.)  If an incorrect parity bit is read, the + 8042 will send the "Resend" (0xFE) command to the keyboard.  If the + keyboard continues to send erroneous bytes, the "Parity Error" flag is set + in the Status register.  If no errors occur, the response byte is +placed in the input buffer, the IBF ("Input Buffer Full") flag is set, and +IRQ 1 is activated, signaling the keyboard driver.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The following assembly code shows how to write to the output buffer.  + (Remember, after you write to the output buffer, you should use int 9h + or poll port 64h to get the keyboard's response.)

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            kbWrite:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + WaitLoop:    in     +al, 64h     ; Read Status byte
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +              + and    al, 01b     ; Test OBF flag +(Status<0>)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +              + jnz    WaitLoop    ; Wait for OBF = 0 +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +              + out    60h, cl     ; Write data to +output buffer

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Keyboard Controller Commands:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Commands are sent to the keyboard controller by writing to port 0x64.  + Command parameters are written to port 0x60 after teh command is sent.  + Results are returned on port 0x60.  Always test the OBF ("Output Buffer + Full") flag before writing commands or parameters to the 8042.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0x20 (Read Command Byte) - Returns command byte.  (See "Write + Command Byte" below).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0x60 (Write Command Byte) - Stores parameter as command byte.  + Command byte defined as follows:
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            MSb
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            LSb
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            AT-compatible mode: + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            --
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            XLAT
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PC
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            _EN
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            OVR
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            SYS
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            --
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            INT
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            PS/2-compatible mode:  + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            --
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            XLAT
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            _EN2
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            _EN
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            --
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            SYS
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            INT2
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            INT
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • INT (Input Buffer Full Interrupt) - When set, IRQ 1 is generated + when data is available in the input buffer.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: IBF Interrupt Disabled - You must poll STATUS<IBF> to read + input.
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: IBF Interrupt Enabled - Keyboard driver at software int 0x09 handles + input.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • SYS (System Flag) - Used to manually set/clear SYS + flag in Status register.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: Power-on value - Tells POST to perform power-on tests/initialization. +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + + 1: BAT code received - Tells POST to perform "warm boot" tests/initiailization. +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • OVR (Inhibit Override) - Overrides keyboard's "inhibit" + switch on older motherboards.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: Inhibit switch enabled - Keyboard inhibited if pin P17 is high. +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: Inhibit switch disabled - Keyboard not inhibited even if P17 = +high.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • _EN (Disable keyboard) - Disables/enables keyboard +interface.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + + 0: Enable - Keyboard interface enabled.
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: Disable - All keyboard communication is disabled.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • PC ("PC +Mode") - ???Enables keyboard interface somehow???
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: Disable - ???
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: Enable - ???
                                                                                                                                                                                                                                                                                                                                                                                                                                              • XLAT (Translate Scan Codes) - Enables/disables + translation to set 1 scan codes.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: Translation disabled - Data appears at input buffer exactly as +read from keyboard
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: Translation enabled - Scan codes translated to set 1 before put + in input buffer
                                                                                                                                                                                                                                                                                                                                                                                                                                              • INT2 (Mouse Input Buffer Full Interrupt) - When set, + IRQ 12 is generated when mouse data is available.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: Auxillary IBF Interrupt Disabled - 
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: Auxillary IBF Interrupt Enabled - 
                                                                                                                                                                                                                                                                                                                                                                                                                                              • _EN2 (Disable Mouse) + - Disables/enables mouse interface.
                                                                                                                                                                                                                                                                                                                                                                                                                                              • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 0: Enable - Auxillary PS/2 device interface enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                                + 1: Disable - Auxillary PS/2 device interface disabled + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • ?0x90-0x9F (Write to output port) - Writes command's lower nibble + to lower nibble of output port (see Output Port definition.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • ?0xA1 (Get version number) - Returns firmware version number.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • ?0xA4 (Get password) - Returns 0xFA if password exists; otherwise, + 0xF1.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • ?0xA5 (Set password) - Set the new password by sending a null-terminated + string of scan codes as this command's parameter.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • ?0xA6 (Check password) - Compares keyboard input with current password.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xA7 (Disable mouse interface) - PS/2 mode only.  Similar + to "Disable keyboard interface" (0xAD) command.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xA8 (Enable mouse interface) - PS/2 mode only.  Similar to + "Enable keyboard interface" (0xAE) command.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xA9 (Mouse interface test) - Returns 0x00 if okay, 0x01 if Clock + line stuck low, 0x02 if clock line stuck high, 0x03 if data line stuck +low, and 0x04 if data line stuck high.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xAA (Controller self-test) - Returns 0x55 if okay.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xAB (Keyboard interface test) - Returns 0x00 if okay, 0x01 if + Clock line stuck low, 0x02 if clock line stuck high, 0x03 if data line +stuck low, and 0x04 if data line stuck high.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xAD (Disable keyboard interface) - Sets bit 4 of command byte + and disables all communication with keyboard.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xAE (Enable keyboard interface) - Clears bit 4 of command byte + and re-enables communication with keyboard.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xAF (Get version)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xC0 (Read input port) - Returns values on input port (see Input + Port definition.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xC1 (Copy input port LSn) - PS/2 mode only. Copy input port's + low nibble to Status register (see Input Port definition)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xC2 (Copy input port MSn) - PS/2 mode only. Copy input port's + high nibble to Status register (see Input Port definition.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xD0 (Read output port) - Returns values on output port (see Output + Port definition.) 
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xD1 (Write output port) - Write parameter to output port (see + Output Port definition.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xD2 (Write keyboard buffer) - Parameter written to input buffer + as if received from keyboard.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xD3 (Write mouse buffer) - Parameter written to input buffer as + if received from mouse.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xD4 (Write mouse Device) - Sends parameter to the auxillary PS/2 + device.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xE0 (Read test port) - Returns values on test port (see Test Port + definition.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 0xF0-0xFF (Pulse output port) - Pulses command's lower nibble onto + lower nibble of output port (see Output Port definition.)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            + Modern Keyboard Controllers:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            So far, I've only discussed the 8042 keyboard controller.  Although + modern keyboard controllers remain compatible with the original device, compatibility + is their only requirement (and their goal.)

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            My motherboard's keyboard controller is a great example of this.  + I connected a microcontroller+LCD in parallel to my keyboard to see what + data is sent by the keyboard controller.  At power-up, the keyboard + controller sent the "Set LED state" command to turn off all LEDs, then reads + the keyboard's ID.  When I tried writing data to the output buffer, + I found the keyboard controller only forwards the "Set LED state" command + and "Set Typematic Rate/Delay" command.  It does not allow any other + commands to be sent to the keyboard.  However, it does emulate the +keyboard's response by placing "acknowledge" (0xFA) in the input buffer +when appropriate (or 0xEE in response to the "Echo" command.)  Furthermore, +if the keyboard sends it an erroneous byte, the keyboard controller takes +care of error handling (sends the "Retry" command; if byte still erroneous; +sends error code to keyboard and places error code in input buffer.)

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Once again, keep in mind chipset designers are more interested in compatibility + than standardization. 

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Initialization:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The following is the communication between my computer and keyboard +when it boots-up.  I beleive the first three commands were initiated + by the keyboad controller, the next command (which enables Num lock LED) + was sent by the BIOS, then the rest of the commands were sent my the OS + (Win98SE).  Remember, these results are specific to my computer, but + it should give you a general idea as to what happens at startup.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Keyboard: AA  Self-test passed                + ;Keyboard controller init
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Host:     ED  Set/Reset Status + Indicators 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     00  Turn off all LEDs +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     F2  Read ID
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Keyboard: AB  First byte of ID
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     ED  Set/Reset Status + Indicators     ;BIOS init
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Host:     02  Turn on Num Lock + LED
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     F3  Set Typematic +Rate/Delay        ;Windows init + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     20  500 ms / 30.0 +reports/sec
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Host:     F4  Enable
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     F3  Set Typematic +Rate/delay
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Host:     00  250 ms / 30.0 +reports/sec
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Keyboard: FA  Acknowledge
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + \ No newline at end of file diff --git a/resources/The PS_2 Mouse_Keyboard Protocol.htm b/resources/The PS_2 Mouse_Keyboard Protocol.htm new file mode 100644 index 0000000..ba54037 --- /dev/null +++ b/resources/The PS_2 Mouse_Keyboard Protocol.htm @@ -0,0 +1,517 @@ + + + + + + + + + + + + + The PS/2 Mouse/Keyboard Protocol + + + +http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + PS/2 Mouse/Keyboard Protocol

                                                                                                                                                                                                                                                                                                                                                                                                                                            +This article is Copyright 1999, Adam Chapweske
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Introduction:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 device interface, used by many modern mice and keyboards, + was developed by IBM and originally appeared in the IBM Technical Reference + Manual.  However, this document has not been printed for many years + and as far as I know, there is currently no official publication of this + information.  I have not had access to the IBM Technical Reference +Manual, so all information on this page comes from my own experiences as +well as help from the references listed at the bottom of this page.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            This document descibes the interface used by the PS/2 mouse, PS/2 + keyboard, and AT keyboard.  I'll cover the physical and electrical +interface, as well as the protocol.  If you need higher-level information, +such as commands, data packet formats, or other information specific to the +keyboard or mouse, I have written separate documents for the two devices: +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            The + PS/2 (AT) Keyboard Interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The + PS/2 Mouse Interface
                                                                                                                                                                                                                                                                                                                                                                                                                                            + I also encourage you to check this site's main page + for more information related to this topic, including projects, code, +and links related to the mouse and keyboard.  Please send an email if you find any +mistakes or bad advice on this site.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The Physical Interface:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The physical PS/2 port is one of two styles of connectors:  + The 5-pin DIN or the 6-pin mini-DIN.  Both connectors are completely + (electrically) similar; the only practical difference between the two is + the arrangement of pins.  This means the two types of connectors can + easily be changed with simple hard-wired adaptors.  These cost about + $6 each or you can make your own by matching the pins on any two connectors.  + The DIN standard was created by the German Standardization Organization +(Deutsches Institut fuer Norm) .  Their website is at http://www.din.de (this site is +in German, but most of their pages are also available in English.)

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            PC keyboards use either a 6-pin mini-DIN or a 5-pin DIN connector.  + If your keyboard has a 6-pin mini-DIN and your computer has a 5-pin DIN + (or visa versa), the two can be made compatible with the adaptors described + above.  Keyboards with the 6-pin mini-DIN are often referred to as +"PS/2" keyboards, while those with the 5-pin DIN are called "AT" devices +("XT" keyboards also used the 5-pin DIN, but they are quite old and haven't +been made for many years.)  All modern keyboards built for the PC are +either PS/2, AT, or USB.  This document does not apply to USB +devices, which use a completely different interface.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Mice come in a number of shapes and sizes (and interfaces.)  + The most popular type is probably the PS/2 mouse, with USB mice gaining +popularity.  Just a few years ago, serial mice were also quite popular, +but the computer industry is abandoning them in support of USB and PS/2 devices.  +This document applies only to PS/2 mice.  If you want to interface +a serial or USB mouse, there's plenty of information available elsewhere + on the web.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The cable connecting the keyboard/mouse to the computer is usually about + six feet long and consists of four to six 26 AWG wires surrounded by a thin + layer of mylar foil sheilding.  If you need a longer cable, you can +buy PS/2 extenstion cables from most consumer electronics stores.  You +should not connect multiple extension cables together.  If you need a +30-foot keyboard cable, buy a 30-foot keyboard cable.  Do not simply +connect five 6-foot cables together.  Doing so could result in poor communication +between the keyboard/mouse and the host.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            As a side note, there is one other type of connector you may run + into on keyboards. While most keyboard cables are hard-wired to the keyboard, + there are some whose cable is not permanently attached and come as a separate + component.  These cables have a DIN connector on one end (the end +that connects to the computer) and a SDL (Sheilded Data Link) connector +on the keyboard end.  SDL was created by a company called "AMP."  +This connector is somewhat similar to a telephone connector in that it has +wires and springs rather than pins, and a clip holds it in place.  +If you need more information on this connector, you might be able to find +it on AMP's website at http://www.connect.amp.com.  I have only seen this +type of connector on (old) XT keyboards, although there may be AT keyboards +that also use the SDL.  Don't confuse the SDL connector with the USB +connector--they probably both look similar in my diagram below, but they +are actually very different.  Keep in mind that the SDL connector has +springs and moving parts, while the USB connector does not.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The pinouts for each connector are shown below:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Male
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Plug)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Female 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Socket)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            5-pin DIN (AT/XT): 
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1 - Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 2 - Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 3 - Not Implemented
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 4 - Ground
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 5 - Vcc (+5V)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Male
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Plug)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            Female
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + (Socket)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            6-pin Mini-DIN (PS/2):
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 1 - Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 2 - Not Implemented
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 3 - Ground
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 4 - Vcc (+5V)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 5 - Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 6 - Not Implemented
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            6-pin SDL:
                                                                                                                                                                                                                                                                                                                                                                                                                                            + A - Not Implemented
                                                                                                                                                                                                                                                                                                                                                                                                                                            + B - Data
                                                                                                                                                                                                                                                                                                                                                                                                                                            + C - Ground
                                                                                                                                                                                                                                                                                                                                                                                                                                            + D - Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + E - Vcc (+5V)
                                                                                                                                                                                                                                                                                                                                                                                                                                            + F - Not Implemented
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            + The Electrical Interface:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Note:  Throughout this document, I will use the more general + term "host" to refer to the computer--or whatever the keyboard/mouse is +connected to-- and the term "device" will refer to the keyboard/mouse.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Vcc/Ground provide power to the keyboard/mouse.  The keyboard + or mouse should not draw more than 100 mA from the host and care must be + taken to avoid transient surges.  Such surges can be caused by "hot-plugging" + a keyboard/mouse (ie, connect/disconnect the device while the computer's +power is on.)  Older motherboards had a surface-mounted fuse protecting +the keyboard and mouse ports.  When this fuse blew, the motherboard was +useless to the consumer, and non-fixable to the average technician.  Most + newer motherboards use auto-reset "Poly" fuses that go a long way to remedy + this problem.  However, this is not a standard and there's still plenty + of older motherboards in use.  Therefore, I recommend against hot-plugging + a PS/2 mouse or keyboard.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Summary: Power Specifications
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Vcc = +5V.  
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Max Current = 100 mA.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The Data and Clock lines are both open-collector with pullup resistors + to +5V.  An "open-collector" interface has two possible state: low, +or high impedance.  In the "low" state, a transistor pulls the line to +ground level.  In the "high impedance" state, the interface acts as +an open circuit and doesn't drive the line low or high. Furthermore, a "pullup" +resistor is connected between the bus and Vcc so the bus is pulled high if +none of the devices on the bus are actively pulling it low.  The exact +value of this resistor isn't too important (1~10 kOhms); larger resistances +result in less power consumption and smaller resistances result in a faster +rise time.  A general open-collector interface is shown below:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Figure 1: General open-collector interface. + Data and Clock are read on the microcontroller's pins A and B, respectively. + Both lines are normally held at +5V, but can be pulled to ground by +asserting logic "1" on C and D.  As a result, Data equals D, inverted, +and Clock equals C, inverted.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            + Note: When looking through examples on this website, you'll notice I use +a few tricks when implementing an open-collector interface with PIC microcontrollers. + I use the same pin for both input and output, and I enable the PIC's +internal pullup resistors rather than using external resistors.  A line +is pulled to ground by setting the corresponding pin to output, and writing +a "zero" to that port.  The line is set to the "high impedance" state +by setting the pin to input.  Taking into account the PIC's built-in +protection diodes and sufficient current sinking, I think this is a valid +configuration.  Let me know if your experiences have proved otherwise.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Communication: General Description
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The PS/2 mouse and keyboard implement a bidirectional synchronous + serial protocol.  The bus is "idle" when both lines are high (open-collector). +  This is the only state where the keyboard/mouse is allowed begin transmitting + data.  The host has ultimate control over the bus and may inhibit +communication at any time by pulling the Clock line low.  
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The device always generates the clock signal.  If the host +wants to send data, it must first inhibit communication from the device by +pulling Clock low.  The host then pulls Data low and releases Clock. + This is the "Request-to-Send" state and signals the device to start +generating clock pulses.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Summary: Bus States
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Data = high, Clock = high:  Idle state.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Data = high, Clock = low:  Communication Inhibited.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Data = low, Clock = high:  Host Request-to-Send

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   All data is transmitted one byte at a time and each byte is sent +in a frame consisting of 11-12 bits.  These bits are: + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 start bit.  This is always 0.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 8 data bits, least significant bit first.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 parity bit (odd parity).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 stop bit.  This is always 1.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 acknowledge bit (host-to-device communication only)
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The parity bit is set if there is an even number of 1's in the data +bits and reset (0) if there is an odd number of 1's in the data bits.  + The number of 1's in the data bits plus the parity bit always add up to +an odd number (odd parity.)  This is used for error detection.  The + keyboard/mouse must check this bit and if incorrect it should respond as + if it had received an invalid command.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Data sent from the device to the host is read on the falling + edge of the clock signal; data sent from the host to the device +is read on the rising edge.  The clock frequency +must be in the range 10 - 16.7 kHz.  This means clock must be high for +30 - 50 microseconds and low for 30 - 50 microseconds..  If you're designing + a keyboard, mouse, or host emulator, you should modify/sample the Data line + in the middle of each cell.  I.e.  15 - 25 microseconds after +the appropriate clock transition.  Again, the keyboard/mouse always +generates the clock signal, but the host always has ultimate control over +communication.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + Timing is absolutely crucial.  Every time quantity I give in this + article must be followed exactly.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Communication: Device-to-Host
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The Data and Clock lines are both open collector.  A resistor + is connected between each line and +5V, so the idle state of the bus is +high. When the keyboard or mouse wants to send information, it first checks +the Clock line to make sure it's at a high logic level.  If it's not, +the host is inhibiting communication and the device must buffer any to-be-sent + data until the host releases Clock.  The Clock line must be continuously + high for at least 50 microseconds before the device can begin to transmit + its data. 

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            As I mentioned in the previous section, the keyboard and mouse use + a serial protocol with 11-bit frames.  These bits are:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 start bit.  This is always 0.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 8 data bits, least significant bit first.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 parity bit (odd parity).
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • 1 stop bit.  This is always 1.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The keyboard/mouse writes a bit on the Data line when Clock is +high, and it is read by the host when Clock is low.  Figures 2 and 3 +illustrate this.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Figure 2:  Device-to-host communication.  + The Data line changes state when Clock is high and that data is valid +when Clock is low.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Figure 3:  Scan code for the "Q" key (15h) +being sent from a keyboard to the computer.  Channel A is the Clock +signal; channel B is the Data signal.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            --- +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The clock frequency is 10-16.7 kHz.  The time from the rising + edge of a clock pulse to a Data transition must be at least 5 microseconds.  + The time from a data transition to the falling edge of a clock pulse must + be at least 5 microseconds and no greater than 25 microseconds. 
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The host may inhibit communication at any time by pulling the Clock + line low for at least 100 microseconds.  If a transmission is inhibited + before the 11th clock pulse, the device must abort the current transmission + and prepare to retransmit the current "chunk" of data when host releases +Clock.  A "chunk" of data could be a make code, break code, device ID, +mouse movement packet, etc.  For example, if a keyboard is interrupted +while sending the second byte of a two-byte break code, it will need to retransmit +both bytes of that break code, not just the one that was interrupted.
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            If the host pulls clock low before the first high-to-low clock transition, +or after the falling edge of the last clock pulse, the keyboard/mouse does +not need to retransmit any data.  However, if new data is created that +needs to be transmitted, it will have to be buffered until the host releases +Clock.  Keyboards have a 16-byte buffer for this purpose.  If more +than 16 bytes worth of keystrokes occur, further keystrokes will be ignored +until there's room in the buffer.  Mice only store the most current movement +packet for transmission.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Host-to-Device Communication:
                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The packet is sent a little differently in host-to-device communication... +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            First of all, the PS/2 device always generates the clock signal.  + If the host wants to send data, it must first put the Clock and Data lines + in a "Request-to-send" state as follows:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Inhibit communication by pulling Clock low for at least +100 microseconds.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Apply "Request-to-send" by pulling Data low, then release + Clock.
                                                                                                                                                                                                                                                                                                                                                                                                                                            • + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + The device should check for this state at intervals not to exceed 10 + milliseconds.  When the device detects this state, it will begin +generating Clock signals and clock in eight data bits and one stop bit.  +The host changes the Data line only when the Clock line is low, and + data is read by the device when Clock is high.  This is opposite of +what occours in device-to-host communication. + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            After the stop bit is received, the device will acknowledge the received + byte by bringing the Data line low and generating one last clock pulse.  +If the host does not release the Data line after the 11th clock pulse, the +device will continue to generate clock pulses until the the Data line is +released (the device will then generate an error.)

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            The host may abort transmission at time before the 11th clock pulse + (acknowledge bit) by holding Clock low for at least 100 microseconds. +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            To make this process a little easier to understand, here's the steps + the host must follow to send data to a PS/2 device:

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            1)   Bring the Clock line low for at least 100 +microseconds.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 2)   Bring the Data line low.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 3)   Release the Clock line.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 4)   Wait for the device to bring the Clock line low. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 5)   Set/reset the Data line to send the first data bit +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 6)   Wait for the device to bring Clock high.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 7)   Wait for the device to bring Clock low.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 8)   Repeat steps 5-7 for the other seven data bits and the + parity bit
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 9)   Release the Data line.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 10) Wait for the device to bring Data low.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 11) Wait for the device to bring Clock  low.
                                                                                                                                                                                                                                                                                                                                                                                                                                            + 12) Wait for the device to release Data and Clock
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            + Figure 3 shows this graphically and Figure + 4 separates the timing to show which signals are generated by the host, +and which are generated by the PS/2 device.  Notice the change in timing + for the "ack" bit--the data transition occours when the Clock line is +high (rather than when it is low as is the case for the other 11 bits.) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Figure 3:  Host-to-Device Communication. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Figure 4:  Detailed host-to-device communication. +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +  

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            Referring to Figure 4, there's two time quantities the host looks +for.  (a) is the time it takes the device to begin generating clock pulses +after the host initially takes the Clock line low, which must be no greater +than 15 ms. (b) is the time it takes for the  packet to be sent, which +must be no greater than 2ms.  If either of these time limits is not +met, the host should generate an error.  Immediately after the "ack" +is received, the host may bring the Clock line low to inhibit communication +while it processes data.  If the command sent by the host requires a +response, that response must be received no later than 20 ms after the host +releases the Clock line.  If this does not happen, the host generates + an error.

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                                                                                                                                              + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + Other Sources / References: + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +


                                                                                                                                                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + \ No newline at end of file diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/fpdin1.JPG b/resources/The PS_2 Mouse_Keyboard Protocol_files/fpdin1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..378895ba6e6ae98d99001e184a2bff4367c4b8f8 GIT binary patch literal 5591 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 G*Z-dprkaTW literal 0 HcmV?d00001 diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/ps2.JPG b/resources/The PS_2 Mouse_Keyboard Protocol_files/ps2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..067edaf3243a5ec3e9bdd56419b0d123737b7fcd GIT binary patch literal 13162 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 Joe)3t{{W~~Bdh=b literal 0 HcmV?d00001 diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/qscope.JPG b/resources/The PS_2 Mouse_Keyboard Protocol_files/qscope.JPG new file mode 100644 index 0000000000000000000000000000000000000000..aa62a111e2efe7de8a6df41255200be0f68299f7 GIT binary patch literal 27058 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 N1jamHx6S_lO#pLkn-l;5 literal 0 HcmV?d00001 diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/sdl.jpg b/resources/The PS_2 Mouse_Keyboard Protocol_files/sdl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e2f926f893d4c99b018e5d9811f46e7ce31798e GIT binary patch literal 2394 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 kz!}T3SfduD7%U|$r;zXdPYitYtN;K2 literal 0 HcmV?d00001 diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/waveform1.jpg b/resources/The PS_2 Mouse_Keyboard Protocol_files/waveform1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cda9a5c0eadaaf928103e72bed53dbb0c9746811 GIT binary patch literal 11046 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 literal 0 HcmV?d00001 diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/waveform2.jpg b/resources/The PS_2 Mouse_Keyboard Protocol_files/waveform2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f234c1e1208bf143809f5068f9e910011960349c GIT binary patch literal 12777 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 literal 0 HcmV?d00001 diff --git a/resources/The PS_2 Mouse_Keyboard Protocol_files/waveform3.jpg b/resources/The PS_2 Mouse_Keyboard Protocol_files/waveform3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560ac50577dc98a74d94566af42dd34c2b51fff5 GIT binary patch literal 21331 zcmeFZby!^6vM<`W1a}P(ER6;dJZJ)eCRpR$Sa5gu5CSA98zXOI-OjQl*6M<(V*srNrhS}I?JvLBl}5>*6Iwxf>fD0~H>YkI=RkOM1#f|E@MVaDovb8`(_#3V~W%z`-3`webtfwW8h0Q&Ag)UVDYTRU7 zc9p=25-EcBR5#e+7cRDEU4CeupHx|1kz1F9 zko;n|bp)CDIBS->yhZQ%4>0W{TYW*0g#q{pAo9*2{dO%|W25___+5?OD-i)o z7H-6YRwx~w;36j^eyg*e1bb%Ek=~{Hg3@B_{RG5YHvM~lI5XIMU-$hNT9TfCh&BM9*>HDM*Q^?=IKehtKY;Q&-8i2-t=w-EKnGNJZ48>V?P03xW2^i z*XLSorq93pziWh?va7R6Gv~9!kI7fIyN^~oDub7By`-4XoL_S=?rl86noNh~-51PO z+)bi{K8tvZTK!;ZnJi~LAD15+i@|_E@>S`pB0JL3^Yqb@M^p<=>Ejg}#U)m@pOKF! zs$oR9(&(g1>FEMp3?vO!KPpO_6*7uKNh9CMQf3QGZa$`8rdQE0%-(ENtJi~iwm!?Z zTc<(MBP)<*vPKUA<4_}Uwimr8Y8-DY%o5S$w~fOCT9@=!zgkaQgHq=86{HM0ksQiv zCc+9FVmQp1r8N@br_Kral$<7fQG$Y}OACuh?6DDa**#QYPoLIjlkoQ~F^j%b5o*nI`-$^y$^q)NQa`aBxN$a^jUJl@L zuU}AbZpb+ANE}H!e==|AWpB{kn8NIw}K-qsZacKA;jLOQNgK8)d(08+b8AQ;|Lsl5UqlGPs&a5`3Zwz zY4)|y8>iqNIe5l^wS=6gDI?y&^gW+ovSy4j)~|51TeX#wL@Q{hmbHWVl4g2Xp>YQg zgpi4cqyCEqlXQDmsF%LAtDVAP`GQU`2dVGZenQL2tI@Hw*(4muKD=!ZBA8J@?lx;1~SUdU|Te<-*U zd5~3??vvi1guA>qIQzM(?NIWW7~iSw!F{v^b^4TUf8`{|ceY2d;gKzgFHO1eODsPg z;kIhj#P0z)I#+_^>G?EH<2$nZbGeBzd>LiJ9o~nPGe4$y>@_vY9n2&mB8--~rSKCl z|K+5l%5LDmoJ@;VKEB@^8prNHJtl}chkTUQ)xPLTeNfiKA+si?);|$fLLo8{#+Nm- z+y~Bu&c-7sj$=urfPUpMXlPrK@*@)uxGTSWrg$M-KC8{#z5FuxpmxRmzRt2IVP53r z)%isR>APPn&>p|=u77@%Sj36FEb872_w-mHnxJACIB+TgwJ#r@yI{{g~j z7oq9MBQe3wS9;$UCf1a1qlJG0*d9k@OkCido{x=WZSB6tZqfyx<5#q6R&+ekAlv)# zgaKC>oQtVg$nfBcTJojy{{%NIeka*o6AbtI#pK^zg@1iNo?N5gw+f~Hk`sm|hxTt3 z%KHrvX-yF9mkt4cflXBtoVTkcps0@2M;@ETVOxZa*(eqZmxfY7a*7G+B%iOEx(>=> z{MPoYYqcb&!0&N!rZv6>i{TA*s`bHL%irlT{oP!t(9^#NcTH-OGa(;OVtz1^4dHIO zoq! zPr~3iVjh}rW-k!GGZm_b^mT?95UNE*>I?sPT5tVB)Uuhwyx^8yK=b8GgD02QmG3U= zL#;;O-Md0neoxtzBdr>EmRCEodYt*^xw>#2cm%=aC~CsEfRk=vs&9=IVlU4sreVpf zSLYlv0^4n+Rs6NqTozbMG0HTC4>7c

                                                                                                                                                                                                                                                                                                                                                                                                                                            v0M!p=NbTzEwvqpBY=`s z!+NZaY$Qd@I|#8e&r5KBD|x3Fb&{^jsVJ6a32%G7a_rkxh`3*a%-Ohy9-7td)EJXO z4(qhH@zAx5&5dtbtND`nEQ;Mj6_y`-qw^^(ee;cV6?D4R`NPi4m-}_j^bse1JwSs= zC|K|Ewb&PjkEdEH5CX{=jq7y_#N0iamVz>4me5jriJcA}53bhO`LzNxTt6;WWzlpd zU0Uy0OwNW)`42{$eJ&K&5h*!Ry&AKd{1JI9a6=)Y28Fpsk?zeP0Kf>Z$ikw*cv@mw zl)TDx#%08`f(c9yeLIatD7+k>tq%@Fb3P{mbUxzLR@&S)NDf@3r85AN%tMz&^}s21 ziXy6ZEHOxzxC&u;mPNc|ywd)kfW|7x68+{`Q%y~m66S&jQ+CI@=fX6vNz~lyMXor> zCS!6$1kQk6*taUmb~y^O!^itVIwBMk_66uCLZLIW zW5FEv5)wgdr3$z*P$R;e8n~j|Eb&_sr^wd9+?v^Y#bF6EAsO~h!(q9GqO&i?EBHfk zIunKrFUi1LwfUvQ}`!O>p%|H_G+rG1( zP5B59p;s)hsuqd>f@J*7TybzWlrdZzu5LLsw{nk55n+X#k>=;0t-Mm^c^~KP;%Y0{B?(oFeivdB*fMqR1klskjlm@tRH;SS3k25o=s)cy#~spl9dGxz-kETp zP|IucoF6Zoeq4DF44(}sTtuy0p8SEVC8Wf3fh6&4fJ9nbwOqDC0oF^%49fiDF zW4OQ@nO@K?Fb=SX%mZD!fC4)*7~}6^3OSj`V(Mm0`e97 z32;dB;g(LGP97`jug5EWoMhI)CAt+GU(-PdBOc=S&LPPN=V$+{N$Uxn@ zOIjNgB1XgQSRJ0;<6(Tb?^!90W&Mdbbq#p$&f)nj0OjBEx^t-d8DKnf@KekTvdF~VJ6ylPOpN64+dB2WE}UD$tx3o%kvM<_WTzLPGJERd~gZc0K{NZ zLgs+&fVJj#y%25c{>tS9dN&0SWI41qY=c@HjH7z*N`q4{x5hrdSt*HsZ?1u4rdHOT zeB`BhD%6V8Yf;w;<%Lg2EVh^?Rm3__IrR6e{}DD@R+r#iq@k*npoOxKiQ|PWj&hHa zbKhg~CKBShL<*{B(Rh1e!R!R9OHj1Dk$;Na{ChX=B7p}pH(%U#YA|igZNO#xtNe9? zW{G6w+l3(TB$j~vfxF4}Sed&T_W6LTF7Q*+ zat}IvVT7DZd=5_mxaqedi2c?Z+(PX~e;X*hf6}Wz9N*uHGNF0f-Wh*kce@~Z26-b; zB~YN9w+!Qb~@$8DSyX!D+dgE`amRGw9ecT=?(nLOT*eIsbv*XX{XXg^I}r>(%3 z>|~cyvi{nv9fN+KLY{F~!}xJ3T$KLztp8Dc3vMWLmJAq`>bvW+QFPcE=mJli<)cuh4pnUlV-XK_D>RYh!i1Yflh1dp8KiT;QxSjl| zQ{$iYY}`5j|4a)1TpRwx<(YRE-WV+| zMrCUL$;E{Gyr|g}tBDK|Sc#dbWs}jGhCS+3p|uWd4T_7aF3SyY*eNVLnCCj188hwt zJd-uc41d*L0}O76$;8G*k&0OSkg;sjj30iXQ$6Vw?vkf)OU>t5_3q38e$7Vmpx0hD zW5srE)meekjXW)mj`-|T__1$+13kggn@Mq>aTVEN8Zb+Osq83)APax_iao-?ibLjg zH&|X-8r_swL*UF;Ju>Ps<>7;d!i8}mM6ZNGc4~#G7GgrZ7*Yk=+}6x}a*5cp38{aq zNnKlq54T|D7FL#))DB}nG%a%L#y%4N6Ar0~tTAL^nYEp<@-1(0 z+I#Q>ks}QKVl`rgZE|{Gc{;CAu|h!NNj@Yz`T<@N$J3U$2NGT3*R&v#v?W$1oDG~? z)I{Y$2TF1AY52S8!|c}4&p4zxooe6FKOUa(>&zo#a`rhm?y0C^9g3Gw z*MvEsCyd3C;moCuUS-(dxv{djn)v&d7cORePtxDJ-HMJO#-gu%?OG0^0f})4V2gkz z69>Vk8td@lIWf#({yFDoyidpa-h4<%l2@>^$1fI%$^Aet+>I8j%%80?nLcr=KkEPa zC!neXTv%Unc=4%b+qUM}!hK#|g6D%kd<5&n+JO)QdI1h31)F_ci0$20!nvvoa-pxm zVKU>)Eo086xP;Wt{8i9IeqFEoawycx=2d~b&ZF_z;MFGy#&3>Z>G6X!>-PRwLB&gc zH0IuT{RCJj`#>)}l&+3%2j7e%?;V`iPGvt zRKK#5ukCz0ftabz{{&=&3aXPTY~&fPlqmYi{{$d9XBn^$aJ6b9LbAmtat`LT3r?q`DC6Z>mflH6Mm#Dd=&Z!u z&itc59PW~qnoxeS5#~HaZ23tQ$?Q!O__7ZHs|vN-H%2!g*^Oeby*YhkSS|01)hLumIyxU$IKre zweezM_F~l{yAEq}LfhZ2MR5x=b}=q0PQ)+OmyQo7aV8=dH|@Y<)$y#s`EIyQAZ+E? z)O;h-_eaOSMDe$Y4=t;b9JYcz^SSk>n|`Upo}CsDRl|MCe7ivF=*#?-b#=GbQAtxC z^d^57lD#dY+*17#p%>HlO@M!K)hriG0)@V@Aut8zyin!`ERja!$DOX%G$*<)lu7Pv za1_#p8Z2NL_#f1{M$G9x(}6~DVRT$WFv25fkUGf8{nW{1iSuztGIqUNqZ0wd)WqUIl6n0d{L3QD7s5F$0`Us#V*>NdFJXPY&wh8TDiBw{gh^T)&@ zXK8g@n3NufI>lgNr;TpVdrIpo6r%56AAlWOxnfLT|Yb7CYCZjej5NXVa?t8+Xw~jqPt(C@S zzZE*Ou;6ycFr4Ap0!)HIlHM`RvXvlVoLf;rMh6tCnn#uyyxY?of+AeT`&$wQf0ue} z@9W1m6iFIF&Ff18@$Dntz{!hk@B&zJ_Yi^A`V`ebc{UGyTq8JNG-|w%r^DVzdrbUMqrn&{%9Bc87Kp`C2nRdQ_^@&)sQfH7lxFSeaR39RXX)*4A9~ zFI>kd3L4(yXVW(zL(|RjJ+N3xzzH!(IvyMlS%7Z+9v|VKKI6d2M+BQGL6uVt5=zJ0XdV$|LbC0&}^A1Mu z!Vi&{1Y4oh@38 z;-YQJt~v&kx|vrd9+YW;_0S)JyU1f7r%91P=cjy=+pI-}#Vz?&MhN$*K+}3+8>3baQB%_*`e!n*3{&f^e$CuVLA)MTQ+T%%B{d2a6$Xb}tFp_a;~~AM={hpo zIw7yRvF3XZ8__r7{E0*zCw+oPH3~ZPj{fhuyEjtS)qxRf7+!*%HSh0`3p^TZ{z*mxrjZ^fNz2L|UUSy7za zJ@@A7*M%%{`67%i)-$a~Doo_YtUeb^YeSzUq-{TV?A}FmAwAgA!H?@KYI<r_KK5>rG!F--7C3fJDOqKA{Srw8|C$XBW^rM$1F+kv#2DS6P4SuAyXH~UJnUT}Ox z5FKxwo=V^bg%;KUTEU^@_-;|ruxbk3)T7n6L3wP?_2S8lR?*=T-6CE3U0+YOKO7?p z&UZ;Jg$JN4i8)!B+p_Za2#T>Z0#!9Aq#Og~Jp6bX3j@Fw;|%@-AT7;z;VVxAqV?>m zTo7-2r1bRD#Sr#h1Jj!kCR7q4o2zRADjl8~)Rn$Mk&Ukp5~`s`i*z4!85Sp$7FJt@{A|JStaV$Rq)k-ec&^Lq~saTk7pV4|UuIHq%TkCeExf7n+>w@!IgaMiw@zQOz8 zsqZbJEL`Lw{0~+$KVdPl^3+NXitb5Z<>>{Rmljk33)GG3-KWY~5X6>7TJTQ*Wp@C&uL_XIzAgUL-AkW8J}C`$dcBCKX!B1{S~ zQ)pD1)fe}h9L2S3OUqYuYEW`-08#G^!GQXR|Ds&lLGd8~X#;`I;YdgEU&a80C#w!b$POPA;W44dzxYVl`jMEM)6M7)-ZAr_PwioU1}uO89&|`#Y?2WSHQ+M7wZQMJI|7)IsSln)j3*D!yMwr<_F1(WUus41X*Q8T{dYH1jRmvX(^w_BWjiJY4#X zwJQIm*wO)T!wC31vHnmpUY~>#VxaMKI)r=tIU~gCFC`PYbM`08(sL*LKb(<2Bvdx zrw+Zd#E0&d&Bdpm&k#p@DW~fs)UDF1&6|Pzuw~KBN|_jY~>(ECF`?HI&`cM z5EWmS6wT_RU4fpH|1ctlj)>5pCUts15!5@L=)b=S9aw+e?<-0=DlB&9By0&j+iU4` zUlA6*fx&)}I#Htuic!uSbKFmm_voX~3Y!#B3`@+K)AO?{;SxPy#f_R`43WPw)Hy7? z!r;)_^#9_KtC`$pQQNon>cz+HQG3P6tF_O;aG)ZA1s$paiyzZS>aQ7NXmV1%FfeS^ zx$OBs6Us`G)9#j#&dbF4>YSRD6R5zL&_gYMSXNrxcpd<1 z_V__s;8=T@~(NmW52un zK*#W8;{Jq$v#DHG&+`I4db7OnZqSrprvj)KEYDgg2Yza^UBq*>KxYCTq#L`S&LKN6zF|`0tkWsf>4_*mt!%@>%RV zu(4>L3S|te{5m2Q7M~NNXd02@Ib;W}tT9_?ywW=MT6AF`2tFAkxJgx}A!}+ZcS@@p zB#<;S`?ZzjdY6bp-@<=EaA_LqTY;pCbcwHf=S@G}HGv#yD??Sy-wnbxjfS5_)0AcY z+kjA3CBwtPaCXJ&`Xx^EgGrno0;PH$ei@CO%)sERP#h6Z4@)%JqASbQ<*yx|ZZk3K zLb&n9cHj9ng9tyf>T0&e$EeEDj#XA$i4_*O8IXl!ni+Us;Pl_9Vu|$#-0Rn{|3KgG z82isE#i9M%I{hOaV86ClHh*FI4ug5S;8Vpaq%3m4G!lC~Y{#amtS&v2O6C*e{W=DD zBNFcw%%I-|yx^w%+TIiK7H0>gsSotFijk+a_uY z5+g-VY}ALR>zKZ?%4x(GC{gNq5i)V&Fz&LJ4F3#4_#-f86D~|N=5&xfGk?okay_l`4KCunhV>o zIUf2<>pt5iN%m)5<(>8Xb!D>|jRHVEqz;ocz94EsNltLY>$-@O0XNWzKWF$meKI+& z(PUn@2)7;gM!0ir)nm&@=G0g1vb(oG0i|w8?xUT-<{^mrxRd)d%|(4Lj6+PRm9gDTQ8C3RaO05?z<@`=-7*KjI@kI_gH)zNBx^P;gpEswBLvR0*pL#g!9cj5}r& zB;$*}_}->vd6E2n-K>GSs$|kebWTGgrq9fh;FHNapwm5RT&hE5IZW*BR9*d#T^}U+ zoV0SsGAL`rxz8+0&h(u?v8YYKx&hKKt`KiaRao%3PnlI;-fhm%^ zWb;&CV~0&geXzkaBuK-+uBDoV1XW6eo#h0TQ^Eah!Kr3ZrF^vBEdw*yS8T4(o3Op-XI#A(zU<8#}5VpEBp+SFKGxESeX%Qno;H4NHO zdD}!}Wgq=emJ2p;S+VeeJGxJ^spK3S2a5coLP-bQ40Wo_AZ0| zpS}h;=XA!oyTxe{;yU7eVW~~FKxslXWbcuELvjzMjdoEP$*_QGjxLus&Jp2CH8o=RCr^Wm z#f9TzW91yByAH|Sr2kBpd(|z44ev&k?ZM+5P_VZxBR~0sgNM^pM+HYvvZX#k*1a?R0(g`o-{l=TZOsu3NW^oHF;K zb1TtU&8T(EHEN0!8*6vk4KExWZzmutOT^-v=;enzh1yk;dpqB@wH?l>$u;#RpWEnj zTh`1P&AAE0;!Tuk8?bmiMq0I-`v&pD9umh$-#%AW{S(=m+K+a{3@tCyQmnhnPt7y@ z70;6FszsnE;5(O@p1LhPLJTL&5OecWG`ZGu@un{;`j1%3r>vf2n`*Pl%FhvK?>9@ zSPbo|`Wj{C0dvzC6Qv7#{2Yb#rC}2dkYSs;mWC}G7U~j%($Dfo7S*F+{g>!w9IDKW zZ+?VjX8wun!qQhr_b4(Ki<`6W(ht&Zl7GWiaIXD(iXMvk0YMml*_7Pl zj03+OhBwJqgGk2w40e3~-^*k_?lC7x05?~;vf zd$+!08BX?R)q70~-;(3@xaTMSaL#`}CsyWh{5|J7+@t0{ig66~*9R2NDfVrYx95Ib z7D(J>gDw9kftYN(JO=x9G$KbE&I2T@Rq7BvkUt8b|Mv_2-^?O|5;RAc^N6Efy;x^G zU;A5up_uqa)=;v(K6wCsp;Jx#2|f14Q-JCpm5s1_){&lLBW08nZkqGc_LNxJ&%((+ zS{PF?h2qvlaO?649)KzigCr9sC3c3j2I1qw~`(UC~3mHr~lo(b*G< zr1Y+tIi|{PXbaU$|HllHF>3=FiZAgQvbF|GD3-5EmYXmEKg@5xghPq zN2E=eB4py@y65)@36G5CEs};tNY`lM41UUz2WMLEY1bO{+ZO6YIH$py=rZ6^^TXtp zWSb;g=yasT5X4h8rF_aQd=PNE5ve4V*k$p_}QudMFtIW4RvscQj zB61@zRt|7b!(DOH;FmzLrvbWpMuW8w=zBK7Bx@t#YgrsHE~*~bxv2#RiieTAe(mm8 z3YW81lzY1?q)^HUW>$QjXIu6t=TTdTBJLc0F7EhOJAzgG-j;clT~@#0-iTqIke_}06*RVDP{7mPd5**KpSwHTxT)bk%1j=u@boQWG z78WK?sx8}*+vNW zd@a*TudaAi4&^4A*jj-u*AT-+r6Dm$RB1H;-Xh*2Zn9lpY1Vjx5W7_$EPKXgWnj6_ zoj-mxb^)UrFgi&8Sty4zMifr(D_!%~<VP4Zx6?7IrKp@<>x0?^xukq8c=jTW+=g34bWX zG89n8YMP)w2qCpQtK@p8spNOJB z|A;`@TYCs-0Ig}|&K?(BbM$zFOUoH^odT*A42C^iL{$ce0|s1FZkfdRj_=O*4Z$v5 z>9y`k(_w=(43@{X4eytyN2+o*ePo8lCrN!LAnukz+JB?V)nV=Toe z@v`7Dl=ta&fmM!!TB|f<1UEXcr={~Q?_RH2RXr!SHXg!DgR0a(s;*l*3%^(FQ7^&^ zM9G1pVT{H6aMs|9+@cZ_J%wNZ^@{Y)7EFeb-J2$c3kxwgIkoh! zo8b;Z=~#RR8!9gs_ov&JvJ__;v8ZPv7FW(Rv`Tkrj?Eh9IuNow4O3hnFW>`0nAGaR zR=o9XW-nY)AWm2vA}o1ZJp`~nj!eUvx7l_kp^b#loJQPXGtKX|xf9Vau>@KxY!-5$ zbmE{lN(Hl|kV-<(xVFts5v&=!ndrKUB%uySd<;zprFN~0=iB7_A-7VZ1CUqS#tP_K{NMYd6C+O%zKz|pLx$P~3m+pqFj_JXP#gX;CQBeX-)mcwvVI-=VbkRp7 z*&apTFTKz1DIVn@vm_lu{|{AE-A8GS(TH5hu1$@I3Z*XV)7BAHo&$!73hA7s6j(fy z;ojjGaC-s7`wUg&DpioO%bnG+lLV?_eE9@KZC0{kGkY;oYi^Gn`>v$bj4)T@HPdPx z5o*vJ0E;|z%?R)*?sUj{l4$qrg$2*TF2#U)UfLKg1B|P_ABrc z<_ubkDx0}pvzk)OZP&M7Oul|2io*6{jNF=syJ^W^HQ;Vl-~ZQE!AX(VnzW2)x7NP< zWYr-Ez8}=mXkZ2;9@@q$m`f$w^HSgviZ796=b#Od#wxe&YxX!P`F{NMy97PXW-9%) zaOxAFkB8BUm{Tg9fA1nqiuxJ8PeZ+@@ikjdfR=p2^r!xJOdK4n)|XJEMoBL&I936d zS%QjiBp&`ygePwowI$C-HqC6rozlTCOK)h@*|@xd{2sob-V5^eM-d^Zx)@B)cX3!= z36JkQn0mE=;K8Yea2=M#M$SJ`G>Iy~uROLZK=D<6{S^~i3M7i3sWEAVT&SEr_xX~z zE1uuuk31skA`#oGgF;_6H4!|CsDaVnZSjO$od_3xXAk$FRYrd7D@|!g9`zthhgZ>st2WK zE(Y->!wYV_3Lk9D@!uRRrnW|%xJndf4A-t~*ePz{h{^PpV=B-3d1Zd5*mZE)mG}vO zD}9o0v2IV2J0w{0iL19q&|AGan!&d)=}}*QVPT9Hb2cJ*W1qVbI3u^wb?^Im@n z_wDluT96%H@B7*2BqqLDhtSp~ZfV*;oE~cSF3IeC@@_Gmi7V?B4{eJ!rSmqhcx(#z ztjiAWh}h$&`zlk%35m@;l14XUdB1(y;iEiplklx^?xfjjS5EP4GA2a$!-88Y5^1)( z;gn-moWIM+$s#nF)qzoF5oT!rpBq=J3j)qzl$?s<<+PUzWT@CRV=rQ`F)t~LtM*NX>6{$VV1`R zSJ}O#@92cS9xvbyWx$nrX4d{;EI-eQNtmrB;N;Xqu*hsn!;jB$)O`~iZudNzd)j$q z`<_!`>~-HpCPk1c@lhb$&ou6I*ATjat*w2MXB8>8ni@RTN%q5oVLp%S+Ipq}y*3Bk zRfq95E|)KMheIydWySW)&ZqumZOzv?`xr#OC-pLM3n2?}6LhS!u!ligT6)}uQ_GjP z0g-+e1Pptz*YCrxBHu6j5vFYHU5N)+K*ozpbUpTNVV~zc>AKpo#2>$Dwjd38%WJ+#5@As8&hE ze7$k9=(?w4`p#Om(S&~O++C1Lo2krTz;EtM%hKOZm~yXcPz$#~6y?k-irYmY+_{vmc5H?)?NT1RRtQ%x2D% zCR@+g*I9YEy-dH3EtanPq~@|H z{?$nq*C9X(@~l~q02__oSyDz7sCyNnc(6k$qB7@fu=c!Khzi04rsn6(xcJt_C5crh8RAqHog7tU^Lu zw;cvz+gKR;9Le(5v>;k5L8bi4^Lg}%D)IRn&nIc z9-gQ18=3ktOYtnLUBW`$_hHWVqJu~Mo)wwpAmPpV0~42UrfT;02om|;kRLHpRGXRu zK6>eMeKcA;q5H+-RfF;6(FLc^Ou-Zh8a{i6pp!ZS=o3GXM zOFqvRWiYF>-W^tM#z!W_-v1be6SDG}fVDPVbrwz*4184yzyQS6y_TLz;WOUUbzFIH zPCiwo)gEq!l=jo=LZxjt*Lu<4s#c+tPlBsO;4F_4pni36@5mMY#e44UXTlbko5(VMq-uEtQQuFhEZ^jT43pxhgCoJ^UQ^+d)-{n{! zMN`t;e)1boh1VDt)a1tt+itEF$Yk65Ws=&FtprScYE?CP9PvjSg_&Zc=3M%mJanc8 z%Z(J)Qy**_<#`LI7N2=W^mbo<1PKCbP^CdFg9@m(Z~pZHvL?S9bXb&A*=6pI{Y?fY z;68QU*dH|JZ&o{T757z6AIS9ys5Ub$Ma1`Jif0nLHe6!{)-sRx(6;p1o*l;&l0@TE zAdWEL1Wn*_QXQI-;pU<_cg@?hNu{svqOQBwZN5Yf%a6VOK#RV|WDy<%hqHRITV~$e z6-c~EK6`_tNFTa_f6NbMTPfb>>I$d1hyE!lZ68xexRO@Jv&e}hBHy709VODBzYLiO z?yQ@wA+MdW4mQy6j9K}Tx5~f5Biy&Nw#Z~C766p$B-Fc@(6))2sW$<24Beb2*Lw93 z)4LHTh4mt86Fs-76br>#Q6+p?Etu(j)Bdh@6BOzGEA5^r@v{F{Yy1tLR8rT;npv}aS(R%M3)5X*1zIT>C?Gjc;HY(F_6c*0MP+>X0`@rwy}VZ0CP64( zR%hKOmyT)*R5I;)MJGTJc2B3AvX7>d!JGsw$9BywIor-|Ith=9L%D?ju6{w}H^*7C z=Wj)G4iI7e?_SEwP4do)E0pQuxsBF0RdO{3tf4lsg+ z={#XH|Kb4IjZQaH%B8b3=W!3Vy7!@&{-5lPRhR4()WfWV zS*0r%d%96T!dG2}rJC?PQJnN4b=%5~=#T-c_2rJH2kjxuPp_?X+!8WyupF^H?+4ze z`O2Q_U4s4-VCmvdpXv5w5Ax&-WSVu)K;38B!v-Wqk#Wqjg6?OOyh@YfZf3i)4Bl05 z6ig{#lu>NC1>s(@)KZ|&`8-{&pDB!&4<(HD$i4@nwGct@h@IAbwFulWWf9i>;QtC?@bz+8a&lIbCD_ml&)KL>ZY;A z2x6-$72=pJA_Q4%MRlySTY%x@k7G9w4n9T})$ma%IL>d3vfyz{pN;$RBLxW2u;ZP( zB8|pVyiyiDJ}Gbl$MnytuJ9|@+a;ygV%B@mNId>T3ZlA=w{#2XrEN#!1K@|BQqsI_3xC^BU8pZKP?|)tybR7Cy1j z?0;e64Sn`XnhC2w(W-~#B7jMQhESgGQ^~P$g=^!SUed!pZ_NoQzf<0jkguFL)F|9J zcs~Irg%DLvO5M!~0j;zTmN0%-wt1*B&Le&NFC#N4c%2WRYY-&{hH?a==Z%K4}2tpjmz_A7tnv?d96Tz!RI6Ov&W#Loeg5OjV z@ox>@{TrUXiy;WZVvAOhat32?n9n|2pp~GeTUBMqon33P% z38qhA!ctDGSOMEwcPC>Gwp;>0IQsWK`M|#goW+3+MM^SG3ueDz+3%14_+;Mwrp*J4-ZdM7p89#z!+ lc + + +Wayback Machine + + + + + + + + +

                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                            The Wayback Machine - https://web.archive.org/web/20170108131104/http://www.computer-engineering.org/ps2keyboard/scancodes3.html
                                                                                                                                                                                                                                                                                                                                                                                                                                            + +
                                                                                                                                                                                                                                                                                                                                                                                                                                            + + + \ No newline at end of file diff --git a/resources/Wayback Machine_files/analytics.js b/resources/Wayback Machine_files/analytics.js new file mode 100644 index 0000000..10400f0 --- /dev/null +++ b/resources/Wayback Machine_files/analytics.js @@ -0,0 +1,474 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3.0 +/* eslint-disable no-var, semi, prefer-arrow-callback, prefer-template */ + +/** + * Collection of methods for sending analytics events to Archive.org's analytics server. + * + * These events are used for internal stats and sent (in anonymized form) to Google Analytics. + * + * @see analytics.md + * + * @type {Object} + */ +window.archive_analytics = (function defineArchiveAnalytics() { + // keep orignal Date object so as not to be affected by wayback's + // hijacking global Date object + var Date = window.Date; + var ARCHIVE_ANALYTICS_VERSION = 2; + var DEFAULT_SERVICE = 'ao_2'; + var NO_SAMPLING_SERVICE = 'ao_no_sampling'; // sends every event instead of a percentage + + var startTime = new Date(); + + /** + * @return {Boolean} + */ + function isPerformanceTimingApiSupported() { + return 'performance' in window && 'timing' in window.performance; + } + + /** + * Determines how many milliseconds elapsed between the browser starting to parse the DOM and + * the current time. + * + * Uses the Performance API or a fallback value if it's not available. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance_API + * + * @return {Number} + */ + function getLoadTime() { + var start; + + if (isPerformanceTimingApiSupported()) + start = window.performance.timing.domLoading; + else + start = startTime.getTime(); + + return new Date().getTime() - start; + } + + /** + * Determines how many milliseconds elapsed between the user navigating to the page and + * the current time. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance_API + * + * @return {Number|null} null if the browser doesn't support the Performance API + */ + function getNavToDoneTime() { + if (!isPerformanceTimingApiSupported()) + return null; + + return new Date().getTime() - window.performance.timing.navigationStart; + } + + /** + * Performs an arithmetic calculation on a string with a number and unit, while maintaining + * the unit. + * + * @param {String} original value to modify, with a unit + * @param {Function} doOperation accepts one Number parameter, returns a Number + * @returns {String} + */ + function computeWithUnit(original, doOperation) { + var number = parseFloat(original, 10); + var unit = original.replace(/(\d*\.\d+)|\d+/, ''); + + return doOperation(number) + unit; + } + + /** + * Computes the default font size of the browser. + * + * @returns {String|null} computed font-size with units (typically pixels), null if it cannot be computed + */ + function getDefaultFontSize() { + var fontSizeStr; + + if (!('getComputedStyle' in window)) + return null; + + var style = window.getComputedStyle(document.documentElement); + if (!style) + return null; + + fontSizeStr = style.fontSize; + + // Don't modify the value if tracking book reader. + if (document.querySelector('#BookReader')) + return fontSizeStr; + + return computeWithUnit(fontSizeStr, function reverseBootstrapFontSize(number) { + // Undo the 62.5% size applied in the Bootstrap CSS. + return number * 1.6; + }); + } + + /** + * Get the URL parameters for a given Location + * @param {Location} + * @return {Object} The URL parameters + */ + function getParams(location) { + if (!location) location = window.location; + var vars; + var i; + var pair; + var params = {}; + var query = location.search; + if (!query) return params; + vars = query.substring(1).split('&'); + for (i = 0; i < vars.length; i++) { + pair = vars[i].split('='); + params[pair[0]] = decodeURIComponent(pair[1]); + } + return params; + } + + function getMetaProp(name) { + var metaTag = document.querySelector('meta[property=' + name + ']'); + return metaTag ? metaTag.getAttribute('content') || null : null; + } + + var ArchiveAnalytics = { + /** + * @type {String|null} + */ + service: getMetaProp('service'), + mediaType: getMetaProp('mediatype'), + primaryCollection: getMetaProp('primary_collection'), + + /** + * Key-value pairs to send in pageviews (you can read this after a pageview to see what was + * sent). + * + * @type {Object} + */ + values: {}, + + /** + * Sends an analytics ping, preferably using navigator.sendBeacon() + * @param {Object} values + * @param {Function} [onload_callback] (deprecated) callback to invoke once ping to analytics server is done + * @param {Boolean} [augment_for_ao_site] (deprecated) if true, add some archive.org site-specific values + */ + send_ping: function send_ping(values, onload_callback, augment_for_ao_site) { + if (typeof window.navigator !== 'undefined' && typeof window.navigator.sendBeacon !== 'undefined') + this.send_ping_via_beacon(values); + else + this.send_ping_via_image(values); + }, + + /** + * Sends a ping via Beacon API + * NOTE: Assumes window.navigator.sendBeacon exists + * @param {Object} values Tracking parameters to pass + */ + send_ping_via_beacon: function send_ping_via_beacon(values) { + var url = this.generate_tracking_url(values || {}); + window.navigator.sendBeacon(url); + }, + + /** + * Sends a ping via Image object + * @param {Object} values Tracking parameters to pass + */ + send_ping_via_image: function send_ping_via_image(values) { + var url = this.generate_tracking_url(values || {}); + var loadtime_img = new Image(1, 1); + loadtime_img.src = url; + loadtime_img.alt = ''; + }, + + /** + * Construct complete tracking URL containing payload + * @param {Object} params Tracking parameters to pass + * @return {String} URL to use for tracking call + */ + generate_tracking_url: function generate_tracking_url(params) { + var baseUrl = '//analytics.archive.org/0.gif'; + var keys; + var outputParams = params; + var outputParamsArray = []; + + outputParams.service = outputParams.service || this.service || DEFAULT_SERVICE; + + // Build array of querystring parameters + keys = Object.keys(outputParams); + keys.forEach(function keyIteration(key) { + outputParamsArray.push(encodeURIComponent(key) + '=' + encodeURIComponent(outputParams[key])); + }); + outputParamsArray.push('version=' + ARCHIVE_ANALYTICS_VERSION); + outputParamsArray.push('count=' + (keys.length + 2)); // Include `version` and `count` in count + + return baseUrl + '?' + outputParamsArray.join('&'); + }, + + /** + * @param {int} page Page number + */ + send_scroll_fetch_event: function send_scroll_fetch_event(page) { + var additionalValues = { ev: page }; + var loadTime = getLoadTime(); + var navToDoneTime = getNavToDoneTime(); + if (loadTime) additionalValues.loadtime = loadTime; + if (navToDoneTime) additionalValues.nav_to_done_ms = navToDoneTime; + this.send_event('page_action', 'scroll_fetch', location.pathname, additionalValues); + }, + + send_scroll_fetch_base_event: function send_scroll_fetch_base_event() { + var additionalValues = {}; + var loadTime = getLoadTime(); + var navToDoneTime = getNavToDoneTime(); + if (loadTime) additionalValues.loadtime = loadTime; + if (navToDoneTime) additionalValues.nav_to_done_ms = navToDoneTime; + this.send_event('page_action', 'scroll_fetch_base', location.pathname, additionalValues); + }, + + /** + * @param {Object} [options] + * @param {String} [options.mediaType] + * @param {String} [options.mediaLanguage] + * @param {String} [options.page] The path portion of the page URL + */ + send_pageview: function send_pageview(options) { + var settings = options || {}; + + var defaultFontSize; + var loadTime = getLoadTime(); + var mediaType = settings.mediaType; + var primaryCollection = settings.primaryCollection; + var page = settings.page; + var navToDoneTime = getNavToDoneTime(); + + /** + * @return {String} + */ + function get_locale() { + if (navigator) { + if (navigator.language) + return navigator.language; + + else if (navigator.browserLanguage) + return navigator.browserLanguage; + + else if (navigator.systemLanguage) + return navigator.systemLanguage; + + else if (navigator.userLanguage) + return navigator.userLanguage; + } + return ''; + } + + defaultFontSize = getDefaultFontSize(); + + // Set field values + this.values.kind = 'pageview'; + this.values.timediff = (new Date().getTimezoneOffset()/60)*(-1); // *timezone* diff from UTC + this.values.locale = get_locale(); + this.values.referrer = (document.referrer == '' ? '-' : document.referrer); + + if (loadTime) + this.values.loadtime = loadTime; + + if (navToDoneTime) + this.values.nav_to_done_ms = navToDoneTime; + + if (settings.trackingId) { + this.values.ga_tid = settings.trackingId; + } + + /* START CUSTOM DIMENSIONS */ + if (defaultFontSize) + this.values.ga_cd1 = defaultFontSize; + + if ('devicePixelRatio' in window) + this.values.ga_cd2 = window.devicePixelRatio; + + if (mediaType) + this.values.ga_cd3 = mediaType; + + if (settings.mediaLanguage) { + this.values.ga_cd4 = settings.mediaLanguage; + } + + if (primaryCollection) { + this.values.ga_cd5 = primaryCollection; + } + /* END CUSTOM DIMENSIONS */ + + if (page) + this.values.page = page; + + this.send_ping(this.values); + }, + + /** + * Sends a tracking "Event". + * @param {string} category + * @param {string} action + * @param {string} label + * @param {Object} additionalEventParams + */ + send_event: function send_event( + category, + action, + label, + additionalEventParams + ) { + if (!label) label = window.location.pathname; + if (!additionalEventParams) additionalEventParams = {}; + if (additionalEventParams.mediaLanguage) { + additionalEventParams.ga_cd4 = additionalEventParams.mediaLanguage; + delete additionalEventParams.mediaLanguage; + } + var eventParams = Object.assign( + { + kind: 'event', + ec: category, + ea: action, + el: label, + cache_bust: Math.random(), + }, + additionalEventParams + ); + this.send_ping(eventParams); + }, + + /** + * Sends every event instead of a small percentage. + * + * Use this sparingly as it can generate a lot of events. + * + * @param {string} category + * @param {string} action + * @param {string} label + * @param {Object} additionalEventParams + */ + send_event_no_sampling: function send_event_no_sampling( + category, + action, + label, + additionalEventParams + ) { + var extraParams = additionalEventParams || {}; + extraParams.service = NO_SAMPLING_SERVICE; + this.send_event(category, action, label, extraParams); + }, + + /** + * @param {Object} options see this.send_pageview options + */ + send_pageview_on_load: function send_pageview_on_load(options) { + var self = this; + window.addEventListener('load', function send_pageview_with_options() { + self.send_pageview(options); + }); + }, + + /** + * Handles tracking events passed in URL. + * Assumes category and action values are separated by a "|" character. + * NOTE: Uses the unsampled analytics property. Watch out for future high click links! + * @param {Location} + */ + process_url_events: function process_url_events(location) { + var eventValues; + var actionValue; + var eventValue = getParams(location).iax; + if (!eventValue) return; + eventValues = eventValue.split('|'); + actionValue = eventValues.length >= 1 ? eventValues[1] : ''; + this.send_event_no_sampling( + eventValues[0], + actionValue, + window.location.pathname + ); + }, + + /** + * Attaches handlers for event tracking. + * + * To enable click tracking for a link, add a `data-event-click-tracking` + * attribute containing the Google Analytics Event Category and Action, separated + * by a vertical pipe (|). + * e.g. `` + * + * To enable form submit tracking, add a `data-event-form-tracking` attribute + * to the `form` tag. + * e.g. `
                                                                                                                                                                                                                                                                                                                                                                                                                                            ` + * + * Additional tracking options can be added via a `data-event-tracking-options` + * parameter. This parameter, if included, should be a JSON string of the parameters. + * Valid parameters are: + * - service {string}: Corresponds to the Google Analytics property data values flow into + */ + set_up_event_tracking: function set_up_event_tracking() { + var self = this; + var clickTrackingAttributeName = 'event-click-tracking'; + var formTrackingAttributeName = 'event-form-tracking'; + var trackingOptionsAttributeName = 'event-tracking-options'; + + function handleAction(event, attributeName) { + var selector = '[data-' + attributeName + ']'; + var eventTarget = event.target; + if (!eventTarget) return; + var target = eventTarget.closest(selector); + if (!target) return; + var categoryAction; + var categoryActionParts; + var options; + categoryAction = target.dataset[toCamelCase(attributeName)]; + if (!categoryAction) return; + categoryActionParts = categoryAction.split('|'); + options = target.dataset[toCamelCase(trackingOptionsAttributeName)]; + options = options ? JSON.parse(options) : {}; + self.send_event( + categoryActionParts[0], + categoryActionParts[1], + categoryActionParts[2] || window.location.pathname, + options.service ? { service: options.service } : {} + ); + } + + function toCamelCase(str) { + return str.replace(/\W+(.)/g, function (match, chr) { + return chr.toUpperCase(); + }); + }; + + document.addEventListener('click', function(e) { + handleAction(e, clickTrackingAttributeName); + }); + + document.addEventListener('submit', function(e) { + handleAction(e, formTrackingAttributeName); + }); + }, + + /** + * @returns {Object[]} + */ + get_data_packets: function get_data_packets() { + return [this.values]; + }, + + /** + * Creates a tracking image for tracking JS compatibility. + * + * @param {string} type The type value for track_js_case in query params for 0.gif + */ + create_tracking_image: function create_tracking_image(type) { + this.send_ping_via_image({ + cache_bust: Math.random(), + kind: 'track_js', + track_js_case: type, + }); + } + }; + + return ArchiveAnalytics; +}()); +// @license-end diff --git a/resources/Wayback Machine_files/banner-styles.css b/resources/Wayback Machine_files/banner-styles.css new file mode 100644 index 0000000..8d39621 --- /dev/null +++ b/resources/Wayback Machine_files/banner-styles.css @@ -0,0 +1,500 @@ +@import 'record.css'; /* for SPN1 */ + +#wm-ipp-base { + height:65px;/* initial height just in case js code fails */ + padding:0; + margin:0; + border:none; + background:none transparent; +} +#wm-ipp { + z-index: 2147483647; +} +#wm-ipp, #wm-ipp * { + font-family:Lucida Grande, Helvetica, Arial, sans-serif; + font-size:12px; + line-height:1.2; + letter-spacing:0; + width:auto; + height:auto; + max-width:none; + max-height:none; + min-width:0 !important; + min-height:0; + outline:none; + float:none; + text-align:left; + border:none; + color: #000; + text-indent: 0; + position: initial; + background: none; +} +#wm-ipp div, #wm-ipp canvas { + display: block; +} +#wm-ipp div, #wm-ipp tr, #wm-ipp td, #wm-ipp a, #wm-ipp form { + padding:0; + margin:0; + border:none; + border-radius:0; + background-color:transparent; + background-image:none; + /*z-index:2147483640;*/ + height:auto; +} +#wm-ipp table { + border:none; + border-collapse:collapse; + margin:0; + padding:0; + width:auto; + font-size:inherit; +} +#wm-ipp form input { + padding:1px !important; + height:auto; + display:inline; + margin:0; + color: #000; + background: none #fff; + border: 1px solid #666; +} +#wm-ipp form input[type=submit] { + padding:0 8px !important; + margin:1px 0 1px 5px !important; + width:auto !important; + border: 1px solid #000 !important; + background: #fff !important; + color: #000 !important; +} +#wm-ipp a { + display: inline; +} +#wm-ipp a:hover{ + text-decoration:underline; +} +#wm-ipp a.wm-btn:hover { + text-decoration:none; + color:#ff0 !important; +} +#wm-ipp a.wm-btn:hover span { + color:#ff0 !important; +} +#wm-ipp #wm-ipp-inside { + margin: 0 6px; + border:5px solid #000; + border-top:none; + background-color:rgba(255,255,255,0.9); + -moz-box-shadow:1px 1px 4px #333; + -webkit-box-shadow:1px 1px 4px #333; + box-shadow:1px 1px 4px #333; + border-radius:0 0 8px 8px; +} +/* selectors are intentionally verbose to ensure priority */ +#wm-ipp #wm-logo { + padding:0 10px; + vertical-align:middle; + min-width:100px; + flex: 0 0 100px; +} +#wm-ipp .c { + padding-left: 4px; +} +#wm-ipp .c .u { + margin-top: 4px !important; +} +#wm-ipp .n { + padding:0 0 0 5px !important; + vertical-align: bottom; +} +#wm-ipp .n a { + text-decoration:none; + color:#33f; + font-weight:bold; +} +#wm-ipp .n .b { + padding:0 6px 0 0 !important; + text-align:right !important; + overflow:visible; + white-space:nowrap; + color:#99a; + vertical-align:middle; +} +#wm-ipp .n .y .b { + padding:0 6px 2px 0 !important; +} +#wm-ipp .n .c { + background:#000; + color:#ff0; + font-weight:bold; + padding:0 !important; + text-align:center; +} +#wm-ipp.hi .n td.c { + color:#ec008c; +} +#wm-ipp .n td.f { + padding:0 0 0 6px !important; + text-align:left !important; + overflow:visible; + white-space:nowrap; + color:#99a; + vertical-align:middle; +} +#wm-ipp .n tr.m td { + text-transform:uppercase; + white-space:nowrap; + padding:2px 0; +} +#wm-ipp .c .s { + padding:0 5px 0 0 !important; + vertical-align:bottom; +} +#wm-ipp #wm-nav-captures { + white-space: nowrap; +} +#wm-ipp .c .s a.t { + color:#33f; + font-weight:bold; + line-height: 1.8; +} +#wm-ipp .c .s div.r { + color: #666; + font-size:9px; + white-space:nowrap; +} +#wm-ipp .c .k { + padding-bottom:1px; +} +#wm-ipp .c .s { + padding:0 5px 2px 0 !important; +} +#wm-ipp td#displayMonthEl { + padding: 2px 0 !important; +} +#wm-ipp td#displayYearEl { + padding: 0 0 2px 0 !important; +} + +div#wm-ipp-sparkline { + position:relative;/* for positioning markers */ + white-space:nowrap; + background-color:#fff; + cursor:pointer; + line-height:0.9; +} +#sparklineImgId, #wm-sparkline-canvas { + position:relative; + z-index:9012; + max-width:none; +} +#wm-ipp-sparkline div.yt { + position:absolute; + z-index:9010 !important; + background-color:#ff0 !important; + top: 0; +} +#wm-ipp-sparkline div.mt { + position:absolute; + z-index:9013 !important; + background-color:#ec008c !important; + top: 0; +} +#wm-ipp .r { + margin-left: 4px; +} +#wm-ipp .r a { + color:#33f; + border:none; + position:relative; + background-color:transparent; + background-repeat:no-repeat !important; + background-position:100% 100% !important; + text-decoration: none; +} +#wm-ipp #wm-capinfo { + /* prevents notice div background from sticking into round corners of + #wm-ipp-inside */ + border-radius: 0 0 4px 4px; +} +#wm-ipp #wm-capinfo .c-logo { + display:block; + float:left; + margin-right:3px; + width:90px; + min-height:90px; + max-height: 290px; + border-radius:45px; + overflow:hidden; + background-position:50%; + background-size:auto 90px; + box-shadow: 0 0 2px 2px rgba(208,208,208,128) inset; +} +#wm-ipp #wm-capinfo .c-logo span { + display:inline-block; +} +#wm-ipp #wm-capinfo .c-logo img { + height:90px; + position:relative; + left:-50%; +} +#wm-ipp #wm-capinfo .wm-title { + font-size:130%; +} +#wm-ipp #wm-capinfo a.wm-selector { + display:inline-block; + color: #aaa; + text-decoration:none !important; + padding: 2px 8px; +} +#wm-ipp #wm-capinfo a.wm-selector.selected { + background-color:#666; +} +#wm-ipp #wm-capinfo a.wm-selector:hover { + color: #fff; +} +#wm-ipp #wm-capinfo.notice-only #wm-capinfo-collected-by, +#wm-ipp #wm-capinfo.notice-only #wm-capinfo-timestamps { + display: none; +} +#wm-ipp #wm-capinfo #wm-capinfo-notice .wm-capinfo-content { + background-color:#ff0; + padding:5px; + font-size:14px; + text-align:center; +} +#wm-ipp #wm-capinfo #wm-capinfo-notice .wm-capinfo-content * { + font-size:14px; + text-align:center; +} +#wm-ipp #wm-expand { + right: 1px; + bottom: -1px; + color: #ffffff; + background-color: #666 !important; + padding:0 5px 0 3px !important; + border-radius: 3px 3px 0 0 !important; +} +#wm-ipp #wm-expand span { + color: #ffffff; +} +#wm-ipp #wm-expand #wm-expand-icon { + display: inline-block; + transition: transform 0.5s; + transform-origin: 50% 45%; +} +#wm-ipp #wm-expand.wm-open #wm-expand-icon { + transform: rotate(180deg); +} +#wm-ipp #wmtb { + text-align:right; +} +#wm-ipp #wmtb #wmtbURL { + width: calc(100% - 45px); +} +#wm-ipp #wm-graph-anchor { + border-right:1px solid #ccc; +} +/* time coherence */ +html.wb-highlight { + box-shadow: inset 0 0 0 3px #a50e3a !important; +} +.wb-highlight { + outline: 3px solid #a50e3a !important; +} +#wm-ipp-print { + display:none !important; +} +@media print { +#wm-ipp-base { + display:none !important; +} +#wm-ipp-print { + display:block !important; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +} +@media (max-width:414px) { + #wm-ipp .xxs { + display:none !important; + } +} +@media (min-width:1055px) { +#wm-ipp #wm-graph-anchor { + display:block !important; +} +} +@media (max-width:1054px) { +#wm-ipp #wm-graph-anchor { + display:none !important; +} +} +@media (max-width:1163px) { +#wm-logo { + display:none !important; +} +} + +#wm-btns { + white-space: nowrap; + margin-top: -2px; +} + +#wm-btns #wm-save-snapshot-open { + margin-right: 7px; + top: -6px; +} + +#wm-btns #wm-sign-in { + box-sizing: content-box; + display: none; + margin-right: 7px; + top: -8px; + + /* + round border around sign in button + */ + border: 2px #000 solid; + border-radius: 14px; + padding-right: 2px; + padding-bottom: 2px; + width: 11px; + height: 11px; +} + +#wm-btns #wm-sign-in>.iconochive-person { + font-size: 12.5px; +} + +#wm-save-snapshot-open > .iconochive-web { + color:#000; + font-size:160%; +} + +#wm-ipp #wm-share { + display: flex; + align-items: flex-end; + justify-content: space-between; +} + +#wm-share > #wm-screenshot { + display: inline-block; + margin-right: 3px; + visibility: hidden; +} + +#wm-screenshot > .iconochive-image { + color:#000; + font-size:160%; +} + +#wm-share > #wm-video { + display: inline-block; + margin-right: 3px; + visibility: hidden; +} + +#wm-video > .iconochive-movies { + color: #000; + display: inline-block; + font-size: 150%; + margin-bottom: 2px; +} + +#wm-btns #wm-save-snapshot-in-progress { + display: none; + font-size:160%; + opacity: 0.5; + position: relative; + margin-right: 7px; + top: -5px; +} + +#wm-btns #wm-save-snapshot-success { + display: none; + color: green; + position: relative; + top: -7px; +} + +#wm-btns #wm-save-snapshot-fail { + display: none; + color: red; + position: relative; + top: -7px; +} + +.wm-icon-screen-shot { + background: url("../images/web-screenshot.svg") no-repeat !important; + background-size: contain !important; + width: 22px !important; + height: 19px !important; + + display: inline-block; +} +#donato { + /* transition effect is disable so as to simplify height adjustment */ + /*transition: height 0.5s;*/ + height: 0; + margin: 0; + padding: 0; + border-bottom: 1px solid #999 !important; +} +body.wm-modal { + height: auto !important; + overflow: hidden !important; +} +#donato #donato-base { + width: 100%; + height: 100%; + /*bottom: 0;*/ + margin: 0; + padding: 0; + position: absolute; + z-index: 2147483639; +} +body.wm-modal #donato #donato-base { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 2147483640; +} + +.wb-autocomplete-suggestions { + font-family: Lucida Grande, Helvetica, Arial, sans-serif; + font-size: 12px; + text-align: left; + cursor: default; + border: 1px solid #ccc; + border-top: 0; + background: #fff; + box-shadow: -1px 1px 3px rgba(0,0,0,.1); + position: absolute; + display: none; + z-index: 2147483647; + max-height: 254px; + overflow: hidden; + overflow-y: auto; + box-sizing: border-box; +} +.wb-autocomplete-suggestion { + position: relative; + padding: 0 .6em; + line-height: 23px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-size: 1.02em; + color: #333; +} +.wb-autocomplete-suggestion b { + font-weight: bold; +} +.wb-autocomplete-suggestion.selected { + background: #f0f0f0; +} diff --git a/resources/Wayback Machine_files/bundle-playback.js b/resources/Wayback Machine_files/bundle-playback.js new file mode 100644 index 0000000..acc52e2 --- /dev/null +++ b/resources/Wayback Machine_files/bundle-playback.js @@ -0,0 +1,3 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0 +!function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){return!t||"object"!==o(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function s(e){var t="function"==typeof Map?new Map:void 0;return(s=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,o)}function o(){return a(e,arguments,u(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),l(o,e)})(e)}function a(e,t,n){return(a=c()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var i=new(Function.bind.apply(e,o));return n&&l(i,n.prototype),i}).apply(null,arguments)}function c(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}if(n.d(t,"a",(function(){return f})),n.d(t,"d",(function(){return p})),n.d(t,"c",(function(){return d})),n.d(t,"b",(function(){return v})),"undefiend"!=typeof window.XMLHttpRequest){var h=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(o,e);var t,n=(t=o,function(){var e,n=u(t);if(c()){var o=u(this).constructor;e=Reflect.construct(n,arguments,o)}else e=n.apply(this,arguments);return r(this,e)});function o(){return i(this,o),n.apply(this,arguments)}return o}(s(XMLHttpRequest));Object.defineProperty(h.prototype,"responseURL",Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"responseURL"))}function f(e,t,n,o,i){var r;if((r=window.XMLHttpRequest?new h:new ActiveXObject("Microsoft.XMLHTTP")).onreadystatechange=function(){4==this.readyState&&n(r)},r.open(e,t,!0),o)for(var s in o)o.hasOwnProperty(s)&&r.setRequestHeader(s,o[s]);r.withCredentials=!0,r.send(i)}function p(e){return void 0!==e&&e&&e.constructor===Array}function d(e){return document.cookie.search(e)>=0}function m(e,t){var n=window["HTML".concat(e,"Element")];if(void 0!==n){var o=Object.getOwnPropertyDescriptor(n.prototype,t);void 0!==o&&Object.defineProperty(n.prototype,"_wm_".concat(t),o)}}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"src",n="_wm_".concat(t);return n in e.__proto__?e[n]:e[t]}m("Image","src"),m("Media","src"),m("Embed","src"),m("IFrame","src"),m("Script","src"),m("Link","href"),m("Anchor","href")},function(e,t,n){"use strict";n.d(t,"c",(function(){return s})),n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return c}));var o=["January","February","March","April","May","June","July","August","September","October","November","December"],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],r={Y:function(e){return e.getUTCFullYear()},m:function(e){return e.getUTCMonth()+1},b:function(e){return i[e.getUTCMonth()]},B:function(e){return o[e.getUTCMonth()]},d:function(e){return e.getUTCDate()},H:function(e){return("0"+e.getUTCHours()).slice(-2)},M:function(e){return("0"+e.getUTCMinutes()).slice(-2)},S:function(e){return("0"+e.getUTCSeconds()).slice(-2)},"%":function(){return"%"}};function s(e){var t=function(e){return"number"==typeof e&&(e=e.toString()),[e.slice(-14,-10),e.slice(-10,-8),e.slice(-8,-6),e.slice(-6,-4),e.slice(-4,-2),e.slice(-2)]}(e);return new Date(Date.UTC(t[0],t[1]-1,t[2],t[3],t[4],t[5]))}function a(e){return i[e]}function c(e,t){return t.replace(/%./g,(function(t){var n=r[t[1]];return n?n(s(e)):t}))}},function(e,t,n){"use strict";n.d(t,"b",(function(){return s})),n.d(t,"a",(function(){return a}));var o=n(0);function i(e,t){for(var n=0;n=400?i.failure&&i.failure(e):i.success&&i.success(e)}),{"Content-Type":"application/json"},r.stringify({url:e,snapshot:t,tags:n||[]})),!1}var a=function(){function e(t,n,i){var r=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.el=t,this.url=n,this.timestamp=i,t.onclick=this.save.bind(this),document.addEventListener("DOMContentLoaded",(function(){Object(o.c)("logged-in-user")&&Object(o.c)("logged-in-sig")?r.userIsLoggedIn():r.userIsNotLoggedIn()}))}var t,n,r;return t=e,(n=[{key:"save",value:function(e){this.start(),s(this.url,this.timestamp,[],{failure:this.failure.bind(this),success:this.success.bind(this)})}},{key:"start",value:function(){this.hide(["wm-save-snapshot-fail","wm-save-snapshot-open","wm-save-snapshot-success"]),this.show(["wm-save-snapshot-in-progress"])}},{key:"failure",value:function(e){401==e.status?this.userNotLoggedIn(e):(this.hide(["wm-save-snapshot-in-progress","wm-save-snapshot-success"]),this.show(["wm-save-snapshot-fail","wm-save-snapshot-open"]),console.log("You have got an error."),console.log("If you think something wrong here please send it to support."),console.log('Response: "'+e.responseText+'"'),console.log('status: "'+e.status+'"'))}},{key:"success",value:function(e){this.hide(["wm-save-snapshot-fail","wm-save-snapshot-in-progress"]),this.show(["wm-save-snapshot-open","wm-save-snapshot-success"])}},{key:"userIsLoggedIn",value:function(){this.show("wm-save-snapshot-open"),this.hide("wm-sign-in")}},{key:"userIsNotLoggedIn",value:function(){this.hide(["wm-save-snapshot-open","wm-save-snapshot-in-progress"]),this.show("wm-sign-in")}},{key:"show",value:function(e){this.setDisplayStyle(e,"inline-block")}},{key:"hide",value:function(e){this.setDisplayStyle(e,"none")}},{key:"setDisplayStyle",value:function(e,t){var n=this;(Object(o.d)(e)?e:[e]).forEach((function(e){var o=n.el.getRootNode().getElementById(e);o&&(o.style.display=t)}))}}])&&i(t.prototype,n),r&&i(t,r),e}()},,,,,,,function(e,t,n){"use strict";var o;n.r(t);var i,r={createElementNS:document.createElementNS};var s=!0;function a(e){!function(e,t,n){if(n){var o=new Date;o.setTime(o.getTime()+24*n*60*60*1e3);var i="; expires="+o.toGMTString()}else i="";document.cookie=e+"="+t+i+"; path=/"}(e,"",-1)}var c=n(0),l=n(1),u=window.Date;function h(e,t){return(e=e.toString()).length>=t?e:"00000000".substring(0,t-e.length)+e}function f(e){for(var t=0,n=0;n3}(e)){var o=[];for(n=0;n=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i,r=!0,s=!1;return{s:function(){o=e[Symbol.iterator]()},n:function(){var e=o.next();return r=e.done,e},e:function(e){s=!0,i=e},f:function(){try{r||null==o.return||o.return()}finally{if(s)throw i}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:"src",r=window.location.origin,s=b(window,e),l=p(s);try{for(l.s();!(o=l.n()).done;){var u=o.value;if(!n||n(u)){var h=Object(c.b)(u,i);h&&!h.startsWith(t)&&h.startsWith(r)&&(h.startsWith("data:")||a.push(h))}}}catch(e){l.e(e)}finally{l.f()}}u("img"),u("frame"),u("iframe",(function(e){return"playback"!==e.id})),u("script"),u("link",(function(e){return"stylesheet"===e.rel}),"href");var h=a.filter((function(e,t,n){return n.indexOf(e)===t}));h.length>0?(s=0,h.map((function(e){e.match("^https?://")&&(s++,Object(c.a)("HEAD",e,(function(e){if(200==e.status){var t=e.getResponseHeader("Memento-Datetime");if(null==t)console.log("%s: no Memento-Datetime",u);else{var n=document.createElement("span"),a=function(e,t){var n=new Date(e).getTime()-t,o="";n<0?(o+="-",n=Math.abs(n)):o+="+";var i=!1;if(n<1e3)return{delta:n,text:"",highlight:i};var r=n,s=Math.floor(n/1e3/60/60/24/30/12);n-=1e3*s*60*60*24*30*12;var a=Math.floor(n/1e3/60/60/24/30);n-=1e3*a*60*60*24*30;var c=Math.floor(n/1e3/60/60/24);n-=1e3*c*60*60*24;var l=Math.floor(n/1e3/60/60);n-=1e3*l*60*60;var u=Math.floor(n/1e3/60);n-=1e3*u*60;var h=Math.floor(n/1e3),f=[];s>1?(f.push(s+" years"),i=!0):1==s&&(f.push(s+" year"),i=!0);a>1?(f.push(a+" months"),i=!0):1==a&&(f.push(a+" month"),i=!0);c>1?f.push(c+" days"):1==c&&f.push(c+" day");l>1?f.push(l+" hours"):1==l&&f.push(l+" hour");u>1?f.push(u+" minutes"):1==u&&f.push(u+" minute");h>1?f.push(h+" seconds"):1==h&&f.push(h+" second");f.length>2&&(f=f.slice(0,2));return{delta:r,text:o+f.join(" "),highlight:i}}(t,r),c=a.highlight?"color:red;":"";n.innerHTML=" "+a.text,n.title=t,n.setAttribute("style",c);var l=e.getResponseHeader("Content-Type"),u=e.responseURL.replace(window.location.origin,""),h=document.createElement("a");h.innerHTML=u.split("/").splice(3).join("/"),h._wm_href=u,h.title=l,h.onmouseover=y,h.onmouseout=w;var f=document.createElement("div");f.setAttribute("data-delta",a.delta),f.appendChild(h),f.append(n),o.appendChild(f);var p=Array.prototype.slice.call(o.childNodes,0);p.sort((function(e,t){return t.getAttribute("data-delta")-e.getAttribute("data-delta")})),o.innerHTML="";for(var d=0,m=p.length;d0)for(var n=0;n0)for(var n=0;n0?this.sc.scrollTop=i+this.sc.suggestionHeight+o-this.sc.maxHeight:i<0&&(this.sc.scrollTop=i+o)}}},{key:"blurHandler",value:function(){var e=this;try{var t=this.root.querySelector(".wb-autocomplete-suggestions:hover")}catch(e){t=null}t?this.input!==document.activeElement&&setTimeout((function(){return e.focus()}),20):(this.last_val=this.input.value,this.sc.style.display="none",setTimeout((function(){return e.sc.style.display="none"}),350))}},{key:"suggest",value:function(e){var t=this.input.value;if(this.cache[t]=e,e.length&&t.length>=this.minChars){for(var n="",o=0;o40)&&13!=n&&27!=n){var o=this.input.value;if(o.length>=this.minChars){if(o!=this.last_val){if(this.last_val=o,clearTimeout(this.timer),this.cache){if(o in this.cache)return void this.suggest(this.cache[o]);for(var i=1;i'+e.replace(n,"$1")+""}},{key:"onSelect",value:function(e,t,n){}}]),e}(),j=function(){function e(t,n){S(this,e);var o=t.getRootNode();if(o.querySelector){var i="object"==_(t)?[t]:o.querySelectorAll(t);this.elems=i.map((function(e){return new E(e,n)}))}}return T(e,[{key:"destroy",value:function(){for(;this.elems.length>0;)this.elems.pop().unload()}}]),e}(),R=n(2),A=window.JSON,N=window.open,U=window.Date,I=document,D=document,P=function(e){return D.getElementById(e)};var q,F="/static/";function B(e){L.classList.contains("wm-closed")?(e&&O.classList.add("notice-only"),L.classList.replace("wm-closed","wm-open"),O.style.display="block",m(q,F,P)):(L.classList.replace("wm-open","wm-closed"),O.style.display="none",O.classList.remove("notice-only"))}function W(e,t){var n=P(e);n&&(n.style.visibility=t?"visible":"hidden")}function X(e,t){Object(c.d)(e)||(e=[e]);for(var n=0;n0&&r<60,r)}))}window.__wm={init:function(e){!function(){var e=document.cookie.split(";");if(e.length>40)for(var t=0;t1?t-1:0),o=1;o0;)x.appendChild(C.children[0]);if(d)for(var H=0;H'+((""+n).replace(/\B(?=(\d{3})+$)/g,",")+" ")+(n>1?"captures":"capture")+"",f=l.a(i,"%d %b %Y");s!=i&&(f+=" - "+l.a(s,"%d %b %Y")),h+='
                                                                                                                                                                                                                                                                                                                                                                                                                                            '+f+"
                                                                                                                                                                                                                                                                                                                                                                                                                                            ",t.innerHTML=h}(o),function(e,t,n,o,i,r,s){var a=o.getContext("2d");if(a){a.fillStyle="#FFF";var c=(new u).getUTCFullYear(),l=t/(c-i+1),h=f(e.years),p=h[0],d=n/h[1];if(r>=i){var m=T(r);a.fillStyle="#FFFFA5",a.fillRect(m,0,l,n)}for(var v=i;v<=c;v++){m=T(v);a.beginPath(),a.moveTo(m,0),a.lineTo(m,n),a.lineWidth=1,a.strokeStyle="#CCC",a.stroke()}s=parseInt(s)-1;for(var g=(l-1)/12,y=0;y0){var M=Math.ceil(S*d);a.fillStyle=v==r&&_==s?"#EC008C":"#000",a.fillRect(Math.round(b),Math.ceil(n-M),Math.ceil(g),Math.round(M))}b+=g}}}function T(e){return Math.ceil((e-i)*l)+.5}}(o,e,t,Z,a,_,S)}}))}else{var te=new Image;te.src="/__wb/sparkline?url="+encodeURIComponent(r)+"&width="+e+"&height="+t+"&selected_year="+_+"&selected_month="+S+(i&&"&collection="+i||""),te.alt="sparkline",te.width=e,te.height=t,te.id="sparklineImgId",te.border="0",Q.parentNode.replaceChild(te,Q)}function ne(e){for(var t=[],n=e.length,o=0;oa?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
                                                                                                                                                                                                                                                                                                                                                                                                                                            ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; +if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
                                                                                                                                                                                                                                                                                                                                                                                                                                            a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
                                                                                                                                                                                                                                                                                                                                                                                                                                            ","
                                                                                                                                                                                                                                                                                                                                                                                                                                            "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                                                                                                                                                                                                                                                                                                                                                                                                                            "],tr:[2,"","
                                                                                                                                                                                                                                                                                                                                                                                                                                            "],col:[2,"","
                                                                                                                                                                                                                                                                                                                                                                                                                                            "],td:[3,"","
                                                                                                                                                                                                                                                                                                                                                                                                                                            "],_default:k.htmlSerialize?[0,"",""]:[1,"X
                                                                                                                                                                                                                                                                                                                                                                                                                                            ","
                                                                                                                                                                                                                                                                                                                                                                                                                                            "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("