PC-6001初代機ユーザが32K対応のゲームを遊ぶ場合、PC-6006 ROM/RAMカートリッジを本体横に挿し込みますね。これにより、PC-6001の初代機のRAMが16KByteだけ増えます。
では、ROM部分はというと、カートリッジの蓋をカポッと開けた箇所にあります。
ここには2個のROMを挿し込むことが出来ます。ROM一つ当たり最大8KByteまで使うことが出来るので、最大で16KByteのROMを載せることが出来ます。
容量の合ったROMであれば何でも使えるわけではありません。PC-Techknow6000 Vol.1によると、以下の種類のROMが使えるようです。(TMS2564は28ピンなので合わないような・・・)
ROMサイズ | ROM名 | スイッチの位置 |
---|---|---|
2KB | uPD2316 | 下 |
uPD2716 | 下 | |
4KB | uPD2332 | 下 |
uPD2732 | 上 | |
TMS2532 | 下 | |
8KB | uPD2364 | 下 |
TMS2564 | 下 |
これらのうちのxx23xxはマスクROMと呼ばれる、工場で大量生産するタイプの書き換え不可能なROMです。また、xx25xxやxx27xxはEPROMと呼ばれる書き換え可能なROMです。最後の数字2桁は容量で、16が2KByte, 32が4KByte, 64が8KBになります。容量が同じであればICの端子の使い方が同じかというとそんなこともなく、微妙に違っている場合もあります。uPDやTMSはROMのメーカーです。
では、2020年の今、PC-6006で使えて入手しやすく書き換え可能なEPROMはというと、mm2732n系です。残念な事に4KByteなのですが、2732であればamazonですら見かけることがあります(個人出品のようですが)。また、若間通商であれば新品のMBM2732A-35が手に入ります。
4KByte×2個の8KByte程度でも、PC-6001を電源ONするだけでプログラムを動かしたり、マシン語プログラムをBASICから呼び出せるのは便利ですから活用方法次第です。ROM2はZ80アドレス空間の6000Hからに配置されます。4Kx2個の場合であっても配置場所は変わりませんので、以下のようなメモリ構成になります。
ちなみにFONTとは、そのままの意味で、文字を構成するデータが入っているPC-6001内部ROMです。通常は裏側に隠れているので意識する必要はありません。
上記表のスイッチの位置とは、PC-6006 ROM/RAMカートリッジ内部のROM挿し込み部の脇にあるスライドスイッチです。ROMの種類によって端子の信号が違うのでスイッチで切り替えます。どっちが上なのかわかりにくいですが、下記の向きです。MBM2732Aの場合は「上」ですね。
プログラムやデータをROMに書き込むには、以下の機材が必要になります。
P6関係で何か工作をする時には大抵の場合、半田ごてが登場しますが、ここではそういったものは一切使いません。
先に説明した通り、現状ではMBM2732Aという4KByteのEPROMを使うことになります。このEPROMは、ROM中央部分に紫外線を当てることよって中身を消去する事が出来る、UV-EPROMというものです。つまり、紫外線に触れやすい場所に置いておくと中身が消えてしまうということですから注意が必要です。
UV-EPROMを書き換えるには、ROMライターという機器を使います。
EPROMへの書き込みですが、MBM2732A-35では5分くらいかかると思ってください。また、EPROMへの書き込みをする前に中身を事前に綺麗しておく必要があり、これに15分から30分ほどを要します。なので、試行錯誤を繰り返すのであれば、複数個のEPROMを買っておくとよいです。
EPROMに書き込む装置です。装置によって対応しているEPROMが異なりますから、2732Aに対応しているROMライターを選びます。私は、SW-1という古いROMライターを使っています。今だとTL866II Plusという製品が対応しているようです。模倣品もあるようなので注意してください。
ただ、TL866II PlusのROM対応リストを見ると、2732Aに対応しているようなのですが、機器の仕様ではVCC電圧が18Vとなっています。2732Aに書き込むには、21Vが必要なので、もしかすると書き込み出来ないかもしれません。一応、21VタイプのEPROMにも書き込めるという実例はあるようです。→ (追記)やはり、若松通商のMB2732A-35は18V電圧だと書き込みできないそうです。→ NMC27C32BQ(E)というEPROMは12.5Vでの書き込みが可能で、TL866II PLUSのデバイスリストに掲載されています。PC-6001で問題なく動作するようです。ただし、入手性はよくありません。
補足ですが、TL866II Plusにはオプション品が色々あり、フラッシュROMの読み書き用アダプタが付いているものもあります。(ベルーガカートリッジのフラッシュROMを直接書き換えられると思ってください)
AliExpressで売っているものの方が安い時もあります。
UV-EPROMに書き込むには、事前に中身を綺麗に消しておく必要があります。UV-EPROMの中身を確実に消すには、ROMイレーサーという機器を使います。仕組みは単純で紫外線用のランプが入っています。UV-EPROMの中身を消す場合、ROMイレーサーに15分から30分ほど入れておくと綺麗に消すことが出来ます。UV-EPROMを何個かまとめて入れられる大きさのイレーサーだと作業効率が良くなります。
ROMイレーサーはちょっと入手性が悪く、高価だったりします。一応、amazonでもサンハヤト ロムイレーサー RE-908という製品がありますし、ヤフオクでROMイレーサーやROM Eraserといったキーワードで検索するといくつか出品されていることもあります。
AliExpressであれば、数千円で入手できます。ハズレの可能性はありますから自己責任で。
仕組みが単純なので自作する人もいるみたいですね。
ハンダ付けしなくていいって楽ですね。
PC-6001にEPROMが載ったPC-6006を差し込み、電源ONからEPROM内のプログラムを起動させるにはルールがあります。
単純なプログラムで試してみます。
relaxed on
; BASIC ROM ROUTINE
PUTCHAR EQU $1075
CLS EQU $1DFB
LOCATE EQU $116D
PUTSTR EQU $30CF
ORG $4000
DB "AB"
DW main
main:
call CLS
ld hl,msg_hello
call PUTSTR
$$loop:
jr $$loop
;----------------------------------------
; DATA
msg_hello:
DB "HELLO PC-6001",00H
エミュレータでの実行結果です。
先のシンプルなプログラムでは、テキストメッセージの表示後に無限ループに入っていますが、これをretに書き換えると、BASICの起動処理に制御が戻ります。
これは、ROM/RAMカートリッジのプログラムへと制御を移す前に、How Many Pages?を表示してページ数の入力を促す処理アドレスである0084Hがスタックに積まれているので、retで戻ることが出来るという仕組みです。ちなみにこの時のSPレジスタにはF8FCHが入っています。
最初の2バイトを"AB"にしなければ、通常のBASIC起動になります。ROMカートリッジ内のプログラムをEXEC命令を使って呼び出したり、PEEK命令でデータを読み出すことが出来ます。
EPROMに書き込む流れは以下の通りです。
EPROMは単純な上書きが出来ません。あらかじめ綺麗に内容を消しておく必要があるので、ROMイレーサーを使ってEPROMの中身を消去します。EPROMの中身が消去されているかどうかを確認するのがブランクチェックです。
EPROMに書き込んだ後、正しく書き込まれているかを確認します。これは書き込み元のファイルと、EPROMの中身を読み出した結果を比較して確認します。
では、実際にやってみましょう。私が所有しているROMライターの手順で説明しますが、別の製品でも似たような手順になります。予め、ROMライターのソフトをインストールしてPCに接続しておいてください。
EPROMの種類を選択します。今回は、MBM2732Aという富士通のEPROMを使いました。型番は2732Aで、Aが付かないタイプとは異なるので注意しましょう。
消去済みのEPROMをROMライターに載せてレバーを倒してEPROMを固定します。
ブランクチェックを実行して、EPROMが綺麗に消去されているかを確認します。エラーが出なければOKです。
書き込みたいファイルを選択します。ここでは上記の起動可能なプログラム(バイナリファイル)を書き込んでみます。先頭2バイトがABという文字になっていますね。
書き込みます。2732Aへの書き込みには、そこそこ時間がかかりますので、焼き上がるのをじっと待ちます。
書き込みが完了したら、ベリファイを実行して、ファイルが正しくEPROMに書き込まれたかを確認します。
まずは注意点から。
PC-6006内部にある2つのスイッチを両方共に上にしておきます。
EPROMの向きは、EPROMの欠けている方が上になります。レバーを起こした状態でEPROMをぎゅっと挿し込みます。レバーを倒せば固定されます。
後はPC-6001の電源を入れれば、ROMのプログラムから起動します。
PC-6001用のROMカートリッジをPC-6001mkIIで使うことも出来ます。この場合、PC-6001初代機のモードとして起動します。RAMは16KByteですが、2を押しながら起動することでRAM 32KByteになります。また、mkII専用として起動するROMカートリッジも作成できます。PC-6001用のカートリッジプログラムでは4000HにABと書き込みましたが、mkII用ではCDになります。
この辺の各機種対応については、P6つくろうブログのROMカートリッジについてを参照してください。