FRANK 386プロジェクトは、Raspberry Pi Pico 2 (RP2350) マイクロコントローラを完全なi386 PCエミュレータとして機能させ、Windows 3.x、Windows 95、Linuxなどのレガシーソフトウェアをサポートします。Tiny386エンジンをRP2350に移植することで、このプロジェクトは、VGA/HDMI出力とSDカードストレージを備えた現代的で低コストなマイクロコントローラプラットフォーム上で、ヴィンテージなコンピューティング環境を実行することを可能にします。

FRANK 386プロジェクトプラットフォームの視覚的表現。
FRANK 386プロジェクトは、RP2350マイクロコントローラ上でレガシーソフトウェアを実行するためのプラットフォームを提供します。github.com

この画像は、i386 PC環境をエミュレートするためのプロジェクトのプラットフォームを表しています。

コアエミュレーションとハードウェアサポート

FRANK 386は、8259 PIC、8254 PIT、8042キーボードコントローラ、VGAの周辺機器サポートを含む、i386アーキテクチャのための包括的なエミュレーションスイートを提供します。これは、外部メモリやディスプレイ出力とのインターフェース能力など、RP2350固有のハードウェア機能と動作するように設計されています。

このプロジェクトは、PC Speaker、Tandy、Covox、Disney Sound Sourceを含むさまざまなオーディオデバイスをサポートします。グラフィックスは、テキストモードと、VGAまたはHDMI接続を介した最大640x480の解像度のグラフィカルモードの両方をサポートします。

「VGA/HDMI出力、SDカードストレージ、PS/2およびUSBキーボード/マウス、NESゲームパッド、およびオーディオ出力を備えたRP2350(Raspberry Pi Pico 2)用i386 PCエミュレータ。」

— GitHub - rh1tech/frank-386: Tiny386 port to RP2350

ストレージと入力メカニズム

システムは、SPIモードのSDカードを使用して、フロッピー、ハードディスク、CD-ROMイメージのストレージを提供します。Win+F12ショートカットでアクセス可能な専用の実行時ディスクマネージャーにより、ユーザーはシステムを再起動することなくこれらのイメージを挿入または取り出すことができます。

エミュレータ内のフォルダとファイルを示す表のスクリーンショット。
エミュレータによってサポートされるファイルシステムとフォルダ構造を示すスクリーンショット。github.com

このスクリーンショットは、FRANK 386プロジェクトのファイル管理機能を説明しています。

入力は複数の方法で処理されます。ネイティブのPS/2キーボードおよびマウス接続、または現代的なUSB HIDサポートです。Waveshare Z2のような特定のボードでは、システムはUSBホスト機能を処理するためにPIO-USB実装を利用できます。

メモリアーキテクチャとパフォーマンスのトレードオフ

レガシーシステムのメモリ要件を達成するために、FRANK 386は外部QSPI PSRAMチップを使用して最大8MBのRAMをサポートします。このPSRAMは、フラッシュメモリとバスを共有するために、特定のGPIOピン(XIP CS1)に配線する必要があります。

メモリアクセス速度に関する技術的な制約が存在します。RP2350はオリジナルの386チップよりも大幅に高速ですが、内部SRAMを超えたメモリへのアクセスは40サイクルのアクセス遅延を導入する可能性があります。これにより、エミュレートされたソフトウェアが外部PSRAMに頻繁にアクセスする場合、特定の状況下でスタッタリング(カクつき)が発生する可能性があります。

Hacker Newsの読者の反応

  • 技術的な指摘: あるコメント投稿者は、RP2350のメモリアーキテクチャがパフォーマンスの問題を引き起こす可能性を懸念しており、最初の640kbを超えるメモリへのアクセスが、エミュレーション中に大幅なサイクル遅延とスタッタリングを招く可能性があると指摘しました。 コメント ↗
  • 代替案: あるコメント投稿者は、ESP32上で動作する同様のプロジェクトが既に存在することを指摘しました。 コメント ↗
  • 疑問: ある読者は、古い組み込み機器を再利用するために必要な、RS232やプリンターなどの特定のハードウェアポートをエミュレートしているかどうかを尋ねました。 コメント ↗

Hacker Newsのスレッドで出た意見の要約です。事実として検証されたものではありません。 議論の全文を読む ↗