From uucp Wed Jun 18 17:31:03 1986 >From uucp Wed Jun 18 17:05:08 1986 remote from hpfcla >From uucp Wed Apr 30 09:35:40 1986 remote from hpfclm >From pete 18 Jun 1986 9:21am remote from hpfclm1 To: hpfclm!hpfcla!jws Status: R Subject: HIL Nimitz Technical Notes File: nim.doc Date: Jun 17, 1986 (rev 4) HP-HIL NIMITZ KEYBOARD OVERVIEW The following information pretains to the HIL Nimitz keyboard support of HIL commands and to modifications to the existing Intel 8042 HIL controller in the host mainframe. Keycodes - The keyboard codes will be of keycode set 2 (device dependent) and will be the same keycodes as the present Nimitz, with some modifications. This will mean that the keycodes will not have to be mapped in the 8042. The keycodes coming from the Nimitz to the 8042 will be modified in that the least significant bit will designate a down or up key. The upper bits will be the Nimitz keycodes shifted left one bit in order to facilitate the down/up information. The keycodes will be cooked in the 8042 by shifting out the up/down bit and delivered in true Nimitz form to the host. Special Keys - The RESET, SHIFT and CTRL keycodes will be the ITF keycodes, of the keycode set 1. These keycodes will be detected and reported in the manner consistent with supporting the Nimitz data structure, that is, via register bit identification. Device ID - The device ID has been chosen to be E0 and the Extended Describe Cmd returns the language code. The language codes are consistent with Nimitz existing language codes and therefore does not follow the language codes designated in the Extended Describe Cmd. Knob Identification - The knob is reported along with keycode data as two axes data, in similar format as the HIL single knob. The shift keys control the Y axes information consistent with the present Nimitz operation. The 8042 will recognize the axis data in the poll record and strips away any indication of keycodes before sending the poll header and axis data on as raw data to the OS. This means that HIL routines in the operating systems have to recognize the HIL knob with a device ID of E0. Knob Axis Data - Also, the Nimitz knob does not send 0 y axis data when only x axis information is available. This request was made by Steve Taylor so that he can see to set the Shift bit in the Knob register. The knob is implemented identical to the single HIL knob in that a clockwise turn of the knob produces positive axis data. This was considered a special case implementation in the Pascal OS for the HIL knob and now has been extended to the Nimitz knob. Nimitz Register - A new register has been designated in the upper 16 bytes of 8042 RAM memory as NIMSADR. This register is accessible by the host and works in a similar manner as the existing KBDSADR. The register identifies the position of all HIL Nimitz keyboards on HIL. The existing KBDSADR register will continue to report all keyboards including Nimitz, while NIMSADR only reports the Nimitz keyboards. Operation - The operating system follows the normal course of events when accessing the 8042. At some point in time, it will read the configuration register R11 and determine that HIL is present. The next step is to read the bits which designates the type of keyboard, ITF or Nimitz. If it is an Nimitz, then all other accesses are of the expected Nimitz operation, except reading the knob. If it is an ITF, then all other accesses are of the expected ITF operation. DETAILS SPECIFICATIONS 1) HIL Supported Commands Description Interface Clear Enter Pass-Thru Mode Enter Loop-Back Mode Identify and Describe Device Soft Reset Perform Self Test Auto Configure Poll RePoll Extended Describe System Hard Reset Transmission Error Configuration Address Error Device Hard Reset 2) Device ID and Describe Record Used to identify the nimitz keyboard and axis data. BYTE # DESCRIPTION BIT VALUE BYTE VALUE 1 Device ID E0 h 2 Describe Record Header 0A h Bit 7 Two independent axes 0 Bit 6 Absolute positional 0 Bit 5 16 bits/axes 0 Bit 4 I/O descriptor byte 0 Bit 3 Extended describe cmd 1 Bit 2 Report Security code 0 Bit 1 Axes reported (x & y) 1 Bit 0 Axes reported (x & y) 0 3 Number of counts/meter low byte 61 h 4 Number of counts/meter high byte 0F h 3) Extended Describe Record Used to transmit keyboard language code. BYTE # DESCRIPTION BIT VALUE BYTE VALUE 1 Extended Describe Record Header 40 h Bit 7 Reserved for future use 0 Bit 6 Locational Code support 1 Bit 5 Report Status support 0 Bit 4 Report Name support 0 Bit 3 Reserved for future use 0 Bit 2 Read Register support 0 Bit 1 Write Register support 0 Bit 0 Write Register support 0 2 Localization Code (Language Code) 00..06 h USASCII 00 French 01 German 02 Swedish/Finnish 03 Spanish 04 Katakana 05 4) Poll Record The Poll Record Header is the following: BYTE # DESCRIPTION BIT VALUE BYTE VALUE 1 Poll Header 02, 40 or 42 h Bit 7 Data from 2nd set of axes 0 Bit 6 Data Description code 0/1 Bit 5 Data Description code 0 Bit 4 Data Description code 0 Bit 3 Request for status check 0 Bit 2 Device ready for data 0 Bit 1 Coordinate axes code 0/1 Bit 0 Coordinate axes code 0 2 X Axis Data Low Byte (if sent) 3 X Axis Data High Byte (if sent) 4 Y Axis Data Low Byte (if sent) 5 Y Axis Data High Byte (if sent) 6 Keycode Data Byte (if sent) 7 Incremented Poll Command 5) Nimitz Knob Axis Data a) Knob data cannot be cooked and must be in raw mode. Knob data is detected by the 8042 in a poll record and is shipped on to the host in raw mode. (see discussion at beginning of this paper) 6) Nimitz Keyboard Keycode Format a) The HIL Nimitz keycodes are identical to the existing Nimitz keycodes except that an up/down transition bit has been added to the LSBit of the byte. The 8042 controller will strip off the LSB in the cooked mode and right shift the data which will now be in the form of a Nimitz keycode. 7) Intel HIL Controller a) Two Or More Keyboards - Like the present implementation, two or more keyboard may be connected to the HIL. If we have a mix of Nimitz and ITF and both remain in the default cooked mode, then the 8042 will recognize the first keyboard as either Nimitz or HIL and set the appropriate bit in the configuration register R11 to note such. No matter which keyboard is first, all cooked keyboards will be cooked and their keycodes will be passed to the host. This means that Nimitz will pass some keycodes which ITF does not have and ITF will pass some that Nimitz does not have. b) Raw Mode - Raw mode keyboards are not treated special. They are handled like any other HIL device, except that during configuration (and reconfiguration) register KBDSADR denotes the position of all keyboards and assumes they are to be cooked. To uncook a keyboard, the keyboard bit position must be cleared. There is no change in this procedure, whether it be Nimitz or ITF. c) Cooked Keyboards - All cooked keyboards will send Nimitz keycodes. i) There are about 20 new keycodes assigned to the ITF which Nimitz does not have. ii) There are about 20 keycodes Nimitz has which are not implemented by the ITF keyboard. 8) N-Key or 2 Key Rollover The present day Nimitz supports only two key rollover, the 46020A ITF supports N key rollover and the 46021A supports about a three key rollover (maybe more by now). A later version of the Nimitz will probably have N key rollover. 9) Operating System Considerations a) Operating system should read R11, bit 5 to detect a controller which supports HIL. i) If set, then HIL (this part is always set to 1 in order to maintain compatibility with series 300 which do not have this new version of the controller chip) Bit 5 Bit 2 Bit 1 Bit 0 Description -------------------------------------- 1 0 0 0 ITF 1 0 0 1 reserved 1 0 1 0 98203C 1 0 1 1 reserved Note: ITF assignment has to be xx1xx000 in order to maintain compatibility with Pascal 3.0/1 and BASIC 4.0 operating systems. Bit 0 (variable), see table Bit 1 (variable), see table Bit 2 (variable), see table Bit 3 (variable), 0 N-key rollover not implemented 1 N-key rollover implemented Bit 4 (variable), 0 Keyboard present 1 Keyboard not present Bit 5 (fixed), 1 Rev code - Support of HIL (always 1 for this part) Bit 6 (fixed), 0 Rev code - New keycodes for small kbd (always 0 for this part) Bit 7 (fixed), 0 ID PROM not present (always 0 for this part) ii) If not HIL, then treat like old keyboard system, but not in this hardware device. (NOTE: This configuration is not supported in subject 8042 controller. Also, any operating system which can talk to this controller, must be able to support HIL. Software which does not recognize Bit 5 as an HIL supported controller cannot not operate because of the processor.) For the sake of documentation and comparison the non-HIL version of R11 is the following: Bit 5 Bit 2 Bit 1 Bit 0 Description -------------------------------------- 0 0 0 0 98203B 0 0 0 1 98203A 0 0 1 0 reserved 0 0 1 1 reserved 0 1 0 0 reserved 0 1 0 1 reserved 0 1 1 0 reserved 0 1 1 1 reserved Bit 0 Jumper 3, see table Bit 1 Jumper 4, see table Bit 2 Jumper 5, see table Bit 3 Jumper 6, 0 N-key rollover mode 1 2-key rollover mode Bit 4 Jumper 7, 0 Keyboard present 1 Keyboard not present Bit 5 (fixed), 0 Undefined, defaults to zero Bit 6 (fixed), 0 Old keycodes for small keyboard 1 New keycodes for small keyboard Bit 7 (fixed), 0 ID PROM not present 1 ID PROM present Mainframe Controller Part 2 Key New ID Rollover Keycodes PROM 9826 & 9836 1820-2564 no no no 9816 1820-3087 no no no 9816 & 9920(43bd) 1820-3300 yes yes yes 9817 & 9920(35bd) 1820-3712 yes ? yes Bobcat 1820-4379 yes no no HIL Nimitz version 1820-xxxx yes no no REVISION INFORMATION Rev 1: Not released Rev 2: Limited release Rev 3: Limited release Rev 4: Corrected error regarding keyboard present (9.i)