2009年10月11日日曜日

MBM 高速起動

 フリーのブートローダーの MBM が久々にバージョンアップしていることに気が付いた.
 このバージョンアップで,MBM をインストールするドライブが選べるようになったのは便利.今まで C: にしかインストールできなかったので,USB メモリ等からブートすると (それが C: になってしまうので) HDD にインストールできなかったのだが,その制約がなくなった.

 今回から GPL になってソースコードも付属している.なので前からやりたかった「起動待ち時間を 1秒より速くする」(標準の MBM は自動起動までの最小時間が 1秒なので) をやるため,再アセンブルしようと思った.
 でやってみたら,アセンブラは OPTASM…? そんなのもう入手できねーよ(;´д⊂)ためしに MASM32 でアセンブルしてみたけどエラーの嵐.

 というわけで,方針を変えてパッチ当てで(笑) ソースは付属してるので,パッチ当て箇所がわかりやすくてありがたい.

1460  wait_timer:     ; 起動タイマー表示(CF=set on break, clr on time out)
1461 _skip e, MainParms.MpTime, 0
1462 call set_csrhome
1463 mov bp, 10 ←**ここ**
1464 _while
1465 push di

wait_timer で cx(=メニューで設定した待ち時間) * bp * 100ms 待っているので,bp への代入を 1にすれば,メニューで設定した秒数 / 10 の時間でタイムアウトする.(どうせ最小時間しか設定しないので問題なし)

バイナリ上のパッチ当て箇所は以下のとおり(ver.0.39).黄色で示した箇所を 0x0A→0x01 に書き換える.

 これで MBM のメニューが一瞬でタイムアウトするようになったヽ(´ー`)ノ もちろんキーをあらかじめ押しておけばタイムアウトがキャンセルされるので,使い勝手的にも問題なし.

0 件のコメント:

コメントを投稿