Skip to the content
2 layers100 × 100 mmPC-8001 SD, the printed circuit board in 3D

PC-8001でSD-CARDからCMT形式ファイルのロード、セーブ機能を実現するものです。

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
23
Nets
77
Pads
307
Tracks, vias
1,135, 25
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
22 Jul 2022
Updated
16 Aug 2026

Overview

PC-8001 SD is an open-source printed circuit board by yanataka60, from the yanataka60/PC-8001_SD repository on GitHub, published under the MIT licence. It is a 2-layer board of 100 × 100 mm with 23 parts on 77 nets, routed with 1,135 tracks and 25 vias.

It is built around the 74LS30PC and 74LS04PC. Its parts include 6 capacitors, 6 ICs, 5 connectors and 2 switches. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

PC-8001にSD-CARDからCMT形式ファイルのロード、セーブ機能

PC-8001_SD

 PC-8001でSD-CARDからCMT形式ファイルのロード、セーブ機能を実現するものです。

 CMTからの読み込み実行に数分掛かっていたゲームも数十秒で実行できます。

 接続は、PC-8001本体後ろの拡張端子に接続しますが、50pフラットケーブルでの接続、50pカードエッジコネクタでの接続のどちらかを選択できます。

 なお、Arduino、ROMへ書き込むための機器が別途必要となります。

回路図

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

 J5 2x25Pinコネクタを追加しています。

回路図

PC-8001_SD

部品

番号品名数量備考
J1、J3のいずれか
J12x25ボックスヘッダ1共立エレショップ JS-1200R-50など、秋月電子通商 PH-2x40RGなどのピンヘッダでも代用可(注1)(注5)
J350Pカードエッジコネクタ1せんごくネット通販 HRS CR22A-50D-2.54DSなど(注1)
J2、J4のいずれか
J2Micro_SD_Card_Kit1秋月電子通商 AE-microSD-LLCNV (注2) (注4)
J4MicroSD Card Adapter1Arduino等に使われる5V電源に対応したもの (注4)
U174LS041
U2 U374LS302
U482551
U52764/28C64相当品1
U6Arduino_Pro_Mini_5V1Atmega328版を使用 168版は不可。(注3)
C1-C5積層セラミックコンデンサ 0.1uF5
C6電解コンデンサ 16v100uF1
S13Pスライドスイッチ1秋月電子通商 SS12D01G4など
S22回路2接点 スライドスイッチ1秋月電子通商 IS-2235-Gなど
ピンヘッダ2Pin分Arduino_Pro_MiniにはA4、A5用のピンヘッダが付いていないため別途調達が必要です 秋月電子通商 PH-1x40SGなど
ピンソケット(任意)26Pin分Arduino_Pro_Miniを取り外し可能としたい場合に調達します 秋月電子通商 FHU-1x42SGなど
J52x25Pinコネクタ1秋月電子通商 PH-2x40SGなど(注1)

   注1)J1又はJ3のどちらかを選択して取り付けてください。

   注2)秋月電子通商 AE-microSD-LLCNVのJ1ジャンパはショートしてください。

   注3)Arduino Pro MiniはA4、A5ピンも使っています。

   注4)J2又はJ4のどちらかを選択して取り付けてください。

   注5)ピンヘッダで代用するときは、基板から若干浮かせてピンヘッダをハンダ付けするとフラットケーブをスムーズに抜き差しできます。

MicroSD Card Adapterを使う

J4に取り付けます。

MicroSD Card Adapterについているピンヘッダを除去してハンダ付けするのが一番確実ですが、J4の穴にMicroSD Card Adapterをぴったりと押しつけ、裏から多めにハンダを流し込むことでハンダ付けをする方法もあります。なお、この方法の時にはしっかりハンダ付けが出来たかテスターで導通を確認しておいた方が安心です。

ハンダ付けに自信のない方はJ2の秋月電子通商 AE-microSD-LLCNVをお使いください。AE-microSD-LLCNVならパワーLED、アクセスLEDが付いています。

MicroSD Card Adapter1

MicroSD Card Adapter2

MicroSD Card Adapter3

MicroSD Card Adapter4

