標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第563回]
●Z80BASICの起動と終了のシーケンス(2)
前回は説明の最後のところで時間がなくなってしまいましたので、今回はその続きから説明をいたします。
というつもりだったのですが、やっぱり途中からだと、どうも説明がしにくいものですから、もう一度最初から簡単に説明をすることにいたします。
もとはリモート入力プログラムとZ80BASICプログラムは別々のものだったのですが、基本的な接続操作は共通していますから、2つのプログラムを合体させてしまいました。
現在はまだデバッグ中ですから、zb2q.exeという名前になっています。
ND80ZVとWindowsパソコンをUSBケーブルで接続して、ND80ZVの電源をONにします。
それからDOSプロンプト画面で、zb2q.exeを実行します。
ND80ZVに接続しました
という表示が出ますから、そこでND80ZVのキーボードから[*(I/O)]キーと[8 VF]キーを続けて押します。
するとND80ZVのROMに書かれているリモートプログラムが起動して、USBを経由して、Windowsパソコン側のリモートプログラムとの間で通信が開始されます。
上の画面は、ND80ZVがUSB接続に応答して、最初のLED表示データを送信してきたところです。
そのあと、Z80BASICを起動するために、Windowsパソコンのフルキーボードから z と入力すると、ただちにZ80BASICが起動して、下の画面の上部に表示されているように、
*** nd80z3 basic ****
>
と表示されて、キー入力待ちになります。
ここからはWindowsパソコンのキーボードからBASICのプログラムの入力や編集の作業などが行えるようになります。
先ほどの画面のリモートキー入力の状態ではキー入力の間違いを訂正するのに、[Back Spase]キーしか使えませんが、Z80BASICが起動したあとは、スクリーンエディタが使えますから、画面上のどこへでもカーソルを移動して、表示されているプログラムの編集作業が行えます。
上の画面では、前回と同じように、autoコマンドで簡単なプログラムを入力して、listコマンドでそれを確認してから、runコマンドで実行させています。
画面の表示を見ているとWindowsパソコンそのものでBASICプログラムの作成や編集を行っていて、BASICもWindowsパソコンが実行しているように思えてしまいますが、画面に表示されている文字データはUSBを通じてND80ZVから送られてきたものをそのまま表示しているだけで、BASICプログラムもND80ZVが実行しているのです。
さて、BASICプログラムを実行させたあと/remoteコマンドを入力しました。
/remoteコマントを入力すると、Z80BASICを終了して、リモート入力プログラムに戻ります。
そのあと前回と同じように、フルキーボードの右にあるテンキーから[+]キーを2回入力しました。
[+]キーの入力はND80ZVの[READ INC]と同じ働きをリモートで行います。
ここまでが前回の説明でした。
このあと、ここで z と入力するとふたたびZ80BASICが起動されます。
リモート入力プログラムで7セグメントLEDのアドレス表示とデータ表示がDOSプロンプト画面に表示されて、キー入力待ちの状態になっているときに、z と入力することで、いつでもZ80BASICを起動することができます。
ふたたびZ80BASICが起動されました。
あ。
説明をするのを忘れておりました。
リモート入力プログラムで、7セグメントLEDのアドレスとデータがDOSプロンプト画面に表示されて、キー入力待ちの状態のときは、ND80ZVの7セグメントLEDの表示は、USB接続していないときのND80ZVボード上からのキー入力と同じように、リモートの1回のキー入力ごとに、そのキー入力に応じて変化します。
しかし1回のリモートキー入力の操作ごとに、DOSプロンプト画面にも、7セグメントLEDの再表示が行われるとかえって表示が煩雑になりますから、DOSプロンプト画面への7セグメントLEDの表示は、リモートキー入力の[+][−][.][Enter]の入力時のみになっています。
[+]はND80ZVの[READ INC]
[−]は[READ DEC]
[.]は[ADRSSET]
[Enter]は[WRITE INC]と同じ働きをします。
ところで、z の入力によってZ80BASICが起動すると、ND80ZVのLED表示は行われなくなります。
Z80BASICでは、データやメッセージの表示をDOSプロンプト画面に行いますので、7セグメントLEDは使いません。
また非常に複雑なプログラムが実行されていて実行時間もかなりかかりますから、7セグメントLEDを表示させるためのDMAアクセスを禁止して、少しでも実行時間を短縮するようにしてあります。
/remoteコマンドを実行してリモート入力プログラムに戻ると、ND80ZVの7セグメントLEDはふたたびDMA表示されるようになります。
さて、上の画面の説明の続きです。
Z80BASICの起動直後は、ユーザーのBASICプログラムは初期クリア状態になっていますが、helpコマンドで復活させることが出来ます。
listコマンドでプログラムが元通りに表示されたことを確認したあと、runコマンドでもう一度実行してみました。
ちゃんと問題無く実行されました。
●/exitコマンド
Z80BASICを終了してリモート入力プログラムに戻るコマンドは/remoteでしたが、Z80BASICを終了して、USB接続も切断したい場合には、/exitコマンドを使います。
/exitコマンドの代わりに、[Ctrl]キーを押しながら[E]キーを押すことでも、Z80BASICを終了して、USB接続を切断することができます。
/exitまたはCtrl+Eによって、ログファイルもクローズされます。
●Z80BASICの起動と終了を記録したログファイル
今回の説明で行ったBASICの起動から終了までを記録したログファイルです。
logfile nd80zlog\07252126.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >auto > 10 10for abc=0 to 10 > 20 20print abc, > 30 30next abc > 40 40print "end" > 50 >list 10 FOR ABC=0 TO 10 20 PRINT ABC, 30 NEXT ABC 40 PRINT "end" >run 0 1 2 3 4 5 6 7 8 9 10 end >/remote BASICを終了しました 1001 C300 - [RD+] 1002 0018 - [RD+] 1003 18C9 - z 1000 00C3 - *** nd80z3 basic **** >help TEXT 8004-804B ヘンスウ DFFB-DFFF >list 10 FOR ABC=0 TO 10 20 PRINT ABC, 30 NEXT ABC 40 PRINT "end" >run 0 1 2 3 4 5 6 7 8 9 10 end >/exit 0000 00C3 - ndremote.exeを終了しました logfile closed at Sun Jul 25 21:29:34 2010