8080マイコンをつくろう!(TK−80完全復活!)
なんと8080です!
もちろん、BASICからCP/Mまで、できます!
36年の時を経ていまよみがえる
8080CPUマイコン組立キット!
なんたってはるか昔の生産中止品を集めて作る組立キットです。
生産前から堂々予告です。
入手できなくなったら
即生産終了!売り切れ御免!




2016.3.25

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

[第8回]

●リモートプログラム

ND80ZV(ND80Z3.5)はWindowsパソコンにUSBで接続してWindowsからリモート操作できます。
MYCPU80もZB3BASIC+ZB3DOS(CP/M互換DOS)を増設することで、同じ機能を使うことができます。
MYCPU80は8080互換ですから、ND8080も同じことができて当然なのですが、MYCPU80用のソフトをそのままもってくればよいかといいますと、そこがそうは簡単ではありません。
MYCPU80はまだPIC18F14K50を使ったUSB通信プログラムを開発する前だったので、FTDI社のFT232RLを使ってUSB−RS232C変換による通信をしています。
今回製作したND8080はCPUは8080なのですが、USB通信のところはND80ZV(ND80Z3.5)と同じPIC18F14K50によるHidデバイスとしての通信をしています。
ですので、USB通信に関係する部分はMYCPU80ではなくてND80ZVのプログラムをもとに開発する必要がありました。
なかなかに手間な仕事でした。

まだ詳細についてはテスト中なのですが、とりあえず出来上がったリモートプログラムを見ていただくことにします。
ND8080とWindowsパソコンをUSB接続して、リモートプログラム(実際にはBASICと一体化しています)を実行しました。

ND80ZV(ND80Z3.5)と同じZB3BASICを8080用に書き直しました。
リモート機能もありますがBASICの機能が大きいので、Windows側のプログラムはND8080BSというプログラム名にしました。
まだテスト中なのでバージョンを示す1aがついています。

ND8080のキーの代わりにWindowsパソコンのキーボードを操作するとND8080の7セグメントLEDとDOSプロンプト画面の両方にその結果を表示します。

おっと。
キーを押し間違えてしまいました。
[ADRSSET]は[.](ピリオド)です。
[WR+]は[Enter]です。
[RD+]は[+]キー、[RD−]は[−]キーを押します。
画面左に表示される8桁はND8080の7セグメントLEDの表示と同じです。

下のように8000から簡単なプログラムを書いて、それを実行してレジスタダンプをさせてみました。
8000 3E50
8002 FF
これはレジスタダンプを表示させるためだけのプログラムで特に意味はありません。

FFはRST7の命令コードです。
0038番地をコールします。
モニタプログラムの0038番地にはレジスタの値を表示するプログラムへのジャンプ命令があります。
ですからCPUがFFコードを実行するとレジスタダンプが行なわれます。
実はこの機能はND80ZV(ND80Z3.5)のND80Zモニタプログラムの機能です。
もともとZ80のプログラムとして書かれているため、Z80のレジスタを表示します。
ここの部分は8080用に書き直そうと思ったのですが、そうするとここだけではなくてかなり広範囲に手直しが必要になってしまうため、このまま残すことにしました。
ですので8080にないレジスタ(IX、IYやA’F’など)も表示されますが中身はありません。

ND80ZV(ND80Z3.5)の「リモートプログラム操作説明書」と同じことをしてみたのですが、説明書の不備をみつけてしまいました。

21ページの6.5リターンキー(Continue)[n] の説明で、「下のようにプログラムを書き込み済み」とありますが、肝心のプログラムリストがありません。
その後の操作例から考えるとここは下のようなプログラムを考えていることになります。

8000 3C
8001 FF
8002 C30080

[RUN]は[r]キーです。
8000から実行すると8001のFFでプレークします。
[Continue]は[n]キーです。
ブレークしたところから実行を再開します。
[n]キーを押すたびにレジスタダンプが行なわれて、Aレジスタの値が+1されていきます。
3CはINC Aの命令コードです。

●MOVE MEMORY

他の機能も使ってみました。
MOVE MEMORYです(実際にはMOVEではなくてCOPY&PASTEです)。
[/][m]キーを使います。

ここでは8000〜80FFの内容を9000〜にコピーしています。
8000[.]80FF[/][m]と操作します。
for....と表示されるので9000[Enter]と入力します。

●MEMORY DUMP

そのあとコピーされたことを確認するために、メモリーダンプ機能を使ってみました。
[/][d]と操作します。
上の画面で最初に 8000[.][8050][/][d]と操作して、8000〜805Fの中身を表示させたあと、9000[.]905F[/][d]と操作して9000〜905Fの中身を表示させています。

●レジスタダンプ

ブレーク中にレジスタの値を書き換えて、その値のままプログラムの実行を再開することができます。
プログラムをデバッグするときなどに利用できます。
[/][r]でレジスタモードにエントリーします。

レジスタモードに入ると[AF]レジスタから順に表示が進みます。
メモリアドレスに値を書くときと同じように4桁の値を書き込みます。
レジスタを直接指定することもできます。
[HL]レジスタは[/][h]
[DE]レジスタは[/][d]
[BC]レジスタは[/][b]
[AF]レジスタは[/][a]です。
[/][d]はメモリダンプと同じですが、レジスタモードの中で使うと、[DE]レジスタを指定したことになります。
レジスタモードを終るときは[/][0](数字のゼロ)を入力します。
おっと、間違えて[/][o](アルファベットのオー)を入力してしまいました。

8000からには先程のプログラムがまだ残っていますから、各レジスタを上のように設定したあと、8000から実行してみました。

指定したレジスタの値をそのまま持ってプログラムが実行されました。

8080マイコンをつくろう![第8回]
2016.3.25upload

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