ROMファイリングシステム (RFS) — テクニカルガイド

RFS テクニカルガイド

このガイドは、Rom Filing System のハードウェア統合、メモリアーキテクチャ、ソフトウェアモジュールレイアウト、SD カードファイリングシステムの設計、CP/M の実装、および完全なビルドシステムを文書化します。システムレベルで RFS の仕組みを理解したい、RFS を新しいハードウェアに移植したい、またはソースからフルビルドを実行したいユーザーを対象としています。
日常的な使用方法とモニターコマンドリファレンスについては ユーザーマニュアル を参照してください。Z80 アセンブリソースコードの詳細については デベロッパーズガイド を参照してください。

ハードウェアプラットフォーム

RFS は 4 種類のハードウェアプラットフォームをターゲットとしています。各プラットフォームは asm/include/rfs_definitions.asm のフラグによってコンパイル時に選択されます。生成されるバイナリイメージはバンクレイアウト、機能セット、使用される ROM アドレスが異なります。

RomDisk カード
最も能力の高い RFS のオリジナルターゲット。RomDisk 基板は Sharp MZ-80A 拡張スロットに差し込み、以下を提供します:
  • 最大 4 × 512 KB SST39SF040 Flash RAM — モニター ROM を置き換え、3 個のユーザー ROM チップを提供し、最大 2 MB の Flash ベース ROM ストレージを実現します。
  • 512 KB スタティック RAM — 追加のページドワークスペースとして使用可能(将来の使用向け)。
  • SDXC カードリーダー(v2+ ボードではハードウェア SPI インターフェース、v1 ボードではプリンターパラレルポート経由のソフトウェアビットバン SPI)。
  • コード化ラッチ(v2.0+ ボード)— バンク制御レジスターを保護します。ラッチはユーザー ROM アドレス範囲の上位 8 バイト(0xEFF8〜0xEFFF)への固定シーケンスの読み取り後にのみ開き、通常動作中の偶発的なバンク切り替えを防止します。
モニター ROM チップ(MZ-80A では 0x0000〜0x0FFF)は、512 KB チップへの 4 KB ウィンドウとして表示されるようにソケットアダプターされたページド Flash RAM ソケットに置き換えられます。同様にユーザー ROM(0xE800〜0xEFFF)はページド 2 KB ウィンドウに置き換えられます。

SFD-700 フロッピーインターフェース
SFD-700 mkII フロッピーディスクインターフェースカードには 512 KB Flash ROM が含まれています。RFS はフロッピー AFI ブートコードとともにこの Flash ROM のページを占有します:
  • 0x00000〜0x00FFF — MZ-80A AFI フロッピーブート ROM(オリジナル、2 MHz DRQ トリック用)。
  • 0x01000〜0x01FFF — MZ-700 AFI フロッピーブート ROM。
  • 0x02000〜0x0BFFF — RFS ファームウェア(10 × 2 KB ユーザー ROM バンク、ユーザー ROM バンク 0〜4 に相当)。
  • 0x0C000 以降 — ROM ファイルシステム(MZF イメージとして保存されたプログラム)。
SFD-700 ビルドでは、ユーザー ROM コードは 0xE000 から始まり 0xE300 に揃えてアセンブルされます(MZ-700 メモリマップド I/O 範囲を考慮)。SD カードはなく、代わりにインラインアセンブラとディスアセンブラ(ASM/DASM)が SD カードコマンドに取って代わります。

picoZ80
picoZ80 ボード(RP2350 ベースの Z80 交換)は MZ-80A の完全なメモリマップを PSRAM と Flash でエミュレートします。RFS はエミュレートされた ROM 空間内で動作し、RomDisk ビルドと同じバンクアドレスを使用します。picoZ80 は独自の SPI 接続 SD カードストレージを提供するため、完全な RomDisk 機能セット(SD カードドライブ、テープ↔SD コピーなど)が使用できます。

メモリアーキテクチャ

Sharp MZ-80A の Z80 CPU は 64 KB のメモリをアドレス指定します。RFS はファームウェア全体を 2 つの ROM ウィンドウに収め、RAM を消費しないため、ユーザープログラム用に 0x1200〜0xCFFF の範囲をすべて解放します。

