はじめに
最近、PC-G850 をいじるのが面白くなってきたので、追加で調達しました。
PC-G850V (画像上) の ROM 吸出しは以前やったのですが、やり方をすっかり忘れてしまいました。
PC-G850 の ROM を吸い出す
エミュレータ『g800』の最新版は ROM がなくてもそこそこ動作しますが、やっぱり ROM を吸い出して動作させてみたいのです。
See also:
- SHARP PC-G850/G815/E200 エミュレータ g800 (- Version 0 -)
- SHARP PC-G850/G815/E200 エミュレータアプレット g800w (- Version 0 -)
- SHARP PC-G850/G815/E200 エミュレータ g800.js (- Version 0 -)
- SHARP PC-G850/G815/E200 エミュレータ Android アプリ g800a (- Version 0 -)
ROM を吸い出すのに必要なもの
PC-G850 の ROM を吸い出すには USB シリアル変換ケーブルと作業用のパソコンが必要です。
See also:
- ポケコン(PC-G850)用 USB シリアル変換器 (Booth: @skyriver)
- SHARP PC-G850 用 USB シリアル変換モジュール (Booth: @poyokoma_danna)
- PC-G850 / PC-E200 シリーズ用 パソコン接続ケーブル (USB) (高松製作所)
- USB シリアル I/F を自作する (ht-deko.com)
通信設定
〔TEXT〕 〔S〕(SIO) 〔F〕(Format) と順に押すとシリアル通信の設定が行えます。
パソコン側の通信ソフトと設定を合わせてください。
パソコン側の通信ソフト
パソコン側の通信ソフトは何でもいいのですが、Windows の場合には『PB-1000 Data Communicator32』を使うのが簡単でいいと思います。
COM15 まで対応かつ、管理者権限での実行が不要です。
See also:
- PB-1000 Data Communicator32 (PB-1000 Software Library)
- PC-Gリンクのダウンロード - 改良型USBシリアルコンバータ (くりこうのホームページ)
- PCG-LinkMac (Yoshiaki's Homepage)
- TeraTerm
吸い出す ROM の場所
PC-G850 の ROM は 2 箇所から吸い出す必要があります。
| アドレス | 内容 | ファイル名 |
|---|---|---|
| 0000~003F | Header | base.txt |
| C000~FFFF | ROM BANK | romxx.txt |
まずは BASIC から MON 〔Enter〕と入力して、機械語モニタ (MACHINE LANGUAGE MONITOR) へ移動します。
Header (base.txt) は
W0,3F
で吸い出せます。問題は ROM BANK で、ここはバンク切り替えしながら吸い出す必要があります。G850 系だけでも吸い出すページ数が異なります。
| 機種 | ページ数 | ページ |
|---|---|---|
| PC-E200 | 5 | 00h~04h |
| PC-E220 | 8 | 00h~07h |
| PC-G850 | 18 | 00h~11h |
| PC-G850S | 19 | 00h~12h |
| PC-G850V | 22 | 00h~15h |
| PC-G850VS | 22 | 00h~15h |
バンク切り替えにはまるひろさんのサイトにある COPYROM を使います。アーカイブを適当な場所に解凍し、R コマンドで copyg850.hex を読み込みます。
R
G5500 として実行します。
G5500
すると、次のように表示されると思います。
A= の後の数字は 16進数なのですが、これは A レジスタの値なので、画像のように常に 00 とは限りません。03 かもしれませんし、A8 かもしれません。表示された元々の値が何であれ、切り替えるページ番号を入力します (入力後〔Enter〕)。
ページ番号が切り替えられ、指定バンクの ROM 領域が RAM 領域にコピーされたら機械語モニタのプロンプトに戻るので、W1000,4FFF で保存します。
W1000,4FFF
PC-G850 (無印) の場合、これを 00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11 とページを切り替えながら rom00.txt,rom01.txt,...rom11.txt と保存します。つまり、ポケコン側は、
MON
G5500 (00 を入力)
W1000,4FFF
G5500 (01 を入力)
W1000,4FFF
...
G5500 (11 を入力)
W1000,4FFF
と、ひたすら吸い出し作業を行う事になります。
8KB RAM 機種向けのバンク切り替えツールもあります。
改変版 COPYG850
COPYG850 を G5500 で実行する際、A レジスタの内容は毎回変わる (元に戻る) ので、どこまで吸い出したのか分らなくなる事があります。次に掲載する改変版は初回起動時に 00h で始まり、実行するたびに値が +1 されるようになっています。
起動したら基本的には〔Enter〕を押すだけなのですが、値を書き換えて任意のページだけ吸い出す事も可能です。
100 ORG 5500H
110 DI
120 IN A,(69H)
130 PUSH AF
140 LD A,(DATA)
150 CALL 0BD09H
160 OUT (69H),A
170 INC A
175 LD (DATA),A
180 LD HL,0C000H
190 LD DE,1000H
200 LD BC,4000H
210 LDIR
220 POP AF
230 OUT (69H),A
240 EI
250 RET
260DATA:DB 00H
270 END
機械語モニタの R コマンドで読み込ませられる hex も用意しました。
:10550000F3DB69F53A2055CD09BDD3693C3220550E
:105510002100C0110010010040EDB0F1D369FBC9BA
:01552000008A
:00000001FF
これで「今、何時だい?」って時そばのような状況に陥る事もないでしょう (^^;A
おわりに
PC-G850 系の最終モデルは『PC-G850VS』なのですが、PC-G850VS は他の 3 機種 (無印, S, V) とは違い、システムが Flash ROM に格納されています。このため PC-G850VS に限り、理屈的には定期的に通電しないとデータリテンションの問題が発生します。
ものすごく大雑把に言うと ROM の内容が消えます。PC-G850VS は 2009 年製造開始なので、15 年くらい通電しなかった個体は普通にあるかもしれませんね。
PC-G850VS に限った事ではないのですが、ROM は実機が動くうちに吸い出しましょう。








