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

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

[第227回]


●ランダムファイルのファイルサイズ

前回ファンクションコール23H(ファイルサイズの取得)を使ったテストプログラムVFTST22を実行してランダムファイルTEST.RAFのファイルサイズを取得したところ、03E6Hと表示されました。
しかしTEST.RAFのエクステントの16バイト目の値(そのエクステントのデータエリアのサイズ)の合計は11EHでした。

どこかおかしい。
むむ。
シーケンシャルファイルはこの方法(エクステントの値を合計する)でよかったのですけれど、そういえば、ランダムファイルはなんだか違っていたような…。

過去記事を確認してみて、やっと思い出しました。
[第109回]で説明をしておりました。
ですので詳しくは同記事をご参照ください。

つまり、CP/Mではランダムファイルのサイズという場合、実際にレコードが書かれた実サイズではなくて、レコードbOから、そこに書かれている最大のレコードbワで隙間なくデータが存在したときのファイルサイズになるのです。

今回のTEST.RAFの場合、最大のレコードbヘ[第223回]で追加した03E5Hです。
レコードbヘ0000から始まりますからファイルサイズは03E5Hよりも1つだけ多い03E6Hになります。
ということは。
おお。
VFTST22の実行結果は正しく表示されていたということになります。

あ。
03E6Hというのはバイト数ではなくてレコード数です。
CP/Mでは1論理セクタが1レコードですから、1レコードは128バイトです。

これにて一件落着、です。

このところ超多忙でなかなか落ち着いて書いている時間がありません。
そんなに忙しく何をやっているのか、ということにつきましては近日中にご紹介申し上げる予定でおりますので、いましばらくご猶予をお願いいたします。

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

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