JPH10187589A - キーボード用ホットプラグ - Google Patents

キーボード用ホットプラグ

Info

Publication number
JPH10187589A
JPH10187589A JP9321930A JP32193097A JPH10187589A JP H10187589 A JPH10187589 A JP H10187589A JP 9321930 A JP9321930 A JP 9321930A JP 32193097 A JP32193097 A JP 32193097A JP H10187589 A JPH10187589 A JP H10187589A
Authority
JP
Japan
Prior art keywords
keyboard
controller
signal
virtual
clock signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9321930A
Other languages
English (en)
Inventor
Theodore F Emerson
セオドアー・エフ・エマーソン
Jeoff M Krontz
ジェフ・エム・クロンツ
Dayang Dai
ダヤン・ダイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of JPH10187589A publication Critical patent/JPH10187589A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

(57)【要約】 【課題】 コンピュータ・システムの動作に独立したト
ランスペアレント方式でキーボードのプラグ着脱を可能
にする。 【解決手段】 キーボード157、159の非装着時に
仮想キーボード204がシステムのキーボード・コント
ローラ156と通信している。該仮想キーボードが、ス
タートアップ時にオペレーティング・システムからの問
合せに適切な応答を返すため、実際にはキーボードが装
着されていなくとも、システムはブート処理を実行する
ことができる。キーボードのプラグが差し込まれた時に
該キーボードの存在が検出され、仮想キーボード・コン
トローラ206がそのキーボードにコンフィギュレーシ
ョンを施す。新たに接続されたキーボードはコンフィギ
ュレーションを施された後にシステムのキーボード・コ
ントローラに結合される。キーボードへの電源線をモニ
タしてキーボードのプラグの抜去を検出し、検出時に仮
想キーボードシステムのキーボード・コントローラに再
結合する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステムにおけるシリアル・デバイスに関し、より詳しく
は、コンピュータ・システムの動作を中断することな
く、そのシステムにコンピュータ用キーボードのプラグ
を着脱する、いわゆるキーボードのホット・プラグ及び
ホット・アンプラグを可能にしたシステムに関する。
【0002】
【従来の技術】様々なパーソナル・コンピュータ・シス
テムに共通して用いられている構成要素が歴史的に幾つ
か存在している。その種の構成機器には、ディスプレ
イ、記憶装置、それにキーボード等がある。これら構成
機器は、夫々、データを視覚表示する機能、データを格
納する機能、それにデータを入力する機能を提供するも
のである。キーボードをはじめとするこれら構成機器は
非常に広く一般的に用いられているものであるため、最
近のIBM社のパーソナル・コンピュータ(PC)に
は、パワー・オン・テストのうちの1つとして、キーボ
ードが存在しているか否かを判定するためのテストが最
初から組み込まれている。この自己診断テストによっ
て、キーボードが存在していないことや、或いは、その
他のキーボードに関する異常が発生していることが示さ
れたならば、IBM社のPCはブート処理を中止する。
このようにしている理由は、正常に機能するキーボード
が存在していなければ、どのみちデータを入力できない
からである。
【0003】IBM社のPCは、今や、大多数のパーソ
ナル・コンピュータがソフトウェアによってそれをエミ
ュレートしている基本的モデルとなった。IBM社のP
C及びその互換機に対応した、システム・ソフトウェア
並びに基本入出力ソフトウェア(BIOS)が、現在で
は非常に多く作成されている。そのため、IBM社のP
Cとの間の互換性を維持して、新たな器機ないし機能を
追加する際にも、そのソフトウェアに対しては何ら変更
を必要としないようにするということが、大部分のコン
ピュータ・メーカーにおける基本方針の1つとなってい
る。
【0004】更に、それに加えて、IBM社のPCのハ
ードウェア構成を模倣するということも広く行われてい
る。例えば、IBM社のPC・ATクラスのマシンに
は、その殆ど全てに、インテル社の8042型キーボー
ド・コントローラもしくはそれと同等のキーボード・コ
ントローラ(例えば8741型や、7842型)が組み
込まれている。それらキーボード・コントローラは、そ
の構成態様こそ様々であるものの、システム・ソフトウ
ェアに対する応答方式、並びにシステム・ソフトウェア
との間の対話方式はどれも同じである。パワー・オン・
ソフトウェアが、キーボードが存在しているか否かを判
定する際には、この8042型キーボード・コントロー
ラを介して判定を行う。即ち、通常、パワー・オン・ソ
フトウェアは、8042型キーボード・コントローラを
介してキーボードへスキャン・コードを送出し、キーボ
ードから然るべき応答が返ってくるのを待つ。その応答
が返ってきたということを、8042型キーボード・コ
ントローラが報告してこなかったならば、システムはブ
ート処理を中止するようにしている。
【0005】しかしながら、パーソナル・コンピュータ
のコンフィギュレーションが多様化し、パーソナル・コ
ンピュータに使用するプロセッサの能力が増大した結
果、キーボードが必ずしも常に必要な構成機器ではない
というところまで、パーソナル・コンピュータは進化し
た。その具体的な一例は「ノートパッド型」コンピュー
タであり、もうひとつの具体例は、ラック搭載型システ
ム・サーバである。ノートパッド型コンピュータの場合
には、キーボードを使用したいという者もいれば、スタ
イラスしか使用しないという者もいる。また、ラック搭
載型サーバの場合には、サーバ・レベルでのコンフィギ
ュレーションを実行するのに必要なときだけキーボード
を装着し、それ以外のときは、キーボードが装着されて
いなくても動作可能であるようにしておくことが望まし
い。
【0006】従って、キーボードが装着されていなくて
もコンピュータ・システムがブート処理を実行できるよ
うにすることが望まれている。またそればかりでなく、
キーボードのプラグの抜き差しを臨機応変に、即ち、シ
ステムを動作状態にしたままで行えるようにすることも
望まれている。従って、キーボードなしのブート処理
と、1台ないし2台以上のキーボードのプラグの抜き差
しとを共に可能にする、シームレスな(即ち、余計な操
作を必要とせず待たされることもない)システムが求め
られている。
【0007】更に、1つのシステムに、2台以上のキー
ボードをインストールできるようにすることも望まれて
いる。その具体例は、ラック搭載型サーバである。ラッ
ク搭載型サーバでは、常時接続しておくキーボードのた
めの接続部を背面側に設けたものがある。また、背面側
にキーボード接続部を設けずに、技術者が必要に応じて
キーボードのプラグの抜き差しをできるように、正面側
にキーボード接続部を設けたものもある。しかしなが
ら、そのような2種類のキーボード接続部を共に活用で
きるような機能を備えることが望まれている。
【0008】キーボードのホット・プラグ(システムを
動作状態にしたままで行うプラグ接続)及びホット・ア
ンプラグ(同じくシステムを動作状態にしたままで行う
プラグ抜去)を可能にするシステムがこれまでに幾つか
試みられているが、それらは一般的に、キーボードを装
着していない状態でシステムがブート処理を行え、その
後にキーボードのプラグを差し込むことができ、そして
プラグを差し込んだら直ぐにデータ入力を開始すること
ができるような、シームレスに統一的に構成されたシス
テムではなかった。ここで、本願の出願人に譲渡され
た、米国特許出願第08/359014号(発明の名称
は、Personal Computerwith K
eyboard and Auxiliary Dev
iceEmulation(キーボード及び補助デバイ
スのエミュレーション機能を備えたパーソナル・コンピ
ュータ)である)について説明すると、同米国特許出願
には、ノートパッド型コンピュータに用いるキーボード
のプラグ及びアンプラグのためのシステムが示されてい
る。ただしそのシステムでは、新たに装着したキーボー
ドを使用可能にするために、コンピュータを一旦、特別
なモードに入れる必要がある。従って、完全にトランス
ペアレントなプラグ及びアンプラグが可能で、しかもそ
れと同時に、キーボードが装着されていなくてもシステ
ムがブート処理を実行できるようにすることが、大いに
望まれている。
【0009】
【発明の概要】本発明によれば、余分な操作を必要とせ
ず待たされることももないシームレスな方式でキーボー
ドのホット・プラグ及びホット・アンプラグを可能にす
る機能が提供される。具体的に述べるならば、標準的キ
ーボード・コントローラである8042型キーボード・
コントローラを、このホット・プラグを可能にするデバ
イスに接続している。キーボードを装着していない状態
でシステムにブート処理を実行させる際には、仮想キー
ボードを8042型キーボード・コントローラに結合し
ておく。この仮想キーボードは、8042型キーボード
・コントローラがこの仮想キーボードへ送出するコマン
ドに対して然るべき応答を返すことによって、物理キー
ボードが装着されていることを、システムに認識させ
る。
【0010】仮想キーボードは、8042型キーボード
・コントローラによって設定される内部状態を維持する
ようにしてある。8042型キーボード・コントローラ
が設定する状態とは、例えば、標準的キーボードにおけ
るリピート・レートやキーボード・モード等であり、8
042型キーボード・コントローラはコマンドを送出す
ることによってそれらを設定することができる。このよ
うに状態を追跡する機能は、システムに実際に物理キー
ボードが装着されたときに利用される。システムは、物
理キーボードが実際に装着されてことを検出するため
に、キーボードへの給電線をモニタしており、この給電
線に電流が流れ始めたときに、それが流れ始めたという
ことを判定する。このプラグ事象(即ち、プラグが差し
込まれたという事象)が発生したならば、その物理キー
ボードの状態が安定するまでの僅かな間、その物理キー
ボードを放置し、状態が安定した後にその物理キーボー
ドを仮想キーボード・コントローラに結合する。仮想キ
ーボード・コントローラはその新たに装着された物理キ
ーボードへ、仮想キーボードが捕捉しておいた状態を反
映したスキャン・コードを送出する。こうして新たに装
着されたキーボードのコンフィギュレーションが完了し
た後に、8042型キーボード・コントローラとその新
たに装着されたキーボードとを接続する。この方式によ
れば、8042型キーボード・コントローラへの接続に
先立ってキーボードの初期設定を行うことにより、その
キーボードの状態が仮想キーボードの状態に等しく設定
されるため、仮想キーボードから物理キーボードへの交
替が、システムからは見えない状態で(即ち、トランス
ペアレントに)行われる。
【0011】キーボードのプラグを抜去したときには、
キーボードに接続していた電源線及びグラウンド線がプ
ラグから切断されることによって、データ線及びクロッ
ク線の状態が不定になることがあり、それによって問題
が発生するおそれがある。そのため本発明では、その電
源線をモニタして、その電源線を流れる電流が低下して
「0」になろうとするしたならば、それを検出できるよ
うにしている。即ち、その電流が「0」になろうとした
ときには、いち早く物理キーボード・コントローラであ
る8042型キーボード・コントローラの切換えを行っ
て、物理キーボード内のトランジスタへの供給電力が断
たれて偽キャラクタが発生するより前に、8042型キ
ーボード・コントローラを物理キーボードから切断する
ようにしている。このとき、8042型キーボード・コ
ントローラは仮想キーボードの方へ切換えられるため、
これ以後は仮想キーボードが、8042型キーボード・
コントローラから送出されるスキャン・コードに対して
応答を返すようになる。これによって、キーボードのプ
ラグを抜去する際に偽キャラクタが発生しないようにし
ている。
【0012】更に本発明においては、実際のデバイスを
特定用途向け集積回路(ASIC)の中に構成し、この
ASICがシステム管理モードのファームウェアと通信
するようにしている。そして、仮想キーボード・コント
ローラの機能を果たすインタフェース及び仮想キーボー
ドの機能を果たすインタフェースはこのASICの中に
構成し、一方、応答を返すためのロジックや種々のスキ
ャン・コードを送出するためのロジックは、システム管
理モードのソフトウェアの中に構成している。更に、周
期的にプロセッサに割込みをかけて、プロセッサをシス
テム管理モードに入れ、このシステム管理モードにおい
て、8042型キーボード・コントローラへは仮想キー
ボードを介して、また物理キーボードへは仮想キーボー
ド・コントローラを介して、然るべきスキャン・コード
を送出するようにしている。このようにした場合には、
スキャン・コード解析用ロジックをシステム管理モード
のファームウェアの中に構成することができるため、特
定用途向け集積回路のロジックを単純化することができ
る。更に本発明によれば、2台以上のキーボードのホッ
ト・プラグ及びホット・アンプラグを可能にすることが
できる。
【0013】
【発明の実施の形態】以下に示す特許ないし特許出願の
内容は、ここに言及することで、本願の開示に組み込ま
れたものとする。 米国特許出願第 号、発明の名称:Modem
Sharing(モデム共用方式)、発明者:Theo
dore F. Emerson、及びJeoff
M. Krontz、尚、この米国特許出願は本願の譲
受人に譲渡されている。 米国特許出願第 号、発明の名称:Video
Eavesdropping and Reverse
Assembly to TransmitVide
o Action to a Remote Cons
ole(遠隔コンソールへビデオ・アクションを送信す
るためのビデオ・イーブズドロッピング及び逆アセンブ
リ)、発明者:Theodore F. Emerso
n、Peter J. Michaels、及びJeo
ff M. Krontz、尚、この米国特許出願は本
願の譲受人に譲渡されている。
【0014】先ず図1について説明すると、同図はサー
バ・コンピュータ・システムSを開示したものである。
現在のサーバの仕事量は実に膨大なものであるが、図1
のサーバ・コンピュータ・システムSは、1個または複
数個のプロセッサ50を使用して、その膨大な仕事量に
対応することのできる充分な処理能力を得ている。使用
するプロセッサ50は、米国、カリフォルニア州、サン
タクララに所在のインテル社が供給しているペンティア
ム・プロセッサまたはペンティアム・プロ・プロセッサ
とすることが好ましい(「ペンティアム」及び「ペンテ
ィアム・プロ」は商標である)。ペンティアム・プロ・
プロセッサ50はプロセッサ・カードC上に搭載されて
おり、このプロセッサ・カードCを、複数のP6スロッ
ト100〜102のうちの1つに差し込むようにしてい
る。P6スロット100〜102はペンティアム・プロ
・プロセッサのホスト・バスに接続されており、このホ
ストバスは、P6バス103と呼ばれている。P6バス
103は、スロット100〜102に挿入された2枚の
プロセッサ・カードCをサポートできるような高性能バ
スとすることが好ましい。また、プロセッサ・カードC
は、その各々が2個ずつのペンティアム・プロ・プロセ
ッサをサポートできるようなものとすることが好まし
い。従って好適実施例は、最大4個までのプロセッサを
サポートできるしたものである。
【0015】P6バス103は、それらプロセッサに加
えて更にメモリ・コントローラ104及びデータ・パス
・デバイス106にも接続されており、それらが組み合
わさることによって、ダイナミック・ランダム・アクセ
ス・メモリ(DRAM)制御サブシステムが構成されて
いる。メモリ・コントローラ104は、このメモリ・サ
ブシステムへ制御信号及びタイミング信号を供給してお
り、一方、データ・パス・デバイス106は、P6ホス
ト・バス103をメモリ・アレイに対してインタフェー
スしている。メモリ・コントローラ104及びデータ・
パス・デバイス106は、CPU50からメモリ要求を
受け取り、受け取ったメモリ要求をキュー(待ち行列)
に入れ、要求された処理が完了したならば、応答を返す
機能を担っている。メモリ・コントローラ104は更
に、メモリ誤り訂正機能も担っており、これはサーバと
いう用途にとって極めて重要な機能である。このメモリ
誤り訂正機能には、単ビット誤り訂正機能とマルチビッ
ト誤り検出機能とが含まれ、それら訂正及び検出は、メ
モリ要求の処理と同時に行われる。メモリ・コントロー
ラ104は、最大4ギガバイトまでのページ・モードD
RAMをサポートすることができる。また、このメモリ
制御サブシステムは、ノンインターリーブ、×2インタ
ーリーブ、それに、×4インターリーブの、3通りのコ
ンフィギュレーションが可能なメモリ構造をサポートし
ている。
【0016】複数のメモリ・モジュール110〜112
をメモリ・スロット108に接続することで、最大4ギ
ガバイトまでのメモリ容量が得られるようにしてある。
メモリ制御サブシステムの動作中の実際の効率は、その
時々の用途における、読出し動作と書込み動作との比率
やアクセス・パターンによって、異なったものとなる。
アイドル・サイクルが発生すると効率が低下することか
ら、メモリ・コントローラ104は、メモリ・アドレス
が互いに異なる読出し動作と書込み動作とが要求されて
いる場合には、本来は読出し動作の方が順番が後であっ
ても、その順番を繰り上げて書込み動作より先に処理し
て完了させることで、アイドル・サイクルの影響を最小
限にとどめるようにしている。
【0017】サーバSにとっては、メモリ・コントロー
ラに加えて更に入出力システムも、障害を発生しにくい
頑丈なものである必要がある。サーバSに使用するため
に設計された入出力(I/O)サブシステムは、4個の
ペンティアム・プロ・プロセッサに対応するための要求
性能をも満たすことのできるスケーラブルな構成とされ
ている。周辺機器相互接続(PCI)バスが、サーバと
いう用途につきものの仕事量の膨大な環境にも対応し得
る、高性能でしかもスケーラブルなI/Oを提供してい
る。P6バス103には、PCI接続のために1つない
し複数のPCIブリッジ114及び114aが接続され
る。このように、PCIバスをピア・ツー・ピア構造と
するによって、階層構造中の仲裁レベルを不要にして、
より高いシステム性能が得られるようにしている。
【0018】メモリ・コントローラ104と同様に、P
CIブリッジ114もCPUバスへの64ビットのイン
タフェースの全てをサポートしており、その中には、全
てのプロトコルのサポート及び誤り訂正のサポートも含
まれている。PCIブリッジ114は、8ディープのト
ランザクション用のインオーダー・キューをサポートす
ると共に、I/Oバス・エージェント用のアウトバウン
ド・トランザクション(プロセッサからPCIへのトラ
ンザクション)とインバウンド・トランザクション(P
CIからプロセッサへのトランザクション)との両方の
4ディープのキューを個別にサポートしている。更に、
メモリ・コントローラ104と同様に、PCIブリッジ
114もインバウンド方向のデータ・バッファとアウト
バウンド方向のデータ・バッファとの両方を備えてお
り、それらは4個の32バイト・データ・バッファであ
る。それらバッファを介在させることでホスト・バス1
03とPCIバス115〜117とを分離しており、ま
た、それらバッファを備えているため、両方向にバスの
最高速度でバッファ投入を行うことができ、それによっ
て性能の最適化が可能となっている。尚、PCIブリッ
ジ114は、メモリ・コントローラ104とは異なり、
未処理の応答遅延要求を2つまでサポートする機能を有
する。この機能を利用することにより、バス・トランザ
クションを一度分割して後に元の形に戻すことができる
ため、待ち時間の長いI/O動作によってペンティアム
・プロのP6バス103がブロック(閉塞)状態になる
ことを防止することができる。この動作モードとした場
合に、PCIブリッジ114は、ペンティアム・プロが
実行するメモリ読出し、I/O読出し、I/O書込み、
及び割込み肯定応答の各動作を遅延させる。ただし、メ
モリ書込みトランザクションは遅延させない。なぜなら
ば、メモリ書込みトランザクションは、バッファ投入を
利用することによってより良好に最適化することができ
るからである。
【0019】二次PCIバス115には、スモール・コ
ンピュータ・システム・インタフェース(SCSI)・
コントローラ116が接続している。このSCSIコン
トローラ116は、マルチ・スレッド、マルチ・タスク
のオペレーティング・システムに必要とされる、複数の
同時ディスク・コマンドを取り扱う能力を備えている。
SCSIコントローラ116には、1つまたは複数のS
CSIコネクタ118を接続し、それら複数のSCSI
コネクタ118によって複数の周辺記憶装置を駆動する
ようにしている。それら周辺記憶装置は、例えば、ホス
ト・システムが同時に複数のコマンドを1つまたは複数
のSCSIデバイスへ発した場合にも、それに対応でき
るようにした、複数台のディスク・ドライブ等である。
それらディスク・ドライブには、大容量ディスク・ドラ
イブを用いてもよく、或いは、それらディスク・ドライ
ブを、低価格ディスクの冗長アレイ(RAID)から成
るデータ記憶装置119としてもよい。複数のコマンド
を重ね合わせたり、1台または複数台のデータ記憶装置
に対応したキューにコマンドを入れる機能を利用するこ
とにより、ウィンドウズ95(商標)やウィンドウズN
T(商標)等のマルチ・タスク環境における性能を大幅
に向上させることができる。その他の周辺記憶装置とし
ては、例えば、CD−ROMドライブや、テープ・ドラ
イブがある。また、SCSIコントローラ116に加え
て、更にその他の複数のデバイスを、それらデバイスの
プラグを差し込むことにより、複数の二次PCIスロッ
ト122を介して二次PCIバス115に接続できるよ
うにしてある。
【0020】一次PCIバス117上では、割込みコン
トローラ124が割込み要求を取り扱っており、一次P
CIバス117上の割込み要求は、PCIブリッジ11
4へ入れられ、最終的にはスロット100〜102に接
続しているプロセッサ50のうちのいずれか1つへ転送
される。割込みコントローラ124は、マルチプロセッ
サ動作が実行されているときに、PCIバス115〜1
17上に配置されているデバイスからスロット100〜
102に接続されているプロセッサ50へ割込み要求を
回送する。また、複数のPCI周辺機器を、それらのプ
ラグを差し込むことで、複数の一次PCIスロット12
6に接続できるようにしてある。一次PCIバス117
には更に、EISAシステム・コントローラ(ESC)
128と、PCI−EISAブリッジ(PCEB)13
0とが接続している。これらESC128及びPCEB
130は、一次PCIバス117の方に接続しておくの
がよく、なぜならば、ある種の動作に関しては、補助的
バスである二次バスのバス・コントローラ114aが、
互換バスである一次バスのバス・コントローラ114に
よるアービトレーション(仲裁)を要求することがある
からである。これによって追加される待ち時間のため
に、補助バスである二次PCIバス115が、「PCI
バージョン2.1」の待ち時間の仕様条件を満足できな
くなることがある。そのため、EISA及びISAバス
ブリッジは、互換バスである一次PCIバス117上に
配置する方がよいのである。
【0021】ESC128とPCEB130とは並列的
に動作し、これにより、このコンピュータ・システムS
のためのEISA・I/Oサブシステム・インタフェー
スを提供している。これらESC128とPCEB13
0との組み合わせによって構成されたI/Oサブシステ
ムは、PCIバス・アーキテクチャの機能を利用できる
と共に、大規模ベースを成しているEISA拡張カード
ないしISA拡張カードにアクセスする機能を保持して
おり、従ってそれらに対応するソフトウェア・アプリケ
ーションにアクセスする機能を保持している。
【0022】コンピュータ・システムSは、ESC12
8及びPCEB130を装備しており、合計で3つのレ
ベルのバスを備えたシステムとなっており、それら3つ
のバスは次のような階層構造を成すように構造化されて
いる。先ず、実行バスとしてのP6バス103がある。
次に、拡張バス・システムが構成されており、これは一
次PCIバス及び二次PCIバス115〜117から成
るものである。そして最後に、二次I/Oバスとしての
EISAバスがある。このバスの階層構造においては、
それら3つのバス環境の全てにおいて同時に並行して動
作を行わせることができる。また、データをバッファを
介して受け渡しするようにしているため、1つのバス環
境から別のバス環境に亙って実行される動作の同時進行
も可能となっている。更に、ESC128は様々なシス
テム機能を提供しており、それらシステム機能には、例
えば、タイマ/カウンタ機能、DMA機能、割込みコン
トローラ機能等が含まれ、更には、EISAバス・コン
トローラやEISAバス・アービタ等のEISAサブシ
ステム機能も含まれている。またPCEB130は、P
CIバスとEISAバスとの間のブリッジへのインタフ
ェースを提供している。このインタフェースは、PCI
バスからEISAバスへ、また、EISAバスからPC
Iバスへの、プロトコルの翻訳を行うことにより実行さ
れる。PCEB130は、PCIインタフェースとEI
SAインタフェースとのいずれに関しても大容量のバッ
ファ機能を利用する。
【0023】ESC128及びPCEB130には、複
数のEISAスロット132が接続している。ESC1
28は更に、通常はXバス上に存在する種々の機能の夫
々に対応したチップ選択信号を発生する。即ち、ESC
128が発生する種々のチップ選択信号は、統合システ
ム管理装置(ISM)158、8042型キーボード・
コントローラ156、フラッシュROM(FLASH・
ROM)154、非揮発性RAM(NVRAM)15
2、それに、汎用I/Oデバイス144の夫々に対応し
たものであり、最後の汎用I/Oデバイス144は、複
数のフロッピー・コネクタ146を介して複数のフロッ
ピー・ドライブをサポートし、複数のシリアル・コネク
タ148を介して複数のシリアル・ポートをサポート
し、更に、複数のパラレル・コネクタ150を介して複
数のパラレル・ポートをサポートしている。更に汎用I
/Oデバイス144は、汎用非同期送受信装置(UAR
T)145を内蔵しており、このUART145が提供
している通信ポートは、複数のシリアル・コネクタ14
8のうちの1つを介してアクセス可能である。
【0024】更に、標準的なモデム149を装備してお
り、このモデム149はHayes互換モデムとするこ
とが好ましい。モデム149はシリアル・コネクタ14
8に接続されている。別法として、このモデム149を
拡張カード上に搭載し、その拡張カードを複数のEIS
Aスロット132のうちの1つに差し込むようにしても
よく、更には、システムSに内蔵するようにしてもよ
い。いずれの場合にも、このモデムはデータを通信(C
OM)ポートへ、即ちUART145へ送信し、このU
ART145が、そのシリアル・データをパラレル・デ
ータへ変換して、変換後のデータをEISAバス上へ送
出する。
【0025】EISAスロット132にはシステム・デ
ータ線SDが接続している。このシステム・データ縁S
Dは、バッファ134を介して、Xバスのうちのデータ
・バスXDに接続しており、この構成により、I/Oデ
バイスや、フラッシュROM154内のシステムBIO
Sにアクセスできるようにしている。EISAスロット
132には更にシステム・アドレス線SAが接続してお
り、このシステム・アドレス線SAは、バッファ136
を介して、Xバスのうちのアドレス線XAに接続してい
る。EISAスロット132には更にラッチド・アドレ
ス線LAが接続しており、このラッチド・アドレス線L
Aは、バッファ138を介して、システム・アドレス線
に接続している。そして、ビデオ・コントローラ140
が、Xバスのうちのアドレス線XAと、EISAシステ
ム・データ線SDと、ラッチド・アドレス線LAとに接
続されている。ビデオ・コントローラ140は更に、ビ
デオRAM(VRAM)142に接続されており、この
ビデオRAM142の容量は512キロバイトとするこ
とが好ましい。
【0026】一次PCIバス117には更に、本発明に
かかる統合遠隔コンソール・デバイス(IRC)170
が接続されている。IRC170は、CPU50のSM
1#入力へ、システム管理割込みをかけることができる
ようにしてある。統合遠隔コンソール・デバイス170
は更に、ESCデバイス128と、EISAスロット1
32の制御部と、汎用I/Oデバイス144と、804
2型キーボード・コントローラ156と、ISMデバイ
ス158とに接続されている。更に統合遠隔コンソール
・デバイス170には、一次キーボード(PRIM.K
B)157と、二次キーボード(SEC.KB)159
とを接続できるようにしてあり、ユーザが入力するキー
ボード入力を受け取れるようにしてある。また、一次キ
ーボード157は、例えばサーバSの筺体の背面に装着
できるるようにし、二次キーボード157は、例えばサ
ーバSの筺体の正面に装着できるようにする。統合遠隔
コンソール・デバイス170は更に、セキュリティ・デ
バイス155にも接続されており、このセキュリティ・
デバイス155がNVRAM152と、汎用I/Oデバ
イス144とに接続された構成とすることで、NVRA
M152を無許可アクセスから防護している。
【0027】図1に具体例としてのコンピュータ・シス
テムSを示したが、実際に使用するコンピュータ・シス
テムの具体的な構成がいかなるものであるかは、本発明
にとって重要でないことを理解されたい。本発明は、様
々な種類のシングル・プロセッサ・システムやデュアル
・プロセッサ・システムに適用することができ、更に
は、PCIバス、EISAバス、ISAバス、等々のバ
スの構成も様々なものとすることができる。次に図2〜
図4について説明する。これらの図に示した一連のブロ
ック図は、種々の構成要素がいかなる動作を実行して、
シームレスななキーボードのホット・プラグ及びホット
・アンプラグを可能にするトランスペアレントな遠隔コ
ンソールが得られるか、を説明するための図である。
【0028】IBM社のPCに対する互換性を有する標
準的キーボード・コントローラ(ここでは8042型キ
ーボード・コントローラ156)は、同じくIBM社の
PCに対する互換性を有する標準的キーボードから、シ
リアル形式のスキャン・コードを受信し、受信したスキ
ャン・コードを使用可能なデータ・フォーマットに変換
する。また、一般にキーボード・コントローラは、キー
ボードへ向けて種々のコマンド・コードを送信すること
ができ、それらコマンド・コードには、リピート・レー
トを設定するためのもの、様々な発光ダイオードを点灯
させたり消灯させたりするためのもの、それにキーボー
ドのリセットを行うためのものなどがある。これらの送
信シーケンスや受信シーケンスは周知のものであり、そ
れらシーケンスが行われることは、2本のオープン・コ
レクタ双方向信号線であるクロック線とデータ線とを介
して通信され、それら信号線は、非駆動状態にあるとき
にはプルアップ抵抗によってハイ状態にされている。
【0029】IBM互換PCにおいては、通常、そのキ
ーボード・コントローラが、IBM互換キーボードに直
接的に接続されている。一般的なコンピュータ・システ
ムでは、スタートアップの際に、そのシステムが実行す
るパワー・オン・セルフ・テスト(POST)コード
が、キーボードが存在していることを要求する。POS
Tコードは、キーボードが存在していることを確かめる
ために、キーボード・コントローラを介してキーボード
へ幾つかのコマンド・コードを送出する。それらコマン
ド・コードを受け取ったキーボードは、所定の応答を返
すように定められている。もしキーボードが存在してい
なかったならば、システムはブート処理を中止して、ス
クリーン上にキーボード・エラーを表示する。標準的パ
ーソナル・コンピュータにおいてこのようにしている理
由は、システムへのデータ入力はキーボードを介して行
うものだからである。しかしながら、ここで説明してい
るコンピュータ・システムSの好適例は、サーバであ
る。サーバはキーボードが接続されていることを必ずし
も必要としない。そのため、キーボードが装着されてい
ない状態で、システムにブート処理を実行させたり、そ
の他の動作を行わせたりできるようにすることが望まれ
る。また更に、コンピュータ・システムSのPOSTコ
ードにも、オペレーティング・システム(OS)にも、
またキーボードROMにも変更を加えることなしに、キ
ーボードが接続されていない状態でのブート処理を可能
にすることが望まれる。
【0030】これらを可能にするために、IRC170
は、仮想キーボード204を提供するように構成されて
いる。ここで、先に図7のA〜Cについて説明すると、
それらの図から分かるように、キーボードが存在してい
ないとき、即ち装着されていないときには、仮想キーボ
ード204が、8042型キーボード・コントローラ1
56に接続されている。これによって、キーボード15
7と159のいずれも装着されていない状態で標準的ブ
ート処理を実行させることができる。CPUがPOST
コードを実行するときには、キーボード157または1
59が存在しているか否かについての問合せを、804
2型キーボード・コントローラ156を介して行う。そ
れらキーボードがいずれも存在していない場合には、図
4及び図7のAに示したように、仮想キーボード204
が8042型キーボード・コントローラ156へ応答を
返すことで、POSTコードに、実際のキーボード(物
理キーボード)が存在しているものと認識させ、それに
よって、システムがブート処理を実行できるようにす
る。仮想キーボード204は、標準的キーボードの内部
の通信ロジックと同じ機能を果たせるように構成してあ
り、また、標準的キーボードのシリアル通信構造と同じ
シリアル通信構造を採用している。この仮想キーボード
204については、後に図24〜図29を参照して更に
詳細に説明する。
【0031】IRC170は更に、このシステムSのそ
の他の機能も提供している。本発明によれば、存在して
いないキーボードのエミュレーションを行うばかりでな
く、システムの動作に悪影響を及ぼしたりその動作を中
断したりすることなく、また偽キャラクタを発生させる
ことなく、キーボード157及び159のプラグの接続
と抜去(プラグ及びアンプラグ)を行うことが可能であ
る。これを可能にするために、IRC170の外部に2
つのキーボード存在検出回路208及び210を備えて
いる。これら検出回路については、後に図9のA及びB
を参照して更に詳細に説明するが、ここで簡単に述べて
おくと、それらは一次キーボード157の存在の有無
と、二次キーボード159の存在の有無とを検出する回
路である。IRC170は、それらキーボード157及
び159の存在の有無に応じて、後に説明するシステム
管理モード(SMM)212のファームウェアと協働し
て、それらキーボード157及び159の検出、制御、
システムSへの結合、及びシステムSからの切断を実行
する。
【0032】更には、仮想キーボード・コントローラ2
06も、このシームレスなプラグ及びアンプラグの機能
を提供するということに関与している。仮想キーボード
・コントローラ206については後に更に詳しく説明す
るが、ここで簡単に述べておくと、この仮想キーボード
・コントローラ206は、キーボード157ないし15
9が新たにプラグインされたときにそのキーボードに初
期設定を施して、そのキーボードを所定の状態にした上
で、8042型キーボード・コントローラ156に接続
できるようにするものである。そのために、仮想キーボ
ード204とSMM212のソフトウェアとが協働し
て、8042型キーボード・コントローラ156が、キ
ーボードの状態をどのように設定するかを追跡してお
き、新たにキーボードがプラグインされたときに、仮想
キーボード・コントローラ206を介してそのキーボー
ドを、その追跡しておいた状態に設定するようにしてい
る。
【0033】IRC170は更に、仮想COMデバイス
132を含んでいる。この仮想COMデバイス132の
目的を理解するためには、「遠隔コンソール」動作を先
に理解しておくのがよい。コンピュータ・サーバが要求
するフォールト・トレランスの程度は、より高度のもの
となりつつある。更に、コンピュータ・サーバが障害を
発生したときには、その障害の原因を検出してシステム
を再スタートさせられるようにしておくことが重要であ
る。そのため、サーバの動作をモニタするだけでなく、
サーバが障害を発生したときにそのサーバを遠隔再スタ
ートするためのシステムが、様々に開発されている。こ
の点で、本発明にかかるIRC170は、特別の有用性
を有するものである。サーバS内において、例えばオペ
レーティング・システムが障害を発生した場合には、遠
隔コンソールは「ホット・キー」方式で再スタート・モ
ードへ入ることができ、特に、以下に説明するシステム
管理モード212に関して、それが可能である。この再
スタート・ソフトウェアをSMM212に使用すること
で、ユーザはシステムを再スタートさせることができ
る。
【0034】この機能は、遠隔操作によって利用できる
ようにしておくことが望ましい。これは、IRC170
がトランスペアレントな機能を提供する場合である。後
に図2〜図5を参照して更に詳細に説明するように、I
RC170は、遠隔アクセス機能を提供し、それによっ
て、実行中のサーバのソフトウェアへの遠隔アクセスを
可能にして、この再スタートモードへのアクセスを可能
にする。実際に、IRC170は、システム管理モード
(SMM)のソフトウェアと協働して、モデム149の
制御権を獲得し、8042型キーボード・コントローラ
156と通信し、CRT141宛のデータをスヌープす
る。IRC170及びSMMのソフトウェアは、続い
て、モデム149からの入力を、スキャンコードとし
て、8042型キーボード・コントローラ156へ転送
する。それらシステム上で実行中のソフトウェアは、続
いて、その入力がローカル・キーボードから入力してき
たものであるかのように、応答を返す。IRC170は
更に、それに続いてシステム管理モード212を介して
CRT141へ送信されるデータをスヌープし、それに
よって、そのデータを、モデム149を介して圧縮フォ
ーマットにする。このようにして、IRC170によっ
て提供されている「遠隔コンソール」を利用してシステ
ムSにアクセスできるようにしてある。
【0035】更に、SMMのソフトウェアは、遠隔コン
ソールからの「ホット・キー」をモニタしている。シス
テムSが障害を発生したときには、ユーザはホット・キ
ーを利用することにより、8042型キーボード・コン
トローラ156の頭越しにSMMのソフトウェアの低レ
ベルの再スタート・メニューへ入ることができる。SM
Mのソフトウェアのこの低レベルのモードへ入ったなら
ば、ユーザは、システムを再スタートすることができ
る。
【0036】モデム149へのアクセスは一般的にCO
Mデバイスを介して行われるため、CPU50上で実行
中の標準的なオペレーティング・システムからモデム1
49へアクセスする際には、仮想COMデバイス132
を用いた「スチール」アクセス方式で行うことが望まし
い。仮想COMデバイス132は、モデム149が接続
されているCOMポートへのCPU50のアクセスを積
極的にデコードするように動作する。これによって、あ
るモデム149を介して遠隔コンソールを実行している
ときに、コンピュータ・システムSがそのモデム149
にアクセスするのを阻止することができる。この場合、
遠隔コンソールは、そのモデム149を介してCPU5
0のSMM212の低レベルのソフトウェアと通信して
いるはずである。このシステム管理モード(SMM)
は、それ自体が独立した、高度に防護されたCPU50
の動作状態であり、即ち、コンピュータ・システムSの
オペレーティング・システムのその他の部分から、事実
上独立している。システム管理モードを適切に構築して
おけば、種々のソフトウェア障害のうちの最悪の障害が
発生した場合でもなお、このシステム管理モードが正常
に動作し続けるように(従って遠隔コンソール機能を提
供し続けるように)することができる。遠隔コンソール
動作のためのモデム149からSMM212のソフトウ
ェアへの入力の流れの全体像については、図3を参照し
て更に詳細に説明する。
【0037】CPU50のSMM212のソフトウェア
は、IRC170と通信するためのコードを含んでい
る。CPU50は、PCIバス117を介してアクセス
可能なIRC170の内部の複数のレジスタを介して、
データ制御信号を送受信する。こうして行うデータ信号
の送受信によって、SMM212のソフトウェアは、仮
想キーボード204が受信したデータをモニタすること
ができ、また、仮想キーボード204へデータを送出す
ることができる。そして、仮想キーボード204は、他
のキーボード157と159のいずれも接続されていな
いときに、SMM212のソフトウェアから受信したそ
のデータを、8042型キーボード・コントローラ15
6へ送出する。更に、SMM212のソフトウェアは、
仮想キーボード・コントローラ206との間で通信を行
い、キーボードが接続されたときには、そのキーボード
のリセット及び初期設定のためのデータを送出する。
【0038】一次キーボード157と二次キーボード1
59とは、夫々に独立したキーボードであり、常にいず
れか一方だけがシステムSへアクセスすることができ、
それらが同時にアクセスできるようにはならない。この
構成は、例えば、サーバの背面側に常用キーボードを接
続しておくと共に、サーバに「立ち寄った」ユーザがサ
ーバの正面側に別のキーボードを接続できるようにする
場合に、有用な構成である。IRC170の切換回路
は、使用するキーボードの適切な選択を可能にすると共
に、それらキーボードのどちらについても、そのプラグ
の抜き差しをホット・プラグ及びホット・アンプグ方式
で行えるようにしている。
【0039】IRC170は更に、ビデオ・スヌープ/
エンコード回路202を備えている。遠隔コンソールの
うちの一部分は、SMM212のソフトウェアの機能に
よって構成されており、それは、遠隔端末からモデム1
49を介して命令を受信する機能である。遠隔コンソー
ルの別の一部分として、ビデオ・データをその遠隔端末
である外部システムへ供給する機能がある。このビデオ
・データの供給は、迅速に行うことが望ましく、そのた
め、ビデオ・スヌープ/エンコード回路202は、PC
Iバス117をモニタして、ビデオ・コントローラ14
0へ宛てたトランザクションを探し出す。システムSが
テキスト・モードにあるときには、スヌープ/エンコー
ド回路202は、ビデオ・コントローラ140へ宛てた
そのビデオ・コマンド及びデータを圧縮し、その圧縮し
たものをモデム149を介して送出する。このプロセス
の概要は、後に図4を参照して更に詳細に説明するが、
これについては、先に言及して本願開示に組み込んだ、
その発明の名称を、Video Eavesdropp
ing and Reverse Assembly
to Transmit Video Action
to a Remote Console(遠隔コンソ
ールへビデオ・アクションを送信するためのビデオ・イ
ーブズドロッピング及び逆アセンブリ)とした米国特許
出願に詳細に記載されている。
【0040】これより特に図2について説明する。同図
において、8042型キーボード・コントローラ156
と一次キーボード157とを結合している曲線は、ユー
ザがモデム149を介した遠隔コンソール・モードでの
操作を行っていない場合に、一次キーボード157がシ
ステムSにプラグインされたときに発生するデータの流
れの経路を示した曲線である。図2の状態では、シリア
ル・データが、一次キーボード157と8042型キー
ボード・コントローラ156との間で、単純に直接的に
やりとりされている。ただしこのとき、そのシリアル・
データは、仮想キーボード204によって「スヌープ」
されている。これによってSMM212のソフトウェア
が一次キーボード157の状態を追跡しており、この状
態の追跡は、IRC170からCPU50へのシステム
管理割込みを利用して行われている。この状態から、一
次キーボード157が取り外されたならば、仮想キーボ
ード・コントローラ206は、それまで追跡しておいた
一次キーボード157の状態に従って二次キーボード1
59に初期設定を施し、それによって二次キーボード1
59の状態を、それまでの一次キーボード157の状態
に等しく設定する。これによって、種々の表示灯やリピ
ート・レートをはじめとする全てのキーボード機能の状
態が初期設定されて、それまでの一次キーボード157
におけるそれら機能と状態に等しく設定されることか
ら、二次キーボード159を、8042型キーボード・
コントローラ156に直接に接続できるようになる。
【0041】次に図3について説明する。同図は、遠隔
コンソール・モードにおけるデータの流れの経路を示し
たものである。遠隔コンソール・モードは、一般的に、
オペレーティング・システム・ソフトウェアも含めて、
システム・ソフトウェアが完全に故障した場合でもなお
機能し続けられるような、充分な頑健性を有するものと
すべきである。また、そのために、遠隔コンソール・モ
ードでは、標準的オペレーティング・システム・ソフト
ウェアのできるだけ多くの部分を介在させないようにす
べきである。先ず、仮想COMデバイス200について
説明する。ここでは一例として、オペレーティング・シ
ステムが正常に実行されているときに、あるアプリケー
ション・プログラムが、モデム149の制御権を獲得し
ようとした場合について考える。この場合、オペレーテ
ィング・システムは、デバイス・ドライバを介して、モ
デム149との間でI/Oコマンドを用いた通信を行お
うとする。このときもし、IRC170が存在していな
いか、或いはディスエーブルされていたならば、その通
信のためのアクセスによって、PCI−EISAブリッ
ジ130がサブトラクティブ・デコードを実行し、続い
て、モデムの状態レジスタの読出しを命令するコマンド
等の、然るべきコマンドがモデム149へ転送される。
【0042】一方、ここに仮想COMデバイス200が
関与してくると、次のようになる。先ず、仮想COMデ
バイス200は、モデム149にアクセスしている複数
のCOMポートのいずれかへCPU50がアクセスした
場合に、それを検出するためのモニタを行っている。そ
のようなI/Oアクセスが、PCIバス117上に発生
したならば、仮想COMデバイス200は、そのアドレ
スをポジティブ・デコードすることで、PCI−EIS
Aブリッジ130がそのアドレスをサブトラクティブ・
デコードするのを阻止する。ここで、2通りの状況が考
えられ、その第1は、IRC170及びSMM212の
ソフトウェアにとって、システムがモデム149にアク
セスするのを阻止する理由が何もないという状況であ
る。この場合には、仮想COMデバイス132がそのI
/Oアクセスを送信し直して、PCIバス117を介し
てモデム149へ送信する。これ以後のモデム149へ
のアクセスは、PCI−EISAブリッジ130によっ
てサブトラクティブ・デコードされる。
【0043】一方、第2の状況は、オペレーティング・
システムがモデム149へアクセスできる状態にしてお
いてはならないとSMM212のソフトウェアが判断し
た場合の状況である。この場合には、CPU50がモデ
ム149のCOMポートにアクセスしようとしたなら
ば、仮想COMデバイス132が、PCIバス117ア
ドレスをポジティブ・デコードした上で、モデム149
が存在していない場合に返される応答をCPUへ返す。
すると、CPU50及びCPU50が実行しているオペ
レーティング・システムは、モデム149の接続が外さ
れる等して、モデム149が存在しなくなったものと認
識することになる。このモードにあるときには、IRC
170はモデム149を介した遠隔コンソールからのコ
ールを待っている。遠隔コンソールからのコールが着信
するとき、IRC170はモデム149に対応した割込
み要求信号線をモニタしており、その割込み要求信号線
がアクティブ状態になったならば、CPU50にシステ
ム管理割込み(SMI)をかける。続いてモデム149
からデータが入力してくる。先ず最初に、そのデータが
米国規格協会(ANSI)データである場合を説明す
る。ANSIデータのフォーマットは、キーボードとサ
ーバSとの間の通信のためのデータ・フォーマットとし
ては不適切であり、なぜならば、8042型キーボード
・コントローラ156は、キーボード・スキャン・コー
ドを受信するように設計されているからである。従っ
て、入力してきたデータがANSIデータであったなら
ば、それをキーボード・スキャン・コードに変換する必
要がある。(尚、個人的な非ANSI方式を採用するこ
とも可能であり、ただしその場合には特別のダイヤルイ
ン・ソフトウェアが必要になる)。そのため、図3に示
すように、モデム149から入力してくるANSIデー
タをPCIバス117を介して最終的にSMM212の
ソフトウェアへ供給する。SMM212のソフトウェア
内のルーチンが、そのANSIデータを、適当なキーボ
ード・スキャン・コードのデータへ変換する。続いて、
このスキャン・コードのデータは、PCIバス117を
介してIRC170内の仮想キーボード204に書込ま
れる。尚、遠隔コンソール・モードへ入った時点で、I
RC170内の複数のマルチプレクサの働きにより、一
次キーボード157は自動的に8042型キーボード・
コントローラ156との接続を断たれ、それに代わって
仮想キーボード204が8042型キーボード・コント
ローラ156に接続される。従って、一次キーボード1
57からキーボード・データが送出されるのではなく、
SMM212のソフトウェアが仮想キーボード204へ
送出するキーボード・スキャン・コードがキーボード・
データとなる。8042型キーボード・コントローラ1
56は、こうしてスキャン・コード・データを受信した
ならば、その受信したスキャン・コード・データを、実
行中のシステム・ソフトウェアへ、システム・スキャン
・コード・データとして転送する。尚、以上のデータ経
路は、事実上、非結合状態にある経路であり、この経路
に沿って、モデムから入力してきたANSIデータがス
キャン・コード・データに変換され、そのスキャン・コ
ード・データが8042型キーボード・コントローラ1
56を介して転送される。そして、8042型キーボー
ド・コントローラ156から後の部分は、このシステム
において、何ら本質的に変更されていない部分である。
別法として、遠隔ユーザ端末は、例えばシステムSが故
障したときなどには、「ホット・キー」を利用して、S
MM212のソフトウェアそれ自体の低レベルのモード
へ入ることができる。このモードに入ったならば、遠隔
ユーザ端末は、システムの遠隔再スタートを実行するこ
とができる。
【0044】ここで、キーボード・スキャン・コードと
システム・スキャン・コードとの区別をはっきりさせて
おかねばならない。標準的IBM互換PCにおいては、
キーボードと8042型キーボード・コントローラとの
間の通信は、キーボード・スキャン・コードを用いて行
われている。8042型キーボード・コントローラは適
当な変換を施すことにより、キーボード・スキャン・コ
ードをシステム・スキャン・コードに変換し、変換後の
システム・スキャン・コードを基本入出力システム(B
IOS)へ転送し、更にこのBIOSが、そのシステム
・スキャン・コードをASCIIキャラクタに変換す
る。本明細書の説明においては最も重要なものはキーボ
ード・スキャン・コードであり、なぜならば、ここで説
明する通信は、仮想キーボードないし物理キーボード
と、仮想8042型キーボード・コントローラないし物
理8042型キーボード・コントローラ156との間の
通信だからである。
【0045】次に図4について説明する。同図は、遠隔
コンソール操作が行われているときのビデオ・データの
データ経路を示したものである。図中のCPU50とビ
デオ・コントローラ140とをつなぐ破線は、ビデオ・
コントローラへ宛てたPCIサイクルのデータ・ストリ
ームを示している。ただし、IRC170が、このデー
タ・ストリームをスヌープし、エンコードしており、更
に、そのエンコードしたデータを、ビデオ・スヌープ/
エンコード回路202のブロックにおいて圧縮してい
る。こうしてエンコードされ圧縮されたビデオ・データ
は、SMM212のソフトウェアへ供給されている。更
にこのデータは、適当な送出間隔でモデム149を介し
て遠隔コンソールへ送出されている。このようにして、
フル・テキスト・スクリーンを表す圧縮データがモデム
149を介して送出されている。
【0046】次に図5について説明する。同図は、キー
ボード157と159とのいずれもIRC170に接続
されておらず、しかも、システムSが遠隔コンソール・
モードで動作してもいないときのデータの流れを示した
ものである。この場合には、単に、仮想キーボード20
4が、8042型キーボード・コントローラ156から
データを受信し、それに対応した然るべき応答を804
2型キーボード・コントローラ156へ返しているだけ
である。また、CPU50がPOSTコードを実行する
ときには、仮想キーボード204がSMM212のソフ
トウェアの制御に従って適切な応答をする。これによ
り、実際には物理キーボードが存在していない場合で
も、CPU50は物理キーボードが存在しているものと
認識するため、CPU50にブート処理を実行させるこ
とができる。しかも、このような仮想キーボード204
を設けるために、8042型キーボード・コントローラ
156からCPU50へのインタフェースに対して、何
ら変更を加える必要がない。実際に必要なことは、80
42型キーボード・コントローラ156をIRC170
に配線を介して接続することだけである。この配線によ
る接続は、できればボードを設計する際に施しておくこ
とが好ましいが、ただしジャンパ線を使用して接続する
ことも可能である。
【0047】以上の図2〜図4についての説明から明ら
かなように、この遠隔コンソール方式は、ダイヤルイン
・ターミナルからモデム149を介して保護モードでシ
ステムSにアクセスして、このシステムSの状態をモニ
タすることのできる、安価でありながら頑健性を有する
手段を提供するものである。また、モデム149には標
準的モデムを使用することができ、また実際に、システ
ムSのその他の機能との間でこのモデム149を共用す
ることができる。更に、別設のマイクロプロセッサを付
加する必要がなく、SMM212のソフトウェアによっ
てサーバとシステム管理モードとを分離することによ
り、サーバがシステム管理モードの機能をモニタできる
ようにしている。更に、シームレスなキーボードのホッ
ト・プラグ及びホット・アンプラの機能もサポートされ
ている。また、キーボードが接続されていない状態でブ
ート処理及びその他の動作を可能にするために設けた仮
想キーボード204は、モデム149を介して入力して
くる遠隔コンソールのデータ・ストリームの転送にも役
立っている。即ち、このデータ・ストリームは先ずSM
M212のソフトウェアへ供給され、そこから仮想キー
ボード204を介して8042型キーボード・コントロ
ーラ156へ転送される。この方式によれば、ダイヤル
イン・モデムを介して入力してくるデータ・ストリーム
がANSIデータでであった場合でも、システムから見
た場合には、そのデータが、8042型キーボード・コ
ントローラ156へ入力してくる単なるキーボード入力
に見えることになる。従って、SMM212のソフトウ
ェアに組み込んだ、標準的なシステム・モニタ用ソフト
ウェアによってシステムSの低レベルをモニタすること
ができ、それが可能であるのは、そのレベルにおいて
は、モデム149がトランスペアレントになるからであ
る。
【0048】次に図6について説明する。同図に示した
簡単なブロック図は、IRC170の基本的な構成要素
と、IRC170と8042型キーボード・コントロー
ラ156との間の接続態様と、IRC170と一次キー
ボード157及び二次キーボード159との間の接続態
様とを説明するためのものである。IRC170の内部
には、仮想キーボード204と、仮想キーボード・コン
トローラ206とが設けられており、これら2つについ
ては既に説明したとおりである。これらのブロックは、
キーボード・マルチプレクサ214のブロックよって経
路設定されるようにしてある。また、このブロック図か
ら分かるように、8042型キーボード・コントローラ
156を、仮想キーボード204、一次キーボード15
7、及び二次キーボード159のいずれか1つに選択的
に接続できるようにしてある。後の説明のためにここで
次のことを述べておく。それは、IRC170の内部と
8042型キーボード・コントローラ156との間は、
キーボード制御信号KC DATO、KC CLKO、
KC DATI、及びKC CLKIによって接続され
ているということである。これらキーボード制御信号の
うちの先の2つは、8042型キーボード・コントロー
ラ156から出力される制御信号であり、後の2つは、
8042型キーボード・コントローラ156へ入力する
制御信号である。キーボード及びキーボード・コントロ
ーラに関する当業者には周知の如く、それら制御信号の
うちの先の2つの信号は、一般的にそうであるように、
夫々のオープン・コレクタ反転バッファへ供給されてお
り、更にそれら反転バッファが、双方向信号線として構
成されたキーボード・クロック線及びキーボード・デー
タ線に夫々結合されている。一方、それら制御信号のう
ちの後の2つの信号はそれらキーボード・クロック線及
びキーボード・データ線に直接結合されている。また、
それら2本の双方向信号線はプルアップされている。従
って、出力信号は反転された後にキーボード信号線へ送
出され、一方、入力信号は反転されることなく送出され
る。このようにすることで、それら双方向キーボード信
号線を個別の入力信号線と出力信号線とに分けている。
【0049】この特徴的な構成を更に詳細に示したのが
図中のブロック216である。ブロック216に示した
ように、IRC170の内部で発生されるキーボード・
クロック出力信号KBD CLKO[x]及びキーボー
ド・データ出力信号KBD DATO[x]は、オープン
・コレクタ反転バッファへ供給されており、一方、キー
ボード・クロック入力信号KBD CLKI[x]及び
キーボード・データ入力信号KBD DATI[x]
は、キーボード・クロック線KBD CLK及びキーボ
ード・データ線KBD DATに直接結合されている。
IRC170の内部には、一次キーボード157に対応
した回路と、二次キーボード159に対応した回路との
両方が備えられている。以上において、8042型キー
ボード・コントローラ156において、或いは、IRC
170の内部において、8042型キーボード・コント
ローラ156のクロック出力信号及びデータ出力信号に
対応した信号がロー状態で発生されたならば、その信号
に対応したキーボード・クロック信号線またはキーボー
ド・データ信号線は、何らかの外部のソースによってロ
ー状態へプルダウンされていない限り、ハイ状態にな
る。一方、そのような出力信号がハイ状態で発生された
場合には、反転出力バッファを介して送出されるため、
その信号に対応した双方向信号線がロー状態へ駆動され
る。従って、キーボード・クロック線ないしキーボード
・データ線に結合されている出力信号がハイ状態にある
ときには、その出力信号に対応したキーボード・クロッ
ク線ないしキーボード・データ線が強制的にロー状態に
される。更に、仮想キーボード・コントローラ206
は、一次キーボード157と二次キーボード159との
一方に選択的に接続され、同時に両方に接続されること
はない。
【0050】本発明においては、IRC170が複数の
レジスタを備えており、CPU50が、それらレジスタ
に対する読み書きを実行できるようにしてある。より詳
しくは、その読み書きを実行するのはSMM212のソ
フトウェアである。それらレジスタについては後に図1
1及び図12を参照して更に詳細に説明するが、ここで
簡単に述べておくと、それらレジスタは、キーボード・
マルチプレクサ214、仮想キーボード204、及び仮
想キーボード・コントローラ206の動作を制御する機
能を果たすものである。例えば、SMM212のソフト
ウェアが読み書きを適切に実行することにより、データ
を仮想キーボード204へ書込むことができ、それによ
って、仮想キーボード204に、8042型キーボード
・コントローラ156へ宛てたスキャン・コードを送出
させることができる。同様に、8042型キーボード・
コントローラ156から仮想キーボード204へデータ
が送信されたときにも、それらレジスタを介してそのデ
ータを仮想キーボード204から読出すことができる。
この方式によれば、8042型キーボード・コントロー
ラ156が、例えばPOSTコードの実行時に、物理キ
ーボードが存在するか否かの問合せを送出したならば、
SMM212のソフトウェアが、その問合せに関するデ
ータを仮想キーボード204を介して読取り、そして、
適切な応答を書込むことで、その応答を仮想キーボード
204を介して8042型キーボード・コントローラ1
56へ返すことができる。
【0051】同様に、SMM212のソフトウェアは、
それらバッファに対する読み書きを実行することで、仮
想キーボード・コントローラ206を介してデータを送
出させ、そのデータを、新たに装着されたキーボード1
57ないし159に書込むことができる。これによっ
て、新たに装着されたキーボードにプリコンフィギュレ
ーションが施され、そのキーボードの状態を、それまで
仮想キーボード204がモニタしていた現在状態に設定
することができる。新たに装着されたキーボードは、こ
うして状態が設定された後に8042型キーボード・コ
ントローラ156に接続される。図6には更にマウス1
60も示されている。以下に本発明にかかる技法を開示
して行くに際しては、一次キーボード157及び二次キ
ーボード159を使用する場合について説明して行く
が、ただしこの技法は、マウス160をはじめとするそ
の他のシリアルI/Oデバイスにも適用し得るものであ
る。
【0052】以上に説明したイベント(事象)のシーケ
ンスを更に図解したのが図7のA〜Cである。これらの
図は、一次キーボード157を接続する際の動作のシー
ケンスを示した簡単なブロック図である。図7のAで
は、コンピュータ・システムSにキーボードが接続され
ていない。この状態で、コンピュータ・システムSに電
源が入れられたものとする。標準的コンピュータでは、
POSTルーチン及びOSをロードするルーチンの実行
中に、8042型キーボード・コントローラを介してキ
ーボードへ然るべきコマンドを送出し、それに対してキ
ーボードからどのような信号が返されてくるかを調べる
ことで、キーボードが実際に接続されていることを確か
める。ところがここでは、キーボードは接続されていな
い。しかしながら、その替わりに、SMM212のソフ
トウェアが、仮想キーボード204を8042型キーボ
ード・コントローラ156に接続するように、既にIR
C170のコンフィギュレーションを設定してある。そ
のため、8042型キーボード・コントローラ156を
介してPOSTないしOSのロードのための入出力コマ
ンドが送出されたならば、送出されたコマンドは、仮想
キーボード204によって捕捉される。この捕捉の結
果、システム管理割込み(SMI)が発生し、SMIが
発生したならばCPU50はSMM212へ入るように
してある。後に図37〜図40のフローチャートを参照
して更に詳細に説明するように、仮想キーボード204
が受信したコードは、SMM212のソフトウェア内の
ファームウェアによって解析され、そしてそのコードに
対応した適切な応答が、仮想キーボード204へ返され
る。仮想キーボード204は、その適切な応答のスキャ
ン・コードを8042型キーボード・コントローラ15
6へ返し、こうして8042型キーボード・コントロー
ラ156へ返される応答スキャン・コードは、実際のキ
ーボードが8042型キーボード・コントローラ156
へ返す応答スキャン・コードと全く同じものである。従
って、POSTないしOSのロードのためのコードは、
キーボードが存在しているものと認識して、正常な動作
を続行する。
【0053】更に、8042型キーボード・コントロー
ラ156が、OSの制御下においてコンフィギュレーシ
ョン・コマンドを用いてキーボードのコンフィギュレー
ションを変更しようとした場合には、送出されたコンフ
ィギュレーション・コードが上と同様に仮想キーボード
204に捕捉されて、SMM212のソフトウェアへ転
送される。そして、SMM212のソフトウェア内のフ
ァームウェアが、その存在していないキーボードの現在
状態を追跡する。
【0054】次に図7のBについて説明する。ここで
は、ユーザがサーバの所へきて一次キーボード157の
プラグを差し込んだものとする。このプラグイン動作の
シーケンスは、後に図9のA及びBを参照して説明する
キーボード存在検出回路によって検出される。キーボー
ドの存在状態が安定したならば、IRC170はこの時
点では何もする必要はなく、単にSMIを発生させてC
PU50をSMM212へ入れるだけである。すると、
SMM212の方からこのIRC170へコマンドを発
して、仮想キーボード・コントローラ206を一次キー
ボード157に接続させる。SMM212は更に、仮想
キーボード・コントローラ206を介して一次キーボー
ド157へ一連のコマンドを書き出すことにより、一次
キーボード157のコンフィギュレーションを実行し、
それによって、図7のAに関連して説明したように、一
次キーボード157の状態を仮想キーボード204がそ
れまでに捕捉していた状態に一致させる。一次キーボー
ド157のコンフィギュレーションが完了したならば、
SMM212はIRC170に命令を発し、図7のCに
示すように一次キーボード157を8042型キーボー
ド・コントローラ156に接続させる。これ以後、あら
ゆる通信は一次キーボード157と8042型キーボー
ド・コントローラ156との間で行われる。
【0055】ただし、以上のコンフィギュレーションの
際に、仮想キーボード204を「スヌープ・モード」に
入れるようにしている。仮想キーボード204は、スヌ
ープモードに入れられたならば、8042型キーボード
・コントローラ156と一次キーボード157との間の
通信に対してアクティブに応答を返すということはな
く、単に、一次キーボード157に書込まれるデータと
一次キーボード157から読出されるデータとを追跡す
るだけである。SMI割込みが発生したときに、追跡し
ていたデータは、仮想キーボード204からSMM21
2へ転送される。これに続いて、SMM212が一次キ
ーボード157の状態の追跡を続行するため、一次キー
ボード157が取り外されるときには、そのときSMM
212に反映されている仮想キーボード204の状態
が、一次キーボード157の状態と一致している。一次
キーボード157が取り外されそうになったなら、IR
C170は自動的に8042型キーボード・コントロー
ラ156と一次キーボード157との接続を切断すると
共に、そのことをSMM212のソフトウェアに通知す
る。これによって、8042型キーボード・コントロー
ラ156は、再び図7のAに示すように仮想キーボード
204に接続された状態とされる。
【0056】従って、このシステムは、シームレスな
「ホット・プラグ」機能を提供するものである。システ
ム・スタートアップのための標準的ソフトウェアから
は、仮想キーボード204が存在しているように見え、
しかもその標準的ソフトウェアに対しては、何ら変更を
加える必要がない。このスタートアップ・ソフトウェア
は、物理キーボードが存在していないにも関わらずキー
ボードの存在を検出する。更に、仮想キーボード204
は、例えば、数字ロック表示灯やCAPSロック表示灯
等の、標準的キーボードにおけるコンフィギュレーショ
ンの変更や状態の変化の全てを追跡している。従って、
一次キーボード157のプラグを差し込んだときに、8
042型キーボード・コントローラ156へ偽キャラク
タが送られることがなく、新たに装着されたそのキーボ
ードは、それに対して現在状態に一致させるためのコン
フィギュレーションが施された後に、8042型キーボ
ード・コントローラ156にシームレスに(動作の中断
もなく待たされることもなしに)接続される。従って、
以上に示したキーボード・ホット・プラグ機能は、ユー
ザにとってもシステムにとっても基本的にトランスペア
レントな機能であり、標準的システム・コードに変更を
加える必要もなければ、下は8042型キーボード・コ
ントローラ156のレベルに至るまでの標準的システム
・ハードウェアにも、何ら変更を加える必要がない。
【0057】次に図8について説明する。同図は、以上
に説明したIRC170を用いたホット・プラグのため
の構成の別実施形態の構成を示したものである。この構
成は、8042型キーボード・コントローラ156との
関係でIRC170をシステムに内蔵することができ
ず、そのため、IRC170を例えばプラグイン・ボー
ドの形で付加するようにしたシステムに用いる構成であ
る。ここでは、8042型キーボード・コントローラ1
56は配線によってキーボード・コネクタに接続されて
おり、図にはそのキーボード・コネクタをブロック21
8で示した。この構成において、装着カード216に、
仮想キーボード204を含むIRC170が搭載されて
おり、更にアナログ・マルチプレクサ220も搭載され
ている。更に双方向キーボード・コネクタ222が、一
次キーボード157からクロック信号及びデータ信号を
受け取るように装備されており、また、双方向キーボー
ド・コネクタ224が、システム側の双方向キーボード
・コネクタ218に接続するために装備されている。こ
の構成において、IRC170には2本の双方向信号線
が接続しており、それらは遠隔コンソール・クロック線
RC CLKと遠隔コンソール・データ線RC DAT
とである。更にIRC170には、アナログ・マルチプ
レクサ・イネーブル線RCEN#も接続している。以上
において、RCEN#信号が「0」状態、即ちアクティ
ブ状態にあるときには(末尾に#を伴う信号名はその信
号がアクティブ・ローであることを表している)、双方
向信号であるIRC170のRC CLK信号及びRC
DAT信号は、コネクタ224及び218を介してシ
ステム側のキーボード・クロック線及びキーボード・デ
ータ線に接続されている。一方、RCEN#信号が非送
出状態である「1」状態になったならば、一次キーボー
ド157がマルチプレクサ220を介してシステム側の
キーボード入力コネクタ218に直接に接続された状態
になる。
【0058】この構成においては、ホット・プラグ機能
は、必ずしもシームレスなものとはならず、システムの
ソフトウェアに僅かながら改変を加えることが必要にな
ることもあり、それは、プラグの抜き差しに際して発生
する偽キャラクタに対処する必要があるからである。し
かしながら、この構成は、キーボードを接続しない状態
でのブート処理を実行可能にする。ブート処理の実行時
には、IRC170が、RCEN#信号を送出すること
で、内部の仮想キーボード204を介して所定の応答を
送出し、それによって、キーボードが存在しているよう
に見せかけることで、ブート処理を正常に終了させる。
この後、実際のキーボードへの切換えは、ファームウェ
アが実行する。
【0059】次に図9のBについて説明する。該図に示
したのは、キーボードの存在を検出するために用いる回
路の回路図である。この回路は、IRC170の外部に
構成することが好ましい。キーボードのシームレスなホ
ット・プラグ機能に関して特に神経を使うことは、キー
ボードのプラグを差し込むときと抜き取るときとのいず
れの場合にも、偽キャラクタの発生を防止できるように
するということである。従って、プラグ/アンプラグ機
能を提供するための回路は、プラグの抜き差しという事
象の発生中に、偽キャラクタが発生したりビープ音が発
生したりすることを防止できるようなものであることが
重要である。またその回路は、システムのキーボード・
コントローラにも、キーボード自体にも、また、キーボ
ード・コネクタにも、何ら変更を加えることを必要とし
ないものとすべきである。それら構成要素に変更を加え
ることでホット・プラグ機能が得られるようにする方法
もないではないが、それら構成要素は標準的アイテムで
あるため、それらに変更を加えねばならないとしたら非
常に不便なことである。
【0060】「プラグ」事象(プラグが差し込まれると
いう事象)は、一般的に制御可能である。キーボード1
57ないし159がシステムに装着される前の状態で
は、先に説明した図6〜図8から明らかなように、80
42型キーボード・コントローラ156はIRC170
の内部の仮想キーボード・コントローラ206に接続さ
れている。一次キーボード157をプラグインしたとき
に、この一次キーボード157は、直ちに8042型キ
ーボード・コントローラ156に結合されるのではな
い。一次キーボード157は状態が安定するまで放置さ
れ、状態が安定したならば、仮想キーボード・コントロ
ーラ200によって初期設定され、その後にようやく8
042型キーボード・コントローラ156に接続され
る。「アンプラグ」事象は、プラグ事象とは事情が異な
る。一次キーボード157は、アクティブ状態にあると
きには、図7のCに示したように8042型キーボード
・コントローラ156に接続されている。何の前触れも
無しにいきなり一次キーボード157のプラグを抜き取
ったならば、IRC170が8042型キーボード・コ
ントローラ156と一次キーボード157との間をの接
続を切断する間もなく、クロック線ないしデータ線を介
して偽キャラクタが送られてくるおそれがある。それゆ
えここではホット・プラグ機能のために、極めて高感度
のキーボード存在検出ロジックを使用するようにしてお
り、その具体例を図9のBに示した。この本発明にかか
る検出回路は、(一次キーボード157に給電するため
の)キーボード電源線KBD0VDDないし(二次キー
ボード159に給電するための)キーボード電源線KB
D1VDD上を流れる電流が非常に小さくなったとき
に、そのことに応答して動作するようにしたものであ
る。
【0061】8042型キーボード・コントローラ15
6と一次キーボード157との間のデータ及びクロック
のインタフェースは、2本の配線から成るシリアル・オ
ープン・コレクタ・インタフェースである。それらクロ
ック線及びデータ線は、プルアップ抵抗によってプルア
ップされている。一次キーボード157のプラグが引き
抜かれるときには、そのキーボードのプラグが完全に引
き抜かれてしまうまでの間に、それら2本の信号線のう
ちの一方もしくは両方にグリッチ、即ち、瞬間的な断接
状態が発生する。クロック線とデータ線とのいずれか一
方が、仮に、アンプラグ事象の発生中にプルダウンされ
てロー状態になるようなことがあれば、8042型キー
ボード・コントローラ156は、それを送信事象または
受信事象の開始であると認識してしまうことになる。た
だしそれは偽事象であるため、8042型キーボード・
コントローラ156は、最終的にシステムのエラー状態
を発生させ、このエラーは多くの場合、幾つもの偽キャ
ラクタの発生、ないしは断続的なビープ音の鳴動となっ
て出現する。
【0062】ところが実際には、クロック線KBD
LK[0]及びデータ線KBD DAT[0]はいずれ
もオープン・コレクタ信号線であり、送受信時にロー状
態へ駆動されるだけであって、瞬間的な接触によってそ
れら信号線がロー状態になることはない。更に、グラウ
ンド線GNDには、キーボード・ケーブルのシールドが
用いられている。そのため、GND信号が瞬断されると
いうことはまずあり得ないことである。一般的に、様々
な信号の中で、GND信号は最も瞬断を発生しにくい信
号である。
【0063】以上から、クロック線及びデータ線上にグ
リッチを発生させる原因となる可能性のある信号線は電
源線KBD0VDDだけである。キーボードへの給電が
断たれたときには、クロック信号KBD CLK[0]
及びデータ信号KBD DAT[0]は不定状態となる
はずであるが、ただし実際には、それら信号を出力して
いるトランジスタへの給電が断たれるため、それら信号
はグラウンド・レベルへ低下する。一次キーボード15
7のアンプラグ事象が発生したとき(一次キーボード1
57のプラグが引き抜かれたとき)に、一次キーボード
157が送信中でも受信中でもなかったものとすれば、
状況を決定するのは、そのときの電源線KBD0VDD
の状態である。クロック線及びデータ線の接続が断たれ
るより早く一次キーボード157に接続された電源線の
電圧が低下したならば、キーボード・インタフェース信
号であるそれらクロック信号及びデータ信号がロー状態
へ引き落とされ、それによって偽キャラクタが発生した
り、動作開始であると誤って認識されるおそれがある。
そのため、図9のBの回路は、キーボード電源線上をキ
ーボードへ流れている電流をモニタするようにしてい
る。この電流が低下してゼロになったならば、それは、
キーボード電源線KBD0VDDが非接続状態になった
ことを示すものであり、その場合には、8042型キー
ボード・コントローラ156と一次キーボード157と
の間の接続を、即時に断つ必要がある。
【0064】ここで図9のAについて説明すると、同図
は、クロック信号、データ信号、グラウンド信号、及び
電源信号を示したものであり、それらは夫々、KBD
DAT[0]信号、KBD CLK[0]信号、KBD
0VDD信号、及びGND信号として表されている。こ
れらは一次キーボード157の、データ線、クロック
線、電源線、及びグラウンド線に対応している。再び図
9のBの回路について説明すると、KBD0VDD電源
線へ5ボルトの電源電圧が供給されており、この電源線
を流れる電流が、差動増幅器として構成された回路によ
ってモニタされている。尚、二次キーボード159に関
する上記信号に対応した信号は、KBD DAT
[1]、KBD CLK[1]、KBD1VDD、及び
GNDである。
【0065】過電流防止用のサーミスタ250を介し
て、また更に、列設した複数の電流制限用抵抗252を
介して、12ボルトの電源電圧が供給されている。複数
の抵抗252は、フィルタ用キャパシタ254、25
6、及び258を介してグラウンドに接続されている。
電流制限された電源電圧は、電圧調整器260の入力ピ
ンINへ供給されており、この電圧調整器260は、7
805型電圧調整器と同等のものとすることが好まし
く、出力ピンOUTから5ボルトに調整した出力電圧を
送出するものである。電圧調整器260のグラウンド・
ピンGNDはダイオード262のアノードに接続されて
おり、このダイオード262のカソードは接地されてい
る。ダイオード262のアノードは更に、プルアップ抵
抗264によってプルアップされており、このプルアッ
プ抵抗264は5ボルト電源に接続されている。プルア
ップ抵抗264のために、ダイオード262のアノード
の電位はグラウンドよりも約0.3ボルト高くなってお
り、そのため電圧調整器260の出力電圧は約5.3ボ
ルトになっている。このようにした理由は以下の説明か
ら明らかとなる。
【0066】電圧調整器260の出力は、キャパシタ2
66、268、及び270を介してグラウンドに接続さ
れることで平滑化されている。また、この出力の電圧は
ダイオード242によって5.3ボルトまでに制限され
ており、ダイオード272はそのカソードが5ボルト電
源に接続されている。電圧調整器260の出力電圧は、
2個のダイオード274及び276の夫々のアノードへ
供給されている。ダイオード274のカソードは、入力
抵抗279(約20KΩとすることが好ましい)を介し
て演算増幅器278の反転入力に接続されている。ダイ
オード276のカソードは、入力抵抗280(同じく2
0KΩとすることが好ましい)を介して演算増幅器27
8の非反転入力に接続されている。ダイオード276の
カソードは更に、抵抗281(約100KΩとすること
が好ましい)を介して接地されている。演算増幅器27
8の出力は、フィードバック抵抗282(約2.2MΩ
とすることが好ましい)を介してこの演算増幅器278
の反転入力に接続されている。また、演算増幅器278
の出力は、ツェナー・ダイオード283のカソードに供
給されており、このツェナー・ダイオード283は、そ
のツェナー降伏電圧が約6.8ボルトのものとすること
が好ましい。この場合、演算増幅器278が発生する出
力が12ボルトであれば、ツェナー・ダイオード283
のアノードの電位は約5ボルトになり、従って、KBD
PR0信号を、論理「真」に対応した電圧レベルである
約5ボルトで送出することになる。このKBDPR0信
号の信号線は、プルダウン抵抗284によってグラウン
ド電位へプルダウンされている。
【0067】ダイオード274のカソードは更に、イン
ダクタ285を介してKBD0VDD信号線に接続され
ている。また、ダイオード・パック286によって、キ
ーボードのプラグを引き抜いた直後に過電圧状態が発生
するのを防止している。前述のダイオード262を装備
した理由は、以上の説明から明らかであろう。即ち、電
圧調整器260の出力電圧を、5ボルトよりダイオード
1個の電圧降下分だけ高くしておくことによって、キー
ボードを接続したときのダイオード274のカソードの
電圧を5ボルトにすることができるからである。
【0068】動作について説明すると、電圧調整器26
0の出力が、ダイオード274及び276と抵抗274
及び276とを介して演算増幅器278の2つの入力へ
供給されている。KBD0VDD信号線に負荷が接続さ
れていないとき、即ちキーボードが装着されていないと
きには、演算増幅器278の非反転入力は約5ボルトで
あり、また演算増幅器278の反転入力は5ボルトであ
る。従って演算増幅器278の出力は約5ボルトで安定
しており、そのためKBDPR0は低電圧レベル、即ち
「偽」状態にある。ここで、キーボードを装着したなら
ば、ダイオード274に電流が流れるようになり、その
電圧降下が増大する。その結果、演算増幅器278の反
転入力の電圧が非反転入力の電圧に対して相対的に僅か
に低くなる。抵抗282及び279の値は演算増幅器2
78が高利得となるような値に設定されているため、演
算増幅器278は、この電圧差を補償しようとして出力
電圧をハイレベル(この演算増幅器278の電源電圧で
ある12ボルト)にする。その結果、KBDPR0信号
は約5ボルトに、即ち「真」状態になり、これによって
キーボードが存在することが表示される。
【0069】このようにして、一次キーボード157の
電源線KBD0VDDを流れる電流や、同様の二次キー
ボード159の電源線KBD1VDDを流れる電流の僅
かな変動から、キーボードの存在の有無が検出される。
各々のキーボードの存在の有無は信号KBDPR0及び
KBDPR1によってを表され、これら信号はアクティ
ブ・ハイの信号であり、IRC170の内部では2つの
信号KBD PRESEN RAW[1:0]へ写像さ
れ、これらの信号もまた、アクティブハイ信号である。
【0070】次に図10について説明する。同図には、
IRC170の内部のロジックのうち、本発明に関係し
た部分のロジックをブロックで示した。IRC170
は、図2〜図4を参照して説明した種々の付加機能を備
えた特定用途向け集積回路(ASIC)の形態に構成す
ることが好ましい。ここに開示している実施の形態にお
いて特に重要なブロックは、仮想キーボード204と、
仮想キーボード・コントローラ206と、キーボード・
マルチプレクサ214との3つである。
【0071】CPU50は、I/Oレジスタへの読み書
きを行うことによって、このIRC170へ様々な信号
やレジスタ内容を供給するが、図10では、それら信号
及びレジスタ内容は省略した。それら信号及びレジスタ
内容については後に個々のブロックごとに説明する。こ
こでは、ブロックとブロックとを相互に接続している主
要な信号について説明する。仮想キーボード204が受
け取っている信号には、統合遠隔コンソール・データ入
力信号IRC DATIと、統合遠隔コンソール・クロ
ック入力信号IRC CLKIとがある。これら信号
は、キーボード・マルチプレクサ214から供給されて
おり、このマルチプレクサ214によって選択されたと
きに、8042型キーボード・コントローラ156から
の入力信号を提供する。仮想キーボード204は、それ
ら信号に対応したキーボード出力信号を送出し、それら
信号は、統合遠隔コンソール出力信号IRC CLK
[0]とIRC DAT[0]とである。
【0072】仮想キーボード204は更に、もう1つの
出力信号を送出しており、それは、キーボード・システ
ム管理割込み信号SMI KBDである。この信号は、
システム管理割込み発生ロジックへ供給されており、こ
のロジックは、図示していないが、「真」状態になるこ
とで、CPU50に対してシステム管理割込みをかけ、
この割込みがかかると、CPU50はSMM212へ入
る。この割込みがかかるか否かは、SMI KBD信号
だけによって決まるものではなく、様々なマスク・レジ
スタによっても影響されるが、ただし、標準的な動作が
行われているときには、このSMI KBD信号によっ
て割込みがかかるか否かが決まる。
【0073】仮想キーボード204は更に、キーボード
・マルチプレクサ214から、キーボード変更割込み信
号KBD CHANGE INT[1:0]と、キーボ
ード存在信号KBD PRESENT[1:0]とを受
け取っている。これら信号の各々の2個のビットは、二
次キーボード159と一次キーボード157とに夫々対
応している。2つのKBD CHANGE INT信号
は、「真」状態になることによって割込みを発生し、そ
の信号に対応したキーボードの状態がプラグを差し込ま
れた状態(プラグ状態)と引き抜かれている状態(アン
プラグ状態)との間で変化したことを表すものでる。こ
れら信号は、後に図11を参照して説明するように、I
RC170内のI/Oレジスタから読取ることができ
る。
【0074】2つのKBD PRESENT信号は、同
様に、夫々に対応したキーボードがIRC170に接続
されているか否かを表す信号であり、これら信号もI/
Oポートから読取ることができる。以上の2組の信号を
共に参照することで、キーボードの接続に関する状態変
化の発生の有無と、その変化によって生じた新たな状態
がプラグ事象とアンプラグ事象とのいずれであるかとい
うこととを、検出することができる。
【0075】次に、仮想キーボード・コントローラ20
6について説明する。この仮想キーボード・コントロー
ラ206のブロックも、仮想キーボード204と同様
に、仮想キーボード・コントローラ・データ信号VKC
DATI及び仮想キーボード・コントローラ・クロッ
ク信号VKC CLKIを、キーボード・マルチプレク
サ214から入力として受け取っている。また、これも
仮想キーボード204と同様に、仮想キーボード・コン
トローラ206は、それら入力信号に対応する出力VK
C DATO及びVKC CLKOをキーボード・マル
チプレクサ214へ送出している。仮想キーボード・コ
ントローラ206は更に、前述のSMI KBD信号と同
様の信号である、仮想キーボード・コントローラSMI
信号SMI KCNTRを送出している。
【0076】次にキーボード・マルチプレクサ214に
ついて説明する。このキーボード・マルチプレクサ21
4のブロックには、上で説明した信号に加えて、更に多
くの入力信号及び出力信号が入出力している。図9のB
に関して上で説明した2つのキーボード存在検出信号
が、キーボード・マルチプレクサ214への入力信号と
して供給されており、それら2つの信号はKBD PR
SEN RAW[1:0]で表されている。更に、実際
の物理キーボードである一次キーボード157と二次キ
ーボード159とが送出する信号が、データ信号及びク
ロック信号として入力しており、それらは、信号KBD
DATI[1:0]と、信号KBD CLK[1:
0]とで表されている。また出力信号として、キーボー
ド・マルチプレクサ214は、それら入力信号に対応し
て、それらキーボードへ、KBD DATO[1:0]
とKBD CLKO[1:0]とを送出している。既述
の如く、一次キーボード157及び二次キーボード15
9の物理的配線は実際には双方向線であり、IRC17
0の内部では、以上の4つのクロック及びデータに関す
る入出力信号は、図6のブロック216に示したように
して組み合わせられている。
【0077】更に、キーボード・マルチプレクサ214
は、8042型キーボード・コントローラ156の信号
である、信号KC DATOと、信号KC CLKOと
を受け取っている。これら信号は8042型キーボード
・コントローラ156から出力される信号であるため、
キーボード・マルチプレクサ214にとっての入力信号
である。それら信号に対応した、8042型キーボード
・コントローラ156にとっての入力信号となる信号
が、キーボード・マルチプレクサ214から出力信号と
して送出されており、それらはKC DATIと、KC
CLKIとで表される。標準的キーボード・コントロ
ーラである8042型キーボード・コントローラ156
は、入力信号線と出力信号線とを。別個の一方向線とし
て備えており、そのため、ブロック216に示した回路
は、8042型キーボード・コントローラ156とキー
ボード・マルチプレクサ214内の信号との間のインタ
フェースには使用されない。
【0078】最後に、図8を参照して説明した動作を可
能にするために、キーボード・マルチプレクサ214
は、RC DAT信号、RC CLK信号、及びRCE
N#信号を送出しており、これら信号は、双方向線であ
る遠隔コンソール・データ線と遠隔コンソール・クロッ
ク線、それに統合遠隔コンソール用外部マルチプレクサ
220のイネーブル信号線に送出されている。またこれ
ら信号は、IRC170の内部のその他の信号に結合さ
れるときには、ブロック216に示したような併合回路
を介して送出されるようにしてあり、そのため、これら
信号の信号線も、実際には双方向信号線となっている。
【0079】ここで、双方向信号線であるキーボード・
データ線等を介して送信される様々な入力信号及び出力
信号の、その論理レベルについて説明しておく。再びブ
ロック216を参照して説明すると、同図から分かるよ
うに、双方向クロック線ないし双方向データ線を介して
送信される一方向信号のうち、入力信号は実際の双方向
クロック線ないしデータ線と同極性とされており、出力
信号は逆極性とされている。従って、仮想キーボード2
04、仮想キーボード・コントローラ206、キーボー
ド・マルチプレクサ214、外部キーボード157及び
159、それに8042型キーボード・コントローラ1
56の間で送受信される様々な信号についての説明にお
いては、常に次のことを念頭に置いておくべきであり、
それは、一般的に、出力信号が信号線上に送出される場
合、その出力信号がハイ状態であれば信号線はロー状態
へ駆動され、その出力信号がロー状態であれば信号線は
浮動状態になるということである。このことを念頭に置
いておけば、キーボード・マルチプレクサ214に関し
て以下に説明する様々な信号が否定状態にあるときの信
号線の状態を良好に理解することができる。
【0080】既述の如く、8042型キーボード・コン
トローラ156に関するKC DATO信号、KC
LKO信号、KC DATI信号、及びKC CLKI
信号は選択的に結合される信号であり、即ち、それら信
号は、一方に結合された場合には、仮想キーボード20
4の動作に関係したIRC DATI信号、IRC CL
KI信号、IRC CLKO信号、及びIRC DAT
Oとなり、他方に結合された場合には、物理キーボード
157及び159のうちの選択されている方のキーボー
ドに結合されて、KBD DATI信号、KBD CL
KI信号、KBD DATO信号、及びKBD CLK
O信号となる。後者の4つの信号はキーボード信号であ
り、これら信号は更に仮想キーボード・コントローラ2
06にも接続されて、夫々が、対応した仮想キーボード
・コントローラ206信号のであるVKC DATI信
号、VKC CLKI信号、VKC DATO信号、及
びVKC CLKO信号となる。また、コンフィギュレ
ーション・ビットを適切に選択することにより、804
2型キーボード・コントローラ156と一次キーボード
157とを接続した状態で、それと同時に、二次キーボ
ード159と仮想キーボード・コントローラ206とを
接続した状態とすることも可能である(図2のコンフィ
ギュレーションを参照されたい)。
【0081】IRC170の外部からこのIRC170
へ入力する外部信号のためのバッファ回路の詳細につい
ては、説明を簡明にするために省略するが、ただし、そ
のようなバッファはASICの設計の分野の当業者には
自明のものである。更に、以下の回路の説明では、様々
なテスト・ベクタや初期コンフィギュレーション・ベク
タについての説明も簡明のために、省略する。また、リ
セットをかけたときには、夫々の信号が所定の状態にセ
ットされるが、これを実行するための回路については本
発明を理解する上で知る必要のないものであるので、そ
の説明を省略する。その種の回路の構成は、回路設計の
分野の当業者には自明のものである。
【0082】次に図11及び図12について説明する。
それらの図には、IRC170の内部に構成された本発
明に関連した種々の機能部分にアクセスする際に参照す
るレジスタの内容である。それらレジスタには、PCI
バス117上に送出する入出力コマンドを利用してアク
セスすることができる。それらレジスタにアクセスでき
るようにするための回路は図示していないが、そのよう
な回路は当業者には周知のものである。それらレジスタ
には、仮想キーボード・コントローラ206及び仮想キ
ーボード204に関する様々な特徴的な事項が書込ま
れ、また読出される。また更に、それらレジスタは、キ
ーボード・マルチプレクサ214の内部での種々の信号
の経路設定にも関与している。
【0083】IRC170の内部の回路について説明す
る前にそれらレジスタについて説明するのは、IRC1
70の機能状態をSMM212のソフトウェアがどのよ
うにして知るかということについての基本的な枠組み
を、それらレジスタが定めているからである。IRC1
70は、キーボード157及び159、キーボード・コ
ントローラ156、それに、SMM212のソフトウェ
アとの間で通信をしている。これら3つのうちの最初の
2つのインタフェースは、仮想キーボード204及び仮
想キーボード・コントローラ206についての説明(図
18〜図29)から容易に理解し得るものであり、残っ
た1つのインタフェースは、SMM212のソフトウェ
アとの間のインタフェースであるが、このインタフェー
スは、PCIバス117上にその内容が送出される図1
1及び図12のレジスタに影響されるものである。
【0084】ここで再度述べておくと、仮想キーボード
204及び仮想キーボード・コントローラ206のエミ
ュレーションは、IRC170内部に構成するインタフ
ェースの形で得られるが、具体的にあるスキャン・コー
ドのシーケンスに受信したときに、それに対していかな
る応答を送出すべきかということや、仮想キーボード2
04の状態をどのように設定すべきかということを実際
に定めているロジックはSMM212のソフトの内部に
構成されている。従って、本実施形態においては、キー
ボード・エミュレータの機能も、キーボード・コントロ
ーラ・エミュレータの機能も、その一部をIRC170
のハードウェアによって構成し、残りの部分をSMM2
12のソフトウェアによって構成するというように、ハ
ードウェアとソフトウェアに分担させてある。それら機
能をどのように分担させるかは、本発明の概念から逸脱
することなく、様々に変更することができる。例えば、
それら機能のうちのより多くの部分をソフトウェアで構
成するようにしてもよく、或いは、逆に、より多くの部
分をより複雑精緻な特定用途向け集積回路の中に構成す
るようにしてもよい。
【0085】次に図11について説明する。同図に示し
たのは、キーボード状態レジスタKSTAT[15:
0]であり、このレジスタは、一次キーボード157及
び二次キーボード159の各々について、そのキーボー
ドの存在の有無とそのキーボード接続状態の変化との両
方の状態を表すと共に、更に、仮想キーボード204に
関する種々の状態を表すものである。2つのキーボード
存在検出信号KBD PRESENT[1:0]が、こ
のレジスタのビットのうちの2個のビットKSTAT
[13:12]で表されている。これら2個のビット
は、二次キーボード159及び一次キーボード157が
論理的に存在しているとIRC170が認識しているか
否かを表すものであり、それら2個のビットの1個ずつ
が各キーボードに対応している。論理的に存在している
ということは、物理的に存在していることとは別のもの
であり、なぜならば、あるキーボードのプラグが差し込
まれたならば、IRC170は先ず、そのキーボードの
接続状態が安定するまでそのキーボードを放置し、その
後に論理的に存在すると見なすことになるからである。
それらビットのうちの1つがセット状態とされたなら
ば、それは、そのビットに対応したキーボードが論理的
に存在するようになったことを表し、そのビットがクリ
アされたならば、それは、そのビットに対応したキーボ
ードが論理的に存在しなくなったことを表す。
【0086】2つのキーボード状態変化信号KBD
HANGE[1:0](これら信号は2個のビットKS
TAT[9:8]で表されている)は、それら信号の各
々に対応したキーボードに関するプラグ事象またはアン
プラグ事象を検出したか否かを表すものである。キーボ
ード存在検出信号KBD PRESENT[1:0]と
これらビットとを併せて参照することで、キーボードの
プラグが差し込まれたときや抜き取られたときに、それ
が行われたと判定することができる。更に、これらKB
CHANGE[1:0]信号が送出されたならば、
SMI割込み発生する。
【0087】KSTATレジスタ290のその他の信号
は、仮想キーボード204の動作に関する信号である。
送信動作失敗ビット(KSTAT[6])は、仮想キー
ボード204が、8042型キーボード・コントローラ
156へスキャン・コードを送信しようとしているとき
に、エラー状態が発生したことを表すビットである。こ
の条件が「真」状態になるのは、1つには、送信タイム
アウトが発生したときであり、これはIRC170の内
部信号であるKBTRAN TIMEOUTによって示
される。またもう1つは、8042型キーボード・コン
トローラ156が仮想キーボード204への送信を実行
しているときに仮想キーボード204が送信しようとし
たときであり、これはKBTRAN WHILE BU
SY信号によって示される。CPU50は、KSTAT
レジスタ290からの読取りを実行するときに、このビ
ットをクリアする。仮想キーボード204がアクティブ
・モードではなくスヌープ・モードにあり、8042型
キーボード・コントローラ156とキーボード157ま
たは159との間のトランザクションを追跡していると
きには、このビットは、選択されている方のキーボード
157または159から8042型キーボード・コント
ローラ156への送信にタイムアウトが発生したと、後
に図21を参照して説明する状態マシンが判断したか否
かを表している。同様に、受信タイムアウト・ビット
(KSTAT[5])は、仮想キーボード204が80
42型キーボード・コントローラ156からスキャン・
コードを受信しようと待機しているうちにタイムアウト
が発生したことを表すビットである。これは、IRC1
70の内部信号であるKBRCV TIMEOUTによ
って示される。ただしこのビットは、スヌープ・モード
にあるときには、このような受信タイムアウトではな
く、8042型キーボード・コントローラ156からキ
ーボード157ないし159の選択されている方のキー
ボードへの送信にタイムアウトが発生したことを、仮想
キーボード204が観察、即ち「スヌープ」したか否か
を表している。このビットも、KSTATレジスタ29
0からの読出しが実行されるときにクリアされる。スヌ
ープ方向ビット(KSTAT[4])はKBSNOOP
DIR信号に対応したビットであり、スヌープによっ
て発見されたトランザクションの方向が、選択されてい
るキーボード157または159からのものか、それと
も8042型キーボード・コントローラ156からのも
のかを示すビットである。このビットは、ハイ状態であ
ることによって、選択されているキーボード157また
は159から8042型キーボード・コントローラ15
6へデータが送出されたことを示し、また、ロー状態で
あることによって、それとは逆方向のトランザクション
がスヌープによって発見されたことを示す。送信完了ビ
ット(KSTAT[3])は、KBTRANSMITC
OMPLETE信号に対応したビットであり、仮想キー
ボード204から8042型キーボード・コントローラ
156へ送信中であったキーボード・スキャン・コード
が、正常に送信完了したことを示すビットである。送信
バッファ・フル・ビット(KSTAT[1])は、KB
TBF信号に対応したビットであり、8042型キーボ
ード・コントローラ156へ送信すべきデータが仮想キ
ーボード204の送信バッファの中に残っていることを
示すビットである。このデータは、送信を開始する際
に、後に説明するキーボード・データ・レジスタKDA
T[7:0]に最初に書込むものである。同様に、受信
バッファ・フル・ビット(KSTAT[0])はKBR
BF信号に対応したビットであり、このビットが「真」
状態であれば、それは、8042型キーボード・コント
ローラ156から仮想キーボード204へのスキャン・
コード・データの送信を、仮想キーボード204が検出
したことを表している。SMM212のソフトウェア
は、仮想キーボード204がそのデータであるキャラク
タを受信した時点から14ミリ秒以内に、その値を読取
り、そしてスキャン・コード肯定応答(「0FAh」)
を送信しなければならない。このKSTATレジスタ2
90内のビットのいずれかが「真」状態へ遷移したとき
には、通常、SMI割込みが発生するようにしてあり、
それによって、システム管理モード212のファームウ
ェアが、それに対応した適切な行動をとれるようにして
いる。
【0088】キーボード・データ・レジスタKDAT
[7:0]292は、仮想キーボード204が8042
型キーボード・コントローラ156へデータを送信する
際に、そのデータを書込むレジスタであり、また、仮想
キーボード204が8042型キーボード・コントロー
ラ156からデータを受信したときにそのデータを読出
すレジスタでもある。また、例えば、LEDを点灯させ
たり消灯させたりするコマンド・シーケンスのように、
キーボードへ宛てたコマンド・シーケンスが送信された
ときに、それを検出する際にも、一般的にこのレジスタ
からの読出しが行われる。このレジスタへデータを書込
むと、仮想キーボード204は、その直後のクロック転
送可能な機会にこのレジスタの内容を8042型キーボ
ード・コントローラ156へクロック転送する。ただ
し、このKDATレジスタへの書込みを行ったときに仮
想キーボード204が8042型キーボード・コントロ
ーラ156からのデータを受信中であったならば、その
8042型キーボード・コントローラ156からの受信
が続行され、仮想キーボード204からの送信はキャン
セルされる。またその場合には、KBTRANSMIT
WHILE BUSY信号が「真」状態になるため、
それに対応して送信エラー・ビットKSTAT[6]が
セット状態になる。
【0089】キーボード・コンフィギュレーション・レ
ジスタKCFG[7:0]294は、マルチプレクサ2
14内部の信号経路の選択のために使用されると共に、
IRC170の機能のうちキーボードに関連した機能を
制御するためにも使用される。2つのキーボード選択信
号KBD SEL[1:0]が、仮想キーボード204
か、キーボード157と159とが接続される2個の物
理キーボード・コネクタのうちの一方かの、どちらを8
042型キーボード・コントローラ156に接続すべき
かを選択する信号である。KBD SEL[1]信号
は、これが「真」状態にあるときに、仮想キーボード2
04をイネーブルして、この仮想キーボード204の回
路を8042型キーボード・コントローラ156に接続
する信号である。KBD SEL[0]信号は、キーボ
ード157と159とに対応した2つのキーボード・イ
ンタフェースのいずれを8042型キーボード・コント
ローラ156に接続すべきかを選択する信号である。こ
のビットが「0」であって、仮想キーボード信号KBD
SEL[1]も「0」であるならば、一次キーボード
157が選択される。このビットが「1」で、KBD
SEL[1]が「0」であれば、二次キーボード159
が選択される。
【0090】ホット・プラグ・イネーブル信号HPEN
は、IRC170を設定する信号であり、これが「真」
状態であるときには、IRC170がプラグ事象ないし
アンプラグ事象の発生に応答して然るべきSMI割込み
を発生する。この信号HPENのビットがクリアされる
と、KSTAT[13:12]ビットによって示される
2つのKBD PRESENT信号は無視されるように
なる。内部マルチプレクサ・イネーブル信号IMUXE
N(KCFG[2]ビット)は、「真」状態になったと
きに、マルチプレクサ214による内部マルチプレクシ
ング機能をイネーブルする信号である。信号IMUXE
Nのビットが「偽」状態になると、IRC170はみず
からの内部マルチプレクサ機能をディスエーブルする。
そして、IRC170のコンフィギュレーションが変更
されて、図8の外部マルチプレクサ220が使用される
ようになる。この新たなコンフィギュレーションにおい
ては、KCFGレジスタ294のKBD SEL[1]
ビットによって、図8のRCEN#信号が制御されるよ
うになる。
【0091】送信スヌープ信号T SNOOP及び受信
スヌープ信号R SNOOP(KCFG[1:0]ビッ
ト)は、送信スヌープ動作及び受信スヌープ動作をイネ
ーブルするかディスエーブルするかを決定する信号であ
る。これら信号のビットがセット状態になったならば、
そのビットに対応したトランザクションが発生したとき
に、それが「スヌープ」される。即ち、仮想キーボード
204は、そのトランザクションに対しては応答せず、
そのトランザクションに付随する転送データがキーボー
ド・データ・レジスタKDAT292に書込まれるよう
にすることで、そのトランザクションをスヌープする。
更にこのとき、IRC170は、SMI割込みを発生し
て、CPU50をシステム管理モード212に入れ、そ
れによってCPU50に、様々な機能(例えば、キーボ
ードのLEDの状態や、リピート・レートを適切に追跡
する等の機能)に対応したキーボード・トラフィックを
モニタさせると共に、システムSを様々な動作モードに
入れるホット・キーの発生の有無をモニタさせる。
【0092】次に図12について説明する。同図に示し
たのは、IRC170内部のレジスタのうち、仮想キー
ボード・コントローラ206に関係したレジスタであ
る。キーボード・コントローラ状態レジスタKCSTA
T296のビットのうちには、仮想キーボード・コント
ローラ206の状態を示すビットが含まれている。送信
エラー・ビット(KCSTAT[6])は、選択されて
いるキーボード157または159への送信を試みてい
るときにエラーが発生したことを示すビットである。こ
のビットが「真」状態になるのは、1つには、送信タイ
ムアウトが発生した場合であり、これはTRAN TI
MEOUT信号が「真」状態になることによって示され
る。また、もう1つには、選択されているキーボード1
57または159からデータを受信しているときに送信
を試みた場合であり、これはTRAN WHILE
USY信号によって示される。受信動作タイムアウト・
エラー信号RCV TIMEOUT(KCSTAT
[5])は、選択されているキーボード157または1
59からデータを受信しようとしているうちにタイムア
ウトが発生したときに、「真」状態になる信号である。
これら2つのビットKCSTAT[6:5]は、CPU
50がこのKCSTATレジスタ296からの読出しを
行う際にクリアされる。
【0093】送信完了信号TRANSMITCOMPL
ETE(KCSTAT[3])は、「真」状態になるこ
とによって、仮想キーボード・コントローラ206か
ら、選択されているキーボード157または159への
スキャン・コードの送信が正常に完了したことを示す信
号である。送信バッファ・フル信号TBF(KCSTA
T[1])は、「真」状態になることによって、仮想キ
ーボード・コントローラ206から、選択されているキ
ーボード157または159へ送信すべきデータがまだ
残っており、従って、仮想キーボード・コントローラ2
06への次のスキャン・コードの書込みに取りかかって
はならないことを示す信号である。受信バッファ・フル
信号RBF(KCSTAT[0])は、選択されている
外部キーボード157または159から送られてきたデ
ータを仮想キーボード・コントローラ・ブロックKCN
TR206が全て受信完了し、従って、そのデータがK
CDATレジスタ298から読出せる状態にあることを
示す信号である。
【0094】キーボード・コントローラ・データ・レジ
スタKCDAT[7:0]298は、仮想キーボード・
コントローラ・ブロックKCNTR206が、そのとき
選択されている外部キーボード157または159から
受信した内容を送り返すレジスタである。このデータ
は、シフト・レジスタSR[7:0]に保持されてい
る。KCDATレジスタ298への書込みが行われたな
らば、そのデータは、選択されている外部キーボード1
57または159への送信のための送信バッファKTR
NBUF[7:0]に入れられる。仮想キーボード20
4の場合と同様に、このKCSTATレジスタ296の
ビットの状態が変化した場合にも、SMI割込みが発生
してCPU50がシステム管理モード212へ入れられ
るようにしてあり、それによって、適切な対処がなされ
るようにしている。
【0095】キーボード・コントローラ・コンフィギュ
レーション・レジスタKCCFG[7:0]299は、
仮想キーボード・コントローラ206と、外部キーボー
ド157または159との間の内部接続を制御するレジ
スタである。2つの選択信号KCNTR SEL[1:
0](これらはKCCFG[7:6]によって表されて
いる)は、仮想キーボード・コントローラのブロックK
CNTR206をイネーブルするか否かと、それを外部
キーボード157と159とのいずれに接続すべきかと
を選択する信号である。KCNTR SEL[1]信号
が「0」のときには仮想キーボード・コントローラ20
6はディスエーブルされ、そうでないときにはイネーブ
ルされる。KCNTR SEL[0]信号は、仮想キー
ボード・コントローラ206がイネーブルされていると
きに、それを2つのキーボードのうちのいずれに接続す
るかを選択する信号である。この信号のビットに「0」
が書込まれれば一次キーボード157が選択され、この
信号のビットが「1」であれば二次キーボード159が
選択される。
【0096】次に図13〜図17について説明する。そ
れらの図に示したのは、キーボード・マルチプレクサ2
14に組み込まれている様々な回路である。先ず図13
について説明すると、同図は、図10のKBD CHA
NGE INT[1:0]信号とKBD PRESEN
T[1:0]信号とを発生させるために用いられている
様々なマルチプレクサ及びその他の回路を示した回路図
である。また更に、KBD PRESENT[0]信号
に対応したKBD0 PRES信号と、KBD CHAN
GE INT[0]信号に対応したKBD0 CHAN
GE INT信号とを発生させるための回路を示してい
る。また、それら回路に対応する回路を使用して、KB
PRESENT[1]信号とKBD CHANGE
INT[1]信号とを発生させている。それら回路は
図示していないが、図13の回路を見れば自明である。
【0097】図13に示した回路のうちには更に、初期
状態に設定するための種々のリセット・ロジックが含ま
れている。図13に示したリセット・ロジックは、その
他の回路においても用いられているが図示していないリ
セット・ロジックの代表例を示したものである。従って
図13のリセット・ロジックを示すことで、その他の回
路のリセット・ロジックの機能の仕方をも明らかにする
ものである。複数の信号から成るCNT0信号は、この
具体例では3つの信号から成り、それら信号によって1
つのカウンタを構成している。この信号は、あるキーボ
ードのプラグが、一次キーボード157として差し込ま
れた時点から、そのキーボードがシステムに存在するも
のとして実際に登録されるまでの、約1秒間のタイムア
ウトをカウントするための信号である。これによって、
その電圧及び信号レベルを安定させてから、そのキーボ
ードが実際に接続状態にあるということを、ハードウェ
ア及びソフトウェアに対して表示することができる。
【0098】KBD0 PRES信号及びKBD0
HANGE INT信号は、カウント信号CNT0と共
に、フリップフロップ300からクロックアウトされる
信号である。これら信号は、PCIバス・クロックCL
Kの正方向遷移エッジまたはリセット信号RSTSの正
方向遷移エッジが発生した時点でクロックアウトされ
る。ここでは、フリップフロップ300から作用を逆方
向にたどって説明して行くことにする。また、図13の
種々のマルチプレクサが送出する種々の信号は、識別の
ための名称を個別に付していないが、これは、説明を分
かり易くするために、それら信号に対応した最終的な出
力信号の名称によって、それら信号を識別することにし
たからである。マルチプレクサ302は、システム・リ
セット信号RSTSが「真」状態のときには、CNT0
信号を現在値で出力すると共に、KBD0 PRES信
号とKBD0 CHANGE INT信号を「0」状態
で出力する。一方、RSTS信号が「偽」状態のときに
は、マルチプレクサ304の出力をそのまま通過させて
出力する。従って、以上の3つの信号の値は、RSTS
信号によってシステム・リセットが示されたときには、
夫々所定値にリセットされる。
【0099】KBD0 PRES信号が「真」状態であ
れば、それは一次キーボード157が論理的に存在して
いることを示しており、この場合に、マルチプレクサ3
04は、CNT0信号を「0」にセットすると共に、K
DB0 PRES信号及びKDB0 CHANGE
NT信号として、マルチプレクサ306の出力をそのま
ま通過させて出力する。
【0100】マルチプレクサ306は、KBD0 RA
W信号が「真」状態のときには、KBD0 PRES信
号を「真」状態にすると共に、KDB0 CHANGE
INT信号を「偽」状態にする。このようにする理由
は、KBD0 RAW信号とKBD0 PRES信号と
が共に「真」状態であれば、当然のことながら、KBD
PRES信号が「真」状態であると共に、この場
合、DBD0 RAW信号の状態が変化していないから
である。一方、KBD0 RAW信号が「偽」状態であ
るときには、KBD0 PRES信号は「偽」状態に設
定され、KBD0CHANGE INT信号はHPEN
の状態に等しく設定される。このようにする理由は、マ
ルチプレクサ306に選択信号として入力しているKB
D0 RAW信号が「偽」状態であるのに対して、マル
チプレクサ304で選択されたKBD0 PRES信号
が「真」状態であるというのは、かつてはそのキーボー
ドが存在していたが現時点ではプラグが引き抜かれてい
ることを表しているからである。従って、この時点で、
そのキーボードの状態を非存在状態に(即ち、KBD0
PRES信号を「偽」状態に)設定すべきだからであ
る。また、この場合にはシステム管理モード212のソ
フトウェアへ割込みをかけるべきであるが、ただしそれ
は、ホット・プラグ機能がイネーブルされているという
ことが、HPEN信号によって示されている場合に限ら
れる(HPEN信号は、図11で説明したコンフィギュ
レーション・レジスタによって設定される)。
【0101】説明をマルチプレクサ304に戻して、も
しKBD0 PRES信号が「偽」状態であったなら
ば、マルチプレクサ304は、マルチプレクサ308の
出力信号を通過させてそれをみずからの出力として送出
する。従って、マルチプレクサ308の出力信号が用い
られるのは、KBD0 PRES信号が、キーボードが
現在接続されていないことを示しているときである。も
し、このとき、KBD0RAW信号が「偽」状態であれ
ば、それは、新たに装着された一次キーボード157
が、図9のA及びBの存在検出回路によってまだ検出さ
れていないことを示しており、この場合には、CNT0
信号が「0」に設定され、KBD0 PRES信号がそ
の現在値(このときの現在値は「0」のはずである)に
設定され、KDB0 CHANGE INT信号が
「偽」状態に設定される。このようにしている理由は、
マルチプレクサ304及びマルチプレクサ308におい
て、KBD0 PRES信号とKBD0 RAW信号と
の両方が「偽」状態であったならば、それは、一次キー
ボード157の存在状態が変化していないことを示して
いるからである。
【0102】一方、KBD0 RAW信号が「真」状態
であれば、これは、一次キーボード157のプラグが新
たに差し込まれて、その一次キーボード157が接続状
態になったことを表している。この場合には、マルチプ
レクサ308は、マルチプレクサ310の出力をそのま
ま通過させて出力する。新たにキーボードのプラグが差
し込まれて接続されたばかりのときには、KBD0
RES信号はまだ「偽」状態のままであるのに対して、
KBD0 RAW信号は、図9のA及びBのキーボード
存在検出回路がそのキーボードを検出したことにより
「真」状態になる。この場合に、KBD0 PRES信
号を即座に「真」状態にしてキーボードの存在を表すの
ではなく、KBD0 RAW信号を安定させ、またキー
ボード信号のレベルを安定させるための、安定化期間を
確保するようにすることが好ましい。そのために、KB
D0 RAW信号が「真」状態になってからも、約1秒
間はKBD0 PRES信号を「真」状態に設定せずに
おくようにしている。この機能を果たしているのが、マ
ルチプレクサ310及びこのマルチプレクサ310を駆
動する回路である。
【0103】次にマルチプレクサ310について説明す
る。マルチプレクサ310の出力信号が役割を果たすよ
うになるのは、KBD0 PRES信号が「偽」状態で
あるときに、KBD0 RAW信号が「真」状態になっ
た場合である。このような信号状況は、一次キーボード
157が新たに装着されたことを示している。マルチプ
レクサ310は、ストローブ信号PRE FULLが
「0」状態のときに、10分の1秒カウンタDSの状態
が「07fh」になったならば切換わる。この状態は、
後に説明する回路によって設定されるものであるが、約
128ミリ秒ごとに発生する。この状況が「0」状態で
あるとき、CNT0信号はみずからの現在値を維持して
おり、KBD0 PRES信号もみずからの現在値を維
持しており、KDB0 CHANGE INT信号は
「0」状態であり、これらにより、一次キーボード15
7のプラグはまだ完全に差し込まれていない、と評価さ
れていることが示される。ただしマルチプレクサ310
は、128ミリ秒ごとにその「真」状態側の入力を出力
するように切換えられ、そのときにCNT0信号が
「1」ずつインクリメントされると共に、KBD0
RES信号及びKDB0 CHANGE INT信号
が、マルチプレクサ312の出力に等しくなる。マルチ
プレクサ312は、CNT0信号の値が「0111b」
になったとき、即ち「7」になったときに「真」状態側
に切換えられる。切換えられるまでの間は、KBD0
PRES信号及びKDB0 CHANGE INT信号
はいずれも「偽」状態で送出されている。CNT0信号
の値が「0111b」になったならば、それは、一次キ
ーボード157のプラグが差し込まれてから1.024
秒が経過したことを示しており、この時点で、KBD0
PRES信号は「1」に設定され、KDB0 CHA
NGE INT信号はホット・プラグ・イネーブル信号
HPENの値に設定される。従って、KBD0 RAW
信号が「真」になってから約1秒間その「真」状態が続
いた後にはじめて、KBD0 PRES信号が「真」状
態に設定されて、一次キーボード157が存在状態とな
ったことが示され、また、KDB0 CHANGE
NT信号がHPEN信号の値に等しく設定される。そし
て、そのときHPEN信号が「真」状態であったなら
ば、システム管理モード212のソフトウェア212へ
割込みがかかる。
【0104】DS信号とPRE DSFULL信号と
は、フリップフロップ314の出力として送出されてい
る。フリップフロップ314は、システム・クロックC
LKによってもクロックされており、また、システム・
リセット信号RSTSが「真」状態になったときにリセ
ットされる。フリップフロップ314のDS信号出力に
対応したD入力は、マルチプレクサ316への入力が通
過してきたものであり、このマルチプレクサ316はR
STS信号に応じて切換わる。このRSTS信号が
「真」状態のときには、マルチプレクサ316は、DS
信号の値として「0」を送出している。一方、このRS
TS信号が「偽」状態のときには、マルチプレクサ31
6は、マルチプレクサ318の出力をそのままみずから
の出力として送出している。マルチプレクサ318は、
その「真」状態側の入力としてはDS信号を「1」だけ
インクリメントした値を受け取っており、また「偽」状
態側の入力としてはDS信号をそのまま受け取ってい
る。マルチプレクサ318は「ミリ秒タイマ・カウン
タ」MS TCの出力値に応じて切換わり、1ミリ秒に
1回ずつ「真」状態側の入力を出力する。
【0105】DS信号の値が「07Fh」である状態
は、複数回のクロック・サイクルに亙って継続するた
め、PRE DSFULL信号をストローブ信号として
使用することで、1回のシステム・サイクルの間だけ、
DS信号の値が「07Fh」であって、しかもPRE
DSFULL信号が「偽」状態であるようにしている。
フリップフロップ314へ入力しているPRE DSF
ULL信号入力は、マルチプレクサ320の出力から供
給されてあり、このマルチプレクサ320は、RSTS
信号に応じて切換わる。マルチプレクサ320の「真」
状態側の入力は常に「0」状態とされており、また
「偽」状態側の入力はマルチプレクサ322の出力から
供給されている。マルチプレクサ322は、DS信号の
値が「07Fh」になると切換わる。DS信号がこの値
のときにはマルチプレクサ322の「真」状態側の入力
が選択されており、PRE DSFULL信号として
「1」という値が送出されている。一方、DS信号の値
が「07Fh」ではないときには、PRE DSFUL
L信号として「0」という値が送出されている。
【0106】以上の構成の動作について説明すると、1
回のクロック・サイクルの間だけ、PRE DSFUL
L信号が「偽」状態にあり、しかもそれと同時に、フリ
ップフロップ314からクロックアウトされるDS信号
の値が「07Fh」であるという状態になる。このよう
な状態になったならば、PRE DSFULL信号は
「真」状態になり、またそれによってマルチプレクサ3
10の切換動作が発生してその「0」状態側の入力値の
方が送出される状態に戻る。
【0107】次に図14について説明する。同図に示し
たのは、キーボード出力信号であるKBD CLKO
[1:0]及びKBD DATO[1:0]を発生する
ための回路である。図中に示した回路では、2組の信号
のうちの一方を表す「0」と他方を表す「1」とをまと
めて「x」で表しているが、それは、2組の信号のため
の夫々の回路が同一構成だからである。以下の説明にお
いては「x」は「0」であるものとし、即ち一次キーボ
ード157に対応した方の信号及び回路について説明す
る。KBD CLKO[0]は、マルチプレクサ324
の出力として発生されている。マルチプレクサ324
は、KBD ON[0]信号に応じて切換わり、このK
BD ON[0]信号はマルチプレクサ326の出力か
ら供給されている。KBD ON[0]信号がロー状態
になるのは、HPEN信号が「真」状態であってホット
・プラグ機能がイネーブルされていることが示されてお
り、しかも、KBD PRESENTx信号が「偽」状
態であって対応するキーボードが存在していないことが
示されているときだけである。この状況においては、マ
ルチプレクサ326の「1」状態側の入力が選択されて
おり、そのためKBD ON[0]信号として「0」状態
の信号が送出されている。
【0108】このように、KBD ON[0]信号が
「偽」状態、即ちロー状態にあるときには、マルチプレ
クサ324からKBD CLKO[0]出力として
「1」が送出されている。キーボード・クロック信号は
オープン・コレクタを介して送出される信号であるた
め、出力反転器へハイ・レベルが供給されているときに
は、信号線はロー状態へ駆動されており、従って、選択
されているキーボードが存在していないとき(即ちKB
ON[0]信号が「偽」状態のとき)には一次キー
ボード157のクロック線はロー状態へ駆動されてい
る。
【0109】一方、KBD ON[0]信号が「真」状
態にあるときには、マルチプレクサ324はマルチプレ
クサ328の出力をもってみずからの出力としている。
マルチプレクサ328は、KCFGレジスタ294に関
連して既に説明したKBD SEL[1:0]信号に応じ
て切換わる。即ち、KBD SEL[1:0]信号の2
個のビットのうちの上位桁ビットが「0」であれば、そ
れは、物理キーボード157または159のいずれかが
8042型キーボード・コントローラ156に結合すべ
きものとして選択されていることを示しており、一方、
下位桁ビットが「0」であれば、それは、一次キーボー
ド157の方が選択されていることを示している。従っ
てこの場合には、キーボード・コントローラ・クロック
出力信号KC CLKOは、マルチプレクサ328及び
マルチプレクサ324を通過して、KBD CLKO
[0]信号として送出される。即ち、これによって、シ
ステムのキーボード・コントローラ・クロック信号が、
選択されているキーボードのクロック出力線に適切に結
合されることになる。
【0110】一方、KBD SEL[1:0]信号が、
そのキーボードを選択していないか、または仮想キーボ
ード204の方を8042型キーボード・コントローラ
156に結合すべきことを示している場合には、KBD
CLKO[0]信号としてマルチプレクサ330の出
力が送出される。マルチプレクサ330は、仮想キーボ
ード・コントローラ選択信号VKC SEL[1:0]
に応じて切換わり、このVKC SEL[1:0]信号
については、KCCFGレジスタ299に関連して既に
説明したとおりである。もしVKC SEL[1]信号
が「真」状態であって、しかも、VKC SEL[0]
信号の値が、一次キーボード157に対応した値「0」
であったならば、これは、仮想キーボード・コントロー
ラ206がイネーブルされており、この仮想キーボード
・コントローラ206に結合すべきキーボードとして一
次キーボード157が選択されていることを表してい
る。従ってこの場合には、マルチプレクサ330の
「1」状態側の入力に供給されているVKC CLKO
信号が、KBD CLKO[0]出力信号として送出さ
れるるようにしてある。これによって仮想キーボード・
コントローラ206のクロック信号が、選択されている
キーボード157または159に結合されることにな
る。マルチプレクサ330に関する以上の条件が「真」
状態でないときには、マルチプレクサ330の出力とし
て「1」が送出されており、それによって、対応するキ
ーボードのクロック線がロー状態とされている。
【0111】KBD DATO[0]信号を発生させて
いる回路は、以上の回路と同様のものである。KBD
DATO[0]信号はマルチプレクサ332から送出さ
れている。マルチプレクサ332は、KBD SEL
[1:0]信号に応じて切換わり、KC DAT0信号
と、マルチプレクサ334の出力との一方を選択する。
マルチプレクサ334は、VKC SEL[1]信号が
「真」状態になったならば「0」側の入力から「1」側
の入力へ切換わり、それによって、VKC DATO信
号と「0」値との一方を選択する。これらのマルチプレ
クサ334とマルチプレクサ332とから成る回路の動
作は、マルチプレクサ330とマルチプレクサ328と
から成る回路の動作と同様であるので、詳細については
そちらの回路の説明を参照されたい。
【0112】次に図15について説明する。同図に示し
たのは、図10に示した仮想キーボード・コントローラ
・クロック入力信号VKC CLKI及び仮想キーボー
ド・コントローラ・データ入力信号VKC DATIを
発生するための回路である。VKC DATI信号は、
マルチプレクサ336の出力として発生されている。マ
ルチプレクサ336はVKC SEL[1]信号が
「0」状態になると切換わる。VKC SEL[1]信
号が「0」状態にあるときには、それは仮想キーボード
・コントローラ206がディスエーブルされていること
を表しており、この場合には、論理「1」信号がVKC
DATI信号を表す出力として送出されており、従っ
てキーボード・データ線が、非駆動状態であるプルアッ
プされた状態になっている。一方、VKC SEL
[1]信号が「1」状態にあるときには、VKC DA
TI信号は、マルチプレクサ336の「0」側の入力へ
供給されている信号と等しくなっており、この「0」側
の入力は、マルチプレクサ338の出力に結合されてい
る。マルチプレクサ338はVKC SEL[0]信号
に応じて切換わり、このVKC SEL[0]信号は、
図14に関連して既に説明したように、物理キーボード
157と159との一方を、仮想キーボード・コントロ
ーラ206に接続すべきキーボードとして選択する信号
である。このVKC SEL[0]信号が「0」状態であ
るならば、それは、一次キーボード157がイネーブル
されていることを示しており、この場合には、マルチプ
レクサ338の「1」側の入力が選択されて、KBD
DATI[0]信号がこのマルチプレクサ338の出力
として送出されている。この場合も、送出される信号は
一次キーボード157のデータ線に対応した信号とな
る。一方、VKC SEL[0]信号が「1」状態であ
るときには、マルチプレクサ338の「0」側の入力が
出力として送出されており、従って、二次キーボード1
59に対応したKBD DATI[1]信号がマルチプ
レクサ338の出力として送出されている。以上によ
り、仮想キーボード・コントローラ206がイネーブル
されている場合には、キーボード157と159のうち
仮想キーボード・コントローラ選択信号VKC SEL
[0]によって選択されている方のキーボードが、VK
DATI信号に結合されることになる。VKC
LKI信号は、マルチプレクサ340とマルチプレクサ
342とから成る回路によって発生されており、この回
路は以上に説明した回路と同じ構成であり、ただしそこ
に供給されている信号が、データ信号ではなく、対応す
るKBD CLKI[0]信号やKBD CLKI
[1]であるという点が異なっているだけである。
【0113】次に図16について説明する。同図に示し
たのは、IRC170から8042型キーボード・コン
トローラ156へ供給されるキーボード・コントローラ
・データ入力信号KC DATI[0]及びキーボード
・コントローラ・クロック入力信号KC CLKI
[0]を発生するための回路である。キーボード・コン
トローラ・データ入力信号は、マルチプレクサ344か
ら送出されている。マルチプレクサ344は、KBD
SEL[1]信号が「1」状態のときには「1」側の入
力を送出しており、それによって、仮想キーボード20
4が8042型キーボード・コントローラ156に結合
されていることを示している。この場合にはKC DA
TI信号として、このマルチプレクサ344の「1」側
の入力が送出されており、この「1」側の入力は、仮想
キーボード204から送られてくるIRC DATO信
号と8042型キーボード・コントローラ156から送
られてくるKC DATO信号とのORを取った信号の
否定信号である。これは、物理キーボードの双方向デー
タ線の動作を模倣した信号である。なぜならば、キーボ
ード・コントローラの出力は、その反転信号がデータ線
を駆動するからであり、また、8042型キーボード・
コントローラ156のデータ出力信号KC DATOが
「真」状態であるか、仮想キーボード204のデータ出
力信号IRC DATOが「真」状態であるかのいずれ
かであれば、実際のキーボードのデータ線がロー状態へ
駆動されることになり、この点でも物理キーボードのデ
ータ線と同じだからである。
【0114】一方、KBD SEL[1]信号がロー状
態になり、それによって、選択されている物理キーボー
ド157または159を(もし存在しているならば)8
042型キーボード・コントローラ156に結合すべき
ことが示されたならば、マルチプレクサ344の「0」
側の入力がKC DATI信号として送出されるように
なる。この「0」側の入力としては、マルチプレクサ3
46の出力が供給されている。マルチプレクサ346
は、KBD SEL[0]信号が「0」状態であって、
それによって、8042型キーボード・コントローラ1
56に結合すべきキーボードとして一次キーボード15
7が選択されていることが示されているときには「1」
側の入力を出力している。従って、一次キーボード15
7が選択されているときにはマルチプレクサ346の
「1」側の入力が選択されており、この入力へはマルチ
プレクサ348の出力が供給されている。マルチプレク
サ348は、KBD ON[0]信号に応じて切換わ
る。即ち、KBD ON[0]信号が「偽」状態であれ
ば、それは、ホット・プラギングがイネーブルされてい
るが、一次キーボード157のプラグが差し込まれてい
ないことを表している。このときには、マルチプレクサ
348の「0」側の入力が選択されており、そのため、
IRC DATO信号とKC DATO信号とのORを
取った信号の否定信号が、最終的にKC DATI信号
として送出されている。
【0115】一方、KBD SEL[0]信号が変化し
たためにマルチプレクサ346が切換わり、二次キーボ
ード159を選択すべきことが示されたならば、マルチ
プレクサ346の「0」側の入力が選択されるようにな
り、この「0」側の入力へはマルチプレクサ350の出
力が供給されている。マルチプレクサ350は、マルチ
プレクサ348と同様に構成されているが、ただし、二
次キーボード159に対応したKBD ON[1]信号
に応じて切換わることと、その「1」側の入力に供給さ
れている信号がKBD DATI[1]であることとが
異なっている。KC CLKI信号を発生させるための
回路は、データ信号の代わりに対応するクロック信号が
使用されているという点を除いて、KC DATI信号
を送出するための以上の回路と同一構成である。従って
マルチプレクサ352〜358は、マルチプレクサ34
4〜350に対応しており、それらマルチプレクサの機
能についてはこれ以上説明するまでもない。
【0116】次に図17について説明する。同図に示し
たのは、仮想キーボード204へ供給するクロック入力
信号IRC DATI及びIRC CLKIを発生する
ための回路である。マルチプレクサ360は、IMUX
EN信号に応じて切換わる。IMUXEN信号が「偽」
状態にあるときには、それは、内部マルチプレクサ回路
ではなく、外部マルチプレクサ220の方を使用してい
ることを表しており、この場合には、図8及び図10に
関して説明したように、仮想キーボード204をRC
CLKI信号及びRC DATI信号に結合しておく必
要がある。IMUXEN信号が「偽」状態のときには、
マルチプレクサ360の「0」側の入力が選択されて、
RC CLKI信号及びRC DATI信号が、夫々、
IRC CLKI信号及びIRC DATI信号として送
出されている。
【0117】RC CLKO信号及びRC DATO信
号は、状況の如何にかかわらず常時送出されており、こ
れら信号には、IRC CLKO信号及びIRC DA
TO信号がそのまま用いられている。RC CLKO信
号及びRC DATO信号を常時送出していて構わない
理由は、外部マルチプレクサがイネーブルされていない
場合には、どこにも接続されていないRC CLK信号
線及びRC DAT信号線にこれら出力信号が送出され
るだけであり、何ら実害がないからである。
【0118】IMUXEN信号が「真」状態にあるとき
には、それは、内部マルチプレクサが使用されているこ
とを示しており、この場合には、VRC CLKI信号
及びVRC DATI信号が、IRC CLKI信号及
びIRC DATI信号として送出されている。VRC
CLKI信号及びVRC DATI信号を発生する回
路は、図13に示したKC CLKI信号及びKC
ATI信号を発生する回路と同じ構成のものである。V
RC CLKI信号は、マルチプレクサ362から送出
されており、このマルチプレクサ362はKBD SE
L[1]信号が「1」状態になると切換わる。既述の如
く、KBD SEL[1]信号が「1」状態であるとい
うことは、仮想キーボード204を8042型キーボー
ド・コントローラ156に結合すべきことを示してい
る。従ってこの場合には、VRC CLKI信号として、
マルチプレクサ362の「1」側の入力が送出されるよ
うにしてあり、この「1」側の入力は、KC CLKO
信号の否定信号とIRC CLKO信号の否定信号とのA
NDを取った信号である。このロジックによれば、入力
信号VRC CLKIは、KC CLKO信号とIRC
CLKO信号とのいずれか一方が「真」状態であれ
ば、ロー状態へ駆動される。
【0119】一方、KBD SEL[1]がロー状態で
あるならば、これは、仮想キーボード204を、804
2型キーボード・コントローラ156に接続しないとい
うことを示しており、この場合には、マルチプレクサ3
62の「0」側の入力が選択される。この「0」側の入
力としては、マルチプレクサ364の出力が供給されて
いる。マルチプレクサ364は、KBD SEL[0]
信号が「1」状態にあるときには、「1」側の入力を選
択する切換状態になっており、このKBD SEL
[0]信号が「1」状態にあるということは、選択され
ているキーボードが一次キーボード157であることを
示している。この場合には、マルチプレクサ364は
「1」側の入力を出力している。マルチプレクサ364
の「1」側の入力は、マルチプレクサ366の出力であ
り、このマルチプレクサ366は、KBD0 ON信号
の否定信号に応じて切換わる。KBD0 ON信号が
「真」状態のときには、マルチプレクサ366の「0」
側の入力が選択されており、一次キーボード157のク
ロック入力信号KBD CLKI[0]がこのマルチプ
レクサ366の出力として送出されている。一方、KB
D0 ON信号が「偽」状態のときには、一次キーボー
ド157は接続されておらず、マルチプレクサ366の
「1」側の入力が選択されており、この場合には、80
42型キーボード・コントローラ156のクロック出力
信号KC CLKOの否定信号がマルチプレクサ366
の出力として送出されている。
【0120】同様に、KBD SEL[0]信号が
「0」状態ではなく、それによって、選択されているキ
ーボードが、二次キーボード159であることが示され
ているときには、マルチプレクサ364の「0」側の入
力がイネーブルされており、この「0」側の入力には、
マルチプレクサ368の出力が供給されている。マルチ
プレクサ368はマルチプレクサ366に対応するもの
であるが、ただし、KBD1 ON信号の否定信号に応
じて切換わり、その「0」側の入力へはKBD CLK
I[1]が供給されている◎VRC DATI信号は、
マルチプレクサ370〜376を用いた以上と同様の回
路によって発生されている。VRC DATI信号は、
クロック信号の代わりにそれに対応したデータ信号を使
用していることを除いて、VRC CLKI信号と全く
同様の信号である。
【0121】次に図10〜図17の全てをまとめた全体
構成について説明する。以上の説明から明らかなよう
に、キーボード・マルチプレクサ214が実行している
のは、物理キーボード、仮想キーボード、物理キーボー
ド・コントローラ、それに仮想キーボード・コントロー
ラの、夫々のクロック線及びデータ線を様々に、しかも
選択的に結合するということであり、その結合態様は、
キーボード・コンフィギュレーション・レジスタKCF
G294及びキーボード・コントローラ・コンフィギュ
レーション・レジスタKCCFG299の設定状態に応
じて決定される。仮想キーボード204は、外部マルチ
プレクサの遠隔コンソール・データ線RCDAT及び遠
隔コンソール・クロック線RC CLKに接続すること
もでき、また、物理キーボード・コントローラである8
042型キーボード・コントローラ156に接続するこ
ともできる。仮想キーボード・コントローラ206は、
一次キーボード157と二次キーボード159とのどち
らにでも選択的に接続することができる。そして更に、
仮想キーボード204が、そのキーボード・エミュレー
ション機能によって8042型キーボード・コントロー
ラ156に応答を返すという動作を実行し、一方、仮想
キーボード・コントローラ206が、そのキーボード・
コントローラ・エミュレーション機能によって、新たに
接続された物理キーボード157または159を初期設
定するという動作を完了した後には、物理キーボード・
コントローラである8042型キーボード・コントロー
ラ156を、新たにプラグインされて接続された物理キ
ーボード157または159に接続するようにすればよ
い。
【0122】次に図18〜図29について説明する。そ
れらの図は、仮想キーボード204及び仮想キーボード
・コントローラ206を実現するための状態機械、信
号、及び回路を示したものである。これら仮想キーボー
ド204と仮想キーボード・コントローラ206との2
つのブロックを見比べれば、それらが互いに非常に類似
したものであることが分かる。それらが類似している理
由は、キーボードとキーボード・コントローラとの間の
基本的通信プロトコルが、通信方向がどちら向きである
かにかかわらず本質的に同一であり、そのために、キー
ボードに用いられている状態マシン(機械)及び回路か
ら双方向線であるクロック線及びデータ線に送出される
種々の信号と、キーボード・コントローラに用いられて
いる状態マシン及び回路からそれらクロック線及びデー
タ線に送出される種々の信号とが、本質的に同一のもの
となるからである。再度説明すると、キーボードとキー
ボード・コントローラとはいずれも、その出力信号をオ
ープン・コレクタ反転器を介して送出しており、そのた
め、キーボードまたはキーボード・コントローラが出力
信号を「真」状態で発生したならば、その信号に対応し
た信号線はロー状態へ駆動される。これに対して入力信
号は、双方向線であるキーボード・クロック線及びキー
ボード・データ線に直接結合されている。従って、キー
ボードないしキーボード・コントローラは、みずからが
出力信号を「真」状態で送出しているということを、そ
れに対応する入力信号がロー状態になることで知ること
ができる。一方、キーボードないしキーボード・コント
ローラがみずからの出力信号をロー・レベル、即ち
「偽」状態で送出しているときには、それに対応した入
力信号は、その信号線に接続されている別のデバイスが
出力信号を駆動しているか否かに応じて、ロー状態であ
ったりハイ状態であったりする。
【0123】以上の説明はキーボード及びキーボード・
コントローラの回路が実際にどのような値ないし状態を
発生するかについての説明であった。これより仮想キー
ボード・コントローラ206について説明し、続いて仮
想キーボード204について説明するが、互いに同一構
成の部分については説明の反復を避け、仮想キーボード
204と仮想キーボード・コントローラ206との相違
点に力点を置いて説明して行く。
【0124】図18〜図23は、仮想キーボード・コン
トローラ206の構造及び動作を示した図表及び回路図
である。既述の如く、仮想8042型キーボード・コン
トローラ206は、一次キーボード157と二次キーボ
ード159のどちらとも通信をする。キーボードと80
42型キーボード・コントローラとの間の通信プロトコ
ルは、当業者には周知のものである。この通信は、クロ
ック線及びデータ線を介して行われ、それら信号線は受
動(パッシブ)抵抗によってハイ状態へプルアップされ
ている。クロック線を駆動するのはキーボードである
が、データ線はキーボード・コントローラとキーボード
とのどちらによっても駆動され、実際にどちらが駆動す
るかは、そのときどちらが送信しているかによる。一般
的に、キーボード・コントローラまたはキーボードがク
ロック線及びデータ線の制御権を把握する際には、最初
にデータ線をロー状態へプルダウンすることで、相手側
デバイスへ送信要求を発する。続いて、キーボードがク
ロック線をハイ状態にし、更にそれに続いて送信側デバ
イスがクロック線をロー状態にする。これによってスタ
ート・ビットの開始が示される。続いて、送信側デバイ
スはデータ送出動作を開始し、キーボードが交互に送出
状態と非送出状態とに変化させるクロックに合わせてデ
ータ線上へデータを送出して行く。これ以後、キーボー
ドはクロック信号のサイクルを繰返し、その間に、送信
側デバイスはクロック信号の立下りごとにデータを送出
する。送信側デバイスはデータ線上にパリティ・ビット
を送出したならば、次のクロック信号の立下りを待ち、
次のクロック信号の立下りに合わせてデータ線上にスト
ップ・ビットを送出する。受信側デバイスは、そのスト
ップ・ビットをクロックインしたならば、データ線をロ
ー状態へプルダウンすることで受信肯定応答を返す。キ
ーボードは、受信側デバイスがデータ線を解放する(こ
れによってデータ線は浮動状態であるハイ状態になる)
のを待ち、データ線が解放されたならばクロック線をロ
ー状態へプルダウンする。所定の時間が経過した後に、
キーボードは、クロック線を浮動状態であるハイ状態に
することで、相手側デバイスが応答を送信できるように
する。
【0125】以上に説明したプロトコルの概要を念頭に
置いておけば、図18の状態図をより容易に理解するこ
とができる。また、図19は、図18の仮想キーボード
・コントローラ206の状態図に対応した全ての状態遷
移条件を列挙したものである。これら状態遷移について
は後に詳述するが、ここでその概要を述べておくと、そ
れらは、外部キーボード157または159との間でデ
ータを送受信するための状態遷移を示したものである。
図18の状態図に示した状態遷移は、PCIシステム・
クロックによってクロックされるようにすることが好ま
しい。また、この状態図は、仮想8042型キーボード
・コントローラ206の状態遷移を図示したものであ
り、外部キーボード157または159との間でデータ
を送受信するためものである。ここで再度述べておく
と、この状態遷移は、本質的に、物理8042型キーボ
ード・コントローラ156の応答動作を模倣したもので
あり、IBM・PC互換キーボードの標準的な通信プロ
トコルに従ったものである。
【0126】状態マシンがIDLE状態400にある場
合から説明を始める。この状態マシンは次クロック・サ
イクルには、このIDLE状態にとどまっているかさも
なくば受信状態経路または送信状態経路へ遷移する。外
部キーボード157または159へキャラクタを送信す
るときには、制御の流れは、キーボード・コントローラ
送信要求状態KT RTS1へ進む。制御がこの状態へ
進むのは、例えば、仮想キーボード・コントローラ20
6の送信バッファがフル状態にあり、しかも、仮想キー
ボード・コントローラ206へ入力しているCLKIN
信号(これについては図21を参照して後述する)がハ
イ状態にあることで、キーボード157または159が
仮想キーボード・コントローラ206をディスエーブル
していないということが示されているときである。この
状況は、KCSTAT296(図12参照)のTBFビ
ットに反映される。
【0127】KT RTS1状態にあるときには、仮想
キーボード・コントローラ206のクロック出力信号V
KC CLK0は「真」状態にあり、そのため物理キー
ボードの双方向線であるキーボード・クロック線をロー
状態とされており、これによって外部キーボード157
または159が送信を開始するのを防止している。この
ようにしている理由は、仮想キーボード・コントローラ
206が送信を開始しようとしているからである。続い
て制御の流れは第2送信要求状態KT RTS2(40
4)へ進み、更に第3送信要求状態KT RTS3(4
06)へ進み、更に第4送信要求状態KTRTS4(4
08)へ進む。この一連の遷移の間、最初は仮想キーボ
ード・コントローラ206のクロック出力信号VKC
CLK0がハイ状態にあり(双方向クロック線をロー状
態へ駆動している)、続いてそのデータ出力信号VKC
DAT0がハイ状態になり(双方向データ線をロー状態
にする)、続いてそのクロック出力信号VKC CLK
0がロー状態になる(ただし、双方向線であるためキー
ボード157または159の出力次第でハイ状態になる
こともある)。状態機械は、これに続いて、物理キーボ
ードのクロック線のレベルが一旦上昇し、その後に、外
部キーボードがそれをロー状態へ駆動するのを待ち、こ
れらが行われたならば、次のデータをクロックインする
動作が開始される。
【0128】続いて状態マシンは、状態KT RTS4
(408)からキーボード送信データ・ロー状態KT
DAT L(410)へ遷移する。状態マシンは、そこ
からキーボード送信データ・ハイ状態KT DAT
(412)へ遷移し、更に、全てのデータ・ビットの送
信が完了するまで、これら状態410と状態412との
間で遷移を繰り返す。続いて状態マシンは、パリティ・
ロー状態KT PARL(414)へ遷移し、更にパリ
ティ・ハイ状態KT PAR H(416)へ遷移す
る。
【0129】仮想キーボード・コントローラ206が、
状態414及び状態416においてパリティ・ビットの
送信を完了したならば、続いて状態マシンはストップ・
ビット・ロー状態KT STP L(418)へ遷移
し、更にストップ・ビット・ハイ状態KT STP
(420)へ遷移する。続いて状態マシンは、2つの信
号線制御状態KT LNC1(422)及びLT LN
C2(424)へ次々と遷移する。これらの信号線制御
状態にあるときには、外部キーボード157または15
9が制御権を仮想キーボード・コントローラ206へ返
すことができる。続いて状態マシンは、キーボード・コ
ントローラ抑止状態KT INH(426)へ遷移し、
この状態では、キーボード・クロック線をロー状態へ駆
動してしばらくの間その状態を維持し、このときロー状
態にしておく時間は、8042型キーボード・コントロ
ーラの動作を模倣するために必要な長さの時間である。
続いて状態マシンは、再イネーブル状態REENABL
E(428)へ遷移し、そこからIDLE状態(40
0)へ戻る。
【0130】データを受信する場合も、状態マシンは、
データを送信する場合と殆ど同じであり、単に、外部キ
ーボード157または159の一方からデータを受信す
る点が異なるだけである。制御の流れは最初にシリアル
受信ロー状態KR SRT L(430)へ進み、この状
態は、仮想キーボード・コントローラ206のVKC
CLKI信号とVCK DATI信号との両方がロー状
態にされているという状態であり、これは、外部キーボ
ード157または159がクロック線とデータ線との両
方をロー状態へ駆動していることを示しており、従っ
て、そのキーボード157または159がデータ送信を
開始しようとしていることを示している。制御の流れは
続いて、2つのデータ受信状態KR DAT H(43
2)及びKR DAT L(434)へ進む。状態マシ
ンは、キーボード157または159から仮想キーボー
ド・コントローラ206への全てのデータ・ビットの送
信が完了するまで、これら2つのデータ受信状態432
と434との間で遷移を繰り返す。続いて状態マシン
は、2つのパリティ受信状態KR PAR L(43
6)及びKR PAR H(438)へ次々と遷移す
る。そして、外部キーボード157または159がパリ
ティ・ビットの送信を完了したならば、状態マシンは2
つのストップ・ビット受信状態KR STP L(44
0)及びKR STP H(442)へ次々と遷移す
る。外部キーボード157または159がストップ・ビ
ットの送信を完了したならば、その外部キーボード15
7または159はしばしの間ディスエーブルされて抑止
状態KR INH(444)におかれる。続いて状態マ
シンは、待機状態KR WAIT RD(446)へ遷
移し、そこでは、外部キーボードが、受信バッファが空
になるまでの間、次の受信を阻止される。続いて制御の
流れは、再イネーブル状態(428)か、あるいは送信
要求状態KT TRS1(402)かのいずれかへ遷移
し、後者へ遷移するのは、仮想キーボード・コントロー
ラ206の送信バッファ内にデータがある場合である。
【0131】次に図19について説明する。同図は、図
18の様々な状態に対応した状態遷移を示したものであ
る。各々の状態に対応させて、その状態の次状態とその
次状態へ遷移するための条件とを列記してあり、状態マ
シンは、次状態へ遷移するための条件が「真」であれ
ば、PCIクロック・サイクルに応答して次状態へ遷移
する。次状態へ遷移するための条件が「真」でないとき
には、状態マシンは現在状態にとどまる。図を見やすく
するために、同一状態への遷移条件については記入して
いない。これは、同一状態への遷移条件は、別状態への
遷移条件が満足されていないという条件に過ぎないから
である。図19中に記した種々の信号については、後に
図20を参照して更に詳細に説明する。ただし図20に
は示していない信号が3つあり、それらは、T5信号、
T15信号、及びT100信号である。これら信号は、
10マイクロ秒、15マイクロ秒、及び127マイクロ
秒の遅延信号であり、タイミングを取るためとテストを
実行するためとに用いられる。それら信号は、それら信
号を用いる状態の開始点から10マイクロ秒ごと、15
マイクロ秒ごと、及び127マイクロ秒ごとにタイマに
よって発生される。例えば、KT RTS2状態につい
ていえば、状態マシンは、このKT TRS2状態にな
ってから15マイクロ秒後にはKTRTS3状態へ遷移
する。このようなタイマは自明のものであるため、タイ
マについての詳細な説明は省略する。
【0132】次に図20について説明する。同図に示し
たのは、種々の信号を発生するための式であり、それら
信号のうちには、図19の状態マシンが使用する信号
と、後に図21〜図23を参照して詳細に説明する回路
が使用する信号とが含まれている。図20の式のうちに
は、図19に示した状態変数の幾つかを、式の一部とし
て使用しているものがある。図20の式に含まれている
それら変数は、図18の状態マシンがそれに対応する状
態にあるときに「真」状態になっている。更に、ここに
開示している実施形態では、図19の状態遷移と、図2
0の式に使用されている状態変数とは、IRC170内
部で実際にエンコードされているものではない。それら
状態遷移は、最初にプリコンパイラによって処理され、
より少ない数の変数を用いた状態遷移テーブルの形に作
成される。従って図19の状態遷移は、IRC170の
内部に発生する論理状態を示したものである。なぜ論理
状態を図示したかといえば、それは、それら論理状態
が、それらの基礎となっている回路の論理動作をより直
接的に反映したものだからである。図20の種々の式に
使用されている変数のうちの幾つかは、後に説明する図
21から図23に示した信号として送出されるものであ
る。図20の信号を実際に発生させるための回路動作は
自明のものであるため、それよりもむしろ、それら信号
の意味について重点的に説明して行く。
【0133】図20に式を示した信号のうちの幾つか
は、クロックされない信号である。RST TIMER
信号は、様々なタイマのうち、特定の幾つかの状態の開
始点からの遅延を生成するためのタイマをリセットする
のに用いる信号である。それらタイマは、基本的には、
上述のT5タイマ、T15タイマ、及びT100タイマ
である。RST TIMER信号が「真」状態のときに
は、対応する個々のマイクロ秒タイマが「0」にリセッ
トされる。MUX PAR信号は、駆動して出力するビ
ットを、次データ・ビットとパリティ・ビットとの間で
切換えるために使用される信号である。この信号は、図
21に示した回路で用いられる。COUNT信号は、図
18の状態マシンが、送信または受信したデータ・ビッ
トのカウント値をインクリメントするために使用する信
号であり、図23に示した回路で使用されている。SH
IFT信号は、次データ・ビットを出力または入力させ
るためにシフト・レジスタSR[7:0]を右方へ1つ
シフトすべきことを示す信号である(後に説明する図2
2を参照されたい)。
【0134】DATDRV信号は、データ・ビットまた
はパリティ・ビットをデータ出力信号VKC DAT0
として送出すべきときに「真」状態になる信号である。
DATAOUT信号は、「真」状態のときに、8042
信号に相当する信号をハイ状態にすることで、双方向線
であるキーボード・データ線をロー状態にする信号であ
る。従って、DATDRV信号が、「真」状態となるこ
とで、データ・ビットとパリティ・ビットとのいずれか
送出すべき方のビットをデータ線上に送出させるのに対
して、DATAOUT信号の方は、「真」状態となるこ
とで、データ線をロー状態にする。このようにする理由
は、送信サイクルの開始時にはデータ線を強制的にロー
状態にする必要があるからである。
【0135】CLKOUT信号は、「真」状態のとき
に、出力信号VKC CLKをハイ状態にする信号であ
り、これは即ち、双方向線であるキーボード・クロック
線がロー状態へ駆動されるということである。これを行
うのは、1つには、送信要求の送出を開始するときであ
り、その場合には外部キーボード157または159か
らの送信を抑止しておく必要があるからである。また、
もう1つの場合として、送信ないし受信の完了後に遅延
を導入するためにこれを行うようにしており、これは、
標準的キーボード・コントローラである8042型キー
ボード・コントローラの動作を模倣するためである。S
RLOAD信号は、「真」状態になることによって、シ
フト・レジスタSR[7:0]のロードを行わせる信号
である。これを行わせるのは、IDLE状態400また
はKR WAIT RD状態446にあって、しかも、
TBF信号によって送信バッファがフル状態にあること
が示されている場合である。
【0136】この場合には、送信バッファの内容がシフ
ト・レジスタSR[7:0]にロードされ、それによっ
て、複数のデータ・ビットをシリアルにシフト・アウト
して送信することができるようになる。RST BIT
COUNT信号は、「真」状態のなることによって、送
信または受信したデータ・ビットの個数をカウントする
ビット・カウンタを強制的にリセットする信号である。
これが行われるのは、IDLE状態またはKR WAI
RD状態においてであり、次回の送信または受信に
備えてリセットを行うのである。送信バッファ・フル信
号クリア信号TBF CLRは、送信バッファ・フル信
号をクリアする信号である。これが行われるのは、KT
INH状態426へ入ってから127マイクロ秒後、
または、状態マシンがREENABLE状態へ遷移した
とき、または、塞り時送信エラーまたは送信タイムアウ
ト・エラーが発生したときである。
【0137】次に図20について説明すると、同図に示
したのは、クロックされる種々の信号の式である。それ
ら信号は、PCIバス・クロックによってクロックされ
るようにすることが好ましい。それら信号の殆どは、図
12のKCSTATレジスタ296へ供給されている。
RCV TIMEOUT信号は、上でKCSTATレジ
スタ296に関して説明したように、仮想キーボード・
コントローラ206が受信タイムアウト・エラーを受け
取ったときに「真」状態になる信号である。特に、この
RCV TIMEOUT信号は、一旦「真」状態になっ
たならば、KCSTATレジスタ読出しストローブ信号
KCSTAT RD STBが「偽」状態である間は、
「真」状態のままである。KCSTAT RD STB
信号は、PCIバス117を介してKCSTATレジス
タ296の読出しが行われたときに「真」状態になる。
このKCSTAT RD STB信号が「真」状態であ
れば、それは、KCSTATレジスタ296の読出しが
行われたということを示している。PCIバス上の種々
の信号をストローブする動作と、種々のレジスタの読出
し及び書込みの動作とについては、説明を簡明にするた
めに省略するが、それらはバス設計の当業者には周知の
ものである。ここで、RCV TIMEOUT信号が、
一旦「真」状態になったならばKCSTATレジスタ2
96の読出しが行われるまで「真」状態のままであるよ
うにしている理由は、これが「真」状態になるような事
態が発生したときには、CPU50がそれに対処するた
めの然るべき動作を行う必要があるからであり、それに
よってこのRCV TIMEOUT信号がクリアされる
ようにしているのである。更に、GLOBAL MS
IMEOUT信号がロジックによって使用されており、
この信号は、受信ないし送信が開始されてから3ミリ秒
後に発生される。タイムアウトの式の中に記されている
どの状態にあるときでも、この信号がアクティブ状態に
なったならば、それは、何らかの不具合のためにタイム
アウトが発生したことを意味している。TRAN WH
ILE BUSY信号、TRAN TIMEOUT信
号、RBF信号、及びTRANSMIT COMPLE
TE信号は、同様にして、種々の信号及び読出しストロ
ーブに基づいて発生され、KCSTATレジスタ296
を介してCPU50へ供給される信号である。
【0138】次に図21〜図23について説明する。そ
れらの図は、以上に説明した以外のその他の回路を示し
たものであり、それら回路は、IRC170の内部の種
々のブロックが用いるその他の信号や、図9に示した種
々のレジスタを介してPCIバス117からCPU50
へ供給される種々の信号を発生させる回路である。VK
DATO信号は、ORゲート500の出力から送出
され、このゲート500へは、DATAOUT信号と、
ANDゲート502の出力とが入力している。ANDゲ
ート502へは、DATDRV信号と、マルチプレクサ
504の出力を反転器506で反転した信号とが入力し
ている。マルチプレクサ504は、MUX PAR信号
によって切換えられ、その「0」側の入力はSR[0]
信号であり、この信号は、次データ・ビットとして送出
される信号である。マルチプレクサ504の「1」側の
入力はSR[7]信号の反転信号であり、この信号は、
パリティ・ビットとして送出される信号である。
【0139】従って、DATAOUT信号が「真」状態
になった(これはデータ送信の開始を表している)なら
ば、VKC DATO信号が「真」状態とされる(これ
によってキーボード・データ線がロー状態へ駆動され
る)。また、DATDRV信号が「真」状態になったな
らば、VKC DATO信号が、次データ・ビットを反
転した値とされる。MUX PAR信号が「真」状態の
ときには、これはパリティ・ビットを送信すべきことを
表しており、この場合には、VKC DATO信号とし
て、データ・ビットではなくパリティ・ビットSR
[7]が(最終的には反転されていない状態で)出力さ
れる。VKC CLK0信号は、配線を介してそのまま
CLKOUT信号に結合されている。
【0140】SMIKCNTR信号は、図11及び図1
2の状態ビット及び制御ビットのうちのあるものの状態
が変化したときに、SMIを発生させるための信号であ
る。SMIKCNTR信号は、ORゲート508の出力
として発生されており、このORゲート508に入力し
ている信号は、TRANSMIT COMPLETE信
号、RBT信号、TRAN TIMEOUT信号、RC
TIMEOUT信号、及びTRAN WHILE
BUSY信号である。容易に理解されるように、SMI
KCNTR信号は、それら入力信号のうちのどれか1つ
でも「真」状態になったならば「真」状態になる。この
ようにしている理由は、それら入力信号が「真」状態に
なったときには、システム管理モード212のファーム
ウェアが、例えば仮想キーボード・コントローラ206
の受信バッファの読出し等の、然るべき動作を実行する
必要があるからである。
【0141】VKC CLKO信号とVKC DATO
信号とは、いずれも反転された後にキーボード・クロッ
ク線とキーボード・データ線とに供給されるようにして
あるが、これに対して、仮想キーボード・コントローラ
206へ入力する信号は、反転されることなく入力する
ようにしている。即ち、VKC CLKI信号とVKC
DATI信号とは、それらクロック線及びデータ線の
実際の値を反映している。そのためCLKIN信号を、
CLKI信号が示す状態をPCIクロック・サイクルの
2サイクル分遅延させたものとして発生させており、こ
のように遅延させるために2つのフリップフロップ51
0及び512に信号を通過させている。そして、これら
のうちのフリップフロップ512のD入力に、VKC
CLKI信号を供給している。DATAIN信号も、同
様にして、PCIクロックCLKIによってクロックさ
れる2つのフリップフロップ514及び516によって
発生させている。フリップフロップ516のD入力は、
VKC DATI信号によって駆動されている。これに
よって、それら低速の非同期信号をサンプリングするこ
とで準安定状態を防止できるようにしている。
【0142】次に図22について説明する。同図に示し
た回路は、レジスタ信号SR[7:0]、送信バッファ
・フル信号TBF、それにキーボード・コントローラ送
信バッファ信号KTRNBUF[7:0]を発生させる
ための回路である。キーボード・コントローラ送信バッ
ファ信号KTRNBUF[7:0]は、フリップフロッ
プ518(これはCLKI信号によってクロックされて
いる)の出力として発生されている。実際には、フリッ
プフロップ518への入力も、またフリップフロップか
らの518からの出力も8個であるが、図を見やすくす
るために、入力及び出力のいずれについても8個をまと
めて1個にして図示してある。フリップフロップ518
のD入力へは、マルチプレクサ520の出力が供給され
ている。マルチプレクサ520の「0」側の入力へは、
キーボード・コントローラ送信バッファ信号KTRNB
UF[7:0]が供給されている。マルチプレクサ52
0の「1」側の入力には、一連の信号RDHI[23:
16]が供給されており、それら信号はPCIバスに結
合されている。マルチプレクサ520はKCDATWR
T STB信号に応じて切換わり、この信号は、図12
のKCDATレジスタ298への書込みが行われたとき
に「真」状態になる。従って、この書込みストローブ信
号が「真」状態になると、PCIバス上のデータがキー
ボード・コントローラ送信バッファKTRNBUFの中
へクロックインされる。
【0143】キーボード・コントローラ送信バッファK
TRNBUFの内容は、レジスタSR[7:0]へクロ
ックインされ、そこからVKC DATA0信号として
送信される。SR[6:0]信号は、CLKI信号によ
ってクロックされるフリップフロップ522の出力とし
て発生されている。フリップフロップ522の入力へ
は、マルチプレクサ524の出力が供給されている。マ
ルチプレクサ524は、その「1」側の入力として、K
TRNBUF[6:0]信号を受け取っており、これ
は、シフト・レジスタ・ロード信号SRLOADが
「真」状態になったときに、マルチプレクサ524から
出力として送出される。従って、SRLOAD信号が
「真」状態になったときに、KTRNBUFの内容がS
R[6:0]レジスタへクロックインされる.一方、S
RLOAD信号が「偽」状態のときには、マルチプレク
サ524は、マルチプレクサ526の出力を通過させて
みずからの出力として送出している。マルチプレクサ5
26を切換えているのはSHIFT信号であり、このS
HIFT信号が「偽」状態のときには、シフト・レジス
タSR[6:0]の内容が、マルチプレクサ526の出
力として送出されている。従って、このSHIFT信号
が「偽」状態で、且つ、SRLOAD信号が「偽」状態
である間は、SR[6:0]の内容は変化しない。SH
IFT信号が「真」状態になったならば、これは、シフ
ト・レジスタSR[6:0]をシフトすべきことを示し
ており、このとき、マルチプレクサ526の「1」側の
入力が、このマルチプレクサ526の出力として送出さ
れるようになり、この「1」側の入力はSR[7:1]
信号である。これによって、シフト・レジスタSRのシ
フトが行われる。
【0144】SR[7]信号は、送信データのパリティ
を発生させるための信号である。このSR[7]信号
は、フリップフロップ528の出力として発生されてお
り、このフリップフロップ528もCLKI信号によっ
てクロックされている。フリップフロップ528のD入
力にはマルチプレクサ530の出力が供給されており、
このマルチプレクサ530は、SRLOAD信号によっ
て切換えられる。即ち、SRLOAD信号が「真」状態
になると、マルチプレクサ530の出力からはKTRN
BUF[7]信号が送出されるようになり、それによっ
て、CPU50がKCDATレジスタ298に書込んだ
値がSR[7]信号としてロードされる。一方、SRL
OAD信号が「偽」状態になると、マルチプレクサ53
0は「0」側の入力に供給されている信号を出力するよ
うになり、この「0」側の入力はマルチプレクサ532
から供給されている。マルチプレクサ532は、SHI
FT信号が「偽」状態のときには、みずからの出力がみ
ずからの「0」側の入力へ供給されるようにしてあり、
これによって、SHIFT信号が「偽」状態のときには
SR[7]信号が現在状態に維持されるようにしてい
る。一方、SHIFT信号が「真」状態になったなら
ば、マルチプレクサ532の出力から「1」側の入力が
送出され、この「1」側の入力へはマルチプレクサ53
4の出力が供給されている。マルチプレクサ534はD
ATDRV信号に応じて切換わる。DATDRV信号が
「真」状態であるとき、それは、データ・ビットをCK
DATO信号として送信しようとしていることを表
している。DATDRV信号が「偽」状態のときには、
データを送信しようとしているのではなく受信しようと
していることを表している。その場合には、マルチプレ
クサ534からはその「0」側の入力であるDATAI
N信号が出力しており、これによって、受信データがシ
フトインされる。一方、DATDRV信号が「真」状態
のときには、マルチプレクサ534は「1」側の入力を
出力として送出しており、この「1」側の入力へは排他
的ORゲート536の出力が供給されている。排他的O
Rゲート536へ入力している信号は、SR[7]信号
とSR[0]信号である。従って、排他的ORゲート5
36の出力は、共に送出される複数のビットと組み合わ
さることでパリティを構成するものであり、SR[7]
ビットは、送信データの全てのビットの送信が完了した
時点でそれらビットのパリティとなるものである。
【0145】送信バッファ・フル信号TBFは、フリッ
プフロップ538の出力から発生されている。フリップ
フロップ538の入力へは、ORゲート540の出力が
供給されている。ORゲート540の入力へは、KCD
AT WRT STB信号が供給されており、この信号
は、CPU50がKCDATレジスタ298への書込み
を行ったときに「真」状態になる。この信号が「真」状
態になったならば、それは、送信すべきデータが存在し
ていることを表しており、TBF信号が「真」状態にな
る。ORゲート540の他方の入力へは、ANDゲート
542の出力が供給されている。ANDゲート542の
2つの入力へは、送信バッファ・フル信号クリア信号T
BF CLRの反転信号と、送信バッファ・フル信号T
BFとが供給されている。従って、TBF CLR信号
が「真」状態になったならば、TBF信号がクリアされ
る。
【0146】次に図23について説明する。同図に示し
た回路は、BIT COUNTER[2:0]信号を発
生するための回路であり、この信号は、仮想キーボード
204が、キーボード157または159へ送信したデ
ータ・ビットの個数をカウントするための信号である。
BIT COUNTER[2:0]信号は、フリップフ
ロップ544の出力から発生されている。フリップフロ
ップ544はPCIクロックCLKIによってクロック
されており、そのD入力にはマルチプレクサ546の出
力が供給されている。マルチプレクサ546は、図20
に関連して説明したRST BIT COUNT信号に
応じて切換わる。この信号が「真」状態になったなら
ば、マルチプレクサ546は、「1」側の入力である
「0」を出力し、それによってBIT COUNTER
レジスタをクリアする。一方、RSTBIT COUN
T信号が「偽」状態のときには、マルチプレクサ546
は、マルチプレクサ548の出力を通過させて出力して
おり、マルチプレクサ548はCOUNT信号に応じて
切換わる。COUNT信号が「0」状態であれば、それ
は、BIT COUNTERレジスタをインクリメント
してはならないことを示している。このときマルチプレ
クサ548は「0」側の入力を出力しており、この
「0」側の入力へは、BIT COUNTER[2:
0]信号それ自体が供給されている。一方、COUNT
信号が「真」状態であれば、それは、BIT COUNT
ERレジスタをインクリメントすべきことを示してい
る。このときマルチプレクサ548は「1」側の入力を
出力しており、この「1」側の入力へは、加算器550
の出力が供給されており、この加算器550はBIT
COUNTER[2:0]信号の値に「1」を加算して
いる。従って、RST BIT COUNT信号が「真」
状態になるとBIT COUNTER[2:0]レジス
タはリセットされ、また、COUNT信号が「真」状態
になるとインクリメントされるようになる。
【0147】尚、図19において、KT DAT H状
態412からKT DAT L状態410への遷移が発
生するのは、CEQ7信号が「偽」状態である場合に限
られる。このCEQ7信号が「真」状態になるのは、デ
ータ・ビットを8個処理したときであり、このとき、K
DAT H状態412からKT PAR L状態4
10への遷移が発生する。従って、7個のビットを出力
したときに、図18の状態マシンはパリティ・ビットを
出力する状態へ遷移する(これについては、受信データ
を追跡しているときも同じである)。このようにするた
めに、CEQ7信号(この名称は、カウント・イコール
・セブン信号という意味である)を比較器552によっ
て発生させており、この比較器は3個のA入力と3個の
B入力とを備えている。3個のA入力へは、BIT
OUNTER[2:0]信号が供給されており、3個の
B入力へは、10進法に換算して「7」に相当する値が
供給されている。従って、BIT COUNTER
[2:0]信号が「7」になったときにCEQ7信号が
「真」状態になり、図18の状態マシンをパリティ受信
状態またはパリティ送信状態へ遷移させる。
【0148】以上の図18〜図23についての説明、並
びに図10の信号図についての説明から明らかなよう
に、仮想キーボード・コントローラ206は結果的に、
8042型キーボード・コントローラと同じ動作を実行
するものとなっている。また、仮想キーボード・コント
ローラ206は、図18の状態マシに従って、VKC
LKI信号を受け取り、VKC DATO信号及びVK
CLKO信号を送出する。
【0149】仮想キーボード204は、その構成が仮想
キーボード・コントローラ206の構成と極めてよく似
ている。仮想キーボード204は、IRC DATI信
号及びIRC CLKI信号を入力信号として受信し、
IRC CLKO信号及びIRC DATO信号を出力
信号として送信する。ここでも、後者の2つの信号は反
転した論理値で送出され、一方、前者の2つの信号は論
理信号線であるキーボード・コントローラ・データ線及
びキーボード・コントローラ・クロック線上に発生する
論理値をそのまま表している。仮想キーボード204
は、図11の種々の仮想キーボード・レジスタに関連し
た様々な信号を発生或いは利用し、SMI(システム管
理割込み)信号であるSMIKBD信号を送出する。ま
た、そればかりでなく、仮想キーボード204は更に、
KBD CHANGE INT信号とKBD PRES
ENT信号とを入力信号として受信する。
【0150】仮想キーボード204が仮想キーボード・
コントローラ206とは相違している点として、仮想キ
ーボード204は、マスタ・モードとスヌープ・モード
とのどちらのモードでも動作できるということがある。
仮想キーボード204は、マスタ・モードにあるときに
は、8042型キーボード・コントローラ156から送
出されるスキャン・コードに対してアクティブに応答を
返す。例えば8042型キーボード・コントローラ15
6がキーボード状態コマンドを送出したときには、仮想
キーボード204は、SMMに制御されて、そのときの
状態を表すスキャン・コードを返す。
【0151】スヌープ・モードは、KCFGレジスタ2
94内のT SNOOPビット及びR SNOOPビッ
トによって設定されるモードである。仮想キーボード2
04は、このスヌープ・モードにあるときには、804
2型キーボード・コントローラ156と、外部キーボー
ド157と159のうちキーボード・マルチプレクサ2
14を介して接続されている方のキーボードとの間で実
行されているトランザクションをパッシブにモニタして
いる。このスヌープ・モードにあるときには、仮想キー
ボード204は、8042型キーボード・コントローラ
156と、接続されている方のキーボード157または
159との間でキャラクタが送信されたときにシステム
管理モード212のファームウェアへSMI割込みをか
けるが、ただし、クロック線IRC CLKO及びデー
タ線IRC DATOを実際に駆動することはない。
【0152】仮想キーボード204の状態マシン及び回
路構成と、仮想キーボード・コントローラ206の状態
マシン及び回路構成とは、互いに類似しているため、そ
れらの間の相違点に重点を置いて説明することにする。
本質的に同一の部分に関しては、図18〜図23の仮想
キーボード・コントローラ206についての説明を参照
されたい。
【0153】次に図24について説明する。同図に示し
たのは、仮想キーボード204の状態図である。図18
の状態図と同様に、図24の状態図は、キーボードID
LE状態KBIDLE600と、図18の状態430〜
446に基本的に対応した状態602〜622から成る
受信状態シーケンスと、図18の状態402〜424に
基本的に対応した状態624〜618から成る送信状態
シーケンスとを含んでいる。更に、抑止状態640も含
まれているが、これはスヌープ・モードで用いられる状
態である。
【0154】次に図25について説明する。同図は、図
23の種々の状態に対応した状態遷移を記したものであ
る。この図も、その大部分が、図19に記した状態遷移
と同じものとなっている。ただし、ここでは更に、MA
STER信号が用いられている。このMASTER信号
が「真」状態であるのは、1つには、ホット・プラグ機
能がイネーブルされていることがHPEN信号によって
示されているが、選択されている物理キーボード157
または159のプラグが差し込まれていないという場合
であり、もう1つには、図11のKCFGレジスタ29
4にKBD SEL[1]信号がセットされていて、ど
ちらのキーボードが接続されているかに関わらず仮想キ
ーボード204をイネーブルすべきことが示されている
場合である。これらいずれの場合も、仮想キーボード2
04は、単にスヌープを実行するのではなく、必要なと
きに実際のキーボードと同じようにアクティブにクロッ
ク線及びデータ線を駆動しなければならない。
【0155】次に図26について説明する。この図26
のAに示したのは、クロックされない種々の信号であ
り、それらは、図24の状態マシンで使用され、また図
25の状態遷移ロジックや、後に説明する図27〜図2
9に示した仮想キーボード204の回路でも使用されて
いる信号である。同様に、この図26のBに示したの
は、クロックされる種々の信号であり、それらは、図2
4の状態マシンで使用され、また図25のロジック、そ
れに図27〜図29のロジックでも使用されている信号
である。更に、この図26に示すようにして発生される
それら信号は、図11の仮想キーボード204の種々の
レジスタに対応した受信データ及び制御信号を発生させ
るためのPCIバス117の入出力ロジックでも使用さ
れている。
【0156】次に図27について説明する。同図に示し
た回路構成は、図21の仮想キーボード・コントローラ
206において発生させている種々の信号に対応した種
々の信号を発生させるための回路構成である。IRC
DATO信号は、VKC DATO信号を発生させるた
めに用いられている回路構成と同様の回路構成によって
発生され、回路700から706は、図21の回路50
0及び502〜506に対応している。ただし、VKC
DATO信号の場合と異なり、IRC DATO信号
は更に、ORゲート700から出力される信号がAND
ゲート701へ供給されたときにも発生される。このA
NDゲート701の他方の入力には、MASTER信号
が供給されている。このMASTER信号を更に用いる
ことによって、このMASTER信号が「偽」状態のと
きには、IRC DATO信号が、ハイ状態、即ちアク
ティブ状態にならないようにしている。従って、仮想キ
ーボード204がスヌープ・モードにあるときには、I
RC DATO信号は常にロー状態にあり、一方、仮想
キーボード204がマスタ・モードにあるときには、双
方向線であるクロック線及びデータ線のアクティブな制
御を可能とし、図21の回路に対応した回路によってI
RC DATO信号が発生するようにする。
【0157】IRC CLKO信号は、KBCLKOU
T信号(これについては、図21の説明並びにVKC
CLKO信号及びCLKOUT信号の説明を参照された
い)そのものであるが、ただし、ANDゲート707を
介在させてあり、このANDゲート707に、KBCL
KOUT信号とMASTER信号とを入力させ、MAS
TER信号が「偽」状態にあるときには、そのMAST
ER信号によってIRC CLKO信号をマスクできる
ようにしている。
【0158】SMIKBD信号は、図21のSMIKC
NTR信号に対応するものであり、図21のORゲート
508に対応したORゲート708から同様にして送出
される信号である。SMIKBD信号の場合には、図の
種々のキーボード・コントローラ信号に対応する夫々の
仮想キーボード信号がORゲート708に入力してお
り、それら対応信号を列挙すると、KBTRANSMI
COMPLETE信号、KBRBF信号、KBTR
AN TIMEOUT信号、KBRCV TIMEOU
T信号、それに、KBTRAN WHILE BUSY
信号である。ただしそれらだけではなく更に、このOR
ゲート708の1つの入力として、ANDゲート709
の出力も供給されている。ANDゲート709には、ホ
ット・プラグ・イネーブル信号であるHPEN信号と、
ORゲート711の出力とが入力している。ORゲート
711には、KBD CHANGE[1]信号とKBD
CHANGE[0]信号とが入力している。これら2
つの信号のいずれかが「真」状態であれば、それは、そ
の信号に対応したキーボードのプラグ状態またはアンプ
ラグ状態が変化したことを示している(図13参照)。
そのような状態変化が実際に発生しており、しかもホッ
ト・プラギングがイネーブルされていることがHPEN
信号によって示されているときには、SMIKBD信号
が、システム管理モード212のファームウェアへSM
I割込みをかけさせ、新たにプラグが差し込まれたか或
いはプラグが引き抜かれて着脱が行われたキーボード1
57または159の処理にあたらせる。
【0159】KBCLKIN信号及びKBDATAIN
信号は、フリップフロップ710〜716によって発生
されており、それらフリップフロップはCLKI信号に
よってクロックされており、IRC CLKI信号及び
IRC DATI信号を入力として受け取っている。そ
れらフリップフロップ710〜716の回路は、それに
対応した図21の回路510〜516と同様に動作す
る。スヌープ・モードと、それと対照的なアクティブ・
モードであるマスタ・モードとの、2つのモードに対応
するためにMASTER信号を発生させており、このM
ASTER信号は、ORゲート760の出力から送出さ
れている。ORゲート760の一方の入力へは、KBD
SEL[1]信号が供給されている。この信号が
「真」状態にあるときには、それは、仮想キーボード2
04をイネーブルすべきことがKCFGレジスタ294
によって示されているを表している。従って、MAST
ER信号を「真」状態にして、8042型キーボード・
コントローラ156に接続しているデータ線及びクロッ
ク線を仮想キーボード204にアクティブに駆動させる
ようにすべきである。
【0160】ORゲート760の他方の入力へは、AN
Dゲート761の出力が供給されており、このANDゲ
ート761には、!KBD SEL[1]信号とAND
ゲート762の出力とが入力している。ANDゲート7
62へは、HPEN信号とORゲート764の出力とが
入力している。HPEN信号が「偽」状態であれば、そ
れはホット・プラギングがイネーブルされていないこと
を示しており、この場合には、仮想キーボード204
は、KCFGレジスタ294のKBD SEL[1]信
号によってイネーブルすべきことが指定されている場合
を除き、イネーブルされてはならない。一方、ホット・
プラギングがイネーブルされている場合には、選択され
ているキーボード157または159が存在しておらず
即ち接続されていないときに、MASTER信号もまた
イネーブルされていなければならない。これは、ORゲ
ート764への2つの入力によって判定され、それら入
力は、ANDゲート766と768とから供給されてい
る。ANDゲート766へは、KBD SEL[0]信
号の反転信号と、KBD PRESENT[0]信号の
反転信号とが入力している。これら2つの入力が共に
「真」状態となるのは、一次キーボード157が選択さ
れていてしかも存在していない場合である。同様に、A
NDゲート768へは、KBD SEL[0]信号を反
転しないままの信号と、KBD PRESENT[1]
信号の反転信号とが入力している。これら入力信号が共
に「真」状態となるのは、二次キーボード159が選択
されていてしかも存在していない場合である。これら2
つの場合のいずれかに該当するときに、ホット・プラグ
がイネーブルされていたならば、MASTER信号は
「真」状態でなければならず、なぜならば、そのような
ときには、仮想キーボード204が、選択されていてし
かも存在していないキーボード157または159の代
役を務める必要があるからである。
【0161】次に図28について説明する。同図に回路
718〜742として示したものは、KBDTRNBU
F[7:0]信号と、KBSR[7:0]信号と、KB
TBF信号とを発生するための回路を全て示したもので
ある。これら回路は、図22の夫々の回路と比べて、仮
想キーボード・コントローラ206の種々の信号の替わ
りに仮想キーボード204信号の夫々の信号を使用して
いるということを除けば図22の夫々の回路と同じもの
である。それら信号の発生させ方と作用とについては、
図22に関する説明を参照されたい。
【0162】キーボード受信バッファ信号KBRCVB
UF[7:0]は、フリップフロップ770の出力から
送出され、このフリップフロップ770はPCIクロッ
クCLKIによってクロックされ、その入力にはマルチ
プレクサ772の出力が供給されている。マルチプレク
サ772は、KBLOADBUF信号によって切換えら
れる。KBLOADBUF信号が「偽」状態にあるとき
には、このKBLOADBUF信号は、マルチプレクサ
772の「0」側の入力から出力へと通過して循環する
経路上にあり、従って、KBRCVBUF[7:0]信
号は同じ状態に維持されている。一方、KBLOADB
UF信号が「真」状態にあるときには、マルチプレクサ
772の「1」側の入力がフリップフロップ770の入
力へ供給され、そのためKBSR[7:0]信号が受信
バッファKBRCVBUFの中へ導かれている。従っ
て、KBLOADBUF信号が「真」状態になったなら
ば、キーボード・シフト・レジスタKBSRの信号が、
キーボード受信バッファKBRCVBUFの中へクロッ
クインされるようになり、その結果、CPU50がそれ
ら信号を、PCIバス117を介して、KDATレジス
タ292から読み出せるようになる。
【0163】次に図29について説明する。同図に示し
たのは、キーボード・ビット・カウンタ信号KBBIT
COUNTER[3:0]を発生するための回路であ
る。この回路は図23の回路と同様のものであり、ロジ
ック744〜750は図23のロジック要素544〜5
50に対応しており、図29の回路が図23の回路と異
なっているのは、信号のビット数が3ビットではなく4
ビットであることと、マルチプレクサ746が、KBD
IDLE信号とINHIBIT信号とのいずれか一方が
「真」状態であれば切換えられることだけである。図2
3に関する説明を参照すれば、この条件が、RST
IT COUNT信号が「真」状態になるという条件と
本質的に同じものであることが明らかである。図23の
CEQ7信号に対応したKBCEQ7信号が、比較器5
52に対応した比較器752から送出される。従って、
KBCEQ7信号は、KBBIT COUNTER信号
の値が「7」になったときに「真」状態になる。ただ
し、これに加えて更に、KBBIT COUNTER信
号(A入力)の値がB入力の値と等しいかそれより大き
くなったならば、比較器754からKBCEQ8信号が
「真」状態で送出されるようにしてある。このKBCE
Q8信号は、図24の状態マシンで用いられている。
【0164】次に図30について説明する。同図に示し
たのは、SMM212のソフトウェアのうちの原理的に
重要な部分どうしが互いにどのように関連しているかを
示したブロック図である。トップ・レベルに位置するの
はIRC HANDLERルーチン800(図31参
照)である。IRC170がSMIを発生したときに、
SMM212のソフトウェアがコールするのは、このI
RC HANDLERルーチン800である。
【0165】IRC HANDLERルーチン800
は、様々なIRC170関連の事象を処理するものであ
るが、それら事象のうちでも特に、2種類の事象ソース
が原理的に重要である。それらは、図11のKSTAT
レジスタ290に対応したキーボード関連事象群と、図
12のKCSTATレジスタ296に対応したキーボー
ド・コントローラ関連事象群とである。キーボード関連
事象はIRCキーボード割込みハンドラ・ルーチンKE
YBOARD INT850(図32参照)が取り扱
い、IRCコントローラ関連事象はIRCキーボード・
コントローラ割込みハンドラ・ルーチンであるKEYB
OARD CONTROL INTルーチン900(図
33参照)が取り扱う。
【0166】キーボード関連事象は更にIRC KEY
BOARD INTルーチン850の複数のサブルーチ
ンによって処理される。それらサブルーチンのうちに
は、ホット・プラグ・ハンドラ・ルーチンであるHOT
PLUG HANDLERルーチン950と、キーボー
ド・コマンド処理ルーチンであるPROCESS KE
YBOARDCOMMANDルーチン1100とが含ま
れ、前者はプラグ事象及びアンプラグ事象を処理する
(図34〜図36参照)ルーチンであり、後者は仮想キ
ーボード204が8042型キーボード・コントローラ
156から受け取ったコマンドを解析して適切な応答を
用意する(図37〜図40参照)ルーチンである。また
更に、それらサブルーチンのうちには、統合遠隔コンソ
ール経路設定ルーチンも含まれており、このサブルーチ
ンについては詳細には説明しないが、図31のIRC
HANDLERルーチン800のステップ812でコー
ルされるサブルーチンである。
【0167】更に、システム管理モード212は、長い
期間に亙って維持されることはないため、数マイクロ秒
以上の長い遅延が必要な場合には、そのような遅延を、
タイマ割込みを利用してスケジューリングしておく必要
がある。そのようなSMIタイマ割込みは、周期事象ル
ーチンによって取り扱われ、この周期事象ルーチンにつ
いては後にSMI TIMERルーチン1200(図4
1〜図44参照)に関連して説明する。
【0168】次に図31について説明する。同図に示し
たのは、IRC HANDLERルーチン800の最も
重要な部分のフローチャートである。このIRC HA
NDLERルーチン800へ入るのは、CPU50へS
MI割込みがかかったときである。コンピュータ・シス
テムS内にはSMI事象の発生原因が多数存在すること
から、SMI事象の発生原因を確認させるために包括的
SMIルーチンはこのIRC HANDLERルーチン
800をコールする。本発明にかかるホット・プラグ機
能及びホット・アンプグ機能を備えたキーボードにとっ
ては、2つの特別のSMI発生原因があり、それらはキ
ーボード関連事象及びキーボード・コントローラ関連事
象のうちでも特に重要なものである。ステップ802へ
進んだならば、SMIが発生した原因はキーボード事象
であるか否かを判定する。図11に関して説明したよう
に、SMIを発生させるキーボード関連事象の発生原因
は5つある。それらは、キーボードのプラグが差し込ま
れている状態と抜き取られた状態との間の状態変化(こ
れはKSTAT[9:8]に反映される)、仮想キーボ
ード204から8042型キーボード・コントローラ1
56への送信動作に関する送信タイムアウト(これはK
STAT[6]に反映される)、仮想キーボード204
の受信タイムアウト(これはKSTAT[5]に反映さ
れる)、仮想キーボード204の受信バッファがフル状
態になることでスキャン・コードの受信が示されること
(これはKSTAT[0]に反映される)、それに現在
キーボード・スキャン・コードの送信の完了(これはK
STAT[3]に反映される)である。これら5通りの
事象のいずれかが発生したならば、システム管理モード
212のファームウェアはそれに応じた動作を実行する
必要がある。これについては後に図32に関連して更に
詳細に説明する。いずれの場合にも、現在SMIがIR
C170から発せられたキーボード関連SMIであった
ならば、制御の流れはステップ804へ進み、そこでキ
ーボード割込みルーチン850(図32)が実行され
る。
【0169】一方、現在SMIが、キーボード関連SM
Iでなかったならば、制御の流れはステップ802から
ステップ806へ進み、また、ステップ804へ進んだ
場合であっても、そこからステップ806へ進む。ステ
ップ806では、現在SMIの発生原因が、キーボード
にはなく仮想キーボード・コントローラ206にある
か、または、キーボードにあると同時に仮想キーボード
・コントローラ206にもあるかを判定する。仮想キー
ボード・コントローラ206に関連した割込みを発生さ
せる事象は、図12のKCSTATレジスタ296によ
って示されているものである。即ち、送信タイムアウト
等の送信エラー(KCSTAT[6])、受信タイムア
ウト(KCSTAT[5])、送信完了(KCSTAT
[3])、それに受信バッファ・フル状態(KCSTA
T[0])のいずれかが発生したならば、図10のSM
IKCNTR信号によってSMIが開始される。これら
のいずれかが発生するということは、システム管理モー
ド212のファームウェアが外部キーボード157また
は159のいずれかとの間の送信を適切に取り扱う必要
があることを意味している。従ってこの場合には、制御
の流れはステップ806からステップ808へ進み、そ
こでは、キーボード・コントローラ割込みルーチン90
0(図33)がコールされる。
【0170】制御の流れはステップ808からステップ
810へ進み、また、キーボード・コントローラSMI
が発生していたのではなかった場合には、ステップ80
6から直接ステップ810へ進む。ステップ810で
は、その他のIRC170関連システム管理割込みの処
理が実行される。これに該当するSMIには、例えば、
仮想COMデバイス200関連事象や、ビデオ・スヌー
プ・エンコード・ブロック202関連事象があり、いず
れも、モデム149を使用する統合遠隔コンソールのた
めに発生されるSMIである。
【0171】続いて、制御の流れはステップ812へ進
む。モデム149を使用する遠隔コンソール・モードに
あるときには、このステップ812において、遠隔コン
ソールから次々と送られてくるキャラクタを夫々にスキ
ャン・コードに変換して一時記憶用バッファに入れ、最
終的にそれらスキャン・コードが仮想キーボード204
から8042型キーボード・コントローラ156へ送信
されるようにする。それらキャラクタを、夫々に対応す
るスキャン・コードに変換した後に、仮想キーボード2
04から8042型キーボード・コントローラ156へ
送信する動作を実行するルーチンは、キーボード関連割
込みハンドラ、即ちキーボード割込みルーチン850で
ある。即ち、送信バッファをクリアする際に、キーボー
ド割込みルーチン850は、8042型キーボード・コ
ントローラ156への送信のためのKDATレジスタ2
92(図11)を介して、最終的にそれらスキャン・コ
ードを送信する。従って、モデムに接続されている遠隔
コンソールが、あたかも、システムの8042型キーボ
ード・コントローラ156に接続されている実際のロー
カル・キーボードであるかのように見え、そのため、C
PU50上で実行されているシステム・ソフトウェアに
とって、遠隔コンソール・モードが高度にトランスペア
レントなものとなる。再説になるが、これは全て、シス
テム管理モード212のファームウェアによって担当さ
れている。制御の流れはこの後、ステップ814へ進
み、包括的SMIハンドラへリターンする。
【0172】次に図32について説明する。同図に示し
たのは、キーボード割込みルーチン850の重要な部分
を説明したフローチャートである。最初にステップ85
2へ進み、PCIバス117を介してキーボード状態レ
ジスタKSTAT290(図11)からの読出しを行
う。続いてステップ854へ進み、システム管理割込み
が一次キーボード157または二次キーボード159の
プラグ状態またはアンプラグ状態の変化によって発生し
たものか否かを判定する。この変化の有無はKSTAT
レジスタ290のKSTAT[9:8]ビットから読出
されるKBD CHANGE[1:0]信号に示されて
いる。プラグ状態が変化していたならば、制御の流れは
ステップ856へ進み、そこでは、ホット・プラグ・ハ
ンドラ・ルーチン950(図34及び図35)をコール
する。一般的に、このルーチン950は、仮想キーボー
ド・コントローラ206を新たに装着されたキーボード
157または159に接続する手順を実行し、それによ
って、その新たに装着されたキーボード157または1
59を、既に装着されているキーボードまたは仮想キー
ボード204の現在状態に等しく初期設定することがで
きる。それまで使用していたキーボード157または1
59のプラグが引き抜かれた(アンプラグされた)とき
には、ホット・プラグ・ハンドラ・ルーチンは、使用可
能な状態にある他方のキーボード157または159へ
切換えるか、或いは、キーボード157及び159のど
ちらも装着されていない場合には仮想キーボード204
へ切換えて、仮想キーボード204をマスタ・モードに
入れ、この仮想キーボード204が8042型キーボー
ド・コントローラ156に応答できるようにする。以上
については、後にホット・プラグ・ハンドラ・ルーチン
950について説明する際に更に詳しく説明する。
【0173】制御の流れは、SMIがホット・プラグ事
象によって発生したものでなかった場合にはステップ8
54からステップ860へ進み、またステップ856を
実行した場合でも、やはりそこからステップ860へ進
む。ステップ860では、キーボード関連SMIが、送
信タイムアウト(KSTAT[6])によって発生した
ものか否かが判定される。この条件が「真」となるの
は、8042型キーボード・コントローラ156からス
キャン・コードを受信している間に、仮想キーボード2
04が先のバイトを送信した場合か、或いは、仮想キー
ボード204からのスキャン・コードの送信に対して8
042型キーボード・コントローラ156が所定時間内
に応答を返せなかったかの、いずれかの場合である。こ
れらの事象が発生した場合には、制御の流れはステップ
862へ進み、そこでは、8042型キーボード・コン
トローラ156へ送信するために最後に仮想キーボード
204へ送出したバイトを再送出する。これを行うに
は、送信キューの中にそのキャラクタを入れて、仮想キ
ーボード204の送信バッファがフル状態でなくなった
ときに、そのバイトが8042型キーボード・コントロ
ーラ156への送信のために仮想キーボード204へ送
出されるようにする。
【0174】送信タイムアウトが発生していなかったな
らば、制御の流れはステップ860からステップ864
へ進み、また、ステップ862を実行した場合でも、や
はりそこからステップ864へ進む。ステップ864で
は、そのキーボード関連SMIが受信タイムアウトによ
って発生したものか否かを判定する。この判定の結果が
「真」となるのは、KSTAT[5]に反映されている
KBRCV TIMEOUT信号が「真」状態にあると
きである。受信タイムアウトが発生した場合には、特別
の動作を実行することはない。
【0175】いずれの場合にも制御の流れはステップ8
64からステップ868へ進む。ステップ868では、
そのキーボード関連SMIが受信バッファがフル状態に
なったことに関係しているか否かを判定する。この判定
の結果が「真」となるのは、KBRBF信号(KSTA
T[0])が「真」状態にあるときである。受信バッフ
ァがフル状態にあれば、それは、仮想キーボード204
が8042型キーボード・コントローラ156からスキ
ャン・コードを受信したことを示しているか、或いは、
仮想キーボード204がスヌープ・モードにあるのであ
れば、8042型キーボード・コントローラ156と、
接続されているキーボード157または159との間の
データ交換を仮想キーボード204がスヌープしたこと
を示しているかのいずれかである。この判定の結果が
「真」であれば、制御の流れは先ずステップ872へ進
み、そこでは、そのキーボードのキャラクタが、PRO
CESS KBD COMMANDルーチン1100
(図37〜図40)で処理される。PROCESS
BD COMMANDルーチン1100は、本質的に、
仮想キーボード204が8042型キーボード・コント
ローラ156から受信したスキャン・コードを解析する
と共に、マスタ・モードにあるときには更に適当な応答
を発生するルーチンである。そしてこれらを行うため
に、8042型キーボード・コントローラ156へスキ
ャン・コードを送出し、また、システム管理モード21
2のファームウェアの内部の種々の変数を設定して「陰
の」キーボード状態を維持する。一方、仮想キーボード
204は、物理キーボードではないものの、「表示灯」
や「リピート・レート」等をはじめとする種々の持続性
キーボード・パラメータを維持している必要があり、そ
れは、物理キーボード157または159がホット・プ
ラグ機能によって接続されたときに、仮想キーボード・
コントローラ206が、その新たに装着されたキーボー
ドに対して、この仮想キーボード204の状態を反映さ
せるための初期設定を施せるようにしておかねばならな
いからである。
【0176】制御の流れは、このステップ872からス
テップ874へ進み、また、受信バッファがフル状態に
なかった場合には、ステップ868からステップ874
へ進む。ステップ874では、仮想キーボード204か
らの送信が完了したか否かを判定する。これは、KBT
RANSMITCOMPLETE信号(KSTAT
[3])によって示されている。送信が完了していたな
らば、KSTATレジスタ290の読出し動作によっ
て、KSTAT[3]ビットがクリアされており、その
ため、重複して割込みがかかるおそれが払拭されてい
る。続いてステップ876へ進み、KSTATレジスタ
290の、KBTBF信号を反映したKSTAT[1]
ビットの読出しを行い、この読出しは、送信バッファ・
フル信号が「真」状態でなくなるまで続ける。これは、
別のスキャン・コードを、8042型キーボード・コン
トローラ156へ送信させるために、PCIバス117
及びKDATレジスタ292を介して仮想キーボード2
04へ送出できるようにするためである。従って、制御
の流れはステップ878へ進み、そこでは、次キャラク
タ(もしあれば)を8042型キーボード・コントロー
ラ156へ送信する。この送信は、SEND KBD
IRCルーチンによって実行し、このルーチンは、未実
行のスキャン・コード(もしあれば)を、8042型キ
ーボード・コントローラ156へ送信させるために仮想
キーボード204へ送出する。送出するスキャン・コー
ドを保持するためのバッファへのロードは、例えば、P
ROCESS KBD COMMANDルーチン1100
によって実行され、このルーチン1100は、そのバッ
ファの中へ肯定応答スキャン・コードを格納する。続い
て制御の流れは、このステップ878からステップ88
0へ進み、また、そのSMIの発生原因が送信完了事象
ではなかった場合には、ステップ874からステップ8
80へ進む。ステップ880では、このルーチン850
から、先にステップ804でこのルーチン850をコー
ルしたIRC HANDLERルーチン800(図3
1)へリターンする。
【0177】次に図33について説明する。同図に示し
たのは、ステップ808でIRCHANDLERルーチ
ン800がコールしたキーボード・コントローラ割込み
ルーチン900である。このルーチン900は、仮想キ
ーボード・コントローラ206が発生原因となったSM
I割込みを処理するルーチンである。その種のSMI割
込みが発生するのは、例えば、接続されている外部キー
ボードが送出したデータを受信したとき、外部キーボー
ドへの送信するための送信バッファが空になったとき、
種々のエラー状態が発生したとき、等々である。ステッ
プ902へ進んだならば、仮想キーボード・コントロー
ラ206関連SMIの発生原因を判定し、それには発生
原因を表すビットを含んでいるKCSTATレジスタ2
96の読出しを行う。
【0178】ステップ904へ進んだならば、その仮想
キーボード・コントローラ206関連SMIの発生原因
が、送信エラー、送信タイムアウト、受信タイムアウト
のいずれかであるか否かを判定する。これらの状態は、
KCSTATレジスタ296のKCSTAT[6:5]
ビットに反映されている。これら状態のいずれかが発生
原因であったならば、特に対処するための動作を実行す
ることはない。制御の流れはステップ904からステッ
プ906へ進み、そこでは、仮想キーボード・コントロ
ーラ206の受信バッファがフル状態であるか否かを判
定し、この状態はRBF信号(KCSTAT[0])に
反映されている。もしそうであったならば、外部キーボ
ード157または159から送信されたスキャン・コー
ドを仮想キーボード・コントローラ206が受信してい
るのである。
【0179】この、受信バッファ・フル事象が発生して
いたならば、制御の流れはステップ906からステップ
908へ進み、そこでは、KCDATレジスタ298の
読出しが行われ、これは、仮想キーボード・コントロー
ラ206が受信したスキャン・コードを読込むというこ
とである。続いてステップ910において、KCDAT
レジスタ298から読出した内容についての分類表に従
って制御の流れは分岐する。読出したスキャン・コード
が「0AAh」であったならば、それはリセットを経た
ことを表しており(RESET PASSED)、この
場合には制御の流れはステップ912へ進む。リセット
を経たことを表すこのリセット・パスト・コードは、リ
セット・スキャン・コード(これは図36のステップ1
020で送出される)に対する肯定応答として送出され
るものである。この応答は、後に図41〜図44に関連
して説明するように、単に廃棄する。従っていかなる動
作も実行しない。
【0180】読出したそのスキャン・コードが「0FA
h」であったならば、それはキャラクタを受け取ったこ
とに対する肯定応答(ACK)であり、この場合には制
御の流れはステップ910からステップ914へ進む。
そして、肯定応答を発生させるようなコマンドを前もっ
て送信していなかったならば、制御の流れはステップ9
16へ進み、そこでその肯定応答を廃棄する。一方、キ
ーボード・コントローラ割込みルーチン900が、接続
されているキーボード157または159へ、肯定応答
を必要とするスキャン・コードを前もって送信していた
ために、仮想キーボード・コントローラ206が応答を
受け取る手はずになっていたならば、制御の流れはステ
ップ914からステップ918へ進み、そこでは、次コ
マンド(もしあれば)を仮想キーボード・コントローラ
206へ送出する。これは、システム管理モード212
のファームウェアの中のキーボード・コントローラ送信
バッファからスキャン・コード(もしあれば)を読出し
て、KDATレジスタ298を介して仮想キーボード・
コントローラ206へ書込むことによって行う。この
後、その書込まれたスキャン・コードが、接続されてい
るキーボード157または159へ送信される。
【0181】また、キーボードから受信したそのスキャ
ン・コードが「0E1h」であったならば、それはブレ
ーク・スキャン・コード(BREAK、KICKED
OFF)に対応したものであり、従って、これは遠隔コ
ンソール・モードをキャンセルする特別の「ホット・キ
ー」である。このとき、ユーザ端末がモデム149を介
して外部に接続されていて遠隔コンソール・モードで動
作しているならば、装着されているキーボード157ま
たは159を、物理キーボード・コントローラである8
042型キーボード・コントローラ156にではなく、
仮想キーボード・コントローラ206の方に接続する。
ただし、ユーザ端末においてこの特別のキーを押下する
ことで、システム管理モード212のファームウェア
に、モデム149のリンクを切断させ、遠隔コンソール
・モードをキャンセルすることができ、続いて、キーボ
ード157または159を実際のキーボード・コントロ
ーラである8042型キーボード・コントローラ156
に接続させて、ローカル操作を再び可能にすることがで
きる。制御の流れは、以上のステップ912、916、
918、及び920からステップ922へ進み、また、
読出したキャラクタが以上のいずれとも異なっていた場
合(OTHER)には、ステップ910からステップ9
22へ進む。ステップ922ではスキャン・コードの送
信が完了したことを確認する。これは、KCSTATレ
ジスタ296のKCSTAT[3]ビットに反映されて
おり、このビットはTRANSMITCOMPLETE
信号をなすものである。制御の流れはステップ930へ
進み、そこでこのルーチンからIRC HANDLER
ルーチン800へリターンする。
【0182】図31〜図33についての以上の説明はシ
ステム管理モード212のファームウェアの動作の全体
像を示したものである。キーボード157または159
のプラグを抜き差しすることでIRC170に対する着
脱を行うときには、そのキーボードが仮想キーボード・
コントローラ206によって適切に初期設定され、その
初期設定が完了した後に8042型キーボード・コント
ローラ156に接続される。以下に図34〜図36を参
照して、実際の初期設定のシーケンスについて説明す
る。
【0183】キーボードのプラグをまだ差し込んでおら
ず、IRC170に接続していないときには、仮想キー
ボード204が8042型キーボード・コントローラ1
56と通信しており、この仮想キーボード204が適切
な応答の送出(これによってブート処理が中断されるの
を防止している)と、8042型キーボード・コントロ
ーラ156によって初期設定されるキーボードの状態の
追跡とを行っている。そして、物理キーボード157ま
たは159がIRC170に接続されたときには、その
新たに装着されたキーボード157または159を仮想
キーボード・コントローラ206がプログラムし、これ
は、システム管理モード212のファームウェアからス
キャン・コードを書込むことによって行う。更に、シス
テム管理モード212のファームウェアは、仮想キーボ
ード204の状態を実際に追跡しており、仮想キーボー
ド204を通して送出すべき適切な応答を判断してい
る。IRC170内の仮想キーボード204は、これら
適切なスキャン・コードを通過させるための導通路を形
成している。
【0184】システム管理モード212を使用すること
によって、ハードウェアであるASICをIRC170
として使用することができる一方で、システム管理モー
ド212のファームウェアのうちのソフトウェアを変更
できるという融通性が得られる。ただし、独立したマイ
クロコントローラである独立したASICであって、シ
ステム管理モード212のファームウェアと仮想キーボ
ード204の両方と、仮想キーボード・コントローラ2
06と、存在検出ロジックとを含めた、全てのロジック
を実施できるようなものを構成することも可能であり、
そのようにしても、本発明にかかるホット・プラグ機能
を損ねることはない。
【0185】次に図34〜図36について説明すると、
それらの図は、HOTPLUG HANDLERルーチ
ン950を示したものである。このルーチンは、キーボ
ード割込みルーチン850がステップ856(図32参
照)でコールするルーチンであり、キーボード157ま
たは159のプラグが抜き差しされてIRC170に対
して着脱されるという事象が発生した場合に、それに対
して応答するルーチンである。このルーチン950は最
初にステップ951において、サーバが現在、遠隔コン
ソール・モードにあるか否かを判定する。もしそうであ
ったならば、キーボード157または159(もし接続
されていれば)は8042型キーボード・コントローラ
156に結合されていてはならず、仮想キーボード・コ
ントローラ206を介してそのキーボードのLEDを点
滅させる(図41参照)ようにすべきである。従って、
ステップ951で、遠隔コンソール・モードにあったな
らば、制御の流れはステップ952へ進み、そこでLE
Dを点滅させて、その装着されているキーボードをイネ
ーブルし(図41参照)、続いてルーチン950はステ
ップ953でリターンする。一方、ステップ951で、
遠隔コンソール・モードではなかったならば、制御の流
れはステップ954へ進む。
【0186】ステップ954では、ルーチン950は、
二次キーボード159(フローチャートにはKBD1で
表した)の状態が変化したか否かを判定する。図11を
参照して説明したように、この判定は、KBD CHA
NGE[1]信号の状態を反映しているKSTATレジ
スタ290のKSTAT[9]ビットを調べることによ
って行う。その信号が「真」状態であれば、それは、二
次キーボード159の状態がプラグ状態とアンプラグ状
態との間で変化したことを示している。その状態が変化
していなかったならば、制御の流れはステップ955へ
進み、なぜならば、この場合、そのSMIの発生原因は
一次キーボード157(フローチャートにはKBD0で
表した)の状態の変化以外にはあり得ないからである。
【0187】ステップ955では、いかなる事情で一次
キーボード157がそのSMIを発生したのかを判定す
るために、一次キーボード157の接続状態を調べる。
これは、KSTATレジスタ290のKSTAT[1
2]ビットを読出すことによって行い、このビットは、
KBD PRESENT[0]信号を反映しているビッ
トである。このビットが「真」状態であれば、それは、
一次キーボード157のプラグが差し込まれて一次キー
ボード157が安定状態になっていることを示してい
る。この場合には、制御の流れはステップ958へ進
み、ルーチン950は一次キーボード157へ送信する
ために仮想キーボード・コントローラ206のキューの
中に入れられている全てのスキャン・コードをクリアす
る。更に、タイマをセットして、新たに接続された一次
キーボード157から仮想キーボード・コントローラ2
06を介して受信したスキャン・コードを、キーボード
157または159のリセット、自己テスト、及びそれ
に付随するシーケンスの実行中に廃棄するようにする。
続いてステップ960へ進み、SETUP KBD0ル
ーチン1006をコールする。このルーチン1006に
ついては後に図36を参照して説明する。続いてステッ
プ961において、8042型キーボード・コントロー
ラ156を一次キーボード157に接続する。続いて、
制御の流れはステップ962へ進み、そこでコール元の
ルーチンへリターンする。
【0188】一方、ステップ955において、一次キー
ボード157が有効接続状態にはないと判定されたなら
ば、制御の流れはステップ964へ進み、そこでは、二
次キーボード159が有効接続状態にあるか否かを判定
する。二次キーボード159の接続状態を反映している
KSTATレジスタ290を調べて、二次キーボード1
59が有効接続状態にはないと判定されたならば、キー
ボード157と159のどちらもプラグが差し込まれて
おらず、IRC170に接続されていないのであり、そ
のため、仮想キーボード204は、8042型キーボー
ド・コントローラ156との間の通信を引き受け、80
42型キーボード・コントローラ156の追跡を行う必
要がある。そのため、制御の流れはステップ966へ進
み、そこでは、8042型キーボード・コントローラ1
56と仮想キーボード204とを接続する。この接続
は、KCFGレジスタ294への書込みを行ってKBD
SEL[1]信号を「真」状態にすることで、仮想キ
ーボード204をイネーブルすることによって行う。続
いて制御の流れはステップ968へ進み、そこでは、ル
ーチン940が、コール元のルーチンであるキーボード
割込みルーチン850へリターンする。
【0189】一方、ステップ964において、二次キー
ボード159が有効接続状態にあると判定されたなら
ば、制御の流れはそこからステップ970へ進む。そし
て、既に選択されている物理キーボードが二次キーボー
ド159であるならば(KCFG[6])、これ以上実
行すべきことは何もなく、そのため、制御の流れはステ
ップ968へ進み、そこでリターンを実行する。一方、
ステップ970において、現在アクティブ状態にあるキ
ーボードが二次キーボード159でなく一次キーボード
157であると判定されたならば、それは、キーボード
157及び159がIRC170に物理的に接続されて
いたが、そのうちの一次キーボード157が取り外され
たところであることを意味している。従って、二次キー
ボード159を8042型キーボード・コントローラ1
56に直接に接続する用意ができているはずである。そ
のため制御の流れはステップ972へ進み、そこでは仮
想キーボード・コントローラ206のデータをクリア
し、これはステップ958で実行する場合と同様の手順
で行う。続いて制御の流れはステップ974へ進み、そ
こではSETUP KBD1ルーチン1006をコール
し、このルーチン1006については後に図36を参照
して説明する。続いてステップ975において、二次キ
ーボード159と8042型キーボード・コントローラ
156とを接続する。これによって二次キーボード15
9は物理的に8042型キーボード・コントローラ15
6に接続された状態になり、この時点でアクティブなキ
ーボードになる。続いて制御の流れはステップ976へ
進み、そこでは、コール元のルーチンであるキーボード
割込みルーチン850へのリターンを実行する。
【0190】一方、ステップ954において、二次キー
ボード159の状態が変化していたならば、制御の流れ
はそこから図35のステップ978へ進む。図35に示
したロジックは、図34に示したロジックと同様のもの
であり、唯一の相違点は、図35のロジックでは、その
状態がプラグ状態とアンプラグ状態との間で変化したの
が、一次キーボード157ではなく二次キーボード15
9であるという点だけである。ステップ978におい
て、二次キーボード159が有効接続状態にあったなら
ば(KSTAT[13])、発生した事象は、この二次
キーボード159のプラグが差し込まれて接続されたと
いう事象であったことになる。尚、一次キーボード15
7と二次キーボード159との、どちらのプラグが差し
込まれたときにも、IRC170は適当な長さの安定化
時間を確保する。そのため、2つのKBD PRESE
NT信号(KSTAT[13:12])がハイ状態にな
ったときには、それは、キーボード157と159と
が、単にプラグが差し込まれただけでなく安定状態にな
ったことを示すものである。
【0191】ステップ978からステップ982へ進ん
だ場合には、そこで、一次キーボード157が有効接続
状態にあるか否かを判定する。もしそうであったなら
ば、制御の流れはステップ984へ進み、そこでは、こ
のルーチンからコール元のルーチンへリターンする。コ
ールものとルーチンへリターンする理由は、この場合に
は一次キーボード157は既に接続状態にあるからであ
る。尚、二次キーボード159は、一次キーボード15
7が存在しないときにだけ8042型キーボード・コン
トローラ156に接続される。
【0192】一方、ステップ982において、一次キー
ボード157が存在していなかったならば、制御の流れ
はそこからステップ986へ進み、そこでは、ステップ
958及び952に関連して説明したようにして仮想キ
ーボード・コントローラ206をクリアする。続いて制
御の流れはステップ988へ進み、そこではSETUP
KBD1ルーチン1006をコールする。このルーチ
ンについては後に図36を参照して説明する。続いてス
テップ989において、8042型キーボード・コント
ローラ156と二次キーボード159とを接続する。続
いて制御の流れはステップ990でコール元のルーチン
へリターンする。
【0193】一方、ステップ978において、二次キー
ボード159が存在していなかったならば、制御の流れ
はそこからステップ992へ進む。制御の流れがこの経
路をたどるのは、SMIを発生させた事象が、二次キー
ボード159のプラグの引き抜きであった場合である。
ステップ992では、一次キーボード157が存在して
いるか否かを判定する。もしそうであったならば、一次
キーボード157と8042型キーボード・コントロー
ラ156とが接続された状態を維持したまま、制御の流
れはステップ994へ進み、そこでコール元のルーチン
へのリターンを実行する。
【0194】一方、ステップ992において、一次キー
ボード157が存在していなかったならば、それはキー
ボード157と159とのいずれも接続されていないこ
とを意味しており、この場合は8042型キーボード・
コントローラ156と仮想キーボード204とを接続す
る必要がある。従って制御の流れはステップ992から
ステップ996へ進み、そこでステップ958で実行し
たのと同様にして仮想キーボード・コントローラ206
のデータをクリアした後に、ステップ998へ進む。ス
テップ998では、8042型キーボード・コントロー
ラ156と仮想キーボード204とを接続する。ここで
も、それらの接続は、KCFGレジスタ294のKCF
G[7]ビットをイネーブルして仮想キーボード204
をイネーブルすることによって行う。続いて制御の流れ
はステップ999へ進み、そこでコール元のルーチンへ
のリターンを実行する。
【0195】次に図36について説明する。同図に示し
たのは、ホット・プラグ初期化ルーチンであるHOTP
LUG INTルーチン1000のフローチャートであ
る。このルーチン1000は、包括的ルーチンであるシ
ステム管理モード初期化ルーチンからコールされる。更
に同図には、一次キーボードないし二次キーボードをセ
ットアップするためのSETUP KBDxルーチン1
006へのエントリ・ポイントも併せて示してあり、こ
のルーチン1006は図34のステップ960及び97
4と、図35のステップ988とからコールされるルー
チンである。ホット・プラグ初期化ルーチン1000
は、一次キーボード157の存在の有無と二次キーボー
ド159の存在の有無とをこの順番で調べ、もし存在し
ていたならば、そのキーボード157ないし159を仮
想キーボード・コントローラ206に接続し、そのキー
ボードにリセットをかけ、そしてそのキーボードを80
42型キーボード・コントローラ156に結合する。一
方、キーボード157と159のどちらも存在していな
かったならば、8042型キーボード・コントローラ1
56と仮想キーボード204とを接続してシステムのブ
ート処理を実行できるようにする。
【0196】先ずステップ1002において、ホット・
プラグ初期化ルーチン1000はKSTATレジスタ2
90からキーボード状態を読出し、これはIRC170
からI/O読出し動作を実行することによって行う。続
いてステップ1004へ進み、一次キーボード157が
存在していた(KSTAT[12])が「真」状態であ
った)ならば、一次キーボード157と8042型キー
ボード・コントローラ156とを接続すべきであり、そ
のため、一次/二次キーボード・セットアップ・ルーチ
ン1006へジャンプして一次キーボード157とシス
テムとを結合する。一方、ステップ1004において一
次キーボード157が存在していなかったならば、制御
の流れはステップ1008へ進む。ステップ1008で
は、二次キーボード159が存在している(KSTAT
[13])が「真」状態である)か否かを調べる。二次
キーボード159が存在していたならば、キーボード・
セットアップ・ルーチン1006へ入って二次キーボー
ド159を、接続されたキーボードとなるようにセット
アップする。
【0197】ステップ1004では一次キーボード15
7が存在していないと判定され、ステップ1008では
二次キーボード159が存在していないと判定された場
合には、制御の流れはステップ1010へ進む。このホ
ット・プラグ初期化ルーチン1000は、このステップ
1010において、KCFGレジスタ294への書込み
を行う(KCFG[7]を「真」状態にセットする)こ
とで、8042型キーボード・コントローラ156と仮
想キーボード204とを接続する。続いて制御の流れは
ステップ1012へ進み、ルーチン1000はこのステ
ップ1012において、包括的システム管理モード21
2初期化を実行しているコール元のルーチンであるシス
テム管理モード212のルーチンへリターンする。
【0198】次に、一次/二次キーボード設定ルーチン
1006について説明する。このルーチン1006で
は、最初に8042型キーボード・コントローラ156
と仮想キーボード204とを接続すると共に、選択され
ているキーボード157または159と仮想キーボード
・コントローラ206とを接続する。更にこのルーチン
1006は、選択されているキーボード157または1
59に初期設定を施した上で、そのキーボードと、80
42型キーボード・コントローラ156と接続する。こ
れからSETUP KBDルーチン1006について詳
細に説明するが、これを理解するためには、先に、パワ
ー・オン・リセット・コマンドに対する標準的PC互換
キーボードの応答について理解しておくのがよいと思わ
れるので、それをここで説明しておく。キーボードは、
キーボード・コントローラからリセット・コマンド
(「0FFh」)を受信したときには、内部自己テスト
を実行する。この場合、キーボードは先ず、そのリセッ
ト・コマンドに対してACK(肯定応答)をもって応答
する。キーボード・コントローラは、その応答に対する
応答として、キーボードに接続しているデータ線及びク
ロック線をハイ・レベルにし、この状態を少なくとも5
00マイクロ秒に亙って維持しなければならない。その
後、キーボードはみずからに組み込まれている基本確認
テストを実行する。基本確認テストが完了したならば、
キーボードは「0AAh」(テスト合格の場合)か、
「0FCh」(キーボード・エラー)を、キーボード・
コントローラへ応答として返す。
【0199】従って、システム管理モード212のファ
ームウェアがキーボードの初期設定を実行するときに
は、そのファームウェアのうちのソフトウェアが、応答
として返ってきたACKを「もみ消し」、即ち廃棄し
て、更に、500マイクロ秒に亙って結果コードが応答
として返されてくるのを待ち、そして、その結果コード
を廃棄する。システム管理モード212のファームウェ
アは、応答が返されてくるのを漫然と待っているわけに
は行かないため、SETUP KBDルーチン1006
は、実際に待つ替わりに、SMI TIMERルーチン
1200(図41〜図44参照)に対応したフラグをセ
ットし、それによって、新たに装着されたキーボード1
57または159へリセット・コマンドを送出した後
に、最初のリセット・コマンドに対する応答と、それに
続く初期化完了を表す応答とを「もみ消す」べきことを
表示する。以上は全て、SETUP KBDルーチン1
006によって処理される。
【0200】以上のタイマ関係の様々なルーチンでは更
に、リセット・シーケンスの送出が完了したならば、新
たに装着されたキーボードへ初期設定シーケンスを送出
する。初期設定シーケンスは、新たに装着されたキーボ
ード157または159のリピート・レート及びモード
を、仮想キーボードのリピート・レート及びモードと一
致するように設定できるようにするシーケンスである。
これらについては後に図41〜図44を参照して具体的
に説明する。
【0201】ルーチン1006では先ず最初にステップ
1014において8042型キーボード・コントローラ
156と仮想キーボード204とを接続し、この接続は
KCFGレジスタ294への書込みによって行う(KC
FG[7]を「真」状態に設定する)。続いてステップ
1016へ進み、IRC170のコンフィギュレーショ
ンを実行する。このコンフィギュレーションにおいて
は、ホット・プラグ機能をイネーブルし、内部キーボー
ド・マルチプレクサ214をイネーブルし、送信スヌー
プ機能をディスエーブルする。これらはいずれもKCF
Gレジスタ294への書込みによって行う(KCFG
[3:1]の値をそれら状態に対応した値に設定す
る)。続いてステップ1018へ進み、選択されている
キーボード157または159と仮想キーボード・コン
トローラ206とを接続し、この接続はKCCFGレジ
スタ299への書込みによって行う(KCCFG[7]
を「真」状態にセットすることで仮想キーボード・コン
トローラ206をイネーブルすると共に、KCCFG
[6]の値をそのキーボードに対応した値に設定す
る)。続いてステップ1020へ進み、選択されている
キーボード157または159がまだリセットされてい
なければ、リセット・コマンドに対応したスキャン・コ
ードをバッファに投入することで、そのスキャン・コー
ドが、仮想キーボード・コントローラ206を介して、
選択されたキーボード157または159に書込まれる
ようにする。また、対応するフラグをセットすること
で、新たに装着されたキーボード157または159が
リセット・シーケンスを完了するまでは、SMI TIM
ERルーチン1200が仮想キーボード・コントローラ
206から送られてくるスキャン・コードを廃棄するよ
うに設定し、また、そのキーボードがリセット・シーケ
ンスを完了した後にはSMI TIMERルーチン12
00がそのキーボードの初期設定を実行するようにす
る。このキーボードの初期設定によって、そのキーボー
ドの表示灯及びリピート・レートが設定される。続いて
ステップ1022では、仮想キーボード・コントローラ
206の接続を断つ。続いてステップ1024進み、そ
こでは、このSETUP KBDルーチン1006から
(従って、ホット・プラグ初期化ルーチン1000か
ら)コール元のルーチンへリターンする。
【0202】次に図37〜図40について説明する。そ
れらの図に示したのは、キーボード・コマンド処理ルー
チン1100である。このルーチン1100は、図32
のステップ878において、仮想キーボード204から
の割込みが、この仮想キーボード204の受信バッファ
がフル状態にあることを示していた場合にコールされる
ルーチンである。従って、このキーボード・コマンド処
理ルーチン1100へ入るのは、8042型キーボード
・コントローラ156が仮想キーボード204へスキャ
ン・コードを送信したときである。送信されたスキャン
・コードは、もし有効なものであれば、1つまたは2つ
のスキャン・コードから成るコマンド・シーケンスが1
つまたは幾つか含んでおり、それらコマンド・シーケン
スに対して仮想キーボード204は応答する必要があ
る。システムのセットアップの実行中に応答がなかった
ときにPOSTコードにスタートアップ失敗を表示させ
るのは、これらコマンド・シーケンスである。仮想キー
ボード204は、これらコマンド・シーケンスに対する
応答を8042型キーボード・コントローラ156から
送出させることで、キーボード157と159のいずれ
も装着されていなくても、システムSがブート処理を実
行できるようにし、しかもそうするのに、システムのP
OSTコードを変更する必要もなければ、8042型キ
ーボード・コントローラ156に変更を加える必要もな
い。
【0203】先ずステップ1102において、キーボー
ド・コマンド処理ルーチン1100はKDATレジスタ
292からの読出しによって、仮想キーボード204か
ら送られてきたデータを入力する。続いてステップ11
04へ進み、仮想キーボード204がイネーブルされて
いるか否か、即ち、仮想キーボード204が8042型
キーボード・コントローラ156に接続されていてアク
ティブ・モードである応答モードになっているか否かを
判定する。もしそうであったならば、仮想キーボード2
04は8042型キーボード・コントローラ156に応
答を返さなければならない。一方、そうでなかったなら
ば、実際のキーボード157または159が8042型
キーボード・コントローラ156に接続されているので
あり、従って、受信したスキャン・コードに対して応答
してはならず、受信したスキャン・コードを単にスヌー
プすることで、実際に接続されているキーボードの状態
を反映させるように、関連した状態変数に変更を加える
ようにし、或いは、モデム149を介した遠隔コンソー
ルを介したアクセスを提供することから脱するかも知れ
ない。これについては後に図39を参照して説明する
が、この場合、仮想キーボード204がコマンド・コー
ドに対してアクティブに応答を返すように設定されてい
なければ、制御の流れはステップ1134へ進む。
【0204】一方、仮想キーボード204がアクティブ
・モードに設定されていたならば、ステップ1106へ
進み、そこでは、ぞのバイトが、8042型キーボード
・コントローラ156から送出された2バイトから成る
1つのコマンド・シーケンスのうちの後バイトか否かを
判定する。もしそうであったならば、制御の流れは後述
する図40のステップ1134へ進む。ステップ111
8では、そのスキャン・コードが、1つの2バイト・コ
ードの2個のバイトのうちの後バイトであることを示す
フラグをセットし、これについては後に説明する。
【0205】もしそのバイトが、8042型キーボード
・コントローラ156から受信した1つのスキャン・コ
ードの中の2個のバイトのうちの後バイトではなかった
ならば、制御の流れはステップ1108へ進み、そこで
は、8042型キーボード・コントローラ156から受
信したスキャン・コードが「0EDh」より大きいか否
かを判定する。もしそうであったならば、それは、80
42型キーボード・コントローラ156から送信された
有効コマンドである。一方、そうでなかったならば、そ
れは無効コマンドであり、制御の流れはステップ111
0へ進み、そこでは、スキャン・コード再送信要求を、
仮想キーボード204を介して8042型キーボード・
コントローラ156へ送出する。
【0206】ここで、仮想キーボード204を介して8
042型キーボード・コントローラ156へスキャン・
コードを送出するための機構について、先に説明してお
くことにする。先ず、システム管理モード212のソフ
トウェアによって構成されたバッファ即ちキューに、送
出すべきスキャン・コードをロードする。続いて、先に
図32のステップ878に関して言及したように、先行
するスキャン・コードの送信が完了したことがステップ
874において判定されたならば、キーボード・コマン
ド・コードをそのバッファから抜き出してKDATレジ
スタ292へ書込むことで、そのキーボード・コマンド
・コードを仮想キーボード204へ送出する。従って、
仮想キーボード・コントローラ206が実行する送信動
作が完了する度にシステム管理モード212のファーム
ウェアに対して割込みがかかるようにしてあり、それに
よって、次スキャン・コードをキーボード・バッファか
ら仮想キーボード204を介して8042型キーボード
・コントローラ156へ送出させるようにしている。制
御の流れはステップ1110からステップ1112へ進
み、そこで、このキーボード・コマンド処理ルーチン1
100からコール元のルーチンへリターンする。
【0207】尚、ステップ878でコールされるSEN
KBD IRCルーチンについて、ごく簡単に述べ
ておくと、このルーチンは、システムが遠隔コンソール
・モードにあるときに併せてコールされるルーチンであ
る。モデム149から入力してきたデータを8042型
キーボード・コントローラ156を介してシステムSへ
転送する際には、そのデータは、最初にシステム管理モ
ード212のファームウェア内のルーチンによって処理
されてスキャン・コードの形に変換され、その後に、ス
テップ878でコールされたSEND KBD IRC
ルーチンを介してそのスキャン・コードの形で送出され
る。従ってこのルーチンは、接続されているキーボード
157または159から発生したスキャン・コードを送
信することもでき、また、モデム149を介して入力し
てきたデータを変換して得たスキャン・コードを送信す
ることもできる。このように、シームレスでトランスペ
アレントな遠隔インタフェースがシステムSに備えられ
ているため、システムSから見れば、そのキーボード・
データが、モデム149を介して入力してきたものでは
なく、キーボードから送出されたものであるように見え
る。
【0208】一方、ステップ1108において、そのデ
ータが、8042型キーボード・コントローラ156か
ら送出された有効コマンドであると判定された場合に
は、制御の流れはステップ1114へ進み、このステッ
プは基本的には分類表の役割を果たすものである。80
42型キーボード・コントローラ156から送出されて
仮想キーボード204のKDATレジスタ292を介し
て入力してきたデータに応じて、即ちそのキーボード・
コマンドの種類に応じて制御の流れは分岐する。ここに
開示している実施の形態では、全ての種類のキーボード
・コマンドを利用してはいないが、それは、「キーボー
ドレス」システムのシームレスな動作のためには全ての
種類は必要ないからである。例えば、標準的キーボード
であれば、個々のキーのリピート・レートは、「0FB
h」〜「0FDh」のスキャン・コード・シーケンスに
よって設定される。これらは、ここに開示している実施
の形態では採用していないが。実際のキーボードを更に
よく模倣したいのであれば、これらを採用するようにし
てもよい。重要な点は、8042型キーボード・コント
ローラ156がコマンドを送出したときに、少なくとも
仮想キーボード204が適切な応答を返すようにしてあ
るということである。
【0209】そのコマンドが、エコー(ECHO)、N
OP、キーボードID獲得要求(GET ID)、AC
K、またはコマンド再送信要求(RESEND)のいず
れかであった場合には、制御の流れはステップ1116
へ進み、そこでは、そのコマンドに対応した応答を、仮
想キーボード204を介して8042型キーボード・コ
ントローラ156へ送信するためにバッファの中に入れ
る。尚、それらコマンドがいかなるものであるかは当業
者には周知のことである。
【0210】一方、ステップ1114においてそのコマ
ンドが、個別キー設定要求(SETINDIVIDUA
L KEYS)、状態設定要求(SET STATU
S)、リピート・レート設定要求(SET REP.R
ATE)、またはモード設定要求(SET MODE)
のいずれかであった場合には、それらは2バイト・シー
ケンスであるためステップ1118へ進み、2バイト応
答フラグをセットする。更に、その2バイト・コマンド
を形成している2個のコードのうちの後コードを処理す
る補助ルーチンをコールするためのエントリ・ポイント
をセーブすると共に、ACKを、仮想キーボード204
を介して8042型キーボード・コントローラ156へ
送信するためのバッファの中に入れる。
【0211】また、ステップ1114において、そのコ
マンドがリセット・コマンド(RESET)であった場
合には、制御の流れはステップ1120へ進み、そこで
は、仮想キーボード204への送出バッファをクリアし
た上で状態設定を行う。続いてステップ1122へ進
み、そこでは適切な応答(この場合はACK)を、仮想
キーボード204を介して8042型キーボード・コン
トローラ156へ送信する。
【0212】また、ステップ1114において、そのコ
マンドがイネーブル・コマンド(ENABLE)であっ
た場合には、制御の流れはステップ1124へ進み、そ
こでは、キーボードがディスエーブルされていないこと
を示すように状態をセットする。また、ステップ111
4において、そのコマンドがディスエーブル・コマンド
(DISABLE)であった場合には、制御の流れは、
ステップ1114から図38のステップ1126へ進
み、そこでは、キーボードがディスエーブルされている
ことを示すように状態をセットする。このようにしてセ
ットされたフラグは、不図示のSEND KBE IR
Cルーチンにおいて、スキャン・コードを8042型キ
ーボード・コントローラ156へ送出すべきか否かを判
定するために参照される。キーボードがディスエーブル
されている場合には、スキャン・コードを送出すべきで
はなく、なぜならば、そのキーボードはディスエーブル
されているからである。
【0213】また、ステップ1114において、そのコ
マンドが、デフォールト・コマンド(DEFAULT)
と、全設定コマンド(SET ALL)とのいずれかで
あった場合には、制御の流れはステップ1114からス
テップ1128へ進み、そこでは、仮想キーボード20
4への送出バッファをクリアした上でACKを送出す
る。更に、ステップ1126及び1124からも、制御
の流れはこのステップ1128へ進む。続いて制御の流
れはステップ1130へ進んでリターンする。制御の流
れがステップ1116、1118、及び1122へ進ん
でいた場合には、それらステップからステップ1132
へ進んでリターンする。
【0214】次に図39について説明する。前述のステ
ップ1106において、そのバイトが、8042型キー
ボード・コントローラ156から受信した2バイト・シ
ーケンスを形成している2個のバイトのうちの後バイト
であることを示すフラグがセットされていたならば、制
御の流れはそこからステップ1134へ進む。図39の
ルーチンでは最初にステップ1134において、スキャ
ン・コードの再送信をすべきか否かを判定し、それをす
べきであるのは、そのシーケンスの後バイトであるキャ
ラクタがスキャン・コード再送信要求であった場合であ
る。もしそうであったならば、制御の流れはステップ1
136へ進み、そこでは、仮想キーボード204を介し
て8042型キーボード・コントローラ156へ送信し
た最後のスキャン・コードを再び送出用バッファへ入れ
る。続いて制御の流れはステップ1138へ進み、そこ
でこのルーチンからリターンする。
【0215】一方、ステップ1134において、それ
が、スキャン・コード再送信要求ではなかったならば、
制御の流れはステップ1140へ進み、そこでは、後バ
イト・フラグをリセットする。これによって、次回にこ
のキーボード・コマンド処理ルーチン1100へ入って
きたときには、制御の流れが図39への分岐路をたどら
ないようにする。続いて制御の流れはステップ1142
へ進み、そこでは、受信したコマンドが有効コマンドか
否かを判定する。その後バイトのスキャン・コードが
「0EDh」より大きければ有効コマンドである。もし
そうであったならば、その後バイトのスキャン・コード
は、実は、1つの2バイト・シーケンスを形成している
2個のバイト(スキャン・コード)のうちの後スキャン
・コードではないことを意味しており、ただし、有効コ
マンドとして取り扱わねばならないため、制御の流れは
図37のステップ1114へ進み、このコマンドの処理
を実行する。
【0216】一方、ステップ1142において、それが
有効コマンドでなかったならば、そのスキャン・コード
は、1つの2バイト・シーケンスを形成している2個の
スキャン・コードのうちの後スキャン・コードである。
この場合には、ステップ1144で分類表との照合を実
行し、そのスキャン・コードが、リピート・レート設定
要求シーケンス(SET REPEAT RATE)の
後スキャン・コードであった場合には、制御の流れはス
テップ1146へ進む。先に説明した図37のステップ
1118の場合と同様に、このステップ1146では、
この補助ルーチンへのエントリ・ポイントをセットし、
それを分類表の一部として利用して、該当する補助スキ
ャン・コード・ルーチンへの分岐路をたどるようにす
る。ステップ1146では、この後スキャン・コードを
リピート・レートとしてセーブし、新たに装着されたキ
ーボード157または159を、適切なリピート・レー
トとなるように適切にコンフィギュレーションできるよ
うにする。同様に、そのシーケンスが状態設定要求シー
ケンス(SET STATUS)であった場合には、制
御の流れはステップ1148へ進み、そこでは、同様の
目的でその状態をセーブする。
【0217】また、そのシーケンスが、キー設定要求シ
ーケンス(SET SOME KEY)であった場合に
は、制御の流れはステップ1150へ進み、そこでは仮
想キーボード204への送出バッファをクリアする。ス
テップ1146、1148、及び1150からは、制御
の流れはステップ1152へ進み、そこでは、仮想キー
ボード204を介してACKを送出し(この場合も、仮
想キーボード204のTRANSMITCOMPLET
E信号が「真」状態になったときに送信を実行するため
のバッファに、該当するスキャン・コードを入れるよう
にする)、続いて制御の流れはステップ1154へ進ん
でリターンする。
【0218】また、その2バイト・シーケンスが、モー
ド設定要求シーケンス(SET MODE)であった場
合には、制御の流れは,ステップ1144からステップ
1156へ進み、そして更に、その後バイトの値が
「0」であったならば、制御の流れはそこからステップ
1158へ進む。ステップ1158では、ACKを送出
すると共に、該当するキーボード・モード(好ましくは
第2モード)を送出し、これらの送出も仮想キーボード
204への送出バッファを介して行う。続いて制御の流
れはステップ1154へ進んでリターンする。一方、ス
テップ1156において、その後バイトの値が「0」で
なかったならば、制御の流れはステップ1160へ進
み、そこで、その後バイトの値を「3」と比較する。そ
の値が「3」より大きかったならば、その後バイトは有
効な後バイトである。この場合には、制御の流れはステ
ップ1162へ進み、そこでは、仮想キーボード204
を介して8042型キーボード・コントローラ156へ
再送信要求コマンドを送出する。一方、ステップ116
0において、その後バイトの値が「3」以下であったな
らば、制御の流れはステップ1164へ進み、そこでA
CKを送出する。それらステップ1158、1162、
及び1164からは、制御の流れはステップ1154へ
進んでリターンする。
【0219】次に図40について説明する。同図に示し
たのは、スキャン・コードのスヌープ動作を取り扱うた
めのルーチンである。前述のステップ1104におい
て、仮想キーボード204がアクティブに応答を返して
はならないと判定された場合には(即ち、仮想キーボー
ド204が先に説明したMASTERモードになかった
ならば)制御の流れはステップ1166へ進み、そこで
は、前述の後スキャン・コードが、スヌープによって検
出した2個のスキャン・コードのうちの後スキャン・コ
ードであるか否かを判定する(これは、図37のステッ
プ1106と同様である)。もしそうでなかったなら
ば、制御の流れはステップ1168へ進む。この場合に
は、スヌープによってスキャン・コードが検出された原
因は、状態の変更にある。尚、持続性のキーボード状態
を変更するものでないスキャン・コードは、アクティブ
に処理する必要はない。従って、ステップ1168で
は、スヌープによって検出されたスキャン・コードを分
類表と照合する。そして、そのスキャン・コードが、リ
ピート・レート設定要求(SET REPEAT RA
TE)または状態設定要求(SET STATUS)の
スキャン・コードであった場合には、制御の流れはそこ
からステップ1170へ進む。ステップ1170では、
2バイト・シーケンスの後スキャン・コードであること
を示す後スキャン・コード・フラグをセットする(この
フラグは、ステップ1166で参照される)。これによ
って、そのスキャン・コードが、リピート・レート設定
要求コマンドまたは状態設定要求コマンドのものである
ことが示される。続いて制御の流れはステップ1172
へ進んでリターンする。
【0220】また、そのスキャン・コードが、リセット
・コマンド(RESET)のものであった場合には、制
御の流れはステップ1174へ進み、そこでは、スヌー
プに基づいて設定されていた状態値をクリアし、即ち、
リセットしてデフォールト値に戻す。続いて、制御の流
れはステップ1176へ進み、そこでは、スヌープに基
づいて設定されていたリピート・レート値をそのデフォ
ールト値に設定する。このようにして、システム管理モ
ード212のソフトウェアは、その種々の内部変数を、
装着されているキーボード157または159の種々の
変数と一致させる。この後、制御の流れはステップ11
76からステップ1172へ進んでリターンする。
【0221】また、そのスキャン・コードが、キーボー
ド・ディスエーブル・コマンド(DISABLE KE
YBOARD)またはデフォールト設定コマンド(SE
TDEFAULTS)のものであった場合には、制御の
流れはステップ1176へ進み、そこでは、スヌープに
基づいた設定されていたリピート・レート値をクリア
し、即ちその初期値に設定する。また、そのスキャン・
コードが、以上のいずれとも異なるその他のスキャン・
コード(OTHER)であった場合には、制御の流れは
単にステップ1172へ進み、このルーチンからリター
ンする。
【0222】一方、ステップ1166において、後スキ
ャン・コード・フラグがセットされていたならば、スヌ
ープによって検出されたそのスキャン・コードは、2バ
イト・コマンド・シーケンスを形成している2個のスキ
ャン・コードのうちの後スキャン・コードである。この
場合には、制御の流れはステップ1178へ進み、そこ
では、そのスキャン・コードが、状態関連コマンド・シ
ーケンスの後スキャン・コードであるか否かを判定す
る。もしそうであったならば、制御の流れはステップ1
180へ進み、そこでは、その後スヌープによって検出
されたそのスキャン・コードを状態値を表すものとして
セーブする。一方、ステップ1178において、そのス
キャン・コードが状態関連コマンド・シーケンスの後ス
キャン・コードでなかったならば、それは、リピート・
レート・コマンド・シーケンスの後スキャン・コードで
あることを意味している。この場合には、制御の流れは
ステップ1178からステップ1182へ進み、そこで
は、そのスキャン・コードをリピート・レートを表すも
のとしてセーブする。ステップ1180及びステップ1
182からは、制御の流れはステップ1184へ進み、
そこでは、後スキャン・コード・フラグをリセットし
て、以後の処理においてステップ1166から不適切な
経路へ分岐することがないようにした上で、制御の流れ
はステップ1186へ進んでリターンする。
【0223】従って、キーボード・コマンド処理ルーチ
ン1100は、1バイト・キーボード・コマンド・シー
ケンスと2バイト・キーボード・コマンド・シーケンス
との両方をアクティブに処理し、仮想キーボード204
を介して8042型キーボード・コントローラ156へ
送出すべき適切なスキャン・コードをバッファに投入
し、そして、8042型キーボード・コントローラ15
6とそれに接続されているキーボード・コマンド157
または159との間でやりとりされるコマンドに対して
アクティブに応答すべきでないときには、それらコマン
ドをスヌープする。このようにして、スタートアップ処
理時には、キーボードの存在の有無に関わらず、適切な
応答が8042型キーボード・コントローラ156へ返
され、それによって、CPU50が実行するPOSTコ
ードに変更を加えることなく、ブート処理が正常に実行
されるようにしてある。
【0224】次に図41〜図44について説明する。そ
れらの図に示したのはSMIタイマ・ルーチン1200
であり、このルーチン1200は、遠隔コンソール及び
IRC170に関連した種々のタイマを処理するために
周期的にコールされるルーチンである。このルーチン1
200は2つの点で重要である。第1に、このルーチン
1200は、新たに接続されたキーボード157または
159から仮想キーボード・コントローラ206へ送出
されるスキャン・コードを「もみ消す」処理を担当して
いる。第2に、このルーチン1200は、遠隔コンソー
ル・モードにあるときに、装着されているキーボード1
57または159の表示灯を点滅させる動作を担当して
いる。遠隔コンソール・モードにあるときには、装着さ
れているキーボード157または159は仮想キーボー
ド・コントローラ206に結合されており、一方、80
42型キーボード・コントローラ156は仮想キーボー
ド204に結合されている。これによって、IRC17
0が、モデム149から入力してくるデータを捕捉し、
それをスキャン・コードに変換し、変換したスキャン・
コードを仮想キーボード204を介して8042型キー
ボード・コントローラ156へ送出することができるよ
うにしている。この状態では、物理キーボード157ま
たは159の表示灯は、仮想キーボード・コントローラ
206によって点滅させられている。
【0225】制御の流れはステップ1200からステッ
プ1202へ進み、そこでは、リセット応答スキャン・
コードを仮想キーボード・コントローラ206に「もみ
消させる」ためのタイマがセットされているか否かを判
定する。このタイマは、図36のステップ1022でセ
ットされるものであり、このステップ1022は、新た
に装着された物理キーボード157または159を初期
設定するためのセットアップを実行するステップであっ
た。ステップ1202において、そのタイマがセットさ
れていたならば、制御の流れはステップ1204へ進
み、そこでは、キーもみ消しルーチンであるEATKE
YSルーチン1214をコールし、このルーチン121
4については後に図42を参照して説明する。一方、ス
テップ1202において、そのタイマがセットされてい
なかったならば、制御の流れはステップ1202からス
テップ1206へ進み、また一旦ステップ1204へ進
んだ場合でも、制御の流れはそこからこのステップ12
06へ進む。ステップ1206では、表示灯点滅タイマ
がセットされているか否かを判定する。もしそうであっ
たならば、制御の流れはステップ1208へ進み、そこ
では、表示灯点滅ルーチンであるBLINKLIGHT
Sルーチンをコールする。このルーチンの詳細は図示し
ていないが、装着されているキーボード157または1
59へ、周期的に、仮想キーボード・コントローラ20
6を介して一連のスキャン・コードを送出するルーチン
である。それら一連のスキャン・コードは、表示灯の点
灯と消灯を交互に行うものであり、それによって表示灯
の点滅が行われる。表示灯の点滅は、遠隔コンソールに
よる操作が行われている間、セットされている。
【0226】一方、ステップ1206において、表示灯
点滅タイマがセットされていなかったならば、制御の流
れはステップ1206からステップ1210へ進み、ま
た、一旦ステップ1208へ進んだ場合でも、制御の流
れはそこからこのステップ1210へ進む。ステップ1
210では、その他のタイマの処理を行い、その他のタ
イマには例えば、モデム149に関連した種々のタイマ
や、ビデオ・データをスヌープする動作に関連した種々
のタイマがある。続いて制御の流れはステップ1212
へ進み、そこでリターンを実行し、即ち、大まかにいえ
ば、システム管理モード212がら脱出して、それ以後
の動作を通常のシステム・ソフトウェアに行わせるとい
う意味である。
【0227】次に図42について説明すると、同図に示
したのは、EATKEYSルーチン1214である。先
ずステップ1216において、イート・キー・タイマを
デクリメントし、続いてステップ1218において、イ
ート・キー・タイマ(キーもみ消しタイマ)の値が
「0」になったか否かを、即ち、タイムアウトが発生し
たか否かをを判定する。タイムアウトが発生していなか
ったならば、制御の流れはステップ1220へ進んでリ
ターンする。イート・キー・タイマは、SMIタイマ・
ルーチン1200が次回にコールされたときに再びデク
リメントされる。
【0228】一方、ステップ1218においてタイムア
ウトが発生していたならば、制御の流れはステップ12
22へ進み、そこでは、新たに装着されたキーボード1
57または159へ初期設定シーケンス(モード及びリ
ピート・レートを設定するために実行される)が既に送
出されたか否かを判定する。もし送出されていなかった
ならば、それは、ステップ1022においてイート・キ
ー・タイマが初期化されて以後、初めてこのステップ1
222へ入ったことを意味している。従って、新たに装
着されたキーボード157または159へ、この時点で
初期設定シーケンスを送出しておく必要があり、そのた
め、制御の流れはステップ1222からステップ122
4へ進み、そこでは、キーボード初期設定シーケンス送
出ルーチンSEND KBD INTルーチン1350
(図44)をコールする。続いて、制御の流れはステッ
プ1226へ進み、SMI TIMERルーチン120
0へリターンする。
【0229】SEND KBD INTルーチン135
0は、キャラクタを廃棄するためのイート・キー・タイ
マをリセットするが、ただしここでは、初期設定シーケ
ンスが送出されたことを示すフラグをセットする。従っ
て、新たに装着されたキーボード157または159へ
初期設定シーケンスが送出された後に、再びキーのもみ
消しが行われるときには、EATKEYSルーチン12
14は、ステップ1222へ進み、そこでは、初期設定
シーケンスが既にステップ1224で送出されたと判定
することになる。従って、制御の流れはステップ122
8へ進み、そこでは前述のフラグをリセットする。これ
によって、このルーチンにおいては、これ以後キャラク
タの廃棄を行わず、初期設定シーケンスの送出も行わな
いことを表示する。続いて、制御の流れはステップ12
30へ進み、そこでは、一次キーボード157が装着さ
れているか否かを判定する。一次キーボード157が装
着されている場合には、制御の流れはステップ1232
へ進み、そこで、一次キーボード・イネーブル・ルーチ
ンであるENABLE KBD0ルーチン1300(図
43)をコールする。一方、一次キーボード157が装
着されていない場合には、制御の流れはステップ123
0からステップ1234へ進み、そこでは、二次キーボ
ード・イネーブル・ルーチンであるENABLE KB
D1ルーチン1300をコールする。ステップ1232
とステップ1234とのどちらからも、制御の流れはス
テップ1236へ進み、そこで、制御の流れはSMIタ
イマ・ルーチン1200へリターンする。
【0230】次に図43について説明する。同図には、
ENABLE KBD0ルーチンとENABLE KB
D1ルーチンとの両方を、ルーチン1300として示し
た。図示したものは単一のルーチンとなっているが、そ
れは、これら2つのルーチンが、どちらのキーボードが
選択されているかが異なるだけで、その他の点では同一
だからである。これら2つのルーチンは、8042型キ
ーボード・コントローラ156と、この時点で初期設定
が完了したキーボード157または159とを結合する
ルーチンである。ステップ1302へ進んだならば、仮
想キーボード・コントローラ206を、キーボード15
7と159とのいずれからも切断した状態にし、この切
断は、KCCFGレジスタ299への書込みによって行
う。続いてステップ1304へ進み、ホット・プラグ機
能、内部マルチプレクサ機能、及びスヌープ機能をイネ
ーブルし、仮想キーボード204をディスエーブルして
アクティブに応答を返すことがないようにし、そして、
該当する方のキーボードを選択し、これらはKCFGレ
ジスタ294への書込みによって行う。続いてステップ
1306へ進み、そこでは状態設定を実行する。この状
態設定には、新たにイネーブルしたキーボードに対して
は、これ以後、初期設定を行わないことを表示すること
が含まれる。続いて制御はステップ1308へ進んでリ
ターンする。
【0231】次にSEND KBDINITルーチン1
350について説明する。先ずステップ1352におい
て状態設定を実行し、新たに装着されたキーボード15
7または159から受信するリセットに対しては、最
早、キーのもみ消しを行わないことを表示する。ただし
この時点では、システム管理モード212のファームウ
ェアは、新たに装着されたキーボード157または15
9が初期設定シーケンスに対する応答として送信してき
たスキャン・コードを廃棄する必要がある。このフラグ
を図42のステップ1222で調べる。続いてステップ
1354へ進み、キーボードからのスキャン・コードを
廃棄する期間を計測するために、イート・キー・タイマ
を再ロードし、その結果、SMI TIMERルーチン
1200からEATKEYSルーチン1214へ入るこ
とになる。
【0232】続いてステップ1356へ進み、仮想キー
ボード・コントローラ206を介して、新たに装着され
たキーボード157または159へ、然るべき状態を出
力する。これによってそのキーボードがセットアップさ
れて、キーボード状態とキーボード・リピート・レート
とを受信できる状態になる。続いてステップ1358へ
進み、スヌープして維持しておいた然るべきキーボード
状態を送信用バッファへ投入し、仮想キーボード・コン
トローラ206を介してそのキーボードへ送信する。更
にステップ1360において、設定すべきリピート・レ
ートについて同じ処理を行う。従ってステップ1360
の完了後は、新たに装着されたキーボード157または
159は、仮想キーボード204がスヌープして維持し
ておいた状態に設定されている。そして、キーボード1
57または159のプラグを一旦引き抜いて再び差し込
んだ場合であっても、更には、そのキーボード157ま
たは159のプラグが引き抜かれている間にシステムが
そのキーボードの状態を変更した場合であっても、再び
プラグを差し込んだときにそのキーボードは適切な変更
後の値に設定し直される。続いてステップ1362へ進
み、制御の流れは、図42のEATKEYSルーチン1
214をコールしたコール元のルーチンへリターンす
る。
【0233】以上の説明から明らかなように、システム
にここに開示したホット・プラグ機能及びホット・アン
プラグ機能を備えるようにすれば、そのシステムは、標
準的キーボード・コントローラにも、また標準的POS
Tコード及びOSコードにも変更を加えることなく、キ
ーボードが装着されていない状態でブート処理を実行す
ることができるようになる。しかもそれに必要なことは
全て、統合遠隔コンソール・デバイスがトランスペアレ
ントな動作によって処理し、このトランスペアレントな
処理は、ここに開示した実施の形態ではシステム管理モ
ードの状況において実行されている。更に、キーボード
への電源線を流れる電流を利用してキーボードの存在の
有無を検出するようにしたため、物理キーボードのプラ
グの抜き差しに際して偽キャラクタが発生するおそれが
全くなくなっている。更に、それらも全て、キーボード
・コントローラや、システムのBIOS及びOSに対し
て何ら変更を加えることなく行われるようにしてある。
【0234】更に、仮想キーボードと仮想キーボード・
コントローラとの両方を備えているため、ブート処理を
実行しているときとキーボードを接続しない状態で通常
の動作を実行しているときとのいずれの場合も、物理キ
ーボード・コントローラへ適切な応答を送信することが
できる。また、そればかりでなく、それらの処理ないし
動作の実行中における仮想キーボードの状態を維持し追
跡することができるようにしてあるため、物理キーボー
ドが装着されたときには、仮想キーボード・コントロー
ラがその物理キーボードに設定を施して、物理キーボー
ド・コントローラがそれまでにキーボードに対して設定
したはずの状態に、その物理キーボードの状態を一致さ
せることができる。これらのことは全ては、シームレス
なプラグ着脱機能に資するものである。
【0235】当業者であれば、以上に開示した以外の様
々な別の実施の形態にも容易に想到することであろう。
例えば、システム管理モードを利用する替わりに、標準
的な割込みをマイクロプロセッサにかけるようにして、
デバイス・ドライバがその割込みに対して応答するよう
に構成することも可能である。この場合も、オペレーテ
ィング・システムからは完全にトランスペアレントな動
作とすることができ、しかもそれによって、キーボード
のホット・プラグ機能及びホット・アンプラグ機能を備
えたものとすることができる。このような構成とするの
が好都合であるのは、例えば、そのシステムに遠隔コン
ソール・モードが組み込まれていない場合や、オペレー
ティング・システムとは分離した保護動作が必要な場合
である。
【0236】更に別の実施の形態として、外部マルチプ
レクサを例えば差し込みボードの形に構成し、この外部
マルチプレクサに外部キーボードと仮想キーボードとの
間の切換えを行わせるようにしてもよい。この構成を採
用する場合には、システムのデバイス・ドライバに幾分
の変更を加えなければ、仮想キーボードと外部キーボー
ドとの間の切換えを行わせることができない場合もある
が、ただしそのような場合であっても、仮想キーボード
の方を、この差し込み式デバイスのデフォールト・モー
ドにしておきさえすれば、システムはブート処理を実行
することができる。
【0237】更に、ここ開示した実施の形態では、キー
ボードを使用する場合を示したが、以上に開示した技法
はキーボード以外のその他のシリアル・デバイスにも容
易に適用し得るものであり、標準的なキーボード用のク
ロック信号及びデータ信号を用いてコンピュータと通信
するようなシリアル・デバイスならば特に容易に適用す
ることができる。その種のシリアルI/Oデバイスの具
体例としては例えばマウスがある。
【0238】以上の本発明の開示及び説明は、本発明の
具体例を提示することを目的としたものであり、以上に
例示した寸法、形状、材料、構成要素の種類、回路素子
の種類、配設方式、接続方式、それに具体例の回路及び
構成及び動作方法の細部に対しては、本発明の概念から
逸脱することなく、種々の変更を加え得るものである。
【図面の簡単な説明】
【図1】開示した実施の形態にかかるホット・プラグ方
式での接続が可能なキーボードを装備することのできる
コンピュータ・システムである、サーバSのブロック図
である。
【図2】開示した実施の形態にかかる遠隔コンソールが
モデムを介してアクセスするときの信号経路を示したブ
ロック図である。
【図3】開示した実施の形態にかかる遠隔コンソールが
モデムを介してアクセスするときの信号経路を示したブ
ロック図である。
【図4】開示した実施の形態にかかる遠隔コンソールが
モデムを介してアクセスするときの信号経路を示したブ
ロック図である。
【図5】開示した実施の形態にかかる遠隔コンソールが
モデムを介してアクセスするときの信号経路を示したブ
ロック図である。
【図6】開示した実施の形態にかかる統合遠隔コンソー
ルを構成したチップの内部における信号切換のための構
造を示したブロック図である。
【図7】A〜Cは、開示した実施の形態にかかる統合遠
隔コンソールを介して実行される一連の接続シーケンス
を示したブロック図であり、最初は仮想キーボードと8
042型キーボード・コントローラとが接続されてお
り、後に物理キーボードと8042型キーボード・コン
トローラとが接続されるシーケンスを示した図である。
【図8】開示した実施の形態にかかる外部マルチプレク
サを使用してホット・プラグ機能及びホット・アンプラ
グ機能を提供するようにした、別の実施の形態を示した
図である。
【図9】A及びBは、開示した実施の形態にかかるキー
ボード存在検出回路のブロック図である。
【図10】開示した実施の形態にかかる統合遠隔コンソ
ールの内部の仮想キーボード、仮想キーボード・コント
ローラ、及びキーボード・マルチプレクサの間の信号接
続形態を示したブロック図である。
【図11】開示した実施の形態にかかる統合遠隔コンソ
ールの内部に備えたレジスタであって、CPUがPCI
バスを介してアクセス可能な種々のレジスタを示したブ
ロック図である。
【図12】開示した実施の形態にかかる統合遠隔コンソ
ールの内部に備えたレジスタであって、CPUがPCI
バスを介してアクセス可能な種々のレジスタを示したブ
ロック図である。
【図13】開示した実施の形態にかかる統合遠隔コンソ
ールの内部に備えた回路であって、キーボード存在情報
及びキーボード存在状態変化情報を提供するための回路
の回路図である。
【図14】開示した実施の形態にかかる統合遠隔コンソ
ールのキーボード・マルチプレクサ・ブロックの内部に
備えた回路であって、仮想キーボードないし物理キーボ
ードの様々なクロック信号ないしデータ信号を発生させ
るための回路の回路図である。
【図15】開示した実施の形態にかかる統合遠隔コンソ
ールのキーボード・マルチプレクサ・ブロックの内部に
備えた回路であって、仮想キーボードないし物理キーボ
ードの様々なクロック信号ないしデータ信号を発生させ
るための回路の回路図である。
【図16】開示した実施の形態にかかる統合遠隔コンソ
ールのキーボード・マルチプレクサ・ブロックの内部に
備えた回路であって、仮想キーボードないし物理キーボ
ードの様々なクロック信号ないしデータ信号を発生させ
るための回路の回路図である。
【図17】開示した実施の形態にかかる統合遠隔コンソ
ールのキーボード・マルチプレクサ・ブロックの内部に
備えた回路であって、仮想キーボードないし物理キーボ
ードの様々なクロック信号ないしデータ信号を発生させ
るための回路の回路図である。
【図18】開示した実施の形態にかかる統合遠隔コンソ
ールの内部の仮想キーボード・コントローラの状態遷移
を示した状態図である。
【図19】図18の状態図の状態遷移を表した状態式の
図表である。
【図20】図18の状態図の状態遷移に基づいて発生さ
れる信号を表した式の図表である。
【図21】開示した実施の形態にかかる統合遠隔コンソ
ールに構成された仮想キーボード・コントローラの内部
の種々の回路を示した回路図である。
【図22】開示した実施の形態にかかる統合遠隔コンソ
ールに構成された仮想キーボード・コントローラの内部
の種々の回路を示した回路図である。
【図23】開示した実施の形態にかかる統合遠隔コンソ
ールに構成された仮想キーボード・コントローラの内部
の種々の回路を示した回路図である。
【図24】開示した実施の形態にかかる統合遠隔コンソ
ールの内部の仮想キーボードの状態遷移を示した状態図
である。
【図25】図24の状態図の状態遷移を表した状態式の
図表である。
【図26】図24の状態図の状態遷移に基づいて発生さ
れる信号を表した式の図表である。
【図27】開示した実施の形態にかかる統合遠隔コンソ
ールに構成された仮想キーボードの内部の種々の回路を
示した回路図である。
【図28】開示した実施の形態にかかる統合遠隔コンソ
ールに構成された仮想キーボードの内部の種々の回路を
示した回路図である。
【図29】開示した実施の形態にかかる統合遠隔コンソ
ールに構成された仮想キーボードの内部の種々の回路を
示した回路図である。
【図30】開示した実施の形態にかかる統合遠隔コンソ
ールの仮想キーボード、仮想キーボード・コントロー
ラ、及びキーボード・マルチプレクサの夫々と通信する
システム管理モードのソフトウェアの種々の論理部分を
示したブロック図である。
【図31】開示した実施の形態にかかる統合遠隔コンソ
ールのシステム管理割込みハンドラを示したフローチャ
ートである。
【図32】図31のルーチンがコールするキーボード割
込み処理ルーチンのフローチャートである。
【図33】図31のルーチンがコールするキーボード・
コントローラ割込みルーチンのフローチャートである。
【図34】図31のルーチンがコールするホット・プラ
グ・ルーチンのフローチャートである。
【図35】図31のルーチンがコールするホット・プラ
グ・ルーチンのフローチャートである。
【図36】図31のルーチンがコールするホット・プラ
グ・ルーチンのフローチャートである。
【図37】図31のルーチンがコールするキーボード・
コントローラ・スキャン・コード受信処理ルーチンのフ
ローチャートである。
【図38】図31のルーチンがコールするキーボード・
コントローラ・スキャン・コード受信処理ルーチンのフ
ローチャートである。
【図39】図31のルーチンがコールするキーボード・
コントローラ・スキャン・コード受信処理ルーチンのフ
ローチャートである。
【図40】図31のルーチンがコールするキーボード・
コントローラ・スキャン・コード受信処理ルーチンのフ
ローチャートである。
【図41】開示した実施の形態にかかるシステム管理モ
ードのソフトウェアが周期的にコールするSMIタイマ
・ルーチンのフローチャートである。
【図42】開示した実施の形態にかかるシステム管理モ
ードのソフトウェアが周期的にコールするSMIタイマ
・ルーチンのフローチャートである。
【図43】開示した実施の形態にかかるシステム管理モ
ードのソフトウェアが周期的にコールするSMIタイマ
・ルーチンのフローチャートである。
【図44】開示した実施の形態にかかるシステム管理モ
ードのソフトウェアが周期的にコールするSMIタイマ
・ルーチンのフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591030868 20555 State Highway 249,Houston,Texas 77070,United States o f America (72)発明者 ジェフ・エム・クロンツ アメリカ合衆国テキサス州77066,ヒュー ストン,グリーンウッド・フォーレスト・ ドライブ 12820 ナンバー 322 (72)発明者 ダヤン・ダイ アメリカ合衆国テキサス州77072,ヒュー ストン,ヘヴンデール・ドライブ 6127

