
2026/08/25 3:58
Claude×レトロコンピューティング:QIC-117 テープドライブのエミュレーション
RSS: https://news.ycombinator.com/rss
要約▶
Japanese 翻訳:
86Box エミュレータは、廃棄されたハードウェアのデータを保存するための機能拡張を行い、希少な QIC-117 テープドライブと並列ポート(LPT with EPP)に対応した専用 Iomega Ditto ドライブへのサポートを追加しました。この更新は不可欠であり、現代のシステム上でレトロな DOS や初期の Windows ソフトウェアで作成されたバックアップを復元することを可能にし、結果としてレガシーなストレージ技術を再活性化させます。
これを実現するには、深い技術的解析が必要でした。標準的な QIC-117 互換性を実装すると同時にメーカー固有のコマンドをサポートするため、開発者は実際の Colorado ドライブから ROM チップを抜き取り、Python デイシッスラ(Intel 8051 と Zilog Z8)を使用して分析しました。その結果、Microsoft Backup for Windows 95 や HP Colorado Backup 7 といったツールによる検出に必要な未文書化のコマンドが発見されました。さらに、ユーザーフォーメーション機能が当初備わっていなかった Ditto ドライブに対応するため、画像ファイルを読み取る仮想カートリッジを実装しました。事前フォーマット済みの画像はレポジトリで提供されており、カスタムテープ画像(所望の容量とラベル付き)を生成するための Python スクリプトも用意されており、即時の利用が可能になっています。
今後の開発については FINDINGS.md ファイルに文書化されており、現在のコマンドと、Greaseweazle コントローラーによる生フラックス読み取りなど、潜在的な機能強化が記載されています。この拡張によりエミュレータの有用性が大幅に広がり、Travan や Ditto などの専用フォーマットとの互換性が得られ、標準仕様に支えられていた長期的な重要歴史データのアクセスを確保できるようになりました。
本文
86Box でエミュレートした QIC-117 テープドライブの構築と活用
概要:LLM を活かした非公式な利用法
大規模言語モデル(LLM)の frivolous な利用法の一つとして、**「エミュレートされたテープドライブの構築」**を行いました。
- 主要ツール: 86Box エミュレータを使用。
- フロッピーコントローラーに接続された QIC-117 テープドライブをエミュレート可能。
- パラレルポートに接続したバージョンもエミュレート可能。
- 実用機能: 実際の DOS や初期 Windows 世代のバックアップソフトウェアを使用し、仮想テープイメージへデータを「バックアップ」作成できるようになりました。
なぜこのプロジェクトが必要だったか?
著者は長年、起動可能なディスクイメージのコレクションを保有し、DOS/Windows/Mac OS/Amiga OS/Unix などのエミュレーションに夢中です。特に86Boxは低レベルで高忠実度なエミュレーターとして愛用しています。
ターゲット:テープメディアとエミュレーションの融合
- 課題: 「仮想カートリッジを持ち、仮想テープイメージを読み取る」仕組みが不足していた。
- 現状: 既存のエミュレータでは QIC-80 や QIC-3020 などのテープドライブを実装していない。
- 目標: バイナリテープイメージをエミュレータ上で読み込ませ、元々のバックアップソフトが実機と通信しているかのように動作させることで**「ループを閉じる」**こと。
デジタル保存の重要性
著者は定期的に QIC テープからデータを復旧・デジタル保存に従事しています。
- 将来的なメディアへの正確な再現のため、**テープの完全なバイナリイメージ(フラックス遷移レベル)**を取得したいという目的があります。
- (注:高位階層のデータだけでなく実際の磁気遷移を保存する課題については将来の記事で解説予定)
技術的困難さ:QIC-117 プロトコルとメーカー固有の「トリック」
QIC テープドライブ(例:Colorado 250, Travan)は、フロッピーコントローラー上で QIC-117 という専用プロトコルを使用します。
標準仕様だけでは不十分
- 単純な実装: QIC-117 の標準仕様に従うと、HP Colorado Backup 7(QBACKUP)のみが正常に動作しました。
- 問題点: 他の多くのユーティリティは、メーカー固有の「診断」コマンドや非公開のプロトコルを使用します。
- 例:Windows 95 の Microsoft Backup は、ドライブの種類を特定するために Colorado 独自の処理を試みました。
解決策:ROM チップのディスアセンブル
仕様書に記述されていない動作を実装するために、以下の手順でアプローチしました。
- 実機接続監視: 実際のフロッピーコントローラー上の通信トラフィックを解析。
- ROM チップの抽出: ドライブ内の ROM チップを外付けし、ROM をディスアセンブル。
- これにより、サポートされている全コマンド(診断ビットを含む)と、仕様に逸脱するカスタムコマンドの詳細を特定可能に。
LLM に頼った開発プロセス
ROM のダンプと PC ボードの写真のみを元に、Claude Opus 5(LLM)に以下のタスクを指示しました。
- ディスアセンブル実行: ROM を解析し、カスタムコマンドの詳細や仕様との乖離を提示。
- 出力成果物:
:ドライブがサポートする全コマンドの詳細分解表。A FINDINGS.md- 読み込み不可能だったテープを読み込める手法の記述。
- Greaseweazle(カスタムコントローラー)を使用し、生フラックス遷移を読み込むための方法を含むデジタル保存ガイドの記述。
- ディスアセンブラコード:
- Intel 8051 プロセッサ用(メイン IC)。
- Zilog Z8 プロセッサ用(他ドライブ採用モデル)。
これにより、86Box で動作する QIC-117 ドライブに必要なピースが全て埋まりました。
パラレルポート版のサポート実装(EPP)
完結性を高めるため、パラレルポート(EPP 規格 LPT ポート)へのサポートも追加しました。
- エミュレート対象: Iomega Ditto ドライブ。
- 内部構造は QIC-117 ですが、MicroSolutions 社製「Backpack」プロトコルチップを搭載。
- 互換性の特徴:
- 第一世代の Ditto カートリッジだけでなく、以下のメディアも読み込めます。
- Travan
- QIC-3020
- QIC-2080(最小容量)
- これらすべてのメディアは、86Box 内でエミュレートされたカートリッジとして動作します。
- 第一世代の Ditto カートリッジだけでなく、以下のメディアも読み込めます。
プリフォーマットイメージのリポジトリ作成
- ** peculiar な仕様**: Ditto カートリッジは出荷時プリフォーマットされており、ユーザーが空のテープからフォーマットする方法はありませんでした。
- 提供ソリューション: ダウンロードして利用可能なプリフォーマット済みテープイメージのリポジトリを作成。
- Python スクリプトを同梱し、希望する容量とカスタムラベルを設定して自身のテープイメージを生成可能です。
※楽しんでください!