SSブログ
English Version

ポケコン(PC-G850V)でGAME言語 [ポケコン]

 「ポケコン(PC-G850V)の購入」の記事で書いたようにポケコン(G850V)の中古を購入し、パソコンとのファイル送受信もできるようなったのでGAME言語(TK80-BS用のGAME80)を移植してみました。

 かなり前にCASIO製ポケコン(FX-890)GAME言語(C言語で作ったインタプリタとGAME80コンパイラを8086用に移植したコンパイラ)を移植したことがあります(かなり前ですがポケコンポケット通信(2020/01/22 修正)というBBSにアップした)。

 今回はPC-G850VにGAME80のインタプリタを移植してみました。
 FX-890ではハード依存である入出力処理がコンソール入出力イメージのBIOSコールで提供されていたのでポケコンとのI/F部分は割合楽でしたが、G850はコンソール入出力イメージのルーチンが無いので自前でテキストVRAMを持ったりする分、少し手間がかかりました。

 GAME言語のソースの送受信機能をまだ実装していないので手打ちでソースを入れることになりますが、それなりに動くようになりましたので公開いたします。
★2020/01/22 追記 {
 「ポケコン(PC-G850V)でGAME言語(その2)」にTEXTモードの編集内容からGAMEソースに変換するコンバータについて記載しました。
}

 全てアセンブラで記述していて、動作確認もまだ十分ではないのでバグがある可能性もあります。
 暴走した場合、メモリを破壊する可能性もありますので必要なファイル等はバックアップしてから試すようにしてください。
 最悪、ファイルが破壊された場合、こちらでは保証できませんので自己責任でお願いします。

 下のキャプチャがエミュレータでのGAME言語の起動画面です。

GAME言語起動画面


 Twitterにポストした動画付きメッセージも貼っておきます。


 動かすまでの手順は以下のとおりです。

  1. ロード方法
    1. 'BASIC'押下後、"MON"コマンドでモニタモードへ移行
    2. "USER4FFF"コマンドでユーザー領域確保
       GAME言語のソースが0C00Hから保存されるのでこのアドレス値+ソースサイズを考慮し、適当に値を決めます。
       GAMEコンパイラを使用する場合は4FFF以上を推奨
       尚、一度設定すれば次回からはこの操作は不要です。
    3. 'R'コマンドでHEXファイル受信状態にします。
    4. シリアル通信でこのサイトからダウンロードしたHEXファイルをG850へ送信します。
      参考)TeraTermの場合は "Setup" -> "Serial port"でTransmit delayのディレー値を
          1 msec/char    0 msec/line
      に設定すると私の環境では9600bpsの場合でもエラーが発生しませんでした。

  2. 起動方法
    1. 'BASIC'押下後、"MON"コマンドでモニタモードへ移行
    2. "G100"のコマンドでGAME言語が起動します。
    3. GAME言語起動後、ソースを入れて十分に遊ぶ
    4. 'BREAK'キー押下でモニタモードに戻ります。
       GAME言語を終了しても入力したGAMEソースはメモリ上に残っています。
       再度、GAME言語を起動した際に
         A== A:0)=0 ==
       を実行すればメモリ上のソースが復活します。但し、先頭行の行番号が256以上の場合、行番号の上位バイトがゼロになります。

  3. GAME言語起動中の主な操作キー
    • 'BREAK'
       GAME言語を終了し、モニタモードに戻ります。
    • 'SPACE'
       画面表示中に押下すると表示がポーズされます。
       ポーズ後、何かしらのキーを押すことでポーズが解除されます。
    • 'TAB'
       プログラム実行中に押すことでプログラムが中断します。
       文字列表示処理でキーセンスしているので何も表示しない場合は、'TAB'キーが受け付けられないので、画面表示がない処理では""で長さ0の文字列表示を入れておくと中断できるようになります。
    • '2ndF'と'CAPS'キー
       現時点では対応していません。
       ★2020/01/22 追記
        '2ndF'と'CAPS'キーに簡易的な対応を実施済みです。

  4. メモリマップ概要
     オリジナルのインタプリタの開始アドレスは8600Hですが、G850では上位メモリはROMなので開始アドレスを0400Hに変更しています。
     インタプリタ内の処理及びワークをそのまま平行移動しているのでコンパイラを移植する場合、コンパイル時の呼び出し先やメモリ参照先のアドレスを前述の開始アドレスの変更分ずらせば動作するはずです。

    addresscontent
    0100-0101 初期化処理へのジャンプ命令
    0102 LCD表示X位置(0-23)ここを書き換えて表示位置指定が可能 
    0103 LCD表示Y位置(0- 5)同上
    0104 画面クリア処理(>=$104 で実行可能)
    0107 GAME言語の終了(モニタへ戻る) 'BREAK'ボタンでも可能
    013D-0380 G850用の表示及びキー入力等の処理
    0400- GAMEインタプリタ本体
    0C00- 起動後のソース保存開始アドレス


【ダウンロード】

GAME_G850_V002d_20200117.zip
GAME_G850_V002c_20200116.zip(旧バージョン)

【履歴】
・2020/01/17 Ver0.02d GAMEインタプリタをチューニングし若干高速化
・2020/01/16 Ver0.02c GAMEインタプリタをチューニングし高速化
・2020/01/15 Ver0.02b GAMEコンパイラを同梱
・2020/01/14 Ver0.02a 'BS'処理修正
・2020/01/14 Ver0.02 'CAPS'及び'2nd'キーに対応しました。
・2020/01/12 Ver0.01 by skyriver


【参考にさせて頂いた主なサイト】
  • akiyan.com 「SHARP PC-G850 解析資料」
    「BIOSルーチン」や「ワークエリア」等、G850関連の情報が豊富に記載されています。
  • 秋日和
    「ぽけこんのほん2(0.97MByte)」にキーセンス方法が記載されいて非常に参考になります。
     私もアセンブラでI/O直接読込みをやってみましたがシステム側のタイマ割込みで常にセンスされているようで安定した読込みができませんでした・・^^;
  • ポケコン PC-G850の解析とソフト集
    ワークエリアやI/O等の情報が参考になりました。
  • POKE COM
    入手からクロス開発環境まで広範囲な情報がまとめられています。


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

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

nice! 0

コメント 0

コメントを書く

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