Claims (37)

    【特許請求の範囲】
  1. 【請求項1】 標準的キーボード・クロック信号及び標
    準的キーボード・データ信号を使用し、標準的キーボー
    ド・コマンドに応答する物理キーボードのプラグ着脱
    を、トランスペアレントに行えるようにしたコンピュー
    タ・システムにおいて、 命令を実行するプロセッサと、 データを提供する周辺記憶装置と、 前記プロセッサに結合されており、標準的キーボード・
    クロック信号及び標準的キーボード・データ信号との間
    に互換性を有するキーボード・コントローラ・クロック
    信号及びキーボード・コントローラ・データ信号を発生
    し、それらキーボード・コントローラ・クロック信号及
    びキーボード・コントローラ・データ信号を介して標準
    的キーボード・コマンドを送出するキーボード・コント
    ローラと、 キーボード・コントローラ・クロック信号及びキーボー
    ド・コントローラ・データ信号に結合されており、標準
    的キーボード・クロック信号及び標準的キーボード・デ
    ータ信号に結合可能なキーボード切換回路とを備え、 前記キーボード切換回路が、 仮想キーボード・クロック信号及び仮想キーボード・デ
    ータ信号を使用し、標準的キーボード・コマンドに応答
    する仮想キーボードと、 仮想キーボード・クロック信号及び仮想キーボード・デ
    ータ信号に結合され、標準的キーボード・クロック信号
    及び標準的キーボード・データ信号に結合され、更に、
    キーボード・コントローラ・クロック信号及びキーボー
    ド・コントローラ・データ信号に結合されているキーボ
    ード切換器とを備え、 前記キーボード切換器が、前記物理キーボードがプラグ
    接続状態にあるかプラグ非接続状態にあるかに応じて動
    作し、プラグ非接続状態にある間はキーボード・コント
    ローラ・クロック信号及びキーボード・コントローラ・
    データ信号を仮想キーボード・クロック信号及び仮想キ
    ーボード・データ信号に結合しておき、前記物理キーボ
    ードがプラグ接続状態になろうとするときに、それに応
    答してキーボード・コントローラ・クロック信号及びキ
    ーボード・コントローラ・データ信号を標準的キーボー
    ド・クロック信号及び標準的キーボード・データ信号に
    結合することを特徴とするコンピュータ・システム。
  2. 【請求項2】 請求項1記載のコンピュ−タ・システム
    において、 該システムはさらに、前記プロセッサによって実行され
    る、前記物理キーボードがプラグ接続状態になろうとし
    ているか否かを検出するためのソフトウェア・ルーチン
    を備え、 前記キーボード切換器が、前記ソフトウェア・ルーチン
    と協働することで、前記物理キーボードがプラグ接続状
    態になろうとしているか否かに応じて動作するようにし
    たことを特徴とするコンピュータ・システム。
  3. 【請求項3】 請求項1記載のコンピュータ・システム
    において、前記キーボード切換回路が更に、 仮想キーボード・コントローラ・クロック信号及び仮想
    キーボード・コントローラ・データ信号を使用し、標準
    的キーボード初期化コマンドを含む複数の標準的キーボ
    ード・コマンドを送出する、仮想キーボード・コントロ
    ーラと、 仮想キーボード・コントローラ・クロック信号及び仮想
    キーボード・コントローラ・データ信号に結合されると
    共に、標準的キーボード・クロック信号及び標準的キー
    ボード・データ信号に結合されたキーボード・コントロ
    ーラ切換器とを備え、 前記仮想キーボード・コントローラが、前記物理キーボ
    ードがプラグ接続状態にあるかプラグ非接続状態にある
    かに応じて動作し、前記物理キーボードがプラグ接続状
    態になったときに、それに応答してキーボード初期化コ
    マンドを送出するように構成され、 前記仮想キーボード・コントローラ切換器が、前記物理
    キーボードがプラグ接続状態にあるかプラグ非接続状態
    にあるかに応じて動作し、前記物理キーボードがプラグ
    接続状態になろうとするときに仮想キーボード・コント
    ローラ・クロック信号及び仮想キーボード・コントロー
    ラ・データ信号を標準的キーボード・クロック信号及び
    標準的キーボード・データ信号に結合し、前記仮想キー
    ボード・コントローラがキーボード初期化コマンドを送
    出した後に仮想キーボード・クロック信号及び仮想キー
    ボード・データ信号を標準的キーボード・クロック信号
    及び標準的キーボード・データ信号から切断するように
    構成されていることを特徴とするコンピュータ・システ
    ム。
  4. 【請求項4】 請求項3記載のコンピュータ・システム
    において、 該システムはさらに、前記プロセッサによって実行され
    る、前記物理キーボードがプラグ接続状態になろうとし
    ているか否かを検出するためのソフトウェア・ルーチン
    を備え、 前記仮想キーボード・コントローラ切換器が、前記ソフ
    トウェア・ルーチンと協働して、前記物理キーボードが
    プラグ接続状態になろうとしているか否かに応じて動作
    するようにしたことを特徴とするコンピュータ・システ
    ム。
  5. 【請求項5】 請求項3記載のコンピュータ・システム
    において、 前記仮想キーボードが更に、キーボード・モード/キー
    ボード・リピート・レート格納器を備えたキーボード状
    態追跡器を備えており、前記キーボード・モード/キー
    ボード・リピート・レート格納器は、前記キーボード・
    コントローラから送出されたキーボード・コマンドによ
    って設定されたキーボード・モード及びキーボード・リ
    ピート・レートに等しく設定されるようにしてあり、 前記仮想キーボード・コントローラと前記仮想キーボー
    ドとが結合されており、前記仮想キーボード・コントロ
    ーラが前記仮想キーボードの前記キーボード・モード/
    キーボード・リピート・レート格納器にアクセス可能で
    あり、 前記仮想キーボード・コントローラのキーボード初期化
    コマンドには、前記仮想キーボードの前記キーボード・
    モード/キーボード・リピート・レート格納器の中に格
    納されているキーボード・モード及びキーボード・リピ
    ート・レートが包含されており、これによって、プラグ
    接続状態とされたキーボードの初期設定の際にそのキー
    ボードのモード及びリピート・レートが前記仮想キーボ
    ードに格納されているキーボード・モード及びキーボー
    ド・リピート・レートに等しく設定されるようにしたこ
    とを特徴とするコンピュータ・システム。
  6. 【請求項6】 請求項3記載のコンピュータ・システム
    において、 前記プロセッサが前記キーボード切換回路に結合されて
    おり、 前記コンピュータ・システムが更に、仮想キーボード・
    コントローラ・ルーチンを備えており、該仮想キーボー
    ド・コントローラ・ルーチンは、入出力命令を介して前
    記仮想キーボード・コントローラと通信し、前記仮想キ
    ーボード・コントローラを介して前記物理キーボードへ
    コマンドを送出するルーチンであることを特徴とするコ
    ンピュータ・システム。
  7. 【請求項7】 請求項6記載のコンピュータ・システム
    において、 前記プロセッサが、保護動作を実行するシステム管理モ
    ードを備えており、前記仮想キーボード・ルーチンが、
    前記仮想キーボード・コントローラから発せられるシス
    テム管理割込みに応答して前記システム管理モードにお
    いて実行されることを特徴とするコンピュータ・システ
    ム。
  8. 【請求項8】 請求項1記載のコンピュータ・システム
    において、 前記キーボード切換回路が更に物理キーボード存在検出
    回路を備えており、 前記物理キーボード存在検出回路は、前記物理キーボー
    ドに給電するためのキーボード電源線に結合されてお
    り、該キーボード電源線を流れる電流の変化に応答し
    て、前記物理キーボードの存在の有無の指示を発生する
    よう構成されており、 前記キーボード・コントローラ切換器と前記キーボード
    切換器とが、物理キーボードの存在の有無の指示に応じ
    て動作し、その指示が真状態になった時点から所定期間
    の遅延の後に、前記物理キーボードが存在していると判
    定するようにしたことを特徴とするコンピュータ・シス
    テム。
  9. 【請求項9】 請求項8記載のコンピュータ・システム
    において、前記物理キーボード存在検出回路が更に、 順方向バイアス第1ダイオードを介して前記キーボード
    電源線へ給電する電圧調整電源と、 2つの入力と、物理キーボードの存在の有無の表示を発
    生する1つの出力とを有し、第1入力が前記順方向バイ
    アス第1ダイオードのカソードに接続された差動増幅器
    と、 前記キーボード電源線へ給電する前記電圧調整電源にア
    ノードが接続され、第2入力にカソードが接続された順
    方向バイアス第2ダイオードとを備え、 前記キーボード電源線を電流が流れるときに、前記第1
    ダイオードに発生する電圧降下が前記第2ダイオードに
    発生する電圧降下よりも大きく構成されていることを特
    徴とするコンピュータ・システム。
  10. 【請求項10】 請求項8記載のコンピュータ・システ
    ムにおいて、 該システムはさらに、前記プロセッサによって実行さ
    れ、物理キーボードの存在の有無の指示に応じて動作す
    るソフトウェア・ルーチンを備えており、前記キーボー
    ド・コントローラ切換器及び前記キーボード切換器が、
    前記ソフトウェア・ルーチンの動作を通して物理キーボ
    ードの存在の有無の指示に応じて動作するようにしたこ
    とを特徴とするコンピュータ・システム。
  11. 【請求項11】 請求項1記載のコンピュータ・システ
    ムにおいて、 前記プロセッサが前記キーボード切換回路に結合されて
    おり、 前記コンピュータ・システムが更に、前記プロセッサに
    よって実行される仮想キーボード・ルーチンを備えてお
    り、該仮想キーボード・ルーチンは、入出力命令を介し
    て前記仮想キーボードと通信すると共に、前記仮想キー
    ボードを介して前記キーボード・コントローラのキーボ
    ード・コマンドに応答するスキャン・コードを送出する
    ルーチンであることを特徴とするコンピュータ・システ
    ム。
  12. 【請求項12】 請求項11記載のコンピュータ・シス
    テムにおいて、 前記プロセッサが、保護動作を実行するシステム管理モ
    ードを備えており、前記仮想キーボード・ルーチンが、
    前記仮想キーボードが発するシステム管理割込みに応答
    して前記システム管理モードにおいて実行され、前記キ
    ーボード切換器が、前記システム管理モードの制御ルー
    チンに応答して動作することを特徴とするコンピュータ
    ・システム。
  13. 【請求項13】 請求項1記載のコンピュータ・システ
    ムにおいて、前記キーボード切換回路が単一の特定用途
    向け集積回路の中に構成されていることを特徴とするコ
    ンピュータ・システム。
  14. 【請求項14】 請求項1記載のコンピュータ・システ
    ムにおいて、前記キーボード切換回路が、特定用途向け
    集積回路と、前記プロセッサによって実行されるシステ
    ム管理モードのソフトウェアとの組み合わせによって構
    成されていることを特徴とするコンピュータ・システ
    ム。
  15. 【請求項15】 請求項1記載のコンピュータ・システ
    ムにおいて、該システムはさらに、標準的キーボード・
    クロック信号及び標準的キーボード・データ信号を使用
    し標準的キーボード・コマンドに応答する第2物理キー
    ボードのプラグ着脱をトランスペアレントに行えるよう
    にしてあり、 前記キーボード切換回路が更に、仮想キーボード・クロ
    ック信号及び仮想キーボード・データ信号に結合される
    と共に第2標準的キーボード・クロック信号及び第2標
    準的キーボード・データ信号に結合された第2キーボー
    ド切換器を備えており、 前記第2キーボード切換器が、前記物理キーボード及び
    前記第2物理キーボードがプラグ接続状態にあるかプラ
    グ非接続状態にあるかに応じて動作し、前記第2物理キ
    ーボードがプラグ接続状態にあり前記物理キーボードが
    プラグ非接続状態にある間は、キーボード・コントロー
    ラ・クロック信号及びキーボード・コントローラ・デー
    タ信号を第2標準的キーボード・クロック信号及び第2
    標準的キーボード・データ信号に結合しておくように構
    成され、 前記キーボード切換器が更に、前記第2物理キーボード
    がプラグ接続状態にあるかプラグ非接続状態にあるかに
    応じて動作し、前記物理キーボードと前記第2物理キー
    ボードとが共にプラグ非接続状態にある間は、キーボー
    ド・コントローラ・クロック信号及びキーボード・コン
    トローラ・データ信号を仮想キーボード・クロック信号
    及び仮想キーボード・データ信号に結合しておくように
    構成されていることを特徴とするコンピュータ・システ
    ム。
  16. 【請求項16】 請求項15記載のコンピュータ・シス
    テムにおいて、前記第2キーボード切換器と前記キーボ
    ード切換器とが、前記物理キーボードと前記第2物理キ
    ーボードとのどちらが後からプラグ接続状態になったか
    に応じて、キーボード・コントローラ・クロック信号及
    びキーボード・コントローラ・データ信号を、標準的キ
    ーボード・クロック信号及び標準的キーボード・データ
    信号か、第2標準的キーボード・クロック信号及び第2
    標準的キーボード・データ信号かの、いずれか一方に結
    合するように接続されていることを特徴とするコンピュ
    ータ・システム。
  17. 【請求項17】 プロセッサと、キーボード・コントロ
    ーラと、仮想キーボードと、仮想キーボード・コントロ
    ーラとを備えたコンピュータ・システムにおいて、物理
    キーボードのプラグ着脱をトランスペアレントに行える
    ようにする方法において、 前記仮想キーボードを前記キーボード・コントローラに
    結合するステップと、 前記キーボード・コントローラから送出されるキーボー
    ド・コマンドに対する標準的応答を前記仮想キーボード
    を介して送出するステップと、 前記物理キーボードが前記コンピュータ・システムにプ
    ラグ接続されることを検出するステップと、 前記物理キーボードのプラグ接続の検出に応答して前記
    仮想キーボードを前記キーボード・コントローラから切
    断するステップと、 前記物理キーボードを前記キーボード・コントローラに
    結合するステップとを含んでいることを特徴とする方
    法。
  18. 【請求項18】 請求項17記載の方法において、該方
    法はさらに、前記物理キーボードを前記キーボード・コ
    ントローラに結合する前記ステップに先立って実行する
    ステップとして、 前記仮想キーボード・コントローラを前記物理キーボー
    ドに結合するステップと、 前記仮想キーボード・コントローラから前記物理キーボ
    ードへ初期化コマンドを送出するステップと、 前記仮想キーボード・コントローラを前記物理キーボー
    ドから切断するステップとを含んでいることを特徴とす
    る方法。
  19. 【請求項19】 請求項18記載の方法において、 該方法はさらに、前記キーボード・コントローラから送
    出されるキーボード・コマンドに応答して前記仮想キー
    ボードにおける持続性キーボード・パラメータの状態を
    追跡するステップを含んでおり、 前記仮想キーボード・コントローラから前記物理キーボ
    ードへ初期化シーケンスを送出する前記ステップが更
    に、前記仮想キーボードが捕捉した持続性状態を初期化
    コマンドの一部として送出するステップを含んでいるこ
    とを特徴とする方法。
  20. 【請求項20】 請求項18記載の方法において、該方
    法はさらに、前記物理キーボードを前記キーボード・コ
    ントローラに結合する前記ステップの実行後に実行する
    ステップとして、 前記コンピュータ・システムからの前記物理キーボード
    のプラグ抜き取りを検出するステップと、 前記コンピュータ・システムからの前記物理キーボード
    のプラグ抜き取りの検出に応答して前記仮想キーボード
    を前記キーボード・コントローラに結合するステップ
    と、 前記キーボード・コントローラから送出されるキーボー
    ド・コマンドに対する標準的応答を前記仮想キーボード
    を介して送出するステップとを含んでいることを特徴と
    する方法。
  21. 【請求項21】 プロセッサと、キーボード・コントロ
    ーラ・クロック信号及びキーボード・コントローラ・デ
    ータ信号を使用するキーボード・コントローラとを備え
    たコンピュータ・システムに用いられ、標準的キーボー
    ド・クロック信号及び標準的キーボード・データ信号を
    使用する物理キーボードに結合するためのキーボード切
    換回路において、 仮想キーボード・クロック信号及び仮想キーボード・デ
    ータ信号を使用し、標準的キーボード・コマンドに応答
    する仮想キーボードと、 仮想キーボード・クロック信号及び仮想キーボード・デ
    ータ信号に結合され、標準的キーボード・クロック信号
    及び標準的キーボード・データ信号に結合され、更に、
    キーボード・コントローラ・クロック信号及びキーボー
    ド・コントローラ・データ信号に結合されているキーボ
    ード切換器とを備え、 前記キーボード切換器が、前記物理キーボードがプラグ
    接続状態にあるかプラグ非接続状態にあるかに応じて動
    作し、それがプラグ非接続状態にある間は、キーボード
    ・コントローラ・クロック信号及びキーボード・コント
    ローラ・データ信号を仮想キーボード・クロック信号及
    び仮想キーボード・データ信号に結合しておき、それが
    プラグ接続状態にある間は、キーボード・コントローラ
    ・クロック信号及びキーボード・コントローラ・データ
    信号を標準的キーボード・クロック信号及び標準的キー
    ボード・データ信号に結合しておくように構成されてい
    ることを特徴とするキーボード切換回路。
  22. 【請求項22】 請求項21記載のキーボード切換回路
    において、該回路はさらに、 仮想キーボード・コントローラ・クロック信号及び仮想
    キーボード・コントローラ・データ信号を使用し、標準
    的キーボード初期化コマンドを含む複数の標準的キーボ
    ード・コマンドを送出する仮想キーボード・コントロー
    ラと、 仮想キーボード・コントローラ・クロック信号及び仮想
    キーボード・コントローラ・データ信号に結合されると
    共に、標準的キーボード・クロック信号及び標準的キー
    ボード・データ信号に結合されたキーボード・コントロ
    ーラ切換器とを備え、 前記仮想キーボード・コントローラが、前記物理キーボ
    ードがプラグ接続状態にあるかプラグ非接続状態にある
    かに応じて動作し、前記物理キーボードがプラグ接続状
    態になったときに、それに応答してキーボード初期化コ
    マンドを送出するように構成され、 前記仮想キーボード・コントローラ切換器が、前記物理
    キーボードがプラグ接続状態にあるかプラグ非接続状態
    にあるかに応じて動作し、前記物理キーボードがプラグ
    接続状態になろうとするときに、仮想キーボード・コン
    トローラ・クロック信号及び仮想キーボード・コントロ
    ーラ・データ信号を標準的キーボード・クロック信号及
    び標準的キーボード・データ信号に結合し、前記仮想キ
    ーボード・コントローラがキーボード初期化コマンドを
    送出した後に、仮想キーボード・クロック信号及び仮想
    キーボード・データ信号を標準的キーボード・クロック
    信号及び標準的キーボード・データ信号から切断するよ
    うに構成されていることを特徴とするキーボード切換回
    路。
  23. 【請求項23】 請求項22記載のキーボード切換回路
    において、 前記仮想キーボードが更に、キーボード・モード/キー
    ボード・リピート・レート格納器を備えたキーボード状
    態追跡器を備えており、前記キーボード・モード/キー
    ボード・リピート・レート格納器は、前記キーボード・
    コントローラから送出されたキーボード・コマンドによ
    って設定されたキーボード・モード及びキーボード・リ
    ピート・レートに等しく設定されるようにしてあり、 前記仮想キーボード・コントローラと前記仮想キーボー
    ドとが結合されており、前記仮想キーボード・コントロ
    ーラが前記仮想キーボードの前記キーボード・モード/
    キーボード・リピート・レート格納器にアクセス可能で
    あり、 前記仮想キーボード・コントローラのキーボード初期化
    コマンドには、前記仮想キーボードの前記キーボード・
    モード/キーボード・リピート・レート格納器の中に格
    納されているキーボード・モード及びキーボード・リピ
    ート・レートが包含されており、これによって、プラグ
    接続状態とされたキーボードの初期設定の際にそのキー
    ボードのモード及びリピート・レートが前記仮想キーボ
    ードに格納されているキーボード・モード及びキーボー
    ド・リピート・レートに等しく設定されるようにしたこ
    とを特徴とするキーボード切換回路。
  24. 【請求項24】 請求項22記載のキーボード切換回路
    において、 該キーボード切換回路が前記プロセッサと通信可能に構
    成されており、 前記キーボード切換回路が更に、前記仮想キーボード・
    コントローラ内にインタフェースを備えており、該イン
    タフェースは、前記プロセッサからスキャン・コードを
    受信し、そのスキャン・コードを前記仮想キーボード・
    コントローラを介して前記物理キーボードへ送出し得る
    ように構成されていることを特徴とするキーボード切換
    回路。
  25. 【請求項25】 請求項24記載のキーボード切換回路
    において、 該キーボード切換回路が前記プロセッサと通信可能に構
    成されており、 前記キーボード切換回路が更に、前記仮想キーボード・
    コントローラ内にインタフェースを備えており、該イン
    タフェースは、前記プロセッサからスキャン・コードを
    受信し、キーボード・コマンドを前記仮想キーボードを
    介して前記キーボード・コントローラへ送出し得るよう
    に構成されていることを特徴とするキーボード切換回
    路。
  26. 【請求項26】 請求項21記載のキーボード切換回路
    において、 該キーボード切換回路が更に物理キーボード存在検出回
    路を備えており、前記物理キーボード存在検出回路は、
    前記物理キーボードに給電するためのキーボード電源線
    に結合されており、該キーボード電源線を流れる電流の
    変化に応答して前記物理キーボードの存在の有無の指示
    を発生するよう構成されており、 前記キーボード・コントローラ切換器と前記キーボード
    切換器とが、物理キーボードの存在の有無の指示に応じ
    て動作し、その指示が真状態になった時点から所定期間
    の遅延の後に、前記物理キーボードが存在していると判
    定するようにしたことを特徴とするキーボード切換回
    路。
  27. 【請求項27】 請求項26記載のキーボード切換回路
    において、前記物理キーボード存在検出回路が更に、 順方向バイアス第1ダイオードを介して前記キーボード
    電源線へ給電する電圧調整電源と、 2つの入力と、物理キーボードの存在の有無の表示を発
    生する1つの出力とを有し、第1入力が前記順方向バイ
    アス第1ダイオードのカソードに接続された差動増幅器
    と、 前記キーボード電源線へ給電する前記電圧調整電源にア
    ノードが接続され第2入力にカソードが接続された順方
    向バイアス第2ダイオードとを備え、 前記キーボード電源線を電流が流れるときに、前記第1
    ダイオードに発生する電圧降下が前記第2ダイオードに
    発生する電圧降下よりも大きく設定されていることを特
    徴とするキーボード切換回路。
  28. 【請求項28】 請求項21記載のキーボード切換回路
    において、 該キーボード切換回路が更に、標準的キーボード・クロ
    ック信号及び標準的キーボード・データ信号を使用し標
    準的キーボード・コマンドに応答する第2物理キーボー
    ドのプラグ着脱をトランスペアレントに行えるように構
    成され、 前記キーボード切換回路が更に、仮想キーボード・クロ
    ック信号及び仮想キーボード・データ信号に結合される
    と共に第2標準的キーボード・クロック信号及び第2標
    準的キーボード・データ信号に結合された第2キーボー
    ド切換器を備えており、 前記第2キーボード切換器が、前記物理キーボード及び
    前記第2物理キーボードがプラグ接続状態にあるかプラ
    グ非接続状態にあるかに応じて動作し、前記第2物理キ
    ーボードがプラグ接続状態にあり前記物理キーボードが
    プラグ非接続状態にある間は、キーボード・コントロー
    ラ・クロック信号及びキーボード・コントローラ・デー
    タ信号を第2標準的キーボード・クロック信号及び第2
    標準的キーボード・データ信号に結合しておき、 前記キーボード切換器が更に、前記第2物理キーボード
    がプラグ接続状態にあるかプラグ非接続状態にあるかに
    応じて動作し、前記物理キーボードと前記第2物理キー
    ボードとが共にプラグ非接続状態にある間は、キーボー
    ド・コントローラ・クロック信号及びキーボード・コン
    トローラ・データ信号を仮想キーボード・クロック信号
    及び仮想キーボード・データ信号に結合しておくように
    構成されていることを特徴とするキーボード切換回路。
  29. 【請求項29】 請求項28記載のキーボード切換回路
    において、前記第2キーボード切換器と前記キーボード
    切換器とが、前記物理キーボードと前記第2物理キーボ
    ードとのどちらが後からプラグ接続状態になったかに応
    じて、キーボード・コントローラ・クロック信号及びキ
    ーボード・コントローラ・データ信号を、標準的キーボ
    ード・クロック信号及び標準的キーボード・データ信号
    か、第2標準的キーボード・クロック信号及び第2標準
    的キーボード・データ信号かの、いずれか一方に結合す
    るように接続されていることを特徴とするキーボード切
    換回路。
  30. 【請求項30】 請求項21記載のキーボード切換回路
    において、該回路が単一の特定用途向け集積回路の中に
    構成されていることを特徴とするキーボード切換回路。
  31. 【請求項31】 標準的クロック信号及び標準的データ
    信号を使用し標準的コマンドに応答する物理シリアル・
    デバイスのプラグ着脱をトランスペアレントに行えるよ
    うにしたコンピュータ・システムにおいて、 命令を実行するプロセッサと、 データを提供する周辺記憶装置と、 前記プロセッサに結合されており、標準的クロック信号
    及び標準的データ信号との間に互換性を有するコントロ
    ーラ・クロック信号及びコントローラ・データ信号を発
    生し、それらコントローラ・クロック信号及びコントロ
    ーラ・データ信号を介して標準的コマンド送出するコン
    トローラと、 コントローラ・クロック信号及びコントローラ・データ
    信号に結合されており、標準的クロック信号及び標準的
    データ信号に結合可能な切換回路とを備え、 前記切換回路が、 仮想シリアル・デバイス・クロック信号及び仮想シリア
    ル・デバイス・データ信号を使用し標準的コマンドに応
    答する仮想シリアル・デバイスと、 仮想シリアル・デバイス・クロック信号及び仮想シリア
    ル・デバイス・データ信号に結合され、標準的クロック
    信号及び標準的データ信号に結合され、更に、コントロ
    ーラ・クロック信号及びコントローラ・データ信号に結
    合されている切換器とを備え、 前記切換器が、前記物理シリアル・デバイスがプラグ接
    続状態にあるかプラグ非接続状態にあるかに応じて動作
    し、プラグ非接続状態にある間は、コントローラ・クロ
    ック信号及びコントローラ・データ信号を仮想シリアル
    ・デバイス・クロック信号及び仮想シリアル・デバイス
    ・データ信号に結合しておき、前記物理シリアル・デバ
    イスがプラグ接続状態になろうとするときに、それに応
    答してコントローラ・クロック信号及びコントローラ・
    データ信号を標準的クロック信号及び標準的データ信号
    に結合することを特徴とするコンピュータ・システム。
  32. 【請求項32】 請求項31記載のコンピュータ・シス
    テムにおいて、前記物理シリアル・デバイスがマウスで
    あることを特徴とするコンピュータ・システム。
  33. 【請求項33】 請求項31記載のコンピュータ・シス
    テムにおいて、前記切換回路が更に、 仮想シリアル・デバイス・コントローラ・クロック信号
    及び仮想シリアル・デバイス・コントローラ・データ信
    号を使用し、標準的初期化コマンドを含む複数の標準的
    コマンドを送出する仮想シリアル・デバイス・コントロ
    ーラと、 仮想シリアル・デバイス・コントローラ・クロック信号
    及び仮想シリアル・デバイス・コントローラ・データ信
    号に結合されると共に、標準的クロック信号及び標準的
    データ信号に結合されたコントローラ切換器とを備え、 前記仮想シリアル・デバイス・コントローラが、前記物
    理シリアル・デバイスがプラグ接続状態にあるかプラグ
    非接続状態にあるかに応じて動作し、前記物理シリアル
    ・デバイスがプラグ接続状態になったときに、それに応
    答してキーボード初期化コマンドを送出するように構成
    され、 前記仮想シリアル・デバイス・コントローラ切換器が、
    前記物理シリアル・デバイスがプラグ接続状態にあるか
    プラグ非接続状態にあるかに応じて動作し、前記物理キ
    ーボードがプラグ接続状態になろうとするときに、仮想
    シリアル・デバイス・コントローラ・クロック信号及び
    仮想シリアル・デバイス・コントローラ・データ信号を
    標準的クロック信号及び標準的データ信号に結合し、前
    記仮想シリアル・デバイス・コントローラが初期化コマ
    ンドを送出した後に、仮想シリアル・デバイス・クロッ
    ク信号及び仮想シリアル・デバイス・データ信号を標準
    的クロック信号及び標準的データ信号から切断するよう
    に構成されていることを特徴とするコンピュータ・シス
    テム。
  34. 【請求項34】 請求項33記載のコンピュータ・シス
    テムにおいて、前記物理シリアル・デバイスがマウスで
    あることを特徴とするコンピュータ・システム。
  35. 【請求項35】 標準的キーボード・クロック信号及び
    標準的キーボード・データ信号にキーボードが接続され
    ていない状態でブート処理を可能にしたコンピュータ・
    システムにおいて、 命令を実行するプロセッサと、 データを提供する周辺記憶装置と、 前記プロセッサに結合されており、標準的キーボード・
    クロック信号及び標準的キーボード・データ信号との間
    に互換性を有するキーボード・コントローラ・クロック
    信号及びキーボード・コントローラ・データ信号を発生
    し、それらキーボード・コントローラ・クロック信号及
    びキーボード・コントローラ・データ信号を介して標準
    的キーボード・コマンド送出するキーボード・コントロ
    ーラと、 キーボード・コントローラ・クロック信号及びキーボー
    ド・コントローラ・データ信号に結合されているマルチ
    プレクサであって、選択信号が第1状態にあることに応
    答して、キーボード・コントローラ・クロック信号及び
    キーボード・コントローラ・データ信号を標準的キーボ
    ード・クロック信号及び標準的キーボード・データ信号
    に結合し、前記選択信号が第2状態にあることに応答し
    て、キーボード・コントローラ・クロック信号及びキー
    ボード・コントローラ・データ信号を仮想キーボード・
    クロック信号及び仮想キーボード・データ信号に結合す
    るマルチプレクサと仮想キーボード・クロック信号及び
    仮想キーボード・データ信号に結合され、標準的キーボ
    ード・コマンドに応答する仮想キーボードとを備えたこ
    とを特徴とするコンピュータ・システム。
  36. 【請求項36】 請求項35記載のコンピュータ・シス
    テムにおいて、前記選択信号が、前記ブート処理の実行
    中は前記第2状態に維持され、前記ブート処理の実行後
    に前記第1状態にされることを特徴とするコンピュータ
    ・システム。
  37. 【請求項37】 キーボード・コントローラ・クロック
    信号及びキーボード・コントローラ・データ信号を使用
    するキーボード・コントローラを備えたシステムにおい
    て、標準的キーボード・クロック信号及び標準的キーボ
    ード・データ信号にキーボードが接続されていない状態
    でブート処理を可能にするキーボード・コントローラで
    あって、 キーボード・コントローラ・クロック信号及びキーボー
    ド・コントローラ・データ信号に結合されるマルチプレ
    クサであって、選択信号が第1状態にあることに応答し
    て、キーボード・コントローラ・クロック信号及びキー
    ボード・コントローラ・データ信号を標準的キーボード
    ・クロック信号及び標準的キーボード・データ信号に結
    合し、前記選択信号が第2状態にあることに応答して、
    キーボード・コントローラ・クロック信号及びキーボー
    ド・コントローラ・データ信号を仮想キーボード・クロ
    ック信号及び仮想キーボード・データ信号に結合するマ
    ルチプレクサと、 仮想キーボード・クロック信号及び仮想キーボード・デ
    ータ信号に結合され、標準的キーボード・コマンドに応
    答する仮想キーボードとを備えたことを特徴とするキー
    ボード・コントローラ。
