This page is writen in both English and Japanese. Each paragraph is written twice for the two langages.
日本語ページと英語ページを書くのは面倒なのでまとめちゃってます。 読みにくくてすみません。
In this docment, I show how to extract ROM data of the old sharp pocket computers. I will employ PC-1251 as an example.
シャープのSC61860ポケコンのROM吸い出し方法を説明します。 以下の例は PC-1251 を使っています。PC-1245だともっと面倒臭くて PC-1255だともっと楽ちんです。
Inner ROM is not accessible directly. It is necessary to use the special instruction (known as RST, DATA or MVWP). Here is a simple data moving program, memmove.s. Its dump list is as follows.
ESR-Hアーキテクチャの内部ROMは直接読み出せません。 0x35(MVWP) という命令を使う必要があります。 内部ROMデータを外部ROMに移動する 簡単なmemmove.sというツールを 作ってみましたので以下を参考にご利用ください。
c100 : 00 03 10 c1 40 84 18 07 : b7
c108 : 02 03 34 02 ff 34 00 01 : 6f
c110 : 82 13 04 08 90 35 90 db : d1
c118 : 04 26 2f 0d 2f 12 37
The 03 of 0xc109 is data length. 03 means (3+1)*0x100=0x400. It is the maximum value for PC-1245. In case of PC-1251, 07 may be more convenient.
上記ダンプリストの0xc109番地の0x03が移動するデータ長です。 03だと0x400バイト(PC-1245で可能な設定)ですが、PC-1251の場合 もう少しまとめて転送した方が楽できるので7にしましょう。 (PC-1255だったらさらに倍の15も行けます。)
POKE &C109,7
Now, we are ready to extracting the inner ROM performing the following procedure.
準備完了なので、以下の手順で転送して、音声として保存しましょう。 内部ROMは8KBで、一回に0x800バイト転送するので4回繰り返す 必要があります。
POKE &C140,&00,&00,&80,&B8 (Copy [0x0000,0x07ff] to [0xb880,0xc07f]) CALL &C100 CSAVEM &B880,&C07F (Save it as "mem0000_07ff.wav") POKE &C140,&00,&08 CALL &C100 CSAVEM &B880,&C07F (Save it as "mem0800_0fff.wav") POKE &C140,&00,&10 CALL &C100 CSAVEM &B880,&C07F (Save it as "mem1000_17ff.wav") POKE &C140,&00,&18 CALL &C100 CSAVEM &B880,&C07F (Save it as "mem1800_1fff.wav")
Then, use cload.pl to decode as binary.
そしたらwavファイルを拙作の cload.pl にかけて生バイナリを抽出してください。
$ perl cload.pl -old -o mem0000_07ff.bin mem0000_07ff.wav $ perl cload.pl -old -o mem0800_0fff.bin mem0800_0fff.wav $ perl cload.pl -old -o mem1000_17ff.bin mem1000_17ff.wav $ perl cload.pl -old -o mem1800_1fff.bin mem1800_1fff.wav
Outer ROM is quite easy to extract. Simply CSAVEM the target area and process it with cload.pl. Notice that you should not save whole the data at once. Your pocket-com may fall into asleep while saving because of the auto power off function!
外部ROMは何も考えずCSAVEM して cload.pl. すればおっけーです。でもあまり欲張って 一気にやろうとすると途中でまさかのオートパワオフしちゃうので 適当に細切れにした方が無難です。
CSAVEM &2000,&4FFF (Save it as "mem2000_4fff.wav") CSAVEM &5000,&7FFF (Save it as "mem5000_7fff.wav")
$ perl cload.pl -old -o mem2000_4fff.bin mem2000_4fff.wav $ perl cload.pl -old -o mem5000_7fff.bin mem5000_7fff.wav
Finally, concatenate them into a file. In case of PC-1245, 1250, 1251 and 1255, 0x0000-0x7fff is enough for POEMS/Pokemun.
仕上げはバイナリを繋げるだけです。PC-1245〜55の場合は0x0000から0x7fffまで あれば十分です。
cat mem0000_07ff.bin mem0800_0fff.bin mem1000_17ff.bin mem1800_1fff.bin mem2000_4fff.bin mem5000_7fff.bin > pc1251mem.bin
Copyright 2003 by こばやしひろゆき
hkoba@ctrl.titech.ac.jp