ROMファイリングシステム (RFS) — テクニカルガイド
RFS テクニカルガイド
このガイドは、Rom Filing System のハードウェア統合、メモリアーキテクチャ、ソフトウェアモジュールレイアウト、SD カードファイリングシステムの設計、CP/M の実装、および完全なビルドシステムを文書化します。システムレベルで RFS の仕組みを理解したい、RFS を新しいハードウェアに移植したい、またはソースからフルビルドを実行したいユーザーを対象としています。
日常的な使用方法とモニターコマンドリファレンスについては ユーザーマニュアル を参照してください。Z80 アセンブリソースコードの詳細については デベロッパーズガイド を参照してください。
ハードウェアプラットフォーム
RFS は 4 種類のハードウェアプラットフォームをターゲットとしています。各プラットフォームは
RomDisk カード
asm/include/rfs_definitions.asm のフラグによってコンパイル時に選択されます。生成されるバイナリイメージはバンクレイアウト、機能セット、使用される ROM アドレスが異なります。
最も能力の高い RFS のオリジナルターゲット。RomDisk 基板は Sharp MZ-80A 拡張スロットに差し込み、以下を提供します:
SFD-700 フロッピーインターフェース
- 最大 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)への固定シーケンスの読み取り後にのみ開き、通常動作中の偶発的なバンク切り替えを防止します。
SFD-700 mkII フロッピーディスクインターフェースカードには 512 KB Flash ROM が含まれています。RFS はフロッピー AFI ブートコードとともにこの Flash ROM のページを占有します:
picoZ80
- 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 イメージとして保存されたプログラム)。
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。 |
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 のルーチンを呼び出す必要がある場合:
- デスティネーションバンク番号をハードウェアバンクラッチレジスターに書き込みます。
- 新たにマッピングされたバンクの既知のエントリポイントにジャンプします。
- 必要なルーチンを実行します。
- バンク 0 をラッチに書き戻して返ります。
ソフトウェアアーキテクチャ
完全なモジュールテーブル — すべてのソースファイル、ターゲット 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 段階で行われます:
CBIOS アーキテクチャ
- フェーズ 1 — AFI ブート: 0xF000 のオリジナル MZ-80A AFI(Auto Floppy Interface)ROM コードがフロッピーの最初のセクターまたは SD カードブートブロックを読み取ります。バイト 0 のマーカーバイト
0x02 + "IPLPRO"(MZ-80A CP/M ブータブルディスクシグネチャー)を確認します。見つかった場合、そのセクター内のカプセル化された第 2 ステージローダーに制御を渡します。 - フェーズ 2 — CCP+BDOS+CBIOS ロード: 第 2 ステージローダーは CCP、BDOS、CBIOS をディスクから 0x9C00 から始まる RAM に読み込みます。ロード完了後、CBIOS コールドブートエントリポイントが呼び出されます。CBIOS がハードウェア(キーボード、スクリーン、ディスクドライブ)を設定し、0x9C00 の CCP に制御を渡します。
カスタム 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 インチドライブサポート。 |
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 ドライブは、使用可能なディスクコントローラーに応じて 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)を実行します。java が PATH に含まれている必要があります。 |
| 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 は以下の手順を順番に実行します:
- ソースから
cpmtoolsをコンパイルし(初回実行のみ)、PATHに追加します。 tools/assemble_rfs.sh—rfs.asmとrfs_mrom.asmをroms/rfs.romとroms/rfs_mrom.romにアセンブルします。tools/assemble_cpm.sh— CP/M 2.2 CBIOS と CCP+BDOS をroms/*.romにアセンブルします。tools/assemble_roms.sh— すべてのモニターバリアントと MZF アプリケーションをアセンブルします。各パスの前にinclude/msbasic_buildversion.asmにBUILD_VERSION EQUを書き込むことで 4 つの MS-BASIC ビルドバリアントを処理します。tools/make_roms.sh— ROM と MZF バイナリを各ターゲットの Flash ROM イメージにパッケージ化します。tools/make_cpmdisks.sh— CP/M ディスクイメージを RAW フォーマット(SD カード用)と CPC 拡張ディスクフォーマット(フロッピーエミュレーター用)でビルドします。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 カードに書き込みます。 |
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 用のフロッピーディスクイメージを作成・管理します。コマンド: format、dir、add、extract、boot。デフォルトイメージ: MZ700.img。 |
tools/MZQD/MZQDTool |
MZ-700 Quick Disk 用の QD イメージを作成・管理します。コマンド: format、dir、add。デフォルトイメージ: MZ700.qd。 |
cpmtools/ |
cpmcp、cpmls、cpmrm などのソース。最初のビルド時にコンパイルされます。 |
参考サイト
| リソース | リンク |
|---|---|
| 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 に同梱 |