その他必要なもの

 2x25Pinコネクタ(J1)を取り付けた場合には、本体との接続用ケーブルが必要となります。

 片側が2.54mmピッチ2x25Pinメスコネクタ、片側が2.54mmピッチ50pカードエッジコネクタのフラットケーブルを用意してください。

ROMへの書込み

 Z80フォルダ内のEXT_ROM.binをROMライター(TL866II Plus等)を使って2764又は28C64に書き込みます。

Arduinoプログラム

 Arduino IDEを使ってArduinoフォルダのPC-8001_SDフォルダ内PC-8001_SD.inoを書き込みます。

 SdFatライブラリを使用しているのでArduino IDEメニューのライブラリの管理からライブラリマネージャを立ち上げて「SdFat」をインストールしてください。

 「SdFat」で検索すれば見つかります。「SdFat」と「SdFat - Adafruit Fork」が見つかりますが「SdFat」のほうを使っています。

注)Arduinoを基板に直付けしている場合、Arduinoプログラムを書き込むときは、PC-8001本体とは接続を外し、74LS04を外したうえで書き込んでください。

コネクタの取り付け

2x25Pinコネクタ(J1)を取り付ける場合

 取付穴は外側から1列目と2列目を使います。基板の表側に取り付けます。 Flat cable1

50Pカードエッジコネクタ(J3)を取り付ける場合

 取付穴は外側から1列目と3列目を使います。基板の裏側に取り付けます。 Flat cable2

接続

 PC-8001本体後ろの拡張端子に接続します。

注)PC-8001本体後ろの拡張端子は経年劣化により接触不良となることが非常に多いです。動作不良の場合は一度、拡張端子を消しゴムで擦る、アルコールで拭く等掃除をしてみてください。

フラットケーブルによる接続

Flat cable1 Flat cable2

カードエッジコネクタによる接続

Card Edge Connector1 Card Edge Connector2

私の入手したカードエッジコネクタでは基板と本体の間が充分に離れていますが、カードエッジコネクタによっては接触の危険があるかもしれません。気になる方はカプトンテープなどで裏面を保護してください。

J5 2x25Pinコネクタを使ってRAMボード等接続する場合

 J5 2x25Pinコネクタは、拡張端子と同じ配列です。フラットケーブルを接続してRAMボード等を接続できますが、接続する向きを間違えないようにしてください。 Rev14_1 Rev14_2 Rev14_3

SD-CARD

 出来れば8GB以下のSDカードを用意してください。

 ArduinoのSdFatライブラリは、SD規格(最大2GB)、SDHC規格(2GB~32GB)に対応していますが、SDXC規格(32GB~2TB)には対応していません。

 また、SDHC規格のSDカードであっても32GB、16GBは相性により動作しないものがあるようです。

 FAT16又はFAT32が認識できます。NTFSは認識できません。

 ルートに置かれた拡張子が「.CMT」のCMT形式ファイルのみ認識できます。(CMT形式以外のファイル、フォルダも表示されますがLOAD実行の対象になりません)

 CMT形式であれば複数のCMTファイルを一つのファイルとしてまとめてあっても認識します。

 例)

  BASIC+機械語             -> LOAD "DOSファイル名"[CR]、MON[CR]、L[CR]

  機械語+機械語            -> MON[CR]、 L DOSファイル名[CR]、L[CR]

  オートラン機能ファイル+BASIC     -> MON[CR]、L DOSファイル名[CR](以下オートラン)

  オートラン機能ファイル+BASIC+機械語 -> MON[CR]、L DOSファイル名[CR](以下オートラン)

  オートラン機能ファイル+機械語+機械語 -> MON[CR]、L DOSファイル名[CR](以下オートラン)

  など

 ファイル名は「.CMT」を含めて31文字まで、ただし半角カタカナ、及び一部の記号はArduinoが認識しないので使えません。パソコンでファイル名を付けるときはアルファベット、数字および空白でファイル名をつけてください。

使い方

PC-8001_SDを使いたくない時には、PC-8001_SDを外してしまうのが簡単ですが、SHIFTキーを押してまま電源ON又はRESETすると拡張ROMは無効となります。

