FOAU1 6 メモリカード増大法 みなさん、こんにちは。 ポケ3用に手持ちのSRAMカードをDOSでフォーマットしたら、以下のよう な容量になりました。なお 512K のカードは持っていません。どこかで安く入手 できないでしょうか。 カード容量(単位:バイト) FORMAT方法 パソコン ポケ3 ICMUTY /512 (PC-98) 標準 使用後 カード 64K 60416 61440 61952 容量 128K 125952 126976 127488 256K 257024 256000 256512 1M 1032192 1040384 1040896 2M 2080768 2081792 2082304 4M 4173824 4172800 - ICMUTY /512 を実行すると、わずかに記憶容量が増えます。しかし、このコマン ドの目的は記憶容量の増大ではなく、クラスタサイズの縮小にあります。 クラスタサイズというのは、DOSがディスクを管理するときの最小単位でして、 ポケ3の標準フォーマットでは 1024Byte となります。最小単位という事はつま り、どんな小さなファイルであってもメモリカード上では 1024Byte を消費して しまうという事です。たとえば1バイトのファイルでも 1024Byte 消費してしま うわけで、この場合、実に 1023Byte が無駄になってしまっているわけです。 1024Byte で割り切れるサイズのファイルの場合なら無駄は全く生じませんが、平 均すると、  メモリカード全体のファイル数×512(Byte) の無駄が生じている事になります。 ICMUTY /512 を実行すると、このクラスタサイズが 512Byte となります。すなわ ち、平均無駄容量は以下のようになります。  メモリカード全体のファイル数×256(Byte) たとえばメモリカードにファイルが100個あったとすると、ICMUTY を使えば平 均して25KB以上の容量を有効に活用できるようになるわけです。 さて、ディスク上では、何番クラスタがすでに使用済みであるかどうか、という 管理表が一緒に記録されています。これをFAT(ファイル・アロケーション・ テーブル)といいます。この表によっても、ディスク上の記憶領域が消費されて しまいます。どのくらい消費されるかというと、クラスタ数が4085個以下の 場合は2クラスタで3バイトですが、クラスタ数が4086個以上になると2ク ラスタで4バイトになります。ICMUTY を使ってクラスタサイズを小さくするとク ラスタ総数は増えるのですが、ICMUTY はこの部分の切替ロジックがうまく作り込 んでなくて、そのため4MBのメモリカードではクラスタサイズを小さくする事 ができません。 DOSのディスクにはもう一つ、そのディスク自身を管理するための領域があり ます。それはROOT領域といって、ルートディレクトリに記録したファイルの 情報が記録されます。サブディレクトリに記録されるファイルの分は関係ないの ですが、領域のサイズが決まっていることから、ルートディレクトリに記録でき るファイルの個数も決まっています。これもフォーマット方法によって値が異な りまして、以下のようなことになりました。 ルートディレクトリのファイル数(単位:個) FORMAT方法 パソコン ポケ3 ICMUTY /512 (PC-98) 標準 使用後 カード 64K 128 64 64 容量 128K 128 64 64 256K 128 128 128 1M 240 128 128 2M 368 256 256 4M 512 256 - ところで、メモリカードの使い方としては、たくさんのファイルを入れておくと いう事が多いと思いますが、大容量のファイルをほんの数個入れるだけ、という 使い方をすることもあるかと思います。実際、私が英語の辞書(英語と日本語が 並んでいるだけのただのテキストファイル)を入れているメモリカードがそうい う状況だったりします。そのような場合、ROOT領域はそんなにたくさんファ イルを入れられるようになっている必要はないし、場合によっては、ワザとクラ スタサイズを大きくしてFATに必要なディスク領域を削ることだってできるか もしれません。ただ、実際にどのくらい増えるかに興味があったため、ちょっと シミュレーションしてみました。 以下はあくまでもシミュレーションの結果であり、実際にその通り実現できるか どうかは試していないので不明です。 理論値 クラスタ ROOTの ポケ3標準FORMAT比 サイズ FILE数 総容量 増加量 増加率 カード 64K 512 16 64000 2560 4.2% 容量 128K 512 16 129536 2560 2.0% 256K 512 16 260096 4096 1.6% 512K 1024 16 522240 - - 1M 2048 16 1046528 6144 0.6% 2M 1024 16 2093056 11264 0.5% 4M 2048 16 4190208 17408 0.4% ま、増えることは増えますが、スズメの涙ほどですね。 特に1MBのカードなんて、クラスタサイズが増えることによる平均無駄容量の 増加を考慮すると、ファイルを4つも保存すれば ICMUTY を使ったときに負けて しまうんですから、あまり意味がありません。 さて、なんでこんな面倒な検討をはじめたかというと、上にも少し書きましたが、 英語の辞書テキストを入れている4MBのメモリカードがもう一杯で、1バイト でもいいから容量を増やしたい、という欲求があったわけなんですよ。そこで、 ICMUTY のソースリストを書き直して、4MBのカード専用の容量変更ツールを作 って、実際にカードを1枚、上表のような諸元に変更してみました。 そのカード、かれこれ一ケ月ほど使っていますが、今のところ不都合は出ていま せん。ポケ3で CHKDSK をかけても問題は出ないし、そもそも ICMUTY が頑健な ツールなんで、それを改造したものもよっぽど変なことをしない限り変なことに はならない、という事もあるでしょう。 ということで、個人的にはまぁまぁ満足する結果となりました。 一応ここで結果として報告はさせていただきますが、けっしてこれを皆さんにお 勧めしているというわけではないので、万一マネをなさろうとするときには細心 の注意を払うようにして下さい。 P.S. ICMUTY って、FOAU2 のライブラリにしかないんですね。 その他にも、FOAU2 のライブラリにしかないポケ3用のツールっていくつかある けど、そういうのが永遠に失われてしまうのはとっても残念です。 かといって、転載可となっていないものを勝手に転載するわけにも行かないし。 --- としき http://www.hinocatv.ne.jp/~toshiki/