Z80 アドレス空間レイアウト
Address     Size    Contents
─────────────────────────────────────────────────────────────────────
0x0000      4 KB    Monitor ROM (MROM)  — 4 KB window into 512 KB Flash
                    Paged: bank 0 = SA-1510, bank 1 = SA-1510 80c,
                           bank 2 = CP/M CBIOS, bank 3 = RFS mrom utils,
                           bank 4 = 1Z-013A, bank 5 = 1Z-013A 80c,
                           bank 6 = IPL
0x1000      256 B   MZ-80A system variables / stack
0x1200    ~46 KB    User RAM  (main program area)
0xCFFF
0xD000      12 KB   Video RAM + memory-mapped I/O (MZ-80A hardware)
0xE800       2 KB   User ROM (UROM) — 2 KB window into 512 KB Flash
                    Paged: banks 0–7 = RFS modules,
                           banks 8–11 = CP/M CBIOS banks
                    Note: on the SFD-700 build the UROM window starts at
                    0xE300 (0xE000–0xE2FF is MZ-700 memory-mapped I/O).
                    The command table (CMDTABLE2) is placed at 0xE300 and
                    the main bank code remains at 0xE800 as on other builds.
0xEFFF
0xF000       4 KB   Floppy AFI ROM / FDC ROM (SFD-700 MROM location)
─────────────────────────────────────────────────────────────────────

モニター ROM バンク(各 4 KB)
0x0000〜0x0FFF のモニター ROM ウィンドウは、モニター ROM Flash チップに格納された 7 つのバンクをバンク切り替えします:
バンク モジュール 説明
0 monitor_sa1510.asm オリジナル SA-1510 モニター ROM — 40 列。電源投入時のデフォルトバンク。
1 monitor_80c_sa1510.asm 80 列表示用にパッチされた SA-1510(Kuma アップグレードが必要)。
2 cbios.asm CP/M 2.2 CBIOS カーネル — CP/M ブート中にここに再配置されます。
3 rfs_mrom.asm RFS モニター ROM ユーティリティ。ユーザー ROM コードは自分自身をページアウトできないため、ユーザー ROM Flash に保存された MZF ファイルをスキャンしてロードするために MROM 空間から実行されます。
4 monitor_1z-013a.asm MZ-1Z-013A モニター(MZ-700 / MZ-1200 バリアント)。
5 monitor_80c_1z-013a.asm 80 列表示用にパッチされた 1Z-013A モニター。
6 ipl.asm Initial Program Loader。

ユーザー ROM バンク(各 2 KB)
0xE800〜0xEFFF のユーザー ROM ウィンドウは、ユーザー ROM Flash チップ内の 12 バンクをバンク切り替えします:
バンク モジュール 説明
0 rfs.asm RFS のプライマリエントリポイント、コマンドディスパッチャー、コマンドテーブル、全バンクで共有されるバンク切り替えインフラ。
1 rfs_bank1.asm フロッピーディスクコントローラー(FDC)機能 — フロッピーブート(FL)、フロッピーディレクトリ(FD)、ドライブ選択。FDC コマンドセットはすべてのビルドでアセンブルされます。
2 rfs_bank2.asm SD カードコントローラー — SPI ドライバー、SD カード初期化、SDCFS ディレクトリおよびファイル読み書き。SFD-700 ビルドではアセンブルされません(SD カードハードウェアなし)。
3 rfs_bank3.asm モニターメモリユーティリティ — 16 進ダンプ(D)、メモリ編集(M)、メモリコピー(CP)。テープ↔SD コピー(T2SD/SD2T)は RomDisk / picoZ80 ビルドにのみ含まれます。
4 rfs_bank4.asm CMT(カセット)コントローラー — テープのロード、保存、確認。
5 rfs_bank5.asm 汎用ユーティリティ機能 — フォーマット印刷、文字列ルーチン、共有ヘルパーコード。
6 rfs_bank6.asm ヘルプ画面、メッセージ文字列、ASCII↔Sharp 文字セット変換テーブル。
7 rfs_bank7.asm 完全な Z80 インタラクティブアセンブラー、Z80 ディスアセンブラー、DRAM メモリテスト、8253 タイマーテスト。
8 cbios_bank1.asm CP/M CBIOS — オーディオ機能と低レベルユーティリティ。
9 cbios_bank2.asm CP/M CBIOS — スクリーンドライバーと ANSI ターミナルエミュレーション。
10 cbios_bank3.asm CP/M CBIOS — SD カードドライバー(CP/M ドライブ A:〜G: を提供)。
11 cbios_bank4.asm CP/M CBIOS — フロッピーディスクコントローラー。

