6503がようやく動いた報告

イメージ
  回路図まで載っけて作りましたと宣言した前回。 いざ色々動かそうとしたものの、 プログラムがまともに動かないので試行錯誤してたら何年たってたんですかねこれ 。月日が経つのは怖いですね。 今回ようやく6503と6532が無事に動きました。 何につまづいたのかというと、多分アセンブラの文法です。 6502系のアセンブラって結構豊富で、 いろんなところから出てるんですがそれぞれアドレスの表記とか微 妙に違うんですね。 で、 今回久しぶりにca65というアセンブラを使用してみたのがつま づいた原因でした。 一度設定すれば大体の6502系には対応できるのが魅力ですが、 本当よくわからないmakeファイルの設定とかで地獄を見ました 。 以下何やってたのか簡単にまとめていきます。 新しい道具も作ったよ! ■:まず動かない いや、電気は通ってるしクロックは走ってるんですよ。 なのに6532の挙動がおかしくてIRQはでっぱなしだしcpu は止まるし訳がわかりません。 そこで今一度6532のデータシートを読むと、 「 NMIとIRQはオープンコレクタなので 必ずプルアップすること 」 ってあるんですね。何その罠。 というわけでプルアップ抵抗を追加しました。 これでcpuがすぐに止まる事故は解決… と思いきやまだ止まります。というか出力がよくわからない。 そこで大昔に作りかけてやめた出力確認用LEDパネルを作成する ことにしました。 ■:めちゃくちゃ便利なLEDパネル 5年くらい前にこんなの作ったら便利やろってLEDだけ並べて、 回路に不備があることに気がついてなげたもの。 今ならなんとかできそうってことで抵抗とトランジスタ をばーっと取り付けて、 カードエッジからも表のポートからも入力できるようにしました。 これまでは毎回ブレッドボードでled回路組んでたんでクソめん どくさいし抜けるしで散々だったのですが、 これで見やすい簡単出力もicに負担がなく万々歳になりました。 やったぜ。 まあ回路図書かずにえいやっと作ったので裏はすごいことになって ます。ちゃんと整えて、 入力スイッチもつけて体裁整えたら普通に便利道具になりそう。 クロックパルスも出せるようにしたいですね。 ledドライブのために2sc1815を贅沢に使用してます。 意外と高いですがいつ買ったのか結構あったので奮発...

Z80はどう動いているのか見れる装置をarduinoで作ってみた

このかたちのIC が一番好き。

z80といえば、かつて様々なマイコンに搭載されたことで有名なCPUですが、これいまでも秋葉原でふつうに(2017年現在)ラジオデパートで買うことができるんです。ついでにUVEPROM?も売ってるし、mc68000も売っているので、せっかくならと一つ買ってみました。
 今回入手したのは、TOSHIBAのTMPZ84C00AP-6というものです。DIPようなので、ボードの上で簡単に実験することができます。と言っても、今回の目的は
「とにかくCPUってどう動いてるのかを見る」
なので、データバスやアドレスバスがどんな信号を出しているのかを見れるようにするのが目的です。そこで、手動クロックで操作できるようにしたいのですがただボタンをつなげただけではチャタリングというのが発生して1クロックずつ動いてくれないらしいのです。じゃあその信号をarduinoから出したらいいのでは?と考えまして、デジタルピンと5V供給ピン、CLKピン、GNDをつなぎましたが・・・
いざ電源投入

動かない。なんで?データバスにつなげたLEDが反応しない。ひとまずグーグルでピン配列についてもう一度確認すると、どうやらいくつかのピンに電圧をかけてあげないとz80は周辺機器待ちとなって動かないようです。そんなことになってるんだ。すごい。

というわけで、HALTやらWAITやらのピンを入力が必要なものは入力し、出力されるものの先にはLEDをつないであげました。(これ、逆流防止にもなって結構いいかも。)
そんなこんなで出来上がったのがこちら。
LEDがひたすらぴかぴか光ります。

PCとはシリアル通信で、クロックの自動入力モードと、半クロックづつ入力できるモードとを切り替えたり、0011010というメモリだけ入力できるようにした回路と、電源を管理できるようにしております。また、シリアルモニタでM1ピンの動きを監視し、手動ですが任意のタイミングでメモリを入力できます。(1byteのみですが。)

詳しい方に見てもらったら怒られそうなモノになりましたが、いまCPUがなにをしているのか手に取るようにわかるので見ていて飽きません。クロックの速さも自由自在ですし。

ただ、arduin unoではピン数が足りなくてデータバスやメモリバスの管理ができないのが問題ですね。外部メモリ作ってみようかな…

追記:以下に今回のarduinoコードを書いておきます。あとはピンに合わせて配線してもらえれば同じように実験できると思います。




コメント

このブログの人気の投稿

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

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

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