Last updated: "2002/10/12 19:23:25 +0900"
小松平良樹プレゼンツ
MPC-102 (101 でも大丈夫だと思う) + BIOS 146JK、 あるいは MPC-103 + BIOS 209JK で、 Intel System Management BUS を経由して、次の情報を取得してみよう。
アーカイブ中の FIVASMB1.EXE は BIOS 146JK 用、 FIVASMB2.EXE は BIOS 209JK 用です。
BIOS に対応していない *.exe を動かしてしまうと、ハングアップしてしまうかも しれません。ご注意ください。
BIOS のバージョンが違うと、きっと動かない気がします。146JK, 209JK 以外の方は ごめんなさい。
BIOS の SMBUS 処理のエントリポイントをハードコーディングしてしまっているのだ。 しかもなんかよくわからないところが多々あります。
MPC-102 + BIOS 146JK + Windows98SE 上では、動いているように見えます。
実行例:
[D:\home\komatsu\fivaSmbus_20021012_01]fivasmb1 current voltage : 12407 [mV] remaining charge : 741 [mAh] remaining life : -1 [min] charge/discharge cycles : 351 [cycle] flowing current : 0 [mA] motherboard temp : 48 [C]
かなーりへたっておりますね。
"remaining life" は、バッテリ駆動時の残り動作時間 (予想) です。 AC 駆動時は -1 になります。
"flowing current" は、バッテリに流れ込んでいる電流値です。 充電時は正の値、バッテリ駆動時は負の値になります。
他の処理との排他制御なんていう高度なことは行っていません。 Windows 自体もきっと (根っこまで突き詰めると) 同じ仕組みで電池残量を 取得していると思いますが、処理がぶつかるときっとエラーになってしまいます。 実際、何回も繰り返し実行するとたまにエラーになります。 ... でも、エラーの原因は、排他制御をしていないのとは別の原因なのかも しれません。よくわかりません。
Windows2000 上で動くのかどうか興味のあるところ。 なんて思っていましたが、動かないという報告をいただきました。 ご報告くださった方、ありがとうございます。 Windows2000 上で動かないと、あんまり意味がないなあ...。
実行は自己責任にてお願いいたします。 上記のように、かなりやっつけのプログラムです。何がおきるかわかりません。
LSI-C 試食版 ver 3.30c を使ってコンパイルしました。ありがとうございます。
"interrupt list" を参考にしました。thanks!
いろいろご報告くださった、2ちゃんねるの「いつでもどこでも名無しさん」
さん、ありがとうございます。