バンク切り替えの仕組み
Z80 は一度にユーザー ROM の 2 KB スライスしか見ることができないため、すべてのバンクには バンク切り替えスタブ のコピーが含まれています — 2 KB ウィンドウ内の既知のアドレスに位置する小さな固定コードブロックです。バンク 0 がバンク 3 のルーチンを呼び出す必要がある場合:
  1. デスティネーションバンク番号をハードウェアバンクラッチレジスターに書き込みます。
  2. 新たにマッピングされたバンクの既知のエントリポイントにジャンプします。
  3. 必要なルーチンを実行します。
  4. バンク 0 をラッチに書き戻して返ります。
このメカニズムにより、一度に 2 KB しか見えないにもかかわらず、12 × 2 KB = 24 KB のユーザー ROM コード全体が任意の実行コンテキストからアクセス可能です。バンク切り替えスタブは各バンクの最初の 32 バイト(0xE800〜0xE81F)を占有し、バンク切り替えテーブルは 0xE800 + 0xB0 から始まります。重要な点:v2+ RomDisk ボードでは、0xEFF8〜0xEFFF の範囲にまたがるループ命令を使用してはなりません。これらのアドレスがコード化ラッチのアンロックシーケンスを起動するためです。

ソフトウェアアーキテクチャ

完全なモジュールテーブル — すべてのソースファイル、ターゲット ROM、バンク、機能:
モジュール ROM バンク サイズ 説明
rfs.asm ユーザー 0 2 KB コマンドディスパッチャー、コマンドテーブル、バンク切り替えインフラ。
rfs_bank1.asm ユーザー 1 2 KB フロッピーディスクコントローラー — フロッピーブート(FL)、フロッピーディレクトリ(FD)、ドライブ選択。FDC コマンドセットはすべてのビルドでアセンブルされます。
rfs_bank2.asm ユーザー 2 2 KB SD カードコントローラー — SPI、SDCFS ディレクトリ、ファイル読み書き。SFD-700 ビルドではアセンブルされません。
rfs_bank3.asm ユーザー 3 2 KB メモリユーティリティ — D、M、CP(全ビルド);T2SD、SD2T(RomDisk / picoZ80 のみ)。
rfs_bank4.asm ユーザー 4 2 KB CMT コントローラー — テープのロード、保存、確認。
rfs_bank5.asm ユーザー 5 2 KB 汎用ユーティリティ — 印刷ルーチン、文字列ヘルパー。
rfs_bank6.asm ユーザー 6 2 KB ヘルプ画面、メッセージ文字列、文字セット変換。
rfs_bank7.asm ユーザー 7 2 KB Z80 アセンブラー、Z80 ディスアセンブラー、DRAM テスト、タイマーテスト。
cbios_bank1.asm ユーザー 8 2 KB CP/M CBIOS — オーディオ、低レベルユーティリティ。
cbios_bank2.asm ユーザー 9 2 KB CP/M CBIOS — スクリーンドライバー、ANSI ターミナルエミュレーター。
cbios_bank3.asm ユーザー 10 2 KB CP/M CBIOS — SD カードドライバー(CP/M ドライブ A:〜G:)。
cbios_bank4.asm ユーザー 11 2 KB CP/M CBIOS — フロッピーディスクコントローラー。
monitor_sa1510.asm モニター 0 4 KB オリジナル SA-1510 モニター ROM(40 列)。
monitor_80c_sa1510.asm モニター 1 4 KB 80 列表示用にパッチされた SA-1510。
cbios.asm モニター 2 4 KB CP/M 2.2 CBIOS カーネル(CP/M ブート中に 0xC000 に再配置)。
rfs_mrom.asm モニター 3 4 KB RFS モニター ROM ユーティリティ — ROM スキャン、MZF ロード。
monitor_1z-013a.asm モニター 4 4 KB MZ-1Z-013A モニター(MZ-700 / MZ-1200 バリアント)。
monitor_80c_1z-013a.asm モニター 5 4 KB 80 列表示用にパッチされた 1Z-013A。
ipl.asm モニター 6 4 KB Initial Program Loader。
CP/M 2.2 は 47 KB の使用可能なプログラム RAM を提供します。CCP と BDOS は RAM に存在し、大規模なアプリケーションによって上書きされる可能性があります(ウォームブート時に再ロードされます)。CBIOS はモニター ROM バンク 2 とユーザー ROM バンク 8〜11 に完全に存在し、プログラム RAM を消費しません。
モニター ROM はビルド時にいくつかの追加バリアントイメージも生成します:SA-1510 と 80c SA-1510 のハイロードバリアント(DRAM が 0x0000〜0xCFFF にまたがる必要がある場合に使用)、および Kuma-80 バリアント(KUMA80_ENA フラグで選択)。

