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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80Z�Vと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

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