

ROM SOCKET
PC-6001でSD-CARDからロード、セーブ機能を実現するものです。
- Size
- 78 × 24 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 4
- Nets
- 26
- Pads
- 58
- Tracks, vias
- 190, 0
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 30 Oct 2022
- Updated
- 13 Sep 2025
Overview
ROM SOCKET is an open-source printed circuit board by yanataka60, from the yanataka60/PC-6001_SD repository on GitHub, published under the MIT licence. It is a 2-layer board of 78 × 24 mm with 4 parts on 26 nets, routed with 190 tracks and 0 vias.
Its parts include 2 ICs and 2 switches.
README
README.mdPC-6001にSD-CARDからロード、セーブ機能

PC-6001でSD-CARDからロード、セーブ機能を実現するものです。
対応機種は初代PC-6001です。
PC-6001mk2以降の機種でも動作しますが、MODE1、MODE2のみの動作となります。また、PC-6601、PC-6601SRはドライブ数切替スイッチは0として使ってください。なお、PC-6001mk2以降の機種では裏RAMにBASIC-ROMをコピーしてパッチを当てますのでBASIC-ROMを差し替える必要はありません。
対応しているCMT形式は、P6形式(拡張子はP6、CASのどちらでも大丈夫)とP6T形式です。
CMTからの読み込み実行に数分掛かっていたゲームも数十秒で実行できます。
なお、Arduino、ROMへ書き込むための機器が別途必要となります。
対応できないもの
BASIC-ROMのCMT関連ルーチンにパッチを当てたROMに差し替えることでSD-CARDへのアクセスを実現していますのでBASIC-ROMのCMT関連ルーチンをコールせず独自にCMTからLOADするソフト(ロードランナー等)は対応できないので途中で止まります。
回路図
PC-6001_SD基板
KiCadフォルダ/PC-6001_SD内のPC-6001_SD.pdfを参照してください。

BASIC-ROM挿し替え用基板
KiCadフォルダ/ROM_SOCKET内のROM_SOCKET.pdfを参照してください。

