2015.1.23

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

MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!


[第109回]


●ファンクション0B

ファンクション0Bはコンソールステータスチェックです。
キーボードの入力をチェックしてキーが押されていないときはAレジスタに00を入れてリターンします。
キーが押されているときはAレジスタに00以外が入ります(キーのコードが入るということではありません)。

ファンクション0Bは「ワンボードマイコンでCP/Mを」[第363回]で説明をしています。
そこではテストプログラムFNC0BT−3を使ってテストを行なっています。
そこで今までと同じように、FNC0BT−3をインテルニーモニックに変換してMF0BT−3を作りました。

●テストプログラムMF0BT−3

下はMF0BT−3のソースプログラムです。

; BDOS function0B test(fnc0bt)
;2012/5/29 8/24
;13/4/7
;
	ORG $0100
	FCALL=$0005
;
LOOP0:MVI E,2D
LOOP:MVI C,02
	CALL FCALL
	MVI C,0B
	CALL FCALL
	ORA A
	JZ LOOP0
	MVI C,01
	CALL FCALL
	CPI 1A;Ctrl+Z
	RZ
	MOV E,A
	JMP LOOP
;

下はMF0BT−3のアセンブルリストです。

2015/1/21  14:57  mf0bt-3.txt
END=011B
              ; BDOS function0B test(fnc0bt)
              ;2012/5/29 8/24
              ;13/4/7
              ;
              	ORG $0100
              	FCALL=$0005
              ;
0100 1E2D     LOOP0:MVI E,2D
0102 0E02     LOOP:MVI C,02
0104 CD0500   	CALL FCALL
0107 0E0B     	MVI C,0B
0109 CD0500   	CALL FCALL
010C B7       	ORA A
010D CA0001   	JZ LOOP0
0110 0E01     	MVI C,01
0112 CD0500   	CALL FCALL
0115 FE1A     	CPI 1A;Ctrl+Z
0117 C8       	RZ
0118 5F       	MOV E,A
0119 C30201   	JMP LOOP
              ;
FCALL        =0005  LOOP         =0102  LOOP0        =0100  

MF0BT−3を実行しました。



●ZB3DOS(CP/M互換DOS)のコマンド

説明の続きを書こうと思って過去記事を確認していましたら、コマンドのテストをしていないことに気が付きました。
本当はここから始めなければいけませんでした。
ファンクションの説明の途中ですけれど、急いでコマンドのテストをしてしまうことにいたしました。

コマンドには次のものがあります。
DIR ERA TYPE SAVE REN COPY ZB3

以下順次簡単な説明とテストを行ないます。

●DIR

仮想フロッピーディスク(A〜D)およびZドライブにセーブされているファイル名を表示します。
 
DIR[Enter]
と入力すると、そのときのカレントドライブ(A>と表示されていればAドライブがカレントドライブです。B>と表示されていればBドライブがカレントドライブです)にセーブされているファイル名が表示されます。

DIR C:[Enter]
のように後ろにドライブ名とコロン(:)をつけて入力すると、そこで指定したドライブにセーブされているファイル名が表示されます。
このコマンドを実行してもカレントドライブは変更されません。

DIRコマンドの操作例です。


●チェンジドライブ

これはコマンドではありませんが、上でカレントドライブについて書きましたのでここで説明をしておきます。
カレントドライブを変更したいときはそのドライブ名を示すアルファベットに続けてコロン(:)をつけて[Enter]を入力します。

A>
と表示されているときに、
A>b:[Enter]
と入力すると
B>
と表示されて、カレントドライブがBドライブになります。

●ERA

ERA ファイル名.拡張子[Enter]
と入力するとカレントドライブの指定したファイルが削除されます。
一度削除されたファイルはもとに戻すことができません。
ファイル名にはワイルドカードが使えます。

ERA C:ファイル名.拡張子[Enter]
のように後ろにドライブ名とコロン(:)をつけて入力すると、そこで指定したドライブにセーブされているファイルが削除されます。
このコマンドを実行してもカレントドライブは変更されません。

●ワイルドカード

ワイルドカードとは*や?を使ってファイル名や拡張子の一部を代用させるものです。

[例1]
ABC*.*
ABCではじまるファイル名は拡張子が何であっても選択されます。
[例2]
AB??C.X?Y
?は1文字を代用していて、そこにはどんな文字があっても選択されます。

ワイルドカード(*)を使ったERAコマンドの使用例です。
下の方でAからDへのチェンジドライブも行なっています。

A>ERA *.TXT
の実行によって、AドライブのVFTST6.TXTとTEST.TXTが削除されました。
また
A>ERA D:TEST.*
の実行によってDドライブのTEST.TXTが削除されました。

ワイルドカード(?)を使ったERAコマンドの使用例です。

テストファイルを作成するためにSAVEコマンドを使っています。
SAVEコマンドについてはのちほど説明をします。
ERA TEST?ABC.*
の実行によってTEST1ABC.TXTとTEST2ABC.TXTが削除されました。

●TYPE

TYPE ファイル名.拡張子{Enter]
と入力すると、指定したファイルの内容が画面に表示されます。
指定するファイルはテキストファイルでなければなりません(拡張子がTXTである必要はありません)。

TYPE C:ファイル名.拡張子[Enter]
のようにファイル名の前にドライブ名とコロン(:)をつけて入力すると、そこで指定したドライブにセーブされているファイルの内容が画面に表示されます(ドライブ名はA:〜D:およびZ:)。
このコマンドを実行してもカレントドライブは変更されません。

CP/Mのテキストファイルはファイルの終わりにEOFコード(1AH)を置く決まりになっていました。
TYPEコマンドもファイルの終わりをEOFコードで識別しています。
しかし現在のWindowsシステムではテキストファイルを作成してもファイルの終わりにEOFコードは付加されません。
Windowsシステムで作成したファイルをそのままZドライブにコピーしても、そのままではファイルの終わりにEOFコードがないためにTYPEコマンドをそのファイルに対して実行するとファイルの最後にゴミまで表示されてしまいます。
そのようなことがおこらないようにCP/M互換DOSではZドライブから仮想フロッピーディスクドライブ(A〜D)にファイルをコピーする時点で、機械的にファイルの終わりの余白をEOFコード(1AH)で埋めるようにしてあります。

TYPEコマンドの使用例です。

TYPEコマンドで使うためのサンプルとして、COPYコマンドでZドライブからDドライブにMFTST2.TXTをコピーしました。
COPYコマンドについてはのちほど説明をします。
MFTST2.TXTは[第106回]でお見せしたアセンブラソースプログラムファイルです。
TYPEコマンドでMFYSY2.TXTの中身を表示させました。

コマンドの説明の途中ですが、ちょっと説明が長くなってしまいましたので、本日はここまでといたします。
続きは次回にいたします。

MYCPU80でCP/Mを![第109回]
2015.1.23upload

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