IMGTOLの使い方

１．これはなにか？

  IMGTOLはDOS汎用ファンクションを使ってディスクイメージを作ったり、ディスクイメ
ージを書き込んだりするツールです。その他にもディスクイメージを扱う上で便利では
ないかと思われる機能や、OS開発に使えそうな機能を持っています。

  しかし何といっても最大の特徴は、OSの配布時にバンドルしても全く問題にならない
ライセンスが適用されていることと、バンドルしても邪魔にはならないそのサイズでし
ょう。2.33KBバイトです（笑）。

２．簡単な使い方の表

    read.   >imgtol r [opt] drive: filename  size  (drv -> file)
    write.  >imgtol w [opt] drive: filename [size] (file -> drv)
    exp-w.f.>imgtol f [opt] drive: filename (file -> drv)
    exp-w.  >imgtol F [opt] drive: filename (file -> drv)
    ovrcopy.>imgtol c inputfile outputfile  [size]
    expand. >imgtol e inputfile outputfile   size
    release.>imgtol R sourceimage compedimage
    exe2sys.>imgtol s inputfile outputfile base(dec)
      opt(sector-bytes) = -512(default), -1024
      size unit : kilobyte

３．ディスクイメージをディスクに書き込む方法

  PCATの場合（というか1440KB-FDの場合）
    prompt>imgtol w a: fdimage.bin

  TOWNSやNEC98の場合（というか1232KB-FDの場合）
    prompt>imgtol w -1024 a: fdimage.bin

  この場合だとファイルが尽きるまで書き込みます。ディスクが尽きてもDOSからエラー
が来ない限り、書き込み命令を送り続けます（笑）。ディスク容量よりも大きなファイ
ルを扱うときなどは、

  PCATの場合（というか1440KB-FDの場合）
    prompt>imgtol w a: fdimage.bin 1440

  TOWNSやNEC98の場合（というか1232KB-FDの場合）
    prompt>imgtol w -1024 a: fdimage.bin 1232

などとしてください。上限が設定され、それ以上はアクセスしません。なおアクセスは
高速化のために36KB(-512時)、もしくは16KB(-1024時)単位で行なっています。以前の
バージョンではこの単位でのオーバーランがありえましたが、このバージョンはオーバ
ランしません。

  「a:」とか「fdimage.bin」の部分は自分の使いたい状況に合わせて書き換えてくださ
い。HDDのドライブや他のデバイスにもできます（註1）。なお31MB以上にアクセスする
ことはできず、そのうち勝手に正常終了してしまいます。末尾のサイズ指定も32767以上
を指定しないようにしてください。

  なお、途中経過は一切表示されません。気長に待ちましょう。また「ディスクの内容
が失われます、よろしいですか？」みたいなこともいいません。そういうのを付けたけ
れば、バッチファイルを作ってそこでechoやpauseをしてください。

<註1>
  HDDやCFへ書き込もうとすると、Win95などではエラーになります。しかしこれは回避
する方法があります。例えば、ドライブE:へ書き込みたい場合、

    prompt>lock e:
    prompt>imgtol w e: cfimage.bin
    prompt>unlock e:

とすれば問題なく書き込めます。


４．ディスクを読んでディスクイメージを作る方法

  PCATの場合（というか1440KB-FDの場合）
    prompt>imgtol r a: fdimage.bin 1440

  TOWNSやNEC98の場合（というか1232KB-FDの場合）
    prompt>imgtol r -1024 a: fdimage.bin 1232 

  サイズ指定は省略できません。実ディスクよりも少ない値も指定できます。その場合
はそこまでしか読みません。

  「a:」とか「fdimage.bin」の部分は自分の使いたい状況に合わせて書き換えてくださ
い。HDDのドライブや他のデバイスにも問題なくできますが、31MB以上にはアクセスでき
ないので、それはご了承ください。31MBを超えてアクセスできるのはpcctolです。

  なお、途中経過は一切表示されません。気長に待ちましょう。

５．ディスクイメージのサイズの変更の方法

  たとえば600KBのAT互換機用ディスクイメージがあって、「これじゃあ不便じゃあ〜、
僕は1440KBのイメージがほしいんだあ！」というときは次のようにします。

    prompt>imgtol e src.bin dest.bin 1440

