ポケコン(G850)用超高速Hexローダーの制作 [ポケコン]
ポケコンのPC-G850V(以降、G850と記す)でパソコンからヘキサファイルをダウンロードする際に結構時間が掛かります。
下図は G850 でモニタのWコマンドを使ってメモリ内容をヘキサフォーマットでパソコン側に送っている時のロジアナ波形です。送信キャラクタ間の隙間もなく詰めて送信しています。
★追記 2021/12/26 {
上記の波形測定点とG850との間には論理合わせのためのインバータが入っているのでG850の外部ピンの信号は上記の逆論理になっています。以降の図においても同様です。
}
拡大図が下図です。1 bit分の計測値が 0.10 ms になっています。ビットレートは 9600bps なのでビット当たりの時間の理論値は 0.104 ( = 1000ms / 9600 ) ms となり、下図とほぼ同じです。
ところが・・ですよ。パソコンからヘキサファイルを G850 にダウンロードしている時の波形が下図でスカスカ状態です。TeraTerm を使っていて、エラーが起きないように
TeraTermが時間を入れ過ぎているのか、予想以上にスッカスカですねぇ~(でも1文字当たりの 1 ms のウェイトを 0 ms にするとエラーが発生する)
上記のように 9600bps では 1 ビット当たり 0.1 ms で 10 bitで 1 キャラなのでそもそも 1ms/文字 のウェイトでは 9600 bps での送信時間が 2 倍になってしまうということなのですが、実際はそれ以上にスカスカの状態でした。
拡大したものが下図になります。当然ですが 1 ビットの計測時間は上記の送信時とほぼ同じです。
パソコンで開発したソフトのヘキサファイルのダウンロードに余りにも時間が掛かって作業効率が悪いのでソフトシリアル方式のヘキサファイルのローダーを作ってみることにしました。
ソフト制御なので1文字受信中は掛かりっきりになりますが、ストップビットを待たずにフライング処理してどこまでの速度に対応できるかが面白いところです。ノーウェイト状態で 38400 bps ではエラーになりましたが、19200 bps では問題無く動きました。
限界ギリギリまでチューニングしきっているとはまだ言えませんが、利便性は満足いくレベルなので、作成したヘキサファイルダウンローダーを DropHx(ドロップヘックス)と命名し公開することにしました。
気になるダウンロード時間ですが「ポケコン(PC-G850V)でGAME言語(その6)LifeGame2」の記事で公開しているライフゲームのヘキサファイルを使用して比較してみた結果が下の表です。
標準方式の 30 倍とは予想以上に爆速になったものです ^^
ダウンロード対象のヘキサファイルのサイズが 13188 文字なので 理論値は 6.9(=1/19200*10*13188) sec で DropHx の時間とほぼ同じです。
下記からダウンロード可能です。商用利用以外であれば自由に使用可能とします。
尚、無保証ですので問題が発生した場合、当方では責任を負いません。
※本ソフトは PC-G850V 用ですので他の機種の場合、シリアル速度設定の調整が必要かもしれません。
[履歴]
下図は G850 でモニタのWコマンドを使ってメモリ内容をヘキサフォーマットでパソコン側に送っている時のロジアナ波形です。送信キャラクタ間の隙間もなく詰めて送信しています。
G850送信中のロジアナ波形例 [sampling:32MHz] |
|
上記の波形測定点とG850との間には論理合わせのためのインバータが入っているのでG850の外部ピンの信号は上記の逆論理になっています。以降の図においても同様です。
}
拡大図が下図です。1 bit分の計測値が 0.10 ms になっています。ビットレートは 9600bps なのでビット当たりの時間の理論値は 0.104 ( = 1000ms / 9600 ) ms となり、下図とほぼ同じです。
G850送信中のロジアナ波形例(拡大) [sampling:32MHz] |
|
ところが・・ですよ。パソコンからヘキサファイルを G850 にダウンロードしている時の波形が下図でスカスカ状態です。TeraTerm を使っていて、エラーが起きないように
1 msec / char 0 msec / lineの設定で送っています。
TeraTermが時間を入れ過ぎているのか、予想以上にスッカスカですねぇ~(でも1文字当たりの 1 ms のウェイトを 0 ms にするとエラーが発生する)
上記のように 9600bps では 1 ビット当たり 0.1 ms で 10 bitで 1 キャラなのでそもそも 1ms/文字 のウェイトでは 9600 bps での送信時間が 2 倍になってしまうということなのですが、実際はそれ以上にスカスカの状態でした。
PCからヘキサファイルダウンロード中のロジアナ波形例 [sampling:32MHz] |
|
拡大したものが下図になります。当然ですが 1 ビットの計測時間は上記の送信時とほぼ同じです。
PCからヘキサファイルダウンロード中のロジアナ波形例(拡大) [sampling:32MHz] |
|
パソコンで開発したソフトのヘキサファイルのダウンロードに余りにも時間が掛かって作業効率が悪いのでソフトシリアル方式のヘキサファイルのローダーを作ってみることにしました。
ソフト制御なので1文字受信中は掛かりっきりになりますが、ストップビットを待たずにフライング処理してどこまでの速度に対応できるかが面白いところです。ノーウェイト状態で 38400 bps ではエラーになりましたが、19200 bps では問題無く動きました。
限界ギリギリまでチューニングしきっているとはまだ言えませんが、利便性は満足いくレベルなので、作成したヘキサファイルダウンローダーを DropHx(ドロップヘックス)と命名し公開することにしました。
気になるダウンロード時間ですが「ポケコン(PC-G850V)でGAME言語(その6)LifeGame2」の記事で公開しているライフゲームのヘキサファイルを使用して比較してみた結果が下の表です。
標準ロード方式 | DropHx | ratio |
---|---|---|
3 min 27 sec ( 207sec ) | 7 sec | 30 |
標準方式の 30 倍とは予想以上に爆速になったものです ^^
ダウンロード対象のヘキサファイルのサイズが 13188 文字なので 理論値は 6.9(=1/19200*10*13188) sec で DropHx の時間とほぼ同じです。
[使用方法]
- メモリ領域の確保
モニタで USER6FFF のコマンドを実行する
- DropHxのダウンロード
下記リンクからダウンロードした DropHx のヘキサファイルをモニタのR コマンドでダウンロードする
★追記 2024/10/04 {
HEXファイルの転送が終了しても'R'コマンドが終了しない場合はキーボードから^Zを入力してみて下さい
}
- 起動
G100 コマンドで起動する
- ヘキサファイル送信
パソコン側からダウンロードしたいヘキサファイルを送信する
通信設定は 19200 bps, start bit:1, stop bit:1, parity:無し
フロー制御:無し、キャラクタ及びライン毎のウェイト:無し
- 次回以降の起動
DropHx は 自身を 6F00H 以降にコピーし、6F00H から実行されるので、2回目以降は G6F00 コマンドのみで起動可能です
下記からダウンロード可能です。商用利用以外であれば自由に使用可能とします。
尚、無保証ですので問題が発生した場合、当方では責任を負いません。
※本ソフトは PC-G850V 用ですので他の機種の場合、シリアル速度設定の調整が必要かもしれません。
[履歴]
- 2021/12/27 Ver 0.02 末尾が6FFFHを若干超過していたので修正
- 2021/12/26 Ver 0.01a "BREAK"キーでの中断に対応
- 2021/12/25 Ver 0.01 公開
コメント 0