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

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

[第122回]


●ファンクションコール01

今回はDOSの構造などについて書くつもりだったのですが、ファンクションコールのテストを開始したところ、さっそくネタがみつかってしまいましたので、急遽変更です。

とりあえずビルトインコマンドが動くところまできましたので、次はいよいよファンクションコールの攻略です。
数あるファンクションコールの動作確認をどのように進めようかとしばらくあれこれ考えてみたのですが、過去2ヶ月近くの間CP/M2.2の動作確認のためファンクションコールのテストプログラムを作って試してきましたから、そのテストプログラムを試してきた順に、同じように試してみるのが一番無理がないだろうということになりました。

そこでまずは手始めに[第39回]で作りましたファンクションコール01および02のテストプログラムFTEST1.COMを、今回作りましたオリジナルDOSでも同じように動くかどうか、試してみることにいたしました。

ファンクションコール01(コンソール入力)など、試すまでもないこと、と思っていたのですけれど、やっぱり試してみるものですねえ。



あれま。
エコーがありません。
本当は ? の表示に a と入力したら、
まず入力文字がエコー表示されて、そのあと=61と表示される(?a=61)はずのところエコーが表示されませんから、?=61になってしまいました。

ファンクションコール01については、どういうプログラムを書いたのか、確認してみました。

;
;CONSOLE INPUT FCALL 01
;
CONIN:CALL B_CONIN
	RET

うむ。
これは、ひどい。
手抜もいいところです。

しっかり手を加えました。
ついでに。
オリジナルのCP/MではCTRL入力はエコーされませんが、やっぱり表示したほうがわかりやすいと思いましたので、互換性にはこだわらずに、そのように機能追加も行ないました。
こちらがそのように大幅に追加変更したあとのソースです。

;
;CONSOLE INPUT FCALL 01
;if ctrl+D set cf
;
CONIN:PUSH BC
	CALL B_CONIN
	LD B,A
	CP 0D
	JP Z,CONIN4
	CP 0A
	JP Z,CONIN4
	CP 09;TAB
	JP Z,CONIN4
	CP 08;BS
	JP Z,CONIN4
	CP 1B
	JP C,CONIN5;ctrl+
	CP 20
	JP C,CONIN4
	LD C,A
CONIN3:CALL B_CONOUT
	LD A,B
CONIN4:POP BC
	OR A;rest carry flag
	RET
;ctrl+
CONIN5:LD C,5E;^
	CALL B_CONOUT
	LD A,B
	ADD A,40
	LD C,A
	CALL B_CONOUT
	LD A,B
	CP 04;ctrl+D
	JP NZ,CONIN4
	POP BC
	SCF;ctrl+D
	RET

それにともなってCCPプログラムも変更が必要になりましたので、そのように変更したうえで、ロードしてから、FTEST1.COMを再実行してみました。



ちゃんとエコーされるようになりました。
CTRL+Z、CTRL+Dも表示されています。
もう、自由自在という感じですねえ。
こんなふうに、自分の思うままにプログラムが作れたら楽しいと思いませんか?

あ。
今回の作業を含めて、オリジナルDOSのアセンブル、デバッグ作業は全てND80ZVに附属するソフトのみを使って(テキストエディタだけは別ですけれど)、ND80ZVの上で実機デバッグを行なっています。
何も特別の開発システムは使っていません。
ND80ZVだけで開発できてしまうのです。
ええ。
ご覧いただいております通り、DOSだって開発できてしまうのですから、ND80ZVって、なかなかにすぐれものだなあ、と思っていただけましたら有り難いです。

ところで、今気がついたのですが。
CTRL+DでZB3BASICに戻るときに、
end of CP/M
って表示してますけれど、これはやめたいですねえ。
こんなのどこで表示しているのだろうと思いましたら、BIOSで表示しておりました。
なので、BIOSもそこのところを書き直しました。
CP/Mの代わりに何を表示しようか考えたのですが。
あれこれ考えるのも面倒なので、とりあえず
ZBDOSと表示することにしました。
むむむ。
以外とこの名前のままになってしまうかも…(実に安直ですなあ)。



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

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