こうすると、600KBのsrc.binを拡張して1440KBにしたものがdest.binとして出力されま
す。同じファイルを指定することはできません。必ず入力ファイル名と出力ファイル名
は別々にしてください。誤って同じファイルを指定するとファイルが壊れます。なお、
1440KBに拡張と言っても、要するにただ「00」で埋まったセクタを要求サイズになるま
で付け足しているだけです。なにもいじっていません。

  なお、指定したファイルよりも小さいサイズを指定することもでき、その場合は、フ
ァイルの後ろがカットされた結果が出てきます。作ったディスクイメージの後半を切り
捨てたいときに使います。例によって、31MB以上のサイズは指定できませんのでよろし
く。

６．オーバーライトコピーの方法

  オーバーライトコピーというのは、原則としてコピー先のファイルサイズを変更せず
にコピーするというもので、単にサイズが変わらないというだけではなく、ファイルの
ディスク上の位置も不変です。OSのイメージなどを書き込むのに適しています。

    prompt>imgtol c src.bin dest.bin 50

とすると、src.binの最初の50KBがdest.binに書き込まれます。もしsrc.binが50KBに満
たなければその分は「00」で埋めた内容を読み込んだことにして書き込みます。書き込
みサイズがdest.binのサイズを上回った場合は、素直にdest.binのファイルサイズを拡
張して書き込みを続けます。dest.binのサイズのほうが書き込みサイズよりも大きかっ
た場合、サイズは変更されません。また書き換え範囲外の内容はそのまま保持されます
。コマンド実行に際してdest.binが存在しなければエラーになります。最後の50という
サイズ指定は省略でき、この場合はsrc.binのサイズを指定したことになります。

７．exe2sysとしての使用方法

  exe2sysは、exeファイルのヘッダを解釈して所定のアドレスへリロケートした後のメ
モリイメージを生成するものです。OSをexe形式で作っておいて、ロードイメージに変換
する場合に使います。

    prompt>imgtol s src.exe dest.bin 2048

この場合の最後の2048はリロケートセグメントアドレスです。なお注意が必要なのは、
この2048が10進数であることです。16進数指定はできません。この場合、0x0800:0x0000
にロードされたとしてリロケーションを行い、その結果を出力します。

８．SF16専用コマンド群

  imgtolは、Win95のDOSプロンプト内でSF16フォーマットを掛けたり、もしくはSF16フ
ォーマットで記述されたOSをインストールすることができます。SF16フォーマットとい
うのはFAT16を拡張したもので、ディスクイメージを作る際にインストール先の容量をあ
らかじめ決めておかなくてよいという利点を持たせたものです。

  まず、SF16でメディアをフォーマットしてみましょう。fコマンドを使い、ブランクイ
メージを書き込ませます（sf16_08.binはsf16set.lzhの中にあります）。

    prompt>imgtol f a: sf16_08.bin

  Windows95OSR2.0で実験したところ、そのままではうまく認識できず誤動作します。こ
れで書き込んだ後に、一旦ディスクを抜いてください。そしてもう一回入れると、きち
んと認識します。CFの場合も、一度正規の操作でイジェクトしてください。HDDの場合は
、unlockしたらすぐに再起動してください。・・・ああ、ええと、FD以外を指定する場
合、wコマンドと同様に、lock/unlockをやる必要があります（３．参照）。

  またfコマンドは誤操作で大切なHDDを飛ばしてしまったりしないように、2.0GB以上の
パーティションへの書き込みだと判断すると、自主的にエラーにして一切の書き込みを
しません。

  またfコマンドはFAT12かFAT16かSF16であらかじめフォーマットされていないと、その
ドライブをうまく認識できませんので、fdisk後に一応適当にフォーマットして、それか
らこのこのコマンドでSF16フォーマットしてください。

  さて、これでディスクにいろいろ書き込んで、それを再インストール可能なディスク
イメージに変換したくなったら、rコマンドとRコマンドを使います。

  まず、rコマンドでディスクイメージを取り出します（31MBまでしか取り出せないので
それより後ろにはファイルが存在しないようにしてください）。これはドライブの容量
全体である必要はなく、ファイルが入っているところまででいいです。そして、

    prompt>imgtol R rawimage.bin release.bin

などとやると、後ろの不要な部分が切り捨てられて、fコマンドでインストール可能なデ
ィスクイメージに変換されます。一度この変換をすれば、fコマンドで好きな容量へイン
ストールできます。wコマンドのように、読み出したドライブと同容量でなければならな
い、ということはありません。

９．謝辞

  I.Tak.さんが僕にやる気を起こすきっかけをくれました。どうもありがとうございま
す。

１０．ライセンス

  毎度のKL-01です。
