ポケコン(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] [ 前へ ] 連載記事 [ 次へ ]
ポケコン(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] [ 前へ ] 連載記事 [ 次へ ]
ポケコン(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言語の起動画面です。
Twitterにポストした動画付きメッセージも貼っておきます。
動かすまでの手順は以下のとおりです。
【ダウンロード】
・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
【参考にさせて頂いた主なサイト】
[TOP] [ 前へ ] 連載記事 [ 次へ ]
かなり前にCASIO製ポケコン(FX-890)にGAME言語(C言語で作ったインタプリタとGAME80コンパイラを8086用に移植したコンパイラ)を移植したことがあります(かなり前ですが
今回はPC-G850VにGAME80のインタプリタを移植してみました。
FX-890ではハード依存である入出力処理がコンソール入出力イメージのBIOSコールで提供されていたのでポケコンとのI/F部分は割合楽でしたが、G850はコンソール入出力イメージのルーチンが無いので自前でテキストVRAMを持ったりする分、少し手間がかかりました。
GAME言語のソースの送受信機能をまだ実装していないので手打ちでソースを入れることになりますが、それなりに動くようになりましたので公開いたします。
★2020/01/22 追記 {
「ポケコン(PC-G850V)でGAME言語(その2)」にTEXTモードの編集内容からGAMEソースに変換するコンバータについて記載しました。
}
全てアセンブラで記述していて、動作確認もまだ十分ではないのでバグがある可能性もあります。
暴走した場合、メモリを破壊する可能性もありますので必要なファイル等はバックアップしてから試すようにしてください。
最悪、ファイルが破壊された場合、こちらでは保証できませんので自己責任でお願いします。
下のキャプチャがエミュレータでのGAME言語の起動画面です。
GAME言語起動画面 |
|
Twitterにポストした動画付きメッセージも貼っておきます。
先日入手した中古ポケコン(G850V)にGAME言語を移植してみた
— skyriver (@wcinp) January 12, 2020
キー入力とLCD表示のBIOSコールがコンソールイメージではないので自前でVRAMを持ったりして制御してます#G850V #ポケコン #GAME言語https://t.co/i4oblUsvFV pic.twitter.com/mTJQCivzeZ
動かすまでの手順は以下のとおりです。
-
ロード方法
-
'BASIC'押下後、"MON"コマンドでモニタモードへ移行
- "USER4FFF"コマンドでユーザー領域確保
GAME言語のソースが0C00Hから保存されるのでこのアドレス値+ソースサイズを考慮し、適当に値を決めます。
GAMEコンパイラを使用する場合は4FFF以上を推奨
尚、一度設定すれば次回からはこの操作は不要です。
-
'R'コマンドでHEXファイル受信状態にします。
- シリアル通信でこのサイトからダウンロードしたHEXファイルをG850へ送信します。
参考)TeraTermの場合は "Setup" -> "Serial port"でTransmit delayのディレー値を
1 msec/char 0 msec/line
に設定すると私の環境では9600bpsの場合でもエラーが発生しませんでした。
★追記 2022/01/01
「ポケコン(G850)用超高速Hexローダーの制作」の記事で拙作の高速ヘキサファイルローダー(DropHx)を公開しました。ロード速度は30倍程度です。
-
'BASIC'押下後、"MON"コマンドでモニタモードへ移行
-
起動方法
-
'BASIC'押下後、"MON"コマンドでモニタモードへ移行
-
"G100"のコマンドでGAME言語が起動します。
-
GAME言語起動後、ソースを入れて十分に遊ぶ
-
'BREAK'キー押下でモニタモードに戻ります。
GAME言語を終了しても入力したGAMEソースはメモリ上に残っています。
再度、GAME言語を起動した際に
A== A:0)=0 ==
を実行すればメモリ上のソースが復活します。但し、先頭行の行番号が256以上の場合、行番号の上位バイトがゼロになります。
-
'BASIC'押下後、"MON"コマンドでモニタモードへ移行
-
GAME言語起動中の主な操作キー
-
'BREAK'
GAME言語を終了し、モニタモードに戻ります。
-
'SPACE'
画面表示中に押下すると表示がポーズされます。
ポーズ後、何かしらのキーを押すことでポーズが解除されます。
-
'TAB'
プログラム実行中に押すことでプログラムが中断します。
文字列表示処理でキーセンスしているので何も表示しない場合は、'TAB'キーが受け付けられないので、画面表示がない処理では""で長さ0の文字列表示を入れておくと中断できるようになります。
-
'2ndF'と'CAPS'キー
現時点では対応していません。
★2020/01/22 追記
'2ndF'と'CAPS'キーに簡易的な対応を実施済みです。
-
'BREAK'
-
メモリマップ概要
オリジナルのインタプリタの開始アドレスは8600Hですが、G850では上位メモリはROMなので開始アドレスを0400Hに変更しています。
インタプリタ内の処理及びワークをそのまま平行移動しているのでコンパイラを移植する場合、コンパイル時の呼び出し先やメモリ参照先のアドレスを前述の開始アドレスの変更分ずらせば動作するはずです。
address content 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] [ 前へ ] 連載記事 [ 次へ ]
ポケコン(PC-G850V)の購入 [ポケコン]
Amazonを散歩していたら、ポケコン(PC-G850V)でマニュアル付き(更に箱付き)で結構綺麗な状態と思われるものがあったので購入してみました。
CPUがZ-80(8MHz)というところが良いですよねぇ^^
以前からZ-80のポケコンが欲しいと思っていたので、まぁそれほど高いものでもないしポチリました。
850系列ではG850とG850Sは液晶が壊れやすいようで(半田ごてを当てて修理する方法もあるそうですが)、その後に出たG850Vではこの問題が解消されているらしいのでAmazonで見つけた機種がG850Vであったことも背中を後押ししました。
届いたものは下の写真のように結構綺麗で良かったです^^
パソコンとのファイルの送受信ができないと何かと不便なので、まずは通信ケーブルの作成です。
G850Vに関してはネット上に情報が豊富にあることもこの機種を選んだ理由で、「PC-G850用USB通信ケーブルを作ろう!」等のサイト情報を参考にさせて頂き、通信ケーブルを作ってみました。
G850Vからのシリアル系の信号は5V系ですが、レベル変換無しでRS-232Cと接続できるようにするためか(推測ですが)、出力されている信号が反転しているようです。
USB-シリアル基板によってはファーム変更により論理変更できるものもあるようですが、USBシリアル基板は既に沢山持っているので、今回は外付けのロジックICで論理を反転しました。
74HC04も手持ちでありましたが、74HC00が沢山あったので74HC00を使っています。
回路は下図のとおりで、CNCでプリント基板化してみようかとも思いましたが、この程度の配線数であればユニバーサル基板で作る方が速いので久々に秋月さんの両面ガラエポC基板を使って半田付けです^^
左側にあるUSB-Serialのピン番号を連番に振っていますが、実際は使用するUSBシリアル基板に合わせて接続します。
2つのプルアップ抵抗はポケコンに接続しない状態でも入力が浮いた状態になるのを防止(CMOSデバイスなので)するためと、ポケコン側の出力がハイインピーダンスの際、inactiveな状態(負論理なので)にするためです。(★2020/01/18 追記)
完成した通信ケーブル(基板?)が下の写真です。
今回はebayで買った複数色のラッピングワイヤーで色分けして配線してみましたw
結果は問題なく、送受信できました(まぁ配線数も少ないし、ミスが発生する確率は低いでしょうけど)
ついでに「MSX-DOS上でのGAME言語のベンチマーク」の記事に載せているベンチマークの測定結果一覧にPC-G850Vの結果も追記しておきました。
★追記 2022/07/19
「ポケコン(G850)用超高速Hexローダーの制作」の記事でhexファイルを高速でダウンロードできる超高速Hexダウンローダーを公開しました。
★追記 2023/11/22
「ポケコン(PC-G850)用小型シリアルケーブルの作成」の記事にポケコン用のコンパクトなシリアルケーブルの作成について書きました。
CPUがZ-80(8MHz)というところが良いですよねぇ^^
以前からZ-80のポケコンが欲しいと思っていたので、まぁそれほど高いものでもないしポチリました。
850系列ではG850とG850Sは液晶が壊れやすいようで(半田ごてを当てて修理する方法もあるそうですが)、その後に出たG850Vではこの問題が解消されているらしいのでAmazonで見つけた機種がG850Vであったことも背中を後押ししました。
届いたものは下の写真のように結構綺麗で良かったです^^
購入したポケコン(PC-G850V) |
|
パソコンとのファイルの送受信ができないと何かと不便なので、まずは通信ケーブルの作成です。
G850Vに関してはネット上に情報が豊富にあることもこの機種を選んだ理由で、「PC-G850用USB通信ケーブルを作ろう!」等のサイト情報を参考にさせて頂き、通信ケーブルを作ってみました。
G850Vからのシリアル系の信号は5V系ですが、レベル変換無しでRS-232Cと接続できるようにするためか(推測ですが)、出力されている信号が反転しているようです。
USB-シリアル基板によってはファーム変更により論理変更できるものもあるようですが、USBシリアル基板は既に沢山持っているので、今回は外付けのロジックICで論理を反転しました。
74HC04も手持ちでありましたが、74HC00が沢山あったので74HC00を使っています。
回路は下図のとおりで、CNCでプリント基板化してみようかとも思いましたが、この程度の配線数であればユニバーサル基板で作る方が速いので久々に秋月さんの両面ガラエポC基板を使って半田付けです^^
左側にあるUSB-Serialのピン番号を連番に振っていますが、実際は使用するUSBシリアル基板に合わせて接続します。
2つのプルアップ抵抗はポケコンに接続しない状態でも入力が浮いた状態になるのを防止(CMOSデバイスなので)するためと、ポケコン側の出力がハイインピーダンスの際、inactiveな状態(負論理なので)にするためです。(★2020/01/18 追記)
G850V用の通信基板の回路図 |
|
※ 本ケーブル制作で問題が発生した場合に保証はできませんので自己責任でお願いします。 |
完成した通信ケーブル(基板?)が下の写真です。
今回はebayで買った複数色のラッピングワイヤーで色分けして配線してみましたw
通信基板(表面) | 通信基板(裏面) |
|
|
結果は問題なく、送受信できました(まぁ配線数も少ないし、ミスが発生する確率は低いでしょうけど)
ついでに「MSX-DOS上でのGAME言語のベンチマーク」の記事に載せているベンチマークの測定結果一覧にPC-G850Vの結果も追記しておきました。
★追記 2022/07/19
「ポケコン(G850)用超高速Hexローダーの制作」の記事でhexファイルを高速でダウンロードできる超高速Hexダウンローダーを公開しました。
★追記 2023/11/22
「ポケコン(PC-G850)用小型シリアルケーブルの作成」の記事にポケコン用のコンパクトなシリアルケーブルの作成について書きました。
2020年が明けましたね [日記]
早いもので令和初の新年がやってきました。
今年の抱負等を書き、きちんと目標を立てた方がパフォーマンスは上がるかもしれませんが、このブログは仕事ではないので今後も楽しさ最優先でやっていきたいと思います。
ここでは今年の年賀状の記録としてブログに貼っておきますw
いつものようにインクジェット用年賀にプリント基板作成用に購入したページプリンタで印刷しました。
今年もよろしくお願い致します。
今年の抱負等を書き、きちんと目標を立てた方がパフォーマンスは上がるかもしれませんが、このブログは仕事ではないので今後も楽しさ最優先でやっていきたいと思います。
ここでは今年の年賀状の記録としてブログに貼っておきますw
いつものようにインクジェット用年賀にプリント基板作成用に購入したページプリンタで印刷しました。
今年もよろしくお願い致します。
年賀状 |
|