From root Sat Feb 15 04:19:17 MEZ 1986 >From hpfclm!srm0!pete Sat Feb 15 04:19:08 1986 remote from hpfcla Return-Path: <@hpfcla.UUCP,@hpfclm:pete@srm0> Received: by hpbbn.UUCP (5.4/30-Jul-85) id AA25378; Sat, 15 Feb 86 04:11:34 mez Date: Sat, 15 Feb 86 04:11:34 mez From: @hpfcla, hpfclm!srm0!pete To: hpfclm!hpfcla!steve-t, hpfclm!hpfcla!bayes, hpfclm!hpfcla!hpbbn!jws Status: R Subject: HIL Nimitz Date: Feb 14, 1986 From: Pete Appel To: John Schmidt Scott Bayes Steve Taylor Subject: HIL Nimitz This is an update of the last message regarding the progress on the HIL Nimitz. File: nim.doc Date: Feb 14, 1986 (rev 1) NIMITZ KEYBOARD The following is a proposal for HIL Nimitz data information. Rev 1: Modifications to the paragraph on the knob, the device ID and the language codes. OVERVIEW 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 in order to facilitate the down/up information. The keycodes will be cooked (down/up dropped and keycode shifted right) in the 8042 and delivered in true Nimitz keycode form to the host. The RESET, LEFT SHIFT, RIGHT SHIFT and CTRL keycodes will we 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. The device ID has been chosen in the keyboard range (B0-BF) and contains the encoding of the language information. An alternative is for me to use the Extended Identification Cmd and read the language code as a separate byte. If I were to do this, then I would only use device ID of B0. I want to study this alternative more before I decide. It should not affect BASIC or Pascal since the cooking of the keyboard does this for you. I have thought of proposing that the language code follow the ITF version rather than the Nimitz since it would correct an problem with the Boot ROM mixing the 'x' and 'z' characters on the German keyboard. Scott feels that the Nimitz foriegn keyboards do not map into the ITF keyboards, so that probably won't work. I will default to the Nimitz language codes of 0 thru 6 if everything fails and let you know the final outcome. The knob is reported along with keycode data as two axes data, in similar format as the HIL single knob. I expect the shift/knob to control the Y axes information as compared to the present day toggle action in the single knob. The 8042 will recognize the axis data in the poll record and send this information on as raw data. This means that HIL routines in the operating system has to recognize the HIL Nimitz keyboard as a knob. When in the keyboard cooked mode (default), the 8042 will strip the keycodes from the poll record and send the raw axis data back to the host. I will also have to clear the bit indicating in the poll header record that keycode data was send. Also, the Nimitz knob not send 0 y axis data, but can send both x and y axis data, but probably won't. This request was made by Steve Taylor so that he can see to set the Shift bit in the Knob register. Scott wants to treat the Nimitz knob like any other relative locator and not provide the special reverse sign that he had to do for the HIL knob. This means that we need to tell the customers that the direction of the shifted knob will be the reverse of the Nimitz and the HIL knob when in Pascal only. I will clear this with Gil before I commit since I understand that this cause a little problem earlier. Another item we must mention is that the OS code size will probably be larger that the series 200 Nimitz code. In Pascal, we must load the HIL binaries, while in BASIC we might have larger binaries there too. 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. 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 and interpretation of the language code. If it is an ITF, then all other accesses are of the expected ITF operation. DETAILS SPECIFICATIONS 1) Identify and Describe Data a) Used to detect nimitz keyboard and language code only. Nimitz designation is stored in RAM in a similar manner as the keyboards are done in KBDSADR. b) Assign RAM address R78 and call it NIMSADR. c) The 8042 does not use the axis information since is cannot cook the knob. The Describe Record Header and the two count/meter bytes are identical to the single knob data. d) The IDD data returned is: BYTE # DESCRIPTION BIT VALUE BYTE VALUE 1 Device ID B0-BF h 2 Describe Record Header 02 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 0 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 2) Device ID and Language Code a) Assign device ID number of B0 - BF hex. b) The lowest nibble is the HIL language code. (Note, I might change this, but it won't affect BASIC or Pascal) 3) Two or more keyboards on HIL at any one time. a) 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 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. b) All cooked keyboards will send Nimitz keycodes. i) Not sure what happens if ITF sends keycode not recognized by a Nimitz expecting operating system. ii) Not sure what happens if Nimitz sends keycode not recognized by a ITF expecting operating system. 4) Nimitz keyboard keycode output a) Nimitz will send both up and down codes to 8042 controller. 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. 5) Nimitz Knob a) Knob 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. This is no different than the present implementation of the 8042 even though it is not being used. 6) HIL Nimitz Poll Header a) 8042 controller will look only for data descriptor code (keycode set 2) and coordinate axes code information. b) The corresponding 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 7) 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. I need to decide on this on, but I am leaning on placing diodes in the switch array and making it an N-key rollover. 8) Operating System Considerations a) Operating system should read R11, bit 5 to detect a controller which supports HIL. i) If one, then HIL (this part it 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 98203B 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 ( ), 0 N-key rollover not implemented 1 N-key rollover implemented Bit 4 (variable), 0 Keyboard not present 1 Keyboard 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