なお、N-BASIC Ver1.0で動作させるには起動直後に「DEF USR=&H6003:A=USR(0)」を実行してください。

BASICコマンド

FILES[CR]又はFILES "文字列"[CR]

FILES[CR]とするとSD-CARDルートディレクトリにあるファイルの一覧を表示します。

FILES "文字列"[CR]とするとSD-CARDルートディレクトリにあるその文字列から始まるファイルの一覧を表示します。

20件表示したところで指示待ちになるので打ち切るならESC又は↑を入力すると打ち切られ、Bキーで前の16件に戻ります。それ以外のキーで次の16件を表示します。

 行頭に「LOAD "」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD可能です。

 表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。

参考

 FILES "文字列"[CR]とする場合、基本的にはダブルコーテーションが無くても機能しますが、数字で始まるファイル名の場合ダブルコーテーションが無いと検索できません。

 × FILES 3

 ○ FILES "3"

LOAD "DOSファイル名"[CR]

指定したDOSフィル名のBASICプログラムをSD-CARDからLOADします。

ファイル名の前に"(ダブルコーテーション)は必須ですが、ファイル名の後ろに"(ダブルコーテーション)は有っても無くても構いません。

ファイル名の最後の「.CMT」も有っても無くても構いません。

 例)

  LOAD "TEST" -> DOSファイル名「TEST.CMT」を読み込みます。

  LOAD "TEST.BAS" -> DOSファイル名「TEST.BAS.CMT」を読み込みます。

  LOAD "TEST.BAS.CMT" -> DOSファイル名「TEST.BAS.CMT」を読み込みます。

参考

 基本的にはDOSファイル名をダブルコーテーションで括らなくても機能しますが、数字で始まるファイル名の場合ダブルコーテーションが無いとLOADできません。

 NOT FIND FILEと表示されます。

 × LOAD 3D MAZE

 ○ LOAD "3D MAZE"

LOAD ""[CR](※多段ロードファイルの2段目以降のみ有効)

直前に読み込まれたDOSファイルが多段ロード用に複数のCMTファイルが連結されており、2段目以降がBASICプログラムであった時のみ有効に動作し、BASICプログラムをSD-CARDからLOADします。

SAVE "DOSファイル名"[CR]

BASICプログラムを指定したDOSフィル名でSD-CARDに上書きSAVEします。

ファイル名の省略は出来ません。

ファイル名の前に"(ダブルコーテーション)は必須ですが、ファイル名の後ろに"(ダブルコーテーション)は有っても無くても構いません。

ファイル名の最後の「.CMT」も有っても無くても構いません。

指定したDOSファイル名の最初の6文字がCMT形式の中に保存されるファイル名として使われます。

BASICプログラムであることを識別するために「.BAS」を付けることを推奨します。

 例)

  SAVE "TEST" -> 「TEST.CMT」で保存される。

  SAVE "TEST.BAS" -> 「TEST.BAS.CMT」で保存される。

参考

 基本的にはDOSファイル名をダブルコーテーションで括らなくても機能しますが、数字で始まるファイル名の場合ダブルコーテーションが無いとSAVEできません。

 SD-CARD INITIALIZE ERRORと表示されます。

KILL DOSファイル名[CR]

指定したDOSフィル名がSD-CARDに存在すればSD-CARDから削除します。

ファイル名の最後に「.CMT」も指定してもしなくても構いません。

参考

 基本的にはDOSファイル名をダブルコーテーションで括らなくても機能しますが、数字で始まるファイル名の場合ダブルコーテーションが無いとKILLできません。

 NOT FIND FILEと表示されます。

 × KILL 3D MAZE

 ○ KILL "3D MAZE"

MONITORコマンド

F[CR]又はF 文字列[CR]

文字列を入力せずにF[CR]のみ入力するとSD-CARDルートディレクトリにあるファイルの一覧を表示します。

文字列を付けて入力すればSD-CARDルートディレクトリにあるその文字列から始まるファイルの一覧を表示します。

20件表示したところで指示待ちになるので打ち切るならESC又は↑を入力すると打ち切られ、Bキーで前の16件に戻ります。それ以外のキーで次の16件を表示します。

 行頭に「*L 」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD可能です。

 表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。

