(57)【特許請求の範囲】
【請求項１】
既定のデバイスが既定のデバイス端子に接続されているか否か、既定以外のデバイスが既定以外のデバイス端子に接続されているか否かを検出するデバイス検出手段と、
上位プログラムから前記既定のデバイスに対するアクセス要求があったとき、前記デバイス検出手段により前記既定以外のデバイスが検出されている場合、前記既定以外のデバイスを起動制御する既定外デバイス用ホストコンローラと通信する手段と、
前記既定外デバイス用ホストコントローラが前記既定以外のデバイスに対して行った制御の結果を、前記既定のデバイスに対するアクセス要求の結果として前記上位プログラムへ出力する手段と
を具備することを特徴とするコンピュータシステム。
【請求項２】
前記既定外デバイス用ホストコンローラが前記既定以外のデバイスを制御する処理と、通常のシステム制御用ルーチンで行われる処理とを分割して行う分割処理手段をさらに具備することを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記分割処理手段は、
前記既定以外のデバイスを制御する処理の終了を検知する為、所定時間をカウントするカウンタと、
前記カウンタによるカウントアウト後、前記既定外デバイス用ホストコンローラが前記既定以外のデバイスを制御する処理が正常に終了したか否かを判断する判断手段と、
前記判断手段の判断結果、前記既定以外のデバイスを制御する処理が正常に終了した場合、前記既定以外のデバイスを制御する処理が正常に終了した旨のステータスを保存する手段と
を具備することを特徴とする請求項２記載のコンピュータシステム。
【請求項４】
前記分割処理手段は、
前記既定以外のデバイスを制御する処理の異常終了を検知する為、所定時間をカウントする第２のカウンタと、
前記判断手段の判断結果、前記既定外デバイス用ホストコンローラによる前記既定以外のデバイスを制御する処理が異常終了した場合、前記第２のカウンタによるカウントがタイムアウトであるか否かを判断するタイムアウト判断手段と、
前記タイムアウト判断手段の判断結果、タイムアウトでない場合、再度、前記第２のカウンタにカウント値を設定し、前記既定外デバイス用ホストコンローラによる前記既定以外のデバイスを制御する処理の終了を検出する手段と
を具備することを特徴とする請求項２または３いずれか記載のコンピュータシステム。
【請求項５】
前記既定外デバイス用ホストコンローラは、
システムマネージメント割込み（ＳＭＩ）の発生を要求する手段を具備し、
前記分割処理手段は、
前記既定外デバイス用ホストコンローラによる前記既定以外のデバイスを制御する処理が前記カウンタによるカウントアウト以前に、前記既定外デバイス用ホストコンローラからＳＭＩ発生要求を受けた場合、前記カウンタのカウントを停止する手段を具備し、
前記判断手段は、
前記カウンタのカウントが停止された後、前記既定外デバイス用ホストコンローラによる前記既定以外のデバイスを制御する処理が正常に終了したか否かを判断することを特徴とする請求項３記載のコンピュータシステム。
【請求項６】
上位プログラムから前記既定のデバイスに対するアクセス要求があったとき、前記デバイス検出手段により前記既定以外のデバイスが検出されている場合、前記既定以外のデバイスと通信する必要があるか否かを判断する判断手段を備え、前記判断手段により前記既定以外のデバイスと通信する必要があると判断された場合、前記分割処理手段は分割処理を行うことを特徴とする請求項２記載のコンピュータシステム。
【請求項７】
既定のフロッピー・ディスク・ドライブ（ＦＤＤ）が既定のＦＤＤ端子に接続されているか否か、ユニバーサル・シリアル・バス（ＵＳＢ） ＦＤＤがＵＳＢ ＦＤＤ接続端子に接続されているか否かを検出するＩ／Ｏ コントローラと、
上位プログラムから前記ＦＤＤに対する呼び出しがあったとき、前記Ｉ／Ｏコントローラにより前記ＵＳＢ ＦＤＤが検出されている場合、前記ＵＳＢ ＦＤＤを制御するＵＳＢ ホスト・コンローラ（ＵＳＢ ＨＣ）と通信する手段と、
前記ＵＳＢ ＦＤＤに対して前記ＵＳＢ ＨＣが行った起動制御の結果を、前記ＦＤＤに対する呼び出しの結果として前記上位プログラムへ出力する手段と
を具備することを特徴とするコンピュータシステム。
【請求項８】
前記ＦＤＤに対する呼び出しがあったとき、システムマネージメント割込み（ＳＭＩ）を発生する手段と、
前記ＳＭＩ発生により、前記ＵＳＢ ＨＣが前記ＵＳＢ ＦＤＤを制御する処理と、通常のシステム制御用ルーチンで行われる処理とを分割して行う分割処理手段と
を具備することを特徴とする請求項７記載のコンピュータシステム。
【請求項９】
既定のデバイスが既定のデバイス端子に接続されているか否か、既定以外のデバイスが既定以外のデバイス端子に接続されているか否かを検出するステップと、
上位プログラムから前記既定のデバイスに対するアクセス要求があったとき、前記既定以外のデバイスが検出されている場合、前記既定以外のデバイスとの通信を行い、前記既定以外のデバイスを制御するステップと、
前記既定以外のデバイスに対して行った制御の結果を、前記既定のデバイスに対するアクセス要求の結果として前記上位プログラムへ出力するステップと
を具備することを特徴とするコンピュータシステムのＩ／Ｏ装置の制御方法。
【請求項１０】
前記既定以外のデバイスを制御する処理と、通常のシステム制御用ルーチンで行われる処理とを分割して行う分割処理ステップをさらに具備することを特徴とする請求項９記載のコンピュータシステムのＩ／Ｏ装置の制御方法。
【請求項１１】
前記分割処理ステップは、
前記既定以外のデバイスを制御する処理の終了を検知する為、所定時間をカウントするステップと、
カウントアウト後、前記既定以外のデバイスの制御処理が正常に終了したか否かを判断するステップと、
この判断結果、前記既定以外のデバイスの制御処理が正常に終了した場合、前記既定以外のデバイスの制御処理が正常終了した旨のステータスを保存するステップと
を具備することを特徴とする請求項１０記載のコンピュータシステムのＩ／Ｏ装置の制御方法。
【請求項１２】
前記分割処理ステップは、
前記既定以外のデバイスを制御する処理の異常終了を検知する為、所定時間をカウントする第２のカウントステップと、
この判断結果、前記既定以外のデバイスを制御する処理が異常終了した場合、前記第２のカウンステップでのカウントがタイムアウトであるか否かを判断するステップと、
この判断結果、タイムアウトでない場合、再度、前記第２のカウントステップでカウントした値を設定し、前記既定以外のデバイスの制御処理の終了を検出するステップと
を具備することを特徴とする請求項１０記載のコンピュータシステムのＩ／Ｏ装置の制御方法。
【請求項１３】
前記上位プログラムから前記既定のデバイスに対するアクセス要求があったときに、前記既定以外のデバイスが検出されている場合、前記既定以外のデバイスと通信する必要があるか否かを判断し、この判断結果、前記既定以外のデバイスと通信する必要があると判断された場合、前記分割処理ステップを行うことを特徴とする請求項１０記載のコンピュータシステムのＩ／Ｏ装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンピュータシステムに係わり、特に、ユニバーサルシリアルバスに接続されたＩ／Ｏ装置を制御する技術に関する。
【０００２】
【従来の技術】
近年、コンピュータシステムにおいては、周辺装置の拡張性の自由度を高めるため、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）のサポートが始められている。ＵＳＢは、キーボード、マウス、カメラ等の様々なＵＳＢ対応デバイスとの通信に共通に使用できるシリアルインターフェース規格（１９９６年１月１５日発行の「ＵＳＢ仕様書」Ｖｅｒ１．０）である。このＵＳＢを用いることにより、周辺デバイス毎に用意されたコネクタをＵＳＢコネクタに統合することができ、コンピュータシステムの低価格化及び拡張性の自由度を高めることができる。
【０００３】
しかし、現状では、ＵＳＢデバイスを使用できるようにするためには専用のドライバと特定のＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）との組み合わせが必要である。この様なＯＳ環境以外では、ＵＳＢコネクタを持つコンピュータシステムにおいても、ＵＳＢデバイスを使用することは出来ない。即ち、コンピュータシステム自身のＨＷがＵＳＢコネクタをサポートしているにも係わらず、異なるＯＳ環境（ＤＯＳやＵＮＩＸ）では、ＵＳＢコネクタを介してＵＳＢデバイスを制御できなかった。
【０００４】
また、近年、ノートブックタイプのコンピュータシステムの薄型化が進み、ＦＤＤを内蔵する代りに、ＵＳＢコネクタに接続するＵＳＢ  ＦＤＤがサポートされるようになった。しかし、ＵＳＢ  ＦＤＤを制御するには、上述の様に、専用のドライバと特定のＯＳが必要なため、従来のＢＩＯＳ−ＲＯＭのプログラムでは、ＵＳＢ  ＦＤＤを制御できない。従って、特定のＯＳと専用のドライバ無しでは、ＵＳＢ ＦＤＤを制御出来なかった。
【０００５】
【発明が解決しようとする課題】
上記した従来技術においては、ＵＳＢ  ＦＤＤを使用するためには、ＵＳＢ  ＦＤＤに対応した特定のＯＳと専用のドライバが必要であるという問題があった。
【０００６】
そこで、本発明は上記の問題を解決するためになされたものであり、特定のＯＳやドライバに依存せず、従来のＩ／Ｏ装置の制御処理と同様に、コンピュータシステムのＩ／Ｏ装置の制御をサポートすることを目的とする。
【０００７】
【課題を解決するための手段】
この発明は、既定のデバイスが既定のデバイス端子に接続されているか否か、既定以外のデバイスが既定以外のデバイス端子に接続されているか否かを検出するデバイス検出手段と、上位プログラムから前記既定のデバイスに対するアクセス要求があったとき、前記デバイス検出手段により前記既定以外のデバイスが検出されている場合、前記既定以外のデバイスを制御する既定外デバイス用ホストコンローラと通信する手段と、前記既定外デバイス用ホストコントローラが前記既定以外のデバイスに対して行った制御の結果を、前記既定のデバイスに対するアクセス要求の結果として前記上位プログラムへ出力する手段とを具備することを特徴とする。
【０００８】
従来のＩＢＭ−ＰＣ／ＡＴ互換コンピュータでは、システムＩＲＱの数に制限が有る。このような構成によれば、Ｉ／Ｏ装置の制御の為の処理にＳＭＩを利用することにより、システムＩＲＱを使用せず、Ｉ／Ｏ装置の制御の為の処理を実行することが可能となる。
【０００９】
更に、本願発明に於いては、Ｉ／Ｏ装置との処理にＳＭＩを利用するので、制御用プログラムのワークエリアをＳＭ−ＲＡＭに持つことが可能となり、ＯＳなどの上位プログラムがユーザメモリ領域を有効に使用することが出来る。
【００１０】
また、この発明は、上位プログラムからディスクドライブ処理の要求を受信する手段と、前記ディスクドライブ処理の要求受信後、ユニバーサル・シリアル・バス（ＵＳＢ）に接続されたフロッピー・ディスク・ドライブ（ＦＤＤ）と通信する場合、前記ＵＳＢ  ＦＤＤのディスクドライブ処理を分割処理する手段と、前記分割処理手段の終了後、前記上位プログラムに前記ＵＳＢ  ＦＤＤのディスクドライブ処理のステータスを出力する出力手段とを具備することを特徴とする。
【００１１】
このような構成によれば、ディスクドライブ処理は、ＵＳＢ  ＦＤＤと通信する場合、該処理に伴う一連のコマンド実行を分割処理することにより、次のコマンド実行迄の時間にシステムは他の処理を実行することが出来る。
【００１２】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
【００１３】
図１には、本発明の一実施形態に係わるコンピュータシステムの構成が示されている。このコンピュータシステムは、ノートブックタイプまたはサブノートタイプのポータブルパーソナルコンピュータであり、コンピュータ本体と、このコンピュータ本体に開閉自在に取り付けられたＬＣＤパネルユニットとから構成されている。
【００１４】
コンピュータ本体には、ＰＣＩバス１、ＩＳＡバス２、ＣＰＵモジュール１１、主メモリ１２、ＶＧＡコントローラ１３、ビデオメモリ（ＶＲＡＭ）１４、ＰＣＩインターフェイスブリッジ（ＰＣＩ  Ｉ／Ｆ）１５、Ｉ／Ｏコントローラ１６、フロッピーディスクドライブ（ＦＤＤ）１７、ハードディスクドライブ（ＨＤＤ）１８、フラッシュＢＩＯＳ−ＲＯＭ１９、キーボードコントローラ（ＫＢＣ）／ＥＣ２０、ＵＳＢデバイス（ＵＳＢ  ＦＤＤ）２１、モデム２２などが設けられている。
【００１５】
ＣＰＵモジュール１１は、このシステム全体の動作制御およびデータ処理を実行するものであり、ここにはＣＰＵ、キャッシュ、さらには主メモリ１２を制御するためのメモリコントローラ、ＣＰＵとＰＣＩバス１をインタフェースする為のホストブリッジなどが搭載されている。
【００１６】
ＣＰＵとしては、例えば、米国インテル社により製造販売されているマイクロプロセッサ「モバイルペンティアム」が使用されている。
【００１７】
ＣＰＵは、複数の動作モードをサポートしている。即ち、ＣＰＵは、アプリケーションプログラムやＯＳなどのプログラムを実行するためのリアルモード、仮想８６モードの他、システム管理モード（ＳＭＭ：Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｍｏｄｅ）と称されるシステム管理プログラムを実行するための動作モードを有している。
【００１８】
リアルモードは、最大で１Ｍバイトのメモリ空間をアクセスできるモードであり、セグメントレジスタで示されるベースアドレスからのオフセット値で物理アドレスが決定される。プロテクトモードは１タスク当たり最大４Ｇバイトのメモリ空間をアクセスできるモードであり、ディスクプリタテーブルと称されるアドレスマッピングテーブルを用いてリニアアドレスが決定される。このリニアアドレスは、ページングによって最終的に物理アドレスに変換される。仮想８６モードは、リアルモードで動作するように構成されたプログラムをプロテクトモードで動作させるためのモードであり、リアルモードのプログラムはプロテクトモードにおける１つのタスクとして扱われる。
【００１９】
システム管理モード（ＳＭＭ）は、疑似リアルモードであり、このモードでは、ディスクプリタテーブルは参照されず、ページングも実行されない。システム管理割込み（ＳＭＩ：Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）がＣＰＵに発行された時、ＣＰＵの動作モードは、リアルモード、プロテクトモード、または仮想８６モードから、ＳＭＭにスイッチされる。ＳＭＭでシステム管理プログラムが実行される。本願発明の実施形態では、ＵＳＢ  ＨＣを介してＵＳＢ  ＦＤＤ２１との通信に伴う分割処理、分割処理による通信の終了確認処理や通信結果の為のステータス読み出し処理をＳＭＭ上で実行する。
【００２０】
ＳＭＩはマスク不能割込みＮＭＩの一種であるが、通常のＮＭＩやマスクかの割込みＩＮＴＲより優先度の高い、最優先度の割り込みである。このＳＭＩを発行することによって、システム管理プログラムとして用意されてた種々のＳＭＩサービスルーチンが、実行中のアプリケーションプログラムやＯＳ環境に依存せずに実行される。
【００２１】
ホストブリッジには、ＣＰＵに対する割込みを発生する割込み制御回路を内蔵し、該回路にはＳＭＩ発生回路、ＳＭＩ発生間隔レジスタ、ＳＭＩ要因レジスタが組込まれている。
【００２２】
ＳＭＩ発生回路は、ＵＳＢ  ＨＣからのＳＭＩ発生要求信号、ＳＭＩ発生間隔レジスタからの要求信号に応じ、ＣＰＵのＳＭＩ＃ピンに対してＳＭＩ＃信号を発行する。
【００２３】
ＳＭＩ発生間隔レジスタは、ＣＰＵに対して、ＳＭＩ＃信号を所定間隔毎に発行する為に、設定するレジスタである。
【００２４】
ＳＭＩ要因レジスタは、ＣＰＵに対するＳＭＩ発行の要因を、ＳＭＩハンドラを利用して、判別する為のレジスタである。
【００２５】
主メモリ１２は、このシステムの主記憶として使用されるものであり、オペレーティングシステム、処理対象のアプリケーションプログラム、およびアプリケーションプログラムによって生成されたユーザデータ等が格納されている。
【００２６】
ＳＭ−ＲＡＭは、システム管理プログラム用に用意され、ＳＭＭ中に使用するメモリで、後述するＵＳＢ  ＨＣとの通信を行なうための分割処理ルーチン、ワークエリア上に各種カウンタ及びフラグやステータスが設けられている。
【００２７】
更に、ＳＭ−ＲＡＭ上には、ＵＳＢ  ＦＤＤと通信を分割処理する為の分割処理ルーチンの他、システムＢＩＯＳのワークエリアとして該通信の終了結果をチェックする処理や通信結果のステータス読み出し処理が組込まれている。
【００２８】
ＳＭ−ＲＡＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  ＲＡＭ）は、図２に示される通り、主メモリ１２のアドレスＦＦＦＥ００００ｈ〜ＦＦＦＦ００００ｈまでのアドレス空間にマッピングされるオーバレイであり、ＳＭＩ＃信号がＣＰＵに発行された時、アクセス可能となる。ここで、ＳＭ−ＲＡＭがマッピングされるアドレス範囲は、固定ではなく、ＳＭ−ＢＡＳＥと称されるレジスタによって４Ｇバイト空間の任意の場所に変更可能である。
【００２９】
ＶＧＡコントローラ１３は、このシステムのディスプレイモニタとして使用されるＬＣＤまたは外部ＣＲＴを制御するためのものであり、ＶＲＡＭ１４に描画された画面データをそれらディスプレイモニタに表示する。
【００３０】
ＰＣＩインターフェイスブリッジ（ＰＣＩ  Ｉ／Ｆ）１５は、１チップＬＳＩによって実現されたゲートアレイであり、ここには、ＰＣＩバス１とＩＳＡバス２との間を双方向で接続するブリッジ機能が内蔵されているほか、ＨＤＤ１８の制御を行うＩＤＥコントローラなども内蔵されている。
【００３１】
Ｉ／Ｏコントローラ１６は、各種Ｉ／Ｏデバイスを制御するためのゲートアレイであり、ＰＣＭＣＩＡ／ＣＡＲＤ  ＢＵＳ仕様のＰＣカードを制御する機能および、外部ＦＤＤ接続端子とＦＤＤ接続ケーブルを介して、脱着可能な外部ＦＤＤ１７を制御するＦＤＣ機能の他、シリアルポート、パラレルポート、赤外線通信ポート、ＵＳＢ接続端子とＵＳＢ接続ケーブルを介して、脱着可能なＵＳＢデバイス（ＵＳＢ  ＦＤＤ）を制御するＵＳＢ  ＨＣ（Ｈｏｓｔ Ｃｏｎｔｒｏｌｌｅｒ）などの制御機能を有する。
【００３２】
フラッシュＢＩＯＳ−ＲＯＭ１９は、システムＢＩＯＳ（Ｂａｓｉｃ  Ｉ／ＯＳｙｓｔｅｍ）を記憶するためのものであり、プログラム書き替えが可能なようにフラッシュメモリによって構成される。システムＢＩＯＳには、システムブート時に実行されるＩＲＴ（ＰＯＳＴ）と、各種Ｉ／Ｏデバイスを制御するためのデバイスドライバ（ランタイム）と、割込み制御処理を実行するシステム管理プログラム（ＳＭ−ＢＩＯＳ）と、セットアップルーチンでユーザが設定した各種情報が含まれている。ＳＭ−ＢＩＯＳには、ＵＳＢ  ＦＤＤ２１を制御するするディスクドライバ処理ルーチン機能も含まれている。
【００３３】
ＳＭ−ＢＩＯＳは、ＳＭＭ上において実行される割込みプログラムであり、ＳＭＩハンドラ、及び分割処理ルーチンなどの各種ＳＭＩサービスルーチンを含む。本願発明の実施形態においては、ＳＭ−ＢＩＯＳは、Ｉ／Ｏトラップ命令（Ｉ／ＯトラップＳＭＩ）とＳＭＩ発生間隔レジスタにより、ＣＰＵにＳＭＩ＃信号を発行し、ＳＭＩサービスルーチンから分割処理ルーチンを実行する。
【００３４】
キーボードコントローラ（ＫＢＣ）／ＥＣ２０は、キーボード（ＫＢ）、およびポインティングスティック（ＰＳ）またはマウスなどのポインティングデバイスや内蔵電池の各種制御を行う。
【００３５】
モデム２２は、メモリ１２に読み込まれて実行される専用のデバイスドライバプログラムが図示しないＤＳＰ、ＭＯＤＥＭ（ＣＯＤＥＣ）およびサウンドＣＯＤＥＣを制御し、デジタル信号処理機能を利用したサウンド処理等を制御する。
【００３６】
次に、図２乃至図５を参照して、本発明の特徴とする特定のＯＳやドライバに依存せず、従来のＦＤＤ１７のディスクドライブ制御の処理と同様に、ＵＳＢ  ＦＤＤ２１のディスクドライブ制御の処理をサポートする機能について説明する。
【００３７】
図３は、本願発明の実施形態におけるディスクドライバ処理ルーチンであり、以下の通りに説明する。
【００３８】
コンピュータシステムの初期化実行時、ＩＲＴプログラムは、ＵＳＢ  ＦＤＤ２１の有無をＵＳＢ  ＨＣとの通信により取得し、従来のＦＤＤ１７の有無をＩ／Ｏ  ＧＡ１６に組込まれた所定レジスタから取得する。ＩＲＴプログラムは、上記取得結果からＵＳＢ  ＦＤＤ２１が有効か否かを判断し、ステータスを図２記載のＳＭ−ＲＡＭに保存する。
【００３９】
上位プログラム（ＯＳやアプリケーションプログラム）は、ＦＤＤの読み出し・書き込み処理を行うために、システムＢＩＯＳのＩＮＴ１３（ディスクドライバ処理ルーチン）を呼出す。ここでのＩＮＴ１３は、ＦＤＤをコントロールするためのＦＤＣを制御するシステムＢＩＯＳが持つディスクドライバ処理ルーチンである。
【００４０】
呼出されたディスクドライバ処理ルーチンは、ＵＳＢ  ＦＤＤ２１を使用出来るか否かをＩＲＴ時に保存したＳＭ−ＲＡＭ内のステータスデータで確認する（Ｓ１００）。
【００４１】
ディスクドライバ処理ルーチンは、上記レジスタを確認後、従来のＦＤＤ１７を使用すると判断した場合、従来のＦＤＤ１７を制御するＦＤＣに所定のコマンドとパラメータを設定する（Ｓ１００のＮＯ→ＳＴ１２０〜Ｓ１３０）。Ｓ１３０後、ディスクドライバ処理ルーチンは、ＦＤＣからハードウェア割込みＩＲＱ６がＦＤＣから受信したか否か判断する（Ｓ１４０）。ここでのハードウェア割込みＩＲＱ６とは、１５本のハードウェア割込み信号の一つで、ＦＤＣからの割込み信号である。割込みコントローラが該ＩＲＱ６信号を検出後、ＩＮＴ信号としてＣＰＵのＩＮＴＲ端子に出力する。
【００４２】
もしディスクドライバ処理ルーチンはハードウェア割込みＩＲＱ６を受信したと判断したならば、従来のＦＤＤ用ディスクドライブ制御の処理を終了する。
【００４３】
先のＳ１００で、ディバイスドライバ処理ルーチンは、Ｉ／Ｏ  ＧＡ１６に組込まれたレジスタを確認し、ＵＳＢ  ＦＤＤ２１が本体ＰＣのＵＳＢバスに接続され、且つ、ＵＳＢ  ＦＤＤ２１を使用すると判断した場合、ＵＳＢ  ＦＤＤ２１と通信する必要が有るか否か判断する（Ｓ１００のＹｅｓ→Ｓ１１０）。Ｓ１１０で、ディバイスドライバ処理ルーチンは、ＵＳＢ ＦＤＤ２１と通信する必要がないと判断した場合、ディスクドライバ処理ルーチンは出力レジスタに固定値を代入する（Ｓ１８０）。例えば、ＩＮＴ１３のファンクション１２ｈ〜１４ｈの場合、ディスクドライバ処理は、フロッピーディスクに対して何も実行しない。
【００４４】
Ｓ１１０で、ＵＳＢ  ＦＤＤ２１と通信する必要があると判断した場合（Ｓ１１０のＹｅｓ）、ディスクドライバ処理ルーチンは、ＵＳＢ  ＨＣを経由してＵＳＢ  ＦＤＤ２１との通信をＩ／ＯトラップＳＭＩを利用した分割処理ルーチンにて開始する（Ｓ１５０）。ＵＳＢ  ＦＤＤ２１との通信を行う分割処理ルーチンは、後述する図４を使用して詳細に説明する。
【００４５】
ディスクドライバ処理ルーチンは、Ｓ１５０でＵＳＢ  ＦＤＤ２１との通信開始後、ＳＭＩ発生間隔レジスタに設定された所定間隔で、ＣＰＵに対してＳＭＩ＃信号を発行する。ディスクドライバ処理ルーチンは、ＳＭ−ＲＡＭ上に設けられたワークエリアの所定フラグを参照することにより、Ｓ１５０の分割処理ルーチンが終了したか否かを判断する（Ｓ１６０）。ディスクドライバ処理ルーチンは、該フラグを参照して、Ｓ１５０の分割処理ルーチンが終了していないと判断した場合、分割処理ルーチンの終了待ち迄、Ｓ１６０を繰返す（Ｓ１６０のＮｏ）。Ｓ１６０で、ディスクドライバ処理ルーチンは、分割処理ルーチンが終了されたと判断した場合、ＳＭ−ＲＡＭ上に設けられたワークエリアから後述する通信結果を示すステータスデータを読み出す（Ｓ１６０のＹｅｓ→Ｓ１７０）。
【００４６】
本願発明の実施形態では、ＵＳＢ ＨＣを経由してＵＳＢ  ＦＤＤ２１との通信をＩ／ＯトラップＳＭＩを利用した分割処理ルーチンで実行することにより、従来、図２に示す通り、ＣＰＵのメモリアドレス空間の１Ｍバイト以内のＵＳＢＦＤＤ制御用のワークエリアをＳＭ−ＲＡＭ上の領域に持つことが可能となる。従って、ＯＳなどの上位プログラムが１Ｍバイト以内でユーザメモリ領域を有効に使用することが出来る。
【００４７】
ディスクドライバ処理ルーチンは、読み出されたステータスデータに従い、ディスクドライバ処理の出力レジスタを生成し、ディスクドライバ処理ルーチンを終了する（Ｓ１８０）。出力レジスタ生成とは、例えば、ＣＰＵのＡＨレジスタに０２ｈを設定し、更に、ＤＬレジスタのビット７にドライブ番号を設定して実行後、ＣＰＵのＣＦ、ＡＨ、ＡＬレジスタには、ＢＩＯＳの実行結果が設定される。ＡＨレジスタに８０ｈの値が設定されている場合、ディスケットドライブが準備状態でないと言うエラーステータスが設定される。
【００４８】
次に、図４と図５を参照して、本願発明の実施形態であるディスクドライバ処理がＵＳＢ  ＨＣ経由でＵＳＢ  ＦＤＤ２１との間の通信を分割処理ルーチンで実行した手順を以下の通りに説明する。
【００４９】
図３のＳ１５０により、分割処理ルーチンによるＵＳＢ  ＨＣを経由するＵＳＢ  ＦＤＤ２１と通信を開始するに当たり、ＣＰＵのＡＨレジスタに所定のＢＩＯＳファンクション処理の番号を設定し、特定のＩ／ＯアドレスでＩ／ＯトラップＳＭＩを発行する。ＳＭＩ＃信号発行に伴い、ＣＰＵステートが自動的にＳＭ−ＲＡＭ上に保存され、ＳＭＩハンドラが呼出される。呼出されたＳＭＩハンドラは、分割処理ルーチンを呼出し、ＵＳＢ  ＨＣにＵＳＢ  ＦＤＤ制御用通信データを設定する（Ｓ２００）。
【００５０】
Ｓ２００で、分割処理ルーチンは、ＵＳＢ  ＦＤＤ制御用通信データをＵＳＢＨＣに設定後、図２に示される通り、ＳＭ−ＲＡＭ上のワークエリアに設けられたタイムアウトカウントレジスタに後述するタイムアウト処理に用いるカウント値を設定する（Ｓ２１０）。ここでのタイムアウト処理のカウント値には、ＣＰＵ内のタイムスタンプカウンタ値を基準に５秒後の値が設定される。Ｓ２１０で、分割処理ルーチンは、タイムアウトカウント値設定後、タイムアウトカウントが開始される。ＵＳＢ  ＨＣは、Ｓ２００で分割処理ルーチンによって設定されたＵＳＢ ＦＤＤ制御用通信データを実行する（Ｓ２２０）。
【００５１】
Ｓ２２０で、ＵＳＢ  ＨＣによりコマンドが実行されると、分割処理ルーチンは、後述するソフトウェアＳＭＩ発生までの時間（チェック用カウンタ値）をチェック用カウンタに設定し、一旦、分割処理ルーチン内のＩ／ＯトラップＳＭＩ処理を終了する（Ｓ２４０）。ここでのチェック用カウンタ値には、図２に示される通り、ＳＭ−ＲＡＭ上のワークエリアに設けられたチェック用カウンタに、ＣＰＵ内のタイムスタンプカウンタ値を基準に１００ｍｓ秒後の値が設定される。
【００５２】
本願発明の実施形態では、システムＢＩＯＳ１９は、次のＳＭＩ処理が実行されるまでの間に他の処理（システムタイマー割込み処理等）を実行できるので、コンピュータシステムは効率よく処理を実行することが出来る。
【００５３】
ＣＰＵモジュール１１に組込まれたソフトＳＭＩ発生間隔レジスタから所定間隔でＳＭＩ＃信号がＣＰＵに対して発行される。例えば、ソフトＳＭＩ発生間隔レジスタには、１５ｍｓのカウント値が設定される。ＣＰＵに対してＳＭＩ＃信号発行後、ＳＭＩハンドラは、ＳＭＩの発生要因をチェックする。もし先のＳ２１０で設定されたチェック用カウンタ値が零と判断したならば、ＳＭＩハンドラは図５に示す様な分割処理ルーチンを呼出す（Ｓ２５０）。
【００５４】
呼出された分割処理ルーチンは、ＵＳＢ  ＨＣによるコマンド実行が正常に終了したか否かを判断する（Ｓ２７０）。分割処理ルーチンは、ＵＳＢ  ＨＣ内のステータスレジスタを読み出すことにより、該コマンド実行が処理中であるか、終了したか、エラーが無いかなどを判断する。
【００５５】
分割処理ルーチンは、Ｓ２７０でＵＳＢ  ＨＣによるコマンド実行が正常に終了されていなかったと判断した場合、又は、Ｓ２２０で実行したコマンドが未だ処理中である場合（Ｓ２７０のＮｏ）、該コマンド実行が、Ｓ２１０で設定されたタイムアウトカウント値に基づき、タイムアウトしていないか否か判断する（Ｓ２９０）。分割処理ルーチンは、Ｓ２１０で開始されたタイムカウントによりタイムアウトしたと判断した場合（Ｓ２９０のＹｅｓ）、つまり、ＵＳＢ  ＨＣから何の応答も無しにタイマアウトカウント値以上のカウント時間が経過した場合、コマンド実行をエラーとして処理し、ＳＭ−ＲＡＭ上に設けられたワークエリアのステータスにエラーを示す値を保存する（Ｓ３００）。
【００５６】
先のＳ２９０のタイムアウト判断処理で、分割処理ルーチンは、まだタイムアウトしていないと判断した場合（Ｓ２９０のＮｏ）、再度、ソフトウェアＳＭＩを発生する為のチェック用カウンタにカウント時間を設定する（Ｓ２３０）。これは、Ｓ２７０で、Ｓ２００で実行されたコマンドが正常に終了したと判断されるか、又は、Ｓ２９０でＳ２１０によって開始されたタイマアウトカウントによりタイムアウトしたと判断されるまで、繰返される。
【００５７】
Ｓ２４０のＩ／ＯトラップＳＭＩ処理終了からＳ２５０のチェック用カウンタからのソフトウェアＳＭＩ処理迄の間で、システムＢＩＯＳ１９が他の処理を実行中に、Ｓ２２０で実行したコマンドの終了により、ＵＳＢ  ＨＣからＳＭＩが発生した場合、分割処理ルーチンはＳ２３０で設定したチェック用カウンタの動作を停止し、Ｓ２２０で実行したコマンドが正常に終了したか否か判断する（Ｓ２６０→Ｓ２７０）。
【００５８】
Ｓ２１０でＵＳＢ  ＨＣによるコマンド実行が正常に終了したと判断された場合、分割処理ルーチンは、ＵＳＢ  ＨＣに設定した他のコマンド実行の処理状態をチェックし、ＵＳＢ  ＦＤＤ処理が終了したか否か判断する（Ｓ２７０のＹｅｓ→Ｓ２８０）。Ｓ２８０で分割処理ルーチンは、例えば、ＵＳＢ  ＦＤの所定セクタからの読み出し処理を実行するには、ＵＳＢ  ＨＣに複数のコマンドを設定し、実行する必要がある。もし分割処理ルーチンは、一例の処理の為のコマンドがまだ残っていると判断した場合（Ｓ２８０のＮｏ）、分割処理ルーチンはＵＳＢ  ＦＤＤ制御用通信データをＵＳＢ  ＨＣに設定する（Ｓ２８０のＮｏ→Ｓ２００）。
【００５９】
Ｓ２８０で、分割処理ルーチンはＵＳＢ  ＦＤＤ処理が終了したと判断した場合、ＵＳＢ  ＦＤＤとの通信処理が終了したことをＳＭ−ＲＡＭ上のワークエリアのフラグに所定値を設定し、更に、通信結果をＳＭ−ＲＡＭ上のワークエリアのステータスに保存する（Ｓ２８０のＹｅｓ→Ｓ３００）。
【００６０】
ディスクドライバ処理ルーチンは、ＵＳＢ  ＦＤＤとの通信の終了検出及びＵＳＢ  ＨＣによるコマンド実行に伴う通信結果をＩ／ＯトラップＳＭＩを発行して、ＳＭ−ＲＡＭ上のワークエリアのフラグやステータスから取得する。
【００６１】
Ｓ３００でステータスの結果を保存後、ソフトウェアＳＭＩの処理を終了し、分割処理ルーチンによる通信処理を終了する。
【００６２】
本願発明の実施形態では、ＵＳＢ  ＦＤＤ２１のディバイスドライブ制御の処理をシステムＢＩＯＳ１９のディバイスドライバ処理ルーチンで制御する。ディバイスドライバ処理ルーチンは、更に、ＵＳＢ  ＨＣとの通信を分割処理ルーチンにて実行する。分割処理ルーチンは、主メモリ１２のＳＭ−ＲＡＭ上のワークエリアで実行されるので、１Ｍ以下のメモリ領域の空き領域を増やすことができる。
【００６３】
また、従来、ＩＢＭ ＰＣ−ＡＴ互換パーソナルコンピュータでは、各Ｉ／Ｏ装置からのシステムＩＲＱは１５本と言う制限があるが、本願発明の実施形態では、ＵＳＢ  ＦＤＤ２１のディスクドライバ処理ルーチンで、システムＢＩＯＳ１９がＵＳＢ  ＨＣにコマンドを実行させる処理にソフトＳＭＩによる分割処理ルーチンを用いた。更に、ディスクドライバ処理ルーチンは、ＵＳＢ  ＨＣからの通信結果をＵＳＢ  ＨＣからのＳＭＩ＃信号を用いることにより、システムＩＲＱを使用せずに、ＵＳＢ  ＦＤＤのディスクドライブ制御処理を実行できる。
【００６４】
【発明の効果】
以上説明したように、この発明によれば、特定のＯＳやドライバに依存せず、従来のＩ／Ｏ装置の制御処理と同様に、Ｉ／Ｏ装置の制御処理をサポートすることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係わるコンピュータシステムのシステム構成を示すブロック図。
【図２】本実施形態におけるＣＰＵのメモリマップを示す図。
【図３】本実施形態におけるディスクドライバ処理ルーチンを示すフローチャート。
【図４】本実施形態におけるＵＳＢ  ＨＣを経由してＵＳＢ  ＦＤＤとの通信を分割処理ルーチンで実行した手順を示す示すフローチャート。
【図５】本実施形態におけるＵＳＢ  ＨＣを経由してＵＳＢ  ＦＤＤとの通信を分割処理ルーチンで実行した手順を示す示すフローチャート。
【符号の説明】
１１…ＣＰＵモジュール、１２…主メモリ、１３…ＶＧＡコントローラ、１４…ＶＲＡＭ、１５…ＰＣＩインターフェースブリッジ、１６…Ｉ／Ｏコントローラ、１７…外部ＦＤＤ、１９…フラッシュＢＩＯＳ−ＲＯＭ、２１…ＵＳＢ  ＦＤＤ、２２…モデム
【図１】
0004371466.tif 000002
【図２】
0004371466.tif 000003
【図３】
0004371466.tif 000004
【図４】
0004371466.tif 000005
【図５】
0004371466.tif 000006