(57)【特許請求の範囲】
【請求項１】
処理手段と、前記処理手段に結合され且つ内部に格納された状態情報を有する位置入力装置と、前記位置入力装置に対する電力を選択的に供給及び遮断するための、前記処理手段によって制御される電源手段と、第１の予め定められた条件に応答して、前記処理手段に前記位置入力装置から前記状態情報を獲得させて保存させ、その後に、前記電源手段に前記位置入力装置への電力を遮断させ、その後に、第２の予め定められた条件に応答して前記電源手段に前記位置入力装置への電力を復元させ、その後に、保存された前記状態情報を前記位置入力装置に再格納する制御手段とを含む装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的に、保護モードにおいて中断／再開機能を有するコンピュータシステムに係わる。
【０００２】
【従来の技術】
従来の技術
保護モードと非保護モードの両方で動作する機能を有するマイクロプロセッサが既に存在する。非保護モードでは、そのマイクロプロセッサ内で実行されるプログラムは、そのマイクロプロセッサの全ての動作機能へアクセスするが、１つ以上の保護モードでは、このプログラムが、マイクロプロセッサの動作機能に対して異なった度合いのアクセス可能性を有する。保護モードのマイクロプロセッサに基づくコンピュータシステムは、大半の目的を満たしてはいるが、全ての点で満足できるものであるというわけではなかった。
【０００３】
保護モードのプロセッサに基づくシステムに関する問題点の１つは、既存のマルチタスク処理オペレーティングシステムの下でアプリケーションプログラムを実行している間は、システム構成のある機能を変更することが一般に不可能であるということである。ユーザは、アプリケーションプログラムとオペレーティングシステムとから出て、必要なシステム構成の調整を行い、その後で、そのアプリケーションプログラム内のマルチタスク処理オペレーティングシステムに再入しなければならず、このことは面倒であり時間の浪費である。
【０００４】
考慮すべき別の問題は、様々なオペレーティングシステムの中には、ハードウェア内に保持された時刻及び日付情報とは別個の時刻及び日付情報を保持するものがあり、そのハードウェアが中断の間に自動的に時刻と日付を正確に保つのに対して、そのオペレーティングシステム内の時刻と日付が、中断に入る時点で静止状態になる可能性があるということである。
【０００５】
考慮すべき更に別の問題は、そのシステムが中断モードにある間に、ユーザが、パワーダウン（power down）時にそのシステムのフロッピー（登録商標）ディスク装置内にあったフロッピー（商標登録）ディスクを取り出す可能性があり、更には別のディスクと交換する可能性さえあるということである。中断モードが終了して、割り込まれていたアプリケーションプログラムが再開される時には、そのアプリケーションプログラムが、元のディスクが新たなディスク交換されていることを理解せず、その新たなディスクが実際に元のディスクであるという仮定の下にその新たなディスクにデータを書き込もうとし、その結果として、ユーザが望んでいないのに新たなディスク上の情報を壊してしまう危険性がある。
【０００６】
コンピュータシステムが実際に使用されていない時に、バッテリ作動システムがバッテリ電力を保存するために自動的に中断モードに入ることが望ましいが、これはユーザを苛立たせる可能性があり、更には、そのシステムが一時的にＡＣ電源によって作動している時には全く必要がない。
【０００７】
コンピュータシステムの電源をオン・オフするのと、そのコンピュータシステムを中断モードにするのとに、別々のスイッチが使用される時には、このことは、そのハードウェアのコストを上昇させると共に、そのコンピュータシステムの既存の状態を失うことなしに中断モードに必要に応じて出たり入ったりすることをユーザが基本的に意図する状況下では、ユーザが電源切断ボタンを不注意に動かし、その結果として、そのコンピュータシステムの現在の動作状態を失ってしまう危険性をもたらす。
【０００８】
更に別の考慮すべき問題は、ユーザが自分のコンピュータシステムを別のユーザに貸し出し、この別のユーザがシステム構成を変更する時に、元のユーザによって設定されたシステム構成が失われ、従って、そのコンピュータシステムが元のユーザに返却された時に、その元のユーザが自分のシステム構成を復元するための面倒な作業に直面させられるということである。
【０００９】
更に別の問題点は、ユーザが、アプリケーションプログラムから出ずに又はそのコンピュータシステムをオフとせずに、短時間だけ自分のコンピュータシステムから離れることを望むと同時に、そのコンピュータシステム内の情報を変更又は調査するために他の人間がキーボード（又は他の入力装置）を使用することを防止することを求める場合があるということである。
【００１０】
更に別の問題点は、従来のフロッピー（登録商標）ディスク駆動装置が、書込みは可能だが読取りは不可能である内部レジスタを有することが多いということである。そうしたフロッピー（登録商標）ディスク駆動装置が電力の節約のために中断モード中はオフされる場合、そのフロッピー（登録商標）ディスク駆動装置が中断モードの終了時に再びオンされる時に、内部レジスタの内容が復元されなければならない。しかし、内部レジスタの内容を確認するために、中断モードに入る前に内部レジスタを読み取ることは不可能である。既存のフロッピー（登録商標）ディスク駆動装置に適合可能なコンピュータシステムを所有することをユーザが望むが故に、その内部レジスタの全てが読取り可能である新しいフロッピー（登録商標）ディスク駆動装置を簡単に設計することは不可能である。
【００１１】
更に別の考慮すべき問題点は、新たな機能を得るためにコンピュータシステム内のファームウェアを時に応じてアップグレードすることが可能であることが必要とされることが多いが、時に応じてアップグレードされるファームウェアは、ハードウェアのより新しいバージョンに対してだけ適合可能であるということである。不幸にして、アップグレードされたファームウェアがそのハードウェアの回路基板に適合可能であるか否かを判断するためには、そのハードウェアの現在の状態が、ハードウェアユニットを分解してその回路基板上の版コード（revision code）を調べることによって、ハードウェアの現在の状態が確認されなければならないことが普通であり、このことは面倒で時間を要する作業である。
【００１２】
中断モードを実行する時には、一時的に割り込まれているアプリケーションプログラムの現在状態を失うことを避けるために、その主記憶装置に対する電力の維持が必要であると一般的に考えられているが、そのシステムを駆動するバッテリが、主記憶装置を維持しなくてよい時よりも主記憶装置を維持しなければならない時の方がより速やかに電力を失うが故に、主記憶装置の電力を維持する場合の中断間隔の最大持続時間は、そうでない場合の中断間隔の最大持続時間よりも短い。
【００１３】
商業的に入手可能なハードディスク駆動装置の多くは、様々な方法で選択的にプログラムされることが可能である。例えば、ブロックの終わりに１つだけの割込みを伴って複数のセクタブロック内でデータ転送が起こることを可能にする、複数モード設定にプログラムされることが可能なハードディスク駆動装置が存在する。或いは、予め決められた時間値を与えられることが可能であり、そのハードディスク駆動装置へのアクセスがないままこの時間期間が経過し終わる時にはいつも、その駆動装置がその装置のモータを自動的に停止させ、更に別のアクセスが起こるまでそのモータを再起動することがないハードディスク駆動装置も存在する。更には、ディスク１つ当たりの特定数のトラックと、トラック１つ当たりの特定数のセクタと、特定数のヘッドとに適合するように構成されることが可能なハードディスク駆動装置が存在する。商業的に入手可能なハードディスク駆動装置では、これらの特徴は、コマンド／データをハードディスク駆動装置に送ることによって初期設定されるが、こうしたハードディスク駆動装置は一般的に、これらの特徴がどのように設定されたかという表示をそのコンピュータシステムがハードディスク駆動装置から後で得ることを可能にはしない。オペレーティングシステムがこれらの特徴がどのように設定されたかを既に知っているということが、当然のことと前提されている。
【００１４】
中断／再開機能を有するシステムと共にこのタイプのハードディスクを使用するためには、このハードディスク駆動装置内の電子回路構成要素への電力の遮断によって中断動作中に前記電子回路構成要素がその現在状態を忘れるが故に、中断動作前のハードディスク駆動装置の正確な状態がその中断前に格納されることと、この正確な状態が、その後で動作が再開される時に、そのハードディスク駆動装置の中に再格納されることとが重要である。そうでない場合には、ハードディスク駆動装置が、中断動作の前のそのハードディスク駆動装置の動作とは異なった仕方で中断動作後に動作するであろうし、一方、このことは、アプリケーションプログラムが異なった形で及び／又は不適切に動作することを引き起こし、その結果として、中断／再開機能の目的全体を無効化することが明白である。
【００１５】
従って、（読出し専用記憶素子内のファームウェアを含む）コンピュータシステムのハードウェアは、既にプログラムされたそのハードディスク駆動装置の特定の設定値の記録をそのハードウェアがハードディスク駆動装置の外部に保持するように、設計されることが重要である。従って、ＩＢＭコンパチブルタイプの従来のシステムでは、一般的に基本入出力システム（basic input／output system）（ＢＩＯＳ）と呼ばれるファームウェアプログラムが、ディスク設定値のこうした外部記録を保持する。そのオペレーティングシステムがＢＩＯＳのルーチンだけを経由してディスク駆動装置と通信していたが故に、ＢＩＯＳは、全く問題なく上記記録を保持することが可能であった。しかし、ＢＩＯＳルーチンをバイパスしてハードディスク駆動装置内のパラメータを直接的にセットする、ＯＳ／２やＵＮＩＸ（登録商標）のような商業的に入手可能なオペレーティングシステムが存在する。ＢＩＯＳがバイパスされると、このＢＩＯＳが、ハードディスク駆動装置内にプログラムされた特定の設定値の正確な記録を保持することは明らかに不可能である。従って、中断／再開機能を有し且つ従来のハードディスク駆動装置を使用するシステムは、ＯＳ／２やＵＮＩＸ（登録商標）のような特定の既存のプログラムによる適正な動作を保証することが不可能である。一方、中断／再開機能を有するシステム内でのＯＳ／２やＵＮＩＸ（登録商標）の適正な動作を可能にはするが、既存のインタフェース規格とケーブル規格とに適合不可能である新たなハードディスク駆動装置を設計することは、回避することが望ましい。
【００１６】
ユーザが電源をオフにすることを忘れたまま不注意に蓋を閉じた場合には、そのコンピュータシステムが動作し続けてバッテリを消耗させてしまう可能性がある。この問題の１つの解決策は、閉じ位置への蓋の動きに応じてそのコンピュータシステムへの給電を遮断する蓋スイッチを配備することである。しかし、この場合には、ユーザが偶発的に蓋にぶつかって蓋が閉じることを引き起こすと、そのコンピュータ内の揮発性半導体記憶素子の内容が失われてしまい、従って、ユーザが、失うことを望みもしなかった重要なデータ情報やプログラム情報を失う可能性があるが故に、上記の解決策は不利である。
【００１７】
これに代わる公知の解決策は、そのコンピュータシステムへの給電を遮断することではなく、可聴警告音を生じさせることによって、その蓋の閉じに対して応答することである。これは、ユーザかその蓋を再び開けて、データ情報とプログラム情報とを全く失うことなく動作を継続させることを可能にする。しかし、ユーザにその警告音が聞こえない場合、又は、警告音の後で蓋を開けることをユーザが忘れる場合には、バッテリが消耗して、半導体記憶装置の内容の消失を引き起こす可能性がある。
【００１８】
従来のシステムが待機モードに入る時には、そのコンピュータがディスプレイを消してプログラム実行を停止させるが故に、待機モードに入っていることがユーザにとって非常に明確である。更に、待機モードから出て通常動作に戻るためにユーザがキー又は押しボタンスイッチを押すと、長い時間間隔が経過し終わった後に、そのシステムが再び正常な動作に戻ることが一般的であるが、このことはユーザにとって非常に苛立たしいものとなり得る。
【００１９】
【発明が解決しようとする課題】
本発明の目的の１つは、保護モードプロセッサの周囲に構成され、且つ、限定動作モードが有効である時にさえ中断と再開を適正に行うことが可能である、コンピュータシステムを提供することである。
【００２０】
本発明の別の目的は、アプリケーションプログラムから抜け出すことなしに、マルチタスキングオペレーティングシステムの下でシステム構成情報が変更されることが可能なコンピュータシステムを提供することである。
【００２１】
本発明の更に別の目的は、稼働中のオペレーティングシステム内の時刻及び日付情報が中断と再開の後でも正確であることを確保することが可能なコンピュータシステムを提供することである。
【００２２】
本発明の更に別の目的は、中断及び再開の動作を行う一方で、中断時にコンピュータシステムのフロッピー（登録商標）ディスク駆動装置内に存在するフロッピー（登録商標）ディスクの取り出し又は交換に起因するエラーの危険性を低下させることが可能なコンピュータシステムを提供することである。
【００２３】
本発明の更に別の目的は、コンピュータシステムがＡＣ電源とＤＣ電源の各々によって動作する時に使用するための別々の構成パラメータの集合と、システムがＡＣ電源とＤＣ電源との間で切り替えられる時に、上記の別々の構成の間を自動的に切り替えるための装置とを有する、コンピュータシステムを提供することである。
【００２４】
本発明の更に別の目的は、コンピュータシステムを中断モードか電源切断モードのどちらかにするために非能動化される単一のボタンを有し、且つこのボタンの効果を指定する内部装置を有する、中断／再開システムを提供することである。
【００２５】
本発明の更に別の目的は、第１のユーザがコンピュータシステムを第２のユーザに貸して第２のユーザがその構成全体を変更した後で、第１のユーザが、そのコンピュータシステムが第２のユーザに貸された時に有効であった構成を迅速且つ容易に復元することが可能であるような、マルチレベル構成を有するコンピュータシステムを提供することである。
【００２６】
本発明の更に別の目的は、物理的変更なしに従来のフロッピー（登録商標）ディスク駆動装置を使用し、且つ中断及び再開動作の後にそのフロッピー（登録商標）ディスク駆動装置を適正に再構成することが可能である、コンピュータシステムを提供することである。
【００２７】
本発明の更に別の目的は、ソフトウェア又はファームウェアがそのコンピュータシステム内の特定のハードウェアの現在の版の状態（revision status）を直接的に確認することが可能であるコンピュータシステムを提供することである。
【００２８】
本発明の更に別の目的は、主記憶装置への電力供給を維持せずに中断及び再開動作を行うことが可能なコンピュータシステムを提供することである。
本発明の更に別の目的は、既存のプログラムに対する適合性を維持すると同時に、現行のインタフェース規格とケーブル規格とに対する適合性を維持するように、中断／再開機能を有するコンピュータシステム内でのハードディスク駆動装置の使用を容易化するための方法と装置を提供することである。
【００２９】
本発明の更に別の目的は、そのディスク駆動装置がその現在状態の保存（save）と復元とを容易にするようなコンピュータシステムを提供することである。
本発明の更に別の目的は、そのハードディスク駆動装置が既存のハードディスク駆動装置のコストに匹敵するコストを有するように、ハードディスク駆動装置の回路構成要素とその関連のケーブルとの設計変更を全く又は僅かしか含まない上記の装置を提供することである。
【００３０】
従って、本発明の更に別の目的は、蓋の閉じに応答してシステムが中断モードに入り、その後で蓋の開きに応答してシステムが中断モードから出ることを可能にする構成を提供することである。
【００３１】
本発明の更に別の目的は、通常の動作モードを上回る電力レベルの低減を可能にするが、ユーザには実際上は感知できない、更に別のモードを有するコンピュータシステムを提供することである。
【００３２】
本発明の好ましい実施例が、次の添付図面を参照して、以下で詳細に説明される。
【００３３】
【発明の実施の形態】
詳細な説明
図１（図１ａ、１ｂ、１ｃ、１ｄ）は、本発明の特徴を具体化する「ノートブック（notebook）」タイプのラップトップコンピュータシステム３１０のブロック図である。このコンピュータシステム３１０は、主プロセッサ３１１と、電源制御回路３１２と、手動操作可能な電源制御スイッチ３１３と、システム制御プロセッサ（ＳＣＰ）３１６と、内部キーボード３１７と、ビデオ制御装置回路３１８と、モノクロ液晶ディスプレイ（ＬＣＤ）ユニット３１６と、モデム３２２と、ハードディスク駆動装置（ＨＤＤ）３２３と、ダイナミックランダムアクセス記憶素子（ＤＲＡＭ）チップを用いて実現される主記憶装置３２６と、フロッピー（登録商標）ディスク駆動装置（ＦＤＤ）３２７と、読出し専用記憶素子（ＲＯＭ）３２８と、フラッシュＲＡＭ３３１とを含む。
【００３４】
図１のシステム３１０内での使用に適したマイクロプロセッサは、本出願人からのライセンスの下にＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ（Santa Clara, California）によって開発されたＩｎｔｅｌ  １３８６−ＳＬである。機能的に同等である他のマイクロプロセッサが開発されて、主プロセッサ３１１用に使用されることも可能である。
【００３５】
Ｉｎｔｅｌ  ３８６−ＳＬに関する詳細な情報はＩｎｔｅｌから入手可能であるが故に、その内部アーキテクチャの全体は本明細書では詳細に図示及び説明されない。プロセッサ３１１は、１つの非限定モードと、少なくとも１つの限定モード又は「保護」モードとを有する。図１では、本発明の理解にとって重要である特徴だけが図解され説明されている。
【００３６】
具体的には、プロセッサ３１１はバス制御回路３３６を含み、このバス制御回路３３６は、そのコンピュータシステムの他の主要構成要素にプロセッサ３１１を接続する、アドレスバス３３７と制御バス３３８と双方向データバス３３９とを制御する。更に、プロセッサ３１１は、６個の割込み信号ＩＲＱ  ０、１、６、９、１２、１４に結合された割込みセレクタ３４１も含む。ＩＲＱマスクレジスタ３４２が、上記６個の割込み信号ラインに各々１つずつ対応する６個のビットを有するマスクを、ソフトウェアによってロードされることが可能である。各々のマスクビットが２進数「１」である時には、セレクタ３４１は、その関連の割込みラインが能動化される時にはいつでも、その単一のＩＮＴＲ出力ラインを能動化させ、一方、マスクビットが２進数「０」である時には、セレクタ３４１は、関連の割込みラインを無視する。ブレーク事象セレクタ（break event selector）３４６とシステム事象セレクタ（system event selector）３４７は各々に複数の入力を有し、異なった信号がセレクタ３４６、３４７の両方の各々の入力に結合される。これらの信号は、６個のＩＲＱ割込み信号と、割込みセレクタ３４１からのＩＮＴＲ信号とを含む。その他の信号は、モデム３２２によって発生させられるモデム呼出し表示器信号（modem ring indicator signal）ＭＤＭＲＩと、ＳＣＰ３１６によって発生させられるバッテリ電力低下警告信号ＢＡＴＴＬＯＷと、パリティチェックを行う主記憶装置３２６のような装置によって制御されることることが可能な入出力（Ｉ／Ｏ）チャネルチェック信号ＩＯＣＨＣＫと、ＩＲＱ割込み信号よりも高い優先順位を有するマスク不可能割込み信号ＮＭＩと、手動操作スイッチ３１３からの出力信号ＳＲＢＴＮと、後で更に詳細に説明されるＡＵＴＯ  ＳＵＳＰＥＮＤ信号とを含む。ソフトウェアによってロードされるマスクレジスタ３４８、３４９の各々がセレクタ３４６、３４７の各々に関連付けられ、これらの関連付けられたマスクレジスタ３４８、３４９内のセレクタ３４６、３４７の各々が、セレクタ３４１とそれに関連したマスクレジスタ３４２とに関して上記で説明された仕方に類似した仕方で働く。ブレーク事象セレクタ３４６はＢＲＥＡＫ  ＥＶＥＮＴ出力信号を発生させ、システム事象セレクタ３４７はＳＹＳＴＥＭ  ＥＶＥＮＴ出力信号を発生させる。
【００３７】
プロセッサ３１１は、３つのハードウェアタイマ３５１〜３５３、詳細には、局所タイマ３５１と、大域タイマ３５２と、中断タイマ３５３とを含む。プリセットレジスタ３５６〜３５８の各々がこれらの各タイマに関連付けられ、これらのプリセットレジスタ３５６〜３５８の各々はソフトウェアによって制御され、その関連のタイマをイネーブル（enable）又はディスエイブル（disable）にするようにセットされることが可能である。更に、プリセットレジスタ３５６〜３５８の各々は、その関連のタイマが測定しなければならない時間間隔を定義する数値を含む。ＳＹＳＴＥＭ  ＥＶＥＮＴ信号がタイマ３５２、３５３の各々に接続され、この信号が能動化させられる毎に、この信号は、イネーブル状態にされたこれらの各タイマが、そのタイマ各々の特定の時間間隔の計時を再スタートすることを引き起こす。ユーザがシステムを頻繁に使用する時には、ＳＹＳＴＥＭ  ＥＶＥＮＴ信号が非常に頻繁に能動化させられるので、典型的にはタイマ３５２、３５３がその特定の時間間隔全部を経過し終えることは不可能である。一方、ユーザが一定の時間の間そのシステムから離れる時には、このＳＹＳＴＥＭ  ＥＶＥＮＴ信号が長時間に亙って非能動化状態のままであり、この場合には、タイマ３５２、３５３は、その特定の時間間隔全部を経過し終える。タイマ３５２は、その特定の時間間隔を経過し終えた時に、出力信号ＧＬＯＢＡＬ  ＳＴＡＮＤＢＹを能動化させ、タイマ３５３は、その特定の時間間隔を経過し終える時に、出力信号ＡＵＴＯ  ＳＵＳＰＥＮＤを能動化させる。タイマ３５３は、中断時間間隔を計時するために備えられたハードウェアタイマではあるが、この実施例では、このハードウェアタイマはディスエイブル状態に保たれ、その中断時間間隔は、詳細に後述する仕方でＳＣＰ内のソフトウェアによって計時される。局所タイマ３５１はタイマ３５２、３５３と同様の仕方で動作し、その特定の時間間隔を経過し終える場合には出力信号ＬＯＣＡＬ  ＳＴＡＮＤＢＹを生じさせるが、タイマ３５１を再スタートさせるために使用される信号は別の信号ＦＤＤ  ＴＲＡＰであり、この信号については後述する。
【００３８】
プロセッサ３５１はＩ／Ｏトラップ論理回路３６１を含み、このＩ／Ｏトラップ論理回路３６１は、バス制御ユニット３３６から３６３においてアドレス及び制御情報を受け取り、Ｉ／Ｏとラップ制御レジスタ３６２によって制御される。レジスタ３６２はソフトウェアによってセットされ、この実施例では、フロッピー（登録商標）ディスク駆動装置３２７内の制御レジスタに割り当てられたＩ／Ｏアドレスの範囲と、システム事象マスクレジスタ３４９に割り当てられたＩ／Ｏアドレスの範囲とを定義する。Ｉ／Ｏトラップ論理回路３６１がこれらのアドレスの一方がアクセスされていることを検出する時はいつでも、このＩ／Ｏトラップ論理回路３６１は、フロッピー（登録商標）ディスク駆動装置がアクセスされている場合には、その回路３６１のＦＤＤ  ＴＲＡＰ出力信号を生じさせ、マスクレジスタがアクセスされている場合には、その回路３６１のＭＡＳＫ  ＴＲＡＰ出力信号を生じさせる。上記ＦＤＤ  ＴＲＡＰ出力信号は、上記のように、局所タイマ３５１を再スタートさせるという効果を有する。
【００３９】
ＢＡＴＴＬＯＷ信号と、ＦＤＤ  ＴＲＡＰ信号と、ＭＡＳＫ  ＴＲＡＰ信号と、ＬＯＣＡＬ  ＳＴＡＮＤＢＹ信号と、ＧＬＯＢＡＬ  ＳＴＡＮＤＢＹ信号と、ＡＵＴＯ  ＳＵＳＰＥＮＤ信号と、ＳＲＢＴＮ信号との全てが、ＯＲゲート３６６の各々の入力に接続される。ゲート３６６の別の入力がＳＣＰ３１６の外部電源管理割込み信号（external power management interrupt signal）ＥＸＴＰＭＩに接続され、更に別の入力が、ソフトウェアによって選択的に能動化させられることが可能な電源管理割込み信号（power management interrupt signal）に３６７において接続される。フリップフロップ３６８は、それがセットされる時にゲート３６６の出力をディスエイブルにすると共に、ソフトウェアによって制御されることが可能である。ゲート３６６への入力のいずれか１つが能動化させられる時に、ゲート３６６がその出力において電源管理割込み信号ＰＭＩを発生させる。
【００４０】
ＰＭＩ信号の能動化に応答して、ＰＭＩイネーブルフリップフロップ（ＰＭＩenable flip-flop）が自動的にセットされ、状態レジスタ３７１が、ゲート３６６への入力の論理状態のイメージを自動的にロードされ、その結果として、その後で、ソフトウェアがレジスタ３７１を調べ、ＰＭＩ割込み信号を発生させる原因となったゲート３６６への１つ以上の入力を識別する。これに加えて、回路３７２は、バス制御ユニット３３６から３７３においてアドレス及び制御情報を受け取り、この回路３７２は、実際上は、バス制御ユニット３３６によって行われる直前の幾つかのＩ／Ｏバスサイクルを格納する先入れ先出し（ＦＩＦＯ）メモリである。ＰＭＩ信号の能動化に応答して、回路３７２はこの情報を格納するのを止め、こうして回路３７２は直前の複数のＩ／Ｏサイクルの静的表示（static indication）を収容する。
【００４１】
更に、プロセッサ３１１はリアルタイムクロック（ＲＴＣ）回路３７６も含み、このリアルタイムクロック回路は、ソフトウェアにとってアクセス可能である少数のＲＡＭ３３７を含む。ＲＡＭ３３７は、日付と、時刻と、一定の量のシステム構成情報を含む。コンピュータシステム３１０が完全にオフされると、それにも係わらず、リアルタイムクロック回路３７６が、電源制御回路３１２内のバックアップバッテリ３７９から少量の電力を３７８において受け取り、その結果として、リアルタイムクロック回路３７６がＲＡＭ３３７内の日付及び時刻情報を正確に保つことが可能である。割込み信号ＩＲＱ０がリアルタイムクロック回路３７６によって発生させられ、特に周期的に生じさせられ、従って、それ自体の時刻又は日付を維持するオペレーティングシステム又はアプリケーションプログラムは、そうした時刻及び日付の更新を維持することが可能である。更に、リアルタイムクロック回路３７６は、特定の日付及び時刻にＡＬＡＲＭ出力を能動化させるように、ソフトウェアによってプログラムされることも可能である。
【００４２】
このＡＬＡＲＭ信号は、再開セレクタ３８１の１つの入力に接続され、再開セレクタ３８１の他の３つの入力は、手動操作スイッチ３１３からのＳＲＢＴＮ信号と、ＳＣＰ３１６からのＢＡＴＴＬＯＷ信号と、モデム３３２からのモデム呼出し表示器信号ＭＤＭＲＩとに接続される。ソフトウェアによってセットされることが可能な再開マスクレジスタ３８２が、ＡＬＡＲＭ信号がＭＤＭＲＩ信号かＢＡＴＴＬＯＷ信号かを選択的にマスクするために使用される。マスクレジスタ３８２がスイッチ３１３からのＳＲＢＴＮ信号を直接マスクすることは不可能である。しかし、ＢＡＴＴＬＯＷ信号が能動化させられ且つマスクレジスタ３８２によってマスクされない場合には、マスクレジスタ３８２は、ＳＲＢＴＮ信号とＡＬＡＲＭ信号とＭＤＭＲＩ信号の３つをマスクするだろう。要約すれば、ＢＡＴＴＬＯＷ信号がマスクされるか、又は、マスクされないが非能動化される場合には、再開セレクタ３８１が、信号ＳＲＢＴＮの能動化に応答して、更には、レジスタ３８２によってマスクされない時に信号ＡＬＡＲＭと信号ＭＤＭＲＩのどちらかの能動化に応答して、そのセレクタの出力においてＲＥＳＵＭＥ  ＲＥＳＥＴ信号を発生させる。このＲＥＳＵＭＥ  ＲＥＳＥＴ信号はプロセッサ３１１の特殊なリセットであり、これについては後で再び説明される。プロセッサ３１１はハードウェア再開フラグ３８３を含み、ＲＥＳＵＭＥ  ＲＥＳＥＴ信号によって強制的にセットされ、他のタイプのリセット信号によって強制的にクリアされる。ＲＥＳＵＭＥフラグ３８３は、ソフトウェアによってテストされクリアされることが可能である。
【００４３】
更に、プロセッサ３１１はリフレッシュ制御回路３８６も含み、このリフレッシュ制御回路３８６は主記憶装置３２６内のＤＲＡＭチップのリフレッシュを制御する。このリフレッシュ制御回路３８６は、様々なリフレッシュ速度でメモリチップをリフレッシュするようにセットされることが可能であり、ＤＲＡＭチップの電力消費は、高いリフレッシュ速度の場合よりも低いリフレッシュ速度の場合の方が少ない。
【００４４】
更に、プロセッサ３１１はクロック発生回路３８７も含み、このクロック発生回路３８７は、ＣＰＵクロック信号と、ＳＣＰ３１６の割込み入力に供給されるキーボードクロック信号ＫＢＣＬＫとを発生させる。ＣＰＵクロック信号として一定の範囲の周波数の中の１つの周波数を選択するために、又は、ＣＰＵクロック信号を完全に停止させるために、速度制御レジスタ３８８がソフトウェアによってセットされることが可能である。プロセッサ３１１内の電力消費はそのクロック速度に依存しており、明確に言えば、この電力消費はクロック速度が低いほど小さい。
【００４５】
プロセッサ３１１は信号３９１を出力し、この信号３９１は通常の圧電スピーカ３９２に接続され、この信号が能動化させられる時には、この信号がスピーカ３９２から警告音を発生させる。これに加えて、プロセッサ３１１は、ＳＣＰに接続される信号ＣＰＵＳＵＲＥＱを発生させ、この信号ＣＰＵＳＵＲＥＱは後でより詳細に説明される。更に、このプロセッサ３１１は２つの信号ＦＤＤＳＬＴ、ＨＤＤＳＬＴを生じさせ、これらの信号の各々は、非能動状態にある時に、フロッピー（登録商標）ディスク駆動装置３２７とハードディスク駆動装置３２３のスイッチを切るか、又は少なくとも給電を低減させる。プロセッサ３１１は更に、電源制御回路３１２に接続された２つの制御信号ＳＹＳＰＷＲＯＦＦ、ＫＩＬＬＶＣＣを発生させるが、これらの信号については後で更に詳細に説明される。
【００４６】
上記のように、電源制御回路３１２はバックアップバッテリ３７９を含む。これに加えて、電源制御回路３１２は再充電可能バッテリ３９６を有し、標準的な壁ソケットの中に差し込まれるのに適合した従来の外部ＡＣ／ＤＣ変換器３９８が取外し自在に接続されることが可能なコネクタ３９７を含む。変換器３９８が存在して電源制御回路３１２に電力を供給する時には、変換器３９８からの電力が、コンピュータシステム３１０全体に亙って必要とされる電力を供給すると同時に再充電可能バッテリ３９６を再充電するために、回路３１２によって使用される。コネクタ３９７に変換器３９８が接続されない時には、コンピュータシステム３１０の稼働中にそのコンピュータシステム全体で必要とされる電力が、再充電可能バッテリ３９６から取り出される。変換器３９８が存在せず、且つ、再充電可能バッテリ３９６が放電状態であるか又は交換のために取り外されている時には、バックアップバッテリ３７９が、少なくとも低電力モードにおいてコンピュータシステムを維持するのに十分な電力を供給するために使用される。
【００４７】
電源制御回路３１２は、プロセッサ３１１と主記憶装置３２６とフラッシュＲＡＭ３３１とに電力を供給するための電力出力ＰＭＶＣＣを有し、その他のシステム構成要素に電力を供給するための出力ＳＹＳＶＣＣを有する。これらの２つの電力出力に対する電力の供給は、状態回路４０１によって制御される。図２は、電源制御回路３１２の状態回路４０１の基本動作を示す状態図である。この状態図は３つの状態４０６〜４０８を含む。状態４０６は、図１のコンピュータシステム３１０が完全にオフである場合の状況を表す。この状態では、ＳＹＳＶＣＣとＰＭＶＣＣの両方がオフであり、プロセッサ３１１内のリアルタイムクロック回路３７６と、電源制御回路３１２内の状態回路４０１だけが、電力を受け取る。第２の状態４０７は、コンピュータシステム３１０の通常動作モードに相当すると共に、大域待機モードに概ね相当し、この大域待機モードでは、より詳細に後述されるように、電源を保存するために、特定のシステム構成要素が低電力モードに置かれ、且つプロセッサ３１１が動作を停止する。この状態では、ＳＹＳＶＣＣとＰＭＶＣＣの両方がオンであり、リアルタイムクロック回路３７６はその電力をバッテリ３７９からではなくＰＭＶＣＣから取り出す。第３の状態４０８は中断モードに概ね相当する。第３の状態４０８では、電力出力ＰＭＶＣＣがオフされるが、電力出力ＳＹＳＶＣＣが電源の保存のためにオフされる。
【００４８】
そのコンピュータシステムがオフであり且つ状態回路４０１が状態４０６にある状況から開始して、そのコンピュータシステムをオンするためにユーザがスイッチ３１３を手動操作で起動する時に、状態機械４０１は４０９において状態４０７に進み、状態４０７において状態機械４０１はＳＹＳＶＣＣとＰＭＶＣＣの両方をオンにする。プロセッサ３１１が特定の時点で中断モードに入ることを意図するならば、このプロセッサ３１１は状態回路４０１への信号ＳＹＳＰＷＲＯＦＦを能動化させる。この信号ＳＹＳＰＷＲＯＦＦは、状態回路４０１が４１１において状態４０８に移行することを引き起こし、この状態４０８では、状態回路４０１はＰＭＶＣＣをオンに維持するがＳＹＳＶＣＣをオフにする。ＳＹＳＶＣＣが、プロセッサ３１１と記憶装置３２６とＲＡＭ３３１とを除く、概ね全ての構成要素に電力を供給するために使用されるので、通常はＳＹＳＶＣＣによって給電される諸構成要素の電力消費がゼロにされる。これと同時に、ＰＭＶＣＣは、中断モード中に主記憶装置３２６内の情報を維持すると共に、プロセッサ３１１が中断モードから回復することが可能であるようにプロセッサ３１１とＲＡＭ３３１に電力を供給する。プロセッサ３１１は、中断モードから回復すると、信号ＳＹＳＰＷＲＯＦＦを非能動化させ、従って、状態機械４０１が状態４０８から状態４０７へ移行し、電力出力ＳＹＳＶＣＣを再びオンにし、それによって、そのシステムの周辺構成要素が再び使用されることが可能であるように、こうした周辺構成要素に再給電する。そのシステムが完全にオフにされたことが特定の時点で確認される場合には、プロセッサ３１１は最終的に状態機械４０１への信号ＫＩＬＬＶＣＣを能動化させ、この信号ＫＩＬＬＶＣＣは、状態機械が４１３において状態４０７から状態４０６に戻ることを生じさせ、状態４０６において状態機械はＳＹＳＶＣＣとＰＭＶＣＣの両方をオフにする。
【００４９】
そのコンピュータシステムが変換器３９８からのＡＣ電力によって作動しているか、又は、バッテリ３９６（又はバッテリ３９７）からのＤＣ電力によって作動しているかを示すために、電源制御回路３１２がシステム制御プロセッサ（ＳＣＰ）３１６に対する信号ＤＣ／ＡＣを生じさせる。再充電可能バッテリ３９６の端子電圧も、アナログ信号ＲＢＡＴＴの形でＳＣＰ３１６に供給され、従って、ＳＣＰ３１６はバッテリの充電状態を監視することが可能である。具体的には、ＳＣＰ３１６はアナログ／ディジタル（Ａ／Ｄ）変換器４１６を有し、この変換器は、バッテリ３９６からのアナログ端子電圧を、ＳＣＰ３１６によって解析可能なディジタル信号に変換する。上記電圧が低すぎることをＳＣＰ３１６が確認すると、ＳＣＰ３１６は、主記憶装置３１１に対する上記ＢＡＴＴＬＯＷ信号を能動化させる。
【００５０】
ＳＣＰ３１６について言及すれば、この好ましい実施例におけるＳＣＰはＩｎｔｅｌ  ８７Ｃ５１ＧＢプロセッサに基づくが、このＳＣＰとして使用されることが可能な他の商業的に入手可能なプロセッサが存在するということを理解されたい。このＳＣＰはスピーカ制御信号４１７を発生させ、このスピーカ制御信号４１７はスピーカ３９２に接続され、スピーカ３９２に警告音を発生させるために使用されることが可能である。これに加えて、このＳＣＰは信号ＩＲＱ１とＩＲＱ１２を発生させ、これらの信号は、上記のように、主プロセッサ３１１の割込み入力に接続される。更に、ＳＣＰ３１６は外部コネクタ４１８に接続され、この外部コネクタ４１８には従来通りの外部キーボード又はマウス４２１が任意に接続されることが可能である。ＳＣＰ３１６は４２２において内部キーボート３１７にも接続される。このＳＣＰは信号ＣＲＴ／ＬＣＤをビデオ制御装置３１８に出力し、この信号ＣＲＴ／ＬＣＤは、ビデオ制御装置３１８が、稼働中のディスプレイユニットを液晶ディスプレイユニット３２１であると認識すべきか、又は、ビデオ制御装置３１８に接続されたコネクタ４２７に任意にケーブル接続されることが可能な従来の外部ＣＲＴ４２６であると認識すべきかを表示する。ＳＣＰ３１６は信号ＶＩＤＥＮをビデオ制御装置３１８に送り、この信号ＶＩＤＥＮは、ディスエイブルにされる時に、ビデオ制御装置３１８がオフになること、又は、ビデオ制御装置３１８が少なくともその電力消費を低減させることをもたらす。
【００５１】
このＳＣＰは信号ＬＣＤＰＷＲを液晶ディスプレイユニット３２１に送り、この信号ＬＣＤＰＷＲは、ユニット３２１内の液晶ディスプレイに対する電力をオン／オフする。このディスプレイは、液晶ディスプレイを照明するバックライト４３１を含む。このディスプレイユニット３２１は、内部キーボート３１７のキーを覆う位置とそれを露出させる位置との間を従来の仕方で動かすことが可能なラップトップコンピュータの蓋の上に備えられ、その蓋が開いているか閉じているかを示すために蓋スイッチ４３２が備えられる。ＳＣＰ３１６は、ディスプレイユニット３２１のバックライト４３１をオン／オフする信号ＢＬＯＮを発生させると共に、蓋スイッチ４３２から信号ＬＩＤＳＷを受け取り、この信号ＬＩＤＳＷは、蓋スイッチ４３２が起動されているか否かを示し、従って、蓋が開いているか閉じているかを示す。
【００５２】
ＳＣＰ３１６は信号ＭＤＭＥＮも発生させ、モデム３２２の電源制御セクションは、この信号ＭＤＭＥＮを受けて、モデム３２２への電力を遮断するか、又は、少なくともモデム３２２を低電力消費状態にすることになる。ＳＣＰ３１６はモデム３２２から上記のモデム呼出し表示器信号ＭＤＭＲＩを受け取り、このモデム呼出し表示器信号ＭＤＭＲＩは、モデム３２２がそれに接続された電話ジャック４３４を経由して着信電話呼出しがモデムに達する時に発生する。このコンピュータシステムのジャック４３４は、標準的な電話回線４３６への任意の結合に適している。
【００５３】
ハードディスク駆動装置３２３は出力信号ＬＥＤを発生させ、この出力信号ＬＥＤは、そのコンピュータのユーザにハードディスク駆動装置の活動の視覚表示を与えるために、通常の発光ダイオード（図示されていない）を制御するように従来の方法で使用される。このＬＥＤ信号は、ＳＣＰと、２入力ＡＮＤゲート４３８の一方の入力とに接続され、２入力ＡＮＤゲート４３８の「ハードディスク非稼働中（hard disk not busy）」出力ＨＤＮＢがＯＲゲート４３３の一方の入力に接続され、そのハードディスクが稼働中でないということを示す。ゲート４３８の他方の入力は、ＳＣＰ３１６のＥＮＡＢＬＥ出力信号に接続され、従って、ＳＣＰはゲート４３８を選択的にイネーブル又はディスエイブルにすることが可能である。このＳＣＰは、ＯＲゲート４３３の第２の入力に接続された４３５において出力信号を発生させ、ＯＲゲート４３３の出力は、主プロセッサ３１１への上記ＥＸＴＰＭＩ信号として作用する。ハードディスク駆動装置３２３は割込み信号ＩＲＱ１４も発生させ、この割込み信号ＩＲＱ１４は上記のように主プロセッサ３１１に結合される。
【００５４】
内部キーボード３１７は、標準的なラップトップコンピュータのキーボードを形成する１組のキー４４１と、そのコンピュータシステムのユーザに視認可能であり且つ典型的な状態情報を与える４つの発光ダイオード（ＬＥＤ）４４２と、キー４４１とＬＥＤ４４２とをＳＣＰ３１６にインタフェースする制御回路４４３を含む。
【００５５】
ビデオ制御装置３１８は、制御レジスタ４４６とビデオＲＡＭ４４８を含み、このビデオＲＡＭ４４８はバス３３７〜３３９に結合され、６４Ｋ×１６ビットとして構成された１２８ＫＢメモリである。
【００５６】
ＳＣＰ３１６は、電気的プログラム可能読出し専用記憶素子（ＥＥＰＲＯＭ）４３９を含み、ＳＣＰは、より詳細に後述されるように、構成情報とパスワードと拡張セットアップ情報をこの記憶素子の中に格納する。更に、このＳＣＰは、このＳＣＰによって実行されるプログラムを記憶するＲＯＭ４３７と、ＳＣＰがシステム動作の間に情報をその中に格納し取り出すことが可能なＲＡＭ４４０とを含む。このＳＣＰは、主プロセッサ３１１とＳＣＰ３１６の間にデータを流すために使用されることが可能な複数のＩ／Ｏレジスタも含む。
【００５７】
フラッシュＲＡＭ３３１は、電気的に変更可能であるが揮発性ではなく、且つそのＲＡＭへの電力が切られる時にそのＲＡＭ内に格納された情報を保持する、従来の半導体素子である。このフラッシュＲＡＭ３３１は１２８ＫＢであり、基本入出力システム（ＢＩＯＳ）プログラムと工場出荷時の構成設定値（factory configuration settings）とを含む。ＲＯＭ３２８は、通常は使用されないプログラムを含み、このプログラムは、異常な状況がフラッシュＲＡＭの内容の消失を引き起こした場合に、フラッシュＲＡＭ３３１が再ロードされる間、そのコンピュータシステムを制御するために使用されることが可能である。
【００５８】
通常のフロッピー（登録商標）ディスク駆動装置３２７は、フロッピー（登録商標）ディスク制御装置（ＦＤＣ）回路４５１を含み、このフロッピー（登録商標）ディスク制御装置回路４５１はフロッピー（登録商標）ディスク駆動装置を制御すると共に、プロセッサ３１１に対する割込み信号ＩＲＱ６を発生させることも可能である。
【００５９】
主記憶装置３２６は部分ＰＭＲＡＭ４５３を含む。プロセッサ３１１のバス制御ユニット３３６は、２つの特殊な状況を除いて、ソフトウェアが主記憶装置３２６のＰＭＲＡＭセクション４５３にアクセスすることを自動的に防止する。第１には、電源管理割込み信号ＰＭＩのためのサービスルーチンが主記憶装置３２６のＰＭＲＡＭセクション４６３の中に格納され、バス制御ユニット３３６が、ＰＭＩに応答して、ＰＭＲＡＭ４５３へのアクセスを自動的に許可し、その結果として、プロセッサ３１１の状態がそこに格納されて、ＰＭＩのためのサービスルーチンをそこで実行することが可能である。第２には、プロセッサ３１１の非限定モードで作動するソフトウエアが、ＰＭＲＡＭ４５３に対するアクセス機能を選択的にイネーブル又はディスエイブルにすることが可能であり、それによって、ＰＭＲＡＭを初期化することが可能である。
【００６０】
図３は、主記憶装置３２６内に格納された幾つかの情報を図解するものである。図３に示されるこの情報の編成は一例であって、情報が格納されるフォーマットが、本発明からの逸脱なしに再編成されることが可能である。更に、主記憶装置３２６内に格納される追加の情報があってもよいが、こうした追加の情報は本発明の理解にとって不可欠であるわけではなく、従って、その詳細な図解と説明は行わない。
【００６１】
主記憶装置の部分４７１は、例えばＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＤｉｓｋ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＤＯＳ）のようなオペレーティングシステムを格納するために使用される。このオペレーティングシステムは時刻及び日付情報を４７２に保持し、更に、ディスクが交換されたことを示すために使用されるディスク交換（Ｄ／Ｃ）フラグ４７３も保持する。主記憶装置内の２つの追加部分４７６、４７７の各々が別々のアプリケーションプログラムを収容し、部分４７６は、ワードプロセッサ用のスタックと命令とデータを収容し、部分４７７は、スプレッドシート用のスタックと命令とデータを収容する。主記憶装置の更に別の部分４７８は、より詳細に後述されるように、ビデオＲＡＭ４４８のイメージを格納するために使用される。
【００６２】
主記憶装置のＰＭＲＡＭ部分４５３は、状態保存部分４８１を含み、この部分４８１内では処理装置３１１が、その処理装置の状態をＰＭＩ割込み信号に応答して自動的に保存する。更に別の部分４８２が、他のデバイスに関する情報を保存するために使用され、部分４８３が、後述されるＳＣＰ３１６の部分状態保存（partial state save）のために使用される。部分４８５は、後述されるように、ＬＣＤ３２１のために使用されているカレントパレット（current palette）を記録するために使用され、部分４８６は、これも同様に後述されるように、フロッピー（登録商標）ディスク駆動装置３２７内の制御レジスタ全てのイメージを保持するために使用されるシャドーレジスタ（shadow register）として働く。バイト４８７が幾つかの１ビットフラグ（one-bit fag）のために使用され、これらの１ビットフラグは、ユーザがプロセッサ３１１に関して高速のクロック速度を選択したことを示すためにセットされる高速クロック（ＦＣ）フラグと、フロッピー（登録商標）ディスク駆動装置への電力がオフであることを示すためにセットされるフロッピー（登録商標）オフ（ＦＤ）フラグと、フロッピー（登録商標）ディスク駆動装置内にディスクが入っていることを示すためにセットされることが可能である「ディスク・イン・フロッピー（登録商標）ドライブ（disk in floppy drive）」（ＤＦ）フラグと、現在オペレーティングシステムが時刻及び日付情報をサポートする場合にセットされる時刻／日付有効（ＴＶ）フラグと、特定の事象が生じる時にプロセッサが待機モード又は中断モードに入らなければならないかどうかをそのプロセッサに示すために、特定の状況下でセットされる待機（ＳＴ）フラグとを含む。
【００６３】
電源管理割込み信号（ＰＭＩ）を処理するソフトウェアルーチンも、図３の４９１に示されるように、主記憶装置３２６のＰＭＲＡＭ部分４５３の中に格納される。ＰＭＲＡＭの部分４９２は、ＰＭＩハンドラルーチンによって使用されるためのスタック領域として働く。
【００６４】
図４〜図１４は、このＰＭＩハンドラルーチンとリセットハンドラルーチンの動作を示すフローチャートである。
図４（図４ａ、４ｂ、４ｃ）から始めると、図４の５０１に示されるように、いずれかの原因からのＰＭＩが、主記憶装置のＰＭＲＡＭ部分４５３の状態保管領域４８１の中にプロセッサ３１１のハードウェアがプロセッサ３１１の状態を自動的に保存することをもたらす。その後で、図４の５０２に示されるように、プロセッサ３１１が、予め決められたポイントにおいて、ＰＭＲＡＭ部分内のＰＭＩハンドラルーチン４９１の実行を自動的に開始する。そのＰＭＩの原因の如何に係わらず、ＰＭＩハンドラが行う最初の作業は、プロセッサ３１１が中断状態からの再開の過程にあるかどうかを調べるために、プロセッサ３１１内の再開フラグ３８３（図１）をチェックすることである。再開が進行中である場合には、ブロック５０３において制御が再開ハンドラに移行し、この再開ハンドラについては後述する。
【００６５】
他のいずれのＰＭＩの場合にも、制御がブロック５０６に進み、ブロック５０６では、ＰＭＩハンドラルーチンがつねに適正に動作することが可能でなければならないので、プロセッサが、ＰＭＲＡＭ内のスタック４９２を使用するようにそのプロセッサ自体をセットアップし、割込みアプリケーションプログラム内の現在スタックが有効で使用可能なスタックであるかどうかを知ることはできない。この後で、プロセッサ３１１は、ＣＰＵクロックの速度を変更するために使用可能な制御レジスタ３８８のような特定の内部構成レジスタが変更されることが可能であるように、これらの内部構成レジスタをアンロックする。更に、プロセッサ３１１は、ＰＭＩルーチンが可能な限りの最高速度で実行されるように高速のクロック速度でＣＰＵを動作させるために、制御レジスタ３８８を変更する。
【００６６】
更に、制御がブロック５０７に進み、ブロック５０７では、そのＰＭＩの前に実行された最後の命令がＨＡＬＴ命令であったかどうかを調べるために、プロセッサ３１１がチェックを行う。それがＨＡＬＴ命令であった場合には、ＰＭＲＡＭ内の４８１に保存された命令ポインタレジスタのイメージが５０８において減分され、従って、ＰＭＩハンドラから抜け出る時に、プロセッサ３１１が再びＨＡＬＴモードに入ることを確実にするために、フェッチされ実行される命令は、ＨＡＬＴ命令に後続する命令ではなくてＨＡＬＴ命令である。この後で、制御はブロック５１１に進み、このブロック５１１では、プロセッサ３１１が、６つのブロック５１１〜５１６で表されるような発生可能な６つのＰＭＩ原因の連続的なチェックを開始する。これらの各々は、この後で更に詳細に説明する。
【００６７】
ＰＭＩ原因を検出し処理した後に、制御はブロック５２１に進み、ブロック５２１では、プロセッサ３１１は、他の１つ以上のＰＭＩ原因が未決定であるかどうかを調べるためのチェックを行う。これらのＰＭＩ原因が未決定である場合には、制御はブロック５１１に戻り、従って、プロセッサ３１１は各ＰＭＩの特定の原因に関して再び走査を行い、その原因を処理することが可能である。未決定のＰＭＩ原因が全て処理され終わったことがブロック５２１で確認されると、制御はブロック５２２に進み、このブロック５２２では、プロセッサ３１１が、ＰＭＩが発生した時点で有効であったＣＰＵクロック信号を選択するために、速度制御レジスタ３８８を復元する。図３に示されるＦＣフラグは、これが高速のクロック速度か低速のクロック速度であるかをプロセッサに指示する。この時に、プロセッサ３１１は、速度制御レジスタ３８８を含む内部構成レジスタに関して有効であった保護レベル（もしあればだが）を復元する。プロセッサ３１１は、ＰＭＲＡＭ内の４８１に存在するＣＰＵ状態のイメージを調べることによって、有効であった保護のレベルを確認する。この後で、プロセッサ３１１はＰＭＩをイネーブルにし、更には、プロセサ３１１は、そのＰＭＩの処理中のリセットに対してプロセッサが応答することを防止するために、そのＰＭＩによってプロセッサ３１１内に自動的にセットされた内部ビットをクリアする。この後に、プロセッサ３１１は、状態保存領域４８１からプロセッサ３１１の内部状態を復元することによって、ＰＭＩハンドラルーチンを終了させる命令を実行し、このことは、当然のことながら、割り込まれたアプリケーションプログラムの実行をプロセッサに再開させる。
【００６８】
前述のように、ソフトウェア命令は、図１で３６７に図示したように、ＰＭＩを発生することが可能であるが、この実施例では、この機能は、そのシステムが中断モードからの再開の過程にある時にＰＭＩハンドラに再入するためにだけ使用され、この場合には、上記のように制御がブロック５０２からブロック５０３に進まされるのであって、ブロック５１５に進まない。従って、ソフトウェアＰＭＩは通常は図４のブロック５１５では検出されない。しかし、何らかの他のプログラムがソフトウェアＰＭＩを発生させるソフトウェア命令を実行する可能性があるので、ブロック５１５はこの条件を妨げ、制御を５２６において直接的にブロック５２１に移行させ、それによって、全く何も行わずにソフトウェアＰＭＩをハンドルする。
【００６９】
ブロック５１６は、ハードウェアＰＭＩ、即ち、この実施例では図１の３１３に示される手動操作スイッチである唯一のＰＭＩ原因に関してチェックを行う。具体的には、このスイッチの非能動化が、ブロック５１６で検出されるＰＭＩを発生させ、制御がブロック５１７に進むことをもたらし、ブロック５１７ではサブルーチン呼出しがハードウェアＰＭＩハンドラルーチンに対して行われ、これは図５に図示される。
【００７０】
図５を参照すると、この図では、プロセッサ３１１が、ＥＥＰＲＯＭ４３９内に格納されたセットアップ情報の一部分をＳＣＰ３１６がそのプロセッサに送り出すようにＳＣＰ３１６に命令することによって、５２８においてスタートする。上記セットアップ情報の一部分とは、具体的には、ユーザによってそのシステム構成の一部分としてセットされることが可能である１ビットであり、この１ビットは、スイッチ３１３の非能動化が、システム３１０が完全にオフになることを引き起こすためのものであるか、その状態においてシステム３１０が割り込まれたアプリケーションプログラムを再開することが可能である中断状態にシステム３１０が入ることを引き起こすためのものであるかを指定する。プロセッサ３１１がＰＭＩ命令を処理しながらＳＣＰにコマンドを送ることを必要とする時にはいつでも、プロセッサは、ＳＣＰがプロセッサへの情報の送り出しを停止し、従ってインタフェースがクリアされるように、ＳＣＰへのＣＰＵＳＵＲＥＱ信号を発生させる。このコマンドが受け取られると直ぐに、プロセッサ３１１はＣＰＵＳＵＲＥＱ信号を非能動化させる。制御はブロック５２９に進み、ブロック５２９では、プロセッサ３１１が、ＳＣＰから受け取られた情報をチェックする。ユーザが、スイッチ３１３の非能動化がシステムを中断モードにするためのものであることを指定した場合には、そのコンピュータシステムはブロック５３１に進み、このブロック５３１では、より詳細に後述される中断ハンドラを呼び出す。一方、ユーザが、スイッチ３１３の非能動化に応答してコンピュータシステムがオフされなければならないことを指定した場合には、制御はブロック５２９からブロック５３２に進み、このブロック５３２では、プロセッサ５１１が、完全に電源がオフされることをユーザに知らせ且つ動作の進行の確認を要求する警告を、ビデオ回路構成要素に表示させる。これは、電源をオフすることが主記憶装置３２６内の情報の全てを失うことを引き起こすためであり、従って、この情報が保持される中断モードにそのシステムが入るだろうとユーザが思い込んでいないことが確実であることが重要である。ユーザの応答がブロック５３３でチェックされ、電源がオフされることをユーザが確認する場合には、制御がブロック５３６に進み、このブロック５３６では、プロセッサがＫＩＬＬＶＣＣラインを起動し、従って、図２に関連して上記で説明された仕方で電源制御回路３１２がＳＹＳＶＣＣとＰＭＶＣＣをオフする。一方、電源がオフされることをユーザが望んでいなかったということがユーザの応答からブロック５３３で確認される場合には、制御がブロック５３７に進み、このブロック５３７では、全く動作を行わずにハードウェアＰＭＩハンドラからの復帰が行われる。
【００７１】
再び図４を参照すると、この図に示されるように、ＰＭＩ割込みの原因がＩ／Ｏトラップ条件であることが５１１で確認される場合には、これは、図１に示される信号ＭＡＳＫ  ＴＲＡＰ又は信号ＦＤＤ  ＴＲＡＰのどちらか一方がそのＰＭＩを能動化させ生じさせたということを意味する。従って、ブロック５１１は制御をブロック５４１に移行させ、このブロック５４１では、Ｉ／Ｏトラップハンドラルーチンへのサブルーチン呼出しが行われ、これは図６に示されている。
【００７２】
図６を参照すると、この図に示されるように、このルーチンは、ブロック５４２において、その割込みの原因がＦＤＤ  ＴＲＡＰ信号であったかどうかを確認するために状態レジスタ３７１（図１３）をチェックすることによって、スタートする。その割込みの原因がＦＤＤ  ＴＲＡＰ信号でなかった場合には、その割込みの原因はＭＡＳＫ  ＴＲＡＰ信号であったに違いないので、制御がブロック５４３に進む。ＭＡＳＫ  ＴＲＡＰ信号の発生は、様々なＩＲＱ割込みラインのイネーブルとディスエイブルを制御するマスクレジスタ３４２へのアクセスをそのプロセッサのハードウェアが検出したということを意味する。マスクレジスタ３４２へのアクセスの目的がＩＲＱ割込みをマスクすることである場合には、ブロック５４３において、このＩＲＱ割込みをマスクするために、そのコンピュータシステムがシステム事象マスクレジスタ３４９内のマスクも更新する。このことは、そのＩＲＱ割込み信号が能動化させられるが３４２においてマスクされる場合に、通常の割込み処理ルーチンはその割込みを認識せず、従ってその信号が能動化状態のままとなるので、システムトラブルを防止する。このＩＲＱ割込みが３４９においてマスクされない場合には、その連続的に能動化させられる信号は、ＳＹＳＴＥＭ  ＥＶＥＮＴラインが変化することを防止するという効果を有し、その結果として、タイマ３５２、３５３は再スタートせず、そのシステムが実際に極めて活動的である時にさえタイムアウトする。従って、ブロック５４３においてマスクレジスタ３４９をマスクレジスタ３４２に一致させることによって、ディスエイブルにされたＩＲＱ割込み信号がＳＹＳＴＥＭ  ＥＶＥＮＴ信号を抑止することが防止され、従って、セレクタ３４７に対する他の稼働中の入力が、システム動作に応答してＳＹＳＴＥＭ  ＥＶＥＮＴ信号が実際に変化することを引き起こすことが可能であり、タイマ３５２、３５３がシステム動作によって適正に再スタートする。
【００７３】
プロセッサ３１１がブロック５４３においてマスクをセットした後に、制御はブロック５４６に進み、このブロック５４６では、プロセッサがマスクレジスタ３４２へのＩ／Ｏアクセスを再開する。具体的には、ＰＭＩトラップ割込みがマスクレジスタ３４２へのアクセスをインターセプトし、従って、このマスクレジスタは実際には変化しなかった。しかし、前述したように、このレジスタにアクセスしたであろうＩ／Ｏサイクルは３７２（図１）において既に捕捉されており、従って、ブロック５４６において、プロセッサ３１１が、レジスタ３４２へのＩ／Ｏアクセスを再開するために、この情報を使用し、従って、このＩ／Ｏアクセスが適正に行われる。この後で、ブロック５４７において、制御が図４の主ルーチンに戻される。
【００７４】
一方、ＰＭＩがＦＤＤ  ＴＲＡＰ信号によって生じたということがブロック５４２で確認された場合には、制御がブロック５５１に進む。これは、フロッピー（登録商標）ディスク駆動装置３２７の制御レジスタへのＩ／Ｏアクセスがインターセプトされたということを意味する。後述するように、フロッピー（登録商標）ディスク駆動装置３２７に対してコンピュータシステムがアクセスせずに特定の時間期間が経過し終わる場合には、そのコンピュータシステムはフロッピー（登録商標）ディスク駆動装置３２７をオフにする。従って、フロッピー（登録商標）ディスク駆動装置に対するアクセスをインターセプトすることは、フロッピー（登録商標）ディスク駆動装置が給電されていない間にそのフロッピー（登録商標）ディスク駆動装置にアクセスしょうとすることであった可能性がある。従って、ブロック５５１では、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置がパワーダウンされているかどうかを確認するために、ＦＤフラグ（図３）をチェックする。フロッピー（登録商標）ディスク駆動装置が給電されている場合には、ブロック５５２がスキップされる。フロッピー（登録商標）ディスク駆動装置が給電されていない場合には、フロッピー（登録商標）ディスク駆動装置を立ち上げるために制御がブロック５５２に進む。
【００７５】
具体的には、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置３２７に対する通常の電力を回復させるためにＦＤＤＳＬＴラインを起動し、通常動作中に従来の仕方でそのフロッピー（登録商標）ディスク駆動装置によって使用される割込みＩＲＱ６をイネーブルにする。この後で、プロセッサ３１１は、ＰＭＲＡＭ内のシャドーレジスタ４８６からフロッピー（登録商標）ディスク駆動装置３２７の制御装置回路４５１内の制御レジスタにロードする。後述されるように、このシャドーレジスタは、フロッピー（登録商標）ディスク駆動装置の電源がオフにされる直前のそのフロッピー（登録商標）ディスク駆動装置の内部状態のイメージを収容する。この後で、プロセッサ３１１は、局所待機タイマ３５１（図１）をイネーブルにし、この局所待機タイマ３５１は、より詳細に後述されるように、フロッピー（登録商標）ディスク駆動装置の電源を何時オフにしなければならないかに関する判断が行われることが可能であるように、フロッピー（登録商標）ディスク駆動装置に対する最終アクセス以後に経過した時間の長さを監視するために使用されるタイマである。最後に、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置が現在は起動されて作動中であるということを表示するためにＦＤフラグ（図３）をクリアする。
【００７６】
制御は更にブロック５５２からブロック５５３に進む。上記のように、シャドーレジスタ４８６（図３）は、フロッピー（登録商標）ディスク駆動装置４５１内の制御レジスタのイメージである。任意のプログラムがこれらの制御レジスタの中に何かを格納する毎に、それと同じ情報がシャドーレジスタ４８６の中に格納されなければならず、従って、シャドーレジスタ４８６は、フロッピー（登録商標）ディスク駆動装置の実際のレジスタの正確なイメージを収容する。こうして、ブロック５５３において、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置の制御レジスタに対するインターセプトされたアクセスが、そのレジスタからの情報の読取りとは反対に、そのレジスタの中への情報の書込みをもたらすかどうかを調べるためにチェックを行う。制御情報がフロッピー（登録商標）ディスク駆動装置の中に書き込まれていることが確認される場合には、それと同一の情報が５５４においてシャドーレジスタ領域４８６の中に書き込まれる。一方、データがフロッピー（登録商標）ディスク駆動装置から読み取られている場合には、ブロック５５６が５５７においてスキップされる。どちらの場合とも、制御は最終的にはブロック５４６に進み、ブロック５４６では、フロッピー（登録商標）ディスク駆動装置に対するＩ／Ｏアクセスが上記のように再開され、従って、ハードウェアが、割り込まれたＩ／Ｏアクセスを完了する。この後で、５４７において、制御が図４のルーチンに戻る。
【００７７】
図４では、局所待機タイマ３５１が満了したことがブロック５１２で確認される場合には、制御がブロック５５９に進み、ブロック５５９では、サブルーチン呼出し局所待機ハンドラルーチンに対して行われ、これが図７に示されている。図７を参照すると、局所待機タイマ３５１がタイムアウトになったという事実は、フロッピー（登録商標）ディスク駆動装置が特定の時間期間の間アクセスされることがなく、従って現在は恐らく使用されておらず、電源の保存のためにオフされることが可能であるということを示している。しかし、モータが作動している間は電源が遮断されないことが好ましいが故に、フロッピー（登録商標）ディスク駆動装置のモータが作動していないことを確認することが、最も重要である。従って、ブロック５６１において、プロセッサ３１１は、上記モータが現在イネーブルされているかどうかの表示を含む、フロッピー（登録商標）ディスク駆動装置内のレジスタを読み取る。この場合には、制御がブロック５６２に進み、このブロック５６２では、プロセッサ３１１は５６２において局所待機タイマ３５１を単純に再始動し、この後で５６３において図４のルーチンに戻る。しかし、通常は、上記モータは作動しておらず、従って制御は通常はブロック５６６に進み、このブロック５６６では電源を保存するためにフロッピー（登録商標）ディスク駆動装置がパワーダウンされる。具体的には、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置によって使用される割込みＩＲＱ６をディスエイブルにし、この後で、そのフロッピー（登録商標）ディスク駆動装置がオフになるか又は少なくとも低電力状態に入るように、ＦＤＤＳＬＴ信号を非能動化する。更に、プロセッサ３１１は局所待機タイマ３５１をディスエイブル状態にすると共に、そのフロッピー（登録商標）ディスク駆動装置への電力が現在オフであることを示すためにＦＤフラグ（図３）をセットする。この後で、プロセッサ３１１は、５６３において、図４に示される呼出しルーチンに戻る。
【００７８】
図４では、ラインＥＸＴＰＭＩを使用してＳＣＰ３１６によってＰＭＩの原因が生じたということが、ブロック５１４において確認されることが可能であり、この場合には、制御はブロック５６８に進み、このブロック５６８では、図８（図８ａ、８ｂ、８ｃ、８ｄ）に示されるＥＸＴＰＭＩハンドラルーチンに対してサブルーチン呼出しが行われる。３つの発生可能な理由によって、ＳＣＰがＰＭＩを生じさせる可能性がある。従って、図８の５７１においては、これら３つの条件の中のどれがＰＭＩの理由であるかを示すバイトを送るようにＳＣＰ３１６に求めることによって、プロセッサ３１１がスタートする。このバイトを受け取ると、プロセッサ３１１はブロック５７２に進み、このブロック５７２で、プロセッサ３１１は、これらの条件の中の第１の条件に関してチェックを行う。
【００７９】
この第１の条件を検討するためには、そのコンピュータシステムが大域待機モード又は中断モードのどちらかに入ろうと試みた場合に、及び、ハードディスク駆動装置３２３が依然として使用中であることを発見した場合に、下記で更に詳細に説明され、及び同時係属中の出願において詳細に説明されているように、ＳＣＰが、ゲート４３８へのＥＮＡＢＬＥラインを能動化し、この後で、割り込まれたアプリケーションプログラムに戻るということを理解することが重要である。この後で、ハードディスク駆動装置３２３がそのハードディスク駆動装置がしていることを終了し、そのハードディスク駆動装置の発光ダイオードを制御するＬＥＤラインを非能動化する瞬間に、ゲート４３８はゲート４３３へのＨＤＮＢラインを能動化し、このＨＤＮＢラインはＥＸＴＲＭＩラインを能動化する。
【００８０】
従って、ブロック５７２では、プロセッサ３１１は、ＰＭＩの理由がハードディスクからの信号であったかどうかを確かめるために、ＳＣＰから受け取られた情報をチェックする。そうであった場合には、制御がブロック５７３に進み、このブロック５７３では、プロセッサ３１１がハードディスクを待機しなければならないことが見い出された時に、そのプロセッサ３１１が中断モード又は大域待機モードに入ろうと以前に試みていたかどうかを確かめるために、プロセッサ１１がＳＴフラグ（図３）をチェックする。そのコンピュータシステムが中断モードに入ろうと試みていたために上記フラグがセットされていない場合には、制御がブロック５７６に進み、このブロック５７６では、より詳細に後述される中断ハンドラルーチンに対してサブルーチン呼出しが行われる。一方、そのコンピュータシステムが大域待機モードに入ろうと試みていることが５７３で確認される場合は、５７７においてプロセッサ３１１がハードディスク３２３にそのモータをスピンダウン（spin down）するように命令し、この後で制御がブロック５７８に進み、このブロック５７８では、後述されるように、大域待機モードにプロセッサ３１１が入ることを引き起こすルーチンに対してサブルーチン呼出しが行われる。中断モード又は大域待機モードの終了時には、制御がブロック５７６又は５７８からブロック５７９に進む。或いは、ＰＭＩの原因がハードディスクからの信号ではなかったということがブロック５７２において確認された場合には、制御が５８１において直接にブロック５７９に進んでいたであろう。５７９では、プロセッサ３１１は、ＳＣＰ３１６にＰＭＩを生じさせた可能性がある第２の条件をチェックする。具体的には、ＳＣＰは電源制御回路からのＡＣ／ＤＣ信号を監視し、このＡＣ／ＤＣ信号は、そのコンピュータシステムが現時点においてバッテリ３９６からのＤＣ電力と変換器３９８からのＡＣ電力のどちらを受けているのかを示す。ＳＣＰが、ＡＣ電力からＤＣ電力への変更が行われたこと、又は、ＤＣ電力からＡＣ電力への変更が行われたことを検出する時に、ＳＣＰは主プロセッサ３１１へのＥＸＴＰＭＩ信号を生じさせる。これがそのＰＭＩの理由であるということがブロック５７９で確認される時には、制御がブロック５８２に進む。このコンピュータシステムの特徴は、ＤＣ電力の下での使用のためにそのＳＣＰが保持する構成情報とは異なった、ＡＣ電力の下での使用のための構成データをＳＣＰが保持するということである。例えば、ＡＣ電力によって動作する時には電力消費が幾分か低く、従って、ユーザは、ＡＣ電力によって動作する時には常にフロッピー（登録商標）ディスク駆動装置３２７をパワーアップ（power up）された状態に保つことと、ＤＣ電力によって動作する時には上記のようにそのコンピュータシステムが非使用時に自動的にパワーダウンすることを可能にすることとを、選択することが可能である。従って、ブロック５８２においては、主プロセッサ３１１はＳＣＰに適切な構成値をそのプロセッサに送るように命令し、即ち、スイッチがＡＣモードにされている場合にはＡＣ値を、スイッチがＤＣモードにされている場合にはＤＣ値を、ＳＣＰがそのプロセッサに送るよ���に命令する。この場合、プロセッサ３１１は、例えばプリセットレジスタ３５６、３５７にそれらのＤＣプリセット値ではなくＡＣプリセット値を再ロードすることによって、そのシステム構成においてこれらの構成値を使用する。プロセッサ３１１は、後述されるように、中断タイマとＳＣＰによって維持されるバックライトタイマとで使用するために、ＳＣＰに２つのタイマリセット値を送る。この後で制御がブロック５８３に進む。更に制御は、ＰＭＩの原因がＡＣ電力とＤＣ電力との間の変更でなかったということがブロック５７９で確認される場合に、ブロック５７９からブロック５８３に直接に進む。
【００８１】
ブロック５８３では、プロセッサ３１１は、ＳＣＰがＰＭＩを生じさせることを引き起こす第３の条件をチェックする。具体的には、内部キーボード３１７の幾つかのキー４４１が同時に押されることが可能であり、ＳＣＰがこれらの特殊なマルチキーコンビネーヨン（multi-key combination）又はホットキーコンビネーション（hot key combination）を検出することが可能である。そのプロセッサが幾つかの特殊なマルチキーコンビネーションの１つを検出する時には、そのプロセッサは主プロセッサ３１１へのＥＸＴＰＭＩラインを能動化し、その結果として、進行中の何らかのプログラムが直ちに割り込まれ、特殊機能が実行され、この後でその進行中だったプログラムが再開される。特殊なマルチキーコンビネーション又はホットキーコンビネーションの１つが押されたことが５８３で発見される場合には、制御がブロック５８６に進み、このブロック５８６は、ＳＣＰにＰＭＩを生じさせることが可能な特殊なマルチキーコンビネーションの各々をチェックする８つのブロック５８６〜５９３のシーケンスの中の第１のブロックである。この情報は、ＰＭＩの発生理由を示すためにＳＣＰによって５７１で送り出されるバイト内のコード化フィールドの形である。
【００８２】
ブロック５８６では、プロセッサ３１１は、そのマルチキーコンビネーション又はホットキーコンビネーションが、ユーザが低クロック速度でＣＰＵが動作することを望むということを示すものであるかどうかを確かめるためにチェックを行う。ユーザがバッテリ電源でコンピュータシステムを作動させており、且つ高速プロセッサ速度を必要としないプログラムを実行している状況では、プロセッサ速度を意図的に低下させることが電力消費を低減させ、従ってバッテリが再充電を必要とするまで、より長時間に亙ってコンピュータシステムをユーザが使用することを可能にする。こうして、ブロック５９６では、プロセッサ３１１は、スピーカ３９２から警告音を１回生じさせるためにライン３９１（図１）を能動化し、この後に、選択されたＣＰＵ速度が低速度であるということを示すためにＦＣフラグ（図１）をクリアする。図４のブロック５０６、５２２に関連して上記で説明されたように、ＰＭＩハンドラルーチンが常に高速クロック速度で実行するので、プロセッサ３１１が直ちにクロック速度を変更するわけではない。ＦＣフラグをクリアすることによってブロック５９６内で選択される低い方の速度は、プロセッサ３１１がＰＭＩハンドラルーチンを出る準備を行うのに応じて、ブロック５２２内で実現される。一方、上記ホットキーが低速ＣＰＵ動作の要求ではない場合には、制御がブロック５８６からブロック５８７に進み、このブロック５８７では、上記ホットキーが高速ＣＰＵ動作の要求であるかどうかを確かめるためにチェックが行われる。そうである時には制御はブロック５９７に進み、このブロック５９７では、プロセッサ３１１がスピーカ３９２に警告音を２回生じさせ、この後で、高速プロセッサ速度が要求されていることを示すためにＦＣフラグをセットする。
【００８３】
上記ホットキーが高速ＣＰＵ動作の要求でないということがブロック５８７で確認される場合には、制御がブロック５８８に進み、このブロック５８８では、上記ホットキーが「ポップアップ／セットアップ」スクリーン（pop-up／setup screen）の要求であるかどうかを確かめるためにチェックが行われる。このポップアップ／セットアップはユーザがアプリケーションプログラムの途中でシステムセットアップ情報を変更することを可能にする。押されたホットキーがこれである場合には、制御はブロック５９８に進み、このブロック５９８ではポップアップ／セットアップハンドラルーチンに対するサブルーチン呼出しが行われる。このハンドラルーチンは、図８に示される他のホットキーの説明が終わった後に説明される。
【００８４】
その押されたホットキーが「ポップアップ／セットアップ」キーでない場合には、制御はブロック５８９に進み、このブロック５８９では、押されたホットキーが、コンピュータシステムを大域待機モードに入れたいというユーザ要求であるかどうかを確かめるためにチェックが行われる。ユーザが自分が短時間の間そのコンピュータシステムを使用しないだろうということを知って電源の保存を望む時には、そのユーザは大域待機モードに入ることを望む可能性があっても、完全な中断モードに入ることは望まない。そのユーザが大域待機に入ることを意図的に必要としていることが確かめられる場合には、制御がブロック５８９からブロック６０１に進み、このブロック６０１では、プロセッサ３１１は、ハードディスク駆動装置３２３が稼働中であるかどうかを確かめるために、ハードディスク３２３内の状態レジスタを読み取る。ハードディスク駆動装置が稼働中でない場合には、制御は直接にブロック６０２に進み、このブロック６０２では、そのコンピュータシステムを待機モードへとガイドするルーチンに対するサブルーチン呼出しが行われ、このルーチンは更に詳細に後述される。
【００８５】
一方、ハードディスクが稼働中である場合には、待機モードへの進入は、ハードディスクが稼働中でなくなるまで待たなければならない。従って、制御はブロック６０１からブロック６０３に進み、このブロック６０３では、プロセッサ１１は、上記の通りに、ゲート４３８をイネーブルにするためにＳＣＰにＥＮＡＢＬＥ信号を生じさせるように命じる。更に、図８のブロック５７２に関連して既に上記で明確に説明されたように、プロセッサ３１１は、ハードディスクが稼働中でない時にコンピュータシステムが中断モードではなく大域待機モードに入らなければならないということを示すために、ＳＴフラグをセットする。こうして、ブロック６０３の後に、ＰＭＩハンドラルーチンが続き、最後には、割り込まれたアプリケーションプログラムに制御を戻し、この後で、ハードディスク駆動装置３２３がその装置が行っていることを完全に終了させてその装置のＬＥＤ制御ラインを非能動化する時に、更に別のＰＭＩが発生させられ、このＰＭＩは、待機モードに入るためにそのコンピュータシステムが上記ブロック５７２、５７３、５７７、５７８に最終的に達することをもたらす。
【００８６】
押された上記ホットキーが、意図的に大域待機モードに入ることの要求ではないことが、ブロック５８９で確認される場合には、プロセッサ３１１はブロック５９０に進み、このブロック５９０では、そのホットキーが、ＬＣＤ３２１（図１）用に使用されるパレットの変更のためのユーザの要求であるかどうかを確かめるために、チェックが行われる。これに関して、この好ましい実施例のＬＣＤ３２１は、カラーディスプレイではなく白黒ディスプレイであり、そのフラッシュＲＡＭ３３１は、白黒ＬＣＤ３２１のグレイスケール機能の各々の変化量を表す予め確定された１６のパレットを含む。アプリケーションプログラムの大半がカラーディスプレイと共に動作するように書かれているので、こうしたプログラムが生じさせるスクリーンは、白黒ディスプレイ上に表示される時に、幾分か読み取りが困難である可能性がある。しかし、他のグレースケールパレットに比較して、そのスクリーンをより一層読み取り易いものにするようなグレースケールパレットが幾つかある。
【００８７】
本発明のコンピュータシステムは、アプリケーションプログラム内にいる間にユーザがパレットの調整を迅速に行うことを可能にし、この場合にはそのユーザは各パレットの効果を直ちに確認することが可能である。既存のコンピュータシステムでは、典型的には、アプリケーションプログラムから出て、セットアップデータ内のパレット選択を調整し、この後で、新たなパレットの効果を確かめるためにそのアプリケーションプログラムに再び入ることが必要であり、これは、試みられることが必要な複数の使用可能なパレットがある時には、明らかに面倒であり多くの時間を必要とする。従って、１６のパレットから構成される表の中で１つのパレットだけシフトダウン（shift down）することをユーザが望んでいるということが５９０で確認される場合には、制御がブロック６０６に移行させられ、このブロック６０６では、プロセッサ３１１は、ＰＭＲＡＭ内の４８５に格納された現在パレットの識別名を取り出し、フラッシュＲＡＭ３３１内の１６のパレットの表から、その次に低いパレットを獲得し、この新たなパレットを使用するためにビデオ制御装置３１８のレジスタ４４６を構成し、この新たなパレットの識別名をＰＭＲＡＭ内の４８５に記録する
【００８８】
押されたホットキーが、パレットをシフトダウンするための要求ではないということが、５９０で確認される場合には、制御はブロック５９１に進み、このブロック５９１では、その要求が１つのパレットだけシフトアップ（shift up）することであるかどうかを確かめるためのチェックが行われる。そうである場合には、制御はブロック６０７に進み、このブロック６０７では、プロセッサ３１１が、そのプロセッサが上記表の中で１つのパレットだけシフトダウンするのではなく１つのパレットだけシフトアップするということを除いて、ブロック６０６におけるシーケンスと同じシーケンスを行う。押されたホットキーがパレットのシフトアップ要求でないということがブロック５９１で確認される時には、制御がブロック５９２に進み、このブロック５９２では、押されたホットキーが現在のディスプレイ装置が変更されることの要求であるかどうかを確かめるために、チェックが行われ、具体的には、その押されたホットキーが、ＬＣＤ３２１が現在稼働中である場合にはＬＣＤ３２１から外部ＣＲＴ４２６を変更すること、又は、その外部ＣＲＴが稼働中である場合にはその外部ＣＲＴからＬＣＤ３２１に変更することの要求であるかどうかを確かめるために、チェックが行われる。ユーザがこの変更を要求した場合には、制御がブロック５９２からブロック６０８に進み、このブロック６０８では、プロセッサ３１１が、稼働中のビデオユニットを識別するようにＳＣＰに命令する。ＳＣＰからの応答が６０９で調べられ、そのＬＣＤが稼働中である場合には、制御がブロック６１０に進み、このブロック６１０では、プロセッサ３１１が、ＬＣＤをパワーダウンさせるためにラインＬＣＤＰＷＲを能動化させることと、ＣＲＴを選択するためにＣＲＴ／ＬＣＤラインをセットすることとをＳＣＰに命令する。この後で、プロセッサ３１１は、ＣＲＴを用いた動作のためにビデオ制御装置を構成する。一方、そのＣＲＴが稼働中であることが６０９において確認される場合には、制御がブロック６１４に進み、このブロック６１４では、プロセッサ３１１が、ＬＣＤを用いた動作のためにビデオ制御装置を構成し、この後で、そのＬＣＤを選択するためにＣＲＴ／ＬＣＤラインをセットすることと、そのＬＣＤをパワーアップするためにＬＣＤＰＷＲラインを能動化することとをＳＣＰに命令する。
【００８９】
押されたホットキーがディスプレイ装置の変更の要求ではないということがブロック５９２で確認される場合には、制御はブロック５９３に進み、このブロック５９３では、押されたホットキーがそのコンピュータシステムを一時的にロックアップするための要求であるかどうかを確かめるためにチェックが行われる。押されたロックキーが一時的なロックアップの要求ではない場合には、制御がブロック６１１に進み、このブロック６１１は、ＥＸＴＰＭＩハンドラから図４の呼出しルーチンへの共通リターンである。押されたロックキーが一時的なロックアップの要求である場合には、制御がブロック５９３からブロック６１２に進み、このブロック６１２では、プロセッサ３１１が、ＳＣＰ３１６のＥＥＰＲＯＭ４３９内に格納されたシステムパスワードを送り出すようにＳＣＰ３１６に命令する。この後で、ブロック６１３において、プロセッサ３１１が、ユーザにパスワードを入力するように求めるためにディスプレイを使用し、一連の情報を待ち、ユーザによってキーボード上で入力された一連の情報を受け取る。この後で、ブロック６１６において、そのコンピュータシステムは、ユーザからのパスワードとＳＣＰからのパスワードとが同一であるかどうかを確かめるために、これらのパスワードを比較する。これらのパスワードが同一でない場合には、そのコンピュータシステムはブロック６１３からブロック６１６へループし続ける。それらのパスワードが同一である場合には、制御がブロック６１６から６１１のリターンに進む。このホットキーを使用することによって、正しいパスワードが入力されない限りそのコンピュータシステムが応答しないが故に、ユーザは特に、自分のコンピュータシステムがオンのまま作動している時にそのコンピュータシステムを離れることが可能であると同時に、そのユーザがその場にいない間に別の人間がそのコンピュータシステムを使用することを防止することが可能である。そのユーザは、戻って来ると、正しいパスワードを入力し、自分がしていた作業に戻ることが可能である。
【００９０】
再び図８のブロック５９８を参照すると、ポップアップ／セットアップハンドラが図９に示され、以下で説明される。実行は図９のブロック６１８で開始され、このブロック６１８では、プロセッサ３１１が部分状態保存を行うことをＳＣＰに命じ、この命令に応答してＳＣＰは、モード情報を含む２バイトをプロセッサ３１１に送る。例えば、このモード情報は、割り込まれたアプリケーションプログラムが現時点で使用禁止状態のキーボードを有するかどうかを示す。当然のことながら、ＰＭＩハンドラがキーボードを介してユーザからの入力を得ることを必要とする場合に、このキーボードがイネーブルにされる必要があり、従って、このモード情報は、ＳＣＰがその動作モードを変更してＰＭＩハンドラの要求を満たすことが可能であるように、保存され、こうした要求を満たした後に、最初のモードが下記のように復元され、それによって、アプリケーションプログラムが割り込まれた時のモードと同一のモードにおいて、コンピュータシステムが、その割り込まれたアプリケーションプログラムに戻されることになる。ＳＣＰから６１８においてモード情報の２バイトを受け取った後に、４８３（図３）において、プロセッサ３１１がその２バイトを主記憶装置のＰＭＲＡＭの中に格納する。この後で、プロセッサ３１１は、現在のパスワードを送ることをＳＣＰに命令する。このパスワードが有効であることがブロック６２１で確認される場合には、ユーザがそのパスワードを入力し、図８のブロック６１３、６１６に関連して上記で説明された仕方と同じ仕方で、そのパスワードがブロック６２２、６２３でチェックされる。ユーザが正しくないパスワードを入力する場合には、ユーザがセットアップ情報を変更することを可能にするハンドラの部分が、６２６でスキップされる。しかし、６２３でパスワードが正しいことが確認される場合、又は、パスワードが有効でないことが６２１で確認される場合には、制御がブロック６２７に進み、このブロック６２７では、変更されるべきセットアップパラメータをユーザが指定することと、セットアップパラメータの新しい値をユーザが入力することとを可能にする、メニュー又はメニューシステムが、ユーザに与えられる。ブロック６２８では、プロセッサ３１１がこのパラメータを受け入れて保存する。入力可能なパラメータのタイプは、タイマ３５１、３５２の各々に関するプリセット時間期間としてのＡＣ値とＤＣ値と、（後述されるように）ＳＣＰのソフトウェアで使用される中断タイマとバックライトタイマに関するＡＣ値とＤＣ値と、リアルタイムクロック３７６からのＡＬＡＲＭ信号とモデムからのモデム呼出し信号ＭＤＭＲＩとのどちらに応答して、再開マスクレジスタ３８２のためのマスクが再開リセットを可能にしなければならないかについてのユーザの指示と、手動操作スイッチ３１３を非能動化することがそのコンピュータシステムを中断状態又はパワーオフ状態のどちらかにしなければならないかについてのユーザの指示と、ＬＣＤと外部ＣＲＴのどちらが有効なディスプレイ装置として使用されなければならないかについてのユーザの指示と、新たなパスワードについてのユーザの指示とを含む。本発明には関連しない従来の他のセットアップ情報も、入力されることが可能である。各々の項目が入力される毎に、プロセッサ３１１は、その情報をＥＥＰＲＯＭ４３９の中に格納するようＳＣＰ３１６に命じるコマンドと共に、その項目をＳＣＰ３１６に送る。６３１では、プロセッサ３１１は、ユーザがセットアップ値を変更することを望む限り、６２７と６２８において情報を受け入れることを続けるためにループすることが可能である。ユーザが入力を完了すると、制御がブロック６３２に進み、このブロック６３２では、プロセッサ３１１が、ＳＣＰ３１６がブロック６１８でプロセッサ３１１に送った２つのモードバイト（mode byte）を受け入れて保存することをＳＣＰ３１６に命令し、その２バイトを伴うコマンドに従う。この後で、６３３において呼出しルーチンへの復帰が行われる。
【００９１】
再び図４を参照すると、ＰＭＩの原因が大域待機タイマ３５２（図１）のタイムアウトであることがブロック５１３で確認される場合には、制御は５１３からブロック６３６に進む。このタイマのタイムアウトは、予め決められた時間期間の間そのコンピュータシステムが全く活動しなかったか僅かしか活動しなかったということを意味する。従って、そのコンピュータシステムが大域待機モード又は中間モードに自動的に移行し、この大域待機モードでは、プロセッサ３１１がコンピュータシステム構成要素の幾つかを低電力モードにした後に、電源を保存するためにプロセッサ３１１自体を停止させる。
【００９２】
ブロック６３６では、サブルーチン呼出しが大域待機ハンドラルーチンに対して行われ、このことは図１０に示される。大域待機モードに入るための条件は、フロッピー（登録商標）ディスク駆動装置３２７とハードディスク駆動装置３２３が停止しているということである。従って、プロセッサ３１１は従来の仕方でフロッピー（登録商標）ディスク駆動装置とハードディスク駆動装置から状態情報を読み出し、フロッピー（登録商標）ディスク駆動装置モータが作動中であるか又はハードディスク駆動装置制御回路が稼働中であるかを確かめるために、図１０の６３８と６３９で上記状態情報をチェックする。フロッピー（登録商標）ディスク駆動装置モータが作動中であるか又はハードディスク駆動装置制御回路が稼働中である場合には、制御がブロック６４１に進み、このブロック６４１では大域待機タイマ３５２が再始動し、この後に、６４２において、大域待機モード又は中断モードに入ることなしに、呼出しルーチンへの復帰が行われる。
【００９３】
フロッピー（登録商標）ディスク駆動装置とハードディスク駆動装置とが稼働中でなく、従って、制御がブロック６３８、６３９を経由してブロック６４３に進み、このブロック６４３では、大域タイマ３５２のタイムアウトの中止が、そのコンピュータシステムが待機モードに入ることを引き起こすためであるか、又は、そのシステムが直接的に中断モードに入ることを引き起こすためであるかを、ユーザがどのように指示したのか確かめるために、ＳＣＰ内のセットアップ情報をプロセッサ３１１がチェックする。具体的には、ユーザが待機プリセットを指示した場合には、タイマ３５２のタイムアウトは、そのコンピュータシステムが待機モードに入るということを意味する。一方、ユーザが待機プリセットを指示せずに、コンピュータシステムがその後に中断モードに入ることになる中断プリセットを指定した場合には、その中断プリセットがタイマ３５２のために使用され、このタイマ３５２が満了する時に、そのコンピュータシステムが中断モードに入る。そのコンピュータシステムが中断モードに入ることになっている場合には、制御はブロック６４７に進み、このブロック６４７では、より詳細に後述されるように、そのコンピュータシステムを中断モードにする中断ハンドラに対してサブルーチン呼出しが行われる。一方、６４３における、より一般的な決定は、そのコンピュータシステムが待機モードに入ることをユーザが意図するということであり、従って制御はブロック６４６に進み、このブロック６４６では、そのコンピュータシステムを大域待機モードにガイドする上記のルーチンに対してサブルーチン呼出しが行われる。このルーチンは、図１１（図１１ａ、１１ｂ）に関連させて次に説明される。
【００９４】
図１１では、このコンピュータシステムは、ＬＣＤディスプレイが既にパワーダウンされてはいない場合にＬＣＤディスプレイをパワーダウンするために、ＬＣＤＰＷＲラインを非能動化することと、ビデオ制御装置をパワーダウンさせるためにＶＩＤＥＮラインを非能動化することと、ＬＣＤディスプレイ用バックライトをパワーダウンさせるためにＢＬＯＮラインを非能動化することと、モデム３２２をオフにするためにＭＤＭＥＮラインを非能動化することとをＳＣＰに命令する、ＳＣＰに対するコマンドを送ることによって始動する。この後で、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置をパワーダウンするためにＦＤＤＳＬＴラインを非能動化する。更に、プロセッサ３１１は、オペレーティングシステム４７１（図３）が時刻及び日付情報をサポートするか否かを表示するために、ＴＶフラグ（図３）をセットするかクリアする。この後で、プロセッサ３１１は、その装置のモータをスピンダウン（spin down）するようにハードディスク駆動装置３２３に命令するコマンドをハードディスク駆動装置３２３に送ると共に、プロセッサ３１１が待機状態に入りつつあることをＳＣＰに知らせるコマンドをＳＣＰに送り、この後でプロセッサ３１１がそのクロックを停止させる。こうして、プロセッサ３１１は動作を概ね停止する。プロセッサ３１１は、特定の形態のコンピュータシステム動作がセレクタ３４６によるＢＲＥＡＫ  ＥＶＥＮＴ信号の能動化を引き起こすまで、この状態のままである。
【００９５】
プロセッサ３１１がこの非活動状態にある間も、ＳＣＰ３１６は完全な活動状態のままであり、実際には、特定の事象が生じる場合に主プロセッサ３１１を起動させる役割を有する。具体的には、キーボード３１７上のキーが押されると、標準的な打鍵時に通常そうであるように、ＳＣＰが割込み信号ＩＲＱ１を能動化する。このＩＲＱ１割込み信号はセレクタ３４６に接続され、プロセッサ３１１を起動させるためにＢＲＥＡＫ  ＥＶＥＮＴ信号を生じさせる。或いは、ＳＣＰ３１６が、モデム３２２からのモデム呼出し信号ＭＤＭＲＩを監視し、ジャック４３４に接続された電話回線からの着信呼出し信号がある時にプロセッサ３１１を起動させる。更に、ユーザが中断タイマのプリセットを指示した時には、ＳＣＰは、主プロセッサ３１１が待機モードに入る時点から始動するソフトウェアタイマを維持する。この基本的な考え方は、そのコンピュータシステムが、そのシステムを起動させるのに十分なだけの動作なしに、特定の時間期間の間に亙って大域待機モードにあったならば、そのシステムは、電源を更に保存するために、その時間間隔が満了する時に中断モードに自動的に移行するということである。当然のことながら、ユーザは、このタイマが稼働中であってはならないということを指示することが可能であり、この場合には、そのコンピュータシステムは単に待機モードのままである。しかし、本発明を説明するために、ユーザが中断タイマ機能をイネーブルにしたということと、従ってＳＣＰがこのタイマをソフトウェア内に維持するということが仮定される。ＳＣＰ内のこのタイマが満了する場合に、又は、ＳＣＰがモデム呼出し信号を検出する場合には、プロセッサ３１１内でＢＲＥＡＫ  ＥＶＥＮＴ信号を能動化してプロセッサ３１１を起動させるために、割込み信号ＩＲＱ１を能動化することによって擬似打鍵信号（false key stroke signal）を生じさせる。実際の打鍵の場合には、打鍵された特定のキーのコード化表示をＳＣＰがプロセッサ３１１に送るが、中断タイマの満了又はモデム呼出し信号の場合には、キーボード上に実在するいずれのキーにも対応せず且つタイマ満了又はモデム呼出し信号を表示するものとして認識するようにプロセッサ３１１がプログラムされている２つの別々のコードのどちらか一方を、ＳＣＰが送り出す。
【００９６】
従って、プロセッサ３１１を起動させるためにＢＲＥＡＫ  ＥＶＥＮＴ信号が結果的に能動化させられる時に、プロセッサ３１１のハードウェアはそのＣＰＵクロックを自動的に再始動させ、この後でプロセッサ３１１は、図１１のソフトウェアルーチンの場合の６５２に進み、このブロック６５２では、プロセッサ３１１はＳＣＰからのコードを受け入れて検査する。このコードが、待機中にＳＣＰによって維持されたソフトウェア中断タイマが満了したという表示であることが、６５３で確認される場合には、制御はブロック６５４に進み、このブロック６５４では、中断モードの中へ入ることを処理するルーチンに対するサブルーチン呼出しが行われ、こうしてそのコンピュータシステムが自動的に待機モードから中断モードに進む。一方、キーボード上での実際の打鍵又はモデム呼出し表示器信号のような他のいずれかの条件によってＢＲＥＡＫ  ＥＶＥＮＴ信号が生じさせられたということが、６５３で確認される場合には、プロセッサ３１１は通常動作モードに戻ることを必要とし、従ってブロック６５７に進む。
【００９７】
ブロック６５７では、プロセッサ３１１は、オペレーティングシステムが時刻及び日付情報を維持しているかどうかの表示を与えるために、待機に入る前にそのプロセッサがセットしたＴＶフラグ（図３）をチェックする。オペレーティングシステムが時刻及び日付情報を維持していることをこのフラグが示す場合には、制御がブロック６５８に進み、このブロック６５８では、プロセッサ３１１が、リアルタイムクロック回路３７６（図１）から最新の時刻及び日付情報を取り出し、オペレーティングシステム内の４７２（図３）の時刻／日付情報を更新する。
【００９８】
更に、制御がブロック６６１に進み、このブロック６６１では、プロセッサ３１１は、待機モードのためにフロッピー（登録商標）ディスク駆動装置がパワーダウンされる前にそのフロッピー（登録商標）ディスク駆動装置がその状態にあった動作モードを確認するために、そのフロッピー（登録商標）ディスク駆動装置に関する４８６（図３）におけるシャドーレジスタ情報をチェックする。そのフロッピー（登録商標）ディスク駆動装置は、その装置が待機と中断を除いてオフされることがないＡＬＷＡＹＳ  ＯＮモードと、コンピュータシステムがパワーアップされる時にその装置がオフのままにされるが、いずれかのポイントでその装置がアクセスされる場合にオンにされて、そのままオン状態のままであるＡＵＴＯ  ＯＮモードと、上記のように、その装置がアクセスされる度合いに応じて必要に応じてその装置がオン・オフされるＦＵＬＬ  ＡＵＴＯモードで、動作させられることが、可能である。ＦＵＬＬ  ＡＵＴＯモードに関しては、フロッピー（登録商標）ディスク駆動装置がＦＵＬＬ  ＡＵＴＯモードで動作させられている時を除いて、Ｉ／Ｏとラップ論理回路３６１と局所タイマ３５１とが、ＦＤＤ  ＴＲＡＰ信号とＬＯＣＡＬ  ＳＴＡＮＤＢＹ信号とをディスエイブルにするようにセットされる。そのフロッピー（登録商標）ディスク駆動装置がＦＵＬＬ  ＡＵＴＯモードで動作させられていない場合には、制御がブロック６６１からブロック６６２に進み、このブロック６６２では、プロセッサ３１１が、フロッピー（登録商標）ディスク駆動装置３２７への電力を回復させるためにＦＤＤＳＬＴラインを能動化し、主記憶装置内の４８６（図３）に格納されたシャドーレジスタからそのフロッピー（登録商標）ディスク駆動装置の状態を回復させる。これらのどちらの場合も、制御はブロック６６３に進み、このブロック６６３では、モデム３２２への電力を回復させるためにラインＭＤＭＥＮを能動化することと、ビデオ制御装置３１８への電力を回復させるためにラインＶＩＤＥＮを能動化することを、プロセッサ３１１がＳＣＰ３１６に命令する。この後で、プロセッサ３１１は、稼働中のビデオユニットがＬＣＤ３２１であるか外部ＣＲＴ４２６であるかを識別することをＳＣＰに命じる。ＳＣＰからの回答が稼働中のビデオユニットがＬＣＤであることを示す場合には、制御はブロック６６７に進み、このブロック６６７では、プロセッサ３１１が、ＬＣＤを選択するようにラインＣＲＴ／ＬＣＤをセットすることと、そのＬＣＤのためのバックライトをオンするために信号ＢＬＯＮを能動化することをＳＣＰに命令する。一方、外部ＣＲＴが稼働中のビデオユニットである場合には、制御はブロック６６６からブロック６６８に進み、このブロック６６８では、プロセッサ３１１が、外部ＣＲＴ４２６を選択するようにラインＣＲＴ／ＬＣＤをセットすることをＳＣＰに命令する。両方の場合とも、制御が６６９で呼出しルーチンに戻る。
【００９９】
そのコンピュータシステムを中断モードにガイドする中断ハンドラルーチンに対するサブルーチン呼出しは、図５のブロック５３１と、図８のブロック５７６と、図１０のブロック６４７と、図１１のブロック６５４とに関連して上記で既に説明されている。ここでは、この中断ハンドラルーチンが図１２（図１２ａ、１２ｂ）に関連させて説明される。上記のように、このコンピュータシステムは、ハードディスクが稼働している間は中断モードに入らない。従って、プロセッサ３１１は、ハードディスク駆動装置３２３が稼働中であるかどうかを確認するためにそのハードディスク駆動装置からの特定の状態情報を従来公知の仕方で読み出すことによって、図１２の６７１においてスタートする。ハードディスク駆動装置３２３が稼働中である場合には、制御はブロック６７２に進み、このブロック６７２では、プロセッサ３１１は、ゲート４３８へのＥＮＡＢＬＥ信号を能動化することをＳＣＰに命令し、この後で、図８に関連して既に説明されたように、プロセッサ３１１がハードディスクが稼働中ではないという信号を与えられる時に、そのプロセッサがブロック５７８で待機モードに入るのではなくブロック５７６で中断モードに入ることを、そのプロセッサが図８のブロック５７３で決定するであろうということを表示するために、プロセッサ３１１がＳＴフラグ（図３）をクリアする。制御はブロック６７２からブロック６７３に進み、このブロック６７３では、中断モードに入ることなしに中断ハンドラルーチンからの復帰が行われる。
【０１００】
一方、ハードディスクがブロック６７１で稼働中ではない場合には、制御はブロック６７６に進み、このブロック６７６では、プロセッサ３１１がそのハードディスク駆動装置３２３の現在状態を読み出し、その状態をＰＭＲＡＭ（図３）の部分４８２の中に保存する。その詳細は後で説明される。この情報がハードディスクから得られて上記メモリの中に格納された後に、プロセッサ３１１は、ハードディスク駆動装置を低電力モード（reduced power mode）にするためにラインＨＤＤＳＬＴを非能動化する。
【０１０１】
この後で、制御がブロック６７７に進み、このブロック６７７では、バッテリ電源の状態を確かめるために、ＳＣＰからのＢＡＴＴＬＯＷラインをプロセッサ３１１がチェックする。このバッテリ電源がかなり放電していることが確かめられる場合には、制御は、次に説明するブロック６７８に直接に進み、そのコンピュータシステムが中断モードに入ることを引き起こす。一方、バッテリ電源が十分である場合には、制御がブロック６８１に進み、このブロック６８１では、制御が、フロッピー（登録商標）ディスク駆動装置が稼働中であるかどうかを確かめるためにチェックを行う。フロッピー（登録商標）ディスク駆動装置が稼働中である場合には、制御はブロック６８２に進み、このブロック６８２では、スピーカ３９２に警告音を発生させるためにライン３９１（図１）を能動化し、フロッピー（登録商標）ディスク駆動装置が稼働中であるということをディスプレイ上でユーザに警告する。この後で、６７３において、制御が、中断モードに入ることなしに呼出しルーチンに戻される。一方、フロッピー（登録商標）ディスク駆動装置が稼働中ではないことがブロック６８１で確認される場合には、制御がブロック６７８に進み、中断モードへ入るための最終シーケンスを開始する。
【０１０２】
ブロック６７８では、プロセッサ３１１が、そのスタック４９２（図３）から、中断ハンドラルーチンがそれから呼び出されたポイントの表示を抜き出し、具体的には、上記スタック上に既に保存されており且つプログラム制御が戻されることになっているポイントを表示する命令ポインタの値の形で、上記表示を抜き出す。プロセッサ３１１は、後述されるように、その後の再開の際に使用するために上記表示を主記憶装置の中に保存する。この後で、ブロック６８３において、プロセッサ３１１が、明確には図１１のブロック６５４を経由して待機モードから中断モードへ自動的に入ることをそのコンピュータシステムが行っているかどうかを確かめるために、チェックを行う。そうである場合には、プロセッサ３１１は、オペレーティングシステムがそれが待機モードへ入ることの一部分として時刻及び日付情報をサポートするか否かを、既に提示している。一方、制御が待機モードから中断モードへ直接的に入るのではない場合には、制御はブロック６８６に進み、このブロック６８６では、制御が、現在のオペレーティングシステムが時刻及び日付情報をサポートするか否かに応じてＴＶフラグ（図３）をセット又はクリアする。どちらの場合も、制御は更にブロック６８７に進む。
【０１０３】
ブロック６８７では、プロセッサ３１１が４８１（図３）で保存されたＣＰＵ状態をとり、４８８でそのコピーを生じさせる。これは、更に別のＰＭＩ割込みが、後述される仕方で、ハードウェアが４８１で保存された情報をそのポイントで重ね書きしなければならない中断モードからの再開の途中で、意図的に引き起こされるからである。割り込まれたアプリケーションプログラムを再開するために、この情報が必要とされるので、この情報のコピーが４８８において一時的に保存される。これに加えて、プロセッサ３１１は、ＰＭＩに応答して４８１で自動的に保存されない幾つかの選択された内部レジスタを４８８において保存する。これは、ＰＭＩハンドラルーチンが、これらの被選択レジスタを変更することなしに、殆どのＰＭＩ割込みを処理することが可能であり、従って、殆どのＰＭＩ割込みのハンドリングをスピードアップするために、プロセッサ３１１がこれらの被選択レジスタを変更しないからである。一方、これらのレジスタを収容するプロセッサ３１１の部分が中断モード中にパワーダウンされ、従って、これらのレジスタの内容が失われるので、これらのレジスタは、中断モードに入るために保存されなければならない。従って、中断モードに入る前に、これらのレジスタが４８８で保存される。
【０１０４】
図１２ｂのブロック６８７では、プロセッサ３１１は、フロッピー（登録商標）ディスクがフロッピー（登録商標）ディスク駆動装置内にあるかどうかを確認するために、フロッピー（登録商標）ディスク駆動装置からの状態情報を読み込み、フロッピー（登録商標）ディスクがある時にはＤＦフラグ（図３）をセットし、フロッピー（登録商標）ディスクがない時にはそのフラグをクリアする。これは、そのコンピュータシステムが中断モードにある間にユーザがフロッピー（登録商標）ディスクを取り出すか、更に悪い場合には、そのフロッピー（登録商標）ディスクを別のフロッピー（登録商標）ディスクと入れ換える可能性があるので、フロッピー（登録商標）ディスクがそのフロッピー（登録商標）ディスク駆動装置内になければならないかどうかをプロセッサ３１１が動作の再開時に識別するためである。中断が生じた時に、割り込まれたアプリケーションプログラムが書込みの途中である場合には、プロセッサ３１１は、フロッピー（登録商標）ディスクが交換されたことを知ることは不可能であり、間違ったフロッピー（登録商標）ディスクにデータを書き込んでいるということを知らずに、フロッピー（登録商標）ディスク駆動装置にデータを書き込むタスクを完了する可能性がある。
【０１０５】
この後で、更にブロック６８７において、プロセッサ３１１が（マウスがある場合には）マウス４２１から従来の仕方で３バイトの状態情報を読み込み、そのバイトを４８２に格納する。一方、外部キーボードは、保存されなければならないような状態情報を持たないが、その代わりに、内部キーボートと正確に同一の構成とモードに常に維持される。この後で、プロセッサ３１１は、中断モードからプロセッサ３１１を起動させる事象を確定する再開マスクを構成してマスクレジスタ３８２（図１）の中にロードする。この後で、プロセッサ３１１は、ビデオ制御装置３１８からビデオＲＡＭ４４８を読み込み、従来のデータ圧縮技術を使用してビデオ情報を圧縮し、更には、主記憶装置の部分４７８（図３）の中に、この圧縮データを格納する。この後で、ＬＣＤディスプレイをパワーダウンするためにラインＬＣＤＰＷＲを非能動化することと、ビデオ制御装置をパワーダウンするためにラインＶＩＤＥＮを非能動化することと、ＬＣＤディスプレイ用のバックライトをオフするためにラインＢＬＯＮを非能動化することと、モデムをパワーダウンするためにラインＭＤＭＥＮを非能動化することとをＳＣＰに命令する一連のコマンドを、プロセッサ３１１がＳＣＰに送る。この後で、プロセッサ３１１は、ＲＡＭ４４０の内容と特定の内部レジスタの内容をプロセッサ３１１に送ることをＳＣＰに命じるコマンドをＳＣＰに送る。プロセッサ３１１はＳＣＰからこの情報を受け取り、この情報をＰＭＲＡＭ内の４８２（図３）に格納する。この後で、プロセッサ３１１は、主記憶装置に対して非常にゆっくりとしたリフレッシュを行うようにリフレッシュ制御回路３８６（図１）をセットし、更に、電源制御回路が、ＳＣＰとキーボードとビデオ制御回路とハードディスク駆動装置とＬＣＤディスプレイとモデムとフロッピー（登録商標）ディスク駆動装置とＲＯＭ３２８とに対するＳＹＳＶＣＣ信号をオフするように、電源制御回路３１２に対する信号ＳＹＳＰＷＲＯＦＦを非能動化する。当然のことながら、電源制御回路３１２は依然として主記憶装置３２６とプロセッサ３１１とフラッシュＲＡＭ３３１とに対してＰＭＶＣＣ電力を供給し続ける。最後に、プロセッサ３１１は、プロセッサ３１１が中断モードに入ることを引き起こすソフトウェア命令を実行し、その結果として、プロセッサ３１１は動作を停止し、時刻及び日付情報を維持し続けなければならないリアルタイムクロック３７６と、動作の再開を引き起こす条件を検出することが可能でなければならない再開制御回路構成要素３８１〜３８３と、主記憶装置３２６内にデータを維持しているリフレッシュ制御回路３８６のような回路を除いて、その大部分の回路に対する電力を内部的にオフする。
【０１０６】
リアルタイムクロック３７６からのＡＬＡＲＭ信号又はモデム３２２からのモデム呼出し表示器信号ＭＤＭＲＩがプロセッサ３１１を起動させることが可能でなければならないことをユーザが指定した場合には、プロセッサ３１１は、これらの事象のどちらかがＲＥＳＵＭＥ  ＲＥＳＥＴ信号を生じさせるように再開マスク３８２を構成している。しかし、最も一般的な再開の原因は、ユーザの手動操作によるスイッチ３１３の起動である。
【０１０７】
このＲＥＳＵＭＥ  ＲＥＳＥＴ信号は再開フラグ３８３をセットし、一方、このフラグは他のいずれかのリセット信号によって自動的にリセットされる。更に、このＲＥＳＵＭＥ  ＲＥＳＥＴ信号は、プロセッサ３１１がその内部回路構成要素全体に亙って電源を回復することを内部的に引き起こし、このプロセッサ３１１は、主記憶装置３２６がアクセスされることが可能であるように、リフレッシュ制御回路構成要素３８６を自動的に通常の状態にする。いずれかの種類のリセットに応答して、プロセッサ３１１は、フラッシュＲＡＭ３３１内の予め決められたロケーションに自動的に行き、そこに格納されたリセットハンドリングルーチンの第１の命令を実行する。このルーチンが図１３（図１３ａ、１３ｂ）に示されている。プロセッサ３１１は幾つかの内部診断を行うことから始めるが、しかし、これは従来公知のものであり、従って図１３には図示されていない。本発明に関しては、プロセッサ３１１によって行われる最も重要な段階は、システム電源ＳＹＳＶＣＣを再びオンにすることを電源制御回路３１２に行わせるためにＳＹＳＰＷＲＯＦＦ信号を非能動化することであり、従って、ＳＣＰとキーボードとビデオ制御装置とＬＣＤディスプレイとモデムとハードディスク駆動装置とフロッピー（登録商標）ディスク駆動装置とは、電源に再びアクセスする。
【０１０８】
この後で、６９２において、プロセッサ３１１が再開フラグ３８３（図１）をチェックする。再開フラグ３８３がセットされている場合には、プロセッサ３１１が、ＳＣＰのＥＥＰＲＯＭ４３９内に格納されたセットアップ情報を使用して、そのコンピュータシステムを構成しようとする。再開フラグ３８３がセットされていない場合には、そのコンピュータシステムがコールドブート（cold boot）を行い、リアルタイムクロック回路３７６のＲＡＭ３７７内に格納されたセットアップ情報を使用してそのシステム自体を構成しようとする。具体的には、そのコンピュータシステムが中断モードから再開しつつあるということを示すように再開フラグがセットされる場合には、制御がブロック６９２からブロック６９６に進み、このブロック６９６では、そのコンピュータシステムが、ＳＣＰのＥＥＰＲＯＭ４３９内に格納された現在セットアップ情報を使用して構成を試みる。
【０１０９】
明確に言えば、ブロック６９６では、プロセッサ３１１は、ＳＣＰが現在セットアップ情報をそのプロセッサに送るように、ＳＣＰに命令する。そのセットアップ情報が有効であるかどうかを確認するために、プロセッサ３１１は、この情報に対してチェックサムを行い、このチェックサム値を、そのセットアップ情報自体に含まれるチェックサム値と比較する。そのセットアップ情報が有効である場合には、制御が直ちにブロック６９８に進み、このブロック６９８では、そのコンピュータシステムは、このセットアップ情報を使用してそのシステム自体を構成する。一方、現在のセットアップ情報が有効ではないということがブロック６９７で確認される場合には、制御がブロック７０１に進み、このブロック７０１では、コンピュータシステムがユーザに対して現在のセットアップ情報が有効ではないということを警告し、リアルタイムクロック回路３７６内に格納されたブートセットアッップ情報（boot set-up information）を使用することを許可するようにユーザに求める。ユーザがそれを拒絶した場合には、制御がブロック７０２からブロック７０３に移行し、このブロック７０３でコンピュータシステムが停止する。ユーザは、そのコンピュータシステムを望ましい仕方で構成するために、従来のセットアップディスクを用いてそのコンピュータシステムを再始動することが選択される。通常、ユーザは上記ブートセットアップ情報の使用を許可し、従って、制御がブロック７０２からブロック６９３に進み、このブロック６９３では、プロセッサ３１１が、リアルタイムクロック回路３７６内に格納されたブートセットアップ情報に対してチェックサムを行い、このチェックサム値を、リアルタイムクロック回路３７６内に格納されたチェックサム値と比較する。このチェックサム値が正しかった場合には、制御がブロック７０６に直ちに進み、このブロック７０６では、後述されるように、そのコンピュータシステムがブートセットアップ情報を使用して構成される。そうでない場合には、制御がブロック７０７に進み、このブロック７０７ではプロセッサ３１１がユーザに対して、そのブートセットアップ情報が有効ではないということを警告し、フラッシュＲＡＭ３３１内に格納された工場デフォルト値セットアップ情報（factory default set-up information）を使用する許可を求める。そのユーザが許可を拒絶する場合には、ブロック７０８において制御がブロック７１１に移行させられ、そのコンピュータシステムが停止する。
【０１１０】
そうでない場合には、制御はブロック７１２に進み、このブロック７１２では、プロセッサ３１１が、フラッシュＲＡＭ３３１内の工場デフォルト値セットアップ情報に対してチェックサムを行い、この結果を、フラッシュＲＡＭ３３１内に格納されたチェックサム値と比較する。エラーが検出された時には、制御がブロック７１３に進み、このブロック７１３では、そのコンピュータシステムが使用可能なセットアップ情報を持たないということがユーザに警告され、この後でプロセッサ３１１が７１１で停止する。しかし、ブロック７１２で工場デフォルト値セットアップ情報が正確であることが確認された場合には、制御がブロック７１６に進み、このブロック７１６では、その工場デフォルト値セットアップ情報がフラッシュＲＡＭからリアルタイムクロック回路３７６内のＲＡＭ３７７にコピーされる。この後で、ブロック７０６において、リアルタイムクロック回路３７６内のセットアップ情報がＳＣＰに送られ、ＳＣＰは、現在セットアップ情報として使用するために、そのセットアップ情報をＥＥＰＲＯＭ４３９内に格納する。この後で、ブロック６９８では、プロセッサ３１１は、ＳＣＰ内に格納されているセットアップ情報に従ってそのコンピュータシステムを構成する。
【０１１１】
この後で、ブロック７０７において、プロセッサ３１１は、再開が行われているかどうかを確認する為に再開フラグ３８３を再びチェックする。そうでない場合には、制御はブロック７０８に進み、このブロック７０８ではプロセッサ３１１が従来の仕方でオペレーティングシステムを始動させる。再開が行われている場合には、制御はブロック７０７からブロック７１１に進み、このブロック７１１では、プロセッサ３１１が、上記ＰＭＩハンドラルーチンを呼び出すためにＰＭＩ割込みを発生させるソフトウェア命令を実行する。こうして、ソフトウェアＰＭＩが、図４に示されるＰＭＩハンドラルーチンによってプロセッサ３１１が動作を続けることをもたらす。具体的には、上記のブロック５０２では、そのコンピュータシステムは、中断モードからの再開に応じて又は他の何らかの理由からＰＭＩハンドラに入ったかどうかを確認するために、再び再開フラグをチェックする。この場合には再開フラグがセットされているであろうが故に、制御がブロック５０３に進み、このブロック５０３では、図１４（図１４ａ、１４ｂ、１４ｃ）に示される再開ハンドラルーチンへの分岐が行われる。
【０１１２】
図１４の再開ハンドラルーチン内のブロック７１３では、プロセッサ３１１は、主記憶装置の部分４８８（図３）からその部分内に格納された被選択レジスタの状態を取り出すことと、これらの値をプロセッサ３１１自体の中のレジスタに直接的に再格納することとによってスタートする。この後、プロセッサ３１１は、残っているプロセッサレジスタの状態を部分４８８から部分４８１に移し、それによって、ＰＭＩハンドラに再び入るために使用されるソフトウェアＰＭＩによって４８１に格納された情報をオーバライドし、その結果として、再開ハンドラの終了時には、ＰＭＩハンドラが終了し、割り込まれたアプリケーションプログラムが再開される際に、そのハードウェアがこれらのレジスタ状態を見い出し、プロセッサ３１１のレジスタに再格納することが可能である。この後で、同様に図１４の７１３において、プロセッサ３１１が、その状態の回復を行うことをＳＣＰに命令し、中断モードに入る前に主記憶装置内にプロセッサ３１１によって格納されたＳＣＰレジスタの内容とＲＡＭの内容を、ＳＣＰに送る。この後で、プロセッサ３１１は、ビデオ制御装置をオンするためにＶＩＤＥＮ信号を活動化することをＳＣＰに命令する。この後で、プロセッサ３１１はビデオレジスタ４４６の構成を回復させ、更に、主記憶装置内の４７８に保存されたビデオＲＡＭの状態からビデオＲＡＭを展開（uncompress）して回復させる。この後で、プロセッサ３１１が、ＥＥＰＲＯＭ４３９内のセットアップ情報から使用ビデオユニットを識別するようにＳＣＰに命令する。この後で、ブロック７１６において、ＬＣＤディスプレイがユーザによって選択された使用ビデオユニットであるということをプロセッサ３１１が確認した場合には、プロセッサ３１１はブロック７１７に進み、このブロック７１７では、プロセッサ３１１は、ＬＣＤディスプレイをパワーアップするためにＬＣＤＰＷＲ信号を能動化することと、そのＬＣＤディスプレイ用のバックライトをオンするためにＢＬＯＮ信号を能動化することとをＳＣＰに命令する。一方、ユーザが使用ビデオユニットとして外部ＣＲＴ４２６を選択したということが７１６で確認される場合には、制御がブロック７１８に進み、このブロック７１８では、プロセッサ３１１が、そのＣＲＴを選択するためにＣＲＴ／ＬＣＤ信号をセットすることをＳＣＰに命令する。この後で、どちらの場合も、ブロック７２１においてプロセッサ３１１が、モデム３２２をパワーアップするためにＭＤＭＥＮラインを能動化することをＳＣＰに命令する。この後で、ブロック７２２において、プロセッサ３１１は、フロッピー（登録商標）ディスク駆動装置がＦＵＬＬ  ＡＵＴＯモードで動作させられているかどうかを確認するために、４８６においてシャドーレジスタ情報をチェックする。フロッピー（登録商標）ディスク駆動装置がＦＵＬＬ  ＡＵＴＯモードで動作させられていない場合には、ブロック７２３において、プロセッサ３１１が、フロッピー（登録商標）ディスク駆動装置をパワーアップするためにＦＤＤＳＬＴラインを能動化し、そのフロッピー（登録商標）ディスク駆動装置の制御レジスタの構成を回復させるためにそのフロッピー（登録商標）ディスク駆動装置に４���６で格納されたシャドーレジスタを送る。
【０１１３】
最後に、制御がブロック７２６に進み、このブロック７２６では、プロセッサ３１１は、フロッピー（登録商標）ディスクの交換が生じたことをオペレーティングシステムに対して表示させるために、ＤＣフラグ４７３（図３）をセットする。これは、オペレーティングシステムが特定の標準テーブルをディスクから記憶装置内のそのディスクのイメージに再読出しすることを強制し、それによって、コンピュータシステムが中断モードにあった間にユーザがディスクを入れ替えた場合に、記憶装置内のこれらのテーブルのイメージが、ディスク駆動装置内にもはや存在しないディスク上のテーブルとは異なって、ディスク駆動装置内に実際に入っているディスクのテーブルに少なくとも一致するということを確実なものとする。
【０１１４】
この後で、同様にブロック７２６において、プロセッサ３１１が、ハードディスク駆動装置をパワーアップするためにラインＨＤＤＳＬＴを能動化し、この後で、中断モードに入る前にプロセッサ３１１がハードディスクから得て格納したハードディスク駆動装置の状態に関する情報を、そのハードディスク駆動装置に送る。これは、このハードディスク駆動装置を、そのコンピュータシステムの動作が中断される前のそのハードディスク駆動装置の状態に戻す。この後で、プロセッサ３１１は、図９のブロック６１８に関連して上述されたように、部分状態保存を行うようにＳＣＰに命令する。この後で、プロセッサ３１１は、そのプロセッサに現在のパスワードを送るようにＳＣＰに命令し、更に、そのパスワードが有効パスワードであることが７２７で確認される場合には、プロセッサ３１１は７２８においてユーザからのパスワードを要求して受け入れ、この後の７２９において、これらのパスワードを比較する。これらのパスワードが一致しない場合には、プロセッサ３１１は、７２８、７２９に留まり、他のユーザが許可なくそのコンピュータシステムを使用することを防止する。
【０１１５】
これらのパスワードが一致する場合には、制御が７３１に進み、この７３１では、そのコンピュータシステムがオフされた時にフロッピー（登録商標）ディスク駆動装置内にディスクがあったかどうかを確認するために、プロセッサ３１１がＤＦフラグ（図３）をチェックする。ディスクがあった場合には、制御がブロック７３２に進み、このブロック７３２では、プロセッサ３１１が、同一のフロッピー（登録商標）ディスクが依然としてそのフロッピー（登録商標）ディスク駆動装置内にあるか、又は同一のフロッピー（登録商標）ディスクがそのフロッピー（登録商標）ディスク装置内に再装入されたことを確かめるために、稼働中のディスプレイユニットをユーザへの質問のために使用する。こうしたフロッピー（登録商標）ディスクが存在していることをユーザが確認したということを確かめるために、チェックが７３３で行われる。ユーザがそれを確認しない場合には、制御はブロック７３２、７３３に残る。ユーザの確認が得られると直ぐに、制御はブロック７３６に進み、このブロック７３６では、プロセッサ３１１は、部分復元を行うようにＳＣＰに命令し、ブロック７２６で受け取られた２バイトをＳＣＰに送る。或いは、マウス４２１がある時には、プロセッサ３１１は、中断前にそのマウスから得られた３バイトを主記憶装置の部分４８２から取り出し、この３バイトを従来の仕方でマウスの中に再ロードする。
【０１１６】
この後で、ブロック７３７において、オペレーティングシステムが時刻及び日付情報をサポートするかどうかを確認するために、プロセッサ３１１がＴＶフラグ（図３）をチェックする。サポートする場合には、ブロック７３８において、プロセッサ３１１が、リアルタイムクロック３７６（図１）から最新の時刻及び日付情報を読み取り、この情報を、オペレーティングシステムのために使用される主記憶装置の部分４７１内の４７２（図３）に維持された時刻及び日付情報の更新のために使用する。この後で、７４１において、プロセッサ３１１は、タイマ３５１、３５２に関するＥＥＰＲＯＭ４３９内に格納されたセットアップ情報をそのプロセッサに送るようにＳＣＰに命じ、タイマ３５１、３５２が始動するように、これらのタイマに関するレジスタ３５６、３５７を構成するために（又は、これらのタイマが使用されない場合にはこれらのタイマをディスエイブルにするために）上記セットアップ情報を使用する。この後で、７４１において、プロセッサ３１１は、そのスタック４９２を変更するために図１２のブロック６７８で保存されたポインタを使用し、従って、この直後にプロセッサ３１１が７４２においてサブルーチン復帰を行う時に、プロセッサ３１１が、そのプロセッサが中断モードに入る前に中断ハンドラサブルーチンがそこから呼び出されたポイントに戻り、即ち、言い換えれば、各々に図５、８、１０、１１に示されるブロック５３１、５７６、６４７、６５４のいずれか１つに戻る。そのコンピュータシステムが中断モードに入り、更に中断モードから再開することが可能であるように、サブルーチン復帰の後に、そのコンピュータシステムが、実行が停止させられたポイントからＰＭＩハンドラルーチンの実行を続ける。ＰＭＩハンドラルーチンの実行が最終的に完了された時には、割り込まれたアプリケーションプログラムの実行が全く割込みがなかったかのように再開するように、プロセッサ３１１が、上述された従来の仕方で、図４のブロック５２２、５２３においてＰＭＩハンドラから出る。
【０１１７】
次に、システム制御プロセッサ（ＳＣＰ）３１６を更に詳細に説明すると、図１５は、このＳＣＰのＥＥＰＲＯＭ４３９内に格納された情報の一部の説明図である。このデバイスの部分７５１は、市販されている従来のパーソナルコンピュータに共通して見い出されるタイプの現在セットアップ情報を格納するために使用される。これに加えて、部分７５２、７５３は、局所タイマ３５１に関するプリセット時間の２つの異なった値を格納し、一方の値は、そのコンピュータシステムがＡＣ電源によって動作している時に使用され、他方の値は、そのコンピュータシステムがＤＣ電源によって動作している時に使用される。同様に、部分７５６、７５７は、大域待機タイマ３５２で使用するためのＡＣ値とＤＣ値の各々を格納し、部分７５８、７５９は、ＳＣＰによってソフトウェア内に保持される中断タイマのための中断タイマプリセットのＡＣ値とＤＣ値の各々を格納し、部分７６１、７６２は、ＳＣＰによって保持されるバックライトタイマのためのＡＣプリセット値とＤＣプリセット値の各々を収容する。部分７６３は現在システムパスワードを格納し、部分７６６は、プロセッサ３１１とＳＣＰ３１６とがその上に取り付けられる主回路基板の基板版番号（board revision number）を表す値を収容する。更に別の部分７６７は幾つかのフラグを格納し、これらのフラグは、ＬＣＤ３２１又は外部ＣＲＴ４２６のどちらが現在稼働中のディスプレイユニットであるかを表示するＬＣフラグと、手動操作によるスイッチ３１３の非能動化がそのコンピュータシステムを中断モード又は電源オフモードのどちらにするものであるかを表示するＳＰフラグとを含む。
【０１１８】
図１６は、ＳＣＰ  ＲＡＭ４４０と、このＲＡＭの中に格納された情報の幾つかを図示する。明確に言えば、部分７７１はバックライトタイマのためのプリセットを格納する。これは、バックライトタイマの作動に使用するために現時点で指定されている値であり、具体的には、そのコンピュータシステムがＡＣ電源で動作している場合にはＥＥＰＲＯＭ内の７６１に格納されたＡＣバックライトプリセットと、そのコンピュータシステムがＤＣ電源で動作している場合に７６２に格納されたＤＣバックライトプリセットである。同様に、ＳＣＰ  ＲＡＭは、ＥＥＰＲＯＭ内の７５８、７５９に格納されたＡＣ中断プリセットとＤＣ中断プリセットのどちらか一方である中断プリセットを７７２に格納する。更に、ＳＣＰ  ＲＡＭは、バックライトタイマとして働くロケーション７７３と、中断タイマとして働くロケーション７７４を含む。これらのタイマの各々は、計時されるべき時間間隔を表す正の数である適切なプリセットを関連ロケーションに格納することによって始動する。この後で、各タイマ内の数が後述される仕方でソフトウェアによって周期的に減分され、上記ロケーション内の値がゼロに達する時に、そのタイマが満了する。ＳＣＰ  ＲＡＭ４４０はＰＭＩバイト７７６も含む。主プロセッサ３１１が、外部ＰＭＩの原因を識別することをＳＣＰに命令すると、このＳＣＰは主プロセッサにＰＭＩバイト７７６を送る。このバイトは、ハードディスクＬＥＤ信号がＰＭＩの原因であったということを表示するためにセットされるＨＤビットと、電源がＡＣ電源に変更されたばかりであるということを表示するＡＣビットと、電源がＤＣ電源に変更されたばかりであるということを表示するＤＣビットと、ホットキー・マルチキー・コンビネーションがキーボード上で打鍵され、このコンビネーションがそのＰＭＩの原因であったということを表示するＨＫビットを含む。これに加えて、このＰＭＩバイトは、キーボード上で能動化された最新のホットキーを識別するコードを含む。
【０１１９】
更に、このＳＣＰ  ＲＡＭは、ＳＣＰの動作モードを制御するモードバイト７７８と、キーボードの動作モードを制御するモードバイト７７９を含む。本実施例の理解のために、これらのバイトからの１つのビットが示され、このビットはキーボード・イネーブル（ＫＥ）フラグである。このＫＥフラグは、キーボードからの情報が受け取られるべきか否かを表示する。特定のアプリケーションプログラムは、ユーザがキーボード上で情報を入力することを防止するために、このフラグを一時的にクリアすることが可能である。
【０１２０】
更に、ＲＡＭ４４０は、追加のフラグ、明確に言えば、主プロセッサ３１１が現在は待機モードにあるということをＳＣＰに知らせるためにセットされる待機（ＳＢ）フラグを収容する部分７８１を含む。更に、ＲＡＭ４４０は、キーボード３１７上の４つのＬＥＤ４４２の各々に対応するビットを有する部分７８３も含み、これらのビットの各々は、通常動作のためにキーボード上の関連のＬＥＤが現在はオン又はオフのどちらであるかを表示する。更に、ＲＡＭ４４０は、下記で説明される待ち行列領域（queue area）７８６と、通常のスタック領域７８７とを含む。コンピュータシステムが中断モードから再開しつつある場合のようにＳＣＰへの電源がオンされる毎に、ＳＣＰのハードウェアは、ＲＯＭ４３７内の予め決められたロケーションに格納された、そのＳＣＰを制御するファームウェアプログラムの第１の命令であるプログラム命令をＳＣＰに自動的に実行させる。図１７〜２０はこのファームウェアプログラムのフローチャートである。８０１でのパワーアップリセットの後に、ブロック８０２はそのファームウェアプログラムの第１の部分を表し、この第１の部分でＳＣＰはそれ自体をデフォルト値セットアップに構成する。これは、ビデオ制御装置３１８とＬＣＤ３２１への電源をオンし、このＬＣＤ用のバックライト４３１をオンすることとを含む。稼働中のディスプレイユニットがＬＣＤ３２１ではなく外部ＣＲＴ４２６であると同時に、そのコンピュータシステムが中断モードから再開しつつある場合にさえ、上記のデフォルト値構成が行われる。稼働中のディスプレイユニットが実際に外部ＣＲＴ４２６でなければならない場合に、ＳＣＰを適切に再構成するためのコマンドをＳＣＰに送ることは、主プロセッサ３１１の役割である。
【０１２１】
ＳＣＰがそれ自体をデフォルト値セットアップ構成に構成した後に、制御はブロック８０２からブロック８０３に進み、このブロック８０３では、キーボードがイネーブルにされて情報がキーボードから受け取られることが可能であることを表示するＫＥフラグ（図１６）がセットされているかどうかを確かめるために、ＳＣＰがチェックを行う。ＫＥフラグがセットされている場合には、制御がブロック８０６に進み、このブロック８０６では、ＳＣＰは、キーが既に押されたかどうかを確認するために内部キーボードだけを走査する。キーが既に押されている場合には、制御はブロック８０７に進み、このブロック８０７では、ＳＣＰが、７７１に格納された現在バックライトリセットを取り出すことと、その現在バックライトリセットを７７３のバックライトタイマロケーション内に格納することとによって、バックライトタイマ７７３（図１６）を再スタートさせる。こうして、キーが押され続けている限りは、このバックライトタイマは、そのタイマが満了となる前に周期的に再スタートさせられ、こうしてバックライトをオン状態に保ち、一方、そのバックライトタイマが満了する場合には、電源を保存するために、ＳＣＰが下記の仕方でバックライトをオフにする。
【０１２２】
この後で、やはりブロック８０７において、コンピュータシステムが、例えば負の数をロケーション７７４内に格納することによって、そのバックライトタイマが既にディスエイブルにされている場合も、中断タイマ７７４を強制的にディスエイブルにする。キーが既に押されたという事実が、主プロセッサ３１１がたまたま中断モードになっている場合にさえ、ＳＣＰが、そのキーストロークを主プロセッサ３１１に渡すために主プロセッサ３１１を能動化させるということを意味し、従って、主プロセッサが待機モードを出つつあり、主プロセッサ３１１が待機モードにある時間期間を計測する必要はもはやないので、中断タイマを停止させる必要がある。同様の理由から、主プロセッサ３１１が待機モードにはないということを表示するために、ＳＢフラグ（図６）が強制的にクリアされる。
【０１２３】
この後で、ブロック８０８において、既に押されたキーがホットキー（言い換えれば、予め定義された幾つかの特定のマルチキーコンビネーションのいずれか１つ）であるかどうかを確かめるためにチェックが行われる。そうでない場合には、８１１において、この押された特定のキーを表すコードがＳＣＰ  ＲＡＭ４４０の待ち行列部分７８６内に入れられ、この待ち行列部分７８６からそのコードが主記憶装置に直ちに送られる。一方、この押されたキーがホットキーであるということが８０８で確認される場合には、制御がブロック８１２に進み、このブロック８１２では、ＳＣＰが、ホットキーが既に押されたことを表示するためにＨＫビットをセットすることと、その特定のホットキーに対応する特有のコードをＰＭＩバイトのコード部分に置くこととによって、ＰＭＩバイト７７６（図１６）を更新する。この後で、ＳＣＰは非使用コードを待ち行列部分の中に入れ、この非使用コードは、プロセッサ３１１が待機モードにある場合にそのプロセッサを能動化するという効果を有するが、しかし、この非使用コードが最後にプロセッサ３１１に達する場合にそのプロセッサ３１１によって常に廃棄される。この後で、やはりブロック８１２において、主プロセッサ３１１内でＰＭＩを発生させるために、ＳＣＰがＥＸＴＰＭＩラインを能動化する出力信号を生じさせる。
【０１２４】
制御は更にブロック８１６に進み、このブロック８１６では、待ち行列７８６が空白かどうかを確かめるためにＳＣＰがチェックを行う。待ち行列７８６が空白ではない場合には、待ち行列７８６は、主プロセッサ３１１に送られるのを待っている情報を収容し、制御はブロック８１７に進み、このブロック８１７では、主プロセッサ３１１がＳＣＰにコマンドを送るところであるということを表示するために主プロセッサ３１１からのＣＰＵＳＵＲＥＱラインが活動化されているかどうかを確かめるチェックを、ＳＣＰが行う。ＣＰＵＳＵＲＥＱラインが能動化されている場合には、主プロセッサ３１１に対するインタフェースをクリアに維持するために、ＳＣＰが待ち行列から情報を送らず、従って、このインタフェースは、そのコマンドに応答してＳＣＰが主プロセッサに送り返す必要がある全ての情報のために使用可能であり、これと同時に、このインタフェースは、主プロセッサがコマンドを出すのと概ね同時に主プロセッサに対して送られる待ち行列からの情報が、そのコマンドに対する応答であると主プロセッサによって誤解される可能性を防止する。ＣＰＵＳＵＲＥＱラインが能動化されていないということが８１７で確認される場合には、ＳＣＰは、ブロック８１８において、待ち行列からコードを取り出し、主プロセッサ３１１へのインタフェース内の出力レジスタの中に入れ、この後で、ＳＣＰは、この出力レジスタが主プロセッサ用の情報を含むということを主プロセッサに示すために、ＩＲＱ１割込み信号を発生させる。主プロセッサ３１１が待機モードにある時には、主プロセッサについての言及に関連して上記で既に説明されたように、そのＩＲＱ１割込み信号が主プロセッサをその待機モードから能動化する。この後で、主プロセッサ３１１は、８１９においてブロック８０３、８１８を経由してループし、これはＳＣＰのプログラムの主ループを構成する。
【０１２５】
この主ループは様々な事象によって割り込まれ、こうした事象の１つは、外部キーボード又はマウス４２１によって情報をＳＣＰに送ろうとすることである。情報を送ろうとするそうした試みによって引き起こされる割込みに応答して、ＳＣＰは、図１８に示される割込みサービスルーチンを実行する。このルーチンでは、先ず最初に、ユーザが情報を入力することが現在許可されているかどうかを確認するために、ＳＣＰが８２１においてＫＥフラグをチェックする。このフラグがセットされていない場合には、制御がブロック８２２に進み、このブロック８２２では、情報を受け取ることなしに割込みハンドラからの復帰が行われる。しかし、通常は、その情報を受け取ることが可能であることが８２１で確認され、従って、この情報が８２３で受け取られ、この後で、ブロック８２６において、そのコンピュータシステムが、そのシステムが外部キーボード又はマウスを取り扱っているかどうかを確認し、そのデバイスがキーボードである場合には、ＳＣＰがブロック８２７に進み、このブロック８２７では、ＳＣＰが、能動化されたキーを表すコードを待ち行列７８６の中に置く。ホットキーは、内部キーボードに関してのみ認識され、外部キーボードに関しては認識されない。外部キーボードからホットキーの能動化が受け取られる場合には、このホットキーの能動化が放棄されることが可能である。従って、全ての有効コードが待ち行列の中に直接置かれる。この後で、ＳＣＰがバックライトタイマを再スタートさせ、中断タイマをディスエイブルにし、ブロック８０７に関連して上記で説明された理由と同じ理由からＳＢフラグをクリアし、割り込まれたルーチンに８２２で戻る。
【０１２６】
一方、外部デバイスがマウスであることが８２６で確認される場合には、制御がブロック８２８に進み、このブロック８２８では、マウスから受け取られたコードが出力レジスタ内に置かれ、この後で、ＳＣＰが割込みラインＩＲＱ１２を能動化し、この割込みラインＩＲＱ１２が、マウスを用いた使用のために確保され、マウスからの情報がプロセッサ３１１に送られることをプロセッサ３１１に示す。この後で、ＳＣＰがバックライトタイマを再スタートさせ、中断タイマをディスエイブルにし、ＳＢフラグをクリアし、８２２で復帰する。
【０１２７】
図１７に示される主ルーチンに対する割込みの別の原因は、主プロセッサ３１１内のクロック発生回路要素から受け取られたキーボードクロック信号ＫＢＣＬＣＫのパルスである。この割込みは規則的な間隔で起こり、従って、この割込みの発生の各々が、この間隔に等しい時間量の経過を表す。従って、この割込みの発生が、時間の経過を維持するために使用されると共に、幾つかのハウスキーピング機能を果たすために使用される。この割込みのためのファームウェア処理ルーチンが図１９（図１９ａ、１９ｂ）に示され、この図では、タイマロケーション７７３、７７４内の数がゼロより大きい場合に、ＳＣＰが、これらの数を減分することによって８３１でスタートする。上記のように、各タイマ内の正の数がゼロの値に減分される時に、各タイマの満了が起こる。
【０１２８】
この後で、８３２において、ＳＢフラグがセットされているかどうかを確かめるために、言い換えれば、主プロセッサ３１１が現在は待機モードにあるかどうかを確かめるために、そのコンピュータシステムがチェックを行う。主プロセッサ３１１が待機モードにある場合には、制御がブロック８３３に進み、このブロック８３３では、中断タイマが満了になったばかりであるかどうか、又は、言い換えれば、ロケーション７７４内の値がブロック８３１において「１」から「０」に変更されたばかりであるかどうかを確かめるために、ＳＣＰがチェックを行う。そうである場合には、このコンピュータシステムは、主プロセッサが待機モードにある間、予め決められた時間期間の間に亙って非活動状態のままであり、従って、ユーザがそのコンピュータシステムを再び使用することを始めるまで更に電源を保存するために、主プロセッサ３１１が中断モードに移行することになっている。こうして、ブロック８３６では、主プロセッサ３１１が中断モードに入ることが可能であるように主プロセッサが待機モードから出ることが引き起こされるために、主プロセッサがもはや待機モードにはないということを表示するためにＳＣＰがＳＢフラグをクリアする。この後で、ＳＣＰは待ち行列７８６をクリアし、従って、キーボードによって使用されない特殊コードを主プロセッサ３１１に送るために待ち行列が使用されることが可能であり、この特殊コードは、中断タイマが既に満了になったということと、主プロセッサ３１１が待機モードから中断モードへ移行しなければならないということを表示する。
【０１２９】
一方、中断タイマが未だ満了になっていないということがブロック８３３で確認される場合には、ブロック８３７において、着信呼出しがあることを示すためにモデム３２２からのモデム呼出し信号ＭＤＭＲＩが能動化されたばかりであるかどうかを確かめるために、ＳＣＰがチェックを行う。モデム呼出し信号ＭＤＭＲＩが能動化されたばかりである場合には、制御はブロック８４１に進み、このブロック８４１では、ＳＣＰが中断タイマ７７４をオフし、この後で、このＳＣＰが、ブロック８３６に関連して上記で説明されたものと同様な動作を行うが、この動作は、待ち行列内に置かれた特殊コードが、モデム呼出し信号が発生したことを示すために主プロセッサ３１１によって割り込まされる、キーボードによっては使用されない別の特殊コードであるという点で、ブロック８３６に関連して上記で説明されたものとは異なっている。
【０１３０】
モデム呼出し信号がモデムから受け取られていないことがブロック８３７で確認される場合には、制御がブロック８４２に進み、このブロック８４２では、キーボード上の４つのＬＥＤ４４２が、これらのＬＥＤが順次点灯させられるように制御され、このことは、主プロセッサ３１１が待機モードにあるということをそのコンピュータシステムのユーザに対して視覚的に表示する働きをする。これとは対照的に、ＳＢフラグがセットされていなかったことと、従って主プロセッサ３１１が待機モードになかったということとが、ブロック８３２で確認された場合には、制御が直ちにブロック８４３に進み、このブロック８４３では、ＳＣＰ  ＲＡＭ内の７８３に格納されたＬＥＤ状態が、キーボード３１７内のＬＥＤ４４２を通常の動作状態にセットするために使用される。
【０１３１】
いずれにしても、制御は更にブロック８４６に進み、このブロック８４６では、ＳＣＰが、Ａ／Ｄ変換器４１６を経由して電源制御回路３１２からＲＢＡＴＴ信号の値を読み取り、この後で、その信号の状態を分析する。再充電可能バッテリ３９６に固有の特性は、そのバッテリが高い充電量を有する間は、その端子電圧が非常にゆっくりと低下するが、そのバッテリの電力がコンピュータシステムを作動させるためには不十分となる状態に達する直前には、その端子電圧が短時間のうちに急激に低下するので、ＳＣＰが上述ＲＢＡＴＴ信号の経時的な変化の割合を解析することが好ましい。従って、この信号の変化の割合が予め決められた基準値を越えたことが確認される場合には、このＳＣＰは、バッテリ電力が低下しつつあることの表示として、主プロセッサ３１１へのＢＡＴＴＬＯＷ信号を能動化する。しかし、ＲＢＡＴＴ信号の詳細な解析が必要ではないことと、この代わりに、ＳＣＰが、予め決められた電圧より低い値にＲＢＡＴＴ信号が低下したかどうかを確認した後で、主プロセッサ３１１に対するＢＡＴＴＬＯＷ信号を能動化することも可能である。
【０１３２】
この後で、ブロック８４７では、電源制御回路３１２からのＤＣ／ＡＣ信号が１つの状態から別の状態に変化したばかりであることを確かめるために、ＳＣＰがこのＤＣ／ＡＣ信号をチェックする。ＤＣ／ＡＣ信号が１つの状態から別の状態に変化した場合には、制御がブロック８４８に進み、このブロック８４８では、ＳＣＰが、現在のコンピュータシステム電源がＡＣであるか又はＤＣであるかを表示するために、ＰＭＩバイト７７６内にＡＣビットかＤＣビットのどちらかをセットする。この後で、ＳＣＰは、主プロセッサ３１１内にＰＭＩを発生させるためにＥＸＴＰＭＩ信号を能動化する信号を４３５において出力する。
【０１３３】
ブロック８５１では、ＳＣＰが、ＬＣＤディスプレイ３２１がその上に装着される蓋のための蓋スイッチ４３２からのＬＩＤＳＷ信号をチェックする。この蓋が閉じられている場合には、制御はブロック８５２に進み、このブロック８５２では、蓋が閉じられたばかりであるかどうかを確かめるためにＳＣＰがチェックを行う。その蓋が以前から閉じられていた場合には、ブロック８５３がスキップされるが、その蓋が閉じられたばかりである時には、制御はブロック８５３に進み、このブロック８５３では、スピーカ３９２が警告音を発することを引き起こすためにライン４１７を能動化し、この後で、バックライト４３１をオフするためにＢＬＯＮラインを非能動化する。従って、このコンピュータシステムの動作中に蓋が閉じられる場合には、このコンピュータシステムは待機モード又は中断モードに自動的に入ることはないが、その代わりに、ユーザにそのシステムが稼働中であることを警告するために単純に警告音を発し、電力を保持するためにＬＣＤ用バックライトをオフするということに留意すべきである。
【０１３４】
蓋が開いていることがブロック８５１で確認された場合には、ＳＣＰは、８５４において、そのＬＣＤが現在稼働中のディスプレイであるかどうかを確かめるためにチェックを行い、そのＬＣＤが現在稼働中のディスプレイである場合には、ＳＣＰは、バックライトタイマが既に満了になっているかどうかを確かめるために８５５でチェックを行い、バックライトタイマが満了になっていない場合には、ブロック８５６に進み、このブロック８５６では、ＳＣＰは、バックライト４３１をオンするためにＢＬＯＮ信号が能動化されることを確実なものにする。一方、ＬＣＤディスプレイが稼働中でないか又はバックライトタイマが満了している場合には、バックライトをオフするために、ブロック８５７でＳＣＰがＢＬＯＮ信号を非能動化する。従って、７７１におけるバックライトプリセットによって特定された予め決められた時間期間の間、ユーザがキーを全く押さない場合には、電源を保存するためにバックライトが自動的にオフされるが、ユーザが再びキーを押すとバックライトが自動的にオンに戻される。バックライトの適切な制御の後に、ＳＣＰは８５８に進み、この８５８で制御が呼出しルーチンに戻る。
【０１３５】
図１７に示される主ルーチンからＳＣＰに割り込むことが可能な更に別の事象が、主プロセッサ３１１がＳＣＰにコマンドを送る時に発生し、このコマンドをインタフェースレジスタの中にロードすることが、ＳＣＰに対する割込みを自動的に生じさせる。このコマンドを取り扱う割込みルーチンが図２０（図２０ａ、２０ｂ、２０ｃ、２０ｄ、２０ｅ）に示されている。図２０の８６６で、ＳＣＰは、主プロセッサがそのＳＣＰに送ったコマンドを調べる。８６７においては、そのコマンドが、使用可能なビデオディスプレイとしてＬＣＤディスプレイをＳＣＰが選択すべきであるということを示す場合に、制御がブロック８６８に進み、このブロック８６８では、ＳＣＰが、ＬＣＤ３２１を選択するようにＣＲＴ／ＬＣＤ出力をセットし、この後で、この設定を反映するためにＬＣフラグ（図１５）を更新する。一方、そのコマンドがＬＣＤ３２１を選択することでなかったことが８６７で確認され、そのコマンドが、使用可能なディスプレイユニットとして外部ＣＲＴ４２６を選択することだったことが８７１で確認された場合には、制御がブロック８７２に進み、このブロック８７２では、ＳＣＰが、そのＣＲＴを選択するようにＣＲＴ／ＬＣＤラインをセットし、ＬＣフラグを更新するであろう。そうでない場合には、制御がブロック８７３に進み、このブロック８７３では、そのコマンドが、主プロセッサ３１１が待機モードに入りつつあることを示すかどうかを確認するために、ＳＣＰがチェックを行い、そうである場合には、ＳＣＰがブロック８７６に進み、このブロック８７６では、主プロセッサが待機モードにあることを表示するためにＳＣＰがＳＢフラグをセットし、ロケーション７７２（図１６）からプリセット値を取り出し、このプリセット値が正の数である場合には、中断タイマをスタートさせるために、このプリセット値をロケーション７７４内に置く。
【０１３６】
そのコマンドがハードディスク駆動装置からのＬＥＤ信号をイネーブルにすることであることが８７７で確認された場合には、ＳＣＰは、ブロック８７８で、ゲート４３８に対するそのＥＮＡＢＬＥ出力を能動化する。そうでない場合には、そのコマンドが、ＥＸＴＰＭＩ信号の能動化によるＰＭＩの発生の原因をＳＣＰが識別することの要求であるということがブロック８８１で確認されると、制御がブロック８８２に進み、このブロック８８２では、ゲート４３８へのＥＮＡＢＬＥ信号、ハードディスク駆動装置３２３からのＬＥＤ信号の両方が能動化されたかどうかを確かめるために、ＳＣＰがチェックを行い、そうである場合には、制御はブロック８８３に進み、ＰＭＩバイト７７６内のＨＤビットをセットする。どちらの場合とも、ＳＣＰは主プロセッサにＰＭＩバイトを送る。ＳＣＰがブロック８８１からブロック８８７に直接進み、コマンドがＬＣＤ３２１をパワーアップすることであることをＳＣＰがブロック８８７で確認した場合には、ＳＣＰは、ブロック８８８で、ＬＣＤ３２１へのＬＣＤＰＷＲラインを能動化する。そうでない場合には、ＳＣＰはブロック８９１に進み、コマンドがＬＣＤ３２１をパワーダウンすることであることをＳＣＰが確認した場合には、ＳＣＰは、ブロック８９２において、ＬＣＤ３２１へのＬＣＤＰＷＲラインを非能動化する。
【０１３７】
ＳＣＰがブロック８９１からブロック８９３に直接進み、コマンドがバックライトをパワーアップすることであることをＳＣＰがブロック８９３で確認した場合には、ＳＣＰはブロック８９６に進み、バックライトをオンするためにＢＬＯＮラインを能動化する。そうでない場合には、ＳＣＰはブロック８９７に進み、コマンドがバックライトをパワーダウンすることであることをＳＣＰがブロック８９７で確認した場合には、ＳＣＰはブロック８９８に進み、バックライトをオフするためにＢＬＯＮラインを非能動化する。
【０１３８】
同様の仕方で、ＳＣＰがブロック８９７からブロック９０１又はブロック９０３に進み、コマンドがビデオ制御装置をパワーアップ又はパワーダウンすることであることを確認した場合に、ＳＣＰはブロック９０２又はブロック９０６のどちらか一方に進み、ビデオ制御装置への電力を適切に制御するために、ＶＩＤＥＮ信号を能動化又は非能動化する。同様に、ＳＣＰがブロック９０７又はブロック９１１に進み、コマンドがモデムをパワーアップ又はパワーダウンすることであることを確認した場合に、ＳＣＰはブロック９１２とブロック９１３のどちらか一方に進み、モデムへの電力を適切に制御するために、ＭＤＭＥＮ信号を能動化又は非能動化する。
【０１３９】
プロセッサ３１１がブロック９０７とブロック９１１とを経由してブロック９１６に進み、コマンドが部分状態保存を行うことであることを確認した場合に、制御はブロック９１７に進み、このブロック９１７では、ＳＣＰが主プロセッサ３１１に２つのモードバイト７７８、７７９（図１６）を送り、この後で、ＲＡＭ４４０内のロケーション７７８、７７９をデフォルト値構成にセットし、このことは、情報がキーボードからＳＣＰを経由して主プロセッサに送られることが可能であることを確実なものとし、従って、例えばＫＥフラグが、キーボードがイネーブルされていることを示すようにセットされる。そうでない場合は、ＳＣＰがブロック９１８に進み、このブロック９１８で、ＳＣＰが、コマンドがそのＳＣＰの部分的復元を行うことであることを確認した場合に、ＳＣＰは主プロセッサ３１１から９２１において２つのモードバイトを受け取り、これらのモードバイトをＲＡＭ４４０のロケーション７７８、７７９の中に置く。
【０１４０】
ＳＣＰがブロック９１６とブロック９１８とを経由してブロック９２２に進み、コマンド完全状態保存（full state save）を行うことであることを確認した場合に、制御はブロック９２３に進み、このブロック９２３では、ＳＣＰは、主プロセッサに送られるべきバイトの合計数を表す値と、ＳＣＰ  ＲＡＭ４４０の内容全体と、ＳＣＰの選択された内部レジスタとを、主プロセッサに送る。この後で、ＳＣＰは（例えば、それ自体への無条件分岐を行う命令を実行することによって）９２６で連続ループに入り、そのコンピュータシステムを中断モードに置くプロセスの一部として主プロセッサ３１１がＳＣＰへの電力をオフすることを待つ。
【０１４１】
ＳＣＰがブロック９２２からブロック９２７に進み、コマンドがＳＣＰの状態の完全復元を行うことであることが確認された場合には、ＳＣＰはブロック９２８に進み、主プロセッサからの情報を受け取り、この情報をＳＣＰ  ＲＡＭとＳＣＰの選択されたレジスタとの中に置く。
【０１４２】
ＳＣＰがブロック９３１に進み、コマンドが現在パスワードを主プロセッサに送ることであるということが確認された場合には、ＳＣＰはブロック９３２に進み、ＥＥＰＲＯＭ４３９内の７６３（図１５）に格納されたパスワードを取り出して、それを主プロセッサに送る。そうでない場合には、ＳＣＰはブロック９３３に進み、コマンドが主プロセッサから新パスワードを受け取ることであることをＳＣＰがブロック９３３で確認すると、ＳＣＰはブロック９３４に進み、このブロック９３４で、ＳＣＰが新パスワードを主プロセッサから受け取り、この新パスワードをＥＥＰＲＯＭのロケーション７６３内に格納する。
【０１４３】
同様の仕方で、ＥＥＰＲＯＭ４３９内に格納されたその他の項目の各々が、主プロセッサに送られ、各々のコマンドに応答して主プロセッサによって更新されることが可能である。これは、ブロック９３１〜９３４においてパスワードに関して上記で示されたものと同様の仕方で処理され、従って、これらの各々のコマンドが全て示されているわけではなく、その代わりに、これらのコマンドの存在を示すために破線が９３７に示されている。コマンドが、これらのいずれでもない場合には、９４１において、コマンドがバックライトタイマ用のプリセット値をＳＣＰが受け取る命令であるかどうかを確かめるために、ＳＣＰがチェックを行い、そうである場合には、ＳＣＰは、このプリセット値を受け取り、ＳＣＰ  ＲＡＭ４４０内の７７１に格納する。同様に、コマンドが中断タイマのプリセットをＳＣＰが受け取る命令であることが９４３で確認される場合には、ＳＣＰは９４６において中断タイマプリセットを受け取り、それをＲＡＭ４４０内の７７２に格納する。
【０１４４】
本実施例の理解には関連しない、従って詳細に例示及び説明しない他のコマンドがあるが、これらのコマンドの存在を図示するために９４８に破線が示されている。各コマンドの実行の完了時には、制御がブロック９５１に進み、このブロック９５１は制御を呼出しルーチンに戻す。
【０１４５】
本発明の別の実施例が、図１４を参照して適切に説明される。ブロック７２６では、ハードディスク駆動装置が所定の速度に達する必要があるので、ハードディスク駆動装置の再起動が完了するのに数秒を要する。別の実施例では、ハードディスク駆動装置に電力を割り当てることと、ハードディスクアクセスが許可されていないことを示すフラグをセットすることと、２〜３秒後に割込みを生じさせるタイマをスタートさせることとを除いて、ハードディスク駆動装置の再起動がブロック７２６から取り除かれる。タイマ割込み時には、ディスク駆動装置が所定の速度に達すると、ディスク起動手順が完了し、ハードディスク駆動装置アクセスを禁止するフラグがクリアされる。このアプローチでは、ハードディスク駆動装置アクセス全てがＰＭＩハンドラによってトラップされなければならず、ハードディスク駆動装置アクセスが実行許可される前にアクセスフラグがチェックされなければならない。これは、アプリケーションプログラムの実行を再開する前にハードディスク駆動装置が所定の速度に達するのを待つことなしに、ハードディスク駆動装置が所定の速度に達するのに要する時間の間、主プロセッサ３１１がアプリケーションプログラムを実行することを可能にする。その最終結果は、中断モードからの再開時に直ちにハードディスク駆動装置アクセスを必要とはしない任意のアプリケーションの場合に、従来に比べて非常に迅速に中断モードから再開することである。
【０１４６】
図１のハードディスク駆動装置３２３を更に詳細に説明すると、このハードディスク駆動装置は、出力ラインＬＥＤと出力ラインＩＲＱ１４を制御する通常のマイクロプロセッサ（図示されていない）を含み、この出力ラインＩＲＱ１４は、上記マイクロプロセッサによって実行されるプログラムを含む駆動装置３２３内のＲＯＭ（図示されていない）と、駆動装置３２３内のＲＡＭ（図示されていない）とに結合され、主プロセッサ３１１と連絡するためにバス３３７〜３３９にインタフェースされ、ディスク駆動装置３２３内に配置された通常の物理的駆動装置（図示されていない）にインタフェースされる。この物理的駆動装置は、１つ以上の回転磁気プラッタと、プラッタ表面に対して各々が使用可能な１つ以上の可動読取り書込みヘッドと、プラッタに対して各ヘッドを相対移動させるための機構と、各ヘッドのための電気サポート回路とのような、通常の構成要素を含む。ハードディスク駆動装置をそのコンピュータシステムの他の部分に結合させる信号の全ては、ハードディスク駆動装置用の工業規格インタフェースの一部であり、このハードディスク駆動装置は通常のケーブルとコネクタを使用する。実際には、ハードディスク駆動装置３２３は、そのＲＯＭ内に格納され且つマイクロプロセッサによって実行されるプログラムが下記に詳細に説明する幾つかの変更を含むことを除いて、通常のハードディスク駆動装置である。
【０１４７】
ハードディスク駆動装置のマイクロプロセッサは、要求に応じて主プロセッサ３１１に送ることが可能な特定の状態情報を保持し、この状態情報は、ハードディスク駆動装置がコマンドを実行する時にセットされるＤＲＱ状態ビットと、プロセッサ３１１とハードディスク駆動装置３２３との間のデータ転送を容易化するハンドシェーキング情報を与えるために、所定のコマンドが実行されるにつれてセットとリセットが繰り返されることが可能なＢＳＹビットとを含む。ＤＲＱビットは、ハードディスク駆動装置が使用中であるかどうかを図８のブロック６０１と図１２のブロック６７１とでテストされるビットである。本発明は、ハードディスク駆動装置のＲＯＭ内に格納されたプログラムに対する変更を含むが、これを除けば、ハードディスク駆動装置３２３は全ての点で構造的に従来のものと同じである。
【０１４８】
ハードディスク駆動装置の動作の理解を容易にするために、図１２、１４に関連して上記で説明された幾つかのフローチャートブロックに関して、幾つかの追加の詳細な説明を行うことが適切であろう。
【０１４９】
具体的には、図１２では、ブロック６７６がハードディスク駆動装置の内部状態を得て保存することが、既に説明されている。これを行うために、プロセッサ３１１は、そのコンピュータシステムが中断状態に入ろうとしていることをハードディスク駆動装置３２３に通知するためにハードディスク駆動装置にＳＵＳＰＥＮＤコマンドを送り、それに続いて、ハードディスク駆動装置３２３がその内部状態を５１２バイトのデータブロックの形で主プロセッサ３１１に送ることを生じさせるために、ハードディスク駆動装置３２３にＲＥＱＵＥＳＴコマンドを送り、この後で、ハードディスク駆動装置からこの５１２バイトのデータブロックを受け取り、このデータをＰＭＲＡＭ（図３）の部分４８２内に保存する。さて、図１４のブロック７２６については、プロセッサ３１１がハードディスク駆動装置をパワーアップしてその状態を復元するということが、既に説明されている。更に詳細に言えば、ハードディスク駆動装置への電力を回復させた後に、プロセッサ３１１は、図１２のブロック６７６で保存された５１２バイトのデータブロックがハードディスク駆動装置に戻されようとしていることをそのハードディスク駆動装置に通知するＲＥＳＴＯＲＥコマンドをハードディスク駆動装置３２３に送り、この後で、５１２バイトのデータブロックをハードディスク駆動装置に送り、このハードディスク駆動装置は、そのブロックを受け取り、その装置のレジスタと他の揮発性メモリロケーションとを、中断モードへ入ることが開始された時にそれらが有していた状態と同一の状態に復元する。
【０１５０】
図２１は、ハードディスク駆動装置３２３のＲＯＭ内に格納され且つハードディスク駆動装置のマイクロプロセッサによって実行されるプログラムの一部分を示す、フローチャートである。パワーアップリセット状況は、実行が１１７６でスタートして１１７７に進むことを生じさせ、この１１７７では、１１７８に図示されるように、ディスク駆動装置のマイクロプロセッサが、プロセッサ３１１がそのマイクロプロセッサにコマンドを送ることを待機する。コマンドが受け取られると、制御は、その個々のコマンドに応じて幾つかのルーチンの１つに進む。具体的には、そのコマンドがＳＵＳＰＥＮＤコマンド又はＲＥＳＴＯＲＥコマンドである場合に、図示されているように制御が１１７９と１１８１の各々に進み、一方、通常の他のコマンドは、１１８２、１１８３、１１８４に示される各々の経路に沿って制御が進むことをもたらす。本発明の目的のためには、これらの他のコマンドの１つ、例えば、１１８３におけるブロック１１８６への移行に相当するコマンドを、簡単に説明することで十分である。これは、例えば、ハードディスク駆動装置３２３がプロセッサ３１１からデータのブロックを受け取って、このデータを物理駆動装置セクションのハードディスク上に格納することを、そのハードディスク駆動装置に命令するコマンドであってもよい。１１８６では、上記マイクロプロセッサが、ＬＥＤをオンするためにＬＥＤラインをセットし、このＬＥＤが、ハードディスク駆動装置が動作中であることの視覚的表示を与える。この後で、上記マイクロプロセッサがＤＲＱビットをセットし、その結果として、プロセッサ３１１が状態情報を要求する場合に、そのＤＲＱビットがハードディスク駆動装置が動作中であることを表示する。この後で、１１８７に破線で示されているように、ハードディスク駆動装置マイクロプロセッサは、そのコマンドを実行するために必要な特定のステップを行う。
【０１５１】
例えば、データブロックをプロセッサ３１１から物理駆動装置セクション内のハードディスクに転送する場合には、ハードディスク駆動装置マイクロプロセッサが、そのマイクロプロセッサが各バイトを受け取る準備ができている時点の表示を与えるように使用中ビット（busy bit）ＢＳＹをトグル（toggle）することが可能であり、プロセッサ３１１がこのＢＳＹビットをモニタし、ＢＳＹビットがクリアされる毎に追加のビットを供給する。ハードディスク駆動装置マイクロプロセッサは、最初に、これらの受信バイトをそのマイクロプロセッサのＲＡＭの中に格納する。例えばハードディスクの１つのセクタ内のバイト数に等しい予め決められた数のバイトが転送され終わった後に、ハードディスク駆動装置マイクロプロセッサがこれらのバイトをそのＲＡＭから取り出し、これらのバイトをその物理駆動装置分内のハードディスク上に格納する間に、プロセッサ３１１が他の処理に戻ることが可能である。この後で、ハードディスク駆動装置マイクロプロセッサが、プロセッサ３１１に割り込むためにＩＲＱ１４信号を送り、格納されるべきデータブロックの別の部分をプロセッサ３１１が送り出すことが可能である。これは、破線１１８７によって図２１に全て図示されている。
【０１５２】
このコマンドの実行の最後では、ハードディスク駆動装置マイクロプロセッサが、ブロック１１８８で、そのマイクロプロセッサが最後にＢＳＹビットをセットするポイント、例えば、格納されるべき最後のバイトをプロセッサ３１１から受け取るポイントに到達する。この後で、ハードディスク駆動装置マイクロプロセッサが、この情報を物理駆動装置分内のハードディスク上に格納し、それに関連した何らかの最終ハウスキーピングを行い、このプロセス中の特定のポイントで、そのマイクロプロセッサがＤＲＱビットをクリアし、ブロック１１９１において、ＬＥＤをオフするためにＬＥＤラインを非能動化する。この後で、１１９２において、ハードディスク駆動装置マイクロプロセッサがＢＳＹビットをクリアする。次の理由から、コマンド完了時に、ＢＳＹビットがクリアされる前にＬＥＤがオフされるということが、本発明の必要条件である。
【０１５３】
上記したように、コンピュータシステムが中断モードに入ろうとしている時に、プロセッサ３１１は（図８の６０１と図１２の６７１とにおいて）ＤＲＱビットをチェックする。例えば図２１の１１８７の場合のように、ハードディスク駆動装置マイクロプロセッサがコマンドの途上にある場合には、ＤＲＱビットがセットされ、従って、プロセッサ３１１が、ＬＥＤラインがイネーブルされることをもたらし、この後で、ハードディスク駆動装置３２３が該駆動装置が行っていることを完了させるのを待つために、アプリケーションプログラムに制御を戻す。アプリケーションプログラムがハードディスク駆動装置に新たなコマンドの開始を命令できないということが重要である。ＢＳＹビットがセットされている限り、プロセッサ３１１が実行中であるアプリケーションプログラムは、ハードディスク駆動装置３２３に新たなコマンドを送ろうとはしない。更に、これも同様に上記で説明されたように、ハードディスク駆動装置マイクロプロセッサが、そのＬＥＤラインを使用してそのＬＥＤをオフする時に、同じ信号がゲート４３８とゲート４３３を通って流れ、図４のルーチンにプロセッサ３１１の制御を戻す別のＰＭＩ割込みを生じさせ、この時点では、アプリケーションプログラムはプロセッサ３１１の制御を受けず、従って、ハードディスク駆動装置に新たなコマンドを開始するよう命じることが不可能である。従って、図２１のブロック１１９１とブロック１１９２において、コマンドの終了時にセットされたＢＳＹビットの状態をＬＥＤがオフされるまで保つということは、ＬＥＤの非能動化が発生し、この非能動化がプロセッサ３１１の制御をアプリケーションプログラムからＰＭＩ処理ルーチンに移行させる割込みを生じさせるまで、アプリケーションプログラムが新たなコマンドを開始することをＢＳＹビットが防止することを確実なものにし、この後で、上記割込みは中断動作を続けることを可能にする。
【０１５４】
このポイントで、ＰＭＩ処理ルーチンが図１２のブロック６７６に進み、このブロック６７６では、上記のように、プロセッサ３１１がハードディスク駆動装置にＳＵＳＰＥＮＤコマンドを送る。図２１では、これが、ハードディスク駆動装置マイクロプロセッサが１１７９でブロック１１７７からブロック１１９３に進むことをもたらし、ブロック１１９３では、このマイクロプロセッサがその現在状態の全てを収集し、これらを含む５１２バイトのデータブロックを、マイクロプロセッサのＲＡＭ内で形成（formulate）する。この状態は、使用可能な５１２バイトの一部分を占めるだけでもよく、残りのバイトは実際は「不要情報（garbage）」であってよい。この後で、ブロック１１９４において、ハードディスク駆動装置マイクロプロセッサが、１１９６に図示されているように、プロセッサ３１１からの要求コマンドを待つ。結果的に、プロセッサ３１１はＲＥＱＵＥＳＴコマンドを送る。ＲＥＱＵＥＳＴコマンドに応答して、ハードディスク駆動装置マイクロプロセッサが図２１のブロック１１９４からブロック１１９７に進み、このブロック１１９７では、ハードディスク駆動装置マイクロプロセッサが、そのマイクロプロセッサのＲＡＭ内で形成した５１２バイトのデータブロックを、プロセッサ３１１に伝送する。この後で、ブロック１１９８で、ハードディスク駆動装置マイクロプロセッサが停止し、既に説明した仕方でプロセッサ３１１がハードディスク駆動装置３２３への電力を遮断することを待つ。
【０１５５】
最終的に、プロセッサ３１１は中断モードから出ると、上記したように、ハードディスク駆動装置３２３の電源を再び投入する。図２１では、これは、ハードディスク駆動装置マイクロプロセッサを図２１のブロック１１７６に移行させるパワーアップリセット事象を生じさせ、これに続いて、ハードディスク駆動装置マイクロプロセッサは、通常は何らかの初期化を行った後に、ブロック１１７７に進み、このブロック１１７７では、プロセッサ３１１からのコマンドを１１７８で待つ。これと同時に、プロセッサ３１１は、ハードディスク駆動装置３２３にＲＥＳＴＯＲＥコマンドを送る。これは、ハードディスク駆動装置マイクロプロセッサが１１８１でブロック１１７７からブロック１２０１に進むことを生じさせ、このブロック１２０１では、ハードディスク駆動装置マイクロプロセッサは、プロセッサ３１１が伝送しつつある５１２バイトブロックを受け取る。当然のことながら、この５１２バイトブロックは、ハードディスク駆動装置マイクロプロセッサがブロック１１９７でプロセッサ３１１に送った５１２バイトブロックそのものであり、従って、ハードディスク駆動装置マイクロプロセッサは、ブロック１２０２において、ハードディスク駆動装置の電源がオフにされる前にその駆動装置に存在した状態の全てを完全に復元するために、このブロック内のデータを使用することが可能である。
【０１５６】
図２２は、図２１のプログラムの別の実施例を示すフローチャートである。図２１と図２２とにおける同等の要素は、同一の参照符号で示されている。相違点だけが次に詳細に説明されている。
【０１５７】
具体的には、ＳＵＳＰＥＮＤコマンドに応答して、ハードディスク駆動装置マイクロプロセッサは図２２の１１７９でブロック１１７７からブロック１２１１に進む。ブロック１２１１では、このマイクロプロセッサは、その状態の全てを収集する。この後で、ブロック１２１２において、ハードディスク駆動装置マイクロプロセッサが、１２１３に図示されるように、プロセッサ３１１からのＲＥＱＵＥＳＴコマンドを待つ。ＲＥＱＵＥＳＴコマンドが受け取られると、ハードディスク駆動装置マイクロプロセッサはブロック１２１４に進み、このブロック１２１４では、このマイクロプロセッサは、その物理的駆動装置セクション内のハードディスクの予約部分上に、その収集された状態を格納する。この後で、ブロック１２１６で、ハードディスク駆動装置マイクロプロセッサが５１２バイトをプロセッサ３１１に送る。これらの５１２バイトは未定義の「不要情報」であってもよく、（プロセッサ３１１が５１２バイトを受け取って格納することを待ち受けているために）形式上伝送されるにすぎない。この後で、そのマイクロプロセッサは１２１７で停止し、その電源がオフされることを待つ。その電源がオフされた後に、ハードディスク駆動装置マイクロプロセッサはプロセッサ３１１からＲＥＳＴＯＲＥコマンドを受け取り、１１８１でブロック１１７７からブロック１２１８に進み、ブロック１２１８では、このマイクロプロセッサは、ブロック１２１４でそのマイクロプロセッサがハードディスク上に格納した状態情報を取り出し、更にブロック１２１９において、この格納されたデータから、ハードディスク駆動装置３２３が電源をオフされる前に有していた状態の全てを復元する。この後で、ハードディスク駆動装置マイクロプロセッサは、ブロック１２２１において、プロセッサ３１１が送った５１２バイトを受け一取るが、このマイクロプロセッサは、このデータを必要としていないので、このデータを単に捨てる。
【０１５８】
図２３（図２３ａ、２３ｂ）は、本発明の更に別の実施例を示す、図２１と同様のフローチャートである。図２１の要素と同等である図２３の要素は同一の参照符号で示されている。相違点だけが次に詳細に説明される。
【０１５９】
具体的には、図２１の実施例では、ハードディスク駆動装置が、特定の仕方で、具体的には、現在のコマンドが完了するや否やＬＥＤラインを直ちに非能動化することによって、そのＬＥＤラインを制御するということが必要条件である。このアプローチを行うことが困難であるディスク駆動装置もあるが、一方、こうした駆動装置が別のコマンドを実行する過程にある間に、こうした駆動装置にコマンドを送ることが可能である。従って、図１２では、ハードディスク駆動装置が稼働中であることがブロック６７１で確認されるかどうかに無関係に、ＳＵＳＰＥＮＤコマンドが６７２又は６７６でハードディスク駆動装置に直ちに送られる。
【０１６０】
図２３では、ＳＵＳＰＥＮＤコマンドの受信が、制御が１２４３でブロック１２４４に進むことをもたらし、このブロック１２４４では、ハードディスク駆動装置が、その駆動装置がＲＥＱＵＥＳＴコマンド以外のコマンドを無視するモードに入る。ハードディスク駆動装置は、ＲＥＱＵＥＳＴコマンドを待つ間に、既に進行中の活動を完了する。この後で、ハードディスク駆動装置は、その動作が特定のポイントで完了したことを示すために、そのＬＥＤラインを非能動化し、この後で、プロセッサがＲＥＱＵＥＳＴコマンドを送る。このＲＥＱＵＥＳＴコマンドに応答して、ハードディスク駆動装置は１１９３で５１２バイトブロックを形成し、この後で、ブロック１２４５で全コマンドの受信を再開し、更には、ブロック１１９７において、その５１２バイトブロックをプロセッサ３１１に伝送する。
【０１６１】
図１〜図２０に示される実施例では、主記憶装置３２６内に格納された情報を保持するために、この主記憶装置へ中断中に電力が供給される。変形例では、ハードディスク３２３の一部分が予約され、主記憶装置の内容全体は、全デバイスの状態がこの主記憶装置に保存され終わった後に、ハードディスクのその予約部分に書き込まれ、この後で、ハードディスクと主記憶装置の両方がパワーダウンされ、更に、プロセッサ３１１が中断状態に入る。再開時には、そのコンピュータシステムを復元するために、逆の作用を伴ってステップが逆の順序に行われる。これは、上記の実施例で採用されたアプローチよりも緩慢であるが、より少ない電力しか使用せず、従って、１回のバッテリ充電によって、コンピュータシステムがより長時間に亙って中断状態を維持することを可能にする。ディスク上に格納されている主記憶装置からのデータに対して従来の圧縮技術を使用することによって、ディスク上で必要とされるスペースの量を減少することが可能であるが、中断モードへの出入りに要する時間は、データの圧縮と伸長のために必要な追加時間の結果、増大する。図２４（図２４ａ、２４ｂ、２４ｃ、２４ｄ）は、図１のシステム３１０の変形例であるシステム２０１０のブロック図である。このコンピュータシステム２０１０は、主プロセッサ２０１１と、電源制御回路２０１２と、信号処理回路２０１３と、手動操作式電源制御スイッチ２０１６と、システム制御プロセッサ（ＳＣＰ）２０１７と、内部キーボード２０１８と、ビデオ制御装置２０１９と、白黒液晶ディスプレイ（ＬＣＤ）２０１２と、モデム２０２２と、ハードディスク駆動装置２０２３と、ダイナミックＲＡＭ（ＤＲＡＭ）チップを用いて実現された主記憶装置２０２４と、フロッピー（登録商標）ディスク駆動装置２０２６と、読出し専用記憶素子（ＲＯＭ）２０２７と、フラッシュＲＡＭ２０２８とを含む。主プロセッサ２０１１はＩｎｔｅｌ３８６ＳＬを用いて実現される。図１の構成要素に機能的に一致する図２４の構成要素は、ここで再び詳細に説明されることはない。
【０１６２】
プロセッサ２０１１は、幾つかの条件に応答してＰＭＩ割込みを発生し、その中の３つが図２４に示されている。第１は、手動操作スイッチ２０１６の手動起動に応答したライン２０３７上での信号の発生であり、第２は、外部発生源からのライン２０３８上のＥＸＴＰＭＩ信号であり、第３は、プロセッサ２０１１内で実行中のソフトウェアによって内部的に発生させられる割込みであり、この割込みは図に２０３９で示される。
【０１６３】
プロセッサ２０１１は複数の通常の動作モードを有し、電源管理割込み（ＰＭＩ）発生器２０３６を含み、これらの通常動作モードの１つは、プロセッサ２０１１内で実行中のプログラムがプロセッサ２０１１の全動作機能に対するアクセスを有する「非保護」モードであり、一方、他のモードは、プロセッサ２０１１内で実行中のプログラムがプロセッサ２０１１の動作機能に対して各々に異なった度合いのアクセス可能性を有する「保護」モードである。ＰＭＩ割込みの発生はプロセッサ２０１１を自動的に非保護動作モードにし、一方、復元命令が、そのＰＭＩ割込み発生時にそのプロセッサ２０１１が入っていた動作モードにそのプロセッサを復元する。従って、いずれか１つの保護モードで実行しているアプリケーションプログラムが割り込まれることが可能であり、プロセッサ２０１１は、この保護モードに含まれる制限を全く受けることなく、非保護モードで様々な機能を実行することが可能であり、更に、そのアプリケーションプログラムは、そのプログラムが割り込まれたポイントから、再び有効である保護モードを伴って再開されることが可能である。
【０１６４】
再開制御回路２０４１は幾つかの条件に応答し、これらの条件の中の２つが図２４に示されている。第１の条件は、信号処理回路２０１３からのライン２９４２上の出力信号であり、この信号処理回路２０１３は後で詳細に説明される。他方は、モデム２０２２からのライン２０４３上のモデム呼出し表示器信号ＭＤＭＲＩである。そのコンピュータシステムが中断モードにあり、ライン２０４２、２０４３のどちらか一方の上で信号が生じる時に、再開制御回路２０４１が、主プロセッサ２０１１を内部的にリセットし且つ同様に再開フラグ２０４４もセットする再開リセットを生じさせる。そのリセットが再開事象の結果であって、電力が最初にそのコンピュータシステムに供給される時に生じるタイプの標準的システムリセットではないという表示をソフトウェアに与えるために、再開フラグ２０４４はセットされた状態のままである。このリセットは、より詳細に後述されるように、主プロセッサがフラッシュＲＡＭ２０２８内の特別なソフトウェアルーチンの実行を開始することをもたらす。
【０１６５】
システム制御プロセッサ２０１７について説明すると、好ましい実施例におけるＳＣＰは、Ｉｎｔｅｌ８７Ｃ５１ＧＢマイクロプロセッサに基づいているが、商業的に入手可能な他のマイクロプロセッサも、このＳＣＰ用に使用することが可能である。
【０１６６】
レジスタ２０７７がバス２０４７に結合されてライン２０７８上に出力を生じさせ、この出力は、信号処理回路２０１３の入力に結合されるが、これは後で詳細に説明される。
【０１６７】
信号処理回路２０１３は、蓋スイッチ２０６８からのＬＩＤＳＷ出力に接続されたR／Cドライバ２０６８と、信号ＬＩＤＳＷに接続された入力を有するインバータ２０８７を含む。このインバータの出力２０８８は、２入力排他的論理和ゲート（two-input exclusive-OR gate）２０８９の一方の入力に接続され、抵抗器２０９０を経由して更に別のインバータ２０９１の入力に接続される。インバータ２０９１の出力は、抵抗器２０９２を経由して、コンデンサ２０９３によって接地に結合されたゲート２０８９の他方の入力に結合される。ゲート２０８９の出力は単安定マルチバイブレータ又は「ワンショット（one-shot）」２０９６のトリガ入力に接続され、このマルチバイブレータの時間期間がＲ／Ｃネットワーク２０９７によって制御される。蓋スイッチ２０６８が開くか又は閉じると、その出力信号ＬＩＤＳＷの状態の変化がインバータ２０８７を経由してライン２０８８上でゲート２０８９の一方の入力に与えられ、ゲート２０８９の出力が変化することをもたらし、僅かな期間の後に、抵抗器２０９０とインバータ２０９１と抵抗器２０９２とを経由してゲート２０８９の他方の入力に与えられ、ゲート２０８９の出力がその当初の状態に戻ることをもたらす。従って、蓋スイッチ２０６８が開くか又は閉じる毎に、排他的論理和ゲート２０８９が、抵抗器２０９０とインバータ２０９１と抵抗器２０９２とコンデンサ２０９３とを含む回路分岐を経由した伝播遅延に長さが等しい、パルスを生じさせる。このパルスはワンショット２０９６をトリガし、従って、このパルスは、ＯＲゲート２０９８の一方の入力に与えられる出力を生じさせ、ＯＲゲート２０９８の他方の入力は手動操作スイッチ２０１６からの出力２０３７に結合される。ＯＲゲート２０９８の出力はライン２０４２であり、このライン２０４２は主プロセッサ２０１１の再開制御部分２０４１に接続される。
【０１６８】
信号処理回路２０１３は更に、レジスタ２０７７からのライン２０７８に結合されたクロック入力を有するＤタイプのフリップフロップ２１０１を含む。このフリップフロップの反転出力はＤ入力に接続され、従って、そのフリップフロップは、ライン２０７８上の信号が論理低（logic low）から論理高（logic high）に変化する毎に状態を変更し、即ち「トグル（toggle）」する。フリップフロップ２１０１の出力がワンショット２０９６のリセット入力に接続される。従って、レジスタ２０７７を適切に制御することによって、主プロセッサ２０１１がフリップフロップ２１０１をセット又はリセットすることが可能であり、その結果として、主プロセッサ２０１１は、ワンショット２０９６をイネーブル又はディスエイブルにし、こうして、ゲート２０８９からのパルスに応答してワンショット２０９６が出力を生じさせることを許可又は防止する。
【０１６９】
図２５は、ＳＣＰ２０１７によって実行されるオペレーションプログラムからの主ループの一部分のフローチャートである。本発明の理解にとって適切なループの一部分だけが図示され、詳細に説明される。具体的には、この部分はブロック２１１１で始まり、このブロック２１１１では、蓋スイッチ２０６８の状態を確認するために、従ってその蓋が開いているかどうかを確認するために、ＳＣＰがＬＩＤＳＷ信号（図２４）をチェックする。蓋が開いている場合には、ブロック２１１２において、バックライトが現在はオンでなければならないと要求されているかどうかを確認するために、ＳＣＰが内部フラグをチェックし、そうである場合には、ブロック２１１３でバックライトをオンにし、その主ループを続ける。一方、バックライトがオンでなければならないと要求されてはいないことがブロック２１１２で確認される場合には、ブロック２１１３がスキップされ、主ループが継続する。
【０１７０】
蓋が閉じていることがブロック２１１１で確認された場合には、制御がブロック２１２１に進み、このブロック２１２１では、その蓋が閉じている時に何が起こることになっているかを確認するためにチェックが行われる。具体的には、蓋を閉じることが（１）そのコンピュータシステムを中断モードにすることか、（２）コンピュータシステムの動作を停止させることなしにバックライトをオフすることか、又は、（３）可聴警告音を発生させて、コンピュータシステム動作を停止させずにバックライトをオフすることであることを指定するために、ユーザがシステムセットアップ情報を構成することが許可される。蓋が閉じられている時にそのコンピュータシステムが中断モードに入ることをユーザが望んでいるということが、ブロック２１２１で確認される場合には、制御がブロック２１２２に進み、このブロック２１２２では、ＳＣＰがＰＭＩバイト内の中断要求ビットをセットする。ＰＭＩバイトが、ＳＣＰがＰＭＩ割込みを発生させた理由を主プロセッサに知らせるために、要求に基づいて主プロセッサに送られるバイト（８ビット）である。この後で、ブロック２１２２において、ＳＣＰが、主プロセッサに対する外部ＰＭＩを生じさせるために出力ライン２０７４（図２４）上に信号を発生させ、この信号は後述の仕方で処理される。
【０１７１】
或いは、ブロック２１２２で外部ＰＭＩ割込みを生じさせる代わりに、ＳＣＰはブロック２１２２でフラグをセットし、このフラグは、このフラグがセットされていることを認知する時にＳＣＰプログラムの全く異なった部分がＰＭＩ割込みを実際に生じさせることをもたらす。
【０１７２】
蓋を閉じることが、コンピュータシステムが中断モードに置かれることをもたらすものではないということが、ブロック２１２１で確認される場合には、制御がブロック２１２３に進み、このブロック２１２３では、蓋が閉じられる時に可聴警告音が発生することになっているかどうかを確かめるためにチェックが行われる。そうである場合には、警告音がブロック２１２４で発生させられる。どちらの場合も、制御がブロック２１２５に進み、このブロック２１２５では、ＳＣＰがバックライトをオフし、バックライトフラグをクリアする。ブロック２１２２とブロック２１２５から、主ループの実行が継続する。
【０１７３】
図２５に示される主ルーチンからＳＣＰに割り込むことが可能な事象が、主プロセッサがＳＣＰにコマンドを送る時に生じる。主プロセッサによるＳＣＰインターフェースレジスタ２０８１の中への上記コマンドのローディングは、ＳＣＰに対する割込みを自動的に発生させる。このコマンドを処理する割込みルーチンが、図２６のフローチャートに示されている。図２６のコマンドハンドラは幾つかのコマンドを処理することが可能であるが、そのうち２つのコマンドだけが本発明に関連しており、これらのコマンドが図２６に示されている。具体的には、ブロック２１３１で実行が始まり、２１３２でＳＣＰが主プロセサからのコマンドを確認する。この後で、ＳＣＰは、そのコマンドが処理されることが可能であるように、その特定のコマンドを識別しようとする。具体的には、制御が結果的にブロック２１３３に進むことが可能であり、このブロック２１３３では、ＳＣＰが主プロセッサに対する外部ＰＭＩ割込みを発生させた理由を識別するように、そのコマンドがＳＣＰに命令しているかどうかを確かめるために、ＳＣＰがチェックを行う。これが主プロセッサによって送られたコマンドである場合には、制御がブロック２１３４に進み、このブロック２１３４では、ＳＣＰのＥＮＡＢＬＥ出力が活動状態にあると同時にハードディスク駆動装置２０２３からのＬＥＤ信号が活動状態にあるかどうかを確かめるために、ＳＣＰがチェックを行い、そうである場合には、ＳＣＰがブロック２１３６に進み、このブロック２１３６では、ＳＣＰがこの条件を識別するためにＰＭＩバイト内に１ビットをセットし、そのＥＮＡＢＬＥ出力を非能動化する。この後で、又は、その信号がその特定の状態を持たないということがブロック２１３４で確認された場合には、制御がブロック２１３７に進み、このブロック２１３７ではＳＣＰがＰＭＩバイトをレジスタ２０８１を経由して主プロセッサ２０１１に送る。この後で、制御がブロック２１３８に進み、このブロック２１３８では、ＳＣＰが図２６の割込みハンドラから出て、主プログラムが割り込まれたその主プログラム内のポイントに戻る。
【０１７４】
そのコマンドが外部ＰＭＩの原因を識別するための要求ではないことがブロック２１３３で確認された場合には、制御がブロック２１３９に進み、このブロック２１３９では、ハードディスク駆動装置ＬＥＤ信号をイネーブルにすること、言い換えれば、ＳＣＰのＥＮＡＢＬＥ信号を能動化することを、コマンドがＳＣＰに命令しているかどうかを確かめるために、ＳＣＰがチェックを行う。そうである場合には、ＳＣＰはブロック２１４０に進み、このブロック２１４０で、ＳＣＰはそのＥＮＡＢＬＥ出力を能動化し、この後でブロック２１３８に進み、このブロック２１３８で、呼出しルーチンへの戻りが行われる。
【０１７５】
図２７は、ＰＭＩ割込みが起こる時に主プロセッサ２０１１によって実行される特別の割込み処理ルーチンの関連部分のフローチャートである。具体的には、図２７の２１４６に示されるように、何らかの原因からのＰＭＩが、主記憶装置２０２４の部分２０４０内に主プロセッサ３１１のハードウェアがその状態を自動的に保存することをもたらす。この後で、主プロセッサは、（記憶装置２０２４の部分２０４０内の予め決められた場所に配置された）ＰＭＩハンドラルーチンの実行を自動的に開始する。そのＰＭＩの原因には無関係に、ＰＭＩハンドラがまず実行することは、主プロセッサ２０１１が中断状態から再開する過程にあるかどうかを確かめるためにプロセッサ２０１１内の再開フラグ２０４４（図２４）をチェックすることである。再開が進行中である場合には、制御がブロック２１４８で再開ハンドラに移行し、これは後で説明される。
【０１７６】
他のいずれかのＰＭＩの場合には、制御がブロック２１４９に進み、このブロック２１４９では主プロセッサが、ＰＭＩハンドラによる使用のための特別なスタックをセットアップし、更には、クロック速度を変化させるために使用することが可能な制御レジスタ２０３２のような構成レジスタを変更することが可能であるように、その構成レジスタをアンロック（unlock）する。この後で、主プロセッサは、ＰＭＩルーチンが可能な限り高速で実行するようにＣＰＵをその最高速度で動作させるためにレジスタ２０３２を変更する。この後で、主プロセッサは、発生可能なＰＭＩの様々な原因を取り扱うことを続ける。これらの原因のうちの１つが重要であり、ブロック２１５１、２１５２に示されている。具体的には、プロセッサ２１５１は、ＰＭＩがＳＣＰからのライン２０３８上の信号の結果として発生したかどうかを確かめるためにチェックを行い、そうである場合には、ブロック２１５２に進み、このブロック２１５２で、外部ＰＭＩハンドラルーチンが図２８に示され、呼び出される。外部ＰＭＩハンドラルーチンは後で説明する。
【０１７７】
発生可能な全てのＰＭＩ原因が処理された後に、制御がブロック２１５３に達し、このブロック２１５３では、主プロセッサが、ブロック２１４６で保存された情報に基づいて、ＰＭＩが生じた時に有効であったクロック速度をレジスタ２０３２に再格納する。この後で、主プロセッサは構成レジスタをロックし、ＰＭＩ割込みをイネーブルにし、ＰＭＩハンドラルーチンの実行中にリセットが生じることを防止する内部条件をクリアする。この後で、２１５４において、主プロセッサが、記憶装置部分２０４０内にブロック２１４６で保存された状態情報全てをＣＰＵにハードウェアが再格納することをもたらし、この後で、ＣＰＵが、割り込まれたプログラムの実行を継続する。
【０１７８】
図２８は、図２７でブロック２１５２によって呼び出された外部ＰＭＩハンドラルーチンのフローチャートである。図２８では、実行はブロック２１５６で始まり、ブロック２１５７では主プロセッサが、外部ＰＭＩ割込みの理由を識別することをＳＣＰに求めるコマンドをＳＣＰに送る。ＳＣＰはＰＭＩバイトを戻す（図２６のブロック２１３３〜２１３４とブロック２１３６〜２１３７を参照されたい）。ブロック２１５８では、主プロセッサは、蓋の閉じ動作に応答してＳＣＰが中断モードの要求を既に開始したかどうかを確かめるために、そのＰＭＩバイトをチェックする。そうである場合には、ブロック２１５９で、ハードディスク駆動装置が稼働中であるかどうかを確かめるために主プロセッサがチェックを行う。そうでない場合には、ブロック２１６０で、主プロセッサが中断ハンドラルーチンを呼び出し、このことは後で説明する。しかし、ハードディスク駆動装置が稼働中である場合には、中断モードの実施は、ハードディスク駆動装置がどのような動作を行っていようとも、ハードディスク駆動装置がその動作を終えるまで待たなければならない。従って、主プロセッサはブロック２１５９からブロック２１６１に進み、このブロック２１６１では、主プロセッサは、ＳＣＰがそのＥＮＡＢＬＥ出力を能動化することを命令するコマンドをＳＣＰに送る（図２６のブロック２１３９〜２１４０を参照されたい）。実行がブロック２１６０、２１６１からブロック２１６２に進む。或いは、外部ＰＭＩ割込みが蓋を閉じることによってもたらされたわけではなかったということがブロック２１５８で確認される場合には、実行はブロック２１５８からブロック２１６２に直接進むことが可能である。
【０１７９】
ブロック２１６２では、ハードディスク駆動装置２０２３からのＬＥＤ信号がゲート２０７２とゲート２０７３を経由してＰＭＩ割込みを生じさせたかどうかを確かめるために、主プロセッサが、ＳＣＰからのＰＭＩバイトをチェックする。そうである場合には、ブロック２１６３において、主プロセッサが中断モードに入ることが可能であるように、又は、主プロセッサが、本発明の主題には関連しない「待機」と呼ばれる別のモードに入ることが可能であるように、ハードディスク駆動装置がその動作を終えるのをその主プロセッサが待っていたかどうかを確かめるためのチェックを、主プロセッサが行う。コンピュータシステムが待機モードに入ることになっている場合には、ブロック２１６４で主プロセッサがハードディスク駆動装置をオフし、待機モードに入る。そうでない場合には、ブロック２１６６で、主プロセッサが、中断モードに入るために中断ハンドラを呼び出す。どちらの場合でも、待機モード又は中断モードが最終的に終了させられると、制御はブロック２１６７に進み、このブロック２１６７で、図２７のルーチンへの復帰が行われる。
【０１８０】
図２９は、中断ハンドラルーチンのフローチャートである。実行はブロック２１６８で始まり、主プロセッサは、ブロック２１６９で、ハードディスク駆動装置２０２３とビデオ制御装置２０１９のような様々な周辺装置の状態を保存する。更に主プロセッサは、特定の周辺装置への電源をオフにする。この後で、主プロセッサは、その主プロセッサにＳＣＰの状態を送ることをＳＣＰに命令するコマンドをＳＣＰに送り、ＳＣＰのＲＡＭ２０７９と全レジスタとの内容を受け取って格納する。この後で、主プロセッサは、非常な低速度で主記憶装置２０２４のリフレッシュを行うようにリフレッシュ制御回路２０３３をセットし、大部分のシステム構成要素のための電源であるＳＹＳＶＣＣ電源をオフするように電源制御回路２０１２に命令する。この後で、主プロセッサは、フリップフロップ２１０１をトグルするためにレジスタ２０７７を使用し、一方、フリップフロップ２１０１は、蓋の開閉に起因する蓋スイッチ２０６８からの信号が再開を引き起こすように、ワンショット２０９６をイネーブルにする。この後で、主プロセッサは、その主プロセッサ自体のクロックを停止させると共にその主プロセッサを中断モードに置く特別の命令を実行し、この中断モードでは電力消費は非常に僅かである。
【０１８１】
前述のように、図２４を参照すると、再開制御回路２０４１がライン２０４２又はライン２０４３上の信号を受け取って再開リセットを生じさせる時に、主プロセッサ２０１１が中断モードを出て、この再開リセットが再開フラグ２０４４をセットする。再開リセットを含む何らかのシステムリセットが、フラッシュＲＡＭ２０２８内の予め決められたロケーションに格納された、図３０に示される特別なリセットハンドラルーチンを主プロセッサ２０１１が実行することをもたらす。このルーチンの実行はブロック２１７１で始まり、主プロセッサは、ブロック２１７２において、通常動作中に蓋が開閉される場合に更に別のリセットが起こらないようにフリップフロップ２１０１をトグルしてワンショット２０９６をディスエイブルにするために、レジスタ２０７７を使用する。この後で、主プロセッサは、電源制御回路２０１２がＳＹＳＶＣＣ電源をオンにすることを引き起こし、更には、従来の仕方でユーザによって指定されたセットアップデータに基づいて通常動作のために主プロセッサ自体とＳＣＰとを構成する。この後で、ブロック２１７３で、主プロセッサが、再開フラグ２０４４がセットされているかどうかを確かめるために、再開フラグ２０４４をチェックする。セットされていない場合には、そのリセットは再開リセットではなくて通常のリセットであり、ブロック２１７４において、主プロセッサが常駐オペレーティングシステムを始動する。一方、再開フラグ２０４４が、再開リセットが生じたことを表示するためにセットされる場合には、主プロセッサは、ブロック２１７６で、図２７のＰＭＩハンドラルーチンに入ることを強制するために、ＰＭＩ割込みを生じさせるようにソフトウェアを使用する。図２７では、再開フラグが２１４７で再びチェックされて、それがセットされていることが確認され、従って、制御がブロック２１４８に進み、このブロック２１４８で、再開ハンドラルーチンへの分岐が行われる。
【０１８２】
再開ハンドラルーチンが図３１に示される。再開ハンドラルーチンの実行はブロック２１８１で始まり、ブロック２１８２で主プロセッサが、ＳＣＰの状態が復元されなければならないことを表示するコマンドをＳＣＰに送り、この後で、主プロセッサが、図２９のブロック２１６９で以前に格納されたＳＣＰ  ＲＡＭの内容とレジスタの内容をＳＣＰに送る。この後で、主プロセッサが、蓋スイッチ２０６８の状態をチェックして主プロセッサにそのスイッチの状態を知らせることをＳＣＰに命令する。ＳＣＰからの情報に基づいて、主プロセッサは、蓋が閉じられているかどうかをブロック２１８３で確認する。蓋が閉じられていることが確認される場合は、この後で、そのコンピュータシステムが中断モードに戻ることになっており、従って、ブロック２１８４で、そのコンピュータシステムが、中断モードにそのシステムを戻すために、図２９のブロック２１６９に示されたステップと同様のステップを行う。
【０１８３】
一方、蓋が開いている場合には、主プロセッサ２０１１はブロック２１８３からブロック２１８６に進み、特に、そのコンピュータシステムの様々な周辺装置に電力を供給することと、これらの装置の状態を復元することとによって、中断モードからの再開のプロセスを継続する。この後、ブロック２１８７で、主プロセッサは復帰を行い、実際には、そのコンピュータシステムが当初に中断された時に中断ハンドラが呼び出されたポイント、例えば、図２８のブロック２１６０又はブロック２１６６に、制御を戻す。この後で制御がそのポイントから進み、最後には図２７のブロック２１５３とブロック２１５４に戻り、これらのブロックにおいて、割り込まれたアプリケーションプログラムが、あたかも割込みがなかったかのように、そのプログラムが割り込まれたポイントから動作を再開するように、主プロセッサの状態が復元される。
【０１８４】
典型的な状況でのシステム２０２０の動作を、次に簡単に説明する。コンピュータシステムが立ち上げられて動作中であり、アプリケーションプログラムを実行していると仮定し、更に、蓋を閉じることがコンピュータシステムを中断モードに置くことであるとユーザが指定していると仮定する。このコンピュータシステムを使用中にユーザが蓋を閉じる場合には、ＳＣＰプログラム（図２５）の主ループは、蓋が現在閉じられていることをブロック２１１１で確認し、システム動作が中断されなければならないことをブロック２１２１で確認し、外部ＰＭＩ割込みが主プロセッサに対する中断モードへの移行の命令として作用するように、外部ＰＭＩ割込みを能動化する。この割込みは、アプリケーションプログラムが割り込まれることと、図２７のＰＭＩハンドラルーチンに入ることとを引き起こし、制御は図２７のブロック２１５１からブロック２１５２に進み、図２８の外部ＰＭＩハンドラルーチンが呼び出される。
【０１８５】
図２８では、蓋が閉じたが故にＰＭＩが発生したことがブロック２１５８で確認される。従って、制御がブロック２１５９に進み、このブロック２１５９では、説明のために、主プロセッサがハードディスク駆動装置が稼働中であることを確認してブロック２１６１に進み、このブロック２１６１で、ＥＮＡＢＬＥ出力を能動化することをＳＣＰに命令するコマンドをＳＣＰに送ると仮定する。ＳＣＰは図２６のブロック２１３９とブロック２１４０でこのコマンドを実行し、ＥＮＡＢＬＥ出力の能動化が、ＡＮＤゲート２０７２の出力の一方をイネーブルする効果をもたらす。これと同時に、主プロセッサはブロック２１６２、２１６７、２１５３、２１５４を経て割込みハンドラから出て、割り込まれたアプリケーションプログラムの実行を継続する。
【０１８６】
ハードディスク駆動装置２０２３は、該装置が行っている動作を終わらせると、その装置のＬＥＤ出力を能動化し、このＬＥＤ出力が、そのハードディスク駆動装置が稼働中でない（the hard drive is not busy）（ＨＤＮＢ）ことを表示する出力信号をＡＮＤゲート２０７２が発生させることをもたらし、この出力信号はＯＲゲート２０７３を通過し、ＰＭＩ発生器３６が更に別のＰＭＩ割込みを発生させることをもたらし、このＰＭＩ割込みが、図２７のルーチンへの別の進入をもたらし、更に、ブロック２１５２での図２８のルーチンへの呼出しを引き起こす。図２８では、蓋が閉じたばかりではないことがブロック２１５８で確認され、ブロック２１５９〜２１６１がスキップされ。ブロック２１６２では、ハードディスク駆動装置がもはや稼働中ではないためにＳＣＰがＰＭＩを発生したことを、主プロセッサがＰＭＩバイトから認識し、従って、（ブロック２１５９〜２１６０では入ることがなかった）中断モードに入ることが可能である。従って、主プロセッサはブロック２１６３を通ってブロック２１６６に進み、ブロック２１６６で図２９の中断ハンドラが呼び出される。
【０１８７】
図２９の中断ハンドラは、既に説明した、主プロセッサ２０１１のクロックがオフにされ且つプログラム実行が停止させられる低電力モードに主プロセッサを置くことによって、終了する。主プロセッサは、主プロセッサの動作再開を引き起こすことが意図された事象がおこるまで、この低電力モードのままである。具体的には、蓋が開かれる場合に、蓋スイッチ２０６８が、信号処理回路２０１３を介して、再開制御回路２０４１が再開リセットを生じさせることをもたらし、一方、この再開リセットが、図３０のリセットハンドラルーチンの実行を主プロセッサ２０１１がスタートすることをもたらす。主プロセッサはブロック２１７２、２１７３を経てブロック２１７６に進み、このブロック２１７６において、主プロセッサが、図２７のＰＭＩハンドラルーチンに対する再入を生じさせるために、ソフトウェアＰＭＩを発生する。再開フラグ２０４４（図２４）がセットされていることがブロック２１４７で確認され、従って、ブロック２１４８において、主プロセッサが図３１の再開ハンドラに分岐する。図３１の再開ハンドラ内では、実行がブロック２１８２、２１８３、２１８６を経由して進み、２１８７における復帰が図２８のブロック２１６６に制御を戻し、ブロック２１６６では図２７のブロック２１５２への復帰のために実行がブロック２１６７に進み、ブロック２１５２の後に、ＰＭＩハンドラルーチンからの退出がブロック２１５３、２１５４を経て行われる。こうして、割り込まれたアプリケーションプログラムの実行が、そのアプリケーションプログラムが割り込まれたポイントから継続する。
【０１８８】
上記の実施例では、そのコンピュータシステムは、蓋を開くことによって生じさせられる再開リセットに応答して中断モードから出る。蓋を開けること以外の事象も再開リセットを生じさせることが可能である。例えば、そのコンピュータシステムが中断モードにあり、且つ、モデム２０２２が着信呼出しを受ける場合に、ライン２０４３上のモデム呼出し表示器信号ＭＤＭＲＩが、再開制御回路２０４１が再開リセットを生じさせることをもたらす。この再開リセットは、図３１のブロック２１８３に達した時にコンピュータシステムが蓋が依然として閉じられていることを発見するということを除いて、上記の実施例で説明された処理と全く同一の仕方で処理される。従って、制御がブロック２１８４に進み、このブロック２１８４で主プロセッサ２０１１が、その後で蓋が開かれることによって引き起こされる別の再開リセットを待つために、中断モードに戻る。
【０１８９】
或いは、蓋を閉じること以外にも、コンピュータシステムを中断モードに置くことが可能な事象がある。例えば、蓋が開き位置のままである間でも、スイッチ２０１６の手動起動がコンピュータシステムを中断モードに置くことが可能である。この後で、そのコンピュータシステムが中断モードにある間に蓋が閉じられる場合には、蓋スイッチ２０６８からの信号が、信号処理回路２０１３がライン２０４２上にパルスを生じさせることを引き起こし、一方、このパルスは、再開制御回路２０４１が再開リセットを生じさせることをもたらす。一般的に、この再開リセットは、モデム呼出しに関して前段で説明した仕方で処理される。ブロック２１８３では、現在は蓋が閉じていることが確認され、従って、再開シーケンスが完了させられ、ブロック２１８４でコンピュータシステムが、その後での蓋の持ち上げによってもたらされる別の再開リセットを待つために、中断モードに戻る。
【０１９０】
図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）は、図１のシステム３１０の更に別の変形例であるコンピュータシステム３０１０のブロック図である。このコンピュータシステム３０１０は、主プロセッサ３０１１と、通常の数値コプロセッサ（ＮＰＸ）３０１２と、キャッシュメモリ３０１３と、電源制御回路３０１６と、システム制御プロセッサ（ＳＣＰ）３０１７と、内部キーボード３０１８と、ビデオ制御装置回路３０２１と、モノクロ液晶ディスプレイ（ＬＣＤ）ユニット３０２２と、モデム３０２３と、ハードディスク駆動装置（ＨＤＤ）３０２６と、ダイナミックＲＡＭ（ＤＲＡＭ）チップとによって実現された主記憶装置３０２７と、フロッピー（登録商標）ディスク駆動装置（ＦＤＤ）３０２８と、読出し専用記憶素子（ＲＯＭ）３０３１と、フラッシュＲＡＭ３０３２を含む。主プロセッサ３０１１はＩｎｔｅｌ３８６ＳＬマイクロプロセッサによって実現される。図１の諸構成要素に機能的に一致する図３２の諸構成要素は、ここでは再び詳細に説明しない。
【０１９１】
プロセッサ３０１１は幾つかのハードウェアタイマを含み、これらのタイマの中の２つが３０４１と３０４２に示されている。これらのタイマは図１の局所待機タイマ３５１と大域待機タイマ３５２とに相当するが、以下の説明では、上記タイマが使用される特定の機能を更に正確に反映させるために、これらのタイマが各々にオーバーライドタイマ（override timer）とアイドルタイマ（idle time）と呼ぶものとする。プリセットレジスタ３０４３又はプリセットレジスタ３０４４は各々に上記タイマの各々に関連付けられる。
【０１９２】
プロセッサ３０１１はトラップ論理回路３０４７を含み、このトラップ論理回路３０４７は３０４８でアドレス情報と制御情報とを受け取り、制御レジスタ３０４９によって制御される。レジスタ３０４９はソフトウェアによってセットされ、好ましい実施例では、通常のシステム動作中にはアクセスされない一定の範囲の入力／出力（Ｉ／Ｏ）アドレスを定義する。この範囲内のアドレスの１つがアクセスされる場合には、トラップ論理回路３０４７が、オーバーライドタイマ３０４１をリセットする信号を３０５１で発生させる。しかし、そのアドレスの範囲が、通常はアクセスされるはずのないアドレスだけを含むように内部的に選択されているので、通常のシステム動作中には、トラップ論理回路３０４７の出力３０５１は、能動化されることはあり得ず、従ってオーバーライドタイマ３０４１を再スタートさせることはあり得ない。従って、更に詳細に後で説明されるように、ソフトウェアがオーバーライドタイーマ３０４１を再スタートさせない限り、又は、ソフトウェアが、そのタイマ３０４１が満了する前にそのタイマをディスエイブルにしない限り、オーバーライドタイマ３０４１が満了するまで動作し続けることが意図されている。
【０１９３】
ダイレクトメモリアクセス（ＤＭＡ）回路３０６６がバス制御回路３０６３に関連付けられ、このダイレクトメモリアクセス（ＤＭＡ）回路３０６６は、そのバスを介した特定の伝送を制御することが可能である。回路３０６７はバス３０６４に結合され、ビデオ制御レジスタの中に情報を書き込むために又はビデオ制御装置３０２１内に配置されたビデオメモリの中に情報を書き込むために使用されている状況を検出し、この状況に応答して、回路３０６７が、セレクタ３０３６、３０３８の入力に結合されたＩＲＱラインの１つである、その回路の出力ラインＩＲＱ１１を能動化する。
【０１９４】
ＳＣＰ３０１７に関しては、実施例のＳＣＰはＩｎｔｅｌ  ８７Ｃ５１ＧＢプロセッサに基づいているが、他の商業的に入手可能なプロセッサがＳＣＰ用に使用可能である。
【０１９５】
主プロセッサとＳＣＰの中で実行中のプログラムの関連部分を説明する前に、本発明の一部であるアイドルモード（idle mode）を簡単に説明する。実施例では、図３２の３０４４におけるアイドルタイマ用のプリセットは、８秒を表す値にセットされる。システム事象セレクタ３０３６に対する入力信号を発生させるコンピュータシステムの活動がある限りは、セレクタ３０３６はＳＹＳＴＥＭＥＶＥＮＴライン上に周期的パルスを発生させ、このパルスはアイドルタイマ３０４２を周期的に再スタートさせ、アイドルタイマが満了することを防止する。システム事象セレクタ３０３６に対する有効入力信号の最も一般的な原因は、キーボード上のキーをユーザが押す時にＳＣＰ３０１７によって発生させられるＩＲＱ１と、マウスを用いてユーザが入力を発生させる時にＳＣＰによって発生させられるＩＲＱ１２と、実行中のプログラムがビデオ制御装置３０２１内のレジスタ又は記憶装置にデータを書き込む時に発生させられるＩＲＱ１１とを含む、割込みラインＩＲＱのグループである。従って、タイマ３０４２が満了する場合には、これは、コンピュータシステムの活動が全くないままに８秒という期間が経過し終わったからである。
【０１９６】
８秒の非活動状態の後に、コンピュータシステム３０１０はアイドルモードに入り、このアイドルモードでは、このコンピュータシステムは、プロセッサ３０１１を低クロック速度で動作させるといった幾つかの電源節約ファクタを伴って動作し続けている。そのコンピュータシステムがアイドルモードに入ったこと又はそのモードから出たことを示す可視的標示が無いので、このアイドルモードはユーザには認識されることはない。コンピュータシステムがアイドルモードにある間に特定の事象が生じる場合、例えば、ユーザがキーを押す場合、又は、実行中のプログラムが、ビデオディスプレイをそのプロセッサが更新する部分に達する場合に、コンピュータシステムはアイドルモードからの退出を開始する。一方、予め決められた時間期間の間、コンピュータシステムがアイドルモードのままである場合には、そのコンピュータシステムは自動的に待機モードに移行し、この待機モード自体は公知である。
【０１９７】
この待機モードでは、様々なシステム周辺装置が低電力状態に移行し、ビデオディスプレイ用のバックライトがオフされ、主プロセッサ３０１１が停止する。当然のことながら、バックライトがオフされるために、この待機状態はユーザに認識される。コンピュータシステムが待機モードにある間に打鍵のような事象が起こる場合には、ブレーク事象セレクタ（break event selector）３０３８がそのＢＲＥＡＫ  ＥＶＥＮＴ出力を能動化し、このＢＲＥＡＫ  ＥＶＥＮＴ出力は、主プロセッサ３０１１が実行を再び開始することと周辺装置をそれらの通常動作状態に復元することとをもたらす。待機モード自体は、公知であるので、ここでは更に詳細に説明しない。そのコンピュータシステムは、中断モード又は休止モードと呼ばれる更に別のモードに入ることが技術的には可能であり、この中断モード又は休止モードでは、そのコンピュータシステムのほぼ全体に対する電源が遮断される。しかし、中断モードは公知であり、本発明の理解には関連がなく、従って詳細には説明しない。
【０１９８】
図３３〜３６は、主プロセッサ３０１１によって実行されるプログラムの各部分のフローチャートである。図３３は、ＰＭＩ割込みに応答して実行されるＰＭＩハンドラルーチンの関連部分のフローチャートである。具体的には、図３３のブロック３１０１に図示されているように、主プロセッサがアプリケーションプログラムを実行している時に、何らかの原因からのＰＭＩが、主プロセッサのハードウェアがそのプロセッサの状態を主記憶装置３０２７の部分３０５７内に自動的に保存することをもたらす。この後で、主プロセッサ３０１１が、予め決められたポイントでＰＭＩハンドラルーチンの実行を自動的に開始し、このポイントは図３３の３１０２に示されている。具体的には、そのＰＭＩハンドラは、記憶装置３０２７の部分３０５７内でそのハンドラ自体が使用するための特別なスタックをセットアップすることによってスタートし、更に、クロック速度を変更するために使用される制御レジスタ３０６２を含む幾つかの内部構成レジスタが変更可能であるように、これらの内部構成レジスタをアンロックする。この後に、主プロセッサが、ＰＭＩルーチンが可能な限り高速で実行するように、ＣＰＵを最高速のクロック速度で動作させるためにレジスタ３０６２を変更する。
【０１９９】
この後で、主プロセッサ３０１１が、どんな事象がＰＭＩ割込みを起動したか確かめるために、状態レジスタ３０５８のビットをチェックする。具体的には、３１０３において、主プロセッサが、そのＰＭＩがオーバーライドタイマ３０４１の満了によって引き起こされたかどうか確かめるために、状態レジスタ３０５８のビットをチェックし、そうである場合には、主プロセッサがブロック３１０４に進み、このブロック３１０４では、この後に詳細に説明されるオーバーライドハンドラを呼び出す。そうでない場合には、制御がブロック３１０６に進み、このブロック３１０６では、そのＰＭＩがアイドルタイマ３０４２の満了によって引き起こされたかどうかを確かめるために、主プロセッサが状態レジスタをチェックし、そうである場合には、主プロセッサがブロック３１０７に進み、このブロック３１０７では、主プロセッサが、後に詳細に説明される「アイドル／待機」ハンドラを呼び出す。ＰＭＩがアイドルタイマの満了によって引き起こされなかった場合には、制御がブロック３１０６からブロック３１０８に進み、このブロック３１０８では、主プロセッサが、ＳＣＰ３０１７によってライン３０５４上に発生した外部ＰＭＩ信号によってそのＰＭＩがもたらされたかどうかを確かめる。そうである場合には、制御がブロック３１０９に進み、このブロック３１０９では、後に詳細に説明される外部ＰＭＩハンドラルーチンに対して呼出しが行われる。
【０２００】
最後に、制御が図３３のブロック３１１１に達し、このブロック３１１１では、主プロセッサ３０１１が、そのＰＭＩ割込みが起こった時点で有効であったＣＰＵクロック速度を確かめるために、図３３のブロック３１０１でメモリ３０２７の部分３０５７に保存された状態情報を調べる。主プロセッサは、このクロック速度にＣＰＵを復元するために制御レジスタ３０６２をセットする。この後で、主プロセッサは、内部構成レジスタが変更不可能であるように、これらのレジスタをロックする。この後で、主プロセッサが、その次のＰＭＩ割込みが行われるように、ＰＭＩ割込みの発生をイネーブルにし、ＰＭＩ割込み中のシステムリセットの発生を防止するリセット抑止状態をクリアする。最後に、３１１２において、主プロセッサの保存された状態が主記憶装置３０２７の部分３０５７から主プロセッサに再格納されることを引き起こす命令が実行される。その状態が再格納されると、主プロセッサは、アプリケーションプログラムが割り込まれた場所から、まるで割込みが行われなかったように、その割り込まれたアプリケーションプログラムの実行を継続する。
【０２０１】
図３４（図３４ａ、３４ｂ）は、アイドルタイマ３０４２が満了する時に図３３のブロック３１０７によって呼び出される、「アイドル／待機」ハンドラルーチンのフローチャートである。図３４のルーチンがアイドルタイマの満了に応答して呼び出される時に、実行がブロック３１１６でスタートし、ブロック３１１７に進む。ブロック３１１７では、主プロセッサがソフトウェアＣＯＵＮＴ値をチェックし、このソフトウェアＣＯＵＮＴ値はそのコンピュータシステムが最初にオンされる時につねにゼロに初期化される。従って、一定の期間のコンピュータシステムの作動の後、アイドルタイマ３０４２が最初に満了する時に、このＣＯＵＮＴはゼロであり、従って制御がブロック３１１７からブロック３１１８に進み、ブロック３１１８で、このＣＯＵＮＴが増分され、アイドルタイマが再スタートする。この後で、ブロック３１１９で、主プロセッサ３０１１が、コンピュータシステムがＡＣ電源又はＤＣ電源のどちらによって動作しているかということの表示を、ＳＣＰ３０１７から得る。ＡＣ電源で動作している場合には、そのコンピュータシステムはアイドルモードに入らず、具体的には、後続のブロック３１２１、３１２２がスキップされる。しかし、そのコンピュータシステムがＤＣ電源で動作している場合、言い換えればバッテリ電源で動作している場合には、そのコンピュータシステムが、電源を保存するためにブロック３１２１、３１２２でアイドルモードに入る。ブロック３１２１では、主プロセッサがオーバーライドタイマ３０４１をイネーブルにし、このオーバーライドタイマ３０４１は、好ましくは、１２秒の時間間隔に相当するプリセットを有し、言い換えれば、アイドルタイマの８秒プリセットより僅かに長いプリセットを有する。この後で、主プロセッサ３０１１は、そのコンピュータシステムがアイドルモードに入りつつあるということをＳＣＰ０１７に知らせる。ブロック３１２２では、図３３のブロック３１０１で記憶装置３０２７の部分３０５７内に保存されたデータから、ＣＰＵ３０１１、ＤＭＡ３０６６、ＮＰＸ３０１２用のクロック速度を抽出する。主プロセッサ３０１１は、その記憶装置の部分３０５７の異なったロケーションに、これらのクロック速度を保存する。この後で、記憶装置３０２７の部分３０５７内の保存された状態データにおいて、主プロセッサ３０１１が、ＣＰＵ３０１１、ＤＭＡ３０６６、ＮＰＸ３０１２用のクロック速度を各々の実現可能な最低速度に変更する。ＰＭＩハンドラルーチンが最高クロック速度で実行し続け、従って、保存された状態情報が図３３のブロック３１１２で主プロセッサに再格納されるまでは、言い換えれば、アプリケーションプログラムが再開されるまでは、低速クロックが実現されないということに留意すべきである。最後に、依然としてブロック３１２２において、主プロセッサ３０１１がキャッシュメモリ３０１３をディスエイブルにする。様々なコンピュータシステムの中には、キャッシュメモリのディスエイブル化が、そのキャッシュがイネーブルにされる時よりも更に多くの電力をコンピュータシステムが使用するものもあり、この場合には、キャッシュのディスエイブル化は省略することが可能である。しかし、キャッシュメモリのディスエイブル化が電力消費を低減させるシステムでは、このポイントでキャッシュメモリのディスエイブル化が実施される。
【０２０２】
好ましくは、通常のハードディスク駆動装置３０２６は、該ハードディスク駆動装置が一定の時間期間中に実際にはアクセスされなかった時に、該ハードディスク駆動装置を低電力モードに自動的に移行させる内部回路構成要素を有する。同様に、通常のフロッピー（登録商標）ディスク駆動装置３０２８が一定の期間中に実際にはアクセスされなかった時に、該フロッピー（登録商標）ディスク駆動装置は、何らかの従来のソフトウェアと連係して低電力モードに移行する。従って、図３４のブロック３１２１、３１２２において両者を低電力モードに強制的に移行させることは不必要である。しかし、様々なコンピュータシステムの中には、これら２つの駆動装置の動作モードが主プロセッサの直接的制御を受けるものもあり、この場合には、これら２つの駆動装置がブロック３１２２で低電力モードに移行させられることが可能である。
【０２０３】
或いは、通常のパラレルポートインタフェース回路構成要素（parallel port interface circuitry）に、主プロセッサによって通常動作モードと低電力モードとの間で移行することが可能な能力を与えることも可能である。ブロック３１２２では、主プロセッサが、アイドルモードに入る時に、このインタフェース回路構成要素をその低電力モードに移行させることも可能である。
【０２０４】
アイドルモードに入る時にビデオディスプレイが変更されないということに留意されたい。ユーザは通常のスクリーンディスプレイを見つづけ、従って、アイドルモードに入ったことを認識しないであろう。
【０２０５】
ブロック３１２２から制御がブロック３１２３に進み、該ブロック３１２３では、図３３の呼出しルーチンへの復帰が行われ、この後に、割り込まれたアプリケーションプログラムへの復帰が行われる。
【０２０６】
一定の期間に亙って動作停止状態が続く場合には、更に８秒後に、アイドルタイマが再び満了する。１２秒オーバーライドタイマには未だ４秒が残されているということに留意されたい。こうして、アイドルタイマの満了が、図３３のＰＭＩハンドラへの更に別の進入を引き起こし、一方、このことは、図３４のルーチンを再び呼び出す。ブロック３１１８でＣＯＵＮＴが既に増分されたが故に、ブロック３１１７でチェックされる時にはＣＯＵＮＴはゼロではなく、従って制御がブロック３１２６に進む。
【０２０７】
上記のように、そのコンピュータシステムがアイドルモードから待機モードに行くこと、又はその代わりに、アイドルモードから中断モードに行くことが可能である。ここでは、コンピュータシステムがアイドルから待機に行くように構成されていると仮定する。このコンピュータシステムは、アイドルタイマが満了する回数を計数することによって、待機モードに入る時機になったかどうかを確認する。例えば、そのコンピュータシステムが、そのコンピュータシステムがアイドルモードに入った時から２分後に待機モードに入ることになっている場合に（コンピュータシステムの介入動作がない場合に）、コンピュータシステムがアイドルカウンタの１５のタイムアウトを計数する（８秒×１５＝１２０秒＝２分）。従って、ブロック３１２６では、ＣＯＵＮＴが、８秒間によって分けられた待機期間である値と比較される。ＣＯＵＮＴがこの値に未だ達していない場合には、制御がブロック３１２７に進み、このブロック３１２７では、ＣＯＵＮＴが増分され、アイドルタイマが再スタートさせられる。３１２８では、主プロセッサが、コンピュータシステムがＡＣ電源によって動作しているかどうかを確かめるためにチェックを行う。そうである場合には、アイドルモードは有効ではなく、ブロック３１２９がスキップされる。そうでない場合には、制御がブロック３１２９に進み、このブロックが３１２９ではオーバーライドタイマが再スタートされる。この後で制御がブロック３１２３に進み、このブロック３１２３では、図３３の呼出しルーチンへの復帰が行われ、この後で、３１１２で、割り込まれたアプリケーションプログラムへの復帰が行われる。
【０２０８】
アイドルモードから待機モード又は中断モードへの自動移行があってはならないことをユーザが指定することも可能であり、この場合には、待機時間間隔が非常に長い期間に設定され、従ってブロック３１２６が、ＣＯＵＮＴがその値に達することが実際には不可能な非常に大きい値に対してＣＯＵＮＴを比較し、制御は、そのコンピュータシステムがアイドルモードから出るまで、常にブロック３１２６からブロック３１２７へ進む。
【０２０９】
しかし、ここでは、ユーザがアイドルから待機への移行をイネーブルしたと仮定する。アイドルタイマが数回に亙って満了し、且つ、ブロック３１２７〜３１２９を含む分岐を主プロセッサが数回に亙って実行した後に、アイドルタイマが再び満了し、図３４では、８秒間によって区分された待機時間間隔に相当する値にカウントが現時点で達したところであるということが３１２６で確認される。これは、そのコンピュータシステムが待機モードに入ることになっているということを意味する。従って、制御がブロック３１３１に進み、このブロック３１３１ではＣＯＵＮＴがゼロにリセットされる。この後で、ブロック３１３２で、主プロセッサが、そのコンピュータシステムがＡＣ電源によって動作しているかどうかを確認するためにチェックを行う。そうである場合には、アイドルモードは有効ではなく、アイドルモードから出るためにブロック３１３３、３１３４を実行する必要はない。一方、そのコンピュータシステムがＤＣ電源で動作していることがブロック３１３２で確認される場合には、主プロセッサはブロック３１３３でオーバーライドタイマをディスエイブルにし、そのコンピュータシステムがアイドルモードから抜け出しつつあることをＳＣＰに知らせる。この後で、主プロセッサは、その主プロセッサの状態が記憶装置３０２７の部分３０５７内に実際に保存された時に有効であったクロック速度を復元するように、主記憶装置３０２７の部分３０５９内の保存された主プロセッサの状態を変更する。再度、これらのクロック速度が直ちに効果を及ぼすことはないということに留意されたい。この代わりに、主プロセッサ３０１１は、そのプロセッサが結果的に図３３のブロック３１１２に達して、そのプロセッサの以前の状態を記憶装置３０２７の部分３０５７から復元する時点まで、最高クロック速度で動作を続け、この復元の時点において、その保存された状態におけるクロック速度が、割り込まれたアプリケーションプログラムを継続するために実際に実現される。最後に、更になおブロック３１３４において、キャッシュメモリがイネーブルにされる。主プロセッサが、ハードディスク駆動装置、フロッピー（登録商標）ディスク駆動装置、及び／又はパラレルポートの動作モードを直接に制御しなければならないコンピュータシステムでは、これらの構成要素が上記時点で通常の動作状態に復元される。
【０２１０】
フロッピー（登録商標）ディスク駆動装置が稼働中であるか、又はハードディスク駆動装置が稼働中である場合には、コンピュータシステムは待機モードに入ることが不可能である。従って、ブロック３１３６、３１３７では、これらの駆動装置各々の状態がチェックされ、どちらが稼働中の場合には、待機モードへの進入がキャンセルされ、制御がブロック３１３８に進み、このブロック３１３８でアイドルタイマが再スタートさせられる。この後で、図３３の呼出しルーチンへの復帰が３１２３で行われ、最終的にブロック３１１２において、コンピュータシステムが、割り込まれたアプリケーションプログラムの実行に戻る。
【０２１１】
一方、フロッピー（登録商標）ディスク駆動装置とハードディスク駆動装置とが稼働中ではない場合には、制御はブロック３１３６、３１３７からブロック３１３９に進み、このブロック３１３９では、そのコンピュータシステムが待機モードに入る。或いは、上記のように、そのコンピュータシステムは中断モードに入ることが可能であるが、これは本発明の目的に関しては重要ではなく、従って詳細には説明されない。待機モードへ入る準備のために行われる個々のステップは公知であり、従って、これらのステップはブロック３１３９では詳細に図示されない。主プロセッサ３０１１は、ブロック３１３９で待機モードに入る時に、その主プロセッサのクロックを止め、従って停止する。ブレーク事象セレクタ３０３８への入力の１つが能動化されて、この入力がＢＲＥＡＫ  ＥＶＥＮＴ信号を能動化するまで、主プロセッサは停止状態のままであり、ＢＲＥＡＫ  ＥＶＥＮＴ信号は３１４１において主プロセッサがそのクロックを再スタートさせることを引き起こし、この後で、待機モードに入るために行われた事象のシーケンスを逆の順序で行う。ブロック３１４１では、アイドルタイマ３１４２も再スタートさせられる。この後で、ブロック３１２３で、図２３の呼出しルーチンへの復帰が行われる。
【０２１２】
コンピュータシステムがアイドルモードに入った場合には、普通は、１２秒オーバーライドタイマ３０４１より前に８秒アイドルタイマ３０４２が満了しなければならない。しかし、例えば、着信呼出しに応答したモデム呼出し表示器信号ＭＤＭＲＩの能動化のような、ＳＹＳＴＥＭ  ＥＶＥＮＴ信号を能動化する事象が起こる場合には、ＳＹＳＴＥＭ  ＥＶＥＮＴ信号が、アイドルタイマが満了する前にそのアイドルタイマを再スタートさせ、従って、再スタートさせられたアイドルタイマより前に、１２秒オーバーライドタイマ３０４１が最終的に満了し、ＰＭＩ割込みを生じさせる。前述のように、これは図３３のブロック３１０３において検出され、図３５に示されるルーチンに対する呼出しにも結果する。図３５のルーチンは、一般には、オーバーライドタイマの満了以外の機能も処理するが、オーバーライドタイマを処理するこのルーチンの一部分だけが、本発明に関連しているにすぎず、従って、この部分だけを詳細に図示し説明する。
【０２１３】
図３５における実行はブロック３１４６で始まり、ブロック３１４７で、主プロセッサは、ＰＭＩの原因がオーバーライドタイマの満了であったどうかを確かめるためにチェックを行う。そうでない場合には、ブロック３１４８、３１４９でアイドルモードから出ることがスキップされ、主プロセッサは、３１５０において、ＰＭＩの他の原因を探すことを続ける。一方、オーバーライドタイマが満了したことがブロック３１４７で確認される場合には、このことは、システム事象が生じてアイドルタイマを再スタートさせたことと、アイドルモードから出なければならないことを意味する。従って、ブロック３１４８では、ＣＯＵＮＴがゼロにセットされ、オーバーライドタイマがディスエイブルにされ、ＳＣＰがアイドルモードを出ることを指示される。この後で、ブロック３１４９で、図３４においてブロック３１２２で保存されたクロック速度が、記憶装置３０２７の部分３０５７内の保存された状態情報に復元され、キャッシュがイネーブルにされ、アイドルタイマ３０４２が再スタートさせられる。この後で、実行が３１５０で継続する。
【０２１４】
システム事象が生じてアイドルタイマをリセットする時には、オーバーライドタイマが満了してコンピュータシステムをアイドルモードの外に出す前までに、数秒あることは明らかである。ユーザがキーボード上のキーを押す場合には、コンピュータシステムが直ちにアイドルモードから出ることが好ましい。従って、キーが押されたことをＳＣＰ３０１７が検出すると、ＳＣＰは、押されたキーを表す制御コードのプロセッサ３０１１への転送を調整するために、割込みラインＩＲＱ１を能動化するばかりでなく、これに加えて、主プロセッサ３０１１内にＰＭＩ割込みを生じさせるために外部ＰＭＩライン３０５４を能動化する。図３３は、ＰＭＩがＳＣＰによって生じさせられたという事実がブロック３１０８で検出され、ブロック３１０９では、主プロセッサが外部ＰＭＩハンドラルーチンを呼び出し、このルーチンが図３６（図３６ａ、３６ｂ）に示される。
【０２１５】
図３６のルーチンの実行がブロック３１５１で始まり、ブロック３１５２では、主プロセッサ３０１１が、外部ＰＭＩの理由を識別するようにＳＣＰ３０１７に求める。これに応答して、ＳＣＰ３０１７は、ＰＭＩの様々な理由を表示するためにセットされることが可能な複数のビットを有するＰＭＩバイトを戻す。ブロック３１５３では、プロセッサ３０１１は、外部もしくは内部キーボードのどちらか一方のキーを押すことの結果として、又は、マウス３０７４からの入力の結果として、アイドルモードを出るようにＳＣＰが主プロセッサに命令しているかどうかを確認するために、ＰＭＩバイトをチェックする。そうでない場合には、ブロック３１５４、３１５６がスキップされる。しかし、アイドルモードから出なければならないことをＳＣＰが表示した場合には、ブロック３１５４、３１５６が、アイドルモードから出るために実行される。ブロック３１５４、３１５６は、図３５のブロック３１４８、３１４９と同様である。ブロック３１５７では、ＳＣＰ３０１７がＤＣ電源からＡＣ電源への切り替えを検出したばかりであるかどうかを確かめるために、プロセッサ３０１１がＰＭＩバイトをチェックする。ＡＣモードでは電力消費がさほど重大な問題ではないので、ＡＣモードが有効である場合には、アイドルモードから出ることが可能である。従って、ブロック３１５８では、主プロセッサが、コンピュータシステムが現在のところアイドルモードにあるかどうかを確かめるためにチェックを行う。そうである場合には、アイドルモードから出るために、ブロック３１５９、３１６１が実行され、これらのブロックはブロック３１５４、３１５６と同一である。そうでない場合には、ブロック３１５９、３１３６１がスキップされる。
【０２１６】
最後に、制御がブロック３１６２に進み、このブロック３１６２では、図３３の呼出しルーチンへの復帰が行われる。
図３７〜４０は、システム制御プロセッサ（ＳＣＰ）３０１７によって実行されるプログラムの該当部分のフローチャートである。図３７はＳＣＰプログラムの主ループの一部分を示す。ブロック３１６６では、ＳＣＰは、ユーザがキーを押すことに応答して内部キーボード３０１８からの入力を受け取る。この後で、ブロック３１６７で、内部アイドルフラグがセットされているかどうかを確かめるためにＳＣＰがチェックを行う。このアイドルフラグはソフトウェアフラグであり、その主プロセッサがアイドルモードに入りつつあることをＳＣＰに主プロセッサが知らせる時にＳＣＰによってセットされ、その主プロセッサがアイドルモードから出つつあることをＳＣＰに主プロセッサが知らせる時に、ＳＣＰによってクリアされる。そのコンピュータシステムがアイドルモードにあることを表示するようにアイドルフラグがセットされている場合には、ユーザがキーボード上のキーを押したという事実は、そのコンピュータシステムがアイドルモードから直ちに出ることを必要としているということを意味する。
【０２１７】
従って、ブロック３１６８では、ＳＣＰが、主プロセッサにアイドルモードから出ることを命令するビットをセットするために、そのＰＭＩバイトを更新し、この後で、ライン３０５４上に外部ＰＭＩを発生させる。
【０２１８】
図３８は、そのコンピュータシステムに接続されたマウス又は外部キーボードからの入力を処理するルーチンの、図３７と同じ一部分を示す。具体的には、マウス又は外部キーボードからの入力がブロック３１７１で受け取られ、アイドルフラグがセットされていることがブロック３１７２で確認される場合には、ブロック３１７３で、アイドルモードから出るように主プロセッサで命令するビットをセットするためにＰＭＩバイトが更新され、この後でＰＭＩが発生する。
【０２１９】
図３９は、ＳＣＰ内のクロック割込みルーチンの一部分を示す。クロック割込みは、予め定義された時間間隔で周期的に起こる。ブロック３１７７では、ＳＣＰ３０１７は、電源制御回路３０１６がＡＣ電源からＤＣ電源に又はその逆に切り替わったばかりであるかどうかを確認するために、電源制御回路３０１６からのＡＣ／ＤＣライン３０７１をチェックする。そうである場合には、ブロック３１７８で、個々の変更を識別するためにＳＣＰがＰＭＩバイトを更新する。
【０２２０】
図４０は、主プロセッサからのコマンドをＳＣＰが受け取る時にＳＣＰによって実行されるルーチンを表す。好ましくは数多くのコマンドを含むが、本発明に関連する３つのコマンドだけが示される。具体的には、ブロック３１８１でＳＣＰが主プロセッサからのコマンドを受け取り、この後で、何をＳＣＰが行うように命令されているのか確認するために、このコマンドを調べる。
【０２２１】
主プロセッサがアイドルモードに入りつつあることを主プロセッサがＳＣＰ３０１７に知らせていることがブロック３１８２で確認される場合には、ブロック３１８３でＳＣＰがそのアイドルフラグをセットし、それが通常よりも低いクロック速度で動作を続ける低電力モードに入る。一方、主プロセッサがアイドルモードから出つつあることを主プロセッサがＳＣＰ３０１７に知らせていることがブロック３１８４で確認される場合には、ブロック３１８６でＳＣＰがそのアイドルフラグをクリアし、この後で、低電力モードから通常動作モードに戻る。或いは、この代わりに、外部ＰＭＩをＳＣＰが発生させた理由を識別することをＳＣＰ３０１７に主プロセッサ３０１１が命令していることがブロック３１８７で確認される場合には、ブロック３１８８において、ＳＣＰがＰＭＩバイトを主プロセッサに送り、従って、主プロセッサは、ＰＭＩバイトを調べて、ＳＣＰがＰＭＩを発生させた理由を確認することが可能である。ブロック３１８３、３１８６、３１８８の各々から、制御がブロック３１８９に進み、このブロック３１８９で復帰が行われる。
【０２２２】
次に、図３２のコンピュータシステムの動作を簡略的に説明する。この説明のために、コンピュータシステムがＤＣ電源で動作していると仮定する。ユーザが内部又は外部キーボードのいずれかを実際にタイピングしているか又はマウスを使用している時に、及び／又は、実行中のプログラムがビデオディスプレイを周期的に更新している時に、割込みＩＲＱ１、ＩＲＱ１１及び／又はＩＲＱ１２が周期的に発生させられ、システム事象セレクタ３０３６が、ＳＹＳＴＥＭ  ＥＶＥＮＴライン上に一連のパルスを出力することがもたらされる。オーバーライドタイマがディスエイブルにされるが、アイドルタイマ３０４２はイネーブルにされ、ＳＹＳＴＥＭ  ＥＶＥＮＴライン上に各々のパルスによって再スタートされ、従って、アイドルタイマは満了しない。
【０２２３】
コンピュータシステムの動作が停止する場合には、ブロック３１１８〜３１１９とブロック３１２１〜３１２２とでアイドルモードに入る。このことは、オーバーライドタイマ３０４１をイネーブルにすることと、主プロセッサ３０１１をその最低クロック速度で移行させることを含む。この後で制御が、割り込まれたアプリケーションプログラムに戻る。更に別の８秒間に亙ってコンピュータシステムの動作がない場合には、アイドルタイマが再び満了して別のＰＭＩを発生させ、このＰＭＩは図３４のブロック３１２７〜３１２９の実行をもたらし、これらのブロックでは両方のタイマが再スタートし、アイドルタイマの満了のカウント数が増分される。結局は、コンピュータシステムの非動作が継続する場合に、アイドルタイマの満了のカウント数が、待機モードへそのコンピュータシステムが自動的に入ることになっている時間間隔に一致する値に達する。従って、図３４のブロック３１３１〜３１３４で、そのコンピュータシステムがアイドルモードから出て、この後で、フロッピー（登録商標）ディスクとハードディスクとが稼働中でないならば、ブロック３１３９で待機モードに入る。この待機は、主プロセッサ３０１１が停止するように、主プロセサ３０１１のクロックを停止させることを含む。ユーザがキーボード又はマウスを使用して入力を発生させるまで、プロセッサ３０１１は待機モードのままであり、これらの事象は、ブレークセレクタ３０３８がＢＲＥＡＫ  ＥＶＥＮＴ信号を生じさせることをもたらし、このＢＲＥＡＫ  ＥＶＥＮＴ信号は、自動的に主プロセッサ３０１１のクロックを再スタートさせ、ブロック３１４１で主プロセッサが待機モードから出ることをもたらし、この後で、割り込まれたアプリケーションプログラムに実行が復帰する。
【０２２４】
説明を容易にするために、主プロセッサ３０１１がアイドルモードに入っており、ここではアイドルモードにおいてプログラム実行を行っていると仮定すると、コンピュータシステムをアイドルモードから出して再びその通常の動作モードに戻すことが可能な様々な事象がある。例えば、コンピュータシステムがアイドルモードにある間にモデムが着信呼出しを受ける場合には、関連する呼出し表示器信号ＭＤＭＲＩが、アイドルタイマ３０４２をリセットするＳＹＳＴＥＭ  ＥＶＥＮＴ信号を生じさせる。他の説明されていない事象が同一の効果を有することが可能であるが、これらは本発明の理解にとって不可欠なものではなく、従って、詳細には説明しない。このような事象の各々がアイドルタイマ３０４２をリセットするので、タイマ３０４２は満了せず、ＰＭＩを発生させず、従って、オーバーライドタイマ３０４１は、やがて満了し、ＰＭＩを発生させる。図３５のブロック３１４７〜３１４９は、コンピュータシステムが、オーバーライドタイマの満了に応答して、どのようにアイドルモードを出るかを示す。システム事象が起こりアイドルタイマ３０４２を再スタートさせる時点から、オーバーライドタイマ３０４１が満了してアイドルモードから出ることを図３５に示される仕方で引き起こす前に、数秒が経過することに留意されたい。このアプローチは、コンピュータシステムにとって内部にあり且つＳＹＳＴＥＭ  ＥＶＥＮＴラインを能動化する（モデム呼出し表示器信号のような）特定の信号に関しては許容可能であるが、コンピュータシステムを再び通常動作させるためにキーを押した後又はマウスを使用した後に数秒待たなければならないことは、ユーザには許容可能なものではない。従って、ＳＣＰがキーボードからの入力又はマウスからの入力を検出する場合には、図３７と図３８に示されるように、ＳＣＰは主プロセッサにアイドルモードから直ちに出るように命令し、図３６のブロック３１５３、３１５４、３１５６で、このコンピュータシステムがアイドルモードを出る。
【０２２５】
上記のように、プロセッサ３０１１は、そのコンピュータシステムがＤＣ電源で動作中である場合にだけアイドルモードに入る。コンピュータシステムがＡＣ電源で動作している時には、電源を保存する必要性がないので、アイドルモードに入ることは必要ではない。従って、コンピュータシステムがアイドルモードにある間、ユーザがＡＣ電力をコンピュータシステムに供給する場合には、アイドルモードを直ちに出ることが好ましい。この点で、図３９を参照すると、この図に示されるように、ＳＣＰが電源に変更が生じたばかりであることを検出すると、ＳＣＰがそれを主プロセッサに知らせ、その変更がＤＣ電源からＡＣ電源への変更であることを主プロセッサが図３６のブロック３１５７で確認する場合に、及び、コンピュータシステムがブロック３１５８でアイドルモードにあることが確認される場合に、ブロック３１５９とブロック３１６１でそのコンピュータシステムがアイドルモードを出る。
【０２２６】
好ましくは、コンピュータシステムがＤＣ電源またはＡＣ電源のどちらで動作しているかに係わりなく、プリセットレジスタ３０４４は８秒の値を表す値を常にロードされる。別のアプローチは、そのコンピュータシステムがＤＣ電源で動作している時に、８秒を表す値をプリセットレジスタにロードすることと、そのコンピュータシステムがＡＣ電源で動作している時に、実際の待機時間間隔を表す値をプリセットレジスタにロードすることとである。図３６を参照すると、そのコンピュータシステムがＡＣ電源で動作を開始しつつあるので、ブロック３１６１は、アイドルタイマ３０４２を再スタートさせる直前に、関連のプリセットレジスタ３０４４を最大限の待機モード時間間隔にセットする。図３６のルートは、ＡＣ電源からＤＣ電源への切り替えをチェックする新たなブロックを更に含み、この条件の検出時に、プリセットレジスタ３０４４に８秒という値をロードし、更に、ＤＣ電源モードでの動作のためにアイドルタイマ３０４２を再スタートさせる。図３４では、追加の判断ブロックがブロック３１１６とブロック３１１７の間に追加され、コンピュータシステムが現在はＡＣ電源によって動作しているかどうかを確かめるためにチェックを行う。そうである場合には、タイマ３０４２の最初の満了が最大限の待機モード時間間隔の満了を表し、制御がブロック３１３６に直接進み、一方、そのコンピュータシステムがＤＣ電源で動作していたことが確認された場合には、制御はブロック３１１７に進む。ブロック３１３２、３１２８、３１１９は省略される。このアプローチによって、アイドルモードへの進入と、このアイドルモードからの様々な退出は、広い意味で、依然として、最初の実施例の場合と同一の仕方で、同一の条件に応答して生じる。従って、この別のアプローチは、該アプローチが本発明の一部分であるということを明らかにするためにだけ説明するものである。
【０２２７】
実際問題として、待機モードは、ディスプレイが空白になるためにユーザにとって極めて明白であり、ユーザがキーを押した時には、ディスプレイが回復してコンピュータシステムが動作を継続するまでに、短時間の遅延があるということを強調しなければならない。従って、バッテリから取り出される電力を減少させるために待機モードが著しい電力節約をもたらすが、この待機モードはユーザを苛立たせる可能性がある。本発明によるアイドルモードは、コンピュータシステムがアイドルモードに入った又はアイドルモードから出たということにユーザが全く気づかないように、コンピュータシステムの非動作状態に応答して、中程度の電力節約をもたらすことを意図している。
【０２２８】
本発明のいくつかの好ましい実施例を、例として詳細に開示し説明したが、構成要素とデータフォーマットの変更を含むこれらの実施例の変形例と変更例とが添付クレームの範囲内において可能である。
【図面の簡単な説明】
【図１ａ】図１ａは、本発明の特徴を具体化するコンピュータシステムの一部のブロック図であり、図１ｂ、１ｃ、１ｄと共になり全体のブロック図を表す。
【図１ｂ】図１ｂは、本発明の特徴を具体化するコンピュータシステムの一部のブロック図であり、図１ａ、１ｃ、１ｄと共になり全体のブロック図を表す。
【図１ｃ】図１ｃは、本発明の特徴を具体化するコンピュータシステムの一部のブロック図であり、図１ａ、１ｂ、１ｄと共になり全体のブロック図を表す。
【図１ｄ】図１ｄは、本発明の特徴を具体化するコンピュータシステムの一部のブロック図であり、図１ａ、１ｂ、１ｃと共になり全体のブロック図を表す。
【図２】図２は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のシステムの構成要素である状態機械に関する状態図である。
【図３】図３は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のシステムの構成要素である主記憶装置の編成を示す図である。
【図４ａ】図４ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図４ｂ】図４ｂは、図４ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図４ｃ】図４ｃは、図４ｂから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図５】図５は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図６】図６は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図７】図７は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図８ａ】図８ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図８ｂ】図８ｂは、図８ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図８ｃ】図８ｃは、図８ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図８ｄ】図８ｄは、図８ｂおよび図８ｃから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図９】図９は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１０】図１０は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１１ａ】図１１ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１１ｂ】図１１ｂは、図１１ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１２ａ】図１２ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１２ｂ】図１２ｂは、図１２ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１３ａ】図１３ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１３ｂ】図１３ｂは、図１３ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１４ａ】図１４ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１４ｂ】図１４ｂは、図１４ａから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１４ｃ】図１４ｃは、図１４ｂから続く、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１５】図１５は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のシステムの構成要素である補助プロセッサ内で使用される個々の記憶装置の編成を示す図である。
【図１６】図１６は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のシステムの構成要素である補助プロセッサ内で使用される個々の記憶装置の編成を示す図である。
【図１７】図１７は、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１８】図１８は、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１９ａ】図１９ａは、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１９ｂ】図１９ｂは、図１９ａから続く、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図２０ａ】図２０ａは、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図２０ｂ】図２０ｂは、図２０ａから続く、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図２０ｃ】図２０ｃは、図２０ｂから続く、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図２０ｄ】図２０ｄは、図２０ｃから続く、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図２０ｅ】図２０ｅは、図２０ｄから続く、補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図２１】図２１は、図１（図１ａ、１ｂ、１ｃ、１ｄ）のハードディスク駆動装置内のマイクロプロセッサによって実行されるプログラムの関連部分のフローチャートである。
【図２２】図２２は、図２１のフローチャートによって示されるプログラムの別の具体例のフローチャートである。
【図２３ａ】図２３ａは、図２１のプログラムの別の実施例のフローチャートの一部である。
【図２３ｂ】図２３ｂは、図２３ａから続く、図２１のプログラムの別の実施例のフローチャートである。
【図２４ａ】図２４ａは、本発明を具体化するコンピュータシステムの一部のブロック図であり、図２４ｂ、２４ｃ、２４ｄと共になり全体のブロック図を表す。
【図２４ｂ】図２４ｂは、本発明を具体化するコンピュータシステムの一部のブロック図であり、図２４ａ、２４ｃ、２４ｄと共になり全体のブロック図を表す。
【図２４ｃ】図２４ｃは、本発明を具体化するコンピュータシステムの一部のブロック図であり、図２４ａ、２４ｂ、２４ｄと共になり全体のブロック図を表す。
【図２４ｄ】図２４ｄは、本発明を具体化するコンピュータシステムの一部のブロック図であり、図２４ａ、２４ｂ、２４ｃと共になり全体のブロック図を表す。
【図２５】図２５は、図２４のシステムの補助プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図２６】図２６は、図２４のシステムの補助プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図２７】図２７は、図２４のシステムの主プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図２８】図２８は、図２４のシステムの主プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図２９】図２９は、図２４のシステムの主プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図３０】図３０は、図２４のシステムの主プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図３１】図３１は、図２４のシステムの主プロセッサによって実行される、選択されたプログラムセグメントのフローチャートである。
【図３２ａ】図３２ａは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの更に別の実施例の一部のブロック図であり、図３２ｂ、３２ｃ、３２ｄと共になり全体のブロック図を表す。
【図３２ｂ】図３２ｂは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの更に別の実施例の一部のブロック図であり、図３２ａ、３２ｃ、３２ｄと共になり全体のブロック図を表す。
【図３２ｃ】図３２ｃは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの更に別の実施例の一部のブロック図であり、図３２ａ、３２ｂ、３２ｄと共になり全体のブロック図を表す。
【図３２ｄ】図３２ｄは、図１（図１ａ、１ｂ、１ｃ、１ｄ）のコンピュータシステムの更に別の実施例の一部のブロック図であり、図３２ａ、３２ｂ、３２ｃと共になり全体のブロック図を表す。
【図３３】図３３は、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３４ａ】図３４ａは、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３４ｂ】図３４ｂは、図３４ａから続く、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３５】図３５は、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３６ａ】図３６ａは、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３６ｂ】図３６ｂは、図３６ａから続く、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である主プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３７】図３７は、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３８】図３８は、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図３９】図３９は、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図４０】図４０は、図３２（図３２ａ、３２ｂ、３２ｃ、３２ｄ）のシステムの構成要素である補助プロセッサによって実行されるプログラムの一部分を示すフローチャートである。
【図１ａ】
0003701965.tif 000002
【図１ｂ】
0003701965.tif 000003
【図１ｃ】
0003701965.tif 000004
【図１ｄ】
0003701965.tif 000005
【図２】
0003701965.tif 000006
【図３】
0003701965.tif 000007
【図４ａ】
0003701965.tif 000008
【図４ｂ】
0003701965.tif 000009
【図４ｃ】
0003701965.tif 000010
【図５】
0003701965.tif 000011
【図６】
0003701965.tif 000012
【図７】
0003701965.tif 000013
【図８ａ】
0003701965.tif 000014
【図８ｂ】
0003701965.tif 000015
【図８ｃ】
0003701965.tif 000016
【図８ｄ】
0003701965.tif 000017
【図９】
0003701965.tif 000018
【図１０】
0003701965.tif 000019
【図１１ａ】
0003701965.tif 000020
【図１１ｂ】
0003701965.tif 000021
【図１２ａ】
0003701965.tif 000022
【図１２ｂ】
0003701965.tif 000023
【図１３ａ】
0003701965.tif 000024
【図１３ｂ】
0003701965.tif 000025
【図１４ａ】
0003701965.tif 000026
【図１４ｂ】
0003701965.tif 000027
【図１４ｃ】
0003701965.tif 000028
【図１５】
0003701965.tif 000029
【図１６】
0003701965.tif 000030
【図１７】
0003701965.tif 000031
【図１８】
0003701965.tif 000032
【図１９ａ】
0003701965.tif 000033
【図１９ｂ】
0003701965.tif 000034
【図２０ａ】
0003701965.tif 000035
【図２０ｂ】
0003701965.tif 000036
【図２０ｃ】
0003701965.tif 000037
【図２０ｄ】
0003701965.tif 000038
【図２０ｅ】
0003701965.tif 000039
【図２１】
0003701965.tif 000040
【図２２】
0003701965.tif 000041
【図２３ａ】
0003701965.tif 000042
【図２３ｂ】
0003701965.tif 000043
【図２４ａ】
0003701965.tif 000044
【図２４ｂ】
0003701965.tif 000045
【図２４ｃ】
0003701965.tif 000046
【図２４ｄ】
0003701965.tif 000047
【図２５】
0003701965.tif 000048
【図２６】
0003701965.tif 000049
【図２７】
0003701965.tif 000050
【図２８】
0003701965.tif 000051
【図２９】
0003701965.tif 000052
【図３０】
0003701965.tif 000053
【図３１】
0003701965.tif 000054
【図３２ａ】
0003701965.tif 000055
【図３２ｂ】
0003701965.tif 000056
【図３２ｃ】
0003701965.tif 000057
【図３２ｄ】
0003701965.tif 000058
【図３３】
0003701965.tif 000059
【図３４ａ】
0003701965.tif 000060
【図３４ｂ】
0003701965.tif 000061
【図３５】
0003701965.tif 000062
【図３６ａ】
0003701965.tif 000063
【図３６ｂ】
0003701965.tif 000064
【図３７】
0003701965.tif 000065
【図３８】
0003701965.tif 000066
【図３９】
0003701965.tif 000067
【図４０】
0003701965.tif 000068