PC-1246メモリ拡張大作戦
- 2008/02/01 01:02
- カテゴリー:make:
機械語が使えない,グラフィックも使えない,実は4bitCPU,見るからに安っぽい,ってな理由でポケコンマニアからも見放されているPC-1246。私もPC-1245を中学生の時に手に入れて以来,PC-1246は邪道も邪道と,そんな風に思いこんでいました。
とはいえ,大きさはPC-1245やPC-1251などと同じで小さく,実はBASICの処理速度はPC-1200シリーズ最速ときて,実用レベルとしてはなかなか高いポテンシャルを誇っているのもまた事実。この後のモデルPC-1248がシートキーになるなど,さらにコストダウンが進んで使い勝手さえも犠牲にされてしまったことを考えると,結構気になる存在ではありました。
登場からすでに20年以上の時間が経過した今,結構な人気機種になっているような感じもあり,オークションではそこそこの値段がつくようになっています。
私も,当時のOh!MZの新製品紹介のページで見たPC-1246が忘れられず,とうとう手に入れてしまいました。決して安いという値段ではなかったのですが,程度もよく,説明書も綺麗な状態でしたので,よかったと思います。
分解掃除をしてから実際に使ってみると,なかなかBASICのサクサク感が素晴らしく,これはいける,という感触をつかんだのですが,PC-1245がリファレンスの私としては,許せない問題が2つ。
1つはBEEPが出ないこと。BEEPだけではなく,カセットからの音が聞こえないのはちょっとどうかなと思います。
もう1つはあまりにメモリが小さいこと。PC-1245は2.2kByteですが,PC-1246は2kByte。1割も小さいというのはかなりです。実際フリーエリアを調べると,PC-1245は1486バイトなのに,PC-1246は1278バイトです。
それに,私のPC-1245は10.2kByteにメモリを増設していたので,窮屈感はさらに高まります。BEEPよりも許せないです。
ところが,PC-1247というPC-1246の上位機種では,この2つは解決しています。BEEPは鳴りますし,メモリは4kByteとなんとか実用レベルです。
悔しいので,PC-1246をなんとか改造出来ないものかと,検討を始めました。
(1)BEEP
BEEPについてはすでに知られているように,部品の追加で比較的簡単に利用可能になります。トランジスタと抵抗3本を追加するのですが,それ用のパターンは用意されているので,部品さえ手に入れば特に難しいことはありません。
BEEP命令は削除されていないので,PC-1246でもBEEP1と打ち込めばピーッと音が出るはずです。
ジャンク箱をあさっていたら,ちゃんと部品が揃いました。試してみるとちゃんと鳴ります。これは解決。
(2)メモリの増設
これはなかなか大変でした。
そもそもそういうことが出来るのかどうかから考えないといけません。実際,PC-1401はPC-1402というメモリ増設モデルがあるにもかかわらず,CPU内蔵のROMのバージョン違いによって1402と同じように増やしたメモリを認識できません。
PC-1246は6116が1つ使われていますし,PC-1247は4kByteですので,理屈通りに考えれば6116をもう1つ取り付ければ増設は出来そうです。その場合,2つ目の6116のCEをどうやって探り当てるかが鍵になります。
回路図があれば一発ですが,私は見つけることが出来ませんでした。やはり不人気機種の情報は少ないですね。それに改造ネタも,海外を含めほとんど見あたりません。
そんな中で,PC-1247の基板の写真をドイツのサイトで見つけました。なるほど,6116が2つくっついています。アドレス線を1本増やしてメモリを増やすのではなく,CEを別に用意して増やしているということがはっきりしました。
もう1つ重大な情報として,CPUがPC-1246と同一の「SC61720D03」であることもわかりました。これがPC-1248などになると,後ろの「D03」が変わることで,内蔵のROMの内容が違っているとわかります。そうすると,CPUのピンアサインが変わり(シャープのポケコン用のCPUはそういうものです),増設出来るかどうかわからなくなってしまいます。
PC-1247とPC-1246は同一のCPUであるとわかれば,これはもう,もう1つ6116を増設できると考えて間違いなさそうです。問題はCEをどうやって見つけるのか,です。
まず,CE端子ですから,普段はHighでないといけません。また,不用意にLowになったりするものでもないので,そのあたりから調べます。
オシロスコープで調べていくと,これか,と思う端子がいくつか見つかります。しかし,それらは元々の6116につながっていたり,カセットI/Fにつながったりと,明らかに違うとわかります。
1つだけ,どこにもつながらず,ずっとHighを出している端子がありました。しかし,リセットをかけても動きませんので,メモリを認識する動作をしていないということから,違ってる可能性も高いと思われました。
その端子は,CPUの5番ピン。QFPのピン番は,左下のマーキングを1番とし,反時計回りに2,3,4...と数えていきます。
とりあえずえいや,で試してみます。6116を元々ついていた上にもう1つ重ねてハンダ付けします。いわゆるカメカメですね。
そして上にのせた6116のCEを,CPUの5番ピンにつなぎます。電源をつなぎ,スイッチをいれ,リセットをかけてから「NEW0」と打ち込みます。これが重要。
お,見事に3326と表示されます。やりました,見事に4kByteのメモリを認識しています。
RAMの厚みが増した分,内部フレームに穴をあけて,組み立てられるようにしておきます。
これで,私のPC-1246はPC-1247相当品となりました。
当時はこういう改造も行われたのではないかと思うのですが,中途半端な機種だし,時期的にも過去のネタになっているせいで,ネットではひっかからないんですね。
この検討の過程で,いろいろ面白いことがわかりました。
まず,4kByte以上の増設の可能性ですが,これは残念ながら無理そうです。というのは,アドレスバスがA10までしか出ていないようなのです。6264を使うにはもう2本アドレス線が必要ですが,このCPUの全ピンを調べてみても,結局アドレスが吐き出されているような線はA0からA10までの11本しかありませんでした。
次,クロック。PC-1245は512kHzという低速っぷりですが,PC-1246は1MHzにパワーアップしています。CPUが全然違うので単純比較は無理ですが,クロックは高速な方がいいにきまってます。
しかし,クロックは高速になると電池を食うのが世の常。そこでPC-1246では巧みに消費電力を低減させています。電源をいれてある状態で,なんの処理も行っていないときは,この1MHzのクロックは止まっています。代わりに36KHzくらいの低速クロックがCR発振で常時動いています。
この低速クロックはLCDの表示を行う為のクロックと,同時にキーの入力などの割り込みを取り込むためのクロックになっています。キーが押されると割り込みが入り,直ちに1MHzのメインクロックが起動,処理を行ってからすぐにクロックは停止状態になります。
こうして,普段は電池を食わないようにしておき,処理が必要になったら全力でぱぱーっと処理を終えて,すぐに休みに入る。そしてトータルの電力消費を押さえる。この考え方は,今でこそ常識ですが,1984年の段階できちんと実装されているとは少々驚きでした。
あと,RAMは8bitアクセスです。CPUは4bitなので,つまりこのRAMは完全にデータエリアとして使われていると想像できます。下手をすると,I/Oとして接続されているのではないでしょうか。
内蔵の18kByte程のROMにBASICインタプリタを含むファームウェアを全部収めておき,実行形式のバイナリはここ以外には配置できない構造になっているとすれば,PC-1246が機械語を封印された事実は説明がつきます。つまりユーザーに開放されているメモリは,BASICの中間コードを記憶するだけのデータメモリに過ぎないということです。
てことは,LCDに表示を出すためのVRAMも,このRAMにはマッピングされているはずがありません。PC-1245が直接データをVRAMにPOKEする方法でビットマップのグラフィクスを可能にしていたのに対し,PC-1246ではその方法が全く使えないことも,これで説明がつきます。
しかし,悪いことばかりではありません。結局RAMはデータをためるI/Oデバイスの1つという位置づけですので,プログラムカウンタの大きさによるアドレッシングの制約はありませんから,64kByteの壁もなくメモリマップも自由自在です。だから,このCPUを使ったポケコンの中には,フラッシュメモリを扱えたり,100kByteを超えるようなRAMモジュールが利用できる機種もあるのです。まあある意味で,この点がすでに「ポケットに入るパソコン」という感覚を薄めているように感じますね。
そんなわけで,この情報で,未だ現役のPC-1246がパワーアップされればいいなあと思います。
私はバリバリ使うことにしましょう。