JP9321930A 1996-10-18 1997-10-17 キーボード用ホットプラグ Pending JPH10187589A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/733,521 US5898861A (en) 1996-10-18 1996-10-18 Transparent keyboard hot plug
US733521 1996-10-18

Publications (1)

Publication Number Publication Date
JPH10187589A true JPH10187589A (ja) 1998-07-21

Family

ID=24947978

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9321930A Pending JPH10187589A (ja) 1996-10-18 1997-10-17 キーボード用ホットプラグ

Country Status (3)

Country Link
US (1) US5898861A (ja)
EP (1) EP0837387A3 (ja)
JP (1) JPH10187589A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002526860A (ja) * 1998-10-01 2002-08-20 フィーニックス テクノロジーズ リミテッド マルチプロセッサ環境において正しいプロセッサのための入出力命令をエミュレートし、ソフトウェアsmiをサービスするための装置及び方法
JP2007528083A (ja) * 2004-03-24 2007-10-04 インテル・コーポレーション 協調型組込みエージェント
JP2008046722A (ja) * 2006-08-11 2008-02-28 Nec Corp I/o装置及び方法
JP2008083980A (ja) * 2006-09-27 2008-04-10 Fujitsu Ltd 周辺装置、周辺装置認識方法及び周辺装置認識プログラム
JP2008217530A (ja) * 2007-03-06 2008-09-18 Nec Corp 情報処理装置および設定方法
JP2009506426A (ja) * 2005-08-23 2009-02-12 ムーア コンピューター コンサルタンツ インコーポレイテッド オペレーティングシステムに対する周辺装置の接続
JP2009076011A (ja) * 2007-09-25 2009-04-09 Nec Personal Products Co Ltd 情報処理装置、システムおよびプログラム
JP2011123875A (ja) * 2009-12-14 2011-06-23 Intel Corp 管理エンジンを利用する仮想バスデバイス
US8933941B2 (en) 2004-08-23 2015-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for redirection of video data

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6742066B2 (en) * 1999-05-17 2004-05-25 Hewlett-Packard Development Company, L.P. System and method for controlling remote console functionality assist logic
JPH10187583A (ja) * 1996-12-27 1998-07-21 Canon Inc データ通信装置及び方法
US6012103A (en) * 1997-07-02 2000-01-04 Cypress Semiconductor Corp. Bus interface system and method
DE19811894A1 (de) * 1998-03-18 1999-09-23 Zumtobel Staff Gmbh Verfahren zum Inbetriebnehmen eines Bussystems sowie entsprechendes Bussystem
US6873948B1 (en) * 1998-05-21 2005-03-29 Lsi Logic Corporation Method and apparatus for emulating a device within a data processing system
US6678830B1 (en) * 1999-07-02 2004-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for an ACPI compliant keyboard sleep key
US6664969B1 (en) 1999-11-12 2003-12-16 Hewlett-Packard Development Company, L.P. Operating system independent method and apparatus for graphical remote access
US6687744B1 (en) 2000-05-02 2004-02-03 International Business Machines Corporation Data processing system and method for permitting a server computer system to function as a virtual keyboard to a client computer system
US6775791B2 (en) 2001-01-26 2004-08-10 Dell Products L.P. Replaceable memory modules with parity-based data recovery
US7111100B2 (en) * 2002-04-26 2006-09-19 The Boeing Company Systems and methods for assigning an address to a network device added to an existing network
US20030065864A1 (en) * 2001-10-03 2003-04-03 Dell Products L.P. System and method supporting remote data processing system management
US20030131136A1 (en) * 2002-01-04 2003-07-10 Emerson Theodore F. Method and apparatus for emulating an OS-supported communication device to enable remote debugging
US7035857B2 (en) 2002-01-04 2006-04-25 Hewlett-Packard Development Company, L.P. Method and apparatus for increasing the functionality and ease of use of lights out management in a directory enabled environment
US8539340B2 (en) * 2002-01-04 2013-09-17 Hewlett-Packard Development Company, L.P. Method to serve real-time data in embedded web server
US7085385B2 (en) 2002-01-04 2006-08-01 Hewlett-Packard Development Company, L.P. Method and apparatus for initiating strong encryption using existing SSL connection for secure key exchange
US7287107B2 (en) * 2002-01-04 2007-10-23 Hewlett-Packard Development Company, L.P. Method and apparatus for passive PCI throttling in a remote server management controller
US7076796B2 (en) * 2002-01-04 2006-07-11 Reeves Drue A Virtual media from a directory service
US6819322B2 (en) 2002-01-04 2004-11-16 Hewlett-Packard Development Company, L.P. Method and apparatus for detecting potential lock-up conditions in a video graphics controller
US20030131137A1 (en) * 2002-01-04 2003-07-10 Doron Chosnek Method and apparatus for utilizing a management port to provide system management
US7149814B2 (en) * 2002-01-04 2006-12-12 Hewlett-Packard Development Company, L.P. Method and apparatus to provide sound on a remote console
US7047462B2 (en) * 2002-01-04 2006-05-16 Hewlett-Packard Development Company, Lp. Method and apparatus for providing JTAG functionality in a remote server management controller
US7181510B2 (en) * 2002-01-04 2007-02-20 Hewlett-Packard Development Company, L.P. Method and apparatus for creating a secure embedded I/O processor for a remote server management controller
US6904495B2 (en) 2002-01-10 2005-06-07 Hewlett-Packard Development Company, L.P. Method for identifying the write protect status of a diskette
US7293102B2 (en) * 2002-03-26 2007-11-06 Hewlett-Packard Development Company Method and apparatus for storing data and replaying stored data in a temporally accurate manner
US7689724B1 (en) 2002-08-16 2010-03-30 Cypress Semiconductor Corporation Apparatus, system and method for sharing data from a device between multiple computers
US7293118B1 (en) 2002-09-27 2007-11-06 Cypress Semiconductor Corporation Apparatus and method for dynamically providing hub or host operations
US7321623B2 (en) * 2002-10-01 2008-01-22 Avocent Corporation Video compression system
TW577010B (en) * 2002-11-12 2004-02-21 Mitac Technology Corp Device and method using software to implement hot key function of no embedded controller
WO2004097614A1 (en) * 2003-04-28 2004-11-11 Keyghost Limited Communication method and apparatus
US7136993B2 (en) * 2003-04-29 2006-11-14 Dell Products L.P. Method and system for remote or local access to keyboard control in legacy USB mode with a UHCI USB controller
US7424419B1 (en) 2003-05-27 2008-09-09 Qlogic, Corporation Method and system for providing a virtual universal serial port interface and a virtual storage interface
US9560371B2 (en) * 2003-07-30 2017-01-31 Avocent Corporation Video compression system
US7028125B2 (en) * 2003-08-04 2006-04-11 Inventec Corporation Hot-pluggable peripheral input device coupling system
US7064994B1 (en) * 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US7457461B2 (en) * 2004-06-25 2008-11-25 Avocent Corporation Video compression noise immunity
US7653123B1 (en) 2004-09-24 2010-01-26 Cypress Semiconductor Corporation Dynamic data rate using multiplicative PN-codes
US8346981B2 (en) * 2005-08-23 2013-01-01 Mcci Corporation Connection of peripherals to operating systems
KR100640822B1 (ko) * 2005-11-22 2006-11-02 엘지전자 주식회사 글래스 터치 방식의 키 입력장치
US7555570B2 (en) 2006-02-17 2009-06-30 Avocent Huntsville Corporation Device and method for configuring a target device
US8718147B2 (en) * 2006-02-17 2014-05-06 Avocent Huntsville Corporation Video compression algorithm
US7782961B2 (en) * 2006-04-28 2010-08-24 Avocent Corporation DVC delta commands
US20080177920A1 (en) * 2007-01-24 2008-07-24 Dell Products L.P. Methods for Handling Keyboard Inputs
US7624217B2 (en) * 2007-02-12 2009-11-24 Microsoft Corporation Adaptive boot sequence
US8315269B1 (en) 2007-04-18 2012-11-20 Cypress Semiconductor Corporation Device, method, and protocol for data transfer between host device and device having storage interface
US8321598B2 (en) * 2007-05-03 2012-11-27 Fairchild Semiconductor Corporation Method and circuit for capturing keypad data serializing/deserializing and regenerating the keypad interface
TWI448902B (zh) * 2007-08-24 2014-08-11 Cypress Semiconductor Corp 具頁存取基礎處理器介面之橋接裝置
US8090894B1 (en) 2007-09-21 2012-01-03 Cypress Semiconductor Corporation Architectures for supporting communication and access between multiple host devices and one or more common functions
US8281303B2 (en) * 2007-10-31 2012-10-02 Hewlett-Packard Development Company, L.P. Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
CN101452413B (zh) * 2007-11-28 2010-06-30 英业达股份有限公司 笔记型计算机键盘接口的自动检测系统及其方法
US8171182B2 (en) * 2007-12-07 2012-05-01 Canon Kabushiki Kaisha Method of indicating connectivity of peripheral device to computer operating system
US20090187684A1 (en) * 2008-01-17 2009-07-23 Inventec Corporation Automatic inspection system and method for notebook computer keyboard interface
US20110029699A1 (en) * 2009-07-31 2011-02-03 Siegman Craig S Method and System for Routing Keystrokes in a Client Server Network
US9277021B2 (en) * 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
SE536364C2 (sv) * 2010-03-18 2013-09-17 Bae Systems Haegglunds Ab Simuleringsanordnig för träningsutrustning för ett fordon
SE535712C2 (sv) 2010-03-18 2012-11-20 Bae Systems Haegglunds Ab Simuleringsanordning för träningsutrustning för ett fordon
US8909983B2 (en) * 2012-03-08 2014-12-09 Synology Incorporated Method of operating a storage device
CN107168549B (zh) * 2017-04-13 2021-11-09 深圳Tcl数字技术有限公司 输入方法、显示装置及计算机可读存储介质
US10564732B1 (en) * 2018-10-24 2020-02-18 Kye Systems Corp. Method of providing virtual function keys based on an application

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60181866A (ja) * 1984-02-29 1985-09-17 Toshiba Corp キ−デ−タエミユレ−シヨン方式
US5278958A (en) * 1988-01-27 1994-01-11 Kabushiki Kaisha Toshiba Method and apparatus for selecting a keyboard on a computer system
US5136694A (en) * 1989-04-07 1992-08-04 Zenith Data Systems Corporation Method and apparatus facilitating communication between two keyboards and a single processor
JPH0395616A (ja) * 1989-09-08 1991-04-22 Toshiba Corp キーボード接続制御方式
US5263171A (en) * 1990-03-27 1993-11-16 Cybex Corporation Device for interfacing two keyboards to one computer and for automatically connecting the active keyboard to the computer
US5222228A (en) * 1990-12-14 1993-06-22 Cybex Corporation Character and signal generator for detecting keyboard disconnected condition generated by an interrupted booting process and generating signal indicating that keyboard is now coupled thereto
US5261079A (en) * 1990-12-18 1993-11-09 International Business Machines Corporation Interface for keyboard emulation provided by an operating system
JPH04235655A (ja) * 1991-01-09 1992-08-24 Nec Eng Ltd 周辺装置の管理方法
US5379437A (en) * 1992-11-16 1995-01-03 International Business Machines Corp. Reset of peripheral printing devices after a hot plug state
CA2131235A1 (en) * 1993-09-10 1995-03-11 Randall L. Hess Personal computer with keyboard and auxiliary device emulation

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002526860A (ja) * 1998-10-01 2002-08-20 フィーニックス テクノロジーズ リミテッド マルチプロセッサ環境において正しいプロセッサのための入出力命令をエミュレートし、ソフトウェアsmiをサービスするための装置及び方法
JP2007528083A (ja) * 2004-03-24 2007-10-04 インテル・コーポレーション 協調型組込みエージェント
JP4664966B2 (ja) * 2004-03-24 2011-04-06 インテル・コーポレーション 協調型組込みエージェント
US8933941B2 (en) 2004-08-23 2015-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for redirection of video data
JP2009506426A (ja) * 2005-08-23 2009-02-12 ムーア コンピューター コンサルタンツ インコーポレイテッド オペレーティングシステムに対する周辺装置の接続
JP2008046722A (ja) * 2006-08-11 2008-02-28 Nec Corp I/o装置及び方法
US7877521B2 (en) 2006-08-11 2011-01-25 Nec Corporation Processing apparatus and method of modifying system configuration
JP2008083980A (ja) * 2006-09-27 2008-04-10 Fujitsu Ltd 周辺装置、周辺装置認識方法及び周辺装置認識プログラム
JP2008217530A (ja) * 2007-03-06 2008-09-18 Nec Corp 情報処理装置および設定方法
JP2009076011A (ja) * 2007-09-25 2009-04-09 Nec Personal Products Co Ltd 情報処理装置、システムおよびプログラム
JP2011123875A (ja) * 2009-12-14 2011-06-23 Intel Corp 管理エンジンを利用する仮想バスデバイス

