tsutsuiの作業記録置き場

NetBSDとかPC-6001とかの作業記録のうち、Twitterの140字では収まらない内容や記事としてまとめるべき内容をとりあえず置いてみる予定

PC-6001 本体内蔵 32KB RAM増設改造

というわけで、実際に作ってから一年以上経過してますが、重い腰を上げて記事にまとめてみます。

8/18 19:45追記: 続きで「PC-6001 拡張スロット DRAM制御用信号」のエントリも書きました

PC-6001の増設RAM

初代PC-6001の標準のRAM容量は 16KBです。

オプションの PC-6006 ROM/RAMカートリッジを取り付けると 16KBの RAMが追加されて合計 32KBになります。

RAM 16KBのときは RAMが C000h番地から、 32KBのときは RAMが 8000h番地から始まるので、ソフトによっては 16KBでしか動かないものもあったようです。このため、 PC-6001mkII 以降の起動時の MODE選択では初代PC-6001 (N60-BASIC) について 16KBのモードと 32KBのモードとが選べるようになっています。

増設RAM回路図

などと Twitter でつぶやいてみたところ BELUGA Cartridge の回路図 を教えていただいたりしましたが、検索してみるとすでに PC-6006 相当の増設RAMカートリッジを作られている方がいました。FPGAPC-6001 を作られているえすびさんによる「P6つくろうブログ」の中の「PC6001用拡張RAM」の記事がそれで、自作の増設RAMが回路図付きで解説されています。

増設RAM回路の概要

SRAMなので、基本は「アドレスバスとデータバスをそれぞれすべて直結」ということになります。ただし、 62256 の SRAMは 256bit÷8bit=32KB ありますが、必要なのは半分の 16KBだけなので、最上位の A14 は L (=0) に固定されています。前述の BELUGAカートリッジのようにそれなりの回路を組めば残りも使えますが、専用ソフトが必要なのでどこまで工数をかけるかというのが微妙なところ

OE (Output Enable, つまり読み出し) および WE (Write Enable) についても拡張スロットに出ている DRAM用の ^DRD2 および ^WE の信号と直結です。

CS (Chip Select) に関しては DRAM用信号の RAS と CAS の AND (負論理なので TTLロジックとしては LS32 の ORゲート) となっていますが、この信号の詳細については別エントリで書く予定です。

増設RAMの本体内蔵

増設ROM/RAMカートリッジとはいえ、電気的にはコネクタ上の信号と各部品が接続されているだけです。なので、本体内部のどこかのスペースに部品を載せて、本体のマザーボード上のカートリッジスロットのランドから直接信号線を引っ張り出して配線すればそのまま内蔵可能、ということになります。

ただし、増設ROM/RAMカートリッジの場合は「挿せば 32KBモード、抜けば 16KBモード」という切り替えが可能であったのに対し、本体で直接配線して内蔵してしまうと「抜いて 16KBモード」ということができなくなってしまいます。

いまどき(?)の PC-6001用のソフトでは 32KB 専用のものはあっても 16KB (いわゆる MODE 1) でないと動かないものはほとんど無いようですが、せっかく(?)なのでスイッチで 16KBと 32KBとを切り替えられるようにしました。最初はいろいろ手抜きをしてハマったのですが、そのへんも追って書く予定

切り替えといっても大したことはなくて、 16KBモードのときは SRAMの CSがアクティブにならないようにするだけです。元の回路図の SRAMの CS入力にスイッチを挟むだけでもよかったのですが、アクセスタイミングに影響する信号線を引っ張り回すことになると微妙に気持ち悪いのと、万一静電気等でSRAMが壊れると交換がめんどくさいよな、ということで、元の 74LS32 の代わりに 74HCT139 で CS有効無効を切り替える回路にしました。

オリジナルの回路図左下にある LS32 のゲート部分を上記の回路図で置き換えればOKです。

論理としては RAS, CAS, 拡張RAM有効無効切り替えスイッチ入力のすべてが Lの時に SRAMの CSが Lになる 3入力 AND (負論理なのでロジックゲートとしては 3入力OR) でいいのですが、ロジック的につぶしが利くというのと配線的にもピン配列がわかりやすいという理由で 74139 を使いました。

74139のロジックは以下のとおりです。

  • 入力 G が L の時に出力有効 (G が H の時は Y0〜Y3 のいずれも H)
  • 入力 A,B の2入力を二進数として対応する Y0〜Y3 のいずれかが L

74LS139 ではなく C-MOS の HCTを使っているのはもはや LS の SOPパッケージ品が入手不可能になっているからです。LS139の手持ちがあるのであれば、未使用入力端子(1G, 1A, 1B)の GND接続も不要になるのでそちらのほうが楽だと思います。

部品入手

256ビットSRAMは今でも普通に売っています。私はいつも通販で利用している マルツ で他の部品の手配のついでで取り寄せで購入しました。

値段優先なら 秋月電子のもの のほうが安いです。 いずれにせよ通販だと送料のほうが高いですが……

SRAMの品種によっては A0〜A14 のアドレスバスのピン配置が微妙に異なる場合がありますが、ICソケットを使うわけでもないので、信号名通りにつなげば問題ないはずです。

