tranZPUterファイリングシステム (TZFS) — ユーザーマニュアル
TZFS ユーザーマニュアル
tranZPUter ファイリングシステム (TZFS) は、tranZPUter 系 Z80 拡張ボード向けの Z80 アセンブリ言語ファームウェアパッケージです。ROM ファイリングシステム (RFS) を tranZPUter のアーキテクチャに移植したもので、物理的なフラッシュ ROM カードへのプログラミングの代わりに、TZFS はボード上の I/O プロセッサ (K64F または ZPU) によって起動のたびに SD カードからボードの 512 KB RAM に自動的に読み込まれます。その結果、SD カードファイリング、CP/M 2.2 ブート、組み込み Z80 アセンブラ・逆アセンブラ、ハードウェアマシンエミュレーション、ソフト CPU 切り替え、VGA 出力制御、40 以上の新コマンドを追加する拡張モニタとなり、おなじみの SA-1510 の
* プロンプトとすべての元のコマンドをそのまま維持します。
このマニュアルでは、TZFS を日常的に使用するために必要なすべての情報を説明します。ハードウェアアーキテクチャとビルドシステムの詳細についてはテクニカルガイドを参照してください。ソースコードの内部構造とファームウェア開発についてはデベロッパーズガイドを参照してください。
対応ハードウェア
TZFS は 5 つのハードウェアプラットフォームをサポートしており、それぞれコンパイル時にビルドフラグで選択されます。生成されるファームウェアイメージと利用可能な機能はターゲットによって異なります。モニターコマンドリファレンスで (T) と示されているコマンドは tranZPUter SW、SW-700、Fusion プラットフォームでのみ利用可能です。これらのコマンドは FusionX および picoZ80 では存在しません。それらのプラットフォームでは同等の機能が FPGA または RP2350 によってネイティブに処理されます。
| プラットフォーム | ビルドフラグ | 説明 | 制限事項 |
|---|---|---|---|
| tranZPUter SW | BUILD_MZ700(デフォルト) |
オリジナルの tranZPUter 設計。FPGA はすべての Sharp MZ モデルのハードウェアエミュレーション、T80 ソフトコア Z80 CPU、ZPU Evolution ソフト CPU、VGA 出力を実装。K64F I/O プロセッサが SD カードアクセスとその他のソフトサービスを処理。 | なし — フル機能セット。 |
| tranZPUter SW-700 v1.3 | BUILD_MZ700 |
現行量産モデル。SW の改良された PCB レイアウト。同じ FPGA および K64F 機能、フル機能セット。 | なし — フル機能セット。 |
| tranZPUter Fusion | BUILD_MZ700 |
tranZPUter ボードと FPGA ビデオモジュールを組み合わせたもの。同じ FPGA および K64F 機能、フル機能セット。 | なし — フル機能セット。 |
| tranZPUter FusionX | BUILD_FUSIONX |
tranZPUter の FPGA ベース仮想実装。ハードウェアエミュレーション、CPU 切り替え、VGA 制御は FPGA がネイティブに処理。 | ハードウェアエミュレーション、CPU 切り替え、VGA コマンド (T) は TZFS 経由では利用不可。ファイル、テープ、メモリコマンドはすべて利用可能。 |
| picoZ80 | BUILD_PICOZ80 |
RP2350 ベースの Z80 交換ボード。FusionX と同じアーキテクチャ分担 — FPGA/RP2350 が低レベルハードウェア機能を処理。 | FusionX と同じ制限:TZFS 経由での (T) コマンドなし。ファイル、テープ、メモリコマンドはすべて利用可能。 |
追加のビルドフラグ
BUILD_MZ80A、BUILD_MZ1500、BUILD_MZ2000 は、MZ-700 以外のマシン向けにビルドする際のターゲット MZ モデルを選択します。これらはデフォルトのテープタイミングと特定のメモリマップ定数に影響しますが、コマンドセットは変わりません。
TZFS の入手
あらかじめビルドされたファームウェアイメージは Gitea リポジトリの
releases/ ディレクトリで入手でき、ビルドツールなしで直接使用できます。RFS と異なり、TZFS は物理的な ROM チップへのプログラミングを必要としません — K64F または ZPU I/O プロセッサが起動のたびに SD カードから TZFS ファームウェアを tranZPUter の 512 KB RAM に自動的に読み込みます。
TZFS をインストールするには、あらかじめビルドされたファームウェアバイナリと付属の SD カードファイルを FAT フォーマットのマイクロ SD カードにコピーし、tranZPUter ボードの SD カードスロットに挿入します。I/O プロセッサは起動時にファームウェアを検出し、Z80 がリセットから解放される前に透過的に読み込みます。
ソースからビルドするには、リポジトリをクローンして次のコマンドを実行します:
./build.sh
ビルドスクリプトはデフォルトターゲット(
BUILD_MZ700)で TZFS をアセンブルします。異なるプラットフォームをターゲットにするには適切なフラグを渡します:
./build.sh BUILD_FUSIONX=1 # FusionX ビルド ./build.sh BUILD_PICOZ80=1 # picoZ80 ビルド ./build.sh BUILD_MZ80A=1 # MZ-80A ターゲット(SW/SW-700/Fusion)
ビルド後、SD カードファイルコレクションとともに出力バイナリを SD カードにコピーします。ビルドプロセスと出力レイアウトの詳細についてはテクニカルガイド — ビルドシステムを参照してください。
初回起動
SD カードを挿入し、tranZPUter ボードを互換性のある Sharp MZ マシンに接続して電源を入れます。K64F または ZPU I/O プロセッサが TZFS ファームウェアを tranZPUter の 512 KB RAM に読み込みます。その後 Z80 がリセットから解放され、TZFS を直接実行します。おなじみの SA-1510 サインオンバナーが表示され、TZFS が正常に初期化されたことを示す "
+ TZFS" が付加されます:
SHARP MZ-80A Monitor SA-1510 + TZFS *
* は標準の SA-1510 モニタープロンプトです。すべての元の SA-1510 コマンドは、改造されていないマシンと同様に動作します。H キーを押すと、すべての TZFS コマンドを一覧表示するページ付きヘルプ画面が表示されます。スペースキーでページを進めます。
+ TZFS のテキストが表示されない場合、TZFS は正常に初期化されていません。最も一般的な原因は、SD カードが存在しないか正しく準備されていないこと、またはファームウェアバイナリがターゲットハードウェアプラットフォームと一致していないことです。SD カードが正しく挿入されており、ボードのバリアントに合った正しい TZFS ファームウェアバイナリが含まれていることを確認してください。
TZFS モニターコマンド
TZFS の完全なコマンドセットを以下に示します。(T) と示されているコマンドは tranZPUter SW、SW-700、Fusion プラットフォーム(K64F I/O プロセッサを搭載したもの)でのみ利用可能です。これらのコマンドは FusionX および picoZ80 ビルドには存在しません。それらのプラットフォームでは同等のハードウェア機能がネイティブに提供されます。
| コマンド | パラメータ | 説明 |
|---|---|---|
| 4 | — | 40 桁表示モードに切り替える。 |
| 8 | — | 80 桁表示モードに切り替える。 |
| ASM | <アドレス> |
指定された <アドレス> から組み込み Z80 アセンブラを起動。ニーモニックを 1 行ずつ入力すると、アセンブルされたバイトが RAM に書き込まれアドレスが自動的に進む。 |
| B | — | キー入力時のビープ音を有効化・無効化する。 |
| BASIC | — | SD カード上の SA-5510 BASIC を検索し、読み込んで実行する。 |
| CD | [<ディレクトリ>] |
アクティブな SD カードディレクトリを変更する。引数なしでは現在のパスを表示。標準的なディレクトリナビゲーションをサポート。 |
| CP | <src> <dst> <size> |
メモリブロックをコピーする。引数はすべて 4 桁の 16 進数:ソースアドレス、宛先アドレス、バイト数。 |
| CPM | — | SD カードから CP/M 2.2 を読み込んでブートする。 |
| D | <addr> [<addr2>] |
<addr> から <addr2> まで(終了アドレスがない場合は 20 行)のメモリを 16 進数と ASCII でダンプする。画面ごとに一時停止し、D でページダウン、U でページアップ、X で終了。 |
| DASM | <addr> [<addr2>] |
<addr> から <addr2> の Z80 マシンコードを逆アセンブルする。アドレス、16 進数バイト、ニーモニックを表示。 |
| DIR | [<ワイルドカード>] |
アクティブな SD カードディレクトリのページ付きリスト表示。例えば DIR *.MZF のようにオプションのワイルドカードパターンを指定可能。 |
| EC | <名前またはファイル番号> |
SD カードからファイルを名前または番号で削除する。 |
| EX | — | TZFS を終了し、(TZFS なしで)元のモードでマシンを再起動する。 |
| F | [<ドライブ>] |
フロッピーディスクからブートする。指定されない場合はドライブ番号を入力するよう促す。 |
| FILL | <start> <end> [,<value>] |
<start> から <end> まで <value> でメモリを埋める(デフォルトは 0x00)。 |
| FREQ | <kHz> |
CPU 周波数を kHz 単位で設定する。0 はボードのデフォルトに戻す。K64F サービスリクエスト API を使用。 |
| H | — | ページ付きヘルプ画面を表示する。スペースキーで進む。 |
| J | <アドレス> |
指定された 16 進数アドレスにジャンプして実行する。 |
| L / LT | [<ファイル名>] [,<M>] |
テープ (CMT) から読み込んで実行する。オプションの ,M でテープタイミング用のマシンモデルを指定(テープ操作を参照)。 |
| LTNX | [<ファイル名>] [,<M>] |
実行せずにテープから読み込む。 |
| LC | <名前または番号> [,<M>] |
SD カードからプログラムを読み込んで実行する。オプションの ,M でターゲットマシンモデルを指定。 |
| LCNX | <名前または番号> [,<M>] |
実行せずに SD カードから読み込む。 |
| M | <アドレス> |
インタラクティブメモリエディタ。アドレスと現在の値を表示し、16 進数の値を入力して書き込み、Enter でスキップ、Ctrl-C で終了。 |
| MZ (T) | [<mc>] |
マシンコード mc のハードウェアエミュレーションを有効化する。省略時は MZ-80A がデフォルト。有効なコード:80K、80C、1200、80A、700、800、80B、2000。 |
| MZ80K (T) | — | Sharp MZ-80K ハードウェアエミュレーションを有効化する。 |
| MZ80C (T) | — | Sharp MZ-80C ハードウェアエミュレーションを有効化する。 |
| MZ1200 (T) | — | Sharp MZ-1200 ハードウェアエミュレーションを有効化する。 |
| MZ80A (T) | — | Sharp MZ-80A ハードウェアエミュレーションを有効化する。 |
| MZ700 (T) | — | Sharp MZ-700 ハードウェアエミュレーションを有効化する。 |
| MZ1500 (T) | — | Sharp MZ-1500 ハードウェアエミュレーションを有効化する。 |
| MZ800 (T) | — | Sharp MZ-800 ハードウェアエミュレーションを有効化する。 |
| MZ80B (T) | — | Sharp MZ-80B ハードウェアエミュレーションを有効化する。 |
| MZ2000 (T) | — | Sharp MZ-2000 ハードウェアエミュレーションを有効化する。 |
| MZ2200 (T) | — | Sharp MZ-2200 ハードウェアエミュレーションを有効化する。 |
| MZ2500 (T) | — | Sharp MZ-2500 ハードウェアエミュレーションを有効化する。 |
| P | — | 接続されたプリンタのテストを実行する。 |
| R | — | DRAM メモリテストを包括的に実行する(0x1200〜0xCFFF)。障害のあるアドレスを報告。 |
| RIO | <ポート> |
I/O ポートを読み取り、値を表示する。ポートは 4 桁の 16 進数。 |
| S / ST | <start> <end> <exec> [,<M>] |
メモリ範囲をテープ (CMT) に保存する。ファイル名の入力を求める。オプションの ,M でマシンのテープタイミングを指定。 |
| SC | <start> <end> <exec> |
メモリ範囲を SD カードに保存する。ファイル名の入力を求める。 |
| SD2T | <名前または番号> [,<M>] |
SD カードからテープ (CMT) へファイルをコピーする。オプションの ,M でマシンモデルのテープタイミングを指定。 |
| T | — | 8253 タイマーチップをテストする。 |
| T2SD | [B] [,<M>] |
テープを SD カードにコピーする。B フラグはバルクモードで読み込む(複数ファイルを連続して)。オプションの ,M でマシンモデルを指定。 |
| T80 (T) | — | ハードウェア Z80 から内部ソフト T80 CPU コアに切り替える。 |
| TC | [-]<値> |
テープ遅延補正をステップ単位で設定する。- プレフィックスで減少、なしで増加。引数なしで現在の値を表示。 |
| V | — | テープに保存したファイルをメモリ内のデータと照合して確認する。 |
| VBORDER (T) | <色> |
VGA 出力ボーダーカラーを設定する(0〜15)。 |
| VGA (T) | <モード> |
VGA 出力モードを設定する(0=オフ、1=640×480、2=800×600)。 |
| VMODE (T) | <モード> |
エミュレートされたマシンのアクティブなビデオモードを設定する。 |
| WIO | <ポート> <値> |
I/O ポート <ポート>(4 桁の 16 進数)に <値>(2 桁の 16 進数)を書き込む。ハードウェアデバッグに有用。 |
| Z80 (T) | — | ソフト CPU からハード(外部)Z80 に切り替える。 |
| ZPU (T) | — | ZPU Evolution ソフト CPU コアに切り替え、zOS をブートする。 |
テープ操作
TZFS は SD カードファイリングシステムと並行して完全な CMT(カセット)サポートを維持しています。すべての元のテープコマンドは、改造されていない SA-1510 モニターと同様に動作します。TZFS はマシンモデルのタイミング選択でこれらを拡張し、テープと SD カード間でファイルを転送するための便利なコマンドを追加します。
テープからの読み込み
テープからプログラムを読み込んで実行するには L(またはエイリアス LT)を使用します。実行せずに読み込むには LTNX を使用します。オプションでファイル名を指定できます。指定した場合、TZFS は一致するヘッダーが見つかるまでテープを検索します。ファイル名なしの場合は最初に見つかったファイルが読み込まれます。
オプションの
,M パラメータは読み込みに使用するマシンモデルのテープタイミングパラメータを選択します。これは、異なるボーレートやビットセル幅を使用する別の MZ モデルで作成されたテープを読む場合に必要です。
| コード | マシンモデル |
|---|---|
| K | Sharp MZ-80K |
| C | Sharp MZ-80C |
| 1 | Sharp MZ-1200 |
| A | Sharp MZ-80A |
| 7 | Sharp MZ-700 |
| 8 | Sharp MZ-800 |
| B | Sharp MZ-80B |
| 2 | Sharp MZ-2000 |
* L ; 次のテープファイルを読み込んで実行(デフォルトタイミング) * LT INVADERS ; テープ上の INVADERS を検索して実行 * LTNX ,7 ; MZ-700 テープタイミングで次のファイルを読み込み、実行しないテープへの保存
メモリ範囲をテープに保存するには S(または ST)を使用します。開始アドレス、終了アドレス、実行アドレスを連続した 4 桁の 16 進数で指定し、プロンプトが表示されたらファイル名を入力します。オプションの
,M パラメータでターゲットマシンモデルのテープタイミングを選択します:
* S120020001200 FILE NAME? MYPROG SAVING...テープ保存の確認
保存直後に V を使用して、テープに書き込まれた内容がメモリ内のデータと一致することを確認します。TZFS はテープを読み戻してバイト単位で比較し、不一致を報告します。
テープから SD カードへのコピー
T2SD はテープから次のファイルを読み込み、アクティブな SD カードディレクトリに直接保存します。コマンドを実行する前にテープデッキで再生を押してください。オプションの
B フラグはバルクモードを有効にし、テープの終わりに達するかエラーが発生するまでテープからファイルを連続して読み込みます — 1 回の操作でテープ全面を SD カードにアーカイブするのに便利です。オプションの ,M パラメータは上記のようにテープタイミングを選択します:
* T2SD ; 次のテープファイルを SD カードにコピー(デフォルトタイミング) * T2SD B ; バルクコピー — テープからすべてのファイルを SD カードに読み込む * T2SD B,7 ; MZ-700 テープタイミングでバルクコピーSD カードからテープへのコピー
SD2T はアクティブな SD カードディレクトリから名前または番号で指定したファイルを読み込み、テープ間コピーを行うのと同様にテープに書き込みます。プロンプトが表示されたらテープデッキで録音を押してください。オプションの
,M パラメータで書き込みのテープタイミングを選択します:
* SD2T INVADERS ; SD カードから INVADERS をテープに書き込む * SD2T 04,7 ; MZ-700 タイミングでファイル 04 をテープに書き込むテープ遅延補正
異なる CMT デッキやテープヘッドは、わずかに異なる読み書きタイミング特性を持っています。TC コマンドはすべてのテープタイミング計算に適用される補正値を調整します。引数なしで TC を実行すると現在の値が表示されます。プレフィックスなしで TC を使用すると補正を増加させ、
- プレフィックスで減少させます。テープヘッドの速度変動による断続的な読み込み失敗を解決するには、通常 1 〜 2 ステップずつ調整すれば十分です:
* TC ; 現在の補正値を表示 * TC 2 ; 補正を 2 ステップ増加 * TC -1 ; 補正を 1 ステップ減少
SD カード操作
TZFS は tranZPUter の K64F または ZPU I/O プロセッサを使用して、サービスリクエスト API 経由で FAT フォーマットの SD カードにアクセスします。ファイルは通常のディレクトリ構造に標準的な MZF 形式のファイルとして保存されており、PC から SD カードを管理するのが簡単です。すべての SD カードコマンドは現在アクティブなディレクトリで動作し、CD で変更できます。
ディレクトリ一覧の表示
アクティブな SD カードディレクトリのページ付きリストを表示するには DIR を使用します。オプションのワイルドカードパターンで表示を絞り込めます:
* DIR ; アクティブなディレクトリのすべてのファイルを一覧表示 * DIR *.MZF ; .MZF ファイルのみを一覧表示 * DIR INVADERS* ; INVADERS で始まる名前のファイルを一覧表示
各リストエントリにはファイル番号とファイル名が表示されます。画面ごとに一時停止し、スペースキーで続けます。
ディレクトリの変更
SD カードのディレクトリ構造をナビゲートするには CD を使用します。引数なしで CD を実行すると現在のパスが表示されます。標準的なディレクトリナビゲーションが適用されます:
* CD ; 現在のディレクトリパスを表示 * CD MZ700 ; サブディレクトリ MZ700 に移動 * CD .. ; 1 つ上のレベルに移動プログラムの読み込み
アクティブな SD カードディレクトリからプログラムを読み込んで実行するには LC を使用します。実行せずに読み込むには LCNX を使用します。ファイルは名前または DIR リストに表示された番号で指定できます。番号による指定は文字列照合が不要なため高速です。オプションの
,M パラメータは、異なる MZ バリアント向けに設計されたプログラムのターゲットマシンモデルを指定します:
* LC INVADERS ; アクティブなディレクトリから INVADERS を読み込んで実行 * LCNX INVADERS ; 実行せずに読み込む(デバッグに有用) * LC 04 ; ファイル番号 04 を読み込んで実行 * LC STARTREK,7 ; MZ-700 メモリモデルをターゲットとして STARTREK を読み込むプログラムの保存
アクティブな SD カードディレクトリにメモリ範囲を保存するには SC を使用します。構文はテープの S コマンドと同じで、開始アドレス、終了アドレス、実行アドレスを連続した 4 桁の 16 進数で指定し、プロンプトが表示されたらファイル名を入力します:
* SC120020001200 FILE NAME? MYPROG SAVEDファイルの削除
アクティブな SD カードディレクトリからファイルを削除するには EC を使用します。ファイルは名前または DIR リストに表示された番号で指定できます:
* EC OLDPROG ; OLDPROG という名前のファイルを削除 * EC 07 ; ファイル番号 07 を削除
ハードウェアエミュレーション
この機能は tranZPUter SW、SW-700、Fusion プラットフォームでのみ利用可能です (T)。
tranZPUter の FPGA は Sharp MZ ファミリー全体のハードウェアレベルエミュレーションを実装しています。ハードウェアエミュレーションコマンドが発行されると、TZFS ファームウェアは K64F に対して、ターゲットマシン用の正しいモニター ROM を SD カードから SRAM に読み込むよう要求します(例えば MZ-700 の場合は 1Z-013A、MZ-80A の場合は SA-1510)。読み込まれると、FPGA がビデオとメモリマッピングロジックをターゲットマシンに合わせて再設定し、マシンが完全な互換モードで再起動します。その後、ターゲットモデル向けに設計されたソフトウェアが変更なしで動作します — ホストマシンはハードウェアレベルでターゲットマシンそのものになります。
MZ コマンドは名前付きマシンコードのエミュレーションを有効化します。個別の名前付きコマンド(MZ80K、MZ700 など)は最もよく使用されるモデルの便利なエイリアスです:
* MZ 700 ; MZ-700 ハードウェアエミュレーションを有効化 * MZ700 ; 同等のエイリアス * MZ ; MZ-80A エミュレーションを有効化(デフォルト) * MZ 2000 ; MZ-2000 ハードウェアエミュレーションを有効化
サポートされているエミュレーションターゲットの全リストは上記のコマンドテーブルに示されています。MZ-2200 および MZ-2500 のエミュレーションエントリは存在しますが、SD カード上のモニター ROM の可用性に依存することに注意してください。
エミュレーション後にホストマシンのネイティブモードに戻るには、ホスト用の適切な MZ コマンドを発行するか(例えばホストが MZ-80A の場合は MZ80A)、マシンの電源を入れ直してください。ハードウェアエミュレーションの変更はソフトリセット後も維持されます。
CPU 切り替え
この機能は tranZPUter SW、SW-700、Fusion プラットフォームでのみ利用可能です (T)。
tranZPUter の FPGA は、ハードウェア外部 Z80 と並行して 2 つのソフト CPU コアを実装しています:T80(ソフトコア Z80 実装)と ZPU Evolution(32 ビットスタック CPU)。CPU を切り替えると、FPGA が要求されたコアを有効化する前に K64F が必要なファームウェアを読み込みます。TZFS はこのための 3 つのコマンドを提供します:
| コマンド | 説明 |
|---|---|
| Z80 | ハード(外部)Z80 に切り替える。これは起動後のデフォルト状態です。 |
| T80 | FPGA に実装されている T80 ソフトコア Z80 に切り替える。 |
| ZPU | FPGA に実装されている ZPU Evolution ソフト CPU に切り替え、ZPU オペレーティングシステムの zOS をブートする。 |
切り替え後、TZFS ファームウェアはユーザーセッションを中断することなく新しい CPU 上で継続して動作します。Z80、T80、ZPU コアは同じ 512 KB RAM 空間を共有しているため、切り替え前後で見えるメモリの内容は同一です。CPU 切り替えは、サイクル精度の Z80 タイミングに依存しないプログラムに対して透過的です。
FREQ コマンドを使用すると、切り替えとは独立して CPU クロック周波数を調整できます(K64F サービス API 経由で通知):
* T80 ; ソフト T80 コアに切り替える * Z80 ; 外部 Z80 に切り替える * ZPU ; ZPU Evolution コアに切り替えて zOS をブート * FREQ 4000 ; CPU 周波数を 4 MHz に設定 * FREQ 0 ; ボードのデフォルト周波数に戻す
ビデオ制御
この機能は tranZPUter SW、SW-700、Fusion プラットフォームでのみ利用可能です (T)。
tranZPUter FPGA は VGA ビデオ出力を提供します。3 つのコマンドで制御します:
| コマンド | パラメータ | 説明 |
|---|---|---|
| VGA | <モード> |
VGA 出力モードを設定する。0 = オフ、1 = 640×480、2 = 800×600。 |
| VBORDER | <色> |
VGA ボーダーカラーを設定する(0〜15)。色の値は標準的な Sharp MZ パレットに従う。 |
| VMODE | <モード> |
エミュレートされたマシンのアクティブなビデオモードを設定する。モードの値はアクティブなハードウェアエミュレーションターゲットによって異なる。 |
* VGA 1 ; 640x480 で VGA 出力を有効化 * VGA 2 ; 800x600 で VGA 出力を有効化 * VGA 0 ; VGA 出力を無効化 * VBORDER 4 ; ボーダーカラーを 4 に設定 * VMODE 2 ; アクティブなエミュレーションターゲットのビデオモード 2 を設定
40 桁および 80 桁表示切り替えコマンド(4 および 8)はすべてのプラットフォームで利用可能で、VGA 出力とは独立してキャラクターセルの幅を切り替えます。
BASIC の使用
TZFS は Sharp SA-5510 BASIC インタープリタを SD カードから自動的に検索して読み込むことができます。モニタープロンプトから次のように入力します:
* BASIC
TZFS はアクティブな SD カードディレクトリで SA-5510 BASIC イメージを検索し、RAM に読み込んで実行します。BASIC プロンプトが表示され、インタープリタはオリジナルのハードウェアと同様に動作します。
MZF ファイルとして SD カードに保存されている BASIC プログラムは、適切なファイルに向けられた標準のテープ LOAD コマンドを使用して BASIC 内から読み込むことができます。BASIC から TZFS モニターに戻るには、利用可能であれば BASIC の BYE または MON コマンドを使用するか、マシンをリセットすると TZFS が SD カードから自動的に再読み込みされます。
TZFS は ROM ではなく SD カードから BASIC を読み込むため、SD カード上に複数のバージョンの BASIC を保持し、現在のハードウェアエミュレーションターゲットに適したものを読み込むのが簡単です。例えば、MZ-700 ハードウェアエミュレーション下で動作しているときは、SA-5510 ではなく MZ-700 BASIC イメージを読み込みます。
CP/M 2.2 の実行
CP/M 2.2 はすべての TZFS プラットフォームで利用可能です。モニタープロンプトから:
* CPM
TZFS はアクティブな SD カードディレクトリで CP/M イメージを検索し、読み込んで CP/M CCP に制御を転送します。プロンプトが
A> に変わります。
ディスクドライブへの CP/M アクセスは tranZPUter の K64F または ZPU I/O プロセッササービス API を通じて提供され、CP/M BIOS 呼び出しを SD カードファイル操作に変換します。あらかじめビルドされた SD カードイメージには、一連の CP/M アプリケーションとユーティリティが含まれた CP/M ディスク領域が含まれています。
CP/M から TZFS モニターに戻るには、ウォームブート(CCP からの Ctrl-C)を使用すると CCP が再読み込みされます。TZFS に完全に戻るには、CP/M セッション終了後にモニタープロンプトから EX コマンドを使用するか、マシンの電源を入れ直してください — TZFS は SD カードから自動的に再読み込みされます。
トラブルシューティング
モニターは起動するが、バナーに「TZFS」が表示されない
- SD カードが挿入されていないか検出されない — カードが tranZPUter ボードの SD カードスロットに完全に装着されているか確認してください。
- SD カード上のファームウェアバイナリが間違っている — TZFS バイナリがボードのバリアント(SW/SW-700/Fusion、FusionX、または picoZ80)に一致していることを確認してください。ハードウェアターゲット間でファームウェアビルドを混在させると読み込みに失敗します。
- SD カードが FAT フォーマットされていない — K64F/ZPU I/O プロセッサは標準的な FAT フォーマットのカードを想定しています。カードを再フォーマットして、TZFS ファームウェアと SD カードファイルを再度コピーしてください。
- I/O プロセッサのファームウェアが古い — K64F または ZPU I/O プロセッサが TZFS サービスリクエスト API をサポートするファームウェアバージョンで動作していることを確認してください。互換性のある I/O プロセッサファームウェアについては Gitea のリリースページを確認してください。
ハードウェアエミュレーション、CPU 切り替え、VGA コマンドが認識されない
- FusionX または picoZ80 で動作している — (T) と示されたコマンドはこれらのプラットフォームでは利用できません。同等の機能は FPGA または RP2350 によってネイティブに提供されます。これは予期された動作であり、障害ではありません。
- ビルドターゲットが間違っている — TZFS ファームウェアがハードウェアに合った正しいフラグ(例えば FusionX の場合は
BUILD_FUSIONX=1)でビルドされていることを確認してください。ミスマッチはコマンドが警告なく欠落する原因となる可能性があります。
テープの読み込みが失敗するかエラーが発生する
- テープタイミングの不一致 — テープが別の MZ モデルで録音されたものである場合は、
,Mパラメータを使用して適切なマシンモデルのタイミングを選択してください(テープ操作を参照)。 - テープヘッドの速度変動 — TC コマンドを使用してテープ遅延補正を調整してください。1 〜 2 ステップずつ増減させることで、断続的な失敗が通常は解決されます。
- テープの状態 — 古いテープや保管状態が悪いテープにはドロップアウトがある場合があります。再試行前にイソプロピルアルコールでテープヘッドとキャプスタンを清掃してみてください。
CP/M が起動しないか BIOS エラーが表示される
- SD カードに CP/M イメージがない — SD カードに CPM と入力したときにアクティブだったディレクトリに CP/M ブートイメージが含まれていることを確認してください。DIR で確認してください。
- アクティブなディレクトリが間違っている — CPM と入力する前に CD で CP/M イメージが含まれているディレクトリに移動してください。
- I/O プロセッササービスタイムアウト — K64F または ZPU が予期された時間内に BIOS サービスリクエストに応答しない場合、CP/M がストールします。ボードの電源を入れ直して再試行してください。問題が続く場合は I/O プロセッサファームウェアの互換性を確認してください。
プログラム読み込み後にマシンがクラッシュまたは予期せずリセットされる
- プログラムが間違ったマシンモデルを対象にしている — 特定の MZ モデル向けに書かれたプログラムは、異なるモデルでクラッシュする場合があります。読み込む前に適切なハードウェアエミュレーションを有効化してください(例えば MZ-700 ソフトウェアを読み込む前に MZ700)。
- プログラムが TZFS ワークスペースを上書きする — TZFS は tranZPUter の 512 KB RAM の一部を自分自身のために予約しています。下位 64 KB のすべてを使用するプログラムは TZFS データ構造を破壊する可能性があります。LC ではなく LCNX を使用して実行せずに読み込み、実行前に D でロードアドレスを確認してください。
参考サイト
| リソース | リンク |
|---|---|
| TZFS プロジェクトページ | /sharpmz-upgrades-tzfs/ |
| TZFS テクニカルガイド | /sharpmz-upgrades-tzfs-technicalguide/ |
| TZFS デベロッパーズガイド | /sharpmz-upgrades-tzfs-developersguide/ |
| tranZPUter SW プロジェクトページ | /tranzputer/ |
| tranZPUter Fusion プロジェクトページ | /tranzputerfusion/ |
| picoZ80 (RP2350 Z80 交換ボード) | /picoz80/ |
| RFS ユーザーマニュアル(コンパニオンファームウェア) | /sharpmz-upgrades-rfs-usermanual/ |
| Sharp MZ シリーズ技術リファレンス | リポジトリの docs/ ディレクトリに同梱 |