6503がようやく動いた報告

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

[68kMacintoshで]ThinkCでゲームを作りたい その2 Stdioライブラリを使ってみる[プログラミング]

前回、ResEditを攻略したことにより無事画像の表示に成功しました。

しかし、好きな位置に指定して表示する方法など動的配置については未だ不明な部分が多いのと、そもそもC言語自体ろくに理解していないところがあるので今回こちらの教科書を買ってきました。
もうCは主流じゃないんだろうな・・・

ほんとは「苦しんで覚えるC」と「C言語の絵本」というのを併用してやりたかったんですが、BookOffのセールで200円以下だったので買っちゃいました。問題は今回使うプログラミングソフトはこの本が書かれたはるか前のものであること。ここに書いてあるコードが動かない、なんてことが起こりえるかもしれません。

・・・ぶっちゃけると、ANSI特有の部分だけ修正すれば余裕で動きました。
というわけでこの教科書片手にMacintoshPlusでC言語入門をしていこうと思います。

■|stdioを使えるようにする


C言語の入門では兎にも角にもこの<Stdio>という、コンピューターの出入力を管理するライブラリを使用していきます。そのライブラリがないとそもそもできないわけなのですがその結果がこちら。
発見、Stdio。なんか他にも結構あります。

ありましたね〜ばっちり。ただし、この単体では動かないみたいです。今回使用しているThinkCは実は今主流(らしい)ANSIⅡという規格のC言語ではありません。なのでANSIライブラリではなくこの
MacTraps
を読み込むのを忘れないようにします。
そして前回叶わなかった定番の”Hello World”コードを打ち込みます。
文字のフォントなども指定できてけっこうエディタ自体をカスタムできるんですよ。

そしてこの作成したコードファイル、Stdioライブラリを読み込みます。ここで前回ならResEditを使って内容を表示するウインドウのリソース(データファイル)を作らないといけませんでしたが、なんとこのStdioライブラリを利用するとそういったあれこれが一切いらなくなりました。なんだよできるのかよ

そしてコンパイルを無事に通過すると・・・
左下にちっこく表示されました!

ほーんまちっさい

このようにHelloWorldが表示されました!!!あーなんて簡単なんだ(白目)

これでThinkCでも今とほぼ同じ方法でC言語にてStdioを使うことが確認できたので、これから先ほどの教本を元に進めていくことができそうです(多分どっかでまた問題が発生するとは思う。日本語表示できないし。)。

■|大変なのはコードの打ち込みだけではないのがThinkC


 ここまですごい実は時間がかかっていて、ライブラリが入っているフォルダの階層、位置、名前の指定など正しい順番でインストールされていないとそもそもこのプログラムソフトがまともに動かないなど問題が連発しました。
 今だったら全てインストーラーがやってくれるのですが、このころのはファイルをドラックアンドドロップで移動させて入れるスタイルのものもありそういうのは自分でインストーラーの仕事をしなくてはなりません。インストーラーって素晴らしいものなんだなと改めて気づかされます。昔はプログラミングを始めることそのものから大変だったんですね。
 あ、Basicは除きますよ。あれは起動すればすぐ使えたものが多かったので。最初期は違いますが。

このようにきちんと入れた後なら自由にファイルを作ってどんどんプログラムを作成して問題ありません。作ったプログラムがOSを破壊しない限り(笑)
一応今回購入したThinkCの教本の中にこのインストール方法が記載されていました。どのファイルをどのフォルダに入れればいいのかすごく丁寧に記載されていたので主にこれを買ったおかげで解決したところが大きいです。

■|とりあえず入門編をクリアする

今回の実験で30年前のプログラミングソフトでもC言語入門学習を行うことが可能なことがわかりました。構文もほぼ変わりないので、(日本語を使うことができないことを除いて。)問題なければ入門書をクリアしつつグラフィック周りを解明できればゲームを作れるようになる日も近いと思います。
目標はMI68までに何か作品を作り、参加することまたはデジゲー博までに作品を作れること。まあ無理でしょうけど・・・

というわけで今回はここまで。

次の記事:

Apple1 Computerを現代で作ることはできるのか挑戦してみた その1~シフトレジスタ問題~

前回の記事:
[68kMacintoshで]ThinkCでゲームを作りたい その1 ~まずは動かす~[プログラミング]

コメント

  1. こんにちは。
    令和の時代にMac Plusを買って新作ソフトを作ろうと試みていますが、
    同じことを考えている先(変)人を発見し大変驚いています。
    ちなみにThincCですが、どこまで古いバイナリが作れるのでしょうか?
    System1.0の128kで動くようなプログラムが作れると最高なのですが…

    返信削除
    返信
    1. コメントありがとうございます。令和の時代に同じように挑まれる同志の方からコメントを頂けて大変うれしいです。
      問題のThink Cの対応しているバイナリの範囲ですが、正直なところ試してみないとわからないというのが実情です。
      問題になるのが、「MFSとHFS」というフォルダ管理形式の違いで、そこをクリアできればおそらくSystem1.0でも動くのではないでしょうか。(マシンに関わる部分、例えば画面のメモリエリアなどは共通の変数でアクセスするようなので、そこの互換性はあるように書いてありました。)
      聞きかじった情報ですが、当時128kMacのソフトはApple Lisaというコンピューターで開発されていたそうです。しかしながら当然128kMac向けのソフト開発アプリケーションも提供されており、オススメはMacintoshBasicです。ちなみにこのソフトはMacPlusで動かすとクラッシュするため、128kまたは512kで動かすことをお勧めします。
      ちょうど手元に1.0のSystemDiskがあるので、時間がありましたら簡単なアプリケーションを作成して動かしてみるのも面白そうですね。

      削除

コメントを投稿

このブログの人気の投稿

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

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

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