2012.10.11
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第230回]


●ファンクションコール28H(空きを00で埋めるランダムライト)その2

前回からの続きです。
前回はファンクションコール28Hについてのテストを行ったのですが、なんだかおかしな結果になってしまいました。
どうやらバグがあるようです。
DOSプログラムをよく調べてみましたところ、バグがみつかりました。
そこでバグを修正してもう一度テストしてみたのですが…。
やっぱりおかしいのですよね。

いろいろテストをしているうちに、ファンクションコール28Hについてはテストをする前にディスクをフォーマットし直しておかなければまともなテストができないということに気が付きました。
CP/M互換DOSの上でTEST.RAFを消去しても、それは単にディレクトリのFCBの先頭にE5Hを書くだけで、セクタに書き込まれたデータは消去されずに残ってしまうからです。

余談ですけれどWindowsでも基本的な仕組みは同じで、よくファイルをゴミ箱から完全にクリアしても、データは消去されずに残っているので注意、などと書いてあるのを見ますが、そういうことなのです。
消したわけではなくて、ディレクトリのファイル名のところに「消しましたよ」というマークをつけただけですから、ツールを使えば消したはずのものも読み出すことができたりします(時間の経過とともに「消された」データはどんどん上書きされていきますから、だんだん元通りには読み出せなくなります)。

そういうことに気がつきましたから、ふだん使っていないBドライブを使ってテストをすることにしました。
下はBドライブを使ってVFTST204を実行したあと、VFDUMPでBドライブのディレクトリセクタを表示させてみたところです。



なんだか様子が変です。
ファンクションコール22Hのテストをしたときには([第216回])、TEST.RAFのFCBは4つ作成されました。
それなのに今回のテストでは2つしか作成されていません。
エクステントb烽O0と01しかありません。
どこかがおかしい!

まだどこかにバグが残っているのかと思って、互換DOSプログラムを何回も確認してみたのですが、見たところもうバグらしきものは残ってないようです。
FCBだけではなくて実際に作成されたデータセクタの中身も調べてみたのですが…。

む。
データもおかしいではないか?
ファンクションコール22Hのテストについては、データセクタの中身の確認は[第224回]でやっています(下に再掲します)。



ところが今回同じことをしてみましたら。



違っているじゃありませんか。
最初に下位、次に上位という具合に2バイトのデータを書き込むはずなのに、どういうわけか下位バイトしか書き込まれていません。
上位バイトはどうしたのさ。
むむ。
面妖な。
さてはまた物の怪がでたか?

お。お。お。
ひょっとしたら…。

聡明な読者諸賢におかれましてはすでに私のおかした愚かな過ちにお気づきのことと思います。
そうなのです。
おばかでありました。

本日は時間がなくなってしまいました。
次回にて説明をいたします。

ワンボードマイコンでCP/Mを![第230回]
2012.10.11upload

前へ
次へ
ホームページトップへ戻る