edimg
概要
- CUIでディスクイメージを操作するユーティリティ。
- バッチ処理に向いている。
ダウンロード
ドキュメント
"edimg0h"の説明
これはDiskExplorerのCUI版のバグフィクス+α、みたいなものを目指しているツール
です。とりあえずOSASKのディスクイメージくらいは作れるようになりました。
[コマンドライン]
prompt>edimg コマンド列 (@スクリプトファイル が混在していてもよい)
example>edimg imgin:osaimgat.bin bias:9 copy from:@:!guide!.txt to:./
example>edimg @srcipt0.txt
example>edimg imgin:osaimgat.bin @script1.txt
example>edimg binin:osask.exe exe2bin seg:2048 binout:osask.sys
スクリプトファイルはコマンド列が並んだだけのものです。コマンドライン中の指定
された場所に展開されます。edimgではスペースや改行をパラメータの区切りとして見な
すので、スペースを含むファイル名は扱えません。
[コマンドの説明]
コマンドは次のようなフォーマットになります。
コマンド名 パラメータ名:パラメータ パラメータ名:パラメータ ...
コマンド名は、optコマンドに限り省略可能です。
・optコマンド
optコマンドはパラメータを一つだけ持ちます。複数書いた場合は、optコマンドその
ものが複数個あると見なされます。このコマンドはパラメータによって与える動作が大
きく異なります。なお、パラメータが与えられなければ、optコマンドは何もしません。
imginパラメータ:
書式: [opt] imgin:ファイル名
指定されたファイルをディスクイメージとして読み込みます。パーティション情
報を持っているディスクイメージの場合、最初のパーティションへアクセスするこ
とになります。
imgoutパラメータ:
書式: [opt] imgout:ファイル名
ディスクイメージを指定されたファイルとして出力します。
vsizパラメータ:
書式: [opt] vsiz:イメージサイズ
ディスクイメージを指定された大きさに変更します。SF16に対して使います。
bininパラメータ:
書式: [opt] binin:ファイル名
指定されたファイルをバイナリイメージとして読み込みます。これに対しては、
wbinimgコマンドとwritedataコマンドとexe2binコマンドしか使えません。
binoutパラメータ:
書式: [opt] binout:ファイル名
バイナリイメージを指定されたファイルとして出力します。
_pathパラメータ:
書式: [opt] _path:ベースパス
パス指定で、先頭に"_:"という表記があれば、指定されたベースパスに置換して
解釈します。ベースパスに@:は指定できません。
biasパラメータ:
書式: [opt] bias:時差
ディスクイメージ内のファイルのタイムスタンプ補正のためのパラメータです。
日本では9を指定します。
・copyコマンド
書式: copy [nocmp:] from:ファイル名 to:ファイル名
copyコマンドは2つのパラメータを持ち、fromからtoへファイルをコピーします。from
とtoの順序を逆に書くことはできません。toのファイル名に限り、ファイル名の最後を
":"、"/"で打ち切ることが許されます。この場合、fromのファイル名が補われます。フ
ァイル名ではなくディレクトリ名を書くときは必ず最後の/を忘れないでください。
ファイル名においてドライブ名"@"を使うと、それはディスクイメージを意味します。
ディスクイメージ内のファイルをディスクイメージ内へコピーすることもできますし、
普通のファイルコピーも可能です。
オプションのnocmp:を使うと、fromで指定されたファイルが圧縮されていた場合、展
開した結果をtoへ書き込みます。圧縮されていなかった場合はそのまま書き込みます。
ワイルドカードは使えません。
・ovrcopyコマンド
書式: ovrcopy [nocmp:] from:ファイル名 to:ファイル名
オーバーライトコピーコマンドです。toのファイルが既に存在していれば、クラスタ
の位置が変わらないように注意深くコピーされます。ファイルが存在していなければ、
コピーコマンドと全く変わりません。そのほかのこともコピーコマンドと同じです。
・createコマンド
書式: create file:ファイル名 size:サイズ [begin:開始クラスタ番号]
中身が0x00で埋まったファイルを作ります。
・ovrcreateコマンド
書式: ovrcreate file:ファイル名 size:サイズ [begin:開始クラスタ番号]
基本的にcreateコマンドと同じですが、もしファイルが既に存在していて、さらに指定
サイズよりも大きいか等しければ、ファイルサイズを変更することなく、サイズ分だけ
0x00で埋め尽くすだけにします。
・setattrコマンド
書式: setattr file:ファイル名(@:~でなければいけない) attr:アトリビュート値
ディスクイメージ内のファイルの、ファイル属性値を変更します。
・deleteコマンド
書式: delete file:ファイル名
ファイルを削除します。
・wbinimgコマンド
書式: wbinimg src:バイナリファイル名 len:転送バイト数
from:読み込み開始オフセット to:書き込み開始オフセット
これはつまり、ブートセクタを書き込むためのコマンドです。fromはバイナリファイル
内のオフセットで、toはパーティションの先頭からのオフセットです。
・releaseコマンド
書式: release [mini:] [zerofill:] [efat:] [nofrag:] [minibpb:]
これは主にimgout直前に実行するコマンドです。デフォルトだと1440KB用のディスク
イメージが1440KBとして出てきますが(たとえ読み込み時に後ろが切ってあっても)、
mini:を指定すると末尾の空きセクタを出力しなくなります。またzerofill:をやると、
deleteした部分に残っていたファイルの残骸がゼロクリアされます。
edimg0dからはさらに3つのパラメータが追加されました。これらはSF16のときのみ有
効で、efat:はFATを拡張FAT形式で出力させること、nofrag:は全てのファイルが断片化
していないことを確認したあと検査済みフラグを立てること、そしてminibpb:はmini:と
同じ方法で切り詰めたあとにそれに合うようにBPB情報を更新すること、をそれぞれ意味
します。
・writedataコマンド
書式: writedata offset:書き込み開始オフセット [byte:データ,...,データ]
[word:データ,データ,...,データ] [dwrd:データ,データ,...,データ]
書き込み開始オフセットから、指定されたデータを指定されたデータ幅で書き込みま
す。wbinimgコマンドの、書き込むデータをスクリプト上で指定するもの、という感じで
す。
・listコマンド
書式: list
ディスクイメージのディレクトリ一覧を出力します。
・copyallコマンド
書式: copyall from:@: to:ディレクトリ名
ディスクイメージのファイルを全てコピーします。主にアーカイブの展開に使います
。ディレクトリ名は/で終わる必要があるので、たとえばカレントパスに展開したいとき
は、to:./と書くことになります。
・exe2binコマンド
書式: exe2bin seg:イメージがロードされるセグメント
16bit-EXEファイルをバイナリイメージにします。imgtolのsコマンドの代用です。
・/*コマンド
書式: /*
リマーク部開始コマンドです。コマンドなので、"/**"などとやると認識できずエラー
になります。リマークの入れ子も可能です。
・*/コマンド
書式: */
リマーク部終了コマンドです。コマンドなので、"**/"などとやると認識できずエラー
になります。
[例 - 1]
OSASK.SYSの大きさと位置は決まっているので、次のようにするのが普通です(AT互換機
版の場合)。最初の2行を変えると、TOWNSや98用のイメージができます。
opt imgin:fdimg0at.tek /* 1440KBブランクディスクイメージ */
wbinimg src:osaskbs1.bin len:512 from:0 to:0
create file:@:osask.sys size:108k begin:5
ovrcopy from:osask.sys to:@:
setattr file:@:osask.sys attr:0x06 /* system+hidden */
copy from:osask0.psf to:@: /* これは一番最初に */
/* 以下順不同 */
copy from:!guide!.txt to:@:
copy from:!guide2!.txt to:@:
/* 中略 */
copy from:videomod.txt to:@:
/* ここまでアプリの転送 */
release mini:
opt imgout:testimg.bin
[例 - 2]
OSASK.SYSはデフォルトでは起動時にFDを読みに行きますが、これをATAやCFにするこ
とができます。
"sys_cf0.txt"
opt binin:osask.sys
writedata offset:2 word:0x8200
というファイルを作っておいて、
prompt>edimg @sys_cf0.txt binout:osaskcf0.sys
とやれば、CF用に書き換わります。
[例 - 3]
同じことをOSASK.EXEに対してやってみます。
"exe_cf0.txt"
opt binin:osask.exe
writedata offset:0x202 word:0x8200
というファイルを作っておいて、
prompt>edimg @exe_cf0.txt binout:osaskcf0.exe
とやれば、CF用に書き換わります。
[例 - 4]
同じことをOSAIMGAT.BINに対してやってみます。
"img_cf0.txt"
opt imgin:osaimgat.bin
writedata offset:0x4802 word:0x8200
というファイルを作っておいて、
prompt>edimg @img_cf0.txt binout:osaskcf0.bin
とやれば、CF用に書き換わります。
[例 - 5]
sf16_40s.tekを使って、ディスクイメージをアーカイブ代わりにしてみます。
opt imgin:sf16_40s.tek /* SF16_40 simplest image */
opt vsiz:8m
copy from:document.txt to:@:
copy from:edimg.exe to:@:
copy from:fdimg0at.tek to:@:
copy from:fdimg0tw.tek to:@:
copy from:sf16_40s.tek to:@:
copy from:edimg.c to:@:
copy from:Makefile to:@:
copy from:make.bat to:@:
copy from:!cons_9x.bat to:@:
copy from:!cons_nt.bat to:@:
release minibpb: nofrag: efat:
opt imgout:imgarc.bin
[例 - 6]
同じくsf16_40s.tekを使って、OSASK用のアーカイブを作る例です。
opt imgin:sf16_40s.tek /* SF16_40 simplest image */
opt vsiz:8m
copy from:teditarc.txt to:@:ARCINFO0.TXT
copy nocmp: from:teditc02.bin to:@:
copy nocmp: from:teditc02.buf to:@:
copy nocmp: from:teditc02.ini to:@:
copy nocmp: from:te_alph0.bin to:@:
copy nocmp: from:te_roma0.bin to:@:
release minibpb: nofrag: efat:
opt imgout:teditc02.org
[例 - 7]
OSASK用のアーカイブをカレントディレクトリに展開してみます(上記のteditc02.org
をbim2binでteditc02.tkにしたとして。OSASKで使うときはおそらくbinにしていると思
いますが、binのまま展開すると内部のteditc02.binと名前が衝突して上書きされてしま
います)。
prompt>edimg imgin:teditc02.tk copyall from:@: to:./
[例 - 8]
くだらない使い方としては、ただのtek解凍ツールとしてbim2binの代わりをさせるこ
とも一応できます。ただしrjcが掛かっているものはrjcが付いた状態で展開されます。
OSASK ver.4.6以降ならrjcが掛かっていても問題なく実行できるので基本的に問題はあ
りません。
prompt>edimg copy nocmp: from:helloc4.bin to:helloc4.org