例)

  F[CR]

  F S[CR]

  F SP[CR]

L DOSファイル名[CR]

指定したDOSフィル名の機械語プログラムをSD-CARDからLOADします。

ファイル名の最後の「.CMT」は有っても無くても構いません。

 例)

  L TEST -> DOSファイル名「TEST.CMT」を読み込みます。

  L TEST.BIN -> DOSファイル名「TEST.BIN.CMT」を読み込みます。

  L TEST.BIN.CMT -> DOSファイル名「TEST.BIN.CMT」を読み込みます。

L[CR](※多段ロードファイルの2段目以降のみ有効)

直前に読み込まれたDOSファイルが多段ロード用に複数のCMTファイルが連結されており、2段目以降が機械語プログラムであった時のみ有効に動作し、機械語プログラムをSD-CARDからLOADします。

W 16進数4桁 16進数4桁 DOSファイル名[CR]

1番目の16進数4桁が表すアドレスから2番目の16進数4桁が表すアドレスまでを指定したDOSファイル名でSD-CARDに機械語として上書き保存します。

ファイル名の最後に「.CMT」を指定してもしなくても構いません。

またWの後ろや各パラメータ間に空白が有っても無くても構いません。

機械語プログラムであることを識別するために「.BIN」等を付けることを推奨します。

 例)

  W 0000 001F TEST ->   0000番地から001F番地までをDOSファイル名「TEST.CMT」で保存する。

  W 0000 001F TEST.BIN -> 0000番地から001F番地までをDOSファイル名「TEST.BIN.CMT」で保存する。

G 16進数4桁[CR]

16進数4桁が表すアドレスにジャンプします。

Gの後ろに空白があっても無くても構いません。

B[CR]

BASICに復帰します。MONITORでのコマンド入力をスクリーンエディタにしたため、CTRL+Bが機能しないので代替コマンドです。

CTRL+Cと動作は同じです。

CTRL+C

BASICに復帰します。MONITORでのコマンド入力をスクリーンエディタにしたため、CTRL+Bが機能しないので代替コマンドです。

B[CR]と動作は同じです。

S 16進数4桁 {16進数2桁}の繰り返し[CR]

PC-8001のメモリに16進数4桁が表すアドレスから16進数2桁が表すデータを書き込みます。

[CR]で改行すると有効な16進数2桁データを書き込んだ後、次に書き込みとなるアドレスを表示しますので続きの16進数2桁のデータを入力して[CR]で改行します。

アドレス表示の次に16進数2桁のデータを入力せずに[CR]を押すと終了します。

Sの後ろ、アドレス、データの区切りに空白が有っても無くても構いません。

例)

以下の例はすべて同じ結果となります。

 SA0001122334455

 SA000 11 22 33 44 55

 S A000 1122334455

 S A0001122334455

 S A000 1122 3344 55

D 16進数4桁[CR]

16進数4桁が表すアドレスからPC-8001のメモリの内容を128Byteを一画面として表示します。

一画面表示したところで「NEXT:ANY BACK:B BREAK:ESC」と表示して指示待ちとなるのでBで前の128Byteを表示、ESCで中止、それ以外のキーで次の128Byteの表示となります。

一画面表示している途中でもESCでいつでも中止できます。

ファンクションキーを利用したオートラン機能

ファンクションキーを利用したオートラン機能に対応していますが、一部オリジナルと異なる点があります。

そこでオートラン機能ファイルをロードする時にPC-8001_SDの仕様に自動変換する機能を付けました。(2022.8.21実装)

以下の修正点についてオートラン機能ファイルをロードする時に自動的に修正ロードされますのでオートラン機能ファイルを修正する必要はありません。当然、修正してあっても機能します。

自動で修正される点

 1 CTRL+BではMONITORからBASICへ復帰できません。CTRL+Cに修正されます。

 2 SD-CARDからのBASICプログラムをLOADするコマンドは「LOAD」で、1本のCMTファイルとなっていればファイル名を指定する必要もありませんので「CLOAD"ファイル名"」は「LOAD""」に修正されます。

