btcf

  • OSASKをCF上にあるFDIMAGE0.BINのOSASK.SYSから直接起動するツール

FDIMAGE0.BINだけじゃいやん

  • 引数を指定して他のディスクイメージ(たとえば、T-OSASKとか3.1風とか)を起動させたりできたらおもしろいなぁ…。
  • というわけで改造しました。
  • ダウンロードはこちらからどうぞ〜。

製作ログ

研究リンク
製作記
  • imgtolの引数取得を参考にやってみましたが、撃沈。MSDOSを落とす最強アプリの出来上がり…。 --   2005-01-07 (金) 08:52:11
  • とりあえず前半4バイトだけというのをやってみた(FDIMのところ)。お、なんかいい感じ?でも起動しない…。 --   2005-01-07 (金) 11:50:29
    • 引数を取得
      void main()
      {
      	asmout("ORG 0x100");
      	asmout("[BITS 16]");
      
      	SI = 0x0081;
      	CLD();
      	LODSD();
      	skipspace();
      	ECX = [EAX];
    • 判定?部分
      	if (EAX == [ECX]) { /* FDIM */
      		if ((unsigned) (int) [DS:BX + 4] == 0x30454741) { /* AGE0 */
      			EAX = [DS:BX + 8];
      			EAX &= 0x18ffffff;
      			if (EAX == 0x004e4942) /* BIN */
      				goto find;
  • Kタンのヒントでなんとかできました!が、OSASK.SYSがないディスクイメージを指定すると落ちてしまいます。これはどうにかしないとねぇ。 --   2005-01-07 (金) 13:30:27
  • あぁ、おちてもいいのかなぁ。 --   2005-01-07 (金) 13:37:45

Comment

  • 実は超簡単なやり方があるんだけど、知りたい?・・・種明かしは嫌だ、苦労して作るのがいいんだ、という可能性もあるので、レスを待ってから書きますね。 -- K 2005-01-07 (金) 12:47:38
  • ち、、超カンタン… -- あっきぃ 2005-01-07 (金) 12:52:14
  • ちょっと予想してみよう -- あっきぃ 2005-01-07 (金) 12:55:27
    • 取得
      	SI = 0x0081;
    • 判定
      	if ((unsigned) (int) [DS:SI] == (unsigned) (int) [DS:BX + 4]) {
      		goto find;
      	}
  • これでどうだ?!(実際に実行してないのにかいてみたり) -- あっきぃ 2005-01-07 (金) 12:58:06
  • ヒント:うんとね、まず、取得がいらないのよ。DOSにそういう機能があるんだ(FCB)。あまり知られてないんだけど。 -- K 2005-01-07 (金) 13:11:18
  • ヒント:というか、つまり引数が[DS:0x5d]以降に入っているんだな。そこをFDIMAGE0の代わりに使うだけなんだけどね。 -- K 2005-01-07 (金) 13:15:07
  • なんかできたっぽいです!!。・゚・(ノ∀`)・゚・。 -- あっきぃ 2005-01-07 (金) 13:28:23
  • おめでとん。 -- K 2005-01-07 (金) 15:52:36

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-25 (木) 23:56:50