復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第232回]
●ファンクションコール28H(空きを00で埋めるランダムライト)その4
前回からの続きです。
今回はテストプログラムVFTST205の実行結果について説明をいたします。
まずはこちらの画像から。
BドライブにVFTST205をコピーして、そこで実行した結果TEST.RAFが作成されました。
VFDUMPを実行して、TEST.RAFのFCBを確認しました。
ここまでは正しく実行されています。
BドライブはフォーマットしたあとVFTST205.COMだけをセーブしたところに、TEST.RAFを作りましたから、データ部分のブロックbヘ0003から始まっています。
この0003ブロックには、ランダムレコードのbO1A2、01A5、01A7が書かれています。
このあたりのことについては[第106回]で説明をしておりますので、ご参照願います。
4つ作成されているTEST.RAFのFCBの上から2つ目のFCBにブロックbO003が見えます。
今回テストしましたファンクションコール28Hはデータレコードを作成するだけではなくて、あるブロックにレコードを書くと、そのブロックの残りの未使用のまま残っているセクタに00を書き込みます。
ほんとうにそのように正しく実行されたかどうかを確認するために、このブロックbO003のセクタを全部表示させて確認してみました。
1つのブロックには16個のセクタがあります。
そのうちの3番目のセクタにレコードbO1A2が書き込まれ、6番目に01A5が、そして8番目に01A7が書き込まれたはずです。
最初のセクタを10進数の0としたとき、ブロックbO003の最初のセクタはbS8になります。
ブロックbO003のセクタはbS8からbU3までです。
それを順に見ていきます。
セクタbS8、49、50です。
bT0にはレコードbO1A2のデータとして、01A2が繰り返し書き込まれています。
bS8とbS9には00が書き込まれています。
セクタbT1、52、53です。
bT3にはレコードbO1A5のデータとして、01A5が繰り返し書き込まれています。
bT1とbT2には00が書き込まれています。
セクタbT4、55、56です。
bT5にはレコードbO1A7のデータとして、01A7が繰り返し書き込まれています。
bT4とbT6には00が書き込まれています。
セクタbT7、58です。
このあともセクタbU3まで、ずっと00が書き込まれていることを確認しました。
じつはブロックbO003から連続してブロックbO004、0005、0006、0007、0008、0009、000Aまでが使われたため、その間に含まれるセクタで、レコードデータが書かれなかったセクタは全て00が書き込まれています。
それを全部確認して画像をここに表示するのも無駄なことですから、最後の000Aブロックのセクタについて確認してみることにしました。
ブロックbO00AのセクタはbP60からbP75です。
セクタbP60、161、162です。
セクタbP63、164、165です。
bP65にはレコードbO3E5のデータとして、03E5が繰り返し書き込まれています。
むむ。
テストデータを作るときはその値にも注意しなければいけません。
適当な値ということでたまたま選んだ値なのですが、下位バイトがE5ですが、E5というのはフォーマットしたときに何も書かれていないということを示すために書き込まれる値です。
これじゃあテストデータが書き込まれたのか、それとも1バイトおきにデータが書かれたのかちょっと見には判断できません。
よくない見本です。
セクタbP66、167、168です。
セクタbP69、170、171です。
セクタbP72、173、174です。
セクタbP75、176です。
ブロックbO00AのセクタはbP75までですが、念のためにその次のbP76も表示させてみました。
bP76はフォーマットしたままの状態でE5が書き込まれています。
これでやっとファンクションコール28Hについては終わりです。
ワンボードマイコンでCP/Mを![第232回]
2012.10.14upload
前へ
次へ
ホームページトップへ戻る