APM
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* APM (Advanced Power Management)のページ [#i0c88acd]
-AT互換機用の電源管理BIOSみたいなものです、たぶん。
-とりあえず、今の段階では、いかにしてAT互換機の電源をソフ...
* マシンの電源を切ろう! [#te1a2f0b]
-ややこしいことに手を染めたくはないので、リアルモードに限...
-電源を切る前にリアルモードに戻るなんて朝飯前だと思うので...
-いっぱいヒントをくれた、Aliceさんと[[ぐりぽん]]さんに感...
** 使うファンクション (すべてINT(0x15);) [#o9969a78]
-AX=0x5300:INSTALLATION CHECK (ver.1.0以降)
--APM-BIOSが存在するかどうかと、バージョンが取得できます。
--BX=0x0000で呼び出します。
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
--AXにバージョン番号が入っています。1.1なら0x0101が入って...
-AX=0x5301:CONNECT REAL-MODE INTERFACE (ver.1.0以降)
--APM-BIOSはプロテクトモードでの制御もサポートしていて、...
--BX=0x0000で呼び出します。
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
--CF=1でも、AH=2の場合は、「既にリアルモード接続されてい...
-AX=0x5307:SET POWER STATE (ver.1.0以降)
--BX=0x0001,CX=0x0003で、全デバイスに対して電源OFFにでき...
-AX=0x5308:EN/DISABLE POWER MANAGEMENT (ver.1.0以降)
--BX=0x0001,CX=0x0001で呼び出すと全デバイスのAPM機能有効...
-AX=0x530d:EN/DISABLE DEVICE POWER MANAGEMENT (ver.1.1以...
--BX=0x0001,CX=0x0001で呼び出すと全デバイスのAPM機能有効...
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
-AX=0x530e:DRIVER VERSION (ver.1.1以降)
--BX=0x0000,CXにバージョン番号で呼び出すと、指定されたバ...
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
-AX=0x530f:ENGAGE/DISENGAGE POWER MANAGEMENT (ver.1.1以降)
--BX=0x0001,CX=0x0001で呼び出すと全デバイスのAPM設定が連...
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
** 正しい(?)切り方 [#r00b7264]
-バージョン1.1以降でないと切れないそうなのでそれをチェッ...
-この方法で切れることを[[ぐりぽん]]さんが確認してください...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
if ((unsigned) AX < 0x0101) goto err_skip;
PUSH(AX); /* バージョン番号を保存 */
AX = 0x5301; BX = 0; INT(0x15);
POP(CX); /* バージョン番号をCXに復帰 */
if (CF != 0) {
if (AH != 2) goto err_skip;
}
AX = 0x530e; BX = 0; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530d; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530f; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
-エラーが出たら、どうしようもないので、とりあえず人間が電...
** 雑な切り方 (これは失敗) [#qee61687]
-これ以上簡単な切り方はないと思われる方法。でもこの方法で...
-だめでした。テストしてくれた[[ぐりぽん]]さん、ありがとう...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
AX = 0x5301; BX = 0; INT(0x15);
if (CF != 0) {
if (AH != 2) goto err_skip;
}
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
**ていねいな切り方 (これは不十分) [#v7cb3265]
-バージョンをチェックしたり、APMをイネーブルにしたりをし...
-最初はこの方法でいいと思ったのですが、バージョン1.1でな...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
PUSH(AX); /* バージョン番号を保存 */
AX = 0x5301; BX = 0; INT(0x15);
if (CF != 0) {
if (AH != 2) goto err_skip;
}
POP(CX); /* バージョン番号 */
if ((unsigned) CX >= 0x0101) {
AX = 0x530e; BX = 0; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530d; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530f; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
}
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
** 正しい切り方([[ぐりぽん]]修正版) [#d8d971ed]
-どこからか拾ったものにエラーチェックを追加しました。うち...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
if ((unsigned) AX < 0x0101) goto err_skip;
AX = 0x5301; BX = 0; INT(0x15);
AX = 0x530e; BX = 0; CX = 0x0101; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530f; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x5308; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
* おまけコーナー (TOWNSの電源制御) [#gfeb8bdf]
-まず割込み禁止にする。CLI命令よりもPICレベルで止める方が...
-I/Oポートの0x0022にバイトアクセスで0x40を書き込んで、HLT...
-簡単でいいなあ。
* こめんと欄 [#xbf41294]
-これで終わればいいものを、僕はあほなので、このAPM-BIOSは...
-APM-BIOS v1.0は電源断ができないようで。下の丁寧なやり方...
-うちの実験用ノートPCはv1.1ですが、一旦画面が消えたあと復...
-ご連絡ありがとうございます。1.1でないと切れないんですね...
-ありがとうございます。>正しい切り方(ぐりぽん修正版) -...
-SORAの電源断も「正しい切り方(ぐりぽん修正版)」のものに...
-んー、SORAの場合は電源断できてましたよ。でもスマートでは...
-安全の為、全プロセスに終了を呼びかけてから、電源断するの...
-正しい切り方(ぐりぽん修正版)を用いて、ブートしてすぐに電...
-qemuの場合はbochsと同じ方法で電源が落ちたはず -- ''sakky...
-電源を落とすプログラムを作りましたが、そのまま落ちません...
-qemuでAPMによる電源終了のプログラムを実行したところqemu...
-qemuで「正しい切り方(ぐりぽん修正版)」にあるやつを使って...
-すいません。実機でやったらハングアップしました。 -- [[名...
-成功しました。例外をコントロールしているタスクは全てスト...
-PC-9821の上位シリーズにも付いているよ。 -- ''忍'' SIZE(1...
-VirtualBox4.2.18で「正しい(?)切り方」をテスト。AX=0x530D...
-私の上記のコードをSDカードに書き込んで実機(FMV-BIBLO NF/...
-↑すいません。名前の入力を忘れたようですが、私です。 -- '...
-VirtualBox 4.2.18だと、AX = 0x5307; BX = 0x0001; CX = 0x...
-実機テストですが、調べたところAH=0x86(APMが存在しない)が...
#comment
終了行:
* APM (Advanced Power Management)のページ [#i0c88acd]
-AT互換機用の電源管理BIOSみたいなものです、たぶん。
-とりあえず、今の段階では、いかにしてAT互換機の電源をソフ...
* マシンの電源を切ろう! [#te1a2f0b]
-ややこしいことに手を染めたくはないので、リアルモードに限...
-電源を切る前にリアルモードに戻るなんて朝飯前だと思うので...
-いっぱいヒントをくれた、Aliceさんと[[ぐりぽん]]さんに感...
** 使うファンクション (すべてINT(0x15);) [#o9969a78]
-AX=0x5300:INSTALLATION CHECK (ver.1.0以降)
--APM-BIOSが存在するかどうかと、バージョンが取得できます。
--BX=0x0000で呼び出します。
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
--AXにバージョン番号が入っています。1.1なら0x0101が入って...
-AX=0x5301:CONNECT REAL-MODE INTERFACE (ver.1.0以降)
--APM-BIOSはプロテクトモードでの制御もサポートしていて、...
--BX=0x0000で呼び出します。
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
--CF=1でも、AH=2の場合は、「既にリアルモード接続されてい...
-AX=0x5307:SET POWER STATE (ver.1.0以降)
--BX=0x0001,CX=0x0003で、全デバイスに対して電源OFFにでき...
-AX=0x5308:EN/DISABLE POWER MANAGEMENT (ver.1.0以降)
--BX=0x0001,CX=0x0001で呼び出すと全デバイスのAPM機能有効...
-AX=0x530d:EN/DISABLE DEVICE POWER MANAGEMENT (ver.1.1以...
--BX=0x0001,CX=0x0001で呼び出すと全デバイスのAPM機能有効...
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
-AX=0x530e:DRIVER VERSION (ver.1.1以降)
--BX=0x0000,CXにバージョン番号で呼び出すと、指定されたバ...
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
-AX=0x530f:ENGAGE/DISENGAGE POWER MANAGEMENT (ver.1.1以降)
--BX=0x0001,CX=0x0001で呼び出すと全デバイスのAPM設定が連...
--エラーがあるとCF=1で帰ってきます。CF=0ならファンクショ...
** 正しい(?)切り方 [#r00b7264]
-バージョン1.1以降でないと切れないそうなのでそれをチェッ...
-この方法で切れることを[[ぐりぽん]]さんが確認してください...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
if ((unsigned) AX < 0x0101) goto err_skip;
PUSH(AX); /* バージョン番号を保存 */
AX = 0x5301; BX = 0; INT(0x15);
POP(CX); /* バージョン番号をCXに復帰 */
if (CF != 0) {
if (AH != 2) goto err_skip;
}
AX = 0x530e; BX = 0; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530d; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530f; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
-エラーが出たら、どうしようもないので、とりあえず人間が電...
** 雑な切り方 (これは失敗) [#qee61687]
-これ以上簡単な切り方はないと思われる方法。でもこの方法で...
-だめでした。テストしてくれた[[ぐりぽん]]さん、ありがとう...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
AX = 0x5301; BX = 0; INT(0x15);
if (CF != 0) {
if (AH != 2) goto err_skip;
}
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
**ていねいな切り方 (これは不十分) [#v7cb3265]
-バージョンをチェックしたり、APMをイネーブルにしたりをし...
-最初はこの方法でいいと思ったのですが、バージョン1.1でな...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
PUSH(AX); /* バージョン番号を保存 */
AX = 0x5301; BX = 0; INT(0x15);
if (CF != 0) {
if (AH != 2) goto err_skip;
}
POP(CX); /* バージョン番号 */
if ((unsigned) CX >= 0x0101) {
AX = 0x530e; BX = 0; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530d; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530f; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
}
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
** 正しい切り方([[ぐりぽん]]修正版) [#d8d971ed]
-どこからか拾ったものにエラーチェックを追加しました。うち...
AX = 0x5300; BX = 0; INT(0x15); if (CF != 0) goto err_sk...
if ((unsigned) AX < 0x0101) goto err_skip;
AX = 0x5301; BX = 0; INT(0x15);
AX = 0x530e; BX = 0; CX = 0x0101; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x530f; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x5308; BX = 0x0001; CX = 0x0001; INT(0x15);
if (CF != 0) goto err_skip;
AX = 0x5307; BX = 0x0001; CX = 0x0003; INT(0x15);
err_skip: for (;;) HLT();
* おまけコーナー (TOWNSの電源制御) [#gfeb8bdf]
-まず割込み禁止にする。CLI命令よりもPICレベルで止める方が...
-I/Oポートの0x0022にバイトアクセスで0x40を書き込んで、HLT...
-簡単でいいなあ。
* こめんと欄 [#xbf41294]
-これで終わればいいものを、僕はあほなので、このAPM-BIOSは...
-APM-BIOS v1.0は電源断ができないようで。下の丁寧なやり方...
-うちの実験用ノートPCはv1.1ですが、一旦画面が消えたあと復...
-ご連絡ありがとうございます。1.1でないと切れないんですね...
-ありがとうございます。>正しい切り方(ぐりぽん修正版) -...
-SORAの電源断も「正しい切り方(ぐりぽん修正版)」のものに...
-んー、SORAの場合は電源断できてましたよ。でもスマートでは...
-安全の為、全プロセスに終了を呼びかけてから、電源断するの...
-正しい切り方(ぐりぽん修正版)を用いて、ブートしてすぐに電...
-qemuの場合はbochsと同じ方法で電源が落ちたはず -- ''sakky...
-電源を落とすプログラムを作りましたが、そのまま落ちません...
-qemuでAPMによる電源終了のプログラムを実行したところqemu...
-qemuで「正しい切り方(ぐりぽん修正版)」にあるやつを使って...
-すいません。実機でやったらハングアップしました。 -- [[名...
-成功しました。例外をコントロールしているタスクは全てスト...
-PC-9821の上位シリーズにも付いているよ。 -- ''忍'' SIZE(1...
-VirtualBox4.2.18で「正しい(?)切り方」をテスト。AX=0x530D...
-私の上記のコードをSDカードに書き込んで実機(FMV-BIBLO NF/...
-↑すいません。名前の入力を忘れたようですが、私です。 -- '...
-VirtualBox 4.2.18だと、AX = 0x5307; BX = 0x0001; CX = 0x...
-実機テストですが、調べたところAH=0x86(APMが存在しない)が...
#comment
ページ名: