こんにちは、川合です。 edimg0fをMLリリースします。 http://k.hideyosi.com/edimg0f.lzh (20.8KB) これがOSASKアーカイブ支援機能をつけたedimgです。具体的には以下 の機能が追加されています。 ・tek0圧縮されたディスクイメージをそのまま読める → たとえばimgin:kdun00b.binとやってよい。わざわざbim2binで解 凍しておく必要はない ・copy, ovrcopyコマンドにnocmp:オプションを追加 → これを指定しておくと、圧縮されていたら自動で解凍してから、 コピーする。圧縮されていなければ普通にコピーする。 ・copyallコマンドの追加 → たとえば prompt>edimg imgin:kdun00b.bin copyall from: !Atmark! : to:./ とやるだけで、kdun00b.binの中のファイルが全てカレントディ レクトリに展開される。 以上、詳しいことについては添付のドキュメントを参照してください 。 --- さて、Jenny8以降で使えるようになったアーカイブの作り方などを詳 しく説明します。 アーカイブはかならずedimg0fに付いてくるsf16_40s.tekをベースに 生成します(参考:edimg0fのドキュメントの[例 - 6])。つまり、 opt imgin:sf16_40s.tek /* SF16_40 simplest image */ opt vsiz:8m { ARCINFO0.TXTのコピー } { アーカイブの中身のコピー } release minibpb: nofrag: efat: opt imgout:圧縮前のアーカイブ名 という手順になります。 ARCINFO0.TXTというのは、このアーカイブにどんなファイルが入って いるかや、アプリケーションからのファイル要求にどのように応じるべ きかを設定したファイルで、ディスクイメージ上ではディレクトリエン トリの先頭かつ、ファイル領域の先頭に位置することになっています。 そのうえ、なにやら一見するとテキストファイルのように見えますが、 実態はバイナリファイルで、ようするに何バイト目に何を書くかがきっ ちりと決まっています。不用意に改行位置を変えたりスペースを追加し たり削ったりしてはいけません。0x00000100とかかれている部分を 0x100にすることもできません。Linuxで編集する場合も改行コードを変 更しないように細心の注意を払ってください。 kdun00bの例で説明します。ARCINFO0.TXTの中身はこうなっています 。 format_id: "OSASKARC0000"! version: 0x00000000 ! levels: 0x00000000 ! ! dos_name: "KDUN00A .BIN"! options: 0x00000100 ! num: 0x00000000 ! ! dos_name: "KAODUN .BG "! options: 0x00000001 ! num: 0x00000000 ! ! dos_name: "KAODUN .CHR"! options: 0x00000001 ! num: 0x00000000 ! ! dos_name: "KAODUN .ETC"! options: 0x00000001 ! num: 0x00000000 ! ! 基本的に最初の128バイトがヘッダ、あとは1ファイルにつき128バイ トで情報が記述されています。format_idやversion、levelsはいじらな いでください。いじると解釈不能とみなされ、アクセスできなくなりま す。 最初に書かれるファイルは、OSASKARCにおいて「主ファイル」(主モ ジュール)と呼ばれるものです。このアーカイブを読み取ったときに、 とりあえず中身としては主ファイルの中身が渡されます。そしてアーカ イブ内のほかのファイルは、以後のアプリからの要求へのレスポンス用 と解釈されます。このようなレスポンス用ファイルは「副ファイル」( 副モジュール)と呼びます。 主ファイルは、optionsのbit8を1にしなければいけません。 さてoptionsのほかのbitについても説明します。 bit0-2の3bitはアプリからのダイレクトネームアクセス要求に対する レスポンスです。 0:dos_nameが一致したら無条件でアーカイブ内のファイルで対応 1:dos_nameが一致してかつディスク内に同名のファイルがないとき だけ、アーカイブ内のファイルで対応 7:ダイレクトネームアクセス要求には反応しない bit4-6の3bitはアプリからファイルセレクタによるアクセス要求に対 するレスポンスです。 0:num値が一致したら無条件でアーカイブ内のファイルで対応 1:numが一致してかつオーダーがないときだけ、アーカイブ内のフ ァイルで対応 7:num値フィールドは無効なので常に反応しない ここでオーダーというのは、つまりpokonでTXTファイルを選ぶとか、 JPGファイルを選ぶとかした場合のことで、シェルがビューアとしてア プリを起動した場合、引き渡すデータファイルをオーダーバッファにた めているのです。 なお上記の例のようにnum値が有効でしかも同じ値のものが複数あっ た場合、どのファイルがマッチしたと判定されるかは保証されません。 kdun00a.binはnum値をつかったオープンがないので、この場合は関係な いのですが。 [OSASK 6930]によるとJenny8はさっそくバグもちだったようで、これ からじっくりバグをつぶすことにします。 それでは。 -- 川合 秀実(KAWAI Hidemi) OSASK計画代表 / システム設計開発担当 E-mail:kawai !Atmark! osask.jp Homepage http://osask.jp/