Also Published As

Publication number Publication date
US5898861A (en) 1999-04-27
EP0837387A3 (en) 1999-03-24
EP0837387A2 (en) 1998-04-22

Similar Documents

Publication Publication Date Title
JPH10187589A (ja) キーボード用ホットプラグ
US5790895A (en) Modem sharing
JP2579435B2 (ja) マルチプル・バス・システムにおけるエラー検知及び回復機構とその方法
US6266721B1 (en) System architecture for remote access and control of environmental management
US5991546A (en) System and method for interfacing manually controllable input devices to a universal computer bus system
US6311245B1 (en) Method for time multiplexing a low-speed and a high-speed bus over shared signal lines of a physical bus
JP2608532B2 (ja) コンピュータシステムにおけるユーザ入力デバイス存在のエミュレート方法
WO2002003312A2 (en) Smart card virtual hub
WO1998012641A9 (en) System and method for interfacing manually controllable input devices to a universal computer bus system
US5794014A (en) Method and apparatus for interfacing between peripherals of multiple formats and a single system bus
US6973598B2 (en) Computer system with improved data capture system
US6366877B1 (en) Method and device for emulation of peripheral input/output (I/O) controller of a computer system
US20090077275A1 (en) Multiple I/O interfacing system for a storage device and communicating method for the same
US7124235B2 (en) USB apparatus with switchable host/hub functions and control method thereof
US6425041B1 (en) Time-multiplexed multi-speed bus
US5379437A (en) Reset of peripheral printing devices after a hot plug state
US6968462B2 (en) Verifying physical universal serial bus keystrokes
JPH0728289B2 (ja) ネットワ−ク制御システム
US6919878B2 (en) Keyboard/mouse switching controller
JP2001005574A (ja) コンピュータシステム
CN213482757U (zh) 主板及服务器
JPH06507748A (ja) データ処理装置の接続用並列インターフェース
JP3101552B2 (ja) 周辺バス利用の通信システム及び方法
JPH087442Y2 (ja) プログラマブルコントローラの入出力装置
WO1996026489A1 (en) Method and apparatus for interfacing between peripherals of multiple formats and a single system bus

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060721

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061020

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070403