操作上の注意

 「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を挿入した後、FILES、LOAD、SAVE等でSD-CARDに3回ほどアクセスすれば復旧します。

New City HeroをSDから読み込み実行するための修正

 PC-8001_SDは内藤 時浩さんが頒布されているNew City HeroをPC-8001実機で手軽に遊びたいが為に作ったといっても過言ではありません。

 New City Heroは機械語の多段ロード方式で2段目のプログラム内にCMTからの読み込みルーチンをコールしている箇所がありますので、そこをSDから読み込むためのコール先に修正する必要があります。

 New City HeroのCMT形式ファイルに次の手順で修正を行いPC-8001_SD用のCMT形式ファイルを作り、SD-CARDに保存してください。

 1 頒布していただいたNew City HeroのCMTファイルをbugfire2009さんの「DumpListEditor」にDrag&Dropする

 2 「BASIC入力」タブをクリックして言語「Patch File」を選択する。

 3 表示されているPathc File Sampleをすべて削除し、次の15行に入れ替える。

/CD,F3,0B/=00,00,00

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

/CD,9E,5F/=CD,06,60

 4 「ファイル整理画面にPaste」を押す。

 5 ファイル整理画面に「PATCH.patch」というファイルが追加される。ファイルの位置はどこにあっても可。

 6 「cmt書出し」を押してPC-8001_SD対応済cmtファイルとして保存する。

DumpListEditor動画作成機で作られたCMTファイルへの対応

 DumpListEditor動画作成機で作られたCMTファイルのうち、「Chain(cmt出力時のみ)」をチェックして作られたプログラムはCMTルーチンをコールしますので修正が必要となります。

セミグラ作成機&動画作成機

https://bugfire2009.ojaru.jp/semigra/

で紹介されているきらびぃさん作成の

「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」

「PC8001でBad Apple全編をcmt化」

の二つがこの機能を使っていますのでPC-8001_SDで再生するにはパッチ当てが必要になります。

 なお、以下の方法でPATCHを当てると最後のシーンが無限ループします。最後のファイルにはPATCHを当てないでおけば止まるのですが、手軽にPATCHを当てられますのでご容赦ください。

「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」修正手順

 1 CMTファイルを「DumpListEditor」にDrag&Dropする。

 2 「BASIC入力」タブをクリックして言語「Patch File」を選択する。

 3 表示されているPathc File Sampleをすべて削除し、次の2行に入れ替える。

/CD,3A,5F,30/=CD,09,60,18

/E6,04,20,09/=E6,04,18,09

 4 「ファイル整理画面にPaste」を押す。

 5 ファイル整理画面に「PATCH.patch」というファイルが追加される。ファイルの位置はどこにあっても可。

 6 「cmt書出し」を押してPC-8001_SD対応済cmtファイルとして保存する。

「PC8001でBad Apple全編をcmt化」修正手順

 基本的に「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」の修正手順と同じです。

RAMボートとの共存について

 バンク切替をサポートした以下のRAMボートとの共存、動作確認済みです。

  ちくらっぺさん設計の「32kB拡張RAM基板」

  KUNI-NET元シソペさん設計の「PC-8001用 128kバイトメモリーボード」

PSA基板に増設する拡張メモリー基板で動作しないとの報告を頂きました。
PSA基板に増設する拡張メモリー基板の仕様を確認したところ、拡張ROM領域を単純にRAMに置き換えることを目的として設計されており、バンク切替動作をサポートしていないため共存できません。

 S2のROMDS3を「EXT」にすることでポートE2hを制御して$0000~$7FFFの空間をROM→RAM切替するボードと共存できます。

RIMDS3_SWITCH

 S1のSD→CMT切替は機能しなくなりますが、どちらかにしておいてください。

 PC-8001_SDを繋いだままPC-8001_SDのROMを無効にしたい場合はS2のROMDS3を「FIX」、S1のSD→CMT切替を「CMT」にしてください。

SDアクセスサービスルーチン

 「プログラム側からファイル名を指定してSDから読み込む」機能と「プログラム側からファイル名を指定してSDへ書き込む」機能を追加しました。

 この機能を活用するには、この機能に対応したアプリケーションプログラムが必要となります。

 以下にサービスルーチンの仕様とエントリポイントを公開します。

