2015.1.14

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

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


[第104回]


●[第101回]の訂正

MYCPU80用のZB3DOS(CP/M互換DOS)のテスト作業をしていて、思い違いをしていたことに気が付きました。
[第101回]でZB3BASIC用のSTARTREK.TXTのロードに時間がかかることについての説明の中で、「LOADのボーレートは9600bpsです」と書いたのは間違いでした。
MYCPU80用のボーレートは2400bpsですが、ZB3BASICやZB3DOS(CP/M互換DOS)を実行するには、その速度では余りに遅すぎますので、とりあえず9600bpsに上げてつい先日までずっとその速度で作業をしてきました。
しかし[第89回]に書きました通り、現在は19200bpsにアップしています。
それをすっかり忘れてしまっておりました。
誠にお恥ずかしい限りです。
さっそく訂正をいたしました(現在は修正済みの文になっています)。

●ファンクション03、04、05

ファンクション03はCP/Mでは紙テープリーダーからの入力です。
しかし今はさすがに紙テープリーダーはありませんでしょう。
紙テープリーダーからの入力にはRS232C通信が使われましたので、実質的にはRS232C通信の受信とみなすことができます。
そこでND80Z3.5(ND80ZV)用のZB3DOS(CP/M互換DOS)ではRS232C入力にしています。
しかしMYCPU80にはRS232Cインターフェースがありません。
いずれ用意したいと思っていますが今のところはありません。
ですのでMYCPU80用のZB3DOS(CP/M互換DOS)ではファンクション03は未実装です。

ファンクション04はCP/Mでは紙テープパンチャへの出力です。
これもファンクション03と同じ理由からND80Z3.5(ND80ZV)用のZB3DOS(CP/M互換DOS)ではRS232C出力にしています。
MYCPU80用のZB3DOS(CP/M互換DOS)ではファンクション04は未実装です。

ファンクション05はCP/Mではセントロニクスプリンタへの出力です。
しかしMYCPU80にはセントロニクスプリンタインターフェースがありません。
いずれ用意したいと思っていますが今のところはありません。
ですのでMYCPU80用のZB3DOS(CP/M互換DOS)ではファンクション05は未実装です。

●ファンクション06

ファンクション06はダイレクトコンソール入出力です。

コンソール入力には、ファンクションコール01があります。
またコンソール出力には、ファンクションコール02があります。
それに対して、ファンクションコール06は入力にも出力にも使えます。

Cレジスタに06をセットして、EレジスタにFFをセットしてシステムをコールすると、コンソール入力になり、キー入力があるときには、その入力コードがAレジスタに入ってリターンします。
Cレジスタに06をセットして、Eレジスタに文字コードをセットしてシステムをコールすると、その文字がコンソール出力されます。

ファンクションコール06の入力、出力の機能は、ファンクションコール01、02と異なっているところがあります。
ファンクションコール01ではコンソール入力があるまでリターンしてきませんが、ファンクションコール06の入力モードでは、コンソール入力がない場合にはAレジスタに00が入って、すぐにリターンします。
ファンクションコール02では、コンソール出力時にコンソール入力のチェックを行なっていて、[Ctrl]+[P]が入力されるとポーズしてコンソール入力を待ちますが、ファンクションコール06の出力モードでは[Ctrl]+[P]のチェックは行なわれません。

ND80Z3.5(ND80ZV)用のZB3DOS(CP/M互換DOS)説明書のファンクション06についての説明を読んでいて、また思い違いをしていたことに気が付きました。
もうどうしようもない、末期的な症状であります。

その説明ではファンクション06について、下のように書いてあります。
E=0Dのときカーソルが行の先頭に戻ります。
E=0Aのときカーソルが行の先頭に戻るとともに1行改行されます。
E=08のときカーソルが1字前に戻ります。
タブ機能はありません。

あれ?ファンクション06ではタブが利かない?
ほんまかいな?
ちょっと疑問を感じたのでさっそくファンクション06で試してみました。
TABはE=09です。
試してみましたら。
ファンクション06でもちゃんとTABは利きました。
それでおばかだったことに気が付きました。

ASCII文字コード以外のコードの表示については[第100回]でファンクション02について書いています。
そこではわざわざテストプログラムを作って試しています。
全くおばかでありました。
コード08、09、0A、0Dで上記のような動作をするのはファンクション02、ファンクション06の働きではなくて、Windows側の文字表示プログラムの機能でした。
いわば端末の機能なので、ファンクション02でもファンクション06でも通常の文字コードや上記のコードについては同じ動作をするのが当然で、これは試してみるまでもないことでありました。

誠にお恥ずかしい次第でありますが、いつまでも過ぎてしまったことを恥じていては先に進めませんので、ちょいとリセットいたしましてファンクション06のテストに取り掛かることにいたしました。
[第101回]に書きましたように、ソースプログラムをインテルニーモニックに書き直してテストをするためにファンクション06のテストプログラムについて確認しましたところ、2本のプログラムがあるようです。

ここまで書きましたところで本日は時間が無くなってしまいました。
この続きは次回にいたします。

MYCPU80でCP/Mを![第104回]
2015.1.18upload

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