SD カードファイリングシステム(SDCFS)

FAT の実装(利用可能な 2 KB ROM バンクには大きすぎる)の代わりに、RFS は SD カードファイリングシステム(SDCFS)と呼ばれる専用のファイリングシステムを使用します。この設計は柔軟性より単純性とコンパクトな ROM フットプリントを優先しています。

ディレクトリ構造
各 SDCFS ドライブイメージには最大 256 エントリのフラットなディレクトリが含まれています。各エントリは標準の MZF テープヘッダーフォーマットに基づいた正確に 32 バイトです:
フィールド バイト数 説明
FLAG1 1 ビット 7 = 1:有効なエントリ。ビット 7 = 0:無効 / 削除済み。
FLAG2 1 MZF 実行タイプ(0x01 = バイナリプログラム)。
FILE NAME 17 標準の 17 文字 MZF ファイル名(Sharp 文字エンコーディング)。
START SECTOR 4 このドライブイメージ内でファイルのデータブロックが始まる最初のセクター。
SIZE 2 ファイルデータの実際のバイト数。
LOAD ADDR 2 ファイルデータをロードする Z80 RAM アドレス。
EXEC ADDR 2 バイナリファイルの自動実行アドレス(ロード後にジャンプ)。
RESERVED 3 現在未使用。
ディレクトリは各ドライブイメージの最初の 8 KB を占有します(256 エントリ × 32 バイト)。ファイルデータはすぐ後に続き、256 番目の 32 バイト境界から始まります。各ファイルには固定の 64 KB ブロックが割り当てられます — CMT テープブロックの最大サイズに一致 — これによりレイアウトが非常にシンプルになり、SD↔テープコピーが直接のバイト対バイト転送になります。

SD カードレイアウト
ADDRESS    CONTENT
────────────────────────────────────────────────────────────
0x00000000  RFS DRIVE 0
              0x00000000–0x00001FE0  Directory (256 × 32 B)
              0x00002000–0xFF2000    File blocks (256 × 64 KB)
0x01002000  RFS DRIVE 1  (same structure)
...
0x09012000  RFS DRIVE 9  (same structure)
0x0A014000  (padding to 256 MB boundary)
────────────────────────────────────────────────────────────
0x10000000  CP/M DISK IMAGE 0   (16 MB — 32 sectors × 1024 tracks)
0x11000000  CP/M DISK IMAGE 1
...
0xXX000000  CP/M DISK IMAGE 6
────────────────────────────────────────────────────────────
パーティションテーブルは書き込まれません。SDCFS イメージは SD カードのバイト 0 から始まります。CP/M ディスクイメージは 256 MB 境界から始まり、10 個の RFS ドライブ全体の空間を確保します。

CP/M 2.2 の実装

