HN 日本語サマリー

← 一覧へ戻る
プログラミング

RP2350向け386 PC

A 386 PC for Your RP2350 (github.com)

55 pointsby SamuraiLion18 コメント

要約

RP2350(Raspberry Pi Pico 2)上で動作するi386 PCエミュレータ「FRANK 386」が開発されました。このエミュレータはVGA/HDMI出力、SDカードストレージ、PS/2およびUSBキーボード/マウス、NESゲームパッド、オーディオ出力をサポートし、DOSやWindows 3.xなどのOSを動作させることができます。

全文翻訳

FRANK 386 公式ページ: frank.rh1.tech — すべてのFRANKボードとファームウェアのハブ。 RP2350(Raspberry Pi Pico 2)向けのi386 PCエミュレータで、VGA/HDMI出力、SDカードストレージ、PS/2およびUSBキーボード/マウス、NESゲームパッド、オーディオ出力を備えています。Chunhui He氏のTiny386に基づいています。 主な機能 * オプションのx87 FPUを備えた完全なi386(および部分的にi486/i586)CPUエミュレーション * 最大8MBのRAM(8MB PSRAMを使用) * VGAおよびHDMIグラフィックス出力(テキストモードおよび最大640x480のグラフィックス) * サウンド: AdLib OPL2、Sound Blaster 16、PC Speaker、Tandy、Covox、Disney Sound Source * フロッピー、ハードディスク、CD-ROMイメージ用のSDカードサポート * ホットスワップ可能なディスクイメージ用のランタイムディスクマネージャー(Win+F12) * エミュレータ設定変更用の設定メニュー(Win+F11) * PS/2キーボードおよびマウス入力 * USBキーボードおよびマウス入力(ネイティブUSBホスト経由) * NESゲームパッドサポート(マウスエミュレーションモード付き) * DOS、Windows 3.x、Windows 95、Linuxなどを起動可能 スクリーンショット FRANK 386 動作中 対応ボード このファームウェアは、VGA/HDMI、SDカード、キーボード入力を統合したRP2350ベースのボード向けに設計されています。 * FRANK - VGA出力を備えた多用途開発ボード * Murmulator - RP Pico 2(M1およびM2バリアント)ベースのコンパクトなレトロコンピューティングプラットフォーム * Olimex PICO-PC - Olimex RP2350 PCボード * Waveshare RP2350-PiZero - Waveshare RP2350ボード ハードウェア要件 * Raspberry Pi Pico 2(RP2350)または互換ボード * 8MB PSRAM(拡張メモリに必要) * VGAまたはHDMIコネクタ * SDカードモジュール(SPIモード) * PS/2キーボード(直接接続) - または - USBキーボード(ネイティブUSBポート経由) * オーディオ出力(オプション): I2S DACまたはPWM 注意: USB HIDが有効な場合、ネイティブUSBポートはキーボード/マウス入力に使用されます。このモードではUSBシリアルコンソール(CDC)は無効になり、デバッグ出力にはUARTを使用します。 ボード構成 4つのGPIOレイアウトがサポートされています: M1、M2、PC(Olimex)、Z2(Waveshare)。 VGA / HDMI信号 | Signal | M1 GPIO | M2 GPIO | |---|---|---| | VGA | 6 | 12 | | Range | 6-13 | 12-19 | SDカード(SPIモード) | Signal | M1 GPIO | M2 GPIO | |---|---|---| | CLK | 2 | 6 | | CMD | 3 | 7 | | DAT0 | 4 | 4 | | DAT3/CS | 5 | 5 | PS/2キーボード | Signal | M1 GPIO | M2 GPIO | |---|---|---| | CLK | 0 | 2 | | DATA | 1 | 3 | PS/2マウス | Signal | M1 GPIO | M2 GPIO | |---|---|---| | CLK | 14 | 0 | | DATA | 15 | 1 | NES/SNESゲームパッド | Signal | M1 GPIO | M2 GPIO | |---|---|---| | CLK | 14 | 20 | | DATA | 16 | 26 | | LATCH | 15 | 21 | I2Sオーディオ | Signal | M1 GPIO | M2 GPIO | |---|---|---| | DATA | 26 | 9 | | BCLK | 27 | 10 | | LRCLK | 28 | 11 | SDカードセットアップ ディレクトリ構造 SDカードに386/ディレクトリを作成してください。 SDカードルート/ └── 386/ ├── config.ini # 設定ファイル ├── bios.bin # SeaBIOS ROM(必須) ├── vgabios.bin # VGA BIOS ROM(必須) ├── dos622.img # ハードディスクイメージ ├── boot.img # フロッピーイメージ └── ... # その他のディスクイメージ BIOSファイル SeaBIOSおよびVGA BIOSをSeaBIOSのリリースからダウンロードするか、sdcard/386/内のbios.bin/vgabios.binを使用してください。 設定ファイル(config.ini) 386/config.iniを作成します。 [pc] mem=8M bios=bios.bin vga_bios=vgabios.bin [frank-386] cpu_freq=504 psram_freq=166 ディスクイメージの準備 フロッピーイメージ(.img): 標準的な1.44MBフロッピーイメージ(1474560バイト) 作成方法: dd if=/dev/zero of=floppy.img bs=512 count=2880 DOSまたは既製のDOSブートディスクでフォーマットしてください。 ハードディスクイメージ(.img): 最大2GBの生のディスクイメージ 作成方法: dd if=/dev/zero of=hdd.img bs=1M count=512 DOSのFDISKとFORMATを使用してパーティション分割およびフォーマットしてください。 CD-ROMイメージ(.iso): 標準的なISO 9660イメージ CDライティングソフトウェアを使用してCDからISOを作成してください。 起動時のディスクイメージのロード: 上記のようにconfig.iniでディスクイメージを設定します。 ランタイム(ディスクマネージャー): Win+F12を押してディスクマネージャーを開きます。 矢印キーでドライブ(A:、B:、C:、D:、E:)を選択します。 Enterキーを押して386/ディレクトリ内のディスクイメージをブラウズします。 イメージファイルを選択して挿入するか、現在のディスクを取り外します。 Escapeキーを押してディスクマネージャーを閉じます。 ディスクマネージャーで行われた変更は自動的にconfig.iniに保存されます。 コントロール キーボードショートカット | ショートカット | アクション | |---|---| | Win+F12 | ディスクマネージャーを開く | | Win+F11 | 設定メニューを開く | | Ctrl+Alt+Delete | システムリセット(ゲストOSに送信) | 設定メニュー(Win+F11) ランタイムでエミュレータ設定を構成します。 * メモリサイズ(1〜8 MB) * CPU世代(386/486/586) * FPUエミュレーションのオン/オフ * サウンドデバイス(AdLib、SB16、PC Speaker、Tandy、Covox、MPU-401、DSS) * PS/2またはUSBマウスのオン/オフ * NESマウスのオン/オフ(NESゲームパッドのD-padでマウスをエミュレート、B=左クリック、A=右クリック) * RP2350 CPU周波数と電圧 * PSRAM / Flash周波数 設定はconfig.iniに保存され、再起動後に有効になります。 ディスクマネージャー(Win+F12) 再起動せずにディスクイメージを管理します。 * フロッピーイメージ(A:、B:)の挿入/取り外し * ハードディスクイメージ(C:、D:)の挿入/取り外し * CD-ROMイメージ(E:)の挿入/取り外し ビルドの前提条件 * Raspberry Pi Pico SDK(バージョン2.0+)をインストールします。 * 環境変数を設定します: export PICO_SDK_PATH=/path/to/pico-sdk * ARM GCCツールチェーンをインストールします。 ビルド手順 git clone https://github.com/rh1tech/frank-386.git cd frank-386 # デフォルト設定(M2ボード、378MHz、PS/2キーボード)でビルド ./build.sh # M1ボード用にビルド ./build.sh -M1 # USBキーボードサポート付きでビルド ./build.sh --usb-hid # カスタムビルド ./build.sh -b M1 -c 504 -p 166 --debug ビルドオプション(build.sh) | オプション | 説明 | |---|---| | -b, --board <M1|M2|PC|Z2> | ボードバリアント(デフォルト: M2) | | -c, --cpu <MHz> | CPU速度: 378(デフォルト)、504 | | -p, --psram <MHz> | PSRAM速度: 133(デフォルト)、166 | | --usb-hid | USBキーボードを有効にする(USBシリアルは無効) | | --hdmi | HDMI出力を強制する | | --debug | デバッグ出力を有効にする | | -clean | ビルドディレクトリを最初にクリーンアップする | ビルドオプション(CMake) | オプション | 説明 | |---|---| | -DPICO_BOARD=pico2 | RP2350用にビルド(デフォルト) | | -DBOARD=M1 | M1 GPIOレイアウトを使用 | | -DBOARD=M2 | M2 GPIOレイアウトを使用(デフォルト) | | -DBOARD=PC | Olimex PICO-PCレイアウトを使用 | | -DBOARD=Z2 | Waveshare RP2350-PiZeroレイアウトを使用 | | -DCPU_SPEED=378 | CPUクロック(MHz)(378、504) | | -DPSRAM_SPEED=133 | PSRAMクロック(MHz)(133、166) | | -DUSB_HID_ENABLED=ON | USBキーボードを有効にする(USBシリアルは無効) | | -DDEBUG_ENABLED=ON | 詳細なデバッグログを有効にする | | -DFORCE_HDMI=ON | HDMI出力を強制する | リリースビルド すべてのファームウェアバリアントをビルドするには: # インタラクティブ(バージョンをプロンプト表示) ./release.sh # バージョン番号を指定 ./release.sh 1.02 これにより、release/ディレクトリにファームウェアファイルが作成されます。 * frank-386_m1_<version>.uf2 - M1ボード(Murmulator) * frank-386_m2_<version>.uf2 - M2ボード(Murmulator) * frank-386_pc_<version>.uf2 - Olimex PICO-PC * frank-386_z2_<version>.uf2 - Waveshare RP2350-PiZero フラッシング # デバイスをBOOTSELモードにして picotool load build/frank-386.uf2 # またはフラッシュスクリプトを使用 ./flash.sh トラブルシューティング Windows 95セットアップ中の「0 bytes of memory」 メモリチェックをスキップするには setup /im を使用します。 Windows 95起動中の「Protection error」 patcher9x を使用します。 mapdrive.com サポート(リダイレクター)を有効にして、SDカードをネットワーク接続ドライブH:にマップします。 config.ini で redirector = 1 を設定します。 キーボード入力なし PS/2の場合: キーボードの接続とGPIOピンを確認してください。 USBの場合: ファームウェアが --usb-hid オプションでビルドされていることを確認してください。 SDカードが検出されない SDカードがFAT32でフォーマットされていることを確認してください。 SDカードモジュールの接続を確認してください。 SDカードに 386/ ディレクトリが存在することを確認してください。 ライセンス MITライセンス。詳細はLICENSEを参照してください。 著者と貢献者 Mikhail Matveev & DnCraptor frank-386 ポートと開発(2026) リポジトリ: https://github.com/rh1tech/frank-386 謝辞 このプロジェクトは以下のオープンソースプロジェクトに基づいています。 Tiny386 Project: Tiny386 - x86 PC Emulator 著者: Chunhui He ライセンス: BSD 3-Clause 説明: コアi386 CPUエミュレータとPCペリフェラルエミュレーション(8259 PIC、8254 PIT、8042キーボードコントローラ、VGA、サウンドデバイス)。 Pico-286 Project: Pico-286 著者: xrip ライセンス: MIT 説明: RP2350プラットフォーム統合、ディスク管理、VGAドライバの概念。 QuakeGeneric Project: QuakeGeneric 著者: DnCraptor ライセンス: GPL v2 説明: RP2350ハードウェア統合パターン、Murmulatorプラットフォームサポート、PS/2マウスドライバの実装。 QEMU Project: QEMU 著者: Fabrice Bellard(2003-2017)、Vassili Karpov "malc"(2003-2005)、Joachim Henke(2006) ライセンス: MIT 説明: 8259 PIC、8254 PIT、8257 DMA、8042キーボードコントローラ、PCIバス、PCスピーカー、VGA、AdLib OPL2プロキシを含むPCペリフェラルエミュレーションコード。 MAME FM Sound Generator Project: MAME 著者: Tatsuyuki Satoh(1999-2000) ライセンス: LGPL 2.1+ 説明: AdLibエミュレーション用のFM OPLサウンドジェネレータ(fmopl)。MAMEからフォークされ、LGPLの下で再ライセンスされています。 inih Project: ini