Z80を使ってみる
続くときは続く。
今日は昨日作ったものを拡張し、LEDを光らせるプログラムを動かせるようにしたいと思います。
最初にPICで作ったようなのを作りたいな。
「今日」とかさらっと言ってしまったのですが、これ実は3週間前に作りました。
すまん。
Z80はCPU単体ですので、プログラムを動かすにはプログラムを入れるものが必要です。
かと言ってROMライターを作るのは面倒、買うのは高すぎ。
そんな時にはSRAMです。
この前使ったので、準備は完璧です。
どうでもいいのですが、Z80も同じ基板から取り外したんですよ。
そしてLEDを光らせるにはどうやら「Z80-PIO」という物が必要らしい。
そんなもの無いぞ!
・・・と思っていたら、こちらのサイトを発見。
74HC574というDフリップフロップが8個入ったものを使っているらしい。
なるほど、IORQ信号ってこう使うんですね。
という訳で札幌貿易さんで購入。
周辺ICはこのくらいでしょうか。
かなりどうでもいいのですが、部屋が変わって撮影しやすくなりました。
学習机最高!
ちなみにこの矢印の本も参考にしました・・・って高っ!
そして隣の漫画はこれ。
癒されます。
話が逸れましたが、組み立てます。
イメージはこんな感じ。
すごい途中で投げ出した感。
そしてLEDに対する謎のこだわり。
一応これから始める人向けに書いたのですが、これはひどいと思います。
なんとなくZ80ってこんな感じなのかー、そーなのかーって思っていただければありがたいです。
ちなみに書き込むときはRESET端子をGNDに切り替え、
配線をCS(2)のようにして、動かすときはCS(1)にして下さい。
そしてCSのプルアップ抵抗を忘れた。
これはひどい。(大切なことなので二回言いました)
で、さっきちらっと写っていた完成品のようなもの。
これだけ配線多いと回路図書く気が無くなりますよね。
次はプログラム。
これは「Z80シミュレータ」という便利なソフトがあったので、これを使いました。
なんでレジスタがこんなにあるの?とか。
未だに分かりません。
とりあえず出来たもの。
ORG 00H
JP MAIN
ORG 70H
MAIN: LD A,0AAH
LOOP: CPL
OUT (0F8H),A
JP LOOP
END
つまり、
Aレジスタに0AAHを格納
↓
反転→0F8H番地のアドレスにAレジスタの中身を出力→反転・・・
ということです。
出力するアドレスが0F8HなのはZ80シミュレータの仮想LED(?)が0F8番地に置いてあるからです。
アドレスデコーダのようなものを作って、周辺機器を繋げてやれば楽しそうですね。
最初に70Hに飛んでいるのは、割り込みが入ると66Hに飛ぶかららしいです。
お決まりのパターンなんでしょうか?
これをコンパイルすると
00H-C3
01H-70
02H-00
(略)
70H-3E
71H-AA
72H-2F
73H-D3
74H-F8
75H-C3
76H-72
77H-00
たったの11バイト!
これを手動でSRAMに書き込みます。
たったのとか言いましたけど、アドレスと合わせて176ビットスイッチをパチパチします。
君なら出来るよ(笑)
どこかのマニアなおじさんは表を見ないで機械語を読めるらしい。
またまたご冗談を。
最後に気合を入れて書き込んだプログラムが動いている様子です。
一度ショートさせたらデータが消えて泣きました。
クロックは1.5~20Hzです。
思ったとおりに動くと嬉しいですね。
きっと運動会で生徒を躍らせている先公もこんな気持ちなのですね。(独断と偏見と曲がった心)
これでまた何か作ろうとネタを温めておきます。
暖めすぎて灰になるかもしてませんが、まあそれはそれで。(え