ポケコン(PC-G850V)でGAME言語(その2) [ポケコン]
前回の「ポケコン(PC-G850V)でGAME言語」の記事で書いたようにポケコン(G850V)でGAME言語が動き出しましたがパソコン側からポケコンへGAMEソースを渡す手段がありませんでした。
今回はTEXTモードで編集した内容をGAMEのソースに変換することでこの課題を解決しました。TEXTモードでの編集内容をGAME側に持ってこれるようになると
問題はTEXTエディタで編集中の内容がメモリの何処にあり、どんなフォーマットなのか・・ですが、GAME言語が動くようになったのでメモリ上の特定パターンの検索もGAME言語を使えば容易にできます。
自身の機能を使って機能拡充していくので、ある意味ブートストラップ的な開発と言えるかもしれませんw
TEXTエディタで「10 SKYRV」+CR の一行だけを入れた状態でGAME言語でメモリ検索したところ、メモリ上では下記のような状態で配置されていました。
2067HのFFHの前と2072HのFFHの後は見るからにプログラムコードのようですね。
このことからフォーマットは次のようになっているようです。
次に開始アドレスである 2067H が保存されているメモリをGAME言語を使って検索してみた結果、77B9Hと7973Hが該当することが判りました。
この両者はUSERコマンドでユーザメモリ領域を変更しても追従してくるので違いが不明(もしかしたらバックアップで2重持ち?)ですが、ネット情報ではG850のワークエリアは79xxHのものが多かったので7973Hを採用することにしました。
フォーマットと場所が判ってしまえば、あとは既知のGAMEソースフォーマットに変換するだけなので簡単です。
こういう処理はGAME言語なら手軽に作成できます。作成したソースは下記のとおりです。
★2020/01/24 最新版にアップデート
今回はその他に
今回の機能追加したものは「ポケコン(PC-G850V)でGAME言語」のページでダウンロードできます。
上記のGAME言語で作ったTEXTエディタのデータをGAME言語のソースに変換するツールのソース及びそのHEXファイル(1E00H~)を同梱しているのでG850のモニタ機能でのRコマンドでパソコンからG850のメモリにシリアル転送できます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
今回はTEXTモードで編集した内容をGAMEのソースに変換することでこの課題を解決しました。TEXTモードでの編集内容をGAME側に持ってこれるようになると
- ソース編集の機能アップ
- パソコンから受信可能
パソコン内のGAME言語ソースをシリアル通信でG850のTEXTエディタへ送信可能なので、TEXTエディタの内容をGAMEソースに取り込めればパソコンからのファイル受信手段の課題も解決できます。
またポケコン側で変更したGAME言語のソースをパソコンへ送信することもできるようになります(モニタのWコマンドでもできますが終了アドレスを確認する等の手間が必要)
G850のエディタは肥大するプログラムサイズを小さくするため(だと思う)、BASICのような行番号付きエディタなのであまり評判は良くないようですが、GAMEのエディタと比べれば格段に使い易いと思います。
問題はTEXTエディタで編集中の内容がメモリの何処にあり、どんなフォーマットなのか・・ですが、GAME言語が動くようになったのでメモリ上の特定パターンの検索もGAME言語を使えば容易にできます。
自身の機能を使って機能拡充していくので、ある意味ブートストラップ的な開発と言えるかもしれませんw
TEXTエディタで「10 SKYRV」+CR の一行だけを入れた状態でGAME言語でメモリ検索したところ、メモリ上では下記のような状態で配置されていました。
TEXTエディタ内容のメモリ内での状態 |
2060 02 c6 07 cd 67 01 c9 ff 00 0a 07 20 53 4B 59 52 SKYR 2070 56 0d ff c5 V.. 32 43 02 fe |
2067HのFFHの前と2072HのFFHの後は見るからにプログラムコードのようですね。
このことからフォーマットは次のようになっているようです。
- FFH:ヘッダマーク
- 行番号:2バイト(ビッグエンディアン)
- 文字数:1バイト
- テキスト内容:文字数分
- 行数分、上記2~4の繰り返し
- FFH:フッダマーク
次に開始アドレスである 2067H が保存されているメモリをGAME言語を使って検索してみた結果、77B9Hと7973Hが該当することが判りました。
この両者はUSERコマンドでユーザメモリ領域を変更しても追従してくるので違いが不明(もしかしたらバックアップで2重持ち?)ですが、ネット情報ではG850のワークエリアは79xxHのものが多かったので7973Hを採用することにしました。
フォーマットと場所が判ってしまえば、あとは既知のGAMEソースフォーマットに変換するだけなので簡単です。
こういう処理はGAME言語なら手軽に作成できます。作成したソースは下記のとおりです。
TEXTエディタ内データからGAME言語ソースへの変換処理 |
1' Conv file to GAME src 2' Ver0.02 by skyriver 100 "[Text->Game converter]"/ 110 E=$7973 E=E(0)+1 ;=E:-1)<>$FF "err" #=-1 120 F=E S=0 130 ;=F:0)<>$FF S=S+F:2)+2 F=F+F:2)+3 #=130 140 ??=E "-" ??=F " Size:$" ??=S / 150 "Src(Ret:$C00) " S=? ;=S<$C00 S=$C00 160 T=S 200 S(0)=E(0) 210 ;=E:0)=$FF / ??=T "-" ??=S #=-1 220 / ?(5)=S:0)*256+S:1) 230 S=S+2 C=E:2) E=E+3 240 @ S:0)=E:0) 250 E=E+1 S=S+1 C=C-1 260 @=(C=0) 270 S:-1)=0 280 #=200 |
今回はその他に
- 'CAPS'キー対応
メッセージ等に小文字が使えないとやはり不便なので'CAPS'キーに対応しました。
LCDのCAPS表示の制御方法が未確認なのでカーソル形状を変えるUIにしています。
- '2nd'キー対応
やはり片手打ちができないと不便なので'2nd'キーにも対応しました。
但し、"PRINT"等のような複数文字出力には対応していません(これは'SHIFT'キーも同様)
今回の機能追加したものは「ポケコン(PC-G850V)でGAME言語」のページでダウンロードできます。
上記のGAME言語で作ったTEXTエディタのデータをGAME言語のソースに変換するツールのソース及びそのHEXファイル(1E00H~)を同梱しているのでG850のモニタ機能でのRコマンドでパソコンからG850のメモリにシリアル転送できます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]