tranZPUter SW-700 — ユーザーマニュアル

tranZPUter SW-700 ユーザーマニュアル(現行版)

tranZPUter SW-700 は Sharp MZ-700(および現行バージョンでは Sharp MZ-2000)向けのハードウェア拡張ボードです。512 KB の SRAM、ARM Cortex-M4 K64F I/O プロセッサ、MAX7000A CPLD、および Altera FPGA を、ホストマシンと Z80 バスの間に挿入します。このアーキテクチャにより、搭載 Z80 をバスマスタリングすることが可能となり — トライステート化して FPGA ソフトコア CPU に置き換えながら — 同時に 512 KB のページド RAM、K64F が管理する SD カードマスストレージ、および VGA 出力が可能な FPGA 駆動のビデオモジュールを提供します。
このボードは TZFS(tranZPUter ファイリングシステム)ファームウェアを搭載して出荷されます。TZFS は MZ モニタのコマンドディスパッチャーをインターセプトし、SD カードファイル管理、CP/M 2.2、ソフト CPU 切り替え、マシンエミュレーションモード、VGA ビデオ制御、テープ/SD カード転送などをカバーする 40 以上の新しいコマンドで拡張します — オリジナルモニタの外観や動作を一切変えることなく。
このマニュアルは tranZPUter SW-700 の日常的なインストールと使用に必要なすべてを説明します。ハードウェアの回路図、FPGA アーキテクチャ、ファームウェアの内部については、参考サイトセクションにリンクされているテクニカルガイドとデベロッパーズガイドをご覧ください。

サポートされるハードウェア

tranZPUter SW-700 の現行バージョンは 2 台のホストマシンをサポートし、2 種類のボードリビジョンで入手可能です:
ボードリビジョン FPGA パッケージ 備考
v1.2 Altera Cyclone III(25K LE、76 KB BRAM) 144ピン TQFP 最初の公式リリース。ロジックキャパシティが小さい。
v1.3 Altera Cyclone IV(75K または 115K LE) 484ピン BGA 現行メインストリーム製品版。すべての新しいビルドに推奨。
ホストマシン ステータス
Sharp MZ-700 完全サポート — 主要ターゲットプラットフォーム
Sharp MZ-2000 完全サポート — 現行ファームウェアバージョンで追加
v1.3 ボードはすべての新規インストールに推奨されます。より大きな Cyclone IV FPGA は、マシンエミュレーションコアとビデオモジュールに大幅に多くのロジックリソースを提供します。v1.2 ボードは完全に機能しますが、より小さな FPGA のため同時に利用可能なエミュレーションターゲットの数が制限されます。

必要なもの

開始前に、以下のすべての品目が揃っていることを確認してください:
  • tranZPUter SW-700 PCB — 完全に組み立てられたボード。v1.3 推奨。インストール前にボードが組み立てられ、テストされていなければなりません。
  • Sharp MZ-700 または MZ-2000 — ボードをインストールするホストマシン。ホストマザーボードから IC を取り外す必要はありません。
  • Altera USB-Blaster(または互換クローン) — Quartus 経由で FPGA ビットストリームをロードするための JTAG プログラマ。
  • K64F USB ケーブル — ARM K64F ファームウェアをフラッシュするための標準マイクロ USB ケーブル。K64F は接続時に USB マスストレージデバイスとして認識されます。
  • SD カード — FAT32 フォーマット済み、2 GB 以上推奨。Gitea リポジトリの事前ビルド済み TZFS SD カードイメージで準備する必要があります。
  • 事前ビルド済み FPGA ビットストリーム — ボードリビジョン用の .sof ファイル(JTAG、揮発性)または .jic ファイル(アクティブシリアル、不揮発性)。Gitea リポジトリの output_files/ ディレクトリから。
  • K64F ファームウェアバイナリ — Gitea リポジトリの releases/ ディレクトリにある zOS_xxx.bin
  • Quartus プログラマを搭載したホスト PC — FPGA プログラミング用。Quartus Prime Lite(無料)で十分です。

