6503がようやく動いた報告

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

[テキスト英語は]Macintosh Plusでプログラミング 2日目[さすがにきつい]

■|プログラミング2日目。既にテキストは半分読めないぐらいつらい。


忘備録も兼ねまして、1日目に続き2日目の内容をまとめておきます。ついでに、実際の入力画面も添付しておきます。いよいよソフトを作ったときにここのページを振り返って、ああこんなにすごいものができるようになったんだと実感したいので(笑)

2日目・入力コマンドその1


関数LENのサンプルプログラム。しかし重要なのは真ん中の「LINE INPUT」だったりする。
LINE INPUT():指定したString型変数の中に入力した文字列を代入してくれます。また、変数の前に””で囲った文章を置いておくとそれを表示してくれます。その場合、必ず””と変数の間には「」を入れなくてはならないことに注意。
最大32,767文字を取得できるそうです。もちろん日本語も取得できますが、表示はできるけど何文字かもカウントできないしメッセージ表示に至っては長すぎて読めませんという謎の警告を受けて実行させてもらえません。また、テキスト内のメモにも日本語が使えません・・・OSは日本語なのに、プログラムの中はすべて英語とは。非常にやりにくいうえに不親切・・・!

実行画面。入力が終わるとすぐにプログラムが終わってしまうのでまだ味気ない。

WHILE-WEND:この間に囲った文章はWHILEの後に書かれた条件文を満たさない限りWENDとの間をループし続けます。

おなじみの関数ではあるが、{}がないためWENDで終わりを指定しなくてはならない。
WENDとの間をループするのをわかりやすくするためにTABキーで行を下すのがおすすめですが、正直ラベル指定のGOTO文のほうが出番は多いっちゃ多いです。ここの間でプログラムがすべてループしてしまいますから。処理が多いFOR文みたいな扱いでしょうか。いまでもWhile文はC#などでもあまりメインでは使いません(´・ω・`;)

UnityなんかではUpdate関数があるからもうループなどもあまり気にしないですからね。こういうプログラムはきちんとループを指定してあげないとそのまま実行して終わりなので、ゲームプログラミングとはなんだか勝手が違って面白いです。でもいつかこれでゲームを作ろうと考えてはいるんですけどね。

内容としては、ある月の曜日の数を聞いてくるというもの。入力した値によって帰ってくる分が違うのだが、内容はちょっとイラっとくる文章も多い(笑)

VAL:String型の数字を整数型の変数へ型変換してくれる。結構大事。
DY=VAL(DY$)
といった感じで使う。また、整数型だけでなく&H64(16進数)を100にして返すなど、指定された文字で変換内容も変えてくれます。
”Correct”といった瞬間に即編集画面へ戻るので、あまりにも味気ないクイズに感じる・・・
この変数を使えば、16進数だと入力しやすいとか、2進数だと入力しやすいだとかの問題も解決できそうです。ただ、ちらっと先読みしてみたところ画面の描画はただ数値を入力してやれば解決するというわけではないようです。うーん、これがMSBASICがいろんなところで恨みを買っている理由か?

ひとまずここまで。今使っているBASICのテキストも第二章に入り、急に使っている英語が難しくなったために読むのも一苦労でなかなか進みません。特に今回のVALは鬼門で、この変数の意味を理解するのに1日もかかってしまいました。(たぶん型変換の意味なのだろうなというのはわかっていたのですが、聞いたことのない英単語のラッシュで・・・)

次回もなんだかよくわからない関数が続々登場します。画像表示やtoolboxなどはもうしばらく先になりそうです・・・とほほ。

コメント

このブログの人気の投稿

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

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

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