SSブログ
English Version

パピコン(PC-6001)でGAME言語 [PC-6001]

 「ポケコン(PC-G850V)でGAME言語」の記事ではポケコンにGAME言語を移植しましたが、今回はパピコンにTK-80BS用のGAME80インタプリタを移植してみました。

 PC-6001の実機を所有していないのでGAME言語の移植は予定していなかったのですが、今ではパソコン上でエミュレータ(PC6001V)が動くようなので実機ROM無しの状態ではありますが、GAME言語のインタプリタを移植してみました。

 コンソール入出力関連の処理はN60-BASICとROM内ルーチンで互換性のあるPC-6001用互換BASICの処理をコールする形で実装しました。

 画面表示は1075Hの表示ルーチンを使用していますが、この処理はバックスペースでカーソルが移動しないため(実物もそうなのでしょう)、BSキーについては内部的には1文字キャンセルしていますが画面表示上はカーソルが戻らない状態です(GAMEのエディタを使って画面上でソース編集することはあまりないと思うので今後対応するかは未定)。  その代りカーソルキーでカーソルを左右に移動して1ラインのスクリーンエディタのように使えます
★2020/01/28 変更
 BSキーとコントロールXでの入力キャンセルに対応しました。

 また、キー操作としてはスペースキーでポーズ(その後任意のキーで再開)、エスケープキーで中断です。

 実装方法としては拡張ROMの 4000Hからのアドレスに配置したのでこのページからダウンロードしたファイルをエミュレータで拡張ROMとして設定すれば下図のようなGAME言語のインタプリタが自動起動するはずです。

PC-6001でのGAMEインタプリタ起動画面


 Twitterにポストした動画付きコメントも貼っておきます。


 上の動画で実行しているサンプルソースは以下の通りです。VRAMの内容を参照して方向を変更しています。

サンプルソース(GAME言語)
1' PC-6001 sample source
2'  ver 0.01 2020/01/27 by skyriver
100 VRAM=$8200 X=32 Y=15 O="1"
110 B=0 C=0
120 M=1 N=0 $=12
130 @
140  @
150   D=B E=C
160   VRAM:C*X+B)=O O=O+1 ;=O>"z" O="1"
170   B=%((B+M+X)/X)
180   C=%((C+N+Y)/Y)
190  @=(VRAM:C*X+B)<>" ")
200  B=D C=E
210  ;=M<>0 N=M M=0 #=230
220  ;=N<>0 M=-N N=0
230  B=B+M C=C+N
240 @=(VRAM:C*X+B)<>" ")


 今回はROMカートリッジの前半(4000H-5FFFH)に入れる想定なので元版のインタプリタのコードとワークをそれぞれ異なるオフセットで移動しました。

 メモリマップの概要は以下のとおりです。

No.addresscontent
14000-4001'A'+'B'(auto exec mark)
24002-4003初期化処理のエントリアドレス
34004exit処理
44006locate処理(変数Aに位置情報 High:ライン、Low:カラム)
5400C-40FF初期化処理など
64100-47DFGAMEインタプリタ本体
76666-7F9EGAMEコンパイラ
88406-84FFGAMEインタプリタ用ワーク
98500ソース保存アドレスの初期値

★2020/01/28 追記 Ver0.02でメモリマップにコンパイラを追加


【ダウンロード】
GameCompV002_20200128.zip
GAME_V001_20200127.zip(旧バージョン)


【履歴】
  • Ver 0.02 2020/01/28
    BSキー対応、コントロールXキー対応、コンパイラ同梱、詳細はこちらを参照
  • Ver 0.01 2020/01/27 初版 公開

★2020/02/01 追記
 GAMEソースをリナンバ処理するGAMEのソースリストがここにあります。


【参考にさせて頂いた主なサイト】


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。