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

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

[第92回]


●ファンクションコール0DH(ディスクリセット)

ファンクションコール0DHは接続されている全てのディスクドライブを初期状態にします。
前回はファンクションコール1CHを使ってカレントドライブにライトプロテクトをかけてリードオンリーにしました。
ファンクションコール0DHは全てのドライブのライトプロテクトを解除します。

ファンクションコール0DHのテストプログラムFTST13.TXTのソースリストです。

; BDOS TEST13 function0D (disk reset )
;2012/4/10
;
     	ORG $8100
     	FCALL=$8005
;
	LD C,0D
	CALL FCALL
	RET
;

今回もとても簡単なプログラムです。
Cレジスタに0DHを入れて、システムをコールするだけです。

FTST13.TXTをZASM.COMでアセンブルします。
下はアセンブルの結果作成されたアセンブルリストです。

2012/4/11  23:2  ftst13.txt
END=8105
              ; BDOS TEST13 function0D (disk reset )
              ;2012/4/10
              ;
                   	ORG $8100
                   	FCALL=$8005
              ;
8100 0E0D     	LD C,0D
8102 CD0580   	CALL FCALL
8105 C9       	RET
              ;
FCALL        =8005  


●FTST13.COMのセーブ

いつものようにログファイルで説明をいたします。
ZB3BASICにエントリして、
/LD FTST13.BIN,8100[Enter]
を実行します。
そのあと
JP D233[Enter]
でCP/Mを起動し、
save 1 ftst13.com[Enter]
と入力し、FTST13.COMというファイル名でAドライブにセーブしました。
そのあとDIRコマンドを実行して、FTST13.COMがセーブされたことを確認しました。

logfile nd80zlog\04112303.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
>/ld ftst13.bin,8100
loading FTST13.BIN ...0006(6)bytes loaded,from 8100 to 8105
>jp d233

a>save 1 ftst13.com
a>dir
A: FNC0E-1  COM : FTST10   COM : FTST10-2 COM : FTST10-4 COM
A: FTST10-5 COM : FTST11   COM : FTST12   COM : FTST13   COM
a>

●FTST13.COMの実行

ファンクションコール0DHの働きを確認するために、ドライブにライトプロテクトをかけます。
それからファンクションコール0DHを実行して、その後、ライトプロテクトが解除されたかどうかを確認します。

a>ftst12
0000

a>ftst11

a>ftst12
0001

a>b:
b>a:ftst11

b>a:ftst12
0003

b>a:ftst13

b>a:ftst12
0000

b>^D
end of CP/M
>0000 00C3 - 
リモート接続を終了しました
logfile closed at Wed Apr 11 23:06:30 2012

最初に、前回作成したFTST12を実行しました。
リードオンリーになっているドライブはありませんから、R/Oベクトルは0000と表示されました。
次にFTST11を実行してから、もう一度FTST12を実行しました。
今度はカレントドライブ(Aドライブ)がリードオンリーになりましたから、R/Oベクトルは0001と表示されました。

次に
a>b:[Enter]
と入力して、カレントドライブをBドライブにしました。
それから、
a:ftst11[Enter]
と入力してFTST11.COMを実行し、次に
a:ftst12[Enter]
と入力してFTST12.COMを実行しました。
Aドライブに加えてカレントドライブ(Bドライブ)もリードオンリーになりましたから、R/Oベクトルは0003と表示されました。

いよいよFTST13.COMの実行です。
カレントドライブがBドライブのまま実行しました。

a:ftst13[Enter]
と入力してFTST13.COMを実行し、次に
a:ftst12[Enter]
と入力してFTST12.COMを実行しました。
FTST13のファンクションコール0DHの実行によって、全てのディスクドライブが初期状態に戻りましたから、R/Oベクトルは0000と表示されました。

ファンクションコール0Dを実行してもカレントドライブは変更されません。
今回はBドライブで実行しましたが、FTST13.COMの実行後も、カレントドライブはBドライブのままになっています。
ファンクションコール0DHは、ドライブのライトプロテクトを解除して初期状態にするだけで、ディレクトリをクリアしたりディスクをクリアするなど、ディスクにセーブされている内容は一切変化しません。

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

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