ポケコン(PC-G850V)でGAME言語(その3)GAMEコンパイラ [ポケコン]
前回の「ポケコン(PC-G850V)でGAME言語(その2)」で書いたようにポケコン(G850V)環境でTEXTエディタで編集している内容をGAME言語のソースにコンバートするツールができたので今回はポケコンでGAMEコンパイラを動かしてみました。
TK-80BS用のGAMEインタプリタは開始アドレスが 8600H ですが、ポケコン(G850)はメモリの後半が ROM なのでインタプリタの開始アドレスを 0400H に変更しています(インタプリタ本体及びワークエリアはそのまま平行移動)。
従ってGAMEコンパイラを動かすためにはコンパイルの際、埋め込まれるインタプリタ内処理とワークエリアのアドレスを変更する必要があります。
GAMEコンパイラのソースを眺めてみると $8xxx(xは[0-9,A-F])の部分を
0400H - 8600H
の値を加算したものに変更すれば動きそうです。
手作業で変更するのは面倒なので変換ツールを作り、一括変換しました。
変換時のログが下記になります。コンパイラソースの行カウント値、行番号、変更前データ、変更後データを表示しています。
このような処理はGAME言語では荷が重いのでperlを使いました。ソースは以下の通りで使い捨てツールなので凝った作りにはしていません。
★2020/01/16 追記 Twitterにポストしたメッセージを貼っておきます。
「MSX-DOS上でのGAME言語のベンチマーク」の記事でベンチマークに今回のポケコンでのGAMEインタプリタとコンパイラの結果を追記しました。
G850V(Z-80:8MHz)でのGAMEインタプリタは予想に反してかなり遅い結果で、同じコードが動いているPic24CPM ボード(Z-80:16MHz)のCP/M-80でのGAME80インタプリタの10倍程度遅いです。
インタプリタ自体は同じコードなのでキーセンス処理が原因かと思い、キー入力チェック無しにリターンするようにしましたが変化はなく、現時点では原因不明です。
今回移植したGAMEコンパイラの結果も追記していますが、コンパイラの方はクロック相応の速度が出ているようです。
GAMEコンパイラを同梱したファイルは「ポケコン(PC-G850V)でGAME言語」のページで公開しています。
GAMEコンパイラのソースを公開していいのか不明(GAME本体のソースも同様)なのでコンパイル後のHEXファイルのみ付けていますが、「3チップ構成Pic24CPMマイコン(その7)GAMEコンパイラ」の記事を参照すればGAMEコンパイラのソースを入手できます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
TK-80BS用のGAMEインタプリタは開始アドレスが 8600H ですが、ポケコン(G850)はメモリの後半が ROM なのでインタプリタの開始アドレスを 0400H に変更しています(インタプリタ本体及びワークエリアはそのまま平行移動)。
従ってGAMEコンパイラを動かすためにはコンパイルの際、埋め込まれるインタプリタ内処理とワークエリアのアドレスを変更する必要があります。
GAMEコンパイラのソースを眺めてみると $8xxx(xは[0-9,A-F])の部分を
の値を加算したものに変更すれば動きそうです。
手作業で変更するのは面倒なので変換ツールを作り、一括変換しました。
変換時のログが下記になります。コンパイラソースの行カウント値、行番号、変更前データ、変更後データを表示しています。
GAMEコンパイラ内のインタプリタ関連アドレス変換ログ |
C:\src\G850V\comp>perl cnvcomp.pl <GAMECOM.GAM >GAMEC.GAM 7 65 : $8D06 -> $0B06 15 220 : $8603 -> $0403 15 220 : $8603 -> $0403 25 380 : $8C83 -> $0A83 31 440 : $8B58 -> $0958 33 460 : $8B85 -> $0985 34 470 : $8D52 -> $0B52 75 2420 : $8785 -> $0585 78 2510 : $8C26 -> $0A26 80 2610 : $8C32 -> $0A32 81 2620 : $8C31 -> $0A31 83 2710 : $8C31 -> $0A31 85 2810 : $8B9C -> $099C 95 3210 : $8A03 -> $0803 96 3220 : $8A0F -> $080F 97 3230 : $8A2C -> $082C 111 3610 : $8A03 -> $0803 140 4620 : $889E -> $069E 144 4720 : $8D4E -> $0B4E 145 4750 : $8C96 -> $0A96 148 4800 : $8A5B -> $085B 149 4810 : $8872 -> $0672 150 4820 : $8881 -> $0681 151 4830 : $8904 -> $0704 190 5740 : $8A03 -> $0803 C:\src\G850V\comp> |
このような処理はGAME言語では荷が重いのでperlを使いました。ソースは以下の通りで使い捨てツールなので凝った作りにはしていません。
GAMEコンパイラ内アドレス変換ツール(perl) |
|
★2020/01/16 追記 Twitterにポストしたメッセージを貼っておきます。
先日入手した中古ポケコン(G850V)にGAMEコンパイラを移植してみたよ
— skyriver (@wcinp) January 15, 2020
ベンチマークではGAMEインタプリタは予想に反して遅かったけどコンパイラは予想通りの速さだった^^#G850V #ポケコン #GAME言語 #GAMEコンパイラhttps://t.co/FJqKLuMn0w pic.twitter.com/TuyxscTQSD
「MSX-DOS上でのGAME言語のベンチマーク」の記事でベンチマークに今回のポケコンでのGAMEインタプリタとコンパイラの結果を追記しました。
G850V(Z-80:8MHz)でのGAMEインタプリタは予想に反してかなり遅い結果で、同じコードが動いているPic24CPM ボード(Z-80:16MHz)のCP/M-80でのGAME80インタプリタの10倍程度遅いです。
インタプリタ自体は同じコードなのでキーセンス処理が原因かと思い、キー入力チェック無しにリターンするようにしましたが変化はなく、現時点では原因不明です。
今回移植したGAMEコンパイラの結果も追記していますが、コンパイラの方はクロック相応の速度が出ているようです。
GAMEコンパイラを同梱したファイルは「ポケコン(PC-G850V)でGAME言語」のページで公開しています。
GAMEコンパイラのソースを公開していいのか不明(GAME本体のソースも同様)なのでコンパイル後のHEXファイルのみ付けていますが、「3チップ構成Pic24CPMマイコン(その7)GAMEコンパイラ」の記事を参照すればGAMEコンパイラのソースを入手できます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
コメント 0