エントリポイント名前用途
600FROPENREAD FILE OPEN

 HL <- DOS_FILENAME先頭アドレス

 HLレジスタが示すDOS_FILENAMEで読み込み用ファイルをオープン

 DOS_FILENAMEは31文字まで、最後に00Hをつけること。

 フラグレジスタ以外のレジスタは変化しない。

 正常終了 CF=0、異常終了 CF=1

エントリポイント名前用途
6006D_5F9E5F9EH代替

 読み出されたデータ -> A

 読み込み用としてOPENしているファイルから1BYTE読み出し

エントリポイント名前用途
6009H_5F3A5F3AH代替

 読み出しオープンされているファイルから機械語フォーマットで保存されている機械語を読み出す。

 WORK AREA:FF3D~FF3E メモリ書き込み開始アドレス

 正常終了 CF=0、異常終了 CF=1

エントリポイント名前用途
600CMONHOT5C66H代替

 Gコマンドで実行する機械語プログラムからモニタに戻るときには、ここへのジャンプを指定。

 オートラン機能が実行中であれば継続して実行される。

エントリポイント名前用途
6012WAOPENWRITE FILE APPEND OPEN

 HL <- DOS_FILENAME先頭アドレス

 HLレジスタが示すDOS_FILENAMEで追加書き込み用としてファイルをオープン

 DOS_FILENAMEは31文字まで、最後に00Hをつけること。

 フラグレジスタ以外のレジスタは変化しない。

 正常終了 CF=0、異常終了 CF=1

エントリポイント名前用途
601BWNOPENWRITE FILE NEW OPEN

 HL <- DOS_FILENAME先頭アドレス

 HLレジスタが示すDOS_FILENAMEで書き込み用として新たにファイルをオープン。同名のDOS_FILENAMEのファイルがある場合は削除したのちにオープンする。

 DOS_FILENAMEは31文字まで、最後に00Hをつけること。

 フラグレジスタ以外のレジスタは変化しない。

 正常終了 CF=0、異常終了 CF=1

エントリポイント名前用途
6018D_5F2F5F2FH代替

 A <- 書き込みデータ

 書込み用でオープンされているファイルにAレジスタのデータを追加書込みする。

 フラグレジスタ以外のレジスタは変化しない。

 正常終了 CF=0、異常終了 CF=1

エントリポイント名前用途
6015D_5ED95ED9H代替

 HL <- 書き込み開始アドレス

 DE <- 書き込み終了アドレス

 書込み用でオープンされているファイルに書き込み開始アドレスから書き込み終了アドレスまでのメモリ内容を機械語フォーマットで書出し、クローズする。

 WORK AREA:FF3D~FF3E 書き込み開始アドレス

       FF3F~FF40 書き込み終了アドレス

 正常終了 CF=0、異常終了 CF=1

エントリポイント名前用途
601EWCLOSEWRITE FILE CLOSE

 書込み用ファイルをクローズする。

 フラグレジスタ以外のレジスタは変化しない。

 正常終了 CF=0、異常終了 CF=1

SDアクセスサービスルーチンのテスト用プログラム

 SDアクセスサービスルーチンのテストと使い方のサンプルとしてZ80フォルダ内SD Access service routine Testフォルダにテストプログラムを置きました。

 「sd_test.BIN.CMT」と「SD_TEST2.BIN.CMT」の二つをSDカードにコピーしてモニタ Lコマンドで「sd_test.BIN.CMT」を読み込み実行してください。

 画面に01からFFまで表示した後、「SD TEST OK」と表示して終了します。

 SDカードには「SD_WRITE_READ_TEST.DAT」と「SD_WRT_DIRECT_TEST.BIN.CMT」の二つのファイルが出来上がっているはずです。

 「SD_WRITE_READ_TEST.DAT」は510Byteのファイルサイズで01からFF、FFから01までのデータが格納されているはずです。

 「SD_WRT_DIRECT_TEST.BIN.CMT」は161ByteのファイルサイズでA000h~A096hまでのメモリ内容を機械語フォーマットのcmtとして保存した内容となっているはずです。

