Apple IIc その6[レトロPC]
(2017/12/07) by Satoru Asari


< ページ移動: 1 2 >

11/26の日記のその後です。Cと順番が逆になってしまった気もしますが、BASICでのプログラミングもちょくちょく試しています。

例によって、まずいつものカラーバーを作ってみました(^^;) Apple IIのBASICは、当時の日本のPCのものと比べると、だいぶ雰囲気が違いますね。これまでのNECや富士通などと同じマイクロソフト製のはずですが、基本設計が古い(1977年頃?)からでしょうか。また、Apple IIはグラフィックスのモードもいくつもあって、それによっても違いが大きいようです。描画のコマンド等も、モードによって違うんですよね。まだ全貌は掴めていませんが、ネット情報を元に作ってみました。

<画像:Apple II カラーバー 1> <画像:Apple II カラーバー プログラム 1>

まずこれはLow-Resolutionモードです。40x48という低解像度で、非常に大きなピクセルとなりますが、描画は早く、1秒くらいで終わります。ピクセルというより、もうキャラクターみたいなサイズですね。また、このモードでは、当時としては飛び抜けて多い16色表示(黒を含む)が可能です。

横40は15で割り切れないので、中央と左右それぞれ2ヶ所を2ピクセル、他を3ピクセルとして描画しました。また、矩形を書くコマンドはないようなので、線の描画を繰り返しています。

なお、行番号110のGRという部分がLo-Resモードに切り替えるコマンドです。このモードは本来、40x40のグラフィックスと画面下端のテキスト4行がミックスされたモードですが、グラフィックスのみの40x48にすることも可能です。今回はそちらを使用しました。

このためのコマンドは用意されていないので、行番号120のように特定のメモリに値を書き込むことで設定します。マシン語的なやり方ですね。ちなみにマイナス記号と16302のあいだにスペースが入っていますが(勝手に入ってしまう)数値の-16302のことです。これは10進数で表現したメモリアドレスで、そこにゼロを書き込んでいるわけですね。16進数で書いたほうが読みやすいのですが、参考にした情報がこうなっていました。書き換えても良かったんですが、マイナス値を16進数に変換するのは間違えやすいし、面倒なんですよね(^^;)

行番号230もマシン語ルーチンのコールで、パラメータはアドレスです。これは何かキーが押されるまで待つルーチンで、INKEY$みたいな処理ですね。最後に押されたキーの種類を得るには、また別のルーチンがあるようです。今回は必要ないので、何かキーが押されたら、行番号240のTEXTでテキストモードに戻して、そのあと終了しています。

ちなみに、ソース中の変数への代入文はLETを省略せずに書いていますが、これには理由があります。Apple IIでLISTを実行すると行番号とプログラムのあいだにスペースが2個入って表示されるのですが、LETを省略した代入文を書くと、なぜかそこだけスペースが1個になってしまうのです。理由は分からないのですが、見た目が変なのでこうしました。

<画像:Apple II カラーバー 2> <画像:Apple II カラーバー プログラム 2>

次はHigh-Resolutionモードです。こちらは280x192ピクセルですが、色は6色しか出ません。それでも、中間色っぽい色が多くて良い感じですね。あえてそうしているのではなく、NTSCだからこんな色なのでしょうか? まだよく理解できていません。

こちらは描画に10秒くらいかかります。行番号110のHGR2がHi-Resモードへの切り替えですが、こちらはグラフィックスのみのモードです。ここをHGRにするとグラフィックスとテキスト4行のミックスになるようです。Hi-Resはコマンドが別々に用意されているのですね。線を引くコマンドもLo-Resと全然違います。この統一感のなさはなんなんですかね(^^;)


< ページ移動: 1 2 >


コメント投稿
<1つ前の日記へ
1つ新しい日記へ >
日記トップへ戻る

Powered by
MT4i 3.1