6503がようやく動いた報告

 回路図まで載っけて作りましたと宣言した前回。

いざ色々動かそうとしたものの、プログラムがまともに動かないので試行錯誤してたら何年たってたんですかねこれ。月日が経つのは怖いですね。

今回ようやく6503と6532が無事に動きました。

何につまづいたのかというと、多分アセンブラの文法です。
6502系のアセンブラって結構豊富で、いろんなところから出てるんですがそれぞれアドレスの表記とか微妙に違うんですね。
で、今回久しぶりにca65というアセンブラを使用してみたのがつまづいた原因でした。
一度設定すれば大体の6502系には対応できるのが魅力ですが、本当よくわからないmakeファイルの設定とかで地獄を見ました

以下何やってたのか簡単にまとめていきます。新しい道具も作ったよ!

■:まず動かない

いや、電気は通ってるしクロックは走ってるんですよ。なのに6532の挙動がおかしくてIRQはでっぱなしだしcpuは止まるし訳がわかりません。そこで今一度6532のデータシートを読むと、
NMIとIRQはオープンコレクタなので必ずプルアップすること
ってあるんですね。何その罠。というわけでプルアップ抵抗を追加しました。

これでcpuがすぐに止まる事故は解決…と思いきやまだ止まります。というか出力がよくわからない。
そこで大昔に作りかけてやめた出力確認用LEDパネルを作成することにしました。

■:めちゃくちゃ便利なLEDパネル

5年くらい前にこんなの作ったら便利やろってLEDだけ並べて、回路に不備があることに気がついてなげたもの。今ならなんとかできそうってことで抵抗とトランジスタ をばーっと取り付けて、カードエッジからも表のポートからも入力できるようにしました。これまでは毎回ブレッドボードでled回路組んでたんでクソめんどくさいし抜けるしで散々だったのですが、これで見やすい簡単出力もicに負担がなく万々歳になりました。やったぜ。

まあ回路図書かずにえいやっと作ったので裏はすごいことになってます。ちゃんと整えて、入力スイッチもつけて体裁整えたら普通に便利道具になりそう。クロックパルスも出せるようにしたいですね。

ledドライブのために2sc1815を贅沢に使用してます。
意外と高いですがいつ買ったのか結構あったので奮発。そして使った後で製造終了していたということを知りました。なんという勿体無いことを…



閑話休題。

こう、トランジスタがズラーっと並んでるって壮観ですよね。これだけで電卓とかいつか作りたいです。
こういう風にicにされていないトランジスタ を使用しているPCにPDP-8というものがあったはずです。回路図があるなら作ってみたいですね…部品点数に絶望するんでしょうけど。

このledパネルのおかげで6532のポートを全て管理できるようになったので、デバッグが飛躍的に向上しました。早く作ればよかった…ほんとにこんなシンプルなのにあるとないとじゃ大違いです。

■:パスコンは大事

なんかクロックも暴れてるからなにこれって思ったところで、もしかしてとパスコンをicに追加したらあら不思議。髭足のひどい信号がスッキリしました。さらに不安定だったリセットもちょっと改善。昔のicはとにかくパスコンが付いてましたけど、(今もか)やっぱり大事なんですね。
でもそれでも動きません。ここで一旦お手上げ、こうなったらプログラムがおかしいんやろとコードをチェックしました。

■:アドレス指定は書き方が違います

ca65のアドレス先指定はギコ猫様のところと違ったようで、このせいでどうやら正しいポートにデータが書き込まれていなかった模様。
なのでこれを正しく書き直したのがこちら。

最後にウェイトループを突っ込んで、カウントアップをゆっくりにしてます。ほんとはRIOTのタイマー使えばいいんですけどとにかく出力確認ということで。

そして無事に動いたのがこちら。



この瞬間の快感はあり得ない気持ちよさですね。しばらく動けなくなります。
以上が6503と6532の顛末です。途中でプルアップを忘れていたところなんかは、昔ナムコであるプログラマーが抵抗一本でバグを直したという逸話を思い出しました。確かに、プログラミングがハードにかなり依存するこの頃なら、もしかして信号がうまく伝わっていないのでは?とか、回路がそもそも間違っているのでは…と思い当たる気がします。
これからの予定ですが、RAMとタイマーのチェックをして、使いこなせたら何か装置に仕立て上げたいですね。入力デバイスも作成しなくちゃいけないですし。

それではまた次回。


コメント

このブログの人気の投稿

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

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

74HC595を使ってarduinoの16ビットパラレル出力に挑んでみた