ホーム > 日記 > C言語でApple IIの開発をしてみる(Aztec C)

C言語でApple IIの開発をしてみる(Aztec C)

概要

なんとなくApple IIで自作画像を出してみたかったのですが、イチから自分でやるのは面倒臭そうなので、色々調査してみたところ、Aztec Cという開発環境で比較的簡単に画像を表示出来そうな事がわかりました。

以下、Apple IIで独自画像を表示する方法……というか、Aztec Cの開発環境を構築し、そのついでに独自画像を表示するための手順になります。

(かなり限られた人しか面白くない記事ですみません)。

ダウンロード

 

Aztec Cクロスコンパイル環境

http://www.aztecmuseum.ca/compilers.htm#applecross

上記から「AppleX ProDOS Distribution rebundled for Windows XP」をダウンロードし、どこかに展開します。ここでは仮に「D:¥AppleX」に展開したものとします。

 

DOSBox

https://www.dosbox.com/download.php?main=1

上記から「Windows 0.74」をダウンロードします。
元々Aztec CはWindows XPで直接実行できるはずなのですが、古くなり、DOSBoxをかまさないと動かないようなので、こちらが必要になります。

 

環境設定

DOSBoxを起動する

普通に起動してください。

 

Aztec Cのフォルダをマウント

> mount c D:¥AppleX

のように入力すると、Cドライブに先程展開したAztec Cのフォルダが見えるようになります。

 

環境変数の設定

上記のようにCドライブに環境を割り当てた場合は、

 

> C:
> AZTEC C:

と、する事で、各種環境変数が設定されます(Cドライブに移動してからAZTEC.BATの第一引数に、Aztec Cのフォルダルートを指定)。

 

ちゃんと動いているかテスト

上記に続いて、

> cd \SAMPLES¥DEMO
> make

で「DEMOCLR.SYS now created!」という表示が出れば環境設定に成功しています。

もし表示がされずエラーが出る場合は、環境変数の設定を間違っている可能性が高いので、見直してください。

 

 

Apple II用の画像の準備

さすがにApple IIで絵を描くのはしんどいので、Windows/Macにて描いたものを変換しましょう。

テキトーなペイントソフトなどで「280×192」サイズで描けば良いのですが、このサイズ(いわゆるハイレゾサイズ)では、だいぶ色の使い方に制限があるので( このへん参照→ https://en.wikipedia.org/wiki/Apple_II_graphics )、使える色をあまり隣接させずに描く、といった工夫が必要になります。

そして画像が出来たら、256色インデックスカラーのBMP形式で保存します(24bitカラーでも良さそうなのですが念の為)。ファイル名は英字8文字以内にしておくと良いでしょう。

次に、上記のAztec Cのフォルダにある「AppleX¥PROGRAMS¥HGR¥」フォルダの中に、作成した、変換元の画像を置きます。

そしてDOSBoxにて上記のフォルダ(c:にマウントしてある場合は「C:¥PROGRAMS¥HGR¥」)に移動した後に、

> BMP2RAG (BMPファイル名)

と入力する事で、Apple IIで使える画像が、複数、拡張子を変えた状態で出力されます。

.BIN → 標準形式
.BOT → 280×192のフル画面画像
.TOP → 画面下部4行ぶんのテキストエリアを除いた280×160の画像
.RAG → BOT、TOP以外のサイズの画像
.RAX → BOT/TOP/RAGをランレングス圧縮したもの

……という感じのようです(多分)。BOT/TOP/RAGは、画像サイズによって出力されるものが変わるため、実際にはこの中のどれか1つが出力されます。
今回は280×192で作ったので、BOTが出力されているはずです。

RAXは、いわゆるランレングス圧縮したファイルですが、モノによってはサイズが増えるので、あまり縮んでいない場合はBINかBOT/TOP/RAGを使うのが良いでしょう。

ここでは幸い縮んで、RAXが使えるものとします。

 

変換に使ったテキトーな画像

 

RAXを読むプログラムを作る

イチから作るのは面倒臭いので、画像表示用のデモプログラム「SAMPLES¥DEMO2」を書き換えてみましょう。

上記フォルダ内のDEMO2CLR.Cを開きます。
そして、28行目の clearscreen(); の下に、

raxlode("GRP.RAX",0,0,3584,raxreadbuf);
と、追加し、更に、18行目あたりに、
unsigned char *raxreadbuf = (unsigned char *)4192;
と、記載します。これは、アドレス4192(0x1060)からの3584バイトをバッファとして使い、rax形式の画像ファイルを、0,0の位置に描画する、という事です(おそらく)。
テキトーに拾ってきたアドレスをそのまま入れているので、下手するとメモリが壊れる気もしますが、まあ動いているので良しとします。

 

この状態で、DOSBoxでフォルダ「SAMPLES¥DEMO2」に移動して「make」とする事で、問題なければ「DEMO2CLR.SYS」というファイルが出力されます。これが実行ファイルになります。

 

ディスクイメージに実行ファイルを書き込む

手順がやたら多いのですが、あと少しです。

 

AppleCommanderのダウンロードと配置

https://github.com/AppleCommander/AppleCommander/releases

上記から、 AppleCommander-ac-1.4.0.jar をダウンロードします(バージョンは最新でも良いはずですが、とりあえずこのバージョンにて確認)。

AppleCommander-ac-1.4.0.jar を、例えば D:\AppleX あたりにコピーします。

AppleCommanderは、Appleのディスクイメージを操作する事が出来るツールで、上記のものはコマンドラインバージョンになります(GUIが好きな人は上記ページから落とせます)。

 

ディスクイメージの準備

今回必要なApple IIのディスクイメージは、Aztec C環境の「DISKS」フォルダに入っています。

今回は PRODOS.dsk を 「SAMPLES\DEMO2」にコピーして使いますので、上記フォルダからコピーしてください。

 

javaのインストール

PCにjavaが入っていない場合は、テキトーなバージョンを入れてください。

自分の場合は JavaSE 1.8.0_161が入っていたのでそのまま使います。

入っていない場合は多分このへん↓からダウンロードし、インストールしてください。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

AppleCommanderでファイルの削除と追加

AppleCommanderについてはJavaのツールなので、DOSBoxではなく、普通にWindowsのDOS窓にて実行します(めんどくさい)。

java -jar D:\AppleX\AppleCommander-ac-1.4.0.jar  -ls PRODOS.dsk

とする事で、PRODOS.dsk の中に入っているファイル郡を表示できます。もしこの中に「DEMO2CLR.SYS」が入っていた場合、重複して追加されてしまうので削除が必要です。

java -jar D:\AppleX\AppleCommander-ac-1.4.0.jar  -d PRODOS.dsk DEMO2CLR.SYS

これで削除出来ます(-dはdeleteの意味)。

そして、下記コマンドで、ディスクイメージへのファイル追加が出来ます(-pはputの意味)。

java -jar D:\AppleX\AppleCommander-ac-1.4.0.jar  -p PRODOS.dsk DEMO2CLR.SYS sys < DEMO2CLR.SYS

また、画像をディスクイメージに入れていない場合は、

java -jar D:\AppleX\AppleCommander-ac-1.4.0.jar  -p PRODOS.dsk GRP.RAX bin < D:\AppleX\PROGRAMS\HGR\GRP.RAX

として、先程作ったRAXファイルを追加してください。

画像を更新する場合は、

java -jar D:\AppleX\AppleCommander-ac-1.4.0.jar  -d PRODOS.dsk GRP.RAX

として、ファイルを消してから、上記のファイル追加を行ってください。

 

実行

これで準備完了です。該当のディスクイメージをApple IIで起動すると、PRODosが起動した後に、実行するファイルの選択画面になるので、「DEMO2CLR.SYS」を選ぶと、BMP2RAGで変換したGRP.RAXファイルが表示されます。

表示例

 

今回は画像を表示するだけでしたが、C言語でApple IIの開発をする環境がこれで整った事になるので、他にも色々と面白い事が出来ると思います。

Apple IIでC言語なんて楽をしすぎだ!という方もいる気もしますが、6502を直接書く気力が無い人には良いのではないでしょうか。

 

お疲れさまでした!

 

カテゴリー: 日記 タグ: