PC-8001でSD-CARDからCMT形式ファイルのロード、セーブ機能を実現するものです。
CMTからの読み込み実行に数分掛かっていたゲームも数十秒で実行できます。
接続は、PC-8001本体後ろの拡張端子に接続しますが、50pフラットケーブルでの接続、50pカードエッジコネクタでの接続のどちらかを選択できます。
なお、Arduino、ROMへ書き込むための機器が別途必要となります。
(2023.8.11)拡張端子と同じ配列の2x25Pinコネクタを追加したRev1.4基板を追加しました。これにより50pカードエッジコネクタで接続した時にもRAMボード等を接続できるようになります。
(2023.9.11)N-BASIC Ver1.0で動作させるには起動直後に「MON」を実行し、MONITORに入ることでPC-8001_SDの初期化を行うようにしました。Bコマンド又はCTRL+CでBASICに戻ることでBASICからもPC-8001_SDが使えるようになります。
KiCadフォルダ内のPC-8001_SD.pdfを参照してください。
KiCad1_4フォルダ内のPC-8001_SD.pdfを参照してください。
J5 2x25Pinコネクタを追加しています。
番号 | 品名 | 数量 | 備考 |
---|---|---|---|
J1、J3のいずれか | |||
J1 | 2x25Pinコネクタ | 1 | 秋月電子通商 PH-2x40RGなど(注1) |
J3 | 50Pカードエッジコネクタ | 1 | せんごくネット通販 HRS CR22A-50D-2.54DSなど(注1) |
J2、J4のいずれか | |||
J2 | Micro_SD_Card_Kit | 1 | 秋月電子通商 AE-microSD-LLCNV (注2) (注4) |
J4 | MicroSD Card Adapter | 1 | Arduino等に使われる5V電源に対応したもの (注4) |
U1 | 74LS04 | 1 | |
U2 U3 | 74LS30 | 2 | |
U4 | 8255 | 1 | |
U5 | 2764/28C64相当品 | 1 | |
U6 | Arduino_Pro_Mini_5V | 1 | Atmega328版を使用 168版は不可。(注3) |
C1-C5 | 積層セラミックコンデンサ 0.1uF | 5 | |
C6 | 電解コンデンサ 16v100uF | 1 | |
S1 | 3Pスライドスイッチ | 1 | 秋月電子通商 SS12D01G4など |
S2 | 2回路2接点 スライドスイッチ | 1 | 秋月電子通商 IS-2235-Gなど |
ピンヘッダ | 2Pin分 | Arduino_Pro_MiniにはA4、A5用のピンヘッダが付いていないため別途調達が必要です 秋月電子通商 PH-1x40SGなど | |
ピンソケット(任意) | 26Pin分 | Arduino_Pro_Miniを取り外し可能としたい場合に調達します 秋月電子通商 FHU-1x42SGなど |
注1)J1又はJ3のどちらかを選択して取り付けてください。
注2)秋月電子通商 AE-microSD-LLCNVのJ1ジャンパはショートしてください。
注3)Arduino Pro MiniはA4、A5ピンも使っています。
注4)J2又はJ4のどちらかを選択して取り付けてください。
Rev1.2基板に以下の部品が追加となります。
番号 | 品名 | 数量 | 備考 |
---|---|---|---|
J5 | 2x25Pinコネクタ | 1 | 秋月電子通商 PH-2x40RGなど(注1) |
J4に取り付けます。
MicroSD Card Adapterについているピンヘッダを除去してハンダ付けするのが一番確実ですが、J4の穴にMicroSD Card Adapterをぴったりと押しつけ、裏から多めにハンダを流し込むことでハンダ付けをする方法もあります。なお、この方法の時にはしっかりハンダ付けが出来たかテスターで導通を確認しておいた方が安心です。
ハンダ付けに自信のない方はJ2の秋月電子通商 AE-microSD-LLCNVをお使いください。AE-microSD-LLCNVならパワーLED、アクセスLEDが付いています。
以下のピン番号を参考に変換基板等繋ぎ方は適宜対応してください。
AE-microSD-LLCNVピン番号 | MicroSD Card Adapterピン番号 | 信号名 |
---|---|---|
1 | 2 | 5V |
4 | 1 | GND |
5 | 5 | SCK |
6 | 3 | MISO |
7 | 4 | MOSI |
8 | 6 | CS |
2x25Pinコネクタ(J1)を取り付けた場合には、本体との接続用ケーブルが必要となります。
片側が2.54mmピッチ2x25Pinメスコネクタ、片側が2.54mmピッチ50pカードエッジコネクタのフラットケーブルを用意してください。
Z80フォルダ内のEXT_ROM.binをROMライター(TL866II Plus等)を使って2764又は28C64に書き込みます。
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を外したうえで書き込んでください。
取付穴は外側から1列目と2列目を使います。基板の表側に取り付けます。
取付穴は外側から1列目と3列目を使います。基板の裏側に取り付けます。
PC-8001本体後ろの拡張端子に接続します。
J5 2x25Pinコネクタは、拡張端子と同じ配列です。フラットケーブルを接続してRAMボード等を接続できますが、接続する向きを間違えないようにしてください。
出来れば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)」を実行してください。
FILES[CR]とするとSD-CARDルートディレクトリにあるファイルの一覧を表示します。
FILES "文字列"[CR]とするとSD-CARDルートディレクトリにあるその文字列から始まるファイルの一覧を表示します。
20件表示したところで指示待ちになるので打ち切るならESC又は↑を入力すると打ち切られ、Bキーで前の16件に戻ります。それ以外のキーで次の16件を表示します。
行頭に「LOAD "」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD可能です。
表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。
FILES "文字列"[CR]とする場合、基本的にはダブルコーテーションが無くても機能しますが、数字で始まるファイル名の場合ダブルコーテーションが無いと検索できません。
× FILES 3
○ FILES "3"
指定した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"
直前に読み込まれたDOSファイルが多段ロード用に複数のCMTファイルが連結されており、2段目以降がBASICプログラムであった時のみ有効に動作し、BASICプログラムをSD-CARDからLOADします。
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と表示されます。
指定したDOSフィル名がSD-CARDに存在すればSD-CARDから削除します。
ファイル名の最後に「.CMT」も指定してもしなくても構いません。
基本的にはDOSファイル名をダブルコーテーションで括らなくても機能しますが、数字で始まるファイル名の場合ダブルコーテーションが無いとKILLできません。
NOT FIND FILEと表示されます。
× KILL 3D MAZE
○ KILL "3D MAZE"
文字列を入力せずにF[CR]のみ入力するとSD-CARDルートディレクトリにあるファイルの一覧を表示します。
文字列を付けて入力すればSD-CARDルートディレクトリにあるその文字列から始まるファイルの一覧を表示します。
20件表示したところで指示待ちになるので打ち切るならESC又は↑を入力すると打ち切られ、Bキーで前の16件に戻ります。それ以外のキーで次の16件を表示します。
行頭に「*L 」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD可能です。
表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。
F[CR]
F S[CR]
F SP[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」を読み込みます。
直前に読み込まれたDOSファイルが多段ロード用に複数のCMTファイルが連結されており、2段目以降が機械語プログラムであった時のみ有効に動作し、機械語プログラムをSD-CARDからLOADします。
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」で保存する。
16進数4桁が表すアドレスにジャンプします。
Gの後ろに空白があっても無くても構いません。
BASICに復帰します。MONITORでのコマンド入力をスクリーンエディタにしたため、CTRL+Bが機能しないので代替コマンドです。
CTRL+Cと動作は同じです。
BASICに復帰します。MONITORでのコマンド入力をスクリーンエディタにしたため、CTRL+Bが機能しないので代替コマンドです。
B[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
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回ほどアクセスすれば復旧します。
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 表示される3つのBINファイルをうち、2番目のBINファイルを「マシン語入力に送る」を押す
3 「CD F3 0B」を検索して「00 00 00」に修正(1箇所)
4 「9E 5F」を検索して「06 60」に修正(14箇所)
5 v1.1.1の場合、「9E 5F」の検索では13箇所しか見つからないので「CD 9E」で検索し、「9E」を「06」に次行最初の「5F」を「60」に修正(1箇所)
6 修正が終わったら「ファイル整理画面にPaste」を押す
7 ファイル整理画面に戻ったことを確認し、「cmt書出し」を押してPC-8001_SD対応済cmtファイルとして保存する
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ファイルのうち、「Chain(cmt出力時のみ)」をチェックして作られたプログラムはCMTルーチンをコールしますので修正が必要となります。
セミグラ作成機&動画作成機
https://bugfire2009.ojaru.jp/semigra/
で紹介されているきらびぃさん作成の
「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」
「PC8001でBad Apple全編をcmt化」
の二つがこの機能を使っていますのでPC-8001_SDで再生するにはパッチ当てが必要になります。
なお、以下の方法でPATCHを当てると最後のシーンが無限ループします。最後のファイルにはPATCHを当てないでおけば止まるのですが、手軽にPATCHを当てられますのでご容赦ください。
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ファイルとして保存する。
基本的に「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」の修正手順と同じです。
ですが、「PC8001でBad Apple全編をcmt化」には「EA68-EAD4.BIN」が最初に一つしかありません。
CMTでは問題なく動作しますが、PC-8001_SDではLOADだけで止まってしまいますので「EA68-EAD4.BIN」を「メガCD版シルフィードのデモをPC8001で再生してみたフル版(修正版)」のように一つ置きにコピー&ペーストします。
終わったら『2 「BASIC入力」タブをクリックして言語「Patch File」を選択する。』以降を行ってください。
バンク切替をサポートした以下のRAMボートとの共存、動作確認済みです。
ちくらっぺさん設計の「32kB拡張RAM基板」
KUNI-NET元シソペさん設計の「PC-8001用 128kバイトメモリーボード」
S2のROMDS3を「EXT」にすることでポートE2hを制御して$0000~$7FFFの空間をROM→RAM切替するボードと共存できます。
S1のSD→CMT切替は機能しなくなりますが、どちらかにしておいてください。
PC-8001_SDを繋いだままPC-8001_SDのROMを無効にしたい場合はS2のROMDS3を「FIX」、S1のSD→CMT切替を「CMT」にしてください。
ポートE2hを制御して$0000~$7FFFの空間をROM→RAM切替するボードと共存するにはパターンカットとジャンパ線の追加による改造が必要となります。
本体内拡張ROM用ICソケットに挿入されたROMとの共存を考慮した設計だったのですが、RAMボードとの共存には裏目に出てしまいました。
ですのでこの改造を行うとスイッチによるSD→CMTの切替又は、本体内拡張ROM用ICソケットに挿入されたROMとの切替は出来なくなりますので承知の上改造願います。
パターンカット箇所 |
---|
ROMDS3(コネクタ12pin)から74LS04 3pinへ |
74LS04 4pinから74LS30 5pinへ |
ジャンパ線 |
---|
ROMDS3(コネクタ12pin)から74LS30 5pinへ |
なお、3Pスライドスイッチは意味をなさなくなりますが撤去するとLS04の入力が不定となるので撤去する必要はありません。撤去するのであれば3Pスライドスイッチの中点とGNDをジャンパしてLowレベルに固定してください。
「プログラム側からファイル名を指定してSDから読み込む」機能と「プログラム側からファイル名を指定してSDへ書き込む」機能を追加しました。
以下にサービスルーチンの仕様とエントリポイントを公開します。
エントリポイント | 名前 | 用途 |
---|---|---|
600F | ROPEN | READ FILE OPEN |
HL <- DOS_FILENAME先頭アドレス
HLレジスタが示すDOS_FILENAMEで読み込み用ファイルをオープン
DOS_FILENAMEは31文字まで、最後に00Hをつけること。
フラグレジスタ以外のレジスタは変化しない。
正常終了 CF=0、異常終了 CF=1
エントリポイント | 名前 | 用途 |
---|---|---|
6006 | D_5F9E | 5F9EH代替 |
読み出されたデータ -> A
読み込み用としてOPENしているファイルから1BYTE読み出し
エントリポイント | 名前 | 用途 |
---|---|---|
6009 | H_5F3A | 5F3AH代替 |
読み出しオープンされているファイルから機械語フォーマットで保存されている機械語を読み出す。
正常終了 CF=0、異常終了 CF=1
エントリポイント | 名前 | 用途 |
---|---|---|
6012 | WAOPEN | WRITE FILE APPEND OPEN |
HL <- DOS_FILENAME先頭アドレス
HLレジスタが示すDOS_FILENAMEで追加書き込み用としてファイルをオープン
DOS_FILENAMEは31文字まで、最後に00Hをつけること。
フラグレジスタ以外のレジスタは変化しない。
正常終了 CF=0、異常終了 CF=1
エントリポイント | 名前 | 用途 |
---|---|---|
601B | WNOPEN | WRITE FILE NEW OPEN |
HL <- DOS_FILENAME先頭アドレス
HLレジスタが示すDOS_FILENAMEで書き込み用として新たにファイルをオープン。同名のDOS_FILENAMEのファイルがある場合は削除したのちにオープンする。
DOS_FILENAMEは31文字まで、最後に00Hをつけること。
フラグレジスタ以外のレジスタは変化しない。
正常終了 CF=0、異常終了 CF=1
エントリポイント | 名前 | 用途 |
---|---|---|
6018 | D_5F2F | 5F2FH代替 |
A <- 書き込みデータ
書込み用でオープンされているファイルにAレジスタのデータを追加書込みする。
フラグレジスタ以外のレジスタは変化しない。
正常終了 CF=0、異常終了 CF=1
エントリポイント | 名前 | 用途 |
---|---|---|
6015 | D_5ED9 | 5ED9H代替 |
HL <- 書き込み開始アドレス
DE <- 書き込み終了アドレス
書込み用でオープンされているファイルに書き込み開始アドレスから書き込み終了アドレスまでのメモリ内容を機械語フォーマットで書出し、クローズする。
正常終了 CF=0、異常終了 CF=1
エントリポイント | 名前 | 用途 |
---|---|---|
601E | WCLOSE | WRITE FILE CLOSE |
書込み用ファイルをクローズする。
フラグレジスタ以外のレジスタは変化しない。
正常終了 CF=0、異常終了 CF=1
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にアクセスできない問題を解消した。