インストール

tranZPUter SW-700 は、マシン底面の拡張バスコネクタを介して Sharp MZ-700(または MZ-2000)に接続します。インストール手順では、ホストマザーボードから IC を取り外す必要はありません。SD カードスロットと USB プログラミングコネクタは、ボードのインストール後もアクセス可能なままです。
インストール手順
  1. ホストマシンの電源を切る。 電源ケーブルを外し、コンデンサが放電するまで数秒待つ。
  2. 拡張コネクタの場所を確認する。 MZ-700 ではメイン PCB の底面のエッジコネクタ。MZ-2000 では背面の拡張スロット。
  3. tranZPUter SW-700 ボードを拡張コネクタに合わせてしっかりと押し込む。すべてのピンが均等に差し込まれていることを確認する。コネクタを無理に押し込まないこと — 抵抗を感じた場合は、作業を続ける前に位置合わせを確認する。
  4. ボードを固定する。マシンのバリアントに適したスタンドオフまたはブラケットを使用する。ボードが曲がったり、意図しない箇所でホスト PCB と接触したりしないようにする。
  5. SD カードを挿入する。tranZPUter ボードの SD カードスロットに。カードはカチッとはまるはず。
  6. まだ電源を入れないこと。 最初の使用前に FPGA をプログラムし、K64F ファームウェアをフラッシュする必要があります — 以下のセクションを参照。

FPGA のプログラミング

tranZPUter SW-700 が機能する前に、Altera FPGA をボードリビジョンに適したビットストリームでプログラムする必要があります。2 つの方法があります:JTAG プログラミング(揮発性 — 電源サイクルで失われる)と .jic ファイルを使用したアクティブシリアルプログラミング(不揮発性 — 電源サイクル後も保持)。恒久的な導入にはアクティブシリアルが推奨されます。

JTAG プログラミング(揮発性)
Altera USB-Blaster を tranZPUter ボードの JTAG ヘッダーとホスト PC の USB ポートに接続します。Quartus プログラマがインストールされ、USB-Blaster ドライバがロードされた状態で、ボードリビジョンに応じて以下のコマンドラインを使用します:
# ボードリビジョン v1.2 (Cyclone III):
quartus_pgm -m JTAG -o "P;output_files/SW700_v1_2.sof@1"


# ボードリビジョン v1.3 (Cyclone IV):
quartus_pgm -m JTAG -o "P;output_files/SW700_v1_3.sof@1"
または、Quartus プログラマ GUI(ツール → プログラマ)を開き、.sof ファイルを追加して、ハードウェアとして USB-Blaster を選択し、スタートをクリックします。JTAG でプログラムされたビットストリームは、ボードの電源を切ると失われます — 恒久的な設定にはアクティブシリアルを使用してください。

アクティブシリアルプログラミング(不揮発性)
電源サイクルをまたいで FPGA の設定を保持するには、ビットストリームの .jic 変換を使用してオンボードのシリアル設定デバイスをプログラムします。Quartus プログラマでアクティブシリアルプログラミングモードを選択し、ボードリビジョン用の .jic ファイルを追加して、スタートをクリックします。書き込まれると、設定デバイスは毎回の電源投入時に自動的に FPGA を再ロードします — 通常使用ではそれ以上の JTAG 接続は不要です。

K64F ファームウェアのフラッシュ

ARM Cortex-M4 K64F プロセッサは SD カードを管理し、TZFS コマンド拡張を処理し、Z80 バスとマスストレージの橋渡しをします。最初の使用前に zOS ファームウェアバイナリでプログラムする必要があります。
K64F は標準の NXP FRDM-K64F ブートローダーを使用し、マイクロ USB 経由で接続するとUSB マスストレージデバイスとして認識されます:
  1. tranZPUter ボードの K64F プログラミングポートとホスト PC の間にマイクロ USB ケーブルを接続する。
  2. オペレーティングシステムのファイルマネージャーにリムーバブルドライブ(FRDM-K64F などのラベル)が表示される。
  3. ファームウェアバイナリ — 例えば zOS_v2.xx.bin — をそのドライブのルートに直接コピーする。
  4. オンボード LED が素早く点滅してから止まるまで待つ。これはファームウェアが書き込まれ、検証されたことを示す。
  5. USB ケーブルを外す。K64F は自動的に新しいファームウェアで再起動する。
