[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) のハードウェアをブラウザ上にエミュレート。
Apple II series - Wikipedia
The Apple II series is a family of home computers designed primarily by Steve Wozniak and manufactured by Apple Computer. It was launched in 1977 with the original Apple II, followed by the Apple II Plus, Apple IIe, and other models.
en.wikipedia.org$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 — ブラウザで動くApple II Plusエミュレーター
MOS 6502 1.023MHz / Disk II Controller / HiRes NTSC Color / AudioWorklet Speaker — DSKディスクイメージロード対応
lain-lab.comスタートメニューから起動
トップページのスタートメニューからも起動できます。
6502 EMULATOR PROJECT
6502 EMULATOR PROJECT
フルスクラッチ JavaScript MOS 6502 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.comスクリーンショット & 動作確認作品
Apple IIの各種プロンプト画面およびデモディスクでの動作検証を行いました。
Applesoft BASIC
起動直後の APPLE ][ バナー画面および Applesoft BASIC プロンプト。VRAMのインターリーブアドレス計算と、フラッシュ/インバーステキスト表示が正常に機能。
BASICコードの実行。
動画
Activision demo disk
※ 掲載しているスクショ画面は、ftp.apple.asimov.net にて公開されているデモ用ディスクイメージ(Activision demo disk.dsk)を使用して動作検証を行ったものです。各著作権および商標権は、Activision社ならびに各権利所有者に帰属します。
Disk II コントローラ経由でDSKブートに成功。HiRes(280×192)でのNTSCアーティファクトカラー描画(紫/緑/青/橙/白)およびタイトルのグラフィックアニメーションを再現。
動画
特徴
-
ディスクイメージ(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. ディスクイメージの読み込みと起動
- エミュレーターページ(
index.html)を開く - コントロールパネルの 「Disk (.DSK)」 ボタンをクリックして、ローカルの
.dskディスクイメージを選択 - イメージがセットされたら、「Reset」 ボタンを押すか、BASICプロンプトから
PR#6と入力して Disk II からブートを実行
2. 対応フォーマット
| 拡張子 / 種類 | 内容 | 処理 |
|---|---|---|
.dsk | DOS 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 CORE | 6502 CPU命令セット(1.023MHz動作、サイクル正確なステップ実行) |
| BUS / SOFTSWITCH | アドレスデコード、キーボードストロボ、画面モードスイッチ制御 |
| RENDERER | Text (40x24), LoRes (16色), HiRes (NTSCカラー 280x192) Canvas描画 |
| SPEAKER PROCESSOR | $C030 トグルのCPUサイクル追跡とAudioWorklet波形合成 |
| DISK II CONTROLLER | P5 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 ディスクイメージローダーの実装
技術記事
[JavaScript] Apple IIエミュレーターを自作。6502コアの上にDisk II・HiResカラー・スピーカーを積み上げてデモディスクが動くまで
Text/HiResのVRAM非線形マッピング、NTSCアーティファクトカラー、AudioWorkletスピーカートグル、Disk II 6-and-2ニブル化とP5 ROMの実装全記録。
lain-lab.com