投稿

6月, 2018の投稿を表示しています

6503がようやく動いた報告

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

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

先日、ファミコンに直差しできるROMカセットを作るというお話をしました。しかし、いくらハードウェアができたとしてもプログラムがないと動かないただの鉄の塊です。 ■cc65は、僕らに新規の6502コンピューターを作らせてくれない  そこでプログラムを作って書き込もうとしましたが、問題はcc65でROMに書き込める普通のプログラムデータを作成することが非常に困難であるという点でした。  つまりどういうことかというと、cc65というコンパイラソフトは「新規の」6502ハードウェア開発向けには作られておらず、コモドール64やファミコンのエミュレーター向けの開発を考えられているのです。それがわかる仕様として、アセンブラで書いたプログラムをcc65で書き出す際に、どのハードウェア向けに書き出すかという旨を指定する必要があるのです。  もし指定しなければ自動的にコモドール64向けに書き出されます。そして、プログラムの内容がそれに沿っていなければエラーとして判断され、かきだされることもありません。 ■使いやすさの視点の違いから生まれた仕様  もうひとつ、cc65が抱える問題として ORG命令 が本来の動きとして働かないという点です。   ORG命令 とは、そのプログラムがメモリのどの位置から開始されるのかをしていする重要な命令です。これによってジャンプ命令やラベルがまともに使用できるし、6502においてはリセット割り込み(ゲームを開始する際に読み込まれるメモリ)の情報を書き込むメモリの位置を指定しなくてはいけないので、非常に重要な命令なのですがなんとcc65ではほぼ封印されています。ジャンプ先としては読み込まれきちんとコンパイルされますが プログラムをコンパイルした際に指定した場所にプログラムが書き込まれていないのです。非常にバカバカしくなります。 ではcc65にはORG命令の代わりに何が使われているのかというとSEGMENT命令が利用されています。プログラムをSEGMENTで切り分け、その段階ではまだどこからそのプログラムを配置するのかを指定しません。指定はコンフィグファイルという別のファイルにて指定します。つまり、 アセンブラファイルだけではプログラムを作成することができない のです。また、コンパイルした際にこのコン...

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

イメージ
ファミコンのソフトを自作する。まさにファミコン少年なら一度は考えたことのある 暴挙 夢の企画なのですが、古今東西にて公開されている方法といえばそれはもう 「既存のカセットのロム改造」 なわけです。 違うんです。確かにROM焼いて書き込めばできるでしょう。しかしその前に覚えなきゃいけないことがあまりにもガラパゴスすぎます。Mapper1とかいうファミコンのカセットの規格(しかもナムコは例外&プラスチック封印されてたらできない)。おまけに容量が大ききくて改造がしやすいものとなると結構貴重なカセットをぶっ壊すスタイルになります。正直コレクター癖のある私としては「 外道 」に他なりません。やりましたけど。ドラクエ2のカセット犠牲にしました。失敗しましたよチクショーメ!!! なので今回はそんなカセットの端子から基板までALL手作りをしてしまおうというのが規格内容なのです。これならもうカセットを壊す必要はありません。貴重で高いカセットが守られるし場合によっては新しい規格のカセットを作ることもできます。 ⬛︎とりあえずプログラムROMオンリー基板を作ってみる ファミコンのカセットは独特な仕様になっておりまして画像用のROMは別の回路でつながっており、基本的にCPUのROMとは共用しておりません。なので、極端な話普通のパソコンと同じ回路設計であるのならばCPU側のROMだけを組み立ててつないでも問題ないわけです。そしてその回路の一つの部分とか拡張ポートに向かって何らかの信号を送るプログラムを組めば、わざわざキャラクターROMの作成をしなくてもいいわけです。 そこで今回はとりあえずカセットの端子とROMをつなぐ回路を作成しました。 千石電商の地下で入手。前から気になってたけどついに使うときが・・・ 今回使用したこの端子は2.52ピッチのもので、本来のファミコンのカセットよりもピン数が多いです。なので 鉄定規登場。 カッターでごり押しします。ないものは作る。 両側から切り続けて10分後・・・ 無事に切れました。もうなんか紙フェノールの基板とは比べ物にならないくらい堅かったです。なにこれ。 L字型のものを用意すると基板が後でつけやすいです。 それでもってそこに同じピンピッチの二列ピンヘッダーをつなぎます。...