MZ-80A ROMディスク — ユーザーマニュアル
RomDisk ユーザーマニュアル
Sharp MZ-80A RomDisk は、Sharp MZ-80A のモニター ROM ソケットおよびユーザー ROM ソケットに直接差し込む PCB 娘基板です。MZ-1200 にユーザー ROM ソケットが取り付けられている場合も同様に使用できます。この基板は 2 つの読み取り専用チップを最大 4 個の 512KB SST39SF040 Flash RAM デバイスおよびオプションの 512KB AS6C4008 スタティック RAM に置き換え、最大 2MB のバンク切り替え式 ROM ドライブ、ハードウェア SPI インターフェイス、マスストレージ用のマイクロ SD カードソケットを提供します。基板上で動作するファームウェア — Rom ファイリングシステム (RFS) — は、拡張モニター、それぞれ 16MB の 10 ドライブを持つ SD カードファイリングシステム、CP/M 2.2 ブート、および 30 以上の新しいモニターコマンドを提供しながら、使い慣れた SA-1510 の
* プロンプトとすべての元のコマンドをそのまま維持します。
このマニュアルは物理的なハードウェアを対象としています:RomDisk PCB の概要、インストール方法、Flash チップのプログラム方法、SD カードの準備方法、RFS ファームウェアの日常的な使用方法について説明します。ファームウェアのアーキテクチャとビルドシステムの詳細については RFS テクニカルガイド を参照してください。ソースコードの内部については RFS 開発者ガイド を参照してください。
必要なもの
作業を始める前に、以下のものを用意してください:
| アイテム | 備考 |
|---|---|
| RomDisk PCB | v2.1 推奨(完成品またはキット形式)。v1.1 および v2.0 も適切なファームウェアビルドでサポートされています。 |
| Sharp MZ-80A または MZ-1200 | RomDisk は MZ-80A または MZ-1200 にのみ物理的に適合します(MZ-1200 にはユーザー ROM ソケットが必要です)。MZ-700 はソフトウェアアーキテクチャが似ていますが、物理的な ROM ソケットと PCB を収納する内部スペースがありません。 |
| TL866 II+ または互換 EPROM プログラマー | ボード外で Flash ROM チップを書き込むために必要です。例ではオープンソースの minipro ユーティリティを使用しています。 |
| マイクロ SD カード(1GB 以上、FAT フォーマット済み) | あらかじめビルドされた SD カードイメージは約 512MB です。1GB 以上の標準的なマイクロ SD カードであれば使用できます。 |
| あらかじめビルドされた ROM および SD カードイメージ | Gitea リポジトリの releases/ ディレクトリにあります。 |
| 静電気防止策 | 静電気防止リストストラップまたはマット。Flash チップと PCB は必ずアースした後に扱ってください。 |
| チップ引き抜き工具または小型マイナスドライバー | マザーボードソケットから既存の ROM チップを取り外すために使用します。 |
物理的なインストール
RomDisk PCB は、2 つの工場出荷時 ROM チップの代わりに Sharp MZ-80A に取り付けます。以下の手順は標準的な MZ-80A デスクトップモデルに適用されます。チップソケット周辺での作業には注意が必要ですが、手順自体はわかりやすいので丁寧に作業してください。
本体を開ける
- MZ-80A の電源を切り、電源ケーブルを抜きます。
- 本体を裏返します。ケース底面のネジ 2 本を外します。
- 慎重に上部カバーを持ち上げ、脇に置きます。これでメイン PCB が露出します。
- IC2(モニター ROM、基板の中央左寄りにある 24 ピン DIP、0x0000–0x0FFF にマップ)と IC3(ユーザー ROM、24 ピン DIP、0xE800–0xEFFF にマップ)の位置を確認します。
チップ引き抜き工具またはマイナスドライバーを使用して、IC2 と IC3 を慎重にソケットから取り外します。両端を少しずつ交互に持ち上げながら作業してください。片端だけを無理に引き上げるとピンが曲がります。両方のチップを安全な静電気防止の場所に保管しておきます。RomDisk を取り付けた後は不要になりますが、予備として保管しておく価値があります。
RomDisk PCB を取り付ける
- RomDisk PCB の裏面には 2 セットの DIP リフターピンアレイがあります。モニター ROM ソケット(IC2)用の 24 ピンアレイと、ユーザー ROM ソケット(IC3)用の 24 ピンアレイです。これらは取り外した ROM があったソケットに直接差し込みます。
- 差し込む前にピン 1 の向きを確認してください。各リフターアレイのピン 1 は、対応するマザーボードソケットのピン 1 マーカー(切り欠きまたは点)に合わせる必要があります。PCB を逆向きに挿入すると、本体が起動しなくなり、部品が損傷する可能性があります。
- PCB を両方のソケットに同時にしっかりと均等に押し込み、ピンアレイが完全に固定されるようにします。PCB はマザーボード表面より高い位置に来ますが、これは正常です。
- 横から両方のコネクタを確認し、すべてのピンが正しく接続されており、曲がったり隣接するピンと橋がかかったりしていないことを確認します。
- RomDisk PCB はマザーボードより高く突き出します。ケースを組み立て直したとき、上部カバーの裏面にあるワイヤー、コネクタ、または部品が PCB に当たらないことを確認してください。
RomDisk v2.0 および v2.1 ボードにはマイクロ SD カードソケットが含まれています。MZ-80A のケースはほぼ完全に密閉されているため、ソケットはケース外部またはケースの隙間からアクセスできるようにする必要があります。ビルダーが用いる一般的な方法には以下のものがあります:
本体を閉じる
- ソケットケーブルを本体右側にある既存のテープデッキ開口部に通す方法。アクセスできる十分な隙間がすでにあります。
- ケースの左または背面パネルに小さなスロット(通常 15 × 2 mm)を切り込み、ソケットをホットグルーで外面に固定する方法。
閉じる前に最終確認を行います:RomDisk PCB が両方のソケットにしっかりと固定されていること、両方のコネクタでピン 1 が正しく向いていること、上部カバーの裏面に当たるものがないことを確認します。上部カバーを取り付け、底面の 2 本のネジを締め直します。古い機種ではプラスチックのスタンドオフが繊細なので、締めすぎないよう注意してください。
Flash ROM のプログラム
RomDisk PCB 上の Flash ROM チップは、ボードを取り付ける前にプログラムする必要があります。モニター ROM Flash(モニターソケット内の U1/SST39SF040)は、Sharp MZ-80A のハードウェアがモニター ROM アドレス空間へのバス書き込みサイクルをブロックするため、回路内で書き込むことができません。すべてのチップを外部 EPROM プログラマーでプログラムする必要があります。
あらかじめビルドされた ROM イメージは RFS Gitea リポジトリの
releases/ ディレクトリにあります。以下のファイルをダウンロードしてください:
| ファイル | チップ | ソケット |
|---|---|---|
MROM_ROMDISK_256.bin |
SST39SF040 | U1 — モニター ROM Flash(必須) |
USER_ROM_256.bin |
SST39SF040 | U4 — ユーザー ROM Flash 1(必須) |
USER_ROM_II_256.bin |
SST39SF040 | U5 — ユーザー ROM Flash 2(オプション、v2.0+) |
USER_ROM_III_256.bin |
SST39SF040 | U6 — ユーザー ROM Flash 3(オプション、v2.0+) |
TL866 II+ または互換プログラマーを
minipro コマンドラインユーティリティとともに使用します。RomDisk PCB から各 Flash チップを取り外し、プログラマーの ZIF ソケットに挿入して、適切なコマンドを実行します:
# モニター ROM Flash(U1)をプログラム: minipro -p SST39SF040 -w MROM_ROMDISK_256.bin # ユーザー ROM Flash 1(U4)をプログラム: minipro -p SST39SF040 -w USER_ROM_256.bin # ユーザー ROM Flash 2(U5)をプログラム — オプション: minipro -p SST39SF040 -w USER_ROM_II_256.bin # ユーザー ROM Flash 3(U6)をプログラム — オプション: minipro -p SST39SF040 -w USER_ROM_III_256.bin
各チップのプログラム後、
ハードウェアバージョンに関する注記
minipro は書き込まれたデータをソースファイルと自動的に照合します。Verification OK というメッセージが表示されれば、チップが正しく書き込まれたことを確認できます。プログラムされた各チップを RomDisk PCB のソケットに戻します。
モニター Flash には 8 個の 4KB バンクが含まれています。各ユーザー ROM Flash チップには 12 個の 2KB バンクが含まれています。これらを合わせると、完全な RFS ファームウェア、ROM ドライブプログラム(BASIC、CP/M ローダー、アセンブラーなど)、SD カードと CP/M 操作中に使用されるバンク切り替えワークスペースが提供されます。
RomDisk PCB には 3 つのバージョンがあります。ROM イメージはすべてのバージョンで互換性がありますが、ハードウェア機能は異なります:
| バージョン | 主な特徴 |
|---|---|
| v1.1 | モニターソケットに 512KB Flash が 1 つ、ユーザーソケットに 1 つ。シンプルなラッチでバンク選択を行います。SD カードなし。ROM ドライブとしての使用のみに適しています。 |
| v2.0 | コード化ラッチ(制御レジスタのロックを解除するために 0xEFF8–0xEFFF アドレスへの 16 回連続読み取りを必要とする 74HCT191 カウンター)、第 2 および第 3 のユーザー ROM Flash スロット(U5、U6)、オプションの 512KB SRAM(AS6C4008)、8MHz で動作するソフトウェアビットバン SPI と専用ハードウェア SPI 回路の両方を備えた SD カードソケットを追加します。 |
| v2.1 | バグ修正リリース。DRAM リフレッシュアドレスデコードとコード化ラッチリセット信号の干渉を AND ゲート(ダイオードで構成)を追加し、0xEFF9 をラッチクリアラインとして再配線することで修正しています。v2.0 のすべての機能が保持されています。新しいビルドにはこのバージョンを推奨します。 |
SD カードイメージの書き込み
あらかじめビルドされた SD カードイメージは、10 個の RFS ドライブ(各 16MB、番号 0–9)と 7 個の CP/M 2.2 ディスクイメージを 1 つの生のバイナリファイルにまとめたものです。SD カードのセクター 0 から直接書き込みます。パーティションテーブルは作成されず、書き込み前のフォーマット手順も不要です。
Gitea リポジトリの
releases/ ディレクトリから SHARP_MZ80A_RFS_CPM_IMAGE_1.img をダウンロードします。マイクロ SD カードをホストコンピューターに挿入し、デバイスノードを確認します(Linux では /dev/sdb など)。デバイスノードを慎重に確認してください — 誤ったデバイスに書き込むと、データが取り返しのつかない形で上書きされます。
# Linux / macOS — /dev/sdX を SD カードのデバイスノードに置き換えてください: dd if=SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=4M status=progress sync
status=progress フラグは書き込みの進行状況を示すバイトカウントを表示します。sync コマンドはカードを取り外す前にすべての保留中の書き込みをフラッシュします。macOS では bs=4m(小文字)を使用し、使用している dd のバージョンがサポートしていない場合は status=progress を省略してください。
書き込みが完了したら、ホストコンピューターからカードを安全に取り出し、RomDisk の SD カードソケットに挿入します。
イメージは以下のようにストレージを整理しています:
| 領域 | オフセット | 内容 |
|---|---|---|
| RFS ドライブ 0 | 0 MB | 共通および MZ-80A マシンコードプログラム |
| RFS ドライブ 1 | 16 MB | MZ-80K マシンコードプログラム |
| RFS ドライブ 2 | 32 MB | MZ-700 マシンコードプログラム |
| RFS ドライブ 3 | 48 MB | MZ-800 / MZ-1500 マシンコードプログラム |
| RFS ドライブ 4 | 64 MB | MZ-80B / MZ-2000 マシンコードプログラム |
| RFS ドライブ 5 | 80 MB | BASIC プログラム、タイプ 2(MZ-80A) |
| RFS ドライブ 6 | 96 MB | BASIC プログラム、タイプ 2(MZ-80K) |
| RFS ドライブ 7 | 112 MB | BASIC プログラム、タイプ 5(MZ-700 / MZ-800) |
| RFS ドライブ 8 | 128 MB | その他のプログラム |
| RFS ドライブ 9 | 144 MB | その他のプログラム |
| CP/M ディスクイメージ | 256 MB | ドライブ A:–G:(Turbo Pascal、Hi-Soft C、WordStar、Grant Searle コレクションなど) |
最初の起動
Flash チップをプログラムし、RomDisk PCB を両方の ROM ソケットに取り付けたら、MZ-80A の電源を入れます。モニター ROM はアドレス 0xE800 で RFS ファームウェアを検出して実行します。RFS は初期化され、SA-1510 のサインオンバナーに "
+ RFS vx.xx" を追加します:
SHARP MZ-80A Monitor SA-1510 + RFS *
* はモニタープロンプトです。すべての元の SA-1510 コマンドはそのまま使用できます。H を入力して Enter を押すと、ページ付きの RFS コマンドヘルプ画面が表示されます。Space を押すとページを進めることができます。
+ RFS の行は RFS 自体が初期化するたびに表示されます。SD カードの有無には依存しません。バナーを表示した後、RFS は SD カードの初期化を試みます。カードが存在しない、または初期化に失敗した場合、バナーの下にエラーコードが表示されます。SD カードが動作していなくても、* プロンプトが表示され、すべての ROM ベースのコマンド(IR、LR など)が引き続き使用できます。
RFS モニターコマンド
RFS モニターコマンドの完全なリストを以下に示します。元の SA-1510 コマンドはすべて引き続き使用でき、ここには記載されていません。アドレスとカウントは、特に指定がない限り、常に 4 桁の 16 進数で入力します。
| コマンド | パラメーター | 説明 |
|---|---|---|
| 0 .. 9 | — | アクティブな RFS SD カードドライブを指定した番号(0–9)に切り替えます。数字を入力して Enter を押します。 |
| 40 | — | 40 列表示モードに切り替えます。Kuma 40/80 列アップグレードまたは Video Module が必要です。 |
| 80 | — | 80 列表示モードに切り替えます。Kuma 40/80 列アップグレードまたは Video Module が必要です。 |
| B | — | キーボード入力ビープ音を有効または無効にします(コマンドを発行するたびに切り替わります)。 |
| BASIC | — | アクティブな SD カードドライブまたは ROM から BASIC SA-5510 インタープリターを検索し、ロードして実行します。 |
| C | [値] |
0x1200 から 0xD000 のメモリを 0x00 で、または指定した 8 ビット 16 進数の値で初期化します。 |
| CP | src dst size |
メモリブロックをコピーします。3 つの引数はすべて 4 桁の 16 進数:送信元アドレス、宛先アドレス、バイト数。 |
| CPM | — | アクティブな SD カードドライブまたは ROM から CP/M 2.2 を検索し、ロードしてブートします。 |
| D | addr [addr2] |
addr から addr2 までのメモリを 16 進数および ASCII でダンプします(終了アドレスが指定されていない場合は 20 行)。任意のキーを押して続行、D でページダウン、U でページアップ、X で終了。アドレスなしで D を繰り返すと最後の位置から続きます。 |
| EC | 名前 または 番号 |
アクティブな SD カードドライブからファイルを削除します。IC ディレクトリに表示されている名前または 2 桁の 16 進ファイル番号で識別します。 |
| F | [ドライブ] |
フロッピーディスクからブートします。ドライブ番号が指定されていない場合は入力を求められます。 |
| f | — | アドレス 0xF000 にある元のフロッピー AFI ブート ROM コードを直接実行します。 |
| H | — | ページ付きのコマンドヘルプ画面を表示します。Space を押してページを進めます。 |
| IC | — | アクティブな SD カードドライブ上のファイルのページ付きディレクトリリスト。ファイル番号とファイル名を表示します。Space でページ移動、X で終了。 |
| IR | — | Flash ROM ドライブに保存されているプログラムのページ付きディレクトリリスト。読み取り専用で常に利用可能です。 |
| J | アドレス |
指定した 16 進アドレスへジャンプ(実行)します。 |
| L / LT | [ファイル名] |
テープ(CMT)からファイルをロードして実行します。ファイル名が指定されている場合はそのファイルを検索し、それ以外は次のファイルをロードします。 |
| LTNX | [ファイル名] |
テープ(CMT)からファイルを実行せずにロードします。 |
| LR | 名前 または 番号 |
Flash ROM ドライブから名前またはファイル番号でプログラムをロードして実行します。 |
| LRNX | 名前 または 番号 |
Flash ROM ドライブから名前またはファイル番号でプログラムを実行せずにロードします。 |
| LC | 名前 または 番号 |
アクティブな SD カードドライブから名前またはファイル番号でプログラムをロードして実行します。 |
| LCNX | 名前 または 番号 |
アクティブな SD カードドライブから名前またはファイル番号でプログラムを実行せずにロードします。 |
| M | アドレス |
インタラクティブなメモリエディター。指定したアドレスの現在のバイト値を表示し、新しい 16 進数値を入力して Enter を押すと変更、Enter だけを押すと変更せずに次のアドレスに進みます。X で終了。 |
| P | — | 接続されているプリンターでテストを実行します。 |
| R | — | 0x1200–0xCFFF の範囲で包括的な DRAM メモリテストを実行します。 |
| S / ST | start end exec |
メモリ範囲をテープ(CMT)に保存します。3 つの引数はスペースなしで連結した 4 桁の 16 進数(例:S120020001200)。ファイル名を入力するよう求められます。 |
| SC | start end exec |
メモリ範囲をアクティブな SD カードドライブに保存します。引数は S と同様。ファイル名を入力するよう求められます。 |
| SD2T | 名前 または 番号 |
アクティブな SD カードドライブからテープ(CMT)にファイルをコピーします。求められたらテープデッキの録音ボタンを押します。 |
| T | — | 8253 タイマーチップをテストします。 |
| T2SD | — | テープ(CMT)からプログラムをロードし、アクティブな SD カードドライブに書き込みます。求められたらテープデッキの再生ボタンを押します。 |
| V | — | テープに保存したファイルをメモリ内の現在のデータと照合して検証します。 |
| X | — | ハイロード ROM バリアントに切り替え、DRAM マッピングを 0x0000–0xCFFF に変更します。 |
SD カードドライブの使用
RFS は 0 から 9 までの番号が付いた 10 個の論理 SD カードドライブを提供します。各ドライブは SD カードの 16MB 領域を占有し、最大 256 ファイルのフラットディレクトリを保持します。各ファイルは Sharp MZF 形式で保存されます。ファイルのサイズは最大 64KB です。
モニタープロンプトでドライブ番号(0–9)を入力して Enter を押すと、そのドライブがアクティブになります。IC と IR コマンドは常に現在アクティブなドライブで動作します。
ファイルの一覧表示
IC を入力するとアクティブな SD カードドライブのディレクトリが表示されます。各エントリには 2 桁の 16 進ファイル番号とファイル名が表示されます。80 列モードでは、4 列が同時に表示されます。
* IC 00 INVADERS 01 DEFENDER 02 GALAXIANS 03 SPACE ATTACK 04 PACMAN 05 SNAKE 06 FROGGER 07 BREAKOUT ... Press SPACE to continue, X to exit
IR を入力すると Flash ROM ドライブに保存されているプログラムが一覧表示されます。読み取り専用で、SD カードが挿入されているかどうかに関わらず使用できます。
プログラムのロード
プログラムは名前、または IC ディレクトリに表示されている 2 桁の 16 進ファイル番号でロードできます。番号でロードする方が名前検索が不要なため若干速いです:
* LC INVADERS ; アクティブな SD ドライブから INVADERS をロードして実行 * LCNX INVADERS ; 実行せずにロード * LC 04 ; ファイル番号 04 をロードして実行 * LR SA-5510RFS ; ROM ドライブから SA-5510RFS をロードして実行プログラムの保存
SC を使用してメモリの領域をアクティブな SD カードドライブに保存します。構文はテープの S コマンドと一致します — 開始アドレス、終了アドレス、実行アドレスをスペースなしで連結した 4 桁の 16 進数で指定し、その後ファイル名の入力が求められます:
* SC120020001200 FILE NAME? MYPROG SAVEDファイルの削除
EC に続けてファイル名またはファイル番号を入力すると、アクティブな SD カードドライブからファイルを削除します。操作を元に戻すことはできないため、削除前に IC でファイル番号を確認してください。
* EC MYPROG ; 名前で削除 * EC 04 ; ファイル番号で削除
表示モード
MZ-80A に Kuma 40/80 列アップグレードまたは 40/80 カラー Video Module が取り付けられている場合、RFS はモニタープロンプトで 40 列と 80 列の表示モードを切り替えることができます:
* 40 ; 40 列表示に切り替え * 80 ; 80 列表示に切り替え
80 列モードでは、IC および IR ディレクトリコマンドが 4 列のファイル名を同時に表示するため、フルドライブのディレクトリをすばやく確認できます。BASIC SA-5510RFS と Microsoft BASIC のバリアントには、40 列と 80 列それぞれの ROM ビルドがあります — 表示設定に合ったバリアントをロードしてください。
40/80 アップグレードが取り付けられていない場合、
40 および 80 コマンドは受け付けられますが、目に見える効果はありません。他のすべての RFS コマンドは標準の 40 列モードで正常に動作します。
テープ操作
RFS は元の SA-1510 テープ(CMT)コマンドをすべて保持し、テープと SD カード間でファイルを転送するための 2 つの新しいコマンドを追加しています。
テープへのロードと保存
標準のテープコマンドは元の SA-1510 モニターとまったく同じように動作します:
テープから SD カードへの転送
- L または LT — テープから次のファイルをロードして実行します。オプションでファイル名を指定して特定のプログラムを検索できます。
- LTNX — 上記と同様ですが、実行せずにロードします。
- S または ST — メモリ範囲をテープに保存します。開始、終了、実行アドレスを 4 桁の 16 進数で連結して指定し(例:
S120020001200)、求められたらファイル名を入力します。 - V — 最後のテープ保存をメモリと照合して検証します。
T2SD はテープから次のプログラムを読み込み、アクティブな SD カードドライブに直接書き込みます。既存のテープライブラリを SD カードにアーカイブする最も便利な方法です:
* T2SD PRESS PLAY ...
求められたらテープデッキの再生ボタンを押します。RFS はプログラムをメモリにロードし、元のテープファイル名で SD カードに書き込みます。プログラムは実行されません。
SD カードからテープへの転送
SD2T はアクティブな SD カードドライブからファイルを読み込み、元のテープフレーミングを正確に再現してテープに書き込みます。ソフトウェアの配布や SD カードコレクションからバックアップテープを作成するのに役立ちます:
* SD2T INVADERS PRESS REC ...
求められたらテープデッキの録音ボタンを押します。ファイルは標準の SA-1510 ボーレートでテープに書き込まれます。
BASIC SA-5510 の使用
モニタープロンプトで BASIC を入力すると、Sharp SA-5510 BASIC インタープリターがロードされて起動します。RFS はまずアクティブな SD カードドライブを検索し、次に ROM ドライブで SA-5510RFS ビルドを探します。この拡張バージョンのオリジナル SA-5510 インタープリターは、RFS SD カードファイリングシステムと連携する
LOAD、SAVE、DIR コマンドを追加しながら、すべてのオリジナル SA-5510 BASIC プログラムとカセットコマンドとの完全な互換性を維持しています。
* BASIC SHARP MZ-80A BASIC SA-5510RFS READY
RFS 拡張 BASIC コマンドは次のとおりです:
| コマンド | 例 | 説明 |
|---|---|---|
| LOAD | LOAD "TEST" |
アクティブな SD ドライブから TEST という名前の BASIC プログラムをロードして実行します。 |
| LOAD | LOAD "3:TEST" |
SD ドライブ 3 から TEST をロードします(ドライブ 3 がアクティブになります)。 |
| LOAD | LOAD "C:TEST" |
テープ(CMT)から TEST をロードします。 |
| LOAD | LOAD |
アクティブなドライブから次のシーケンシャルファイルをロードします。 |
| SAVE | SAVE "TEST" |
現在の BASIC プログラムをアクティブな SD ドライブに保存します。同名のファイルが存在する場合は上書きします。 |
| SAVE | SAVE "3:TEST" |
SD ドライブ 3 に保存します(ドライブ 3 がアクティブになります)。 |
| SAVE | SAVE "C:TEST" |
テープ(CMT)に保存します。 |
| DIR | DIR |
アクティブなドライブの SD カードディレクトリを一覧表示します。 |
| DIR | DIR "3:" |
SD ドライブ 3 を一覧表示してアクティブにします。 |
元の SA-5510 カセット BASIC コマンド(
CLOAD、CSAVE など)は、ドライブ修飾子が指定されていない場合、変更なしで引き続き動作します。
CP/M 2.2 の実行
モニタープロンプトで CPM を入力すると CP/M 2.2 が起動します。RFS はアクティブな SD カードドライブで CP/M ブートセクターを検索し、CCP と CBIOS をロードして制御を移します。プロンプトが
A> に変わります。
* CPM CP/M 2.2 - SHARP MZ-80A A>
CBIOS 実装は完全に Flash ROM 内に存在し、アプリケーションプログラム用に完全な 47KB TPA を空けています。最大 7 つの CP/M ドライブが提供されます:
| CP/M ドライブ | 内容 |
|---|---|
| A: | SD カード — CP/M システムプログラム、Turbo Pascal、Hi-Soft C など |
| B: | SD カード — Pascal ユーティリティと Pascal ユーザーグループディスク |
| C: | SD カード — PLI、PLM、WordStar |
| D:–G: | SD カード — Grant Searle CP/M コレクション |
組み込みの ANSI ターミナルエミュレーターは標準の ANSI エスケープシーケンスを MZ-80A 画面にマッピングするため、画面制御を使用するほとんどの CP/M アプリケーションは変更なしで正しく動作します。MZ-80A キーボードはオートリピートを含めて完全にマッピングされています。
CP/M から RFS モニターに戻るには、CCP プロンプトで Ctrl+C を使ってウォームブートを実行します。これにより CCP が再ロードされます。SA-1510 モニターへの完全な復帰にはハードウェアリセット(リセットボタン、または電源の入れ直し)が必要です。
トラブルシューティング
サインオンバナーの後に "+ RFS" テキストが表示されない
+ RFS の行は RFS ファームウェア自体が初期化直後に出力します。SD カードの有無は関係ありません。これがまったく表示されない場合、RFS ROM が実行されていません:
- Flash ROM がプログラムされていないか、誤ってプログラムされている — 本体が元のモニター ROM または未初期化のチップで実行されている可能性があります。
MROM_ROMDISK_256.binがモニター Flash チップ(U1)に、USER_ROM_256.binが U4 に書き込まれていることを確認してください。miniproの検証ステップを使用して各チップを確認してください。 - PCB が完全に固定されていない — 上部カバーを取り外し、両方の DIP リフターアレイをソケットにしっかりと押し込んでください。横から確認してすべてのピンが正しく接続されており、曲がったり隣接するピンと橋がかかったりしていないことを確認します。
- リフレッシュサイクルによってコード化ラッチが起動する(v2.0 のみ) — v2.0 ボードでは DRAM リフレッシュロジックが RFS 実行前に 74HCT191 カウンターを誤ってインクリメントし、バンク選択レジスタが早期にアクティブになる可能性があります。v2.1 ボードにはこれを防ぐ AND ゲート(D1/D2)が追加されています。v2.0 ボードを使用している場合は v2.1 へのアップグレードを検討してください。
"+ RFS" の行の後に SD カードエラーコードが表示される
+ RFS が表示された後にエラーコードが続く場合、RFS は正常に初期化されましたが SD カードを検出または初期化できませんでした。エラー番号は SD カード初期化シーケンスの失敗箇所を示しています。以下を確認してください:
- SD カードが挿入されていない — カードがソケットに完全に固定されているか確認してください。
- SD カードソケットケーブル — ケーブルがケースのスロットを通って配線されている場合、折れたり部分的に外れたりしていないか確認してください。
- SD カードイメージが書き込まれていない — フォーマットされていないカードまたは空のカードは初期化に失敗します。上記の
ddコマンドで再書き込みしてください。書き込み後にsyncでフルイメージが転送されたことを確認してください。 - 互換性のない SD カード — 古いカードや非常に大容量(32GB 以上、SDXC クラス)のカードは正しく初期化されない場合があります。標準的な 2GB〜8GB の SD または SDHC カードが最も信頼性が高いです。
本体がまったく起動しない — 画面が空白またはガーベッジ
- PCB が逆向きに挿入されている — 両方の DIP リフターアレイのピン 1 の向きを確認してください。コネクタが逆向きになっていると、本体は起動しません。これが疑われる場合はすぐに電源を切り、正しい向きで再取り付けしてください。
- ピンが曲がっているか接触していない — PCB を取り外し、両方のリフターアレイのすべてのピンを明るい照明の下で確認します。再取り付けの前に曲がったピンを真っすぐにします。
- ハードウェアに合わない ROM イメージ — モニター Flash が
MROM_ROMDISK_256.bin(picoZ80 や SFD-700 イメージではなく)でプログラムされていることを確認してください。
IC に空のディレクトリまたは "SD ERROR" が表示される
- SD カードが誤って書き込まれている — イメージはパーティションテーブルなしでセクター 0 に生のバイナリとして書き込む必要があります。SD カードをまず FAT としてフォーマットしてからイメージファイルをコピーしても機能しません。SD カードイメージの書き込みセクションで説明している
ddコマンドで再書き込みしてください。 - SD カードが固定されていない — v2.x ボードのマイクロ SD カードソケットはプッシュプッシュ機構を使用しています。クリック音がするまでカードをしっかり押し込みます。取り出すには、クリック音がするまで再度押してから放します。
- 互換性のない SD カード — 古いカードや非常に大容量(32GB 以上、SDXC クラス)のカードは正しく初期化されない場合があります。標準的な 2GB〜8GB の SD または SDHC カードが最も信頼性が高いです。
CP/M が起動しないかディスクエラーが表示される
- アクティブなドライブが違う — CPM を入力する前にドライブ 0 を選択してください。あらかじめビルドされたイメージはドライブ 0 に CP/M ブートセクターを配置しています。モニタープロンプトで
0を入力して Enter を押し、次にCPMを入力します。 - SD カードイメージが不完全 — CP/M ディスクイメージは 256MB の境界から始まります。
ddの書き込みが途中で中断された、または SD カードの容量が不足している場合、CP/M エリアは初期化されていません。容量が少なくとも 512MB のカードで再書き込みしてください。
テープのロードまたは保存が失敗するかエラーが発生する
- MZ-80A のテープタイミングは CMT ヘッドのアライメントとテープの品質に敏感です。ロードが一貫して失敗する場合は、TC コマンドを使用してテープ読み取り遅延補正を調整してください:
TC01で遅延を 1 ステップ増加、TC-01で減少。各方向に 1 ステップずつ試し、各調整後にテストしてください。 - CMT デッキのテープボリュームが適切に設定されていることを確認してください — 高すぎるとクリッピングが発生し、低すぎるとパルスが検出されません。
参考サイト
| リソース | リンク |
|---|---|
| RomDisk プロジェクトページ | /sharpmz-upgrades-romdisk/ |
| RFS ユーザーマニュアル | /sharpmz-upgrades-rfs-usermanual/ |
| RFS テクニカルガイド | /sharpmz-upgrades-rfs-technicalguide/ |
| RFS 開発者ガイド | /sharpmz-upgrades-rfs-developersguide/ |
| RFS ギャラリー | /sharpmz-upgrades-rfs-gallery/ |
| picoZ80(RP2350 Z80 代替品) | /picoz80/ |
| tranZPUter FusionX | /transzputer-fusionx/ |
| minipro(オープンソース TL866 ユーティリティ) | https://gitlab.com/DavidGriffith/minipro |