« 写真日記241 | メイン | SwissMicros DM-16 »

2017年12月 7日

Apple IIc その6

カテゴリー: レトロPC

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と全然違います。この統一感のなさはなんなんですかね(^^;)


更にApple IIeの後期型以降のモデル(?)にはDouble High-Resolutionモードというのがあって、540x192の16色表示ができるそうです。私のIIcも対応しているはずですが、残念ながらまだBASICでの扱い方がよく分かりません。コマンド等はなく、直接VRAMに描かないといけないのかもしれません。ネットを検索すると、ディザリングを効果的に使った、ちょっとした写真のような画像もたくさん見られます。時代を考えると、なかなか凄いですね。


以上、まだ短時間しかいじっていませんが、はっきりいってApple IIのBASICでのプログラミングは苦痛です。まず、なんといってもスクリーンエディタがありません。修正には行単位で打ち直す必要があります。また、RENUMBERコマンドがないので、プログラムの改変がもの凄く大変です。DOS 3.3ベースのBASICには外部コマンドとしてRENUMBERがあったようですが、なぜか後継のProDOSではなくなっています。どういうことなんですかね。

ただ、Apple IIにはサードパーティ製のフルスクリーンエディタがいくつか存在し、そういったものを使えば良いようです。現在ではフリーになっているものもあり、RENUMBERを含め、便利な編集機能がたくさんあります。実は既に入手して試しているので、機会があればまた書いてみたいと思います。実際、そういうのを使わないとやってられませんからね。


Apple II 液晶テレビで80桁表示なお、最近は寒くなってきたので、主に自室の液晶テレビに繋いで、こたつで作業しています(^^;) 上の写真もそれを撮影したものです。古い26型のテレビなのですが、40桁表示なら不満なく見られます。ただ、80桁表示は思ったより汚いですね。字はほとんど読めません。左の写真はシャッタースピードが遅いせいか潰れて意外とマシに見えますが、実際にはもっと明暗の差がついた表示になり、非常に見づらいです。

純正のモニタもコンポジット接続のはずですが、ちゃんと読めるんですよね? 前回までの私のPC用の8インチモニタ(アップスキャンコンバータ経由)でも、綺麗とまでは言えないけど読めるのですが、何が違うんでしょう。I/P変換とか、Y/C分離とかのアルゴリズムの差でしょうか? 機会があれば他のテレビでも試してみたいと思っています。

でも、コンピュータをテレビに繋いで使う最大の問題点は、テレビを見ながら作業ができないことですね(笑)



コメント

よろしければコメントしてください。

※メールアドレス以外の項目はこのページ上に公開されます。個人情報などの入力にはご注意ください。




保存しますか?


「投稿」ボタンを押してから書き込み完了までに多少時間がかかる場合があります。ご了承ください。