tranZPUter FusionX ユーザーマニュアル
概要
tranZPUterFusionX(FusionX)は、各種ヴィンテージホームコンピュータのZ80 CPUと置き換えるコンパクトかつ高性能なPCBです。ホスト機のDIP-40 Z80ソケットに直接挿入することで、FusionXはホストバスを完全に制御しながら、現代の完全なLinuxベースのコンピューティング環境を提供します。これはすべてホスト機のオリジナルのファームウェアおよびソフトウェアからは見えない形で実現されます。
このボードはSigmaStar SSD202D System-on-Module(SOM)を中心に構成されており、1.2 GHzで動作するデュアルコアARM Cortex-A7プロセッサ、128MBのLPDDR2 DRAM、256MBのSLC NAND Flash、および統合されたSSW101B 2.4GHz 802.11 b/g/n WiFiラジオを備えています。SOMはリアルタイムLinux 4.9-rtカーネル(PREEMPT_RTパッチ適用済み)を実行し、完全なLinux環境とZ80エミュレーション層を同時に提供します。
Z80エミュレータはCPU1のみで動作し、このコアはブート時にカーネルの
isolcpus機構によってLinuxスケジューラから分離されています。専用カーネルモジュール(z80drv)がエミュレーションループを管理し、オリジナルのZ80ソフトウェアを正しく動作させるために必要なサイクル精度のタイミングを提供します。エミュレータはユーザー空間からコマンドラインユーティリティz80ctrlによって制御されます。
バスレベルのタイミングとグルーロジックはAltera MAX7000AE CPLDに実装されており、SOMとホスト機のアドレスバス、データバス、コントロールバスの間にZ80サイクル精度のインターフェースを提供します。CPLDはサポートするホスト機ごとに個別のバリアントとしてコンパイルされ、各ターゲットプラットフォームに対して正確なバスタイミングと信号調整を保証します。
FusionXは複数のマシンペルソナをサポートしています。CPLDバリアントとソフトウェア構成によってハードウェアレベルでどのホスト機をエミュレートするかが決まります。オプションのドーターボードを使用してFusionXのビデオおよびオーディオ出力をホスト機のディスプレイ回路および内蔵スピーカーに接続し、アナログSPDTマルチプレクサを用いてホストネイティブ出力とFusionX生成出力をクリーンに切り替えます。
注意: Webによる管理インターフェースは現在開発中であり、出荷ファームウェアでは利用できません。すべての管理および設定タスクはUSBシリアルコンソールとz80ctrlコマンドラインユーティリティを通じて行います。
ボード概要
FusionXはハードウェアリビジョンv1.0の小型4層PCBです。ボードのサイズはSigmaStar SSD202D SOMおよびAltera MAX7000AE CPLDを上部に搭載しながら、標準的なDIP-40 ICソケットのフットプリント内に収まるよう設計されています。すべてのコネクタおよびヘッダは、ホスト機に実装した状態でボードの上部または背面からアクセス可能です。
コネクタおよびヘッダ
- 10ピンJTAGヘッダ — 互換JTAGプログラマ(例:USB-Blaster)を使用したAltera MAX7000AE CPLDのインシステムプログラミング(ISP)に使用します。このヘッダは、ブランクまたは誤ってプログラムされたCPLDに新しいバリアントを書き込む際の初期デバイスプログラミングにも使用されます。プログラミングの詳細はテクニカルガイドを参照してください。
- USBシリアルコネクタ(CH340E) — オンボードのCH340E USB-to-UARTブリッジを介したマイクロUSBまたはピンヘッダコネクタです。115200ボー、8N1でLinuxシリアルコンソールへの直接アクセスを提供します。SOM側では主UARTに接続されています。初期セットアップおよび日常的な管理の主インターフェースです。
- USB 2.0ポート(SOM) — SSD202D SOMから露出した標準USB 2.0 Type-Aホストポートです。USBマスストレージ、USB-Ethernetアダプタ、またはLinuxカーネルでサポートされる他のUSB周辺機器の接続に使用できます。
- SDカードスロット(SOM) — SOMのSDIOインターフェースに接続されたマイクロSDカードスロットです。SDカードはROMイメージ、MZFプログラムファイル、OTAファームウェアアップデートイメージの追加ストレージとして使用されます。SOMは起動時に正しく準備されたSDカードを検出し、有効なファームウェアイメージが存在する場合は自動的にOTAアップグレードを実行します。
- WiFiアンテナコネクタ — SSD202Dの統合SSW101Bワイヤレスモジュールに接続された外部2.4GHz WiFiアンテナ用IPEX/U.FL同軸コネクタです。信頼性の高いワイヤレス接続のためには適切なアンテナを取り付ける必要があります。
ステータスインジケータ
FusionXボードには診断を支援し正常動作を確認するためのステータスLEDが少数搭載されています:
- 電源LED — ボードに3.3V電源が供給されているときに点灯し、TLV62569DBVバックコンバータが正常に動作していることを確認します。
- アクティビティLED — SOMによって駆動され、LinuxカーネルおよびZ80エミュレーションのアクティビティを示します。ブート中およびアクティブなZ80エミュレーションサイクル中に点滅します。
- CPLD LED — CPLDによって駆動され、ホストZ80バス上のバスアクティビティを示します。CPLDがホスト機と積極的にインターフェースしていることを確認するのに役立ちます。
電源
FusionXはZ80 DIP-40のVCCピン(11番ピン)から供給されるホスト機の5V電源からすべての動作電力を得ます。TLV62569DBV同期式ステップダウン(バック)コンバータが5V入力をSOM、CPLD、およびすべてのオンボードロジック用の3.3Vに降圧します。TLV62569DBVは高効率・低静止電流デバイスで、WiFi送信時およびZ80エミュレーション時のSSD202D SOMのピーク電流需要を供給できます。
ホスト機はFusionXに加えて自身の回路に電力を供給するため、5Vレールで十分な電流を供給できる必要があります。実際には、サポートされているすべてのホスト機の5Vレールには通常のFusionX動作のための十分な余裕があります。
ドーターボード
FusionXにはホスト機固有のドーターボードが3種類用意されています:
- MZ-80A ドーターボード — FusionXのビデオおよびオーディオ出力をSharp MZ-80Aの内部ディスプレイおよびスピーカー回路に接続します。
- MZ-700 ドーターボード — FusionXのビデオおよびオーディオ出力をSharp MZ-700の内部ディスプレイおよびスピーカー回路に接続します。
- MZ-2000 ドーターボード — FusionXのビデオおよびオーディオ出力をSharp MZ-2000の内部ディスプレイおよびスピーカー回路に接続します。
各ドーターボードにはアナログSPDTマルチプレクサが搭載されており、ディスプレイおよびオーディオ信号をホストネイティブソースとFusionX生成ソースの間で切り替えます。これによりFusionXはホスト機の組み込みディスプレイとスピーカーを通じて自身のビデオおよびオーディオ出力を提示できます。
ドーターボードはリボンケーブルおよび/または専用コネクタでFusionXメインボードに接続され、その後ホスト機固有のコネクタを使用してホスト機のビデオおよびオーディオ回路の適切な箇所に接続されます。
Amstrad PCW-8256はドーターボードを必要としません。 PCW-8256 CPLDバリアントはビデオやオーディオのマルチプレクサを必要とせず、PCWのメモリページングおよび標準Z80 I/Oと直接インターフェースします。
正しいドーターボードはホスト機への実装前に必ず取り付けてください。誤ったドーターボードを取り付けるか、MZシリーズのホストにドーターボードを取り付けなかった場合、FusionXからのビデオもオーディオも出力されません。
対応ホスト機
FusionXは現在以下のホスト機をサポートしています。CPLDバリアントはターゲットホスト機と正確に一致している必要があります。各バリアントはQuartus IIで個別にコンパイルされ、そのホストに必要な正確なバスタイミング、メモリマップ、I/Oデコードを実装しています。
| ホスト機 | ドーターボード | CPLDバリアント | 備考 |
|---|---|---|---|
| Sharp MZ-80A | MZ-80A ドーターボード | MZ80A | 40/80列ディスプレイモード;ROMファイリングシステム(RFS)サポート;SDカードからのMZFファイルロード |
| Sharp MZ-700 | MZ-700 ドーターボード | MZ700 | バンク切り替え;ビデオおよびキーボードエミュレーション;フルMZ-700メモリマップ |
| Sharp MZ-2000 | MZ-2000 ドーターボード | MZ2000 | 拡張メモリサポート;高度なビデオモード;MZ-2000 I/Oデコード |
| Amstrad PCW-8256 | 不要 | PCW8256 | メモリページング;標準Z80 I/O;ビデオ/オーディオドーターボード不要 |
ボードにどのCPLDバリアントがプログラムされているか不明な場合は、テクニカルガイドを参照してCPLDデバイスIDの読み戻しとプログラムされた設計の確認方法を確認してください。正しく出荷されたFusionXボードには、注文時のホスト機構成に合致するCPLDバリアントがあらかじめプログラムされています。
初期セットアップ
以下の手順に従って、FusionXをホスト機に初めて取り付けて設定してください。[ホスト固有]と記されたステップはターゲットホスト機によって異なります。[共通]と記されたステップはすべてのサポートホストに適用されます。
ステップ1 — CPLDバリアントの確認 [共通]
FusionXを取り付ける前に、CPLDにホスト機用の正しいバリアントがプログラムされていることを確認してください。各CPLDバリアント(MZ80A、MZ700、MZ2000、PCW8256)は独立したQuartus IIプロジェクトとしてコンパイルされ、異なる
.pofプログラミングファイルを生成します。誤ったCPLDバリアントが書き込まれたボードは、ホスト機のバスと正しくインターフェースできず、予期しない動作や出力が全くないなどの問題が生じる可能性があります。
正しく出荷されたFusionXボードには注文したホスト機用のCPLDがあらかじめプログラムされています。ソースからビルドした場合、ブランクのボードを受け取った場合、またはターゲットホスト機を変更する必要がある場合は、テクニカルガイドを参照して10ピンJTAGヘッダとUSB-Blasterまたは互換プログラマを使用したCPLDプログラミングの手順を確認してください。
ステップ2 — 正しいドーターボードの取り付け [ホスト固有]
ホスト機がSharp MZ-80A、MZ-700、またはMZ-2000の場合は、取り付け前にFusionXメインボードに適切なドーターボードを取り付けてください。ドーターボードはホスト機と正確に一致している必要があります。上記の対応ホスト機セクションの表を参照してください。
ドーターボードのリボンケーブルおよびディスクリートコネクタを、両ボードのシルクスクリーンの表示に従ってFusionXメインボードに接続してください。その後、ドーターボードのホスト側コネクタをホスト機のビデオおよびオーディオ回路の適切な箇所に取り回してください。各ホスト機の具体的な接続点については、参考サイトセクションにリンクされているホスト固有のドキュメントを参照してください。
ホスト機がAmstrad PCW-8256の場合は、このステップをスキップしてください。ドーターボードは不要です。
ステップ3 — ホスト機への取り付け [共通]
ホスト機の電源を完全に切り、電源から切り離してください。
ホスト機のケースを開けてメインボードにアクセスしてください。DIP-40ソケットのZ80 CPUを見つけてください。ICエクストラクタツールを使用してZ80 CPUを慎重に取り外し、CPU(保管しておくことをお勧めします)のピンを曲げたりソケットを傷つけたりしないよう注意してください。
空になったDIP-40ソケットにFusionXボードを挿入してください。FusionXボードの1番ピンはソケットの1番ピンと合わせる必要があります。 1番ピンはFusionX PCBのシルクスクリーンに明確に表示されています。1番ピンの位置がずれると正常に動作せず、ホスト機またはFusionXボードを損傷する可能性があります。
FusionXボードをソケットにしっかりと均一に押し込み、40本すべてのピンが完全に入っていることを確認してください。DIP-40ソケットの4辺すべてを目視確認し、ピンが曲がっていたりソケットに入っていないものがないことを確認してください。
ステップ4 — USBシリアルアダプタの接続 [共通]
初期セットアップおよび継続的な管理のために、PCからFusionXボードのCH340E USBシリアルコネクタにUSBケーブルを接続してください。このケーブルはSOM上で動作するLinuxコンソールへのアクセスを提供します。
PCにはCH340E(またはCH34x)USBシリアルドライバがインストールされている必要があります。LinuxおよびmacOSでは通常このドライバはカーネルに含まれています。Windowsでは、メーカーまたはサードパーティのソースからCH340ドライバをインストールする必要がある場合があります。
ターミナルエミュレータ(例:PuTTY、minicom、screen)を以下の設定で構成してください:
- ボーレート: 115200
- データビット: 8
- パリティ: なし
- ストップビット: 1
- フロー制御: なし
ステップ5 — 電源オン [共通]
FusionXを取り付け、ドーターボードを接続し(該当する場合)、USBシリアルケーブルを接続した状態で、ホスト機を電源に再接続して電源を入れてください。
FusionX SOMは直ちにLinuxのブートを開始します。完全なLinuxブートシーケンスには約10〜15秒かかります。この間、USBシリアルコンソールにブートメッセージが表示されます。ブートシーケンスが完了すると、ホスト機のディスプレイとキーボードがZ80エミュレーション層の制御下で初期化されます。
ホスト機のディスプレイには、起動スクリプトによってロードされたROMイメージに応じて、ホスト機の期待される起動画面(例:Sharp MZ-80Aモニタープロンプト、またはMZ-700スプラッシュスクリーン)が表示されます。
ステップ6 — Linuxコンソールへのアクセス [共通]
SOMのブートが完了したら、ターミナルエミュレータを開き、USBシリアルポートに接続してください。Linuxのログインプロンプトが表示されます。
ホスト機のキーボードとディスプレイも
ttymzdrvカーネルドライバを介してLinux仮想端末デバイス/dev/ttymz0にマッピングされます。つまり、ホストのキーボードとディスプレイはZ80エミュレーション端末としてだけでなく、Linuxコンソールとしても機能できます。sharpbiterアービタデーモンはこの共有ハードウェア上でZ80エミュレーションセッションとLinuxコンソールの切り替えを管理します。
設定されたLinux認証情報でログインしてください。シェルから、Z80エミュレーションの管理、WiFiの設定、SDカードへのアクセス、その他すべての管理タスクを実行できます。
マシン起動モード
FusionXは、Z80エミュレーション環境をさまざまな動作モードに設定する3つの起動スクリプトを提供しています。各スクリプトは適切なカーネルモジュールとROMイメージをロードし、選択したモードでZ80エミュレーションを開始します。
一般起動 — start_FusionX.sh
一般起動スクリプトは以下のシーケンスを実行します:
ttymzdrvカーネルモジュールをロードし、ホストのキーボードとディスプレイを/dev/ttymz0にマッピングします。isolcpusを使用してCPU1をLinuxスケジューラから分離し、Z80エミュレーションループのために専用で予約します。z80drvカーネルモジュールをロードし、Z80エミュレーションエンジンとCPLDバスインターフェースを初期化します。- インストールされたCPLDバリアントのデフォルトROMイメージとハードウェア構成を使用してZ80エミュレーションを開始します。
このモードは、ホスト機を標準的なファームウェア環境(例:MZ-80Aモニタ、MZ-700 BASIC、またはMZ-2000モニタ)で起動させたい通常の使用に適しています。
sudo /opt/fusionx/start_FusionX.sh
ROMファイリングシステムモード — startZ80_RFS.sh
このスクリプトはZ80エミュレーションをROMファイリングシステム(RFS)モードで起動します。このモードは主にSharp MZ-80A向けに設計されています。RFSモードでは:
- 切り替え可能なROMページが有効になり、実行時に複数のROMイメージをZ80アドレス空間にバンクイン/アウトできます。
- SDカードに保存されたMZFプログラムファイルをカセットテープインターフェースなしで直接Z80メモリにロードして実行できます。
- ROMファイリングシステムはホストディスプレイにプログラムの選択と読み込みのためのメニュー駆動インターフェースを提供します。
sudo /opt/fusionx/startZ80_RFS.sh
tranZPUterファイリングシステムモード — startZ80_TZFS.sh
このスクリプトはZ80エミュレーションをtranZPUterファイリングシステム(TZFS)モードで起動します。このモードはオリジナルのtranZPUterハードウェアのK64F仮想コプロセッサ動作を実装します。TZFSモードでは、FusionXはtranZPUter SWボードのK64Fマイクロコントローラによってもともと提供されていた拡張ファイリングシステムおよびメモリ管理機能をエミュレートします。
sudo /opt/fusionx/startZ80_TZFS.sh
起動モードの切り替え
一つの起動モードから別のモードに切り替えるには、現在実行中のZ80エミュレーションとカーネルモジュールを停止してから、希望する起動スクリプトを実行してください:
z80ctrl --stop sudo rmmod z80drv sudo /opt/fusionx/startZ80_TZFS.sh
モード切り替えの間、
ttymzdrvモジュールをアンロードする必要はありません。新しい設定で再ロードが必要なのはz80drvのみです。
Z80エミュレータの使用
z80ctrlコマンドラインユーティリティは、z80drvカーネルモジュールで動作するZ80エミュレーションエンジンを制御するための主要なユーザー空間インターフェースです。キャラクタデバイスを介してカーネルモジュールと通信し、ROMイメージのロード、仮想ハードウェアデバイスの管理、エミュレーション状態の制御、メモリの検査、MZFプログラムファイルのロードのための包括的なコマンドセットを提供します。
ROMイメージのロード
指定されたアドレスのZ80エミュレーテッドアドレス空間にバイナリROMイメージをロードします。
--sizeパラメータはROM領域のサイズをバイト単位(16進数)で指定します。
z80ctrl --loadrom /path/to/rom.bin --addr 0xE800 --size 0x2000
仮想ハードウェアデバイスの追加
Z80エミュレーションエンジンに仮想ハードウェアデバイスモジュールを登録します。
--deviceパラメータはデバイスモジュール名を指定します。この名前はターゲットホスト機用にコンパイルされた仮想ハードウェアモジュールに対応している必要があります。
z80ctrl --adddev --device mz80a
エミュレーションの開始と停止
CPU1上でZ80エミュレーションループを開始します。エミュレータはアドレス空間からZ80命令のフェッチと実行を開始し、バスサイクルはCPLDを通じてホスト機のバスに反映されます。
z80ctrl --start
Z80エミュレーションループを停止します。ホスト機のバスが解放され、CPLDはその出力をハイインピーダンス状態にします。
z80ctrl --stop
メモリの検査
Z80エミュレーテッドアドレス空間の領域を16進数とASCII形式でコンソールにダンプします。ROMコンテンツのデバッグ、RAMの状態確認、またはROMイメージが正しくロードされたことの確認に役立ちます。
z80ctrl --dump --addr 0x0000 --size 256
MZFプログラムのロード
Sharp MZF形式のプログラムファイルをZ80エミュレーテッドアドレス空間に直接ロードします。MZFヘッダを解析してロードアドレスとエントリポイントを決定します。ロード後、Z80プログラムカウンタはMZFエントリポイントに設定され、そこから実行が開始されます。
z80ctrl --loadmzf /sd/programs/test.mzf
Z80とLinuxコンソールの切り替え
FusionXは階層的なアプローチを使用して、ホスト機のキーボードとディスプレイハードウェアをZ80エミュレーションセッションとLinuxコンソールで共有します。
ttymzdrvカーネルドライバはホスト機のキーボードとディスプレイをLinux端末デバイス/dev/ttymz0として提示します。Z80エミュレーションエンジンとLinuxコンソールの両方がこのデバイスにアクセスできます。sharpbiterアービタデーモンはこれら2つの消費者の間を調停し、同時に一方のみがアクティブになることを保証し、双方のセッションを損なわないクリーンな切り替えを実現します。
Z80セッションを中断してLinuxコンソールにアクセスする
Z80エミュレーションセッションを中断してホストキーボード/ディスプレイ上のLinuxコンソールに切り替えるには、ホスト固有のエスケープキーシーケンスを押してください。キーシーケンスはホスト機によって異なり、
sharpbiterデーモンの設定ファイルで設定されています。正確なシーケンスについてはホスト固有のドキュメントを参照してください。
あるいは、ホストディスプレイのZ80セッションの状態に関わらず、USBシリアル接続を介していつでもLinuxコンソールにアクセスできます。
Z80セッションへの復帰
ホストディスプレイとキーボードの制御をZ80エミュレーションセッションに戻すには、Linuxコンソールから再開コマンドを実行してください:
sharpbiter --resume
ホストディスプレイはすぐにZ80セッションに戻ります。中断期間中のLinuxコンソールのアクティビティは端末バッファに保存されており、次の中断後に確認できます。
WiFiのセットアップ
SigmaStar SSD202D SOMにはSSW101B 802.11 b/g/n(2.4GHz)WiFiモジュールが統合されています。設定後、WiFiはFusionX Linux環境へのSSHアクセスを提供し、ルーチン管理のためにUSBシリアルケーブルを必要とせずにワイヤレス管理が可能になります。
WiFiの設定は、標準的なLinuxネットワークツールを使用してUSBシリアルコンソールから行います。WiFi設定を試みる前に、外部WiFiアンテナがFusionXボードのIPEX/U.FLコネクタに接続されていることを確認してください。
wpa_supplicantによるWiFiの設定
ネットワーク認証情報を追加するためにwpa_supplicant設定ファイルを編集してください:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
アクセスポイントのネットワークブロックを追加してください:
network={
ssid="YourNetworkName"
psk="YourNetworkPassword"
key_mgmt=WPA-PSK
}
ファイルを保存してワイヤレスインターフェースを起動してください:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf sudo udhcpc -i wlan0
SSHアクセス
WiFiインターフェースがアクセスポイントに関連付けられてIPアドレスを取得したら、FusionX上で動作するOpenSSHサーバーが同じネットワーク上の任意のホストからアクセス可能になります。割り当てられたIPアドレスを確認してください:
ip addr show wlan0
次にPCから接続してください:
ssh fusionx@<ip-address>
再起動後もWiFi設定を持続させるには、
wpa_supplicantとudhcpcコマンドを適切なシステム起動スクリプトまたはLinuxディストリビューションのinit設定に追加してください。
SDカードとファイル管理
SigmaStar SSD202D SOMにはSDIOインターフェースで接続されたマイクロSDカードスロットが含まれています。SDカードはROMイメージ、MZFプログラムファイル、OTAファームウェアアップデートイメージの拡張可能なストレージを提供します。基本動作には必須ではありませんが、プログラムライブラリの保存やOTAアップデートの実行に強くお勧めします。
SDカードのマウント
フォーマット済みのマイクロSDカード(FAT32またはext4)をSOMのSDカードスロットに挿入してください。SOMはカードを検出し、通常
/dev/mmcblk1というブロックデバイスを作成し、最初のパーティションは/dev/mmcblk1p1になります。
SDカードを/mnt/sdマウントポイントにマウントしてください:
sudo mkdir -p /mnt/sd sudo mount /dev/mmcblk1p1 /mnt/sd
起動時にSDカードを自動的にマウントするには、
/etc/fstabにエントリを追加してください:
/dev/mmcblk1p1 /mnt/sd vfat defaults,noatime 0 2
ファイル構成
SDカード上の推奨ディレクトリ構造:
/mnt/sd/ roms/ - ROMバイナリイメージ (.bin) programs/ - MZF形式プログラムファイル (.mzf) firmware/ - OTAファームウェアアップデートイメージ
/mnt/sd/roms/に保存されたROMイメージはz80ctrl --loadromを使用していつでもロードできます。/mnt/sd/programs/に保存されたMZFファイルはz80ctrl --loadmzfを使用してロードできます。
OTAファームウェアアップデート
FusionX SOMのOTA(Over-the-Air)ファームウェアアップデートはSDカードに置かれたファームウェアイメージファイルとして提供されます。SOMのブートプロセスは起動時にSDカード上の有効なファームウェアイメージをチェックし、見つかった場合は自動的にアップグレードを実行します。
OTAアップデートを実行するには:
- プロジェクトのリリースページからファームウェアアップデートイメージをダウンロードしてください。
- SDカードの
firmware/ディレクトリにファームウェアイメージをコピーしてください。 - SDカードをSOMのSDカードスロットに挿入してください。
- ホスト機の電源を再投入してください。SOMブートプロセスがファームウェアイメージを検出し、NAND Flashに書き込み、自動的に再起動します。
- アップグレードが完了すると、SDカード上のファームウェアイメージは名前が変更されるか削除され、以降の起動で繰り返しアップグレードが実行されないようになります。
OTAアップデート中はホスト機の電源を切らないでください。NAND Flash書き込みプロセスを中断するとSOMが起動不能になる場合があり、JTAGまたはシリアルブートモードによる復旧が必要になります。
トラブルシューティング
ホストが起動しない / ブランクディスプレイ
ホスト機の電源が入ってもディスプレイが真っ暗なままか、乱れた出力が表示される場合:
- FusionXボードの1番ピンがDIP-40ソケットの1番ピンと合っていることを確認してください。向きが間違っているとボードが動作せず、ホスト機を損傷する可能性があります。
- FusionXボードの40本すべてのピンがソケットに完全かつ正しく挿入されていることを確認してください。1本でも曲がったり入っていないピンがあると完全な故障につながります。
- ドーターボードを使用している場合は、正しく取り付けられており、ホスト側コネクタがメインボードの正しい箇所に接続されていることを確認してください。誤ってルーティングされたドーターボードはビデオ出力なしという結果になります。
- CPLDバリアントがホスト機に一致していることを確認してください。誤ったバリアントでプログラムされたCPLDは正しくないバスタイミングを生成し、ディスプレイが表示されないか破損した出力が生じます。CPLDバリアントの確認についてはテクニカルガイドを参照してください。
USBシリアルでLinuxコンソールが表示されない
電源を入れた後USBシリアル端末に出力が表示されない場合:
- CH340E/CH34x USBシリアルドライバがPCにインストールされていることを確認してください。Windowsでは、CH340メーカーページからドライバをダウンロードしてインストールしてください。Linuxでは
lsmod | grep ch341を実行してドライバがロードされていることを確認してください。 - ターミナルエミュレータが115200ボー、8データビット、パリティなし、1ストップビット、フロー制御なしに設定されていることを確認してください。
- USBケーブルがデータ対応(充電専用ケーブルではない)であることを確認してください。充電専用ケーブルはD+およびD-データラインを持ちません。
- USBシリアルポートがPC上の別のアプリケーションで既に開かれていないことを確認してください。
- PCの別のUSBポートを試してください。一部のUSBコントローラはフルスピードUSBシリアルデバイスをより信頼性高く処理します。
Z80エミュレーションが起動しない
Linuxコンソールにはアクセスできるが、Z80エミュレーションが起動しないか、ホストディスプレイに期待される起動画面が表示されない場合:
z80drvカーネルモジュールがロードされているか確認してください:lsmod | grep z80drvを実行してください。リストされていない場合、起動スクリプトがモジュールのロードに失敗しています。- モジュールロード試行のカーネルログをエラーメッセージについて確認してください:
dmesg | tail -50を実行し、z80drvまたはttymzdrvに関するメッセージを探してください。 - 起動スクリプトのエラーを確認してください。シリアルコンソールからスクリプトを手動で実行し、エラー出力を観察してください。
- 起動スクリプトで指定されたROMイメージのパスが正しく、ファイルが存在して読み取り可能であることを確認してください。
MZFプログラムがロードされない
z80ctrl --loadmzfが失敗するか、ロード後にプログラムが正しく動作しない場合:
- SDカードがマウントされていることを確認してください:
mount | grep mmcblk1を実行してください。マウントされていない場合はsudo mount /dev/mmcblk1p1 /mnt/sdでマウントしてください。 z80ctrl --loadmzfに渡したファイルパスが正しく、ファイルが存在することを確認してください:ls -la /mnt/sd/programs/を実行してください。- MZFファイルが破損していないことを確認してください。有効なMZFファイルは
0x01(マシンコード)または0x02(BASIC)のファイルタイプバイトで始まる128バイトのヘッダを持ちます。ヘッダを検査するにはxxd /mnt/sd/programs/test.mzf | head -8を使用してください。 - MZFファイルのロードと実行を試みる前にZ80エミュレーションが動作していることを確認してください。
WiFiが接続されない
WiFiインターフェースがアクセスポイントへの関連付けに失敗する場合:
- 外部WiFiアンテナがFusionXボードのIPEX/U.FLコネクタに接続されていることを確認してください。アンテナなしでSSW101Bモジュールを動作させると、信号が極端に弱くなるか関連付けが完全に失敗する可能性があります。
/etc/wpa_supplicant/wpa_supplicant.conf内のSSIDとパスフレーズが正しいことを確認してください。どちらも大文字と小文字が区別されます。- wpa_supplicantログで関連付けエラーを確認してください:
wpa_cli statusを実行するか、dmesg | grep -i wlanでエラーメッセージを確認してください。 - アクセスポイントが2.4GHzバンドで動作していることを確認してください。SSW101Bは5GHzネットワークをサポートしていません。
マシンの動作が速すぎる / タイミングエラー
ホスト機がタイミングの異常を示す場合(プログラムが正しくない速度で動作する、キーボードのオートリピートが異常な動作をする、ハードウェアI/Oのタイミング障害など)、最も可能性の高い原因はCPLDバリアントの不一致です:
- CPLDバリアントがホスト機と正確に一致していることを確認してください。サポートされている各ホスト機にはQuartus IIでコンパイルされた特定のCPLDバリアントが必要です。正しいバリアント識別子については上記の対応ホスト機テーブルを参照してください。
- CPLDが最近再プログラムされた場合、正しい
.pofファイルが使用されたことを確認してください。CPLDのプログラミングおよびバリアント確認手順についてはテクニカルガイドを参照してください。 - 正しいCPLDバリアントが確認された場合、Z80エミュレーションのクロック設定を確認してください。
z80drvモジュールはホスト機の期待するZ80クロック周波数に対してクロック分周器設定の調整が必要な場合があります。
参考サイト
以下のリソースはtranZPUter FusionXに関連する追加の技術情報、プロジェクトドキュメント、および外部リファレンスを提供しています。
| リソース | 場所 |
|---|---|
| tranZPUter FusionX プロジェクトページ | /tranzputer-fusionx/ |
| FusionX テクニカルガイド | /tranzputer-fusionx-technicalguide/ |
| FusionX デベロッパーズガイド | /tranzputer-fusionx-developersguide/ |
| SigmaStar SSD202 製品ページ | www.sigmastar.com.tw |
| Altera MAX7000AE データシート | Intel/Altera レガシードキュメント |
| Zeta Z80 エミュレータライブラリ | github.com/redcode/Zeta |
| Sharp MZ シリーズリファレンス | sharpmz.org |
無線規制に関する注意事項
本デバイスは SigmaStar SSD202 SOM に内蔵された SSW101B 2.4 GHz IEEE 802.11 b/g/n 無線トランシーバを搭載しており、世界各国の無線周波数規制(米国の FCC Part 15 Subpart C、欧州連合の無線機器指令 2014/53/EU を含む)において意図的放射器に該当します。
SOM モジュール自体は既存の規制認証を取得していますが、そのモジュールレベルの認証は、モジュールを組み込んだ完成品に自動的に適用されるものではありません。事前認証モジュールの免除規定は、個人の趣味愛好家が個人使用、実験、または教育目的で少数のデバイスを製作する場合に、個別の機器認可を取得せずに行うことを許可するものです。
重要な制限事項
本設計に基づいて製作されたデバイスが、管轄区域内の適用されるすべての無線周波数規制に準拠することは、製作者の単独の責任です。著者は本設計を個人使用、教育、および趣味愛好家向けに提供しており、本設計から製作されたデバイスが商業的配布の規制要件を満たすことについて、いかなる表明も行いません。
- 組み立てられたデバイスは、完成品が独自にテストされ、該当する管轄区域で機器認可(例:FCC ID、認定機関による CE マーキング評価)を取得しない限り、第三者への販売、販売の申し出、贈与、またはその他の方法での配布を行ってはなりません。
- 個人使用のために少数を製作することは、趣味愛好家および実験使用の規定(例:FCC § 15.23)に基づき、デバイスが有害な干渉を引き起こさない限り、一般的に許可されています。
- 規制要件は国によって異なります。米国外の製作者は、適用される規則について自国の無線周波数当局に確認してください。
本設計に基づいて製作されたデバイスが、管轄区域内の適用されるすべての無線周波数規制に準拠することは、製作者の単独の責任です。著者は本設計を個人使用、教育、および趣味愛好家向けに提供しており、本設計から製作されたデバイスが商業的配布の規制要件を満たすことについて、いかなる表明も行いません。