Apple2のローレゾグラフィックにPOKE命令で書き込むには
どうも。Apple2のプログラミングにドはまりしているものです。さて、ドットを矢印キーで動かすことに成功し、大きなマリオの絵も配列とFOR文により移動させることに成功しましたが、いかんせんBASICで書き換えると正直アニメーションにならないのです。遅すぎて。CPUがMhzの時代がいかに遅かったのか痛感するいいきっかけになりました。(仲間に見せて大笑いしました)しかし、せっかく頑張って書いた絵もこうなっては… そこで、Apple2に備わっている機能の一つである「ページ切り替え」とPOKE命令でどうにかできないかと試行錯誤した結果どうなったのかを今回は紹介しようと思います。 ■そもそもPOKE命令とはなにか? POKE命令とは、「パソコンのメモリの番地を指定してデータを直接書き込む」という動作を行います。「どこどこのこのメモリにこのデータを書き込め」という風に書き込むので、Apple2の場合は POKE 番地,データ と書き込むことにより指定のメモリ番地にデータを書き込むことができます。 そして、こちらがapple2のメモリマップというどこに何のデータが書かれているかが 一覧になっているサイト です。この中に、pageとpage2というものがあるのですが、ここのメモリ範囲を1ページ2ページと扱うことにより高速に画面を書き換えることができるという機能があります。 そこでこれを利用して2ページ目のメモリに絵のデータを書き込んでしまおう!というわけなのですが、実はこの「2ページ目」の扱いが絵だけに割り当てられていなかったのです。というのがこちらの画像をご覧ください。 POKE 49237,0と打ち込むと表示できる「2ページ目」 このようにプログラムデータが書き込まれてしまっているのです。つまり、重要なデータが書き込まれているこのエリアのメモリを画像書き換えしてしまうと次に何をするかというデータが消えてしまい、フリーズして復帰不可能!それまで頑張って書いたプログラムはすべて消えてしまいます(何回か消しました!) また、それまで色のデータを書き込む際には PLOT Xの位置,Yの位置 と打ち込んでいましたが、メモリーに直接書き込むとなる場合は全く異なります。まず、メモリーとドットの位置は39バイトごとに縦に16ドット分(