arduinoにz80の疑似ROMとRAMを担当させてみようとしたら、DIPタイプのパラレルSRAMとEEPROMを入手したお話

右の本、超良書です。

前回、クロック入力と電源をarduinoにさせることによってz80の動作を見ることができる装置を作りましたが、あのままでは単純に「動くところ」だけしか見ることができません。そこで、まだ余っているarduinoのピンにメモリアドレスのピンと、アドレスバスのピンをつなげようとしたのですが、

ピンがどうやっても足りません。(見ればわかるか・・・)
そこでひとまず余っているアナログピンを(たったの三本!)arduinoとつないであげます。3本しかないので、A0~A2の3ビット、つまりアドレスの7番地までしか確保できません。
まあすごく短いプログラムなら何とかなるだろうと考え、こちらのサイトを参考にしまして、実行したい命令を見よう見まねでハンドアセンブルしようとしたのですが、何が何だかわかりませんでした。

そこでひとまず意味の分かるアセンブラ命令を機械語と配置まで決めてくれるソフトを探していたのですが、みんな古くて今のパソコンで動いてくれません。なので、開発ソフトはないのかと探していたらもろもろを解決してくれる最高のサイトを見つけました。アセンブラでソフトを開発しようというサイトです。
本当に助かりました。このなかに古いウインドウズをエミュレートする部分があるのですが、そのexeファイルをコンパイラとかの入っているフォルダに入れるのを忘れないでください。動きませんから。

さて、いざ書いたプログラムも本当に動いているのか確かめたいけど、まずはこのPC6001エミュレーターとやらの使い方をわからないといけない。それはちょっとしんどいです。すごく面白そうだし、そちらにはまってしまって抜け出せない可能性もあるし。
と、ここでとあるサイトのことを思い出しました。TK80というコンピューターが昔あったのですがそのコンピューターをWEB上で再現してしまったというものです。それがこちら。すごい人がいるんですね…。こうなってみたいものです。
それから、操作方法はこちらのサイトと、こちらの動画を見ていただくとお分かりいただけると思います。

では、これをどうするかというと、先ほどのアセンブラソフトで出力された16進数を指定された番地にエミュレーター上で書き込んでいって、実行。その結果が思い通りだったらプログラミングは成功ってわけです。いまは非常に小さいプログラムしか組んでいないのでできることですね(´・ω・`)
そして確認してみたのですが、特に問題はありませんでした。なので、arduinoに書き込んで実行したのですが…

暴走しました。

HALT命令も、なにもききません。0~順番に番地を読んでいくらしいのですが、突然飛んでしまいどうにもなりません。これは、やはり足りないピンをつなぐしかないのか。でもarduinoの足はすべて使い切ってしまっている。

このピンの不足を解決するにはピンの本数を何かしらの方法で増やす以外にありません。そこで、74HC165というICと、74HC595というICを使えば解決できそうだということがわかりました。

(参考にしましたサイトはこちらです。http://www.geocities.jp/zattouka/GarageHouse/micon/circuit/HC595.htm

このICで増やした足を、Z80のパラレルピンにつなぐことができれば一度読み込んだ後にarduino側で別で読み込んでしまえばいいというわけです。しかし、これにも問題があって、書き出しの場合であれば送り出すデータが74HC595(出力ピンを増やすためのIC)に準備できるまでWAIT信号をZ80側に出していれば問題はないと思うのですが、問題はアドレスバスの読み込みです。一応WAIT信号を出している間はすべての動作がストップするようなので同じように処理すればいいかもしれませんが、arduino側でどのように判定を取るかも問題になります。ピンの処理とプログラムも前回とはまるで違うものになるのは明白ですし…


■そもそも、なんでarduinoにやらせるのか

 まずなんでこのRAMとROMの役割をarduinoにさせるのかというと、まず一つ目は
「Z80の動作のすべてが見たい!」
というものだったのと、もう一つに
「周辺機器が手に入らない」
というものでした。ネットで調べても、大学生がちょっと秋葉原に行って入手しようにもDIPタイプのSRAM(パラレルバージョン)のはありませんし、EEPROMなんてありませんでした。あのときまでは。

上のSRAMは、もう廃盤だそうです。そんなぁ・・・
でも手に入った。2017年現在。


あの時までは!!!!

衝撃です。ありました。もう廃盤だそうで、そのためなのか200円単位で値上がりしていました。256kbitのSRAMが700円、同じく256kbitのEEPROMが1100円!Z80一個より高いんです。びっくり。(ちなみにその隣にはあのMC68000が!!1700円でした。買えばよかったかも。)
ちなみに買うことのできたお店はインターネットなどにはサイトを出していないみたいなので、心当たりのある人は探してみてください。たぶんすぐわかるかも。

なので、ひとまず74HCたちで回路を作ったのち、EEPROMにarduinoで書き込んでプログラムを実行してみようと思います。そして、シリアルモニター代わりにarduinoのモニターを使ったらちょうどいいかもしれません。TeraTarmに表示させるのが一般的なようですが。
それでは、今回はここまで。どんどんarduinoとつなぐケーブルが増えていくので、もうそろそろ何にどれをつないでいるのかわからなくなってきた…
次の記事:
74HC595を使ってarduinoの16ビットパラレル出力に挑んでみた
前の記事:
Z80はどう動いているのか見れる装置をarduinoで作ってみた

コメント

このブログの人気の投稿

ファミコンの完全自作ROM&カセットを作ろう!!その1~立ちはだかるコンパイラの壁~

ファミリーベーシックでゲームプログラミング

ファミコンの完全自作ROM&カセット作ろう!〜cc65で起動ROMをつくる〜