Apple II リモート開発環境の構築

Apple II の開発環境といっても、昨今では実機を使わずにクロスアセンブラとエミュレータを使ってモダン OS 上で作業することが多いようです。しかし下記のような自作ハードウェア(拡張カード)の対応ソフトウェアを開発する場合は、エミュレータ上で完結するわけにはいきません。

基本的にはモダン OS(Win/Mac/Linux)上でコーディングを進めつつ、ビルド毎にバイナリを Apple II 実機に送って実行、テストを繰り返す作業が必要です。モダン OS と Apple II 実機を往復する一連の操作がスムーズに行えるハイブリッドな環境が求められますが、この際に役立つツールが Apple II Pi(David Schmenk 氏作)です。

Apple II Pi は Apple II と Raspberry Pi をシリアル回線で接続して双方の機能を融合するシステムで、シリアルインターフェイスまわりのハードウェアと Apple II / Raspberry Pi 双方のソフトウェアで構成されます。ハイブリッドな Apple II 開発環境の構築という観点からは、Apple II Pi 仮想ストレージを使ったファイルのやり取りが中心的な機能となります。また Apple II コンソールを Linux 端末から操作する機能(a2term)も便利です。

この投稿では Apple II Pi を中心にして VSCode エディタなども利用し、モダン OS(ここでは Mac を使用)から Raspberry Pi と Apple II を操作することで Apple II のリモート開発環境を構築する方法を検討します。なおターゲットの実機には Apple IIe / ProDOS を使用します。

リモート開発環境の基本構成

開発環境の全体構成を下図に示します。

Raspberry Pi の構成

上図に示したように多くのツールが Raspberry Pi 上に配置されます。主なツールについて以下に説明します。

Apple II Pi は シリアル通信カード、Apple IIe 側の a2pi ソフトウェア、Raspberry Pi 側の a2pid ソフトウェアおよび個別のコマンドツールから構成され、2 つのシステムを連携するいくつかのサービスを提供します。

Apple II Pi が提供する最も重要なサービスが仮想ドライブです。Raspberry Pi 上に保存されるディスクイメージファイルに基づき、Apple IIe から見ると Apple II Pi カードが刺さっているスロットに 2 つのブロックデバイスが現れます。

a2term も a2pid が提供するサービス(を利用したアプリケーション)です。a2term は Raspberry Pi 上で実行される通信ソフトウェアですが、接続先は Apple IIe の ProDOS コンソールであり ProDOS や Applesoft Basic のセッションが Raspberry Pi 端末上で利用できます。

CC65/CA65 は 6502 用 C コンパイラ / アセンブラです。開発は主にこれらの言語を使って行います。なお Applesoft Basic も開発用言語として使用できます。

AppleCommander ツールは仮想ドライブボリュームの実体である Raspberry Pi 上の *.po ディスクイメージファイルに対して、Basic プログラムや CC65/CA65 で作成した Apple II 実行ファイルを読み書きするために使います。

Apple IIe の構成

Apple IIe は Apple II Pi 専用の ProDOS ディスク A2PI-1.7.PO から起動します。このディスクは通常通り S6, D1 から読み込んで ProDOS を起動しますが、その際に a2pi ソフトウェアを ProDOS システムに常駐させます。

a2pi ソフトウェアは Apple II Pi カードのシリアル通信を管理すると同時に、Apple II Pi カードが刺さっているカードスロット(例えばスロット #2)上で D1、D2 の 2 つの仮想フロッピードライブをエミュレートします。またコンソールやジョイスティックの状態もシリアル通信経由で Raspberry Pi へ送ります。

PC(Win/Mac/Linux)の構成

Mac(または他の適当な Win/Linux PC)は必須ではありませんが、Raspberry Pi との間を SSH 接続して VSCode Remote Development を実行することにより PC のデスクトップ環境で Apple II プログラミングが行なえます。a2term を VSCode Remote Development 内の端末パネルで起動すれば、Apple II ProDOS コンソールを PC 画面上に持ってくることもできます。Mac 上の VSCode からプロジェクトを編集、実行している様子が本稿冒頭の画面です。

リモート開発環境での操作

プログラムの作成・実行の手順はおおむね次のようになります。各手順は Raspberry Pi に対する操作です。

  1. C(CC65)、アセンブラ(CA65)、Applesoft Basic を使って Apple II プログラムを記述します。Basic プログラムはテキストファイルとして記述できます。
  2. CC65/CA65 ソースコードを Apple II 用実行バイナリファイルにコンパイル(アセンブル)します。バイナリファイルは Raspberry Pi のファイルシステム上に保存されます。
  3. AppleCommander ツールを使ってバイナリファイルを *.po ディスクイメージに書き込みます。Basic ソーステキストファイルを Basic トークン形式に変換して書き込むことも可能です。
  4. 作成した *.po ディスクイメージファイルを a2pid の仮想ドライブとしてマウントします。作成したプログラムが Apple IIe からアクセスできるようになります。
  5. a2term を使って Apple IIe 上で RUN ないし BRUN コマンドを実行します。

サンプルプログラムの実行

上記の操作手順をみれば想像がつくと思いますが、Makefile やシェルスクリプトなどを組み合わせれば一連の過程をほぼ完全に自動化できます。ターゲット環境の選択(実機か、エミュレータか)など複雑な操作を行おうとすると多少工夫が必要になりますが、少なくともビルドと実行を繰り返す作業は比較的容易に自動化、省力化できます。次の動画では 3 種類の言語による HelloWorld プログラムをビルドし、Apple IIe 実機に送って実行する操作を Makefile とシェルスクリプトを使って自動化しています。

本稿では個々のツールの設定詳細に触れませんでした。今後個別に検討しようと思います。

コメントを残す