部品
PC-6001_SD基板
| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| J2、J3のいずれか(注1) | |||
| J2 | Micro_SD_Card_Kit | 1 | 秋月電子通商 AE-microSD-LLCNV (注2) |
| J3 | MicroSD Card Adapter | 1 | Arduino等に使われる5V電源に対応したもの (注4) |
| U1 | 74LS04 | 1 | |
| U2 | 74LS30 | 1 | |
| U3 | 74LS32 | 1 | |
| U4 | 8255 | 1 | |
| U5 | 2764/28C64相当品 | 1 | |
| U6 | SRAM 62256相当品 | 1 | |
| U7 | Arduino_Pro_Mini_5V | 1 | Atmega328版を使用 168版は不可。(注3) |
| C1 C2 C3 C4 C5 C6 | 積層セラミックコンデンサ 0.1uF | 6 | |
| C7 | 電解コンデンサ 16v100uF | 1 | |
| ピンヘッダ | 2Pin分 | Arduino_Pro_MiniにはA4、A5用のピンヘッダが付いていないため別途調達が必要です 秋月電子通商 PH-1x40SGなど | |
| ピンソケット(任意) | 26Pin分 | Arduino_Pro_Miniを取り外し可能としたい場合に調達します 秋月電子通商 FHU-1x42SGなど |
注1)J2又はJ3のどちらかを選択して取り付けてください。
注2)秋月電子通商 AE-microSD-LLCNVのJ1ジャンパはショートしてください。
注3)Arduino Pro MiniはA4、A5ピンも使っています。
注4)MicroSD Card Adapterを使う場合
J3に取り付けます。
MicroSD Card Adapterについているピンヘッダを除去してハンダ付けするのが一番確実ですが、J3の穴にMicroSD Card Adapterをぴったりと押しつけ、裏から多めにハンダを流し込むことでハンダ付けをする方法もあります。なお、この方法の時にはしっかりハンダ付けが出来たかテスターで導通を確認しておいた方が安心です。
ハンダ付けに自信のない方はJ2の秋月電子通商 AE-microSD-LLCNVをお使いください。AE-microSD-LLCNVならパワーLED、アクセスLEDが付いています。
BASIC-ROM挿し替え用基板
| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| S1 | ジャンパー | 27128はHigh(5V)、27256はLow(GND)に固定 | |
| S2 | ピンヘッダL型 1x3(3P) | 1 | 秋月電子通商 PH-1X3RG(2)など |
| ピンソケット(メス) 1x3(3P)又はコネクタ用ハウジング 3P + ケーブル用コネクタ | 1 | 秋月電子通商 FH-1x3SG/RH 2226A-03 2226TGなど | |
| 3Pトグルスイッチ 1回路2接点 パネル取付用 | 1 | 秋月電子通商 1MS1-T1-B1-M1-Q-Nなど | |
| 配線材 | 約30cmx3 | ||
| U1 | 27128又は27256相当品 | 1 | 28C256は不可、29C256は可 |
| U2 | 基板用リードフレーム又は細ピンヘッダ | 12Pinx2 | 秋月電子通商 SS2.54-6SN、PHA-1x40SGなど |
ROMへの書込み
Z80フォルダ内のEXT_ROM.binをROMライター(TL866II Plus等)を使って2764又は28C64に書き込みます。
Arduinoプログラム
PC-6001mk2_SDと全く同じものを使用しています。
Arduino IDEを使ってPC-6001mk2_SDプロジェクトArduinoフォルダのPC-6001mk2_SDフォルダ内PC-6001mk2_SD.inoを書き込みます。
SdFatライブラリを使用しているのでArduino IDEメニューのライブラリの管理からライブラリマネージャを立ち上げて「SdFat」をインストールしてください。
「SdFat」で検索すれば見つかります。「SdFat」と「SdFat - Adafruit Fork」が見つかりますが「SdFat」のほうを使っています。
注)Arduinoを基板に直付けしている場合、Arduinoプログラムを書き込むときは、カートリッジスロットから抜き、74LS04を外したうえで書き込んでください。
BASIC-ROMの挿し替え
BASIC-ROMの抽出
まず、PC-6001_SD基板を完成させ、拡張スロットに挿入して電源を入れます。
画面に「PC-6001_SD Launcher」と表示されるので、STOPキー又は「1」コマンド、「B」コマンドでBASICを起動します。
入力待ちになったら「EXEC &H4013[CR]」と入力するとBASIC-ROMの内容をSD-CARDに保存するプログラムが実行されます。
終わったらSD-CARDを抜き、Windowsパソコン等で内容を確認すると「ROM60A.CAS」と「ROM60B.CAS」という二つのファイルが作成されているはずです。
「ROM60A.CAS」「ROM60B.CAS」とも拡張子を「.bin」に変更します。
「ROM60A.bin」はBASIC-ROM全体(0000h~3FFFh)のダンプファイルです。Emulator等に使ってください。
「ROM60B.bin」はBASIC-ROM前半(0000h~1FFFh)のダンプファイルでこちらにパッチを当て挿し替えることになります。
BASIC-ROMへのパッチあて
まず、「ROM60B.bin」をコピーし「ROM60C.bin」を作ります。
「ROM60C.bin」の以下のアドレスを修正します。
| ADDRESS | 修正前 | 修正後 |
|---|---|---|
| 1A61 | C5 D5 E5 | C3 04 40 |
| 1A70 | C5 D5 E5 | C3 07 40 |
| 1AB8 | C5 D5 E5 | C3 0A 40 |
| 1ACC | C5 D5 E5 | C3 0D 40 |
| 1B06 | C5 D5 E5 | C3 10 40 |
「ROM60B.bin」と「ROM60C.bin」をマージし、「ROM60.bin」として保存します。ROM60B.binが0000h~1FFFh、ROM60C.binが2000h~3FFFhとなります。
出来上がった「ROM60.bin」を27128又は27256等に焼きます。
BASIC-ROM挿し替え用基板の装着
BASIC-ROM挿し替え用基板に27128を使うときはA14(S1)はHigh(5V)に固定します。
27256を使うときは、A14(S1)はLow(GND)にします。が、A14もA13と同様に3Pスイッチで切り替えられるようにすれば4000h~7FFFhまでを使って4つまでBASIC-ROMを切り替えられるようにも出来ます。
3PトグルスイッチによりCMTとSDを切り替えられるようにします。
3PトグルスイッチはRS-232C用のパネルに穴を開けて取り付けるのがいいと思います。
接続
カートリッジスロットに挿入します。
カートリッジスロットへの抜き差しに基板のみでは不便です。
STLフォルダに基板を載せられるトレイの3Dデータを置いたので出力して使うと便利です。
PC-6601、PC-6601SRはドライブ数切替スイッチは0として使ってください。
SD-CARD
出来れば8GB以下のSDカードを用意してください。
ArduinoのSdFatライブラリは、SD規格(最大2GB)、SDHC規格(2GB~32GB)に対応していますが、SDXC規格(32GB~2TB)には対応していません。
また、SDHC規格のSDカードであっても32GB、16GBは相性により動作しないものがあるようです。
FAT16又はFAT32が認識できます。NTFSは認識できません。
ルートに置かれた拡張子が「.P6T」又は「.CAS」の形式ファイルのみ認識できます。(以外のファイル、フォルダも表示されますがLOAD実行の対象になりません)
ファイル名は拡張子を除いて32文字まで、ただし半角カタカナ、及び一部の記号はArduinoが認識しないので使えません。パソコンでファイル名を付けるときはアルファベット、数字および空白でファイル名をつけてください。
起動直後の画面は横32文字表示です。拡張子を含めて27文字以下にしたほうが画面が乱れません。
MODE選択
初代PC-6001
MODE1、MODE2の切り替えは、PC-6001_SD基板上のRAM切替スイッチにより選択します。16K側でMODE1、32K側でMODE2です。
PC-6001mk2以降
PC-6001_SD基板上のRAM切替スイッチは16K側にしてください。
通常に電源ON、またはRESETしたときにはMODE1となります。
MODE2にしたい時は、数字の2キーを押したまま、電源ON、またはRESETしてください。
使い方
起動直後は拡張ROMのプログラムが走り、以下のコマンドが使えます。
Launcherコマンド
1[CR]
次に「How Many Pages?(1-4)」と聞いてくるので画面数を入力すると入力された数字の画面数でSD対応にして起動します。
B[CR]
SD対応せずにBASICを起動します。
[STOP]キーと動作は同じです。
[STOP]キー
SD対応せずにBASICを起動します。
B[CR]と動作は同じです。
F[CR]又はF 文字列[CR]
文字列を入力せずにF[CR]のみ入力するとSD-CARDルートディレクトリにあるファイルの一覧を表示します。
文字列を付けて入力すればSD-CARDルートディレクトリにあるその文字列から始まるファイルの一覧を表示します。
10件表示したところで指示待ちになるので打ち切るならESC又は↑を入力すると打ち切られ、Bキーで前の10件に戻ります。それ以外のキーで次の10件を表示します。
行頭に「*L 」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD可能です。
LOADの挙動については次のLコマンドの記述を参照してください。
表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。
例)
F[CR]
F S[CR]
F SP[CR]
L DOSファイル名[CR]
指定したDOSフィル名のファイルをSD-CARDからLOADします。
ファイル名の最後の「.P6T」「.CAS」は有っても無くても構いませんが、無い場合は「.P6T」が指定されたものとみなします。
例)
L TEST.P6T -> DOSファイル名「TEST.P6T」を読み込みます。
L TEST.CAS -> DOSファイル名「TEST.CAS」を読み込みます。
L TEST -> DOSファイル名「TEST.P6T」を読み込みます。
選択したファイルが「P6T」形式の場合、設定されたPagesで起動したうえで自動実行文字列を実行します。
選択したファイルが「CAS」形式の場合、「How Many Pages?(1-4)」と聞いてくるので画面数を入力、次に「Auto Run?(y/c/n)」と聞いてくるので「y」とすれば最後に「Auto Run?(y/c/n)」と聞いてくるので「y」とすれば起動直後にCLOAD[CR]RUN[CR]が実行され、「c」とすればCLOAD[CR]だけが実行、「n」とすれば何も実行されません。
操作上の注意
「SD-CARD INITIALIZE ERROR」と表示されたときは、SD-CARDをいったん抜き再挿入したうえでArduinoをリセットしてください。
SD-CARDにアクセスしていない時に電源が入ったままで SD-CARDを抜いた後、再挿入しSD-CARDにアクセスすると「SD-CARD INITIALIZE ERROR」となる場合があります。再挿入した場合にはSD-CARDにアクセスする前にArduinoを必ずリセットしてください。
SD-CARDの抜き差しは電源を切った状態で行うほうがより確実です。
(2024.3.12) SD-CARDにアクセスしていない時に電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消しました。(Arduinoを最新版に書き換えてください)
再度SD-CARDを挿入した後、Fコマンド、Lコマンド、CLOAD、CSAVE等でSD-CARDに3回ほどアクセスすれば復旧します。
BASICコマンド
CLOAD "DOSファイル名"[CR]
指定したDOSフィル名のBASICプログラムをSD-CARDからLOADします。
ファイル名は6文字以内で必須です。6文字以上入力された場合には7文字以降は無視されます。ファイル名を入力せずにCLOAD[CR]とすると暴走します。
ファイル名の前に"(ダブルコーテーション)は必須ですが、ファイル名の後ろに"(ダブルコーテーション)は有っても無くても構いません。
ファイル名の最後に「.CAS」は必要ありません。「.CAS」が指定されたものとみなします。
例)
CLOAD "TEST" -> DOSファイル名「TEST.CAS」を読み込みます。
CLOAD "TESTTEST" -> DOSファイル名「TESTTE.CAS」を読み込みます。
CLOAD "TEST.BAS.CMT" -> DOSファイル名「TEST.BA.CMT」を読み込みます。
CSAVE "DOSファイル名"[CR]
BASICプログラムを指定したDOSフィル名でSD-CARDに上書きSAVEします。
ファイル名は6文字以内で必須です。6文字以上入力された場合には7文字以降は無視されます。
ファイル名の前に"(ダブルコーテーション)は必須ですが、ファイル名の後ろに"(ダブルコーテーション)は有っても無くても構いません。
ファイル名の最後の「.CAS」は必要ありません。「.CAS」が指定されたものとみなします。
例)
CSAVE "TEST" -> 「TEST.CAS」で保存される。
CSAVE "TESTTEST" -> 「TESTTE.CAS」で保存される。
RAMのテスト
RAMCHECKフォルダ内のramcheck.p6tをSDカードにコピーして実行してください。
8400h~F6FFhまでのRAMをCHECKできます。
なお、終了時に「?SN Error in 50」と表示されますが、BASICプログラムを上書きしてRAMCHECKを行っているためで異常ではありません。
謝辞
基板の作成に当たり以下のデータを使わせていただきました。ありがとうございました。
Arduino Pro Mini
https://github.com/g200kg/kicad-lib-arduino
AE-microSD-LLCNV
https://github.com/kuninet/PC-8001-SD-8kRAM
追記
2023. 3. 4 AUTO STARTの選択肢をy/c/nとし、CLOADも実行しない選択を追加
CLOAD、CSAVEがLOAD、SAVEと誤表記されていたものを修正
2024.1.15 SDカードは8GB以下が望ましいことを追記。
2024.3.12 電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消した。
2025.3.20 P6形式が使えることが伝わりにくい表記を修正した。
2025.9.11 RAMCHECKプログラムを追加。
Parts
4| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | SLIDE_SWITCH_3P | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S1, S2 |
| 1 | 2364 | Package_DIP:DIP-24_W15.24mm_LongPads | U2 |
| 1 | 27256 | Package_DIP:DIP-28_W15.24mm_LongPads | U1 |
More from yanataka60/PC-6001_SD
1- 2 layers79 × 127 mm

