本家のたけおかさんの方でGC80の公開を再開していただけたようなので こちらも改変したソースの公開をしようと思う。
ファイルは gc80_fix-source.zip おなじみの4sharedのサーバーです。
cp/m-80用 GAME-80コンパイラ GC80について
元のアーカイブから、必要なファイルだけ抜き出して再構成してます。
makefileとかありましたが、linuxなどの環境でビルドできる訳でもないので抜きました。
普通にcp/mの環境でhi-tech-Cのあるドライブ上に、
gc80.cとgame80.GGGファイルを持ってきてコンパイルすれば使えます。
linuxの端末上からhi-tech-Cでビルドする場合
私の環境だと、エミュレータはcpmとcpm32があるが cpm32経由でしかビルドが出来ない。
エミュレータcpmはlinux上のドライブを、そのまま地続きの仮想ドライブとしてcpmのA:に仮定して動作してくれるが
hi-tech-Cのファイル読み取りのやり方がオーソドックスなCPMのファイルアクセスとは違うようで
ライブラリの一部が読めないとエラーになる。
A>c309-17 gc80_fix
Hi-Tech Z80 C Compiler (CP/M-80) V3.09-17
Copyright (C) 1984-87 HI-TECH SOFTWARE
Updated from https://github.com/agn453/HI-TECH-Z80-C
error: cannot find fp entry for FCB at dbae fctn 35, FCB named P1 COM
C309-17 COM d49b
一方、エミュレーターcpm32は
立ち位置的にはwineに似た動作なので
~/cpm_works/hi-tech-C$ ./cpm32 -h C309-17.COM gc80_fix.c
などと、linuxのシェルからビルドできてしまう。
これで GC80_FIX.COMができているので
cpmのコマンド処理系が「_」(アンダーバー)を受け付けないのでgc80_fix.comからgc80fix.comに名前を変えて
実行させると
A>gc80fix maze
GAME 8080 Compiler (M80)V.0.0
Copyright (c) by S.Takeoka
Pass 1 end
Pass 2 end
A>
無事コンパイル終了
maze.asmファイルが出来ているので
A>dir maze.*
MAZE .G | MAZE .COM | MAZE .PRN | MAZE .ASM
asmでアセンブル
A>asm maze
CP/M ASSEMBLER - VER 2.0
S ;140 X=0 !=20
S ;170 Y=0 !=20 Y=T !=20
S ;210 X=F Y=G !=20 P=S*G+F
S ;230 P=R !=19
S ;260 $=$1B "[2J" X=0 Y=0 !=10 $=$1B "[36m"
S ;350 X=S-1 Y=T-1 !=10 $="@"
S ;360 !=30
S ;390 !=9 "+" $=8 Z=%((Z+2)/4)
S ;440 !=30
S ;480 !=9 "+" $=8
S ;550 !=30
097C
005H USE FACTOR
END OF ASSEMBLY
無事、アセンブル完了
A>dir maze.*
MAZE .G | MAZE .COM | MAZE .HEX | MAZE .PRN
MAZE .ASM
hexファイルが出来ているのでローダでcomファイルに
A>load maze
FIRST ADDRESS 0100
LAST ADDRESS 097B
BYTES READ 087C
RECORDS WRITTEN 11
あとは普通に
A>maze
と打てば、実行される。
※ちなみに maze.gに途中から抜ける キー入力などは組み入れてないので止めて終了などは一切出来ない。
エミュレータ側で、リセットなり割り込みなりを仕込まない限り止まれない。
gc80fixの場合、若干速度が落ちますがescキーで強制終了するようにランタイムパッケージに組み込んでます。
Z80-MBC2のCPM環境でのgc80fixのビルド、maze.gのコンパイルなども検証済みですので
たぶん、問題はないと思う。
ここ数日、GAME言語関連ばかり上げてますが、GAME言語だけが好きなワケではないので偶々、貯めていたモノがGAME言語の偏ってるだけですので
コメント
コメントを投稿