tranZPUterファイリングシステム (TZFS) — テクニカルガイド
TZFS テクニカルガイド
このガイドでは、tranZPUter ファイリングシステム (TZFS) のハードウェア統合、メモリアーキテクチャ、ソフトウェアモジュールレイアウト、K64F I/O プロセッササービス API、CP/M 実装、完全なビルドシステムについて説明します。TZFS がシステムレベルでどのように動作するかを理解したい、新しいハードウェアに TZFS を移植したい、またはソースから完全なビルドを実行したいユーザーを対象としています。
TZFS は tranZPUter ファミリーのボード向けに RFS を移植したものです。物理的なフラッシュ ROM チップをプログラムする RFS と異なり、TZFS は tranZPUter の 512 KB RAM 上でのみ動作します — K64F(または同等品)I/O プロセッサが起動時に SD カードからファームウェア全体を SRAM に読み込み、その後 Z80 に制御を渡します。すべての SD カードアクセスは K64F サービス API を経由します。Z80 は SPI ハードウェアに直接アクセスしません。
日常的な使用とモニターコマンドリファレンスについてはユーザーマニュアルを参照してください。Z80 アセンブリソースコードの解説についてはデベロッパーズガイドを参照してください。
ハードウェアプラットフォーム
TZFS は 5 つのハードウェアプラットフォームをターゲットとしています。それぞれ
tranZPUter SW
tzfs_definitions.asm のフラグでコンパイル時に選択されます。生成されるファームウェアは機能の可用性と公開される TZFS モニターコマンドが異なりますが、ファイル、テープ、メモリコマンドはすべてのプラットフォームで同様に動作します。
最初の量産 tranZPUter ボードです。Sharp MZ-80A、MZ-700、MZ-1500、または MZ-2000 の拡張バスに接続し、以下を提供します:
tranZPUter SW-700 v1.3
- K64F ARM Cortex-M4 I/O プロセッサ — SD カードアクセスを管理し、起動時に TZFS とモニターファームウェアを SRAM に読み込み、共有メモリを介してすべての Z80 サービスリクエストを実行。
- 512 KB SRAM — すべての TZFS コード、モニターファームウェア、CP/M イメージを保持。Z80 はこれを通常のアドレス空間として認識します。物理的な ROM チップは存在しません。
- FPGA — T80 ソフトコア Z80 CPU、ZPU Evolution ソフト CPU、すべての Sharp MZ モデル(MZ-80A、MZ-700、MZ-800、MZ-1500、MZ-2000、MZ-80B)のハードウェアエミュレーション、VGA ビデオ出力を実装。
PCB レイアウトと信頼性を改善した tranZPUter SW の改良版です。SW と同じ K64F、512 KB SRAM、FPGA(T80、ZPU Evolution、ハードウェアエミュレーション、VGA 出力を搭載)を備えています。これが tranZPUter ボードの現行出荷バージョンです。TZFS ファームウェアは SW ビルドと同一です。
tranZPUter Fusion
同一ボード上に 40/80 カラービデオモジュールを統合した tranZPUter SW-700 です。すべての SW-700 機能に加えて、Fusion はハードウェアアクセラレーテッドカラーグラフィックスを追加します。カラービデオコマンドはこのプラットフォームの TZFS で公開されます。ビルド時に
tranZPUter FusionX
BUILD_VIDEOMODULE フラグで選択されます。
FPGA ベースの仮想 tranZPUter です。Sharp MZ モデルのすべてのハードウェアエミュレーション、ハードコアとソフトコア間の CPU 切り替え、VGA 出力はすべて FPGA によってネイティブに処理されます — このプラットフォームではファームウェアレベルで切り替えるものがないため、TZFS はこれらをモニターコマンドとして公開しません。ファイル、テープ、メモリコマンドは SW-700 ビルドと同様に動作します。ビルド時に
picoZ80
BUILD_FUSIONX フラグで選択されます。
PSRAM で MZ-80A のメモリマップ全体をエミュレートする RP2350 ベースの Z80 交換品です。K64F I/O プロセッサの役割は RP2350 の第 2 コアが担い、SD カードから TZFS を読み込み、同じ共有メモリプロトコルを使用してすべての K64F サービスリクエストを処理します。TZFS はこのプラットフォームでは CPU 切り替えやハードウェアエミュレーションコマンドを公開しません(RP2350 がそれらをすべて透過的に処理します)。ファイル、テープ、メモリコマンドは完全に機能します。ビルド時に
BUILD_PICOZ80 フラグで選択されます。
メモリアーキテクチャ
TZFS は tranZPUter のメモリ管理ユニットを使用して 512 KB SRAM をいくつかの 64 KB ブロックに分割し、ハードウェア制御の TZMM モードを使用して異なるブロックを Z80 のアドレス空間にマッピングします。これは物理的なフラッシュ ROM に 2 KB ウィンドウをバンク切り替えする RFS とは根本的に異なります。TZFS は 64 KB RAM ブロック全体を切り替えることができ、はるかに大きなコード領域を可能にします — 特に
Z80 アドレス空間レイアウト
tzfs_bank4.asm はアセンブラとディスアセンブラのテーブルに 52 KB のフルユーザー RAM 範囲を使用します。
アドレス サイズ 内容
─────────────────────────────────────────────────────────────────────
0x0000 4 KB モニター ROM 領域 — SA-1510(または 1Z-013A、MZ-80B IPL 等)
起動時に K64F が SD カードから読み込み、SRAM に常駐。
TZFS サービスコマンドで異なるモニターイメージを読み込むことで切り替え;
物理アドレス範囲は同じ。
0x1000 256 B MZ システム変数 / スタック
0x1200 約46 KB ユーザー RAM(メインプログラム領域)
0xCFFF
0xD000 12 KB ビデオ RAM + メモリマッピング I/O(Sharp MZ マザーボードハードウェア)
0xE800 2 KB TZFS 固定コードウィンドウ — 常に TZMM_TZFS
バンク(64 KB ブロック 0)にマッピング。プライマリ TZFS エントリポイント、
コマンドディスパッチャ、ジャンプテーブル、共有変数領域を含む。
0xEC80 256 B TZFS 変数(固定 E800–EFFF ウィンドウ内)
0xED80 640 B K64F サービス通信ブロック(TZSVCMEM)
0xEFFF
0xF000 4 KB 切り替え可能なコードウィンドウ — TZMM モードで選択されるバンク。
アクティブな TZFS モジュール(tzfs_bank2 / bank3 / bank4 / CP/M)に
応じて異なる 64 KB SRAM ブロックにマッピング。
0xFFFF
─────────────────────────────────────────────────────────────────────
メモリ管理モード(TZMM)
tranZPUter CPLD は I/O ポートレジスタへの書き込みで制御されるハードウェアメモリ管理を実装しています。各モードは 512 KB SRAM ブロックから Z80 アドレス空間への異なるマッピングを選択します。使用中のすべての TZMM モードには、信頼性の高い K64F 通信のために I/O ウェイト状態を挿入する
TZMM_ENIOWAIT ビット(0x20)が設定されています。
| モード | コード | 説明 |
|---|---|---|
| TZMM_ORIG | 0x00 | オリジナルの Sharp MZ モード — マザーボードの ROM と RAM が直接使用される。tranZPUter SRAM は見えない。K64F I/O 制御レジスタはアクセス可能のまま。 |
| TZMM_BOOT | 0x01 | オリジナルモードだが 0xE800–0xEFFF が tranZPUter SRAM ブロック 0 にマッピングされ、TZFS ブートスタブが実行されて K64F にサービスリクエストを発行できる。 |
| TZMM_TZFS | 0x02 | TZFS メインモード — すべてのメモリが tranZPUter SRAM。0x0000–0x0FFF にモニター、0x1000–0xCFFF にユーザー RAM、0xE800–0xEFFF に固定 TZFS コード、0xF000–0xFFFF に切り替え可能なウィンドウ。0xF000–0xFFFF にはブロック 0 が選択される。 |
| TZMM_TZFS2 | 0x03 | TZMM_TZFS と同じだが 0xF000–0xFFFF がブロック 1 にマッピング(tzfs_bank2 — メッセージ印刷、ASCII 変換、ヘルプ画面)。 |
| TZMM_TZFS3 | 0x04 | 0xF000–0xFFFF がブロック 2 にマッピング(tzfs_bank3 — メモリユーティリティ、I/O 読み書き、テープ補正、CPU/ハードウェアエミュレーション)。 |
| TZMM_TZFS4 | 0x05 | 0xF000–0xFFFF がブロック 3 にマッピング(tzfs_bank4 — Z80 アセンブラ/逆アセンブラ)。このバンクはアセンブラ/逆アセンブラテーブルに 0x1200–0xCFFF も使用し、最大 52 KB の作業空間を提供。 |
| TZMM_CPM | 0x06 | CP/M モード — すべて SRAM、ブロック 4 がフルアドレス空間にわたって選択される。 |
| TZMM_CPM2 | 0x07 | CP/M モード 2 — 0xF000–0xFFFF はブロック 4、0x0040–0xCFFF および 0xE800–0xEFFF はブロック 5。 |
MZ-700 および MZ-800 互換エミュレーション用の追加 TZMM モードも存在し、これらのマシンをエミュレートする際に TZFS が正しいメモリマップを提示できます。
RFS バンク切り替えとの比較
RFS はハードウェアバンクラッチレジスタを使用して物理フラッシュ ROM への 2 KB ウィンドウを切り替えます — バンク間で変わるのは 0xE800–0xEFFF ユーザー ROM ウィンドウだけです。TZFS は代わりに、新しい TZMM モードコードを書き込むことで 0xF000–0xFFFF にマッピングされた 64 KB SRAM ブロック全体を切り替えます。切り替えウィンドウは 4 KB(0xF000–0xFFFF)でフル 64 KB ブロックに支えられているため、TZFS バンクコードははるかに大きくなれます:tzfs_bank4 はテーブルにユーザー RAM 範囲 0x1200–0xCFFF も追加で使用することで 52 KB にわたります。0xE800–0xEFFF の固定 TZFS ウィンドウは変わらないため、どのバンクがアクティブであってもコマンドディスパッチャとジャンプテーブルは常にアクセス可能です。
ソフトウェアアーキテクチャ
完全なモジュールテーブル — すべてのソースファイル、そのメモリ範囲、TZMM モード、機能:
| モジュール | メモリ範囲 | サイズ | TZMM モード | 説明 |
|---|---|---|---|---|
tzfs.asm |
0xE800–0xEFFF | 2 KB 固定 | TZMM_TZFS | プライマリ TZFS エントリポイント、コマンドディスパッチャ、バンク切り替えインフラ、0xE880 の外部ジャンプテーブル、共有変数領域。常にマッピング — ページアウトされない。 |
tzfs_bank2.asm |
0xF000–0xFFFF | 4 KB ページング | TZMM_TZFS2 | メッセージ印刷、フォーマット出力、ASCII↔Sharp 文字セット変換、ヘルプ画面。 |
tzfs_bank3.asm |
0xF000–0xFFFF | 4 KB ページング | TZMM_TZFS3 | メモリユーティリティ(D、M、CP、FILL)、I/O ポート読み書き、テープ速度補正、CPU 周波数切り替え、Sharp MZ モデルのハードウェアエミュレーション。 |
tzfs_bank4.asm |
0x1200–0xCFFF + 0xF000–0xFFFF | 52 KB ページング | TZMM_TZFS4 | フルインタラクティブ Z80 アセンブラと Z80 逆アセンブラ。ユーザー RAM 範囲とページングウィンドウの両方を同時に使用することで 52 KB を確保。 |
monitor_SA1510.asm |
0x0000–0x0FFF | 4 KB | TZMM_TZFS | MZ-80A 用 SA-1510 モニター ROM(40 桁)。起動時に K64F が SD から読み込む。 |
monitor_80c_SA1510.asm |
0x0000–0x0FFF | 4 KB | TZMM_TZFS | 80 桁表示用にパッチされた SA-1510。 |
monitor_1Z-013A.asm |
0x0000–0x0FFF | 4 KB | TZMM_TZFS | MZ-700 / MZ-1200 用 1Z-013A モニター ROM。 |
monitor_80c_1Z-013A.asm |
0x0000–0x0FFF | 4 KB | TZMM_TZFS | 80 桁表示用にパッチされた 1Z-013A。 |
MZ80B_IPL.asm |
0x0000–0x0FFF | 4 KB | TZMM_TZFS | MZ-80B IPL ファームウェア。 |
任意の時点で最大 1 つのモニターイメージが 0x0000–0x0FFF を占有します。アクティブなモニターは起動時(または TZFS サービスコマンドで変更)に K64F が適切なイメージを SRAM ブロック 0 に Z80 が開始する前にコピーすることで選択されます。モニターファームウェアは TZFS の内部構造を知りません — 0xE880 の固定外部ジャンプテーブルを通じてのみ TZFS にコールバックします。
外部ジャンプテーブル(0xE880 の TZFSJMPTABLE)
このジャンプテーブルは、モニターファームウェアが TZFS 機能を呼び出すために使用する安定した固定アドレスを提供します。テーブルは固定の 0xE800–0xEFFF ウィンドウに存在するため、アクティブな TZMM モードに関係なくこれらのアドレスは変わりません:
| アドレス | 名前 | 説明 |
|---|---|---|
| 0xE880 | CMT_RDINF | テープ/SD ヘッダー(MZF アトリビュートブロック)を読み取る |
| 0xE883 | CMT_RDDATA | テープ/SD データブロックを読み取る |
| 0xE886 | CMT_WRINF | テープ/SD ヘッダーを書き込む |
| 0xE889 | CMT_WRDATA | テープ/SD データブロックを書き込む |
| 0xE88C | CMT_VERIFY | テープ/SD 書き込みを確認する |
| 0xE88F | CMT_DIR | SD カードディレクトリリスト |
| 0xE892 | CMT_CD | SD カードディレクトリ変更 |
| 0xE895 | SET_FREQ | CPU クロック周波数を設定する |
K64F / I/O プロセッササービス API
すべての SD カードファイル I/O、モニター読み込み、CP/M ディスクアクセスは K64F I/O プロセッサ(または picoZ80 の RP2350 第 2 コア)によって実行されます。Z80 はストレージハードウェアに直接アクセスしません — 共有メモリブロックを通じてリクエストを送信し、完了をポーリングします。CPU 切り替えとハードウェアエミュレーションについては、K64F の役割は FPGA が要求されたコアまたはエミュレーションモードを有効化するシグナルを送る前に必要なファームウェアまたは ROM イメージを読み込むことに限られます。T80、ZPU Evolution、すべての Sharp MZ ハードウェアエミュレーションは FPGA 自体に実装されています。
サービスリクエストメカニズム
- Z80 は 0xED80 のサービス通信ブロックを記入します:コマンドコードを
TZSVCCMDに書き込み、必要なパラメータ(ファイル名、アドレス、サイズ等)を設定し、TZSVCRESULTにTZSVC_STATUS_REQUEST(0xFE)を書き込みます。 - Z80 は K64F にシグナルを送るために I/O ポート
SVCREQ(0x68)に書き込みます。 - K64F はポート書き込みを検出し、コマンドブロックを読み取り、処理中に
TZSVCRESULTをTZSVC_STATUS_PROCESSING(0xFF)に設定します。 - Z80 は値が 0xFF(処理中)でも 0xFE(リクエストが未受理)でもなくなるまでタイトループで
TZSVCRESULTをポーリングします。それ以外の値は完了を示します。 - 成功時は
TZSVCRESULTがTZSVC_STATUS_OK(0x00)になります。エラー時は非ゼロのエラーコードを保持します。結果データ(ディレクトリエントリ、ファイルブロック等)はブロック内のTZSVCSECTORバッファにあります。
オフセット サイズ フィールド 説明 ──────────────────────────────────────────────────────────────────────────── +0x00 1 B TZSVCCMD サービスコマンドコード(下記コマンドテーブル参照) +0x01 1 B TZSVCRESULT 結果/ステータスバイト(0x00=OK、0xFE=リクエスト、0xFF=ビジー) +0x02 1 B TZSVCDIRSEC マルチブロックディレクトリ読み取り用ディレクトリセクター番号 +0x03 2 B TZSVC_TRACK_NO 仮想ドライブトラック番号 / 32 ビット LBA セクターアドレス +0x05 2 B TZSVC_SECTOR_NO 仮想ドライブセクター番号 +0x07 1 B TZSVC_FILE_NO ディレクトリ内のファイル番号 +0x08 1 B TZSVC_FILE_TYPE ファイルタイプ:0=MZF、1=MZF ヘッダーのみ、2=CAS、3=BAS、10=ALL +0x09 2 B TZSVC_LOADADDR 動的ロードアドレス / 保存アドレス / CPU 周波数 +0x0B 2 B TZSVC_LOADSIZE 読み込みまたは保存するイメージサイズ(バイト) +0x0D 20 B TZSVC_DIRNAME ディレクトリ名(CHANGEDIR と READDIR 用) +0x21 17 B TZSVC_FILENAME Sharp MZ ファイル名(17 文字、Sharp エンコーディング) +0x32 20 B TZSVCWILDC ディレクトリワイルドカードフィルター文字列 +0x46 512 B TZSVCSECTOR データセクターバッファ — ファイルブロック、ディレクトリエントリ等 ──────────────────────────────────────────────────────────────────────────── 合計:640 バイト(0xED80–0xEFFF、固定 TZFS ウィンドウ内)サービスコマンド
コマンドは機能別にグループ化されています。Z80 はリクエストをトリガーする前にコードを
ファイルおよびディレクトリ操作
TZSVCCMD に書き込みます:
| コード | 名前 | 説明 |
|---|---|---|
| 0x01 | READDIR | TZSVC_DIRNAME に指定されたディレクトリを開き、TZSVCSECTOR に最初のエントリブロックを返す。 |
| 0x02 | NEXTDIR | 現在開いているディレクトリから次のエントリブロックを返す。 |
| 0x03 | READFILE | TZSVC_FILENAME に指定されたファイルを開き、TZSVCSECTOR に最初の 512 バイトブロックを返す。 |
| 0x04 | NEXTREADFILE | 開いているファイルの次の 512 バイトブロックを返す。 |
| 0x05 | WRITEFILE | 新しいファイルを作成し、TZSVCSECTOR から最初の 512 バイトブロックを書き込む。 |
| 0x06 | NEXTWRITEFILE | 開いているファイルに次の 512 バイトブロックを書き込む。 |
| 0x07 | CLOSE | 現在開いているファイルまたはディレクトリハンドルを閉じる。 |
| 0x08 | LOADFILE | SD から tranZPUter SRAM の TZSVC_LOADADDR に完全なファイルを直接読み込む。 |
| 0x09 | SAVEFILE | tranZPUter SRAM の一領域(TZSVC_LOADADDR から TZSVC_LOADSIZE バイト)をファイルとして保存する。 |
| 0x0A | ERASEFILE | SD カードから TZSVC_FILENAME に指定されたファイルを削除する。 |
| 0x0B | CHANGEDIR | アクティブな SD カードディレクトリを TZSVC_DIRNAME に変更する。 |
| コード | 名前 | 説明 |
|---|---|---|
| 0x20 | LOAD40ABIOS | 40 桁 SA-1510 モニターを SRAM の 0x0000 に読み込む。 |
| 0x21 | LOAD80ABIOS | 80 桁 SA-1510 モニターを SRAM の 0x0000 に読み込む。 |
| 0x22 | LOAD700BIOS40 | MZ-700 1Z-013A 40 桁モニターを読み込む。 |
| 0x23 | LOAD700BIOS80 | MZ-700 1Z-013A 80 桁モニターを読み込む。 |
| 0x24 | LOAD80BIPL | MZ-80B IPL ファームウェアを読み込む。 |
| 0x25 | LOAD800BIOS | MZ-800 9Z-504M BIOS を読み込む。 |
| 0x26 | LOAD2000IPL | MZ-2000 IPL を読み込む。 |
| 0x2F | LOADTZFS | TZFS 自体を読み込む(TZFS のブートストラップにオンボードモニター BIOS がない MZ-80B や MZ-2000 などのマシンで使用)。 |
| コード | 名前 | 説明 |
|---|---|---|
| 0x30 | LOADBDOS | CP/M BDOS+CCP を RAM に再読み込みする(ウォームブートサポート)。 |
| 0x31 | ADDSDDRIVE | SD カードディスクイメージを CP/M ドライブレターに割り当てる。 |
| 0x32 | READSDDRIVE | SD カードディスクイメージから 128 バイトの CP/M セクターを読み取る。 |
| 0x33 | WRITESDDRIVE | SD カードディスクイメージに 128 バイトの CP/M セクターを書き込む。 |
| コード | 名前 | 説明 |
|---|---|---|
| 0x40 | CPU_BASEFREQ | Z80 クロックをマザーボードのベース周波数に切り替える。 |
| 0x41 | CPU_ALTFREQ | K64F が提供する代替周波数に切り替える。 |
| 0x42 | CPU_CHGFREQ | TZSVC_LOADADDR の値(Hz 単位)に代替周波数を設定する。 |
これらのコマンドは tranZPUter SW、SW-700、Fusion でのみ有効です。FusionX および picoZ80 では FPGA または RP2350 が CPU 選択をネイティブに処理するため、TZFS はこれらのコマンドを公開しません。
| コード | 名前 | 説明 |
|---|---|---|
| 0x50 | CPU_SETZ80 | マザーボードのハード Z80 CPU に切り替える。 |
| 0x51 | CPU_SETT80 | 必要なファームウェアを読み込み、FPGA に T80 ソフトコア Z80(FPGA 内実装)を有効化するシグナルを送る。 |
| 0x52 | CPU_SETZPUEVO | 必要なファームウェアを読み込み、FPGA に ZPU Evolution ソフト CPU(FPGA 内実装)を有効化するシグナルを送る。 |
| 0x53–0x5D | EMU_SETMZ* | SD からターゲットマシンの ROM/BIOS を読み込み、FPGA にその Sharp MZ モデルのハードウェアエミュレーションを有効化するシグナルを送る。すべてのエミュレーションロジックは FPGA に実装されている。 |
| コード | 名前 | 説明 |
|---|---|---|
| 0x7F | EXIT | TZFS を終了し、元の TZMM_ORIG モードで再起動する(マシンをネイティブファームウェアに戻す)。 |
| 値 | 名前 | 説明 |
|---|---|---|
| 0x00 | TZSVC_STATUS_OK | コマンドが正常に完了した。結果データがあれば TZSVCSECTOR にある。 |
| 0xFE | TZSVC_STATUS_REQUEST | Z80 がリクエストを送信し、K64F の応答を待っている。 |
| 0xFF | TZSVC_STATUS_PROCESSING | K64F が現在コマンドを実行中。Z80 はポーリングを続ける必要がある。 |
CP/M 2.2 実装
CP/M 2.2 は
CPM モニターコマンドを通じてすべての TZFS プラットフォームで利用可能です。実装は TZMM_CPM / TZMM_CPM2 モードを使用して、TZFS 作業領域から独立した 64 KB SRAM ブロックへの CP/M アクセスを提供します。カスタム BIOS(CBIOS)はすべてのディスク I/O に K64F サービスコールを使用します — TZFS に直接 SPI ドライバーはなく、Z80 が SD カードハードウェアにアクセスすることもありません。CP/M ドライブ A:–G: は SD カード上に標準の SDCFS ファイルシステムレイアウトで保存された SD カードディスクイメージです。
CBIOS が 4 つのユーザー ROM バンクに分割されている RFS と異なり、TZFS CBIOS は CP/M SRAM イメージの一部としてアセンブルされます。CP/M ディスクドライバーはすべてのディスク読み書きに ADDSDDRIVE、READSDDRIVE、WRITESDDRIVE サービスコマンドを発行します。K64F は各ドライブレターを SD カード上のディスクイメージファイルにマッピングするため、Z80 が SD カードの FAT32 レイアウトを知る必要はありません。
CP/M 2.2 は 47 KB の使用可能なプログラム RAM を提供します。CCP と BDOS は RAM に常駐しており、大きなアプリケーションで上書きされる可能性があります。ウォームブート時に LOADBDOS サービスコマンドで再読み込みされます。
ビルドシステム
すべての開発は 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/tzfs_definitions.asm を編集して、適切なターゲットと機能フラグを設定します。プラットフォームフラグ(いずれか 1 つを 1 に設定):
| フラグ | ターゲット |
|---|---|
BUILD_MZ80A EQU 1 |
Sharp MZ-80A ホストマシン |
BUILD_MZ700 EQU 1 |
Sharp MZ-700 / MZ-1200 ホストマシン(デフォルト) |
BUILD_MZ1500 EQU 1 |
Sharp MZ-1500 ホストマシン |
BUILD_MZ2000 EQU 1 |
Sharp MZ-2000 / MZ-80B ホストマシン |
追加のオプション機能フラグ:
| フラグ | デフォルト | 説明 |
|---|---|---|
BUILD_FUSIONX |
0 | tranZPUter FusionX をターゲットにする場合は 1 に設定。CPU/エミュレーション切り替えコマンドを無効化。 |
BUILD_PICOZ80 |
0 | picoZ80 をターゲットにする場合は 1 に設定。CPU/エミュレーション切り替えコマンドを無効化。 |
ENADEBUG |
0 | アセンブリ時デバッグ出力を有効化する。 |
git clone https://git.eaw.app/eaw/tranZPUter.git cd tranZPUter # フルビルド: ./build.sh
build.sh は以下の手順を順番に実行します:
- ソースから
cpmtoolsをコンパイルし(初回のみ)、PATHに追加する。 tools/assemble_tzfs.sh—tzfs.asmとすべてのバンクファイル(tzfs_bank2.asm、tzfs_bank3.asm、tzfs_bank4.asm)をバイナリイメージにアセンブルする。tools/assemble_cpm.sh— CP/M 2.2 CBIOS を SRAM イメージにアセンブルする。tools/assemble_roms.sh— すべてのモニターファームウェアバリアント(SA-1510 40/80 桁、1Z-013A 40/80 桁、MZ-80B IPL)と MZF アプリケーションイメージをアセンブルする。tools/make_cpmdisks.sh— CP/M ディスクイメージを構築する(READSDDRIVE / WRITESDDRIVE で K64F が提供する RAW 形式)。
ビルドが成功すると
roms/ ディレクトリに以下が含まれます:
| ファイル | 説明 |
|---|---|
tzfs.bin |
プライマリ TZFS イメージ — 固定ウィンドウコード(0xE800–0xEFFF、ブロック 0)。 |
tzfs_bank2.bin |
バンク 2 イメージ — メッセージ印刷、ヘルプ画面(0xF000–0xFFFF でページング)。 |
tzfs_bank3.bin |
バンク 3 イメージ — メモリユーティリティ、I/O、エミュレーション切り替え(0xF000–0xFFFF でページング)。 |
tzfs_bank4.bin |
バンク 4 イメージ — Z80 アセンブラと逆アセンブラ(ページング、52 KB 使用)。 |
monitor_SA1510.bin |
SA-1510 40 桁モニターイメージ(0x0000–0x0FFF)。 |
monitor_80c_SA1510.bin |
SA-1510 80 桁モニターイメージ。 |
monitor_1Z-013A.bin |
1Z-013A 40 桁モニターイメージ。 |
monitor_80c_1Z-013A.bin |
1Z-013A 80 桁モニターイメージ。 |
MZ80B_IPL.bin |
MZ-80B IPL イメージ。 |
cbios.bin |
CP/M 2.2 CBIOS SRAM イメージ(K64F が TZMM_CPM ブロックに読み込む)。 |
CPM_DISK_*.img |
CP/M ディスクイメージ(K64F が READSDDRIVE / WRITESDDRIVE で提供する RAW 形式)。 |
参考サイト
| リソース | リンク |
|---|---|
| TZFS プロジェクトページ | /sharpmz-upgrades-tzfs/ |
| TZFS ユーザーマニュアル | /sharpmz-upgrades-tzfs-usermanual/ |
| TZFS デベロッパーズガイド | /sharpmz-upgrades-tzfs-developersguide/ |
| tranZPUter プロジェクトページ | /transzputer-sw/ |
| tranZPUter Fusion プロジェクトページ | /transzputer-fusion/ |
| RFS テクニカルガイド | /sharpmz-upgrades-rfs-technicalguide/ |
| picoZ80 テクニカルガイド | /picoz80-technicalguide/ |
| GLASS Z80 アセンブラ | tools/glass.jar にバンドル |