ブートプロセス
RFS での CP/M ブートは 2 段階で行われます:
  1. フェーズ 1 — AFI ブート: 0xF000 のオリジナル MZ-80A AFI(Auto Floppy Interface)ROM コードがフロッピーの最初のセクターまたは SD カードブートブロックを読み取ります。バイト 0 のマーカーバイト 0x02 + "IPLPRO"(MZ-80A CP/M ブータブルディスクシグネチャー)を確認します。見つかった場合、そのセクター内のカプセル化された第 2 ステージローダーに制御を渡します。
  2. フェーズ 2 — CCP+BDOS+CBIOS ロード: 第 2 ステージローダーは CCP、BDOS、CBIOS をディスクから 0x9C00 から始まる RAM に読み込みます。ロード完了後、CBIOS コールドブートエントリポイントが呼び出されます。CBIOS がハードウェア(キーボード、スクリーン、ディスクドライブ)を設定し、0x9C00 の CCP に制御を渡します。

CBIOS アーキテクチャ
カスタム BIOS(CBIOS)は利用可能なバンク空間に収まるように 5 つの ROM モジュールに分割されています:
モジュール ROM の場所 内容
cbios.asm MROM バンク 2(0xC000〜0xCFFF) CBIOS エントリポイント(17 の API ベクター全部)、コールド/ウォームブート、割り込みハンドラー、ROM ディスクコントローラー、ディスクパラメーターテーブル。
cbios_bank1.asm UROM バンク 8 オーディオ(ベル、メロディー)、リアルタイムクロックルーチン、オートリピート付きキーボードハンドラー。
cbios_bank2.asm UROM バンク 9 スクリーンドライバー(文字出力、スクロール、カーソル)、ANSI ターミナルエミュレーター(VT52/VT100 サブセット)。
cbios_bank3.asm UROM バンク 10 CP/M 用 SD カードディスクドライバー — 256 MB 境界以降の SDCFS ドライブイメージから CP/M 128 バイトセクターを読み書き。
cbios_bank4.asm UROM バンク 11 CP/M 用フロッピーディスクコントローラー — 物理 CP/M ディスク用の標準 8 インチ/5.25 インチドライブサポート。

CBIOS API
CP/M CBIOS はすべての標準 CP/M 2.2 API エントリポイント 17 個を実装しています:
エントリポイント 説明
BOOT コールドスタート — 全ハードウェアを初期化し、ディスクパラメーターテーブルを設定し、CCP を呼び出します。
WBOOT ウォームスタート — ハードウェア状態を復元し、ディスクから CCP+BDOS を再ロードし、CCP を呼び出します。
CONST コンソールステータス — キーが待機中なら 0xFF、なければ 0x00 を返します。
CONIN コンソール入力 — キー押下を待ち、ASCII コードを返します。
CONOUT コンソール出力 — 画面に文字を書き込みます。
LIST プリンター出力 — 接続されたプリンターに文字を出力します。
PUNCH パンチ/テープ出力 — テープパンチデバイスに出力します。
READER リーダー入力 — テープリーダーデバイスから読み取ります。
HOME 現在選択されているディスクのトラック 0 にシークします。
SELDSK ディスクドライブ(A:〜G:)を選択し、ディスクパラメーターヘッダーアドレスを返します。
SETTRK 次の読み書き操作のディスクトラックを設定します。
SETSEC 次の読み書き操作のディスクセクターを設定します。
SETDMA ディスクメモリアドレスを設定します — データの読み込み先または書き込み元。
READ 選択されたディスクから DMA バッファーに 128 バイトセクターを読み取ります。
WRITE DMA バッファーから選択されたディスクに 128 バイトセクターを書き込みます。
LISTST プリンターステータス — リストデバイスの準備状態を返します。
SECTRN セクター変換 — ディスクのスキューテーブルを使用して論理セクター番号を物理位置にマッピングします。

CP/M ドライブ設定
CP/M ドライブは、使用可能なディスクコントローラーに応じて CBIOS によってコールドブート中に動的に作成されます。フル装備の RomDisk / picoZ80 システムでの標準ドライブマッピング:
CP/M ドライブ コントローラー イメージ
A: SD カード CPM_SYSTEM — OS プログラム、Turbo Pascal、Hi-Soft C、Fortran 80、MS-BASIC 80
B: SD カード Pascal MTP v5.61、Turbo Pascal v3.00a、Pascal User Group ディスク
C: SD カード PLI、PLM 80、WordStar v3.0/v3.3/v4.0
D:〜G: SD カード Grant Searle CP/M コレクションディスク C0〜F9

ビルドシステム

すべての開発は Linux(Debian/Ubuntu)で行います。ビルドシステムはほぼ完全にリポジトリ内に自己完結しています。