謝辞

 基板の作成に当たり以下のデータを使わせていただきました。ありがとうございました。

 Arduino Pro Mini

  https://github.com/g200kg/kicad-lib-arduino

 AE-microSD-LLCNV

  https://github.com/kuninet/PC-8001-SD-8kRAM

 New City Heroの修正点を公開することを快く承諾してくださった内藤 時浩様、ありがとうございました。

 NBASICのコマンド追加に当たっては、ちくらっぺ様のSD-DOSがとても参考になりました。ありがとうございました。

  https://github.com/chiqlappe/SD-DOS

 DumpListEditorの動画作成機で作成されたcmtファイルへの修正方法を公開することを快く承諾してくださったbugfire2009様、ありがとうございました。

 スタック領域を破壊し正常にロードが出来ない機械語プログラムの事例について情報を提供してくださった久保ちゃん様、ありがとうございました。

追記

2022.7.23

 BASICから機械語ファイルをLOADしようとしたときのエラーメッセージを修正しました。

2022.7.24

 FILES 文字列[CR]としたときにSYNTAX ERRORとなる事象を修正しました。これにより「FILSE SEARCH:」と聞いてくる仕様は廃止。

2022.7.25

 FILESを↑キーで打ち切ったとき、時々Syntax Errorが発生するため2行戻す動きを廃止

 FILES及びFコマンドの説明中誤りがあったので修正

  一回で表示される行数 誤)20行 正)16行

  打ち切るキー 誤)SHIFT+BREAK 正)ESC

2022.7.27

 DOSファイル名での拡張子について曖昧な記述があったので修正しました。

2022.8.4

 Arduinoを基板に直付けしている場合、Arduinoプログラムを書き込むときの注意点を書き加えました。

 Kicadライブラリ設定を修正しました。

 BASICでSyntax Errorが表示される事象に対応するためEXT_ROMプログラムに修正を加えました。

2022.8.14

 EXTROM.BINを修正

  MONITOR Gコマンドの処理でPOP BCが抜けていたので追加。

  mk2用と統合

   拡張ROM認識コードを041H,042H,00Hとした。

   SHIFTキーを押しながら起動することで拡張ROMを有効にするか選択できるようにした。(mk2用)

   mk2においてもfiles、save、killコマンドでSyntaxErrorが出ないように修正

2022.8.18

 DumpListEditorの動画作成機機能で作成されたきらびぃさん作成の「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」、「PC8001でBad Apple全編をcmt化」の修正方法を追加しました。

2022.8.21

 MONITOR Lコマンドで読み込み時にオートラン機能ファイルであればCTRL+B、CLOADをSD用に書き換えるようにした。

2022.8.22

 N-BASIC Ver1.0では動作しない旨を追記、カードエッジコネクタでの接続時に裏面の保護について追記。

 N-BASIC Ver1.0で動作させる方法を追記。

2022.8.31

 RAMボードと共存するための改造方法を追記。

2022.9.18

 PSA基板に増設する拡張メモリー基板とは共存できないことを追記

2022.9.25

 MicroSD Card Adapter用の端子、ROMDS3制御切り替えスイッチを付加し、基板をRev1.2に更新。

2023.5.30

 E800h以降までロードする機械語プログラムをロードするとスタック領域を破壊してしまうことに対処。

2023.6.3

 mk2用ソースの修正のためEXT_ROM.sを修正。

2023.6.10

 SDアクセスサービスルーチンを追加、エントリポイントを公開。5F3AH代替ルーチンを見直し。

2023.8.11

 Rev1.4基板を追加しました。

2023.9.11

 N-BASIC V1.0の場合、MONITORに入ることでPC-8001_SDの初期化が行われるように修正。

2023.10.5

 ファイル名長さの仕様を訂正

  誤)「.CMT」を除いて32文字 正)「.CMT」を含めて31文字

2024.1.15

 SDカードは8GB以下が望ましいことを追記。

2024.3.12

 電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消した。

2024.9.11

 サービスルーチンでの使用ワークエリアを追記

2025.1.29

 コネクタの記述を修正しました。