74HCT139 (もしくは 74LS139) については標準ロジックでよく使われている品種なので、半導体を扱っている店なら問題なく入手可能だと思います。

内蔵工作

本体分解

PC-6001を扱った記事はたくさんあるのでググればいろいろ出てくると思いますが、ざっと分解手順をメモると以下:

  • 本体裏のネジ 5本を外す
  • ネジを外したら、本体をひっくり返してキーボードを上になる向きにして、本体上側のカバー(NECロゴのある側)を持ち上げる
  • 上側カバーのスピーカーとメインボードを接続しているコネクタを外す
  • キーボードとメインボードを接続しているコネクタ2つを外してキーボードを外す
  • 電源とメインボードを接続しているコネクタ2つを外す

ここまで外した時の写真が以下:

上記のツイートでは ネジ5本 と書いていますが、写真の右側のトランスと拡張スロットの間にも本体とシールド板を固定できるネジ穴があります。私の入手した PC-6001 だとここにネジは付いていなかったのですが、本来ネジが付けられていたのかどうかは確認できていません。カセット抜き差し時の応力を考えるとネジがあるべきという気はする

シールド板とメインボードを共締めしているネジ(と、上記のトランスと拡張スロットの間のネジ)を外して、シールド板を電源ごと持ち上げて拡張スロット側に折り返すように置くと、メインボードを外すのに支障ない程度にアクセスできるようになります。(トランスを外す必要は無し)

部品配置 その1

拡張スロットのコネクタはメインボードの表側にあり、信号ランドは裏側からしかアクセスできません。なので、配線を最短にするなら SRAMその他の部品もメインボード裏側に配置する必要があります。

メインボード裏側に配置するとなると、固定時に干渉しないように配置する場所を選ぶ必要があるのですが、SOPといえど SRAMはピン数も多くそれなりにパッケージが大きいので、拡張スロット近辺で配置できる場所は限られます。ざっとながめて、スペースがあって +5Vのパターンランドに直接 SRAMのVCC端子が接続できるところ、というところで以下に置くことにしました。微妙に狭くて配線が大変という問題はありますが

直接パターンランド配線する VCC以外のピンについては、ピンを真横に伸ばして配線をはんだづけする根本部分だけを残して切断しておきます。

拡張スロットのパターンランドは基板外側が奇数番(カートリッジコネクタとしては下側)、内側が偶数番(同上側)のピンになります。

アドレスバス配線中の写真がこの辺のツイート

なお、この時点では手抜きで CSの配線について EXCAS直結にしていたので 74HCT139 の配線がありません。 このあたりの経過についても詳細は別エントリで

部品配置その2

CS信号生成の 74HCT139 については場所に余裕がないので SRAMの上に2階建てで配置しました。

電源のVCCピンについてはそのまま SRAM の VCC ピンの真上に来るようにしてそのままはんだづけして固定。未使用出力ピンの 1Y0〜1Y3 は邪魔なのでピンを根本から折ってしまい、未使用入力ピンの 1G, 1A, 1B と GND はまとめて配線します。

RAS, CAS, CS もそのまま配線します。

拡張RAM有効無効のスイッチを付ける 2G端子のプルアップ抵抗については、ゴミ箱に入っていた HDDから 1608サイズの抵抗を外して取り付け。これはあまり無茶せず普通に付けたほうがよいかも

部品配置 その3

拡張RAM有効無効のスイッチについて、片側の接続先が GNDなのでいい場所はないかと探したところ、カートリッジコネクタ横に電源コンデンサのランドがあり「あわよくば外からON/OFFできるかも」ということでそこに配置。

ツイート写真ではスイッチの接続先のコンデンサ電解コンデンサですが、これは交換後の部品で、オリジナルはタンタルコンデンサです

ICの2階建て構造で干渉したりしないか、という点についてはもともと DIPサイズの余裕があり問題ありませんでした。

動作テスト

実際にはここまで作成する前に 74HCT139 無しで CSと EXCASを直結したバージョンを動かしていたのでここでいきなりテストをしたわけではないのですが、とりあえず当時のツイートを引用しておきます。 そのへんの詳細も別エントリで

作成当時は 32KB 必須、かつフリーでダウンロード可能、というソフトがあまりよくわかっておらずきちんとテストができていなかったのですが、動いた時の感動も含め Tiny野郎さんのドルアーガの塔デモ がテストに最適です。

作成まとめ

とりあえず、拡張スロットの信号詳細 (具体的には RAS2, EXCAS, DRD2 あたりの DRAM用信号) という設計的なところを別にすれば特に難しいところはなく、「回路図通りにつなげば動く」という感じではあります。

部品をどこに配置してどう配線するか、というところは各自の経験値と手持ち部品に合わせて決めればいいと思いますが、バス配線は本数が多いのであまり離れたところに置いてしまうとそれはそれで大変になるという気はします。

DRAM用信号線について

今回拡張RAM改造を記事にまとめるにあたって初代PC-6001DRAM用信号についてもいろいろ調べたのですが、例によって自己満足モードで長くなってしまったので別エントリでまとめます。