前提条件
ツール 用途
Java JRE 8+ GLASS Z80 アセンブラー(tools/glass.jar)を実行します。javaPATH に含まれている必要があります。
bash すべてのビルドスクリプトは bash シェルスクリプトです。
perl MZF ファイル操作用の tools/mzftool.pl に必要です。
gcc / make 最初のビルド時に cpmtools をソースからコンパイルします(自動)。
dd, cat, stat パッケージングスクリプトで使用される標準 Linux ユーティリティ。
GLASS Z80 アセンブラーは tools/glass.jar に同梱されています — 別途インストールは不要です。

ビルドフラグ
asm/include/rfs_definitions.asm を編集し、ターゲットフラグを正確に 1 つ 1 に設定します(他はすべて 0 にする必要があります):
フラグ ターゲット
BUILD_ROMDISK EQU 1 RomDisk カード
BUILD_SFD700 EQU 1 SFD-700 フロッピーインターフェース
BUILD_PICOZ80 EQU 1 picoZ80 ボード
追加のオプション機能フラグ:
フラグ デフォルト 説明
KUMA80_ENA 0 Kuma 40/80 列アップグレードが装着されている場合は 1 に設定。
VIDEOMODULE_ENA 0 40/80 カラービデオモジュールが装着されている場合は 1 に設定。
FUSIONX_ENA 0 tranZPUter FusionX ボードで動作している場合は 1 に設定。
HW_SPI_ENA 1 ハードウェア SPI(RomDisk v2+ 基板)。現在のすべてのボードでは 1 のままにしてください。
SW_SPI_ENA 0 ソフトウェアビットバン SPI(パラレルポート経由の RomDisk v1)。
ENADEBUG 0 アセンブリ時のデバッグ出力を有効にします。

ビルド手順
git clone https://git.eaw.app/eaw/RFS.git
cd RFS


# フルビルド — すべての ROM をアセンブルし、イメージをパッケージ化し、SD カードイメージをビルドします:
./build.sh


# MZF アプリケーションファイルの再処理を含むフルビルド