Similar boards
- 2 layers18.5 × 26 mm

24g2usb rp2350zero
joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.
4 parts1.7kApache-2.0 - 2 layers116 × 33 mm

- 2 layers19 × 18 mm

Daughter board
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
4 parts915 - 2 layers24.8 × 24.8 mm

Nrf24 breakout
tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!
4 parts803MIT - 2 layers26 × 20 mm

Cap chain
drandyhaas/KiCadRoutingTools
A set of Python/Rust tools to aid routing in KiCad
4 parts744MIT - 2 layers34.7 × 20 mm

XG Station Power MSI
osy/XG_Mobile_Station
Open source eGPU dock for ROG Ally and ROG Flow
4 parts712CC-BY-4.0 - 2 layers20.3 × 24.5 mm

Jack power input
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
4 parts546MIT - 2 layers35.1 × 92.1 mm

SDEX2M2 MicroSD Express to M.2 NVMe Adapter for Switch 2 WIP
NVNTLabs/switch2-SDEX2M2
Micro SD Express to M.2 NVME Adapter for Nintendo Switch 2
4 parts542GPL-3.0
Questions
How big is the ROM SOCKET PCB?
It measures 78 × 24 mm and has 2 copper layers, 1.6 mm thick.
What parts does the ROM SOCKET use?
4 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the ROM SOCKET KiCad files?
From the yanataka60/PC-6001_SD repository on GitHub, at the commit this page was made from: the board is Kicad/ROM_SOCKET/ROM_SOCKET.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the ROM SOCKET design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).