2025.8.15

 PC-8001本体後部拡張端子の接触不良について追記。PC-8001mk2_SDとのソースコード互換性確保のためN-BASICV1.0判別ルーチンを後ろに移動。

2025.8.30

 サービスルーチンで解説していなかった600Ch(MONHOT)の解説を追加。

2026.8.16

 旧基板用の記述を整理しました。

Parts

23
QtyValueFootprintReferences
50.1uFCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC1, C2, C3, C4, C5
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3MH1, MH2, MH3, MH4
274LS30Package_DIP:DIP-14_W7.62mm_LongPadsU2, U3
1100uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC6
12764Package_DIP:DIP-28_W15.24mm_LongPadsU5
174LS04Package_DIP:DIP-14_W7.62mm_LongPadsU1
18255Package_DIP:DIP-40_W15.24mm_LongPadsU4
1Arduino_Pro_Mini_5VKicad:Arduino_Pro_MiniU6
1Conn_01x25Connector_PinHeader_2.54mm:PinHeader_1x25_P2.54mm_VerticalJ3
1MicroSD Card AdapterConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ4
1Micro_SD_Card_KitKicad:AE-microSD-LLCNVJ2
1PC-8001 BUSConnector_PinHeader_2.54mm:PinHeader_2x25_P2.54mm_HorizontalJ1
1PC-8001 BUSConnector_PinHeader_2.54mm:PinHeader_2x25_P2.54mm_VerticalJ5
1SLIDE SWITCHButton_Switch_THT:SW_CuK_JS202011CQN_DPDT_StraightS2
1SLIDE_SWITCH_3PConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS1

Similar boards

  • 2 layers49.6 × 78.3 mmOdyssey, the printed circuit board in 3D

    Odyssey

    jotego/jtcores

    FPGA cores compatible with multiple arcade game machines and KiCAD schematics of arcade games. Working on MiSTer FPGA/Analogue Pocket

    24 parts346GPL-3.0
  • 4 layers243.8 × 170.2 mmHEC1, the printed circuit board in 3D

    HEC1

    Andy18650/HEC-Model-Z1

    A Z80 computer with protected mode support

    126 parts36GPL-3.0
  • 2 layers100 × 100 mmMZ80K SD, the printed circuit board in 3D

    MZ80K SD

    yanataka60/MZ80K_SD

    MZ-80KシリーズでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです

    25 parts28MIT
  • 2 layers99.9 × 95 mmPC-8001mk2 SD, the printed circuit board in 3D

    PC-8001mk2 SD

    yanataka60/PC-8001mk2_SD

    PC-8001mk2でSD-CARDからCMT形式ファイルのロード、セーブ機能を実現するものです。

    15 parts24MIT
  • 2 layers100 × 100 mmMZ2000 SD, the printed circuit board in 3D

    MZ2000 SD

    yanataka60/MZ-2000_SD

    MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

    30 parts16MIT
  • 2 layers100 × 100 mmFM-7 SD, the printed circuit board in 3D

    FM-7 SD

    yanataka60/FM-7_SD

    FM-8、FM-7、FM-77シリーズでSD-CARDからロード、セーブ機能を実現するものです。

    21 parts14MIT
  • 2 layers98.3 × 107.1 mmCoco9511pak, the printed circuit board in 3D

    Coco9511pak

    barberd/coco9511pak

    This board is a cartridge for the Tandy Radio Shack TRS-80 Color Computer (CoCo), an 8 bit computer produced between 1980 and 1991. It provides an Arithmetic Processor Unit (APU), the AMD 9511, to the CoCo.

    44 parts13GPL-3.0
  • 2 layers79 × 100 mmPC-6001mk2 SD, the printed circuit board in 3D

    PC-6001mk2 SD

    yanataka60/PC-6001mk2_SD

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

    17 parts11MIT

Questions

How big is the PC-8001 SD PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PC-8001 SD use?

23 parts, built around the 74LS30PC and 74LS04PC. 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 PC-8001 SD KiCad files?

From the yanataka60/PC-8001_SD repository on GitHub, at the commit this page was made from: the board is Kicad/PC-8001_SD.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the PC-8001 SD 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).