Skip to the content
2 layers78 × 24 mmROM SOCKET, the printed circuit board in 3D

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.md

PC-6001にSD-CARDからロード、セーブ機能

TITLE

 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へ書き込むための機器が別途必要となります。

PC-6001_SD

ROM_SOCKET

対応できないもの

 BASIC-ROMのCMT関連ルーチンにパッチを当てたROMに差し替えることでSD-CARDへのアクセスを実現していますのでBASIC-ROMのCMT関連ルーチンをコールせず独自にCMTからLOADするソフト(ロードランナー等)は対応できないので途中で止まります。

回路図

PC-6001_SD基板

 KiCadフォルダ/PC-6001_SD内のPC-6001_SD.pdfを参照してください。

回路図

PC-6001_SD

BASIC-ROM挿し替え用基板

 KiCadフォルダ/ROM_SOCKET内のROM_SOCKET.pdfを参照してください。

回路図

PC-6001_SD

部品

PC-6001_SD基板

番号品名数量備考
J2、J3のいずれか(注1)
J2Micro_SD_Card_Kit1秋月電子通商 AE-microSD-LLCNV (注2)
J3MicroSD Card Adapter1Arduino等に使われる5V電源に対応したもの (注4)
U174LS041
U274LS301
U374LS321
U482551
U52764/28C64相当品1
U6SRAM 62256相当品1
U7Arduino_Pro_Mini_5V1Atmega328版を使用 168版は不可。(注3)
C1 C2 C3 C4 C5 C6積層セラミックコンデンサ 0.1uF6
C7電解コンデンサ 16v100uF1
ピンヘッダ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が付いています。

MicroSD Card Adapter1

MicroSD Card Adapter2

MicroSD Card Adapter3

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
U127128又は27256相当品128C256は不可、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を起動します。

ROM_DUMP

 入力待ちになったら「EXEC &H4013[CR]」と入力するとBASIC-ROMの内容をSD-CARDに保存するプログラムが実行されます。

ROM_DUMP1

ROM_DUMP2

ROM_DUMP3

ROM_DUMP4

 終わったら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修正前修正後
1A61C5 D5 E5C3 04 40
1A70C5 D5 E5C3 07 40
1AB8C5 D5 E5C3 0A 40
1ACCC5 D5 E5C3 0D 40
1B06C5 D5 E5C3 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を切り替えられるようにも出来ます。

ROM_SOCKET1

ROM_SOCKET2

ROM_SOCKET3

 3PトグルスイッチによりCMTとSDを切り替えられるようにします。

 3PトグルスイッチはRS-232C用のパネルに穴を開けて取り付けるのがいいと思います。

ROM_SOCKET4

ROM_SOCKET5

ROM_SOCKET6

接続

 カートリッジスロットに挿入します。

cartridge

 カートリッジスロットへの抜き差しに基板のみでは不便です。

 STLフォルダに基板を載せられるトレイの3Dデータを置いたので出力して使うと便利です。

Tray

 PC-6601、PC-6601SRはドライブ数切替スイッチは0として使ってください。

Drive

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
QtyValueFootprintReferences
2SLIDE_SWITCH_3PConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS1, S2
12364Package_DIP:DIP-24_W15.24mm_LongPadsU2
127256Package_DIP:DIP-28_W15.24mm_LongPadsU1

More from yanataka60/PC-6001_SD

1
  • 2 layers79 × 127 mmPC-6001 SD, the printed circuit board in 3D

    PC-6001 SD

    yanataka60/PC-6001_SD

    PC-6001でSD-CARDからロード、セーブ機能を実現するものです。

    22 parts7MIT

Similar boards

  • 2 layers18.5 × 26 mm24g2usb rp2350zero, the printed circuit board in 3D

    24g2usb rp2350zero

    joypad-ai/joypad-os

    Universal controller firmware for building adapters, dongles, and custom controllers.

    4 parts1.7kApache-2.0
  • 2 layers116 × 33 mm966595-1 and 963356-1, the printed circuit board in 3D

    966595-1 and 963356-1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    4 parts1.2k
  • 2 layers19 × 18 mmDaughter board, the printed circuit board in 3D

    Daughter board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    4 parts915
  • 2 layers24.8 × 24.8 mmNrf24 breakout, the printed circuit board in 3D

    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 mmCap chain, the printed circuit board in 3D

    Cap chain

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    4 parts744MIT
  • 2 layers34.7 × 20 mmXG Station Power MSI, the printed circuit board in 3D

    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 mmJack power input, the printed circuit board in 3D

    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

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).