pico6502
概要
pico6502 は、picoZ80 に対応する 6502 ファミリ向けの製品です。RP2350B マイコン、8MB PSRAM、16MB フラッシュ、ESP32 コプロセッサという同一のボードハードウェアを使用しながら、Z80 ではなく MOS 6502 DIP-40 ソケット を対象としています。任意の 6502 ベースコンピュータに取り付けると、pico6502 は物理 CPU を置き換え、RP2350 の PIO ステートマシンを通じて 6502 のアドレスバス・データバス・コントロールバスを完全にサイクル精度で制御します。
picoZ80 と同様に、pico6502 は完全に JSON で設定します。SD カード上の
config.json ファイルがメモリマップ、ROM イメージ、ドライバのバインディングを定義します。異なる 6502 ベースのホストへの適応やメモリレイアウトの変更に再コンパイルは不要です。すべての管理は、オンボード ESP32 が提供するブラウザベースのインターフェースから行います。
- 6502 ドロップイン交換品
- 任意の 6502 DIP-40 ソケットに取り付け可能。ホストは PIO インターフェースを通じて常に正確な 6502 バスタイミングを確認できます。 - サイクル精度の PIO バスインターフェース
- RP2350 PIO ステートマシンが、6502 の PHI1/PHI2 デュアルフェーズクロック、RNW、SYNC、IRQ、NMI、RDY、RESET 信号を処理します。 - 大容量バンク切り替えメモリ空間
- 8MB PSRAM を 64 バンク × 64KB として使用。512 バイトブロック単位で RAM、ROM、PHYSICAL、FUNC のいずれかとして設定可能。 - 仮想デバイスフレームワーク
- 任意のメモリ領域を C ハンドラ関数でバックアップでき、6522 VIA、6845 CRTC などの仮想化ペリフェラルやカスタム I/O を実現します。 - ROM イメージのロード
- ホストマシン用の ROM イメージ(BIOS、モニタ、言語 ROM)を SD カードに保存し、起動時に PSRAM に読み込みます。 - WiFi およびウェブ管理
- picoZ80 と同じ 7 ページ構成の Bootstrap ウェブインターフェース — ダッシュボード、設定エディタ、ファイルマネージャ、ペルソナ選択、OTA ファームウェアアップデート、WiFi マネージャ。 - デュアルファームウェアパーティション
- OTA アップデートをサポートする 5MB のファームウェアスロットが 2 つあり、ブートローダがパーティション切り替えを管理します。 - USB ファームウェアアップデート
- ブートローダがハードウェアデバッガなしでの初期フラッシュ書き込み用に USB ブリッジを提供します。
ハードウェア
pico6502 PCB(リビジョン 2.2)は、picoZ80 と同じ基本設計を共有しながら、Z80 インターフェースではなく 6502 専用のバスインターフェースを搭載した、コンパクトな 52mm × 19mm のボードです。4 枚の回路図シートが RP2350B プロセッサ、ESP32 コプロセッサ、6502 バスインターフェース、電源回路をカバーしています。picoZ80 v2.5 に搭載されている USB ハブは、現行の pico6502 リビジョンには搭載されていません。すべてのロジックは 3.3V で動作し、バスインターフェースは 6502 の 5V 信号レベルに対応して設計されています。
主要コンポーネント
- RP2350B(Cortex-M33 デュアルコア)
- 最大 300MHz で動作する主プロセッサ。コア 1 が 6502 エミュレーションのホットループを担当し、コア 0 がファイル I/O、USB、ESP32 リレーを処理します。512KB オンチップ SRAM。 - 16MB SPI フラッシュ
- picoZ80 と同じレイアウト:ブートローダ、2 つの 5MB アプリケーションスロット、2 つの設定スロット、汎用設定、パーティションテーブル。 - 8MB PSRAM(SPI)
- エミュレートされた 6502 用に 64 バンク × 64KB のバンク切り替えアドレス空間。メモリブロックポインタ配列と I/O 関数ポインタ配列が RAM/ROM 領域の上位 PSRAM に格納されます。 - ESP32 コプロセッサ
- WiFi、SD カード、ウェブサーバ。RP2350 とは 50MHz FSPI および 460.8kbaud UART で通信します。 - SD カードスロット
- FAT32 形式、ESP32 が管理。config.json、ROM イメージ、ディスクイメージを保存します。 - USB ハブ
- ホスト接続とファームウェアアップデートブリッジング用のオンボード USB ハブ。 - 3.3V 電源回路
- 6502 DIP-40 VCC ピンの 5V から降圧するバックコンバータ。
pico6502 のハードウェアは KiCad で設計されています。現行リビジョンは v2.2 です。回路図および PCB レイアウトファイルはプロジェクトリポジトリの
シート 1 — RP2350B プロセッサ
kicad/PICO6502/ 以下にあります。
4 枚の回路図シートの内容は以下のとおりです:
6502 バス、16MB フラッシュ、8MB PSRAM、ESP32 通信向けの RP2350B QFN-80 GPIO 割り当て。6502 バスには A0–A15、D0–D7、PHI0/PHI1/PHI2、RNW、SYNC、IRQ、NMI、RDY、RESET が必要で、RP2350B の 48 本の GPIO ピンの大半を使用します。

ESP32 モジュール、SD カードインターフェース、アンテナ、プロセッサ間通信(FSPI + UART)。picoZ80 設計と機能的に同一です。

DIP-40 ソケット接続とバスインターフェース抵抗ネットワーク。Z80 と異なり、6502 には独立した I/O 空間がなく、すべてのペリフェラルはメモリマップドです。すべてのアドレス、データ、コントロール信号は、PIO ステートマシンが管理する RP2350 GPIO ピンへ直列抵抗を通じてルーティングされます。

入出力フィルタリングを備えた TLV62590BV 5V→3.3V 同期整流バックコンバータ。6502 DIP-40 ソケットの VCC ピンから電力を取得します。

KiCad ソースファイル:
kicad/PICO6502/PICO6502_Schematic.pdf(回路図 PDF)および kicad/PICO6502/(KiCad プロジェクト全体)。
👀 インタラクティブ BOM — pico6502 v2.2(PCB コンポーネント配置ビューア)
アーキテクチャ
デュアルコア設計
RP2350B のコア割り当ては picoZ80 と同じ構成です:
コア 0 — USB ブリッジ、ファームウェアアップデートの調整、ESP32 へのファイル I/O リレー、ESP32 UART コマンドディスパッチ、パーティション管理。
コア 1 — 6502 エミュレーションのホットループ。PIO FIFO をサービスして 6502 バストランザクションを処理し、各アドレスをメモリマップに照合して、PSRAM、PHYSICAL パススルー、または FUNC 仮想デバイスハンドラへディスパッチします。内部ループは最小レイテンシを確保するため RP2350 SRAM 上で実行されます。
コア間通信は picoZ80 と同じ
PIO バスインターフェース
queue_t メッセージパッシングを使用し、フロッピー/ディスクイメージの変更、設定のリロード、ファイルの読み書き、ファームウェアバージョン照会などのメッセージを転送します。
6502 バスインターフェースは
M6502.pio に実装されています。RP2350 は 3 つの PIO ブロックを提供しており、6502 ファームウェアはすべてを使用します:
- PIO 0 — アドレスバスおよびデータバス(GPIO 0–23)
-m6502_addr(A0–A15、GPIO 0–15)とm6502_data(D0–D7、GPIO 16–23)を同時に実行。アドレスワードはコア 1 の FIFO にプッシュされ、データは RNW に応じてドライブまたはサンプリングされます。 - PIO 1 — コントロール信号およびサイクル実行(GPIO 16–47)
- サイクルシーケンサ(m6502_cycle)、オペコードフェッチ(m6502_fetch)、メモリ読み書き(m6502_read、m6502_write)、IRQ 検出(m6502_irq)、NMI 検出(m6502_nmi)、Set Overflow 検出(m6502_so)を実行します。 - PIO 2 — クロック生成(GPIO 16–47)
-m6502_clock_6502を実行し、外部 PHI0 入力から PHI1 および PHI2 の 2 相非重複クロックを生成します。コア 1 のスケジューリングに依存せず、常に正確な 6502 バスタイミングを保証します。
M6502.pio に含まれる PIO プログラムの全一覧:
| プログラム | 機能 |
|---|---|
m6502_clock_6502 |
外部 PHI0 から PHI1/PHI2 の 2 相クロックを生成します。 |
m6502_addr |
16 ビットアドレス(A0–A15)を出力し、サイクル開始を通知します(IRQ 0)。 |
m6502_data |
D0–D7 をドライブまたはサンプリングします(IRQ 1)。トライステート制御付き。 |
m6502_irq |
IRQ アサートを検出します(IRQ フラグ 5)。 |
m6502_nmi |
NMI アサートを検出します(IRQ フラグ 4)。 |
m6502_so |
Set Overflow(SO)ピンのアサートを検出します(IRQ フラグ 6)。 |
m6502_cycle |
トップレベルのバスサイクルシーケンサ。IRQ 7 が実行ループからの終了を通知します。 |
m6502_fetch |
オペコードフェッチバスサイクル(PHI2 + RNW = 読み取り)。 |
m6502_read |
メモリ読み取りバスサイクル。 |
m6502_write |
メモリ書き込みバスサイクル。 |
ステートマシンは PIO IRQ フラグで同期します:IRQ 0(アドレス/サイクル開始)、IRQ 1(データフェーズ)、IRQ 4(NMI)、IRQ 5(IRQ)、IRQ 6(SO)、IRQ 7(実行ループ終了)。Z80 インターフェースとの主な違いは、6502 の 2 相クロック方式です。PHI1 と PHI2 は非重複であり、アドレスバスは PHI1 の立ち上がりエッジで有効になり、データは PHI2 の立ち下がりエッジ前に提示またはサンプリングされます。PIO 2 をクロック生成専用とすることで、コア 1 の動作に関わらず 6502 のタイミングが常に正確に保たれます。
メモリモデル
6502 のメモリモデルは Z80 モデルと構造的に同一ですが、独立した I/O アドレス空間がありません。6502 には IORQ に相当するものがないため、すべてのペリフェラルレジスタは 64KB のメモリマップ上に現れます。同じ 3 層アーキテクチャが適用されます:
第 1 層 — RP2350 SRAM:512 バイトブロックごとに O(1) ディスパッチを行う 128 エントリのブロックポインタ配列。
第 2 層 — PSRAM(8MB):64 バンク × 64KB の RAM/ROM イメージおよび関数ポインタ配列。
第 3 層 — フラッシュ(16MB):ファームウェア、ROM イメージ、圧縮済み設定 JSON。 6502 メモリマップで使用可能なメモリブロックタイプ:
第 2 層 — PSRAM(8MB):64 バンク × 64KB の RAM/ROM イメージおよび関数ポインタ配列。
第 3 層 — フラッシュ(16MB):ファームウェア、ROM イメージ、圧縮済み設定 JSON。 6502 メモリマップで使用可能なメモリブロックタイプ:
| タイプ | 説明 |
|---|---|
PHYSICAL |
実際のホストハードウェアへのパススルー。 |
PHYSICAL_VRAM |
ウェイトステートを伴うホストビデオ RAM。 |
RAM |
読み書き可能 — PSRAM バンクでバックアップ。 |
ROM |
読み取り専用 — PSRAM バンクでバックアップ。 |
FUNC |
仮想デバイス — すべてのアクセス時に C ハンドラが呼び出されます。6502 には I/O 空間がないため、すべてのペリフェラルエミュレーションに使用します。 |
PTR |
バイト単位のリダイレクト。 |
picoZ80 のレイアウトと同一です:
| パーティション | アドレス範囲 | サイズ | 内容 |
|---|---|---|---|
| ブートローダ | 0x10000000–0x1001FFFF |
128KB | USB ブリッジ、ファームウェアアップデート、パーティションセレクタ |
| アプリスロット 1 | 0x10020000–0x1051FFFF |
5MB | メイン 6502 ファームウェア(パーティション 1) |
| アプリスロット 2 | 0x10520000–0x10A1FFFF |
5MB | メイン 6502 ファームウェア(パーティション 2) |
| アプリ設定 1 | 0x10A20000–0x10C9FFFF |
2.5MB | ROM イメージ + 圧縮済み設定 JSON(スロット 1) |
| アプリ設定 2 | 0x10CA0000–0x10F1FFFF |
2.5MB | ROM イメージ + 圧縮済み設定 JSON(スロット 2) |
| 汎用設定 | 0x10F20000–0x10FFEFFF |
892KB | コア設定、スクラッチ領域 |
| パーティションテーブル | 0x10FFF000–0x11000000 |
4KB | アクティブスロット、チェックサム、メタデータ |
ビルド手順
pico6502 は picoZ80 と同じビルドシステムとディレクトリ構成を使用します。ルートディレクトリの作成、
プロジェクトのクローン
PICO_PATH の設定、get_and_build_sdk.sh の実行、ESP-IDF 用 Docker エイリアスの設定など、完全なセットアップ手順については picoZ80 のビルド手順 を参照してください。pico6502 固有の差異については以下に記載します。
pico6502 ファームウェアには Zeta Z80 エミュレータライブラリは不要です。projects/Z80 のクローンも必要ありません。
mkdir -p <root>/projects
cd <root>/projects
git clone <tzpuPico-repo-url> tzpuPico
同じ
build_tzpuPico.sh スクリプトを使用します。スクリプト先頭の PICO_PATH が正しく設定されていることを確認し、ルートから実行してください:
cd <root>
<a name="standard-release-build" id="standard-release-build"></a>
# 標準リリースビルド
./build_tzpuPico.sh
<a name="debug-build" id="debug-build"></a>
# デバッグビルド
./build_tzpuPico.sh DEBUG
<a name="full-build-including-esp32-firmware-via-docker" id="full-build-including-esp32-firmware-via-docker"></a>
# Docker 経由で ESP32 ファームウェアを含む完全ビルド
./build_tzpuPico.sh ALL
cd <root>/projects/tzpuPico/esp32
idf54 build
idf54 Docker エイリアスの定義については picoZ80 のビルド手順 を参照してください。
フラッシュ書き込みの手順は picoZ80 と同一です。初回の RP2350 フラッシュは USB マスストレージ経由で、初回の ESP32 フラッシュは esptool 経由で行い、以降のアップデートは OTA ウェブページから実施します。esptool コマンドやボードリビジョンの注意事項を含む詳細は picoZ80 のフラッシュ書き込みセクション を参照してください。
デバッグ
pico6502 のデバッグ手順は picoZ80 のデバッグセクション と同じです。ハードウェア接続、OpenOCD のセットアップ、グローバル GDB 初期化の詳細はそちらを参照してください。picoZ80 との違いは、メインファームウェアのビルドディレクトリ(
RP2350 — SWD デバッグ
BaseZ80 の代わりに BaseM6502)と ~/.gdbinit の add-auto-load-safe-path エントリのみです。
6 ピンデバッグヘッダの
SWCLK(ピン 1)、SWDIO(ピン 2)、GND(ピン 5)に CMSIS-DAP プローブを接続します。pico6502 は picoZ80 と同じカスタム OpenOCD ターゲット rp2350_tzpu.cfg を使用します。ファイルの完全な内容は picoZ80 のデバッグセクション を参照してください。一度インストールしたら、OpenOCD を起動します:
sudo cp rp2350_tzpu.cfg /usr/local/share/openocd/scripts/target/
openocd -f interface/cmsis-dap.cfg -f target/rp2350_tzpu.cfg -c "adapter speed 5000"
以下を
~/.gdbinit に追加してください(必要に応じてパスを絶対パスに変更):
set history save on set history filename ~/.gdb_history set history size 65536 add-auto-load-safe-path build/bin/model/BaseM6502/.gdbinit:build/bin/model/Bootloader/.gdbinitブートローダのデバッグ
# Core 0 cd build/bin/model/Bootloader cp ../../../../.gdbinit.bootloader.3333 .gdbinit gdb-multiarch Bootloader.elf # Core 1 (別ターミナル) cd build/bin/model/Bootloader cp ../../../../.gdbinit.bootloader.3334 .gdbinit gdb-multiarch Bootloader.elfメインファームウェアのデバッグ
# Core 0 cd build/bin/model/BaseM6502 cp ../../../../.gdbinit.3333 .gdbinit gdb-multiarch BaseM6502_0x10020000.elf # Core 1 (別ターミナル) cd build/bin/model/BaseM6502 cp ../../../../.gdbinit.3334 .gdbinit gdb-multiarch BaseM6502_0x10020000.elfESP32 — USB デバッグ
pico6502 ボードの ESP32 USB ポートに USB ケーブルを接続します。ESP32-S3 内蔵の USB-JTAG インターフェースは外部プローブを必要としません。OpenOCD を起動してから Xtensa GDB を起動します:
openocd -f board/esp32s3-builtin.cfg
xtensa-esp32s3-elf-gdb esp32/build/main.elf (gdb) target extended-remote :3333
設定(JSON)
pico6502 は picoZ80 と同じ JSON 設定機構を使用します。トップレベルキーは
"rp2350" で、RP2350 の動作パラメータ用の "core" セクションを含みます。CPU 固有のセクションには("z80" の代わりに)"6502" キーを使用し、6502 には独立した I/O 空間がないため "io" 配列はなく、すべてのペリフェラルマッピングは FUNC タイプのブロックとして "memory" 配列に現れます。
{
"esp32": {
"core": {
"device": "6502",
"mode": 0
},
"wifi": {
"override": 1,
"wifimode": "client",
"ssid": "MyNetwork",
"password": "MyPassword",
"ip": "192.168.1.192",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"dhcp": 0,
"webfs": "webfs",
"persist": 0
}
},
"rp2350": {
"core": {
"cpufreq": 300000000,
"psramfreq": 133000000,
"voltage": 1.10
},
"6502": {
"memory": [ ... ],
"drivers": [ ... ]
}
}
}
esp32 トップレベルオブジェクトは ESP32 コプロセッサを設定します。core と wifi の 2 つのサブオブジェクトを含みます。
| キー | 型 | 説明 |
|---|---|---|
device |
文字列 | CPU デバイスタイプ — ESP32 が使用するプロセッサのペルソナを指定します。有効な値:"Z80"(picoZ80)、"6502"(pico6502)、"6512"(pico6512)。 |
mode |
整数 | デフォルトの起動モード:0 = クライアント(ステーション)モード、1 = アクセスポイントモード。NVS に保存されます。 |
wifi オブジェクトは config.json から WiFi の認証情報とネットワーク設定を注入し、NVS に保存されている内容を上書きします。このブロックを無視して以前に保存した NVS 設定を使用するには、override を 0 に設定してください。
| キー | 型 | 説明 |
|---|---|---|
override |
0/1 | マスタースイッチ。1 = 以下のすべての設定を適用;0 = このブロックを無視して保存済み NVS 設定を使用。 |
wifimode |
文字列 | アクセスポイントモードの場合は "ap";クライアント/ステーションモードの場合は "client"。 |
ssid |
文字列 | 作成(AP)または接続(クライアント)する WiFi ネットワーク名。 |
password |
文字列 | WiFi パスフレーズ。 |
ip |
文字列 | 固定 IP アドレス(例:"192.168.1.192")。 |
netmask |
文字列 | サブネットマスク(例:"255.255.255.0")。 |
gateway |
文字列 | デフォルトゲートウェイアドレス。 |
dhcp |
0/1 | クライアントモード専用。1 = DHCP;0 = 固定 ip/netmask/gateway を使用。 |
webfs |
文字列 | SD カード上のウェブファイルシステムのルートディレクトリを上書きします(デフォルト:"webfs")。 |
persist |
0/1 | 1 = 解決された設定を NVS に書き戻す;0 = 今回のセッションのみ適用。 |
| キー | 型 | 説明 |
|---|---|---|
cpufreq |
整数 | RP2350 システムクロック周波数(Hz)(例:300000000 は 300 MHz)。 |
psramfreq |
整数 | PSRAM SPI クロック周波数(Hz)(例:133000000 は 133 MHz)。 |
voltage |
浮動小数点 | RP2350 コア電圧(例:1.10)。 |
6502 はメモリマップド I/O アーキテクチャであるため、すべてのペリフェラルは
memory 配列内に現れます。仮想デバイスハンドラにマッピングされるアドレス範囲には FUNC 型を使用してください。
| キー | 型 | 説明 |
|---|---|---|
enable |
0/1 | このエントリが有効かどうか。 |
addr |
16進文字列 | 6502 アドレス空間における開始アドレス。 |
size |
16進文字列 | リージョンサイズ。 |
type |
文字列 | PHYSICAL、PHYSICAL_VRAM、RAM、ROM、FUNC、PTR。 |
bank |
整数 | RAM/ROM 型の PSRAM バンク番号。 |
task |
文字列 | FUNC 型ブロック用のオプションタスク識別子。 |
file |
文字列 | 起動時に読み込む ROM イメージへの SD カードパス。 |
"memory": [
{
"enable": 1,
"addr": "0xE000",
"size": "0x2000",
"type": "ROM",
"bank": 0,
"task": "",
"file": "/ROM/host_bios.rom"
},
{
"enable": 1,
"addr": "0x0000",
"size": "0xE000",
"type": "RAM",
"bank": 0,
"task": "",
"file": ""
},
{
"enable": 1,
"addr": "0xC000",
"size": "0x0010",
"type": "FUNC",
"bank": 0,
"task": "via6522",
"file": ""
}
]
6502 のドライバモデルは Z80 モデルよりもシンプルです。各ドライバエントリは起動時に 1 つ以上の ROM イメージを PSRAM に読み込みます。アドレス再マップやI/O再マップのサブテーブルはなく、すべてのメモリレイアウトは
memory 配列で定義されます。
| キー | 型 | 説明 |
|---|---|---|
enable |
0/1 | このドライバエントリが有効かどうか。 |
name |
文字列 | この ROM 読み込みエントリの説明名。 |
rom |
配列 | 起動時に PSRAM へ読み込む ROM イメージ。 |
rom[] エントリ:
| キー | 型 | 説明 |
|---|---|---|
enable |
0/1 | この ROM イメージを読み込むかどうか。 |
file |
文字列 | ROM バイナリへの SD カードパス。 |
loadaddr |
配列 | ロードアドレス記述子。 |
loadaddr[] エントリ:
| キー | 型 | 説明 |
|---|---|---|
enable |
0/1 | このロードアドレスエントリが有効かどうか。 |
position |
整数 | file 内のインデックス(マルチ ROM ファイルの場合)。 |
addr |
16進文字列 | 6502 アドレス空間における転送先アドレス。 |
bank |
整数 | 読み込む PSRAM バンク。 |
size |
16進文字列 | 読み込むバイト数。 |
"drivers": [
{
"enable": 1,
"name": "BIOS",
"rom": [
{
"enable": 1,
"file": "/ROM/host_bios.rom",
"loadaddr": [
{
"enable": 1,
"position": 0,
"addr": "0xE000",
"bank": 0,
"size": "0x2000"
}
]
}
]
},
{
"enable": 1,
"name": "CharROM",
"rom": [
{
"enable": 1,
"file": "/ROM/charrom.bin",
"loadaddr": [
{
"enable": 1,
"position": 0,
"addr": "0xB800",
"bank": 0,
"size": "0x0800"
}
]
}
]
}
]
2KB のゼロページ/スタック RAM エリア、48KB の汎用 RAM、8KB の BIOS ROM、および
0xC000 に VIA ペリフェラルハンドラを持つ 6502 ホスト向けの最小構成:
{
"rp2350": {
"core": {
"cpufreq": 300000000,
"psramfreq": 133000000,
"voltage": 1.10
},
"6502": {
"memory": [
{ "enable":1, "addr":"0x0000", "size":"0x0200",
"type":"RAM", "bank":0, "task":"", "file":"" },
{ "enable":1, "addr":"0x0200", "size":"0xBE00",
"type":"RAM", "bank":0, "task":"", "file":"" },
{ "enable":1, "addr":"0xC000", "size":"0x0010",
"type":"FUNC", "bank":0, "task":"via6522", "file":"" },
{ "enable":1, "addr":"0xE000", "size":"0x2000",
"type":"ROM", "bank":0, "task":"", "file":"/ROM/host_bios.rom" }
],
"drivers": [
{
"enable":1, "name":"BIOS",
"rom": [
{ "enable":1, "file":"/ROM/host_bios.rom",
"loadaddr":[{ "enable":1, "position":0,
"addr":"0xE000", "bank":0, "size":"0x2000" }] }
]
}
]
}
}
}
ウェブインターフェース
pico6502 のウェブインターフェースは picoZ80 のインターフェースと構造が同一です — ESP32 が
http://<device-ip>/ で提供する 7 つの Bootstrap 4 ページで構成されています。初回起動時はボードの WiFi AP に接続し、WiFi Manager 経由でクライアントモードを設定してネットワークに参加してください。
| ページ | URL | 機能 |
|---|---|---|
| ダッシュボード | / |
リアルタイムシステム状態:プロセッサ、デバイス、ファームウェアバージョン、アクティブパーティション。 |
| 設定エディタ | /config.htm |
シンタックスハイライトとリブートなしリロード機能を備えたブラウザ内 config.json エディタ。 |
| ファイルマネージャ | /filemanager.htm |
SD カードファイルブラウザ:アップロード、ダウンロード、リネーム、削除。SD カードを取り外さずに ROM イメージやディスクイメージを転送。 |
| ペルソナ選択 | /personality.htm |
ファームウェアパーティションごとにアクティブなマシンペルソナを選択。 |
| ESP32 OTA | /ota-esp32.htm |
WiFi 経由で ESP32 ファームウェアをアップロード;バージョン管理された FilePack ウェブファイルシステムアーカイブを SD カードにアップロード。 |
| RP2350 OTA | /ota-rp2350.htm |
WiFi 経由で RP2350 ファームウェアをアップロード;アクティブパーティションの表示と切り替え。 |
| WiFi マネージャ | /wifimanager.htm |
WiFi SSID、パスワード、モード(AP またはクライアント)を設定。 |
各ウェブインターフェースページの詳細な説明については picoZ80 ページを参照してください — pico6502 の実装は同一です。
参考サイト
以下の表は、pico6502 の設計およびプログラミングにおいて参照したすべてのサイトを掲載しています。
| サイト | 言語 | 説明 |
|---|---|---|
| RP2350 データシート | 英語 | Raspberry Pi RP2350 公式テクニカルリファレンスおよびデータシート。 |
| Pico SDK | 英語 | Raspberry Pi Pico C/C++ SDK — pico6502 ファームウェアで使用されるビルドシステムとハードウェア抽象化レイヤー。 |
| MOS 6502 データシート | 英語 | オリジナルの MOS Technology 6502 MPU データシート — バスタイミング、ピン説明および電気的特性。 |
| ESP-IDF | 英語 | ESP32 コプロセッサファームウェアに使用される Espressif IoT Development Framework。 |
| 6502 ソフトウェアリポジトリ | 英語 | コミュニティ 6502 ソフトウェアおよび ROM イメージリポジトリ。 |
マニュアルおよびデータシート
以下の表は、pico6502 の設計およびプログラミングにおいて参照したすべてのデータシートとマニュアルを掲載しています。
| データシート | 言語 | 説明 |
|---|---|---|
| RP2350 | 英語 | Raspberry Pi RP2350 マイクロコントローラデータシート。 |
| ESP32-S3 | 英語 | Espressif ESP32-S3 SoC データシート — pico6502 ボード上の WiFi/BT コプロセッサ。 |
| APS6404L PSRAM | 英語 | 8MB SPI PSRAM データシート — メモリバンキングに使用されるメインの拡張 RAM。 |
| W25Q128 Flash | 英語 | Winbond 16MB SPI NOR フラッシュデータシート — ファームウェアおよび ROM イメージを格納。 |
| TLV62590 | 英語 | Texas Instruments 製 5V→3.3V 同期整流バックコンバータ — 6502 の DIP-40 VCC ピンから pico6502 に電力供給。 |
| CH334F | 英語 | CH334F 4 ポート USB 2.0 ハブコントローラ — ファームウェアアップデート用の USB ハブ機能を提供。 |
プロジェクトプレビュー
picoZ80 および pico6502 プロジェクトは X(旧 Twitter)で初めてプレビューされました:
https://x.com/engineerswork1/status/1953171627065188841
デモンストレーション動画
pico6502 のデモンストレーション動画はプロジェクトの成熟とともに追加される予定です。共有プラットフォームの動作例については picoZ80 デモンストレーション動画を参照してください。
商用利用の制限
書面による明示的な許可なく商用利用は認められません。
pico6502 のハードウェア設計(回路図、PCB レイアウト、KiCad ファイル)、ファームウェア、およびすべての関連ソフトウェアは、個人的、教育的、および非商用目的のみに提供されています。PCB アートワーク、部品表、ファームウェアバイナリ、ソースコード、またはドキュメントを含むがこれに限定されないこの設計のいかなる部分も、著者(Philip D. Smart)の書面による明示的な許可なく、商用製品またはサービスに使用、複製、製造、販売、または組み込むことはできません。
商用ライセンスの申請または許可される使用についての相談は、eaw.app ウェブサイトを通じて著者にお問い合わせください。
クレジット
pico6502 プロジェクトは複数の個人およびオープンソースプロジェクトの成果の上に構築されています。それらの貢献に心から感謝いたします。
- Manuel Sainz de Baranda y Goñi
Z80 C 言語 Z80 CPU エミュレータライブラリ(github.com/redcode/Z80)の作者。このライブラリは併行プロジェクトの picoZ80 で使用されています。同じ高精度エミュレーションの哲学と共有ファームウェアインフラが pico6502 の設計にも反映されており、Manuel の功績はより広いプロジェクトファミリーの一部として心から認識されています。 - Raspberry Pi Ltd
Pico SDK および RP2350 ハードウェアの作者。PIO アセンブラ、C SDK、CMake ツールチェーン統合、および RP2350B シリコンが、サイクル精度の高い 6502 バスインターフェースを可能にしています。 - Espressif Systems
ESP-IDF フレームワークおよび ESP32 ハードウェアの作者。ESP32 コプロセッサ、WiFi スタック、OTA ライブラリ、および NVS ストレージフレームワークがウェブ管理インターフェースを支えています。 - Philip Smart
ハードウェア設計(KiCad 回路図および PCB レイアウト)、RP2350 PIO ファームウェア、ESP32 ウェブアプリケーション、JSON 設定システム、およびすべてのプロジェクトドキュメント。 - Grok (xAI)
PIO ステートマシンのデバッグ中に貴重な支援を提供した AI アシスタント — 特に RP2350 PIO プログラムにおけるタイミングのエッジケースとサイクル精度のバスインタラクション問題の診断において。 - Claude (Anthropic)
複数の分野にわたりこのプロジェクトに貢献した AI アシスタント:プロジェクトドキュメントの執筆と構成、RP2350 と ESP32 間の FSPI/UART インターフェースの分析とファームウェア改善提案、および継続的なファームウェア開発支援。
ライセンス
pico6502 プロジェクトは複数のコンポーネントで構成されており、それぞれ独自のライセンスが適用されています:
要約すると:ファームウェアとソフトウェアは GPL v3 の下でオープンソースです。ハードウェア設計とドキュメントは CC BY-NC-SA 4.0 の下でライセンスされています(非商用利用のみ — 商用ライセンスはリクエストに応じて提供可能)。サードパーティライブラリは上記に記載されている各自のライセンスを保持しています。詳細はリポジトリ内の
| コンポーネント | ライセンス |
|---|---|
| pico6502 RP2350 ファームウェア(PIO、C ソース) | GNU General Public License v3 |
| pico6502 ESP32 ファームウェアおよびウェブインターフェース | GNU General Public License v3 |
| KiCad ハードウェア設計ファイル(回路図、PCB、ガーバー) | Creative Commons BY-NC-SA 4.0 |
| ドキュメントおよびユーザーガイド | Creative Commons BY-NC-SA 4.0 |
| Raspberry Pi Pico SDK | BSD 3-Clause |
| ESP-IDF フレームワーク | Apache License 2.0 |
| Bootstrap 4(ウェブインターフェース) | MIT License |
LICENSE および NOTICE ファイルをご覧ください。
ライセンス条項
Copyright © 2019–2026 Philip Smart. All rights reserved.
ハードウェア設計 — CC BY-NC-SA 4.0
すべてのハードウェア設計(KiCad 回路図、PCB レイアウト、ガーバー製造ファイル、部品表)は Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License の下でライセンスされています。適切なクレジットを表示し、同じライセンスの下で変更を配布する限り、非商用目的でのみ設計を共有および改変することができます。商用製造または販売には別途ライセンスが必要です — info@eaw.app までご連絡ください。 ファームウェアおよびソフトウェア — GNU GPL v3
ファームウェアおよびソフトウェアのソースコードは GNU General Public License v3 の下でフリーソフトウェアです。GPL v3 の条件に基づいてコードを再配布および改変することができます。配布される変更は GPL v3 の下でライセンスされ、ソースコードが公開されなければなりません。 商標および帰属表示
picoZ80、pico6502、および engineers@work の名称は Philip Smart の商標です。書面による許可なくこれらの名称を派生製品の宣伝に使用することはできません。著作権表示、著者の帰属表示、またはブート/スプラッシュ画面のクレジットを削除または変更することはできません。このプロジェクトをリブランドして自分の作品として提示することは明示的に禁止されています。詳細はリポジトリ内の
picoZ80 または pico6502 ボードの商用販売を目的とした製造に関心のあるメーカーまたは販売代理店の方は、info@eaw.app までご連絡ください。個人使用、教育目的、および趣味/クラブでの使用は、上記のオープンソースライセンスの条件の下で常に許可されています。 完全なライセンステキストはリポジトリ内に
すべてのハードウェア設計(KiCad 回路図、PCB レイアウト、ガーバー製造ファイル、部品表)は Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License の下でライセンスされています。適切なクレジットを表示し、同じライセンスの下で変更を配布する限り、非商用目的でのみ設計を共有および改変することができます。商用製造または販売には別途ライセンスが必要です — info@eaw.app までご連絡ください。 ファームウェアおよびソフトウェア — GNU GPL v3
ファームウェアおよびソフトウェアのソースコードは GNU General Public License v3 の下でフリーソフトウェアです。GPL v3 の条件に基づいてコードを再配布および改変することができます。配布される変更は GPL v3 の下でライセンスされ、ソースコードが公開されなければなりません。 商標および帰属表示
picoZ80、pico6502、および engineers@work の名称は Philip Smart の商標です。書面による許可なくこれらの名称を派生製品の宣伝に使用することはできません。著作権表示、著者の帰属表示、またはブート/スプラッシュ画面のクレジットを削除または変更することはできません。このプロジェクトをリブランドして自分の作品として提示することは明示的に禁止されています。詳細はリポジトリ内の
NOTICE ファイルをご覧ください。
商用ライセンスpicoZ80 または pico6502 ボードの商用販売を目的とした製造に関心のあるメーカーまたは販売代理店の方は、info@eaw.app までご連絡ください。個人使用、教育目的、および趣味/クラブでの使用は、上記のオープンソースライセンスの条件の下で常に許可されています。 完全なライセンステキストはリポジトリ内に
LICENSE、LICENSE-HARDWARE.txt、および LICENSE-SOFTWARE.txt として含まれています。