# (MZF/ のファイルが変更された場合にのみ必要):
./build.sh -m
build.sh は以下の手順を順番に実行します:
  1. ソースから cpmtools をコンパイルし(初回実行のみ)、PATH に追加します。
  2. tools/assemble_rfs.shrfs.asmrfs_mrom.asmroms/rfs.romroms/rfs_mrom.rom にアセンブルします。
  3. tools/assemble_cpm.sh — CP/M 2.2 CBIOS と CCP+BDOS を roms/*.rom にアセンブルします。
  4. tools/assemble_roms.sh — すべてのモニターバリアントと MZF アプリケーションをアセンブルします。各パスの前に include/msbasic_buildversion.asmBUILD_VERSION EQU を書き込むことで 4 つの MS-BASIC ビルドバリアントを処理します。
  5. tools/make_roms.sh — ROM と MZF バイナリを各ターゲットの Flash ROM イメージにパッケージ化します。
  6. tools/make_cpmdisks.sh — CP/M ディスクイメージを RAW フォーマット(SD カード用)と CPC 拡張ディスクフォーマット(フロッピーエミュレーター用)でビルドします。
  7. tools/make_sdcard.sh — 10 個の RFS ドライブイメージと 7 個の CP/M ディスクイメージを結合して最終的な SD カードイメージを作成します。

出力ファイル
ビルド成功後、roms/ ディレクトリには以下が含まれます:
ファイル Flash チップ 説明
MROM_ROMDISK_256.bin モニター ROM Flash RomDisk 用モニター ROM:SA-1510、80c SA-1510、CP/M CBIOS、RFS mrom utils、1Z-013A モニター、IPL が 7×4 KB バンクに収録。
MROM_PICOZ80_256.bin モニター ROM Flash picoZ80 用モニター ROM(バンク順が RomDisk と異なります)。
USER_ROM_256.bin ユーザー ROM 1 Flash RFS バンク 0〜7、CP/M CBIOS バンク 8〜11、CP/M 2.2 イメージ、パックされた MZF アプリケーション。
USER_ROM_II_256.bin ユーザー ROM 2 Flash 追加の MZF アプリケーション。
USER_ROM_III_256.bin ユーザー ROM 3 Flash 追加の MZF アプリケーション。
SFD700_256.bin SFD-700 Flash AFI ROM + RFS ファームウェア + ROM ファイルシステム。
SHARP_MZ80A_RFS_IMAGE_0–9.img SD カード 個別の RFS ドライブイメージ(ドライブ 0〜9 の各 1 枚)。
SHARP_MZ80A_RFS_CPM_IMAGE_1.img SD カード 結合イメージ:10 個の RFS ドライブ + 7 個の CP/M ディスクイメージ。これを SD カードに書き込みます。

ROM ドライブへのアプリケーションの追加
MZF フォーマットのアプリケーションファイルは、ROM ドライブに含める前にセクターパディングされたバイナリイメージに変換する必要があります。MZF ファイルを MZF/ の適切なサブディレクトリに配置してから実行します:
tools/processMZFfiles.sh
これにより 128 バイトおよび 256 バイトのセクターパディングされたイメージが MZB/ に生成されます。各 ROM ドライブに表示するアプリケーションを選択するには、tools/make_roms.sh を編集して addMZFToROMImageList の呼び出しを調整します:
# Format: addMZFToROMImageList <ROMDISK> <SFD700> <picoZ80> <reserved> "<path>"

#

# Include in all builds:
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/sa-5510_rfs.${SECTORSIZE}.bin"
#
# RomDisk and picoZ80 only (no SFD700 — needs SD card):
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/MZ-80A/defender.${SECTORSIZE}.bin"
アプリケーションはリストの順番でパックされ、まずユーザー ROM 1 を満たし、次にユーザー ROM 2 と 3 を満たします。最もよく使用するアプリケーションをリストの先頭に配置してください。

ビルドツールリファレンス
ツール 説明
build.sh トップレベルビルドスクリプト。-m を渡すと MZF ファイルも再処理します。
tools/assemble_rfs.sh RFS コアモジュールをアセンブルします。
tools/assemble_cpm.sh CP/M 2.2 CBIOS とカーネルをアセンブルします。
tools/assemble_roms.sh モニターバリアントと MZF アプリケーションバイナリをアセンブルします。
tools/make_roms.sh バイナリを Flash ROM イメージにパッケージ化します。
tools/make_cpmdisks.sh CP/M ディスクイメージを作成します。
tools/make_sdcard.sh イメージを結合して最終的な SD カードイメージを作成します。
tools/processMZFfiles.sh MZF ファイルをセクターパディングされたバイナリに変換して MZB/ に出力します。
tools/mzftool.pl MZF フォーマットイメージを作成、抽出、検査します。
tools/sdtool RFS SD カードディレクトリを構築し、ファイルを投入します。
tools/nasconv NASCOM カセットイメージを MZ-80A ロード可能フォーマットに変換し、MS-BASIC トークンを再マッピングします。
tools/glass.jar 同梱の GLASS Z80 アセンブラー(Java)。すべてのアセンブリスクリプトで使用されます。
tools/MZFD/MZFDTool MZ-700 FDC 用のフロッピーディスクイメージを作成・管理します。コマンド: formatdiraddextractboot。デフォルトイメージ: MZ700.img
tools/MZQD/MZQDTool MZ-700 Quick Disk 用の QD イメージを作成・管理します。コマンド: formatdiradd。デフォルトイメージ: MZ700.qd
cpmtools/ cpmcpcpmlscpmrm などのソース。最初のビルド時にコンパイルされます。

参考サイト

リソース リンク
RFS プロジェクトページ /sharpmz-upgrades-rfs/
RFS ユーザーマニュアル /sharpmz-upgrades-rfs-usermanual/
RFS デベロッパーズガイド /sharpmz-upgrades-rfs-developersguide/
RFS ギャラリー /sharpmz-upgrades-rfs-gallery/
MZ-80A での CP/M に関するメモ _pages/MZ80A_RFS_CPM_README.md に収録
SFD-700 mkII テクニカルガイド /sfd700-technicalguide/
picoZ80 テクニカルガイド /picoz80-technicalguide/
GLASS Z80 アセンブラー tools/glass.jar に同梱