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

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

[第66回]

●ディスクスペースがなくなってしまいました

ぼちぼち危ないかなあ、と思っておりましたら、やっぱりそういうことになってしまいました。
なにしろ仮のRAMディスクシステムで、わずか12KBしかありません。
大昔のフロッピーディスクにも及びませんから、早晩こうなることは予想しておりました。
まずはその様子から。

logfile nd80zlog\03172119.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
>/ld fnc0btst.bin,8100
loading FNC0BTST.BIN ...007e(126)bytes loaded,from 8100 to 817D
>jp d233

a>save 1 fnc0btst.com
No space
a>dir
A: FILLE5   COM : FTEST1   COM : FTEST2   COM : DM       COM
A: TEST     COM : FTEST4   COM : FTEST4-1 TXT : FTEST4-2 COM
A: FTEST4-3 COM : COPY     COM : TESTDATA TXT : FILLFF   COM
A: TESTDAT2 TXT : CMP      COM : FILL00   BIN : FTST7    COM
A: FTST8    COM : FTST9    COM : FTST10   COM : FNC0BTST COM
a>

いつものようにテストプログラムを作成して、それをRAMディスクにセーブしようとしましたら、
No space
と表示されてしまいました。
DIRコマンドでディレクトリを表示させてみましたら、新しくセーブしようとしたFNC0BTST.COMも表示されました。

DIRエリアは8セクタ4KBです([第13回])。
1セクタ128バイトには4つのFCBが入りますから、4×8=32個のファイルが登録可能です。
DIRコマンドで表示されたファイルは20個ですから、まだディレクトリエリアには余裕があります。
それなのにNo spaceということは、ディレクトリではなくて、データを保存するエリアがなくなってしまったということだと思います。

[Ctrl][D]でCP/Mを終了して、ZB3BASICに戻って、DMコマンドでDIRエリアを表示させてみました。

a>^D>a>^D>

ERR:23 
>d.,8800,88ff
8800  00 46 49 4C 4C 45 35 20-20 43 4F 4D 00 00 00 02  .FILLE5  COM....
8810  02 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8820  00 46 54 45 53 54 31 20-20 43 4F 4D 00 00 00 02  .FTEST1  COM....
8830  03 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8840  00 46 54 45 53 54 32 20-20 43 4F 4D 00 00 00 02  .FTEST2  COM....
8850  04 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8860  00 44 4D 20 20 20 20 20-20 43 4F 4D 00 00 00 04  .DM      COM....
8870  05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8880  00 54 45 53 54 20 20 20-20 43 4F 4D 00 00 00 02  .TEST    COM....
8890  06 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
88A0  00 46 54 45 53 54 34 20-20 43 4F 4D 00 00 00 02  .FTEST4  COM....
88B0  07 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
88C0  00 46 54 45 53 54 34 2D-31 54 58 54 00 00 00 06  .FTEST4-1TXT....
88D0  08 09 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
88E0  00 46 54 45 53 54 34 2D-32 43 4F 4D 00 00 00 02  .FTEST4-2COM....
88F0  0A 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
>d.,8900,89ff
8900  00 46 54 45 53 54 34 2D-33 43 4F 4D 00 00 00 02  .FTEST4-3COM....
8910  0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8920  00 43 4F 50 59 20 20 20-20 43 4F 4D 00 00 00 02  .COPY    COM....
8930  0C 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8940  00 54 45 53 54 44 41 54-41 54 58 54 00 00 00 06  .TESTDATATXT....
8950  0D 0E 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8960  00 46 49 4C 4C 46 46 20-20 43 4F 4D 00 00 00 02  .FILLFF  COM....
8970  0F 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8980  00 54 45 53 54 44 41 54-32 54 58 54 00 00 00 06  .TESTDAT2TXT....
8990  10 11 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
89A0  00 43 4D 50 20 20 20 20-20 43 4F 4D 00 00 00 04  .CMP     COM....
89B0  12 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
89C0  00 46 49 4C 4C 30 30 20-20 42 49 4E 00 00 00 02  .FILL00  BIN....
89D0  13 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
89E0  00 46 54 53 54 37 20 20-20 43 4F 4D 00 00 00 02  .FTST7   COM....
89F0  14 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
>d.,8a00,8aff
8A00  00 46 54 53 54 38 20 20-20 43 4F 4D 00 00 00 02  .FTST8   COM....
8A10  15 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8A20  00 46 54 53 54 39 20 20-20 43 4F 4D 00 00 00 02  .FTST9   COM....
8A30  16 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8A40  00 46 54 53 54 31 30 20-20 43 4F 4D 00 00 00 04  .FTST10  COM....
8A50  17 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8A60  00 46 4E 43 30 42 54 53-54 43 4F 4D 00 00 00 00  .FNC0BTSTCOM....
8A70  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8A80  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8A90  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8AA0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8AB0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8AC0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8AD0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8AE0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8AF0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
>

ディレクトリエリアは1FCBあたり32バイトに区切られています。
ダンプリストではちょうど2行が1FCB32バイトになります。
各FCB(ファイルコントロールブロック)の上の行の16バイトにはファイル名などの情報が置かれます。
下の1行にはデータブロックのbェ書き込まれています。
ほとんどは短いファイルですから1ブロックで終わっていますが、中には2ブロックを使っているものもあります。
上からずっと見ていくと、最後のFNC0BTST.COMにはブロックbェ書き込まれていません。
そしてそのひとつ上のFTST10.COMのデータブロックbヘ17Hになっています。

今回の仮RAMディスクでは、1ブロックは4セクタにしました([第12回])。
つまり1ブロックは128×4=512バイト(0.5KB)になります。
最後に書かれたブロックbヘ17Hですから、0〜17Hのブロック数は24です(17H=23)。
すると0.5×24=12KBですから、おお、やっぱりRAMディスクを使い切ってしまっていますね。

どうしましょう?

いえ。別にどうってことはないのです。

まず、現在のRAMディスク(アドレス8800H〜B7FFH)の中味をハードディスクに保存しておいて、それからその範囲を再フォーマット(初期クリア)してしまえばよいのです。
これはフロッピーディスクで言えば、一杯になったディスクを取り出して、別の新しいディスクをセットする、という操作をしたことになります。

>/sv ramdsk8.bin,8800,b7ff
3000(12288)bytes saved
>/ld fille5.bin,8100
loading FILLE5.BIN ...0010(16)bytes loaded,from 8100 to 810F
>jp 8100
>/ld fnc0btst.bin,8100
loading FNC0BTST.BIN ...007e(126)bytes loaded,from 8100 to 817D
>jp d233

a>dir
No file
a>save 1 fnc0btst.com
a>dir
A: FNC0BTST COM
a>

/sv ramdsk8.bin,8800,b7ff[Enter]
を実行して、RAMDSK8.BINという名前で現在のRAMディスクの中味を保存しました。
そのあと
/ld fille5.bin,8100[Enter]
で、FILLE5.BINを8100Hにロードしました。
FILLE5.BINはRAMディスクを初期フォーマットするプログラムです([第38回])。
JP 8100[Enter]
で、FILLE5.BINを実行すると、8800H〜B7FFHにE5が書き込まれます。

これで新しいRAMディスクが使えるようになったはずですから、さきほどSAVEできなかったプログラムFNC0BTST.BINをもう一度8100Hにロードしてから、
JP D233[Enter]
で、CP/Mを起動しました。

DIRコマンドを実行すると、まだ何も書き込まれていませんから、No fileと表示されました。
ここで、
save 1 fnc0btst.com[Enter]
を実行して、FNC0BTST.COMをRAMディスクにセーブしました。

そのあと、DIRコマンドを実行して、FNC0BTST.COMがセーブされていることを確認しました。

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

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