6503がようやく動いた報告

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

AppleWin でApple2のゲームプログラミングに挑む

Windows10でも動きます。

ひょんなことからAppleWinというApple2のエミュレーターをダウンロードしたので、標準でついているBASIC言語でなにかゲームを作れないかと思案したものの当時のプログラミング方法について書かれた資料が非常に少なかったうえApple2でプログラミングする方法について書かれた日本語サイトも少なかったので記憶の整理がてら書いていこうと思います。

CATALOG:フロッピーディスクに描かれている内容を見る

SAVE セーブデータ名:フロッピーにプログラムデータを名前を付けて保存
    書き方:SAVE PINBALL

LOAD データ名:指定のデータを読み込む
    書き方:LOAD PINBALL 

IF文条件式の書き方

「~かつ~のとき」と書きたいとき
IF ( 条件 ) AND ( 条件 ) THEN 飛ぶ先なり結果

DATA文 :DATA 1,2,3…
このように書けば、複数のデータを一度に描ける。キャラのドット情報やマッピングに必須。

READ文: READ 変数
先ほどのDATA文からデータを読み出す命令。複数のデータも、配列とFOR文を書けば管理は簡単だが、指定の場所のDATAを読み出すことはできないようで。

FOR文: FOR I=0 TO 15 STEP 2
ほとんど通常のFOR文と変わらないが、通常なら1++などと書くところをSTEP 数字 と書くところに注意。

一応、Apple2 program reference と検索すればそれなりに情報は出てきます。ぜひ往年のプログラムに浸るもよし、昔のプログラムに浸ってみるのもいかがでしょうか?
ちなみに私は
画面上の緑と白のブロックを取ればクリア。青いブロックが操作するキャラ。

プログラムを実行すると、マリオの画像が左から右へ流れる。
といったものを作ってみました。うえのものはパックマンのようなものを作ろうと思い、まずはマップの表示とキャラクターのあたり判定を確認し、二枚目は複雑な画像の表示と座標の移動を実験しました。どちらもとりあえず目的は成功しましたので満足満足(・ε・)
しかし1MhzのCPUの世界なので、非常に遅くこれではゲームにならない…やはりアセンブラに手を出すしかないみたいですが…え?Apple2には画面が二つある?どういうこと?
というわけで、次回はApple2の裏ページとPEEK,POKEに挑んでみようと思います。
でもBASICしか使えないのに、どうやってアセンブラを書くんでしょうね…

コメント

このブログの人気の投稿

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

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

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