Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■キーボードインタフェース 対象 ノーマル,ハイレゾ,PC-98LT・HA チップ 8251A(相当品) 解説 o PC-9800シリーズでは、キーボードのキー入力情報はシリアル信号 (19200bps固定)で本体に送られる。キーボードI/Fの8251A(相当)がキー入力 情報を受信すると、INT 09h割り込みを発生させ、キーの入力をソフトウェア (BIOS等)に知らせる。 o 98NOTE,PC-98LT・HAなどのようにキーボード・本体一体型の機種でも、 デスクトップ機と同じようにキーボードとキーボードI/Fはシリアル通信する。 u 98NOTEシリーズでは、テンキーコネクタにフルキーボードを接続することが 可能である。 o PC-9800シリーズでは、8251のTXD信号線がRST#(キーボードコネクタ1番ピン) に接続され、当初キーボードのリセットのために使用されていたが、新キー ボードではこれを利用してコマンド送信が行われるようになった。 o 新キーボード搭載機種では、キーボードに対してコマンドを送ることが できる。[CAPS],[カナ],[NUM]キーのロック状態の取得やロック状態の制御、 キーリピート間隔の変更などが行える。 o PC-9800シリーズでは以下のキーボードが有効である。 ----------------+---------------------------------------------- 旧キーボード | +--------------+---------------------------------------------- |PC-98LT |[BS],[ROLL UP],[ROLL DOWN],[DEL],[HELP],[COPY] | |キーがないが、次の操作で代用できる。 | |[BS],[DEL] =[DEL BS] | |[HELP] =[CTRL]+[SHIFT]+[H] | |[ROLL UP] =[CTRL]+[SHIFT]+[↑] | |[ROLL DOWN]=[CTRL]+[SHIFT]+[↓] | |[COPY] =[CTRL]+[SHIFT]+[P] +--------------+---------------------------------------------- |ハイレゾ |PC-98XA・XL・XL^2 +--------------+---------------------------------------------- |NFERなし |PC-9801初代・E・F・M +--------------+---------------------------------------------- |その他 |PC-9801初代・E・F・M以外 -+--------------+---------------------------------------------- 新キーボード | +--------------+---------------------------------------------- |98NOTE |98NOTEシリーズ +--------------+---------------------------------------------- |PC-9801-98 |楽々キーボード +--------------+---------------------------------------------- |PC-9801-106 |98標準キーボード(Windowsキー,アプリケーションキーなし) +--------------+---------------------------------------------- |PC-9801-114 |PC-PTOSキーボード +--------------+---------------------------------------------- |PC-9801-115 |文豪DPキーボード +--------------+---------------------------------------------- |PC-9801-116 |106キーボード +--------------+---------------------------------------------- |PC-9801-119 |98標準キーボード(Windowsキー,アプリケーションキーあり) +--------------+---------------------------------------------- |その他 |PC-9801-106,PC-9801T-03相当 -+--------------+---------------------------------------------- 関連 I/O 0000h bit 1 INT 18h - Function 00〜09h INT 09h(外部割り込み) 0000:0502〜053Ah I/O 0041h 名前 キーボードインタフェース 機能 [READ] 受信データ読み出し bit 7〜0: メイク/ブレイクコード,ステータス 00〜7Fh= メイクコード 80〜FFh= ブレイクコード FAh= ACK FCh= NACK [WRITE] 送信データ書き込み bit 7〜0: 下りコマンド --------+--------------------------------------------------- コマンド|内容 --------+--------------------------------------------------- 95h |拡張キー設定■[PC-9801-98・119](Undocumented) |* 2バイト目にパラメータを出力 |bit 7〜0: | 00h= 通常 | 03h= Windowsキー、アプリケーションキー有効 | ■[PC-9801-119] --------+--------------------------------------------------- 96h |モード識別■[PC-9801-98](Undocumented) |* 自動変換モードではA0h,86hが返される |* 通常モードではA0h,85hが返される --------+--------------------------------------------------- 99h |不明(Undocumented) |* FBhが返される --------+--------------------------------------------------- 9Ch |キーボードリピート速度設定(Undocumented) |* 2バイト目にパラメータを出力 |bit 7: 未使用 |bit 6,5: ディレイ | 11b= 1000ms | 10b= 500ms | 01b= 500ms(デフォルト) | 00b= 250ms |bit 4〜0: リピート速度 | 11111b= 最低速 | 00001b= 最高速(デフォルト) --------+--------------------------------------------------- 9Dh |不明■[PC-9801NS/T](Undocumented) |* 2バイト目にパラメータを出力 |00h= 不明 |01h= 不明 --------+--------------------------------------------------- 9Dh |キーボードLED読みだし(Undocumented) |* 2バイト目に60hを送出 |* 以下のフォーマットでLED状態が送られる |bit 7〜4: 未使用 |bit 3: [カナ]のLED |bit 2: [CAPS]のLED |bit 0: [NUM]のLED | 1= ON | 0= OFF --------+--------------------------------------------------- 9Dh |キーボードLED設定 |* 2バイト目にパラメータを出力 |bit 7〜4: 常に0111b |bit 3: [カナ]のLED |bit 2: [CAPS]のLED |bit 0: [NUM]のLED(Undocumented) | 1= ON | 0= OFF --------+--------------------------------------------------- 9Eh |不明(Undocumented) --------+--------------------------------------------------- 9Fh |キーボードタイプ識別 |* 新キーボードではA0h,80hが返される --------+--------------------------------------------------- 解説 o キーボードからのメイク/ブレイクコードを取得する。 o キーボードに対して下りコマンドを発行する。 関連 I/O 0041h I/O 0043h 名前 キーボードインタフェース 機能 [READ] ■ステータスリード時のビットの意味 bit 7: DSR入力端子 1= HIGHレベル 0= LOWレベル * キーボードコネクタ6番ピンの状態を示す。(Undocumented) bit 6: SYNC/BRK 1= ブレーク検出 0= なし * キーボードと正規のハンドシェイクを行っている限り発生しない。 bit 5: フレーミングエラー(FE)検出 1= あり 0= なし bit 4: オーバーランエラー(OE)検出 1= あり 0= なし * キーボードと正規のハンドシェイクを行っている限り発生しない。 bit 3: パリティエラー(PE)検出 1= あり 0= なし bit 2: TxEMP(送信終了) bit 1: RxRDY(データ受信) bit 0: TxRDY(送信可能) [WRITE] ■コマンドワードライト時のビットの意味 bit 7: エンターハントフェーズ * キーボードI/Fは調歩同期通信なので使用しない。0に設定。 bit 6: 8251Aリセット 1= する 0= しない bit 5: RTS端子制御 1= RDY#信号線は常にインアクティブ 0= RDY#信号線はRxRDYの状態に従う * キーボードI/Fでは、RDY#信号線(キーボードコネクタ3番ピン)の 動作を制御する。以下のような意味になる。 bit 4: エラーフラグクリア 1= 8251AのFE,OE,PEをクリアする 0= エラークリアしない bit 3: TxDATAブレーク送信 1= RST#信号線をLOWレベルにする 0= RST#信号線をHIGHレベルにする * キーボードI/Fでは、RST#信号線(キーボードコネクタ1番ピン)の 動作を制御する。RST#信号線を13μs以上の期間LOWレベルに すると、キーボード内のCPUがリセットされる。 bit 2: 受信許可 1= キーボードからデータ受信する 0= キーボードからデータ受信しない * キーボードI/Fでは次のような動作になる。 bit 1: DTR信号 1= RTY#信号をHIGHレベルにする 0= RTY#信号をLOWレベルにする * キーボードI/Fでは、RTY#信号線(キーボードコネクタ5番ピン)の 動作を制御する。通常はHIGH。LOWのとき、キーボードにデータの 再送を要求する。 bit 0: 送信許可 1= RST#信号線からデータ送信する 0= RST#信号線からデータ送信しない * キーボードI/Fでは、キーボードに対する下りコマンドを発行する とき、RST#信号線を利用する。コマンド送信時、1に設定する。 [WRITE] ■モードライト時のビットの意味 bit 7,6: ST2,ST1(送信ストップビット数) 01b(1ビット)を設定 bit 5,4: P1,P0(パリティ発生/チェック) 01b(奇数パリティ)を設定 bit 3,2: L1,L0(キャラクタ長) 11b(8ビット)を設定 bit 1,0: B1,B0(ボーレート) 10b(16倍クロック)を設定 解説 o キーボードインタフェースに用いられる8251相当品のモードを設定する。 関連 I/O 0043h