LED がまだ点滅している間は USB ケーブルを外したりボードの電源を切ったりしないでください。ドライブが表示されない場合は、USB ケーブルがデータをサポートしていること(充電専用でないこと)と、K64F ブートローダージャンパーがボードリビジョンに正しい位置にあることを確認してください — 詳細はリポジトリのハードウェアノートを参照してください。

最初の起動

FPGA がプログラムされ、K64F ファームウェアがフラッシュされ、SD カードが挿入されたら、MZ-700 または MZ-2000 の電源を入れます。マシンは通常通り内蔵モニタに起動します。TZFS はモニタのコマンドディスパッチャーを透過的にインターセプトします — 標準モニタプロンプトに TZFS バージョン文字列が追加されます:
SHARP MZ-700
Monitor 1Z-013A

* + TZFS v2.xx
* はオリジナルの MZ モニタプロンプトです。+ TZFS v2.xx サフィックスは、TZFS が正常に初期化され、SD カードが利用可能であることを確認します。すべてのオリジナルモニタコマンドは変更なく利用可能です。
H と入力して TZFS コマンドのヘルプ画面を表示します。スペースでページを進めます。
+ TZFS サフィックスが表示されない場合、K64F ファームウェアが初期化されていません — ファームウェアが正しくフラッシュされたこと、および K64F USB ケーブルが外されていること(USB ケーブルが接続されると K64F はブートローダーモードに入ります)を確認してください。

モニタコマンドリファレンス

完全な TZFS コマンドセットを以下に示します。コマンドは * モニタプロンプトに示されている通りに入力します。山括弧内のパラメータは必須、角括弧内のパラメータはオプションです。テープおよび SD カードコマンドの M パラメータはマシンモデルのテープタイミングを指定します — 表の後の注を参照してください。
コマンド パラメータ 説明
4 40 桁表示モードに切り替える。
8 80 桁表示モードに切り替える。
40A ホストを MZ-80A 40 桁互換モードに切り替える。
80A ホストを MZ-80A 80 桁互換モードに切り替える。
700 MZ-700 モード(40 桁)に切り替える。
7008 MZ-700 80 桁モードに切り替える。
ASM <addr> 指定した16進アドレスから始まるインタラクティブ Z80 アセンブラ。
B キーボードベルのオン/オフを切り替える。
BASIC SD カードから BASIC SA-5510(TZFS 拡張版)をロードして実行する。
CD [<dir>] アクティブな SD カードディレクトリを変更する。引数なしでルートディレクトリに戻る。
CP <src> <dst> <size> メモリブロックをコピーする。すべての引数は16進:ソースアドレス、デスティネーションアドレス、バイト数。
CPM SD カードから CP/M 2.2 を起動する。
D <addr> [<addr2>] <addr> から <addr2> までのメモリの16進および ASCII ダンプ。任意のキーで続行、X で終了。
DASM <addr> [<addr2>] <addr> から始まる Z80 マシンコードを逆アセンブルする。
DIR [<ワイルドカード>] SD カードディレクトリの一覧表示。オプションのワイルドカードで絞り込む(例:DIR *.MZF)。
EC <名前または番号> 名前またはファイル番号で SD カードからファイルを消去する。
EX TZFS を終了してオリジナルのホストモニタに戻る。
F [<ドライブ>] フロッピーディスクから起動する。
FILL <start> <end> [<val>] 指定したバイト値でメモリ範囲を埋める(デフォルト 0x00)。
FREQ <kHz> CPU 周波数を kHz 単位で設定する。0 でデフォルトクロックを復元。例:FREQ 4000 で 4 MHz。
H コマンドのヘルプ画面を表示する(ページ分割)。
J <addr> 指定した16進アドレスにジャンプ(実行)する。
L | LT [<file>] [,M] テープ(CMT)からファイルをロードして実行する。
LTNX [<file>] [,M] テープ(CMT)からファイルを実行せずにロードする。
LC <名前または番号> [,M] SD カードからファイルをロードして実行する。
LCNX <名前または番号> [,M] SD カードからファイルを実行せずにロードする。
M <addr> インタラクティブメモリエディタ。新しい16進値を入力して Enter で変更、Enter のみでスキップ。
MZ [<mc>] マシンエミュレーションモードを有効化する。デフォルトは MZ-80A。有効なマシンコード:80K80C120080A70080080B2000
P プリンタテスト。
R DRAM メモリテスト。
RIO <port> I/O ポートの値を読み取って表示する。
S | ST <start> <end> <exec> [,M] メモリ範囲をテープ(CMT)に保存する。ファイル名の入力を求められる。
SC <start> <end> <exec> メモリ範囲を SD カードに保存する。ファイル名の入力を求められる。
SD2T <名前または番号> [,M] SD カードからテープ(CMT)にファイルをコピーする。
T タイマーテスト。
T2SD [B] [,M] テープ(CMT)から SD カードに次のファイルをコピーする。B は複数ファイルのバルクモードを有効化。
T2SDB [,M] バルクモードでテープから SD カードにコピーする。
TC [-]<val> テープ遅延補正。遅延を短縮するには負の値、延長するには正の値を使用する。
T80 FPGA の T80 ソフトコア Z80 に切り替える(約18 MHz)。TZFS は動作を継続する。
V テープの保存をメモリの現在の内容と照合する。
VBORDER <colour> VGA 出力のボーダーカラーを設定する。
VGA <mode> VGA 出力モードを設定する:0=オフ、1=640×480、2=800×600。
VMODE <mode> 現在アクティブなエミュレートマシンのビデオモードを設定する。
WIO <port> <val> I/O ポートにバイト値を書き込む。
Z80 ハード Z80 に実行を戻す(T80 または ZPU から)。
ZPU FPGA の ZPU Evolution ソフト CPU に切り替える。zOS を起動する。
マシンモデルのテープタイミング(M パラメータ): ,M サフィックスが受け付けられる場合、カンマに続く文字で操作のテープエンコーディングタイミングを選択します。有効なコードは:K = MZ-80K、C = MZ-80C、1 = MZ-1200、A = MZ-80A、7 = MZ-700、8 = MZ-800、B = MZ-80B、2 = MZ-2000。省略すると、アクティブなホストマシンのタイミングが使用されます。

SD カード操作

SD カードは TZFS の主要なマスストレージメディアです。FAT32 フォーマット済みで、Sharp MZ テープイメージ形式(.MZF など)のファイルが格納されている必要があります。カードスロットとディレクトリ構造は K64F ファームウェアによって管理されます — TZFS はすべてのファイル操作を行うために K64F と通信します。

ディレクトリの参照
DIR と入力して現在の SD カードディレクトリの内容を一覧表示します。オプションのワイルドカード引数で絞り込みができます:
* DIR              ; 現在のディレクトリのすべてのファイルを一覧表示
* DIR *.MZF        ; .MZF ファイルのみを一覧表示
* CD GAMES         ; GAMES サブディレクトリに移動
* DIR              ; GAMES ディレクトリを一覧表示
* CD               ; ルートに戻る

プログラムのロード
プログラムは DIR 一覧に表示された名前またはファイル番号でロードできます。LC コマンドでロードして実行、LCNX で実行せずにロードします(実行前にメモリを検査またはパッチする場合に便利):
* LC INVADERS          ; SD カードから INVADERS をロードして実行
* LCNX INVADERS        ; 実行せずにロード
* LC 04                ; ファイル番号 04 をロードして実行
* LC INVADERS,7        ; MZ-700 テープタイミングメタデータでロード

プログラムの保存
SC を使用してメモリの領域を SD カードに保存します。開始アドレス、終了アドレス、実行アドレスを連続した4桁の16進値として指定します。TZFS はファイル名の入力を求めます:
* SC120020001200
FILE NAME? MYPROG
SAVED
これにより、メモリ範囲 0x1200–0x2000 が実行アドレス 0x1200 で現在の SD カードディレクトリに MYPROG ファイルとして保存されます。

ファイルの消去
EC の後にファイル名またはファイル番号を指定して SD カードからファイルを消去します。操作は即時かつ取り消し不可能です — 事前に DIR でファイル名を確認してください:
* EC MYPROG        ; MYPROG という名前のファイルを消去
* EC 07            ; ファイル番号 07 を消去

テープ操作

TZFS はオリジナルの CMT(カセット磁気テープ)インターフェースとの完全な互換性を保持します。すべてのテープコマンドはオプションの ,M マシンモデルサフィックスを受け付け、異なる Sharp MZ バリアントのソフトウェアに適したテープエンコーディングを選択します。TC コマンドはテープタイミング補正を調整して、劣化したまたは規格外のテープデッキを補正します。

テープからのロード
* L                ; テープから次のファイルをロードして実行
* LT INVADERS      ; テープから名前付きファイルをロードして実行
* LTNX INVADERS    ; 名前付きファイルをロードして実行しない
* L,7              ; MZ-700 テープタイミングでロードして実行

テープへの保存
* S120020001200    ; 範囲 0x1200-0x2000、実行 0x1200 をテープに保存
* V                ; 書き込まれた保存を検証

テープ ↔ SD カード転送
ファイルはテープと SD カードの間で双方向に転送できます:
  • T2SD — テープから次のファイルをロードして現在の SD カードディレクトリに保存します。プロンプトが表示されたらテープデッキで再生を押してください。
  • T2SDB(バルクモード)— テープからファイルを繰り返しロードし、それぞれを SD カードに保存します。これ以上ファイルが見つからないか操作が中止されるまで続きます。
  • SD2T <名前> — SD カードから名前付きファイルをロードしてテープに書き込みます。プロンプトが表示されたらテープデッキで録音を押してください。
これらのコマンドにより、既存のテープソフトウェアコレクションを SD カードにアーカイブしたり、SD カードからテープにプログラムを配布したりすることが簡単になります。

テープ遅延補正
マージナルなハードウェアでテープのロードが失敗する場合、TC コマンドでビットタイミングウィンドウを調整します。正の値でウィンドウを広げ(遅いまたは伸びたテープに対応)、負の値で狭めます:
* TC 10            ; タイミングウィンドウを 10 単位広げる
* TC -5            ; タイミングウィンドウを 5 単位狭める

ソフト CPU 切り替え

FPGA には、ホストマザーボードのハード Z80 に加えて 2 つのソフトコア CPU が含まれています:T80(合成された Z80 互換コア)と ZPU Evolution(スタックベースの 32 ビット RISC プロセッサ)。TZFS モニタプロンプトから瞬時に切り替えることができます。

T80 ソフトコア Z80
T80 は FPGA ファブリックに合成された完全に Z80 互換のソフトコアです。TZFS およびすべての Z80 ソフトウェアを変更なく実行しますが、ホストのハード Z80 よりも大幅に高いクロックレートで動作します:
* T80              ; T80 ソフトコア Z80 に切り替え(約18 MHz)
* FREQ 8000        ; クロックを 8 MHz に増加(T80 またはハード Z80)
* FREQ 0           ; デフォルト CPU クロックを復元
* Z80              ; ハード Z80 に戻る
T80 で動作中も TZFS ファームウェアは通常通り動作します。すべてのモニタコマンドは引き続き利用可能です。CPU 周波数は FREQ で調整できます — 希望する周波数を kHz 単位で指定します(FREQ 4000 で 4 MHz、FREQ 0 でデフォルトを復元)。T80 は Cyclone IV FPGA で約 18 MHz が可能です。

ZPU Evolution ソフト CPU
ZPU Evolution は FPGA に合成された 32 ビットスタックベースの RISC プロセッサです。ZPU に切り替えると、K64F ファームウェアに格納された ZPU オペレーティングシステムである zOS が起動します。zOS は TZFS とは別のコマンド環境を提供します:
* ZPU              ; ZPU Evolution に切り替え — zOS を起動
* Z80              ; ZPU からハード Z80 に戻る
ZPU で動作中は、Z80 はトライステート化され、ZPU がバスの完全な所有権を持ちます。zOS 内から Z80 を発行すると制御がハード Z80 に返り、TZFS モニタが再開します。

マシンエミュレーション

MZ コマンドは、FPGA のビデオおよび I/O モジュールに対して、異なる Sharp MZ マシンをエミュレートするように再設定するよう指示します。ビデオモジュールは、選択したターゲットに合わせて表示タイミング、キャラクタジェネレータ、メモリマップ、カラー動作を調整します。これにより、他の MZ バリアント用に書かれたソフトウェアが MZ-700 または MZ-2000 ホストハードウェア上で動作します。
マシンコード ターゲットマシン
80K Sharp MZ-80K
80C Sharp MZ-80C
1200 Sharp MZ-1200
80A Sharp MZ-80A
700 Sharp MZ-700
800 Sharp MZ-800
80B Sharp MZ-80B
2000 Sharp MZ-2000
* MZ               ; MZ-80A エミュレーションを有効化(デフォルト)
* MZ 700           ; MZ-700 ビデオ/キーボードエミュレーションを有効化
* MZ 2000          ; MZ-2000 エミュレーションを有効化
* MZ 80A           ; MZ-80A エミュレーションモードに戻る
桁幅と表示コマンド(4840A80A7007008)は、マシンモード選択と表示幅選択を組み合わせた便利なショートカットです。これらは対応する MZ の呼び出しと同等ですが、マシンコードの引数を必要とせず即座に動作します。

ビデオ制御

FPGA ビデオモジュールは、ホストマシンのオリジナルのビデオハードウェアとは独立して VGA 出力を提供します。アドレス 0xA8–0xAD の I/O マップされたレジスタのセットを通じて制御されます。これらのレジスタは Z80 アセンブリ言語で直接書き込むか、TZFS の VGAVMODEVBORDER コマンドを使用して書き込むことができます。

ビデオ制御レジスタ(0xA8)
制御レジスタ 0xA8 は主要なビデオモードレジスタです。そのビットフィールドは:
ビット フィールド 説明
2:0 マシンモデル 0=MZ-80K、1=MZ-80C/1200、2=MZ-80A、3=MZ-700/MZ-800、4=MZ-80B/MZ-2000
3 桁幅 0=40 桁、1=80 桁
4 カラー有効 0=モノクロ、1=カラー
5 予約済み
7:6 VGA モード 00=VGA オフ、01=640×480、10=800×600
例 — VGA 640×480 で 80 桁カラー MZ-700 出力を設定する:
; ビット: VGA=01、予約=0、カラー=1、80桁=1、モデル=100 (MZ-700) → 0b01011100 = 0x59
LD A, 0x59
OUT (0xA8), A

TZFS ビデオコマンド
TZFS モニタは、直接 I/O ポートアクセスを必要とせずに適切なレジスタに書き込む 3 つの高レベルビデオコマンドを提供します:
* VGA 1            ; 640x480 で VGA 出力を有効化
* VGA 2            ; 800x600 で VGA 出力を有効化
* VGA 0            ; VGA 出力を無効化(ネイティブビデオのみ)
* VMODE 3          ; アクティブなエミュレートマシンのビデオモードを設定
* VBORDER 2        ; VGA ボーダーカラーをカラーインデックス 2 に設定
VMODE 引数は、アクティブなマシンエミュレーションターゲットによって意味が異なる数値モードインデックスです — 各マシンタイプのモード対タイミングマッピングについては FPGA ソースドキュメントを参照してください。VBORDER カラーインデックスは標準の Sharp MZ カラーパレットに従います。

CP/M 2.2 の使用

CP/M 2.2 は TZFS モニタから直接利用できます。CBIOS は SD カードイメージからロードされ、47 KB の TPA(トランジェントプログラムエリア)全体がアプリケーションに利用可能です。7 つの CP/M 論理ドライブ(A:–G:)が SD カードに格納されたディスクイメージにマップされます。
* CPM
TZFS は SD カードの CP/M ブートセクタを見つけ、システムをロードして制御を転送します。プロンプトが A> に変わります。
CP/M ドライブ 内容
A: CP/M システムプログラム、アセンブラ、ユーティリティ
B: Pascal および言語ツール
C: WordStar、PLI、PLM
D:–G: 拡張ソフトウェアライブラリ
47 KB の TPA はすべてのアプリケーションに利用可能です — これは完全な標準 CP/M 2.2 割り当てです。ウォームブート(CCP プロンプトで Ctrl+C)は SD カードイメージから CCP を再ロードします。TZFS モニタへの完全な復帰にはホストマシンのハードウェアリセットが必要です。
SD カードイメージに予期される場所に CP/M ディスクイメージが含まれていることを確認してください。Gitea リポジトリの事前ビルド済みイメージは正しく整理されています — カスタム SD カードレイアウトでは、再ビルド前に CBIOS セクターオフセット設定の調整が必要になる場合があります。

BASIC の使用

BASIC コマンドは、SD カードから Sharp SA-5510 BASIC の TZFS 拡張版を直接ロードします。この拡張版は、SD カードで動作する LOADSAVEDIR コマンドを追加し、テープを使わずに BASIC プログラムを保存、取得、管理することを可能にします。
* BASIC
BASIC プロンプトが表示されたら、標準の SA-5510 BASIC 命令セットに加えて以下の SD カードコマンドが利用できます:
コマンド 説明
LOAD LOAD "MYPROG" SD カードから MYPROG という名前の BASIC プログラムをロードして実行する。
LOAD LOAD 現在の SD カードディレクトリから次の順番のファイルをロードする。
SAVE SAVE "MYPROG" 現在の BASIC プログラムを MYPROG として SD カードに保存する。
DIR DIR BASIC 内から現在の SD カードディレクトリを一覧表示する。
SA-5510 BASIC インタープリタ、そのメモリレイアウト、および標準コマンドは、オリジナルの Sharp 実装から変更されていません。変更なしの SA-5510 用に書かれたプログラムは変更なしで動作します。

トラブルシューティング

モニタは起動するが、プロンプトに "+ TZFS" が表示されない

  • USB ケーブルがまだ接続されている — マイクロ USB ケーブルが接続されると K64F は USB ブートローダーモードに入ります。外してホストマシンをリセットしてください。
  • K64F ファームウェアがフラッシュされていない — zOS ファームウェアバイナリが K64F USB ドライブにコピーされ、LED が点滅してプログラミングを確認したことを確認してください。不明な場合はフラッシュ手順を繰り返してください。
  • SD カードが挿入されていないまたは認識されない — SD カードがスロットに完全に差し込まれていることを確認してください。カードは FAT32 フォーマット済みである必要があります。必要に応じて再フォーマットし、TZFS SD カードイメージで再度準備してください。
  • FPGA がプログラムされていないまたは JTAG(揮発性)を使用 — FPGA が JTAG 経由で .sof ファイルでプログラムされた場合、電源サイクルでビットストリームが失われます。アクティブシリアル経由で .jic ファイルを使用して再プログラムし、設定を恒久的にしてください。

FPGA プログラミングが失敗するまたは USB-Blaster が検出されない

  • USB-Blaster ドライバがインストールされていない — Linux では、USB-Blaster の udev ルール(/etc/udev/rules.d/51-usbblaster.rules)が配置されており、現在のユーザーが適切なグループのメンバーであることを確認してください。Windows では、Quartus デバイスドライバインストーラーからドライバをインストールしてください。
  • JTAG チェーンが検出されないquartus_pgm -l を実行して利用可能なハードウェアを一覧表示します。ケーブルが表示されない場合は、USB 接続とケーブルを確認してください。ボードに電源が入っていることを確認してください — FPGA の JTAG インターフェースはプログラミング中にボードへの電源供給が必要です。
  • ボードリビジョン用の誤ったビットストリーム — v1.3 ボードで v1.2 の .sof ファイル(またはその逆)を使用すると失敗します。PCB のシルクスクリーンからボードリビジョンを確認し、一致するビットストリームを選択してください。

SD カードコマンドが失敗するまたはファイルがロードできない

  • SD カードが FAT32 でない — K64F ファームウェアは FAT32 を必要とします。exFAT または NTFS でフォーマットされたカードは認識されません。FAT32 で再フォーマットしてください(Linux では mkfs.fat -F 32、Windows では FAT32 を選択したフォーマットダイアログを使用)。
  • カード容量 — 非常に大きなカード(64 GB 以上)は、デフォルトのツールで FAT32 としてフォーマットするとアラインメントの問題が発生する場合があります。問題が続く場合は 2〜32 GB のカードを使用してください。
  • ファイル形式 — TZFS は Sharp MZ テープイメージファイル(.MZF 形式またはヘッダー付きバイナリ)を期待します。MZF ヘッダーのない生バイナリファイルは正しくロードされません。
  • ディレクトリパス — 引数なしで CD を使用してルートディレクトリに戻り、DIR で期待するファイルが存在することを確認してください。

CP/M が起動しないまたは空白画面が表示される

  • SD カードイメージが不完全 — CP/M ディスクイメージは SD カードイメージの専用領域を占有します。完全な事前ビルド済みイメージが切り捨てられることなくカードに書き込まれていることを確認してください。不明な場合はイメージを再書き込みしてください。
  • FPGA ビットストリームの不一致 — CP/M の CBIOS は、v1.2 と v1.3 のビルド間で異なる特定の FPGA I/O レジスタアドレスに依存します。FPGA ビットストリームと K64F ファームウェアが同じリリースからのものであることを確認してください。
  • ビデオモード — VGA モードがオフに設定されている場合(VGA 0)、CP/M の出力が見えない場合があります。CP/M を起動する前に VGA 1 を発行して VGA 出力がアクティブであることを確認するか、ホストマシンのネイティブビデオ出力が接続されていることを確認してください。

T80 または ZPU に切り替えた後にマシンがハングする

  • FPGA がプログラムされていない — ソフト CPU コアは FPGA に存在します。FPGA がプログラムされていないか設定が失われた場合(電源サイクル後の揮発性 JTAG プログラミング)、ソフト CPU の切り替えはハングします。FPGA を再プログラムしてください。
  • クロック周波数が高すぎる — T80 に切り替える前に FREQ を使用して異常に高い周波数を設定した場合、ソフトコアがその周波数では安定しない場合があります。ホストマシンをリセットし、デフォルトクロックで再試行してください。
  • Z80 への復帰 — ZPU または T80 モードでホストマシンがハングした場合、復帰にはハードウェアリセットが必要です。リセット後、TZFS モニタはハード Z80 で再開します。

参考サイト

リソース リンク
tranZPUter SW-700 プロジェクトページ /tranzputer-sw700/
tranZPUter SW-700 テクニカルガイド /tranzputer-sw700-technicalguide/
tranZPUter SW-700 デベロッパーズガイド /tranzputer-sw700-developersguide/
tranZPUter SW-700 ギャラリー /tranzputer-sw700-gallery/
Sharp MZ-700 情報 /sharpmz700/
Sharp MZ-2000 情報 /sharpmz2000/
Gitea リポジトリ https://git.eaw.app/eaw/tranZPUter
Altera Quartus Prime Lite(無料) https://www.intel.com/content/www/us/en/collections/products/fpga/software/downloads.html
NXP FRDM-K64F ドキュメント https://www.nxp.com/design/development-boards/freedom-development-boards/mcu-boards/freedom-development-platform-for-kinetis-k64-k63-and-k24-mcus:FRDM-K64F