[WEB App] Apple II Emulator — ブラウザで動くApple II Plusエミュレーター (MOS 6502コア・Disk II・HiResカラー・AudioWorklet 1bitスピーカー対応)

[WEB App] Apple II Emulator — ブラウザで動くApple II Plusエミュレーター (MOS 6502コア・Disk II・HiResカラー・AudioWorklet 1bitスピーカー対応)

Apple II Emulator

自作MOS 6502 CPUコアをベースに、個人用コンピュータの原点であり歴史的名機 Apple II Plus (1979) のハードウェアをブラウザ上にエミュレート。

$C000–$C0FF アドレスへのアクセスで動作するソフトスイッチ設計を再現し、Text(40×24 / インターリーブVRAM)、LoRes(40×48 / 16色)、HiRes(280×192 / NTSCアーティファクトカラー)のマルチスクリーンモードに対応。

さらに、AudioWorkletとサイクル単位トグルキューによる1ビットスピーカートグル音声合成、Disk II P5 ROM (341-0027) と6-and-2エンコーディングを実装したDSKディスクイメージローダー、およびアナログパドル/ジョイスティック入力のポーリングエミュレーションを搭載しています。

エミュレーターの起動方法

JS APPLE II EMULATOR

以下、リンクを開くと起動します。

スタートメニューから起動

トップページのスタートメニューからも起動できます。

Apple II Emulator — — スタートメニュー

6502 EMULATOR PROJECT

スクリーンショット & 動作確認作品

Apple IIの各種プロンプト画面およびデモディスクでの動作検証を行いました。

Applesoft BASIC

起動直後の APPLE ][ バナー画面および Applesoft BASIC プロンプト。VRAMのインターリーブアドレス計算と、フラッシュ/インバーステキスト表示が正常に機能。

BASICコードの実行。

Apple II Emulator // BASIC コードの実行

動画

Apple II Emulator // BASIC 実行アニメーション

Activision demo disk

※ 掲載しているスクショ画面は、ftp.apple.asimov.net にて公開されているデモ用ディスクイメージ(Activision demo disk.dsk)を使用して動作検証を行ったものです。各著作権および商標権は、Activision社ならびに各権利所有者に帰属します。

Disk II コントローラ経由でDSKブートに成功。HiRes(280×192)でのNTSCアーティファクトカラー描画(紫/緑/青/橙/白)およびタイトルのグラフィックアニメーションを再現。

Apple II Emulator // Activision demo disk Apple II Emulator // Ghostbusters Demo Apple II Emulator // HiRes Graphic Scene

動画

Apple II Emulator // Ghostbusters Demo Animation Apple II Emulator // Title Screen Animation

特徴

  • ディスクイメージ(DSK)ファイルローダー:
    コントロールパネルの「Disk (.DSK)」ボタンからディスクイメージを選択することで、Disk IIコントローラにマウントして自動/手動ブートが可能。

  • ソフトスイッチ & マルチスクリーンモード描画エンジン:
    $C050–$C057 ソフトスイッチによる即時モード切替。Text/LoRes($0400–$07FF)およびHiRes($2000–$3FFF)の複雑な非線形VRAMアドレス変換を完全処理。

  • HiRes NTSC アーティファクトカラーレンダリング:
    1/7ビットピクセル位置の偶奇判定、bit 7(高位ビット)によるパレット切り替え(紫/緑 vs 青/橙)、隣接ピクセル相互作用による白表示まで正確に描画。

  • AudioWorklet サイクル同期 1bit スピーカートグル合成:
    $C030 読み書きアクセス時のCPUサイクルを記録し、AudioWorkletへイベントキュー送信することで、ビープ音や効果音をノイズレスで再生。

  • Disk II コントローラ & 6-and-2 ニブル化完全再現:
    Slot 6 に配置された P5 ROM (341-0027) のブートシーケンス、ステッパーモーターのフェーズ切替(ハーフトラック移動)、生DSKセクターの6-and-2ニブルデータ動的生成を完全実装。

使い方

1. ディスクイメージの読み込みと起動

  1. エミュレーターページ(index.html)を開く
  2. コントロールパネルの 「Disk (.DSK)」 ボタンをクリックして、ローカルの .dsk ディスクイメージを選択
  3. イメージがセットされたら、「Reset」 ボタンを押すか、BASICプロンプトから PR#6 と入力して Disk II からブートを実行

2. 対応フォーマット

拡張子 / 種類内容処理
.dskDOS 3.3 ディスクイメージDisk II コントローラ (Slot 6) にマウントしてブート処理

キーボード・操作方法

機能キー
Apple II キーボード入力A–Z, 0–9, 各種記号(すべて大文字処理)
RESETコントロールパネルの Reset ボタン
パドル / ジョイスティック (PDL0/1)矢印キー (Arrow Keys)
パドルボタン (PB0 / PB1)Z / X キー

モジュール構成

モジュール名主要機能
MOS 6502 CPU CORE6502 CPU命令セット(1.023MHz動作、サイクル正確なステップ実行)
BUS / SOFTSWITCHアドレスデコード、キーボードストロボ、画面モードスイッチ制御
RENDERERText (40x24), LoRes (16色), HiRes (NTSCカラー 280x192) Canvas描画
SPEAKER PROCESSOR$C030 トグルのCPUサイクル追跡とAudioWorklet波形合成
DISK II CONTROLLERP5 ROMデコード、ステッパーモーター位相計算、6-and-2ニブル変換
PADDLE EMULATOR$C070 タイマーリセットとサイクル経過によるアナログポーリング

技術スタック

  • JavaScript (ES6+ / Modules) — 6502コア・Bus・Disk II・描画ロジック
  • HTML5 Canvas (2D Context) — HiRes / Text / LoRes レンダリング
  • Web Audio API (AudioWorklet) — サイクル同期1ビットスピーカートグル再生
  • Astro — Webアプリケーション基盤

更新履歴

  • [2026-09-22]: v1.0 初回公開。
    • 6502 CPUコアおよびバス・ソフトスイッチの実装
    • Text, LoRes, HiRes (NTSCアーティファクトカラー) 描画エンジンの実装
    • AudioWorklet による 1ビットスピーカートグル音声合成の実装
    • Disk II P5 ROM および 6-and-2 エンコーディング/ステッパーモーター制御の実装
    • DSK ディスクイメージローダーの実装

技術記事