スキップしてメイン コンテンツに移動

GAME80FIXのソース

本家のたけおかさんの方で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言語の偏ってるだけですので 

コメント

このブログの人気の投稿

screen コマンドでの コピーペースト転送の実現について

 以前、GAME言語のあれこれについての中で、GAME80ICなどでZ80-MBC2とのscreenコマンドでのシリアル接続中にソーステキストのコピーペースト転送ができない事に触れていたが、単に使ってる環境に依存した所謂「おまかん」なのだが、回避したければ、素直にwindowsで使うか 若しくは linuxでもwine上でteratermを使えば済む話ではある。だが、我が家に於いては普段使いにできるwindows機など無い。棚の奥を探せばwin7の入った古PCが有るとは思うがボードマイコンとの接続の為だけに引っ張り出してきたいとまでは思わない。そこで ふと考えるにteratermにあってscreenやcu,minicomにないものはと、teratermには、テキスト転送中に行単位、文字単位でミリセカンドのディレイを挟む設定がある。対してlinux系のシリアル接続コマンドにそういった類のモノを知らない(単に自分が知らないだけの可能性もある) 。そこで、duckduckgo検索のサービスである「Duck.AI」に聞いてみた。自分の思いついた革新的なアイデアは大概は先人が既に思いついてる当たり前過ぎるモノというのはいつもの事であっさりと解決策を教えてくれた。

一部の関西の人にしか通じないネタ

たぶん「30年モノ」くらいだと思う?  拡大 値札に注目! ちなみに、ATMEGA32へのファーム書込用のアダプタを作るのに使用。

GAME言語 あれこれ

 MZ-700用にSDカードからMZTファイルの読み書きが出来る基板を入手して以降、MZ用のインタープリタやコンパイラの打ち込みをやってた延長でZ80-MBC2上のCPMで動作するGAMEインタープリタとコンパイラをいくつか発見。GAME-MZは国会図書館のコピーサービスで当時のアスキー誌の記事を入手済で打ち込みMZT化は済んでいるが動作の確認はしてない。 CP/M-80で動作するGAME80言語を3点ほど紹介する。 まず、動作環境は実機としては8Mhz動作のZ80-MBC2にXMODEMでPCからのファイル転送 PC側はFedora40の端末から「screen」コマンドでの接続、比較用に同じくFedora40の端末上で動作するCPMエミュレータ2種類。エミュレータで動作確認がとれたモノを実機に転送して最終動作させてみる流れ。    skyriverさんのGameOnCpm80 端末のエミュレータ上ではコピーペーストによるソースの転送もできるが ファイル読み書き用のコマンドが組み込まれているので、なぜか実機の方ではコピペに転送が出来ないのでありがたい。コンパイラも組み込まれているのでインタプリタで実行確認後、コンパイルもできる。 難点は、コンパイルの際にソース格納アドレスやデータエリア、オブジェクト格納エリアの指定をする必要がある。GAME-MZでもコンパイルの際は普通に必要な事ではあるが、自分の頭の中でシステムのメモリマップを把握しておくのが意外と面倒くさい。 コンパイルで 出来たオブジェクトをCOMファイルにするのにDDTなんかの別ツールでメモリ上に残ってるデータをCOMファイルとして保存するしかない。 COMファイル化とかを視野に入れずインタープリト、コンパイル、実行だけなら使いやすくお薦め。   ファイル操作コマンド例 files ファイル一覧表示 :\\ *.g 拡張子 .g のファイルの表示      \\のみ、\\ *.* での表示は出ない模様(単に自分の使い方が悪いだけかも?)  save(¥>FileName)とload(¥<FileName) 詳細は https://piclabo.blog.ss-blog.jp/CPM80GameCompiler...