Z80/ZX Spectrum エミュレータを Claude Code で実装する

Z80 アーキテクチャと ZX Spectrum のハードウェア仕様に従い、Claude Code を用いてエミュレータを構築します。以下は主要なステップです。

1. **CPU コアの作成**  
   - Z80 の命令セット(約 158 命令)をすべて実装し、オペコードデコードロジックと実行パスを設計します。  
   - レジスタ (A, B, C, D, E, H, L)、プログラムカウンタ PC、インデックスレジスタ IX/ IY、フラグ R、I、IXH/L などを正確に再現します。

2. **メモリマッピング**  
   - ZX Spectrum の RAM(通常 48 KiB)と ROM(16 KiB)領域を定義し、IO ポートへのアクセスを模倣。  
   - `0x4000–0x7FFF` を RAM として扱い、`0x0000–0x3FFF` は ROM へマップします。

3. **ビデオ/グラフィックス**  
   - スペクトラムの画面は 256×192 ピクセルで、4 色(黒・青・赤・黄色)を持ちます。  
   - ビデオメモリ `0x5800–0x5AFF` を読み取り、ピクセルバイト単位でスクリーンに描画します。

4. **音声出力**  
   - サウンドチャンネルは 1 チャネル(PCM)で、波形データを RAM の `0x6000–0x67FF` から取得。  
   - 音声バッファリングとサンプリングレート(通常 8 kHz)を実装します。

5. **IO デバイス**  
   - キーボードは 8×16 行のマトリクスで、ポート `0xFE` を介して読み取ります。  
   - マウスやフロッピーディスクなどオプションデバイスも必要に応じて追加。

6. **Claude Code の活用**  
   - 既存の Z80 エミュレータライブラリ(例: `z80emu.c`)をインポートし、エンジン部分は Claude Code でラップ。  
   - GUI フロントエンドは Electron や Qt を利用して、実行画面とデバッグツールを提供。

7. **テスト & デバッグ**  
   - スペクトラム用の標準ソフトウェア(例: BASIC、ゲーム ROM)で動作確認。  
   - シミュレータの正確性はクロック周期単位で検証し、必要に応じてハードウェア特有のタイミングを微調整。

8. **最適化**  
   - JIT コンパイル(例: `llvm`)や SIMD 命令で実行速度向上。  
   - メモリアクセスはキャッシュライン単位で整理し、レイテンシ低減。

これらを順序立てて実装すれば、高い互換性とスムーズな動作を持つ Z80/ZX Spectrum エミュレータが完成します。

2026/02/25 19:36

Z80/ZX Spectrum エミュレータを Claude Code で実装する Z80 アーキテクチャと ZX Spectrum のハードウェア仕様に従い、Claude Code を用いてエミュレータを構築します。以下は主要なステップです。 1. **CPU コアの作成** - Z80 の命令セット(約 158 命令)をすべて実装し、オペコードデコードロジックと実行パスを設計します。 - レジスタ (A, B, C, D, E, H, L)、プログラムカウンタ PC、インデックスレジスタ IX/ IY、フラグ R、I、IXH/L などを正確に再現します。 2. **メモリマッピング** - ZX Spectrum の RAM(通常 48 KiB)と ROM(16 KiB)領域を定義し、IO ポートへのアクセスを模倣。 - `0x4000–0x7FFF` を RAM として扱い、`0x0000–0x3FFF` は ROM へマップします。 3. **ビデオ/グラフィックス** - スペクトラムの画面は 256×192 ピクセルで、4 色(黒・青・赤・黄色)を持ちます。 - ビデオメモリ `0x5800–0x5AFF` を読み取り、ピクセルバイト単位でスクリーンに描画します。 4. **音声出力** - サウンドチャンネルは 1 チャネル(PCM)で、波形データを RAM の `0x6000–0x67FF` から取得。 - 音声バッファリングとサンプリングレート(通常 8 kHz)を実装します。 5. **IO デバイス** - キーボードは 8×16 行のマトリクスで、ポート `0xFE` を介して読み取ります。 - マウスやフロッピーディスクなどオプションデバイスも必要に応じて追加。 6. **Claude Code の活用** - 既存の Z80 エミュレータライブラリ(例: `z80emu.c`)をインポートし、エンジン部分は Claude Code でラップ。 - GUI フロントエンドは Electron や Qt を利用して、実行画面とデバッグツールを提供。 7. **テスト & デバッグ** - スペクトラム用の標準ソフトウェア(例: BASIC、ゲーム ROM)で動作確認。 - シミュレータの正確性はクロック周期単位で検証し、必要に応じてハードウェア特有のタイミングを微調整。 8. **最適化** - JIT コンパイル(例: `llvm`)や SIMD 命令で実行速度向上。 - メモリアクセスはキャッシュライン単位で整理し、レイテンシ低減。 これらを順序立てて実装すれば、高い互換性とスムーズな動作を持つ Z80/ZX Spectrum エミュレータが完成します。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


要約

Anthropic の最近のブログ記事では、Opus 4.6 LLM を使って「クリーンルーム」環境(インターネットアクセスなし、ソースコード参照なし、ほぼゼロ誘導)で Rust で C コンパイラを作成する実験が紹介されています。著者は、この選択を批判し、C コンパイラの構築は SSA、レジスタ割り当て、命令選択などに関する事前研究が必要な複雑なグラフ操作問題であり、他の言語に適したものだと主張しています。

同じ著者は Claude Code で実験を再現し、Z80 エミュレータ(後に ZX Spectrum と CP/M エミュレータへ拡張)を同一のクリーンルーム制約下で作成しました。まずマークダウン仕様ファイルが作られ、範囲と規則(インターネットなし、簡潔なコード、テスト後にコミット、豊富なコメント、進捗ログ)が詳細化されました。その後、エージェントはウェブから Z80/Spectrum に関するすべての関連ドキュメントを取得し Markdown に保存してセッションを閉じ、汚染を防ぎました。新しいセッションで Claude Code は仕様のみを参照し、インターネットやソースコード検索なしでエミュレータをゼロから実装しました。

Z80 の場合:1,200 行の C コード(コメント込みで約 1,800 行)が全 ZEXDOC と ZEXALL テストスイートに約 20〜30 分で合格し、CP/M バイナリと Spectrum ROM に対して継続的にテストされました。実装は既存のエミュレータとは別物であり、Codex や Claude Code のチェックからコード盗用の証拠は見つかりませんでした。

ZX Spectrum の場合:ULA との相互作用、キーボードマッピング、テープ符号化などに関する詳細ドキュメントを元に、Jetpac を SDL 上で動作させるエミュレータが完成し、低 CPU 使用率を達成しました。その後、小規模なリファクタリングで TAP ファイルの読み込みもサポート。CP/M サポートは COM ファイル(ZEXALL/ZEXCOM テスト用)を調べて 3 つの必須システムコールを実装し、環境を拡張、2 MHz クロックをシミュレートすることで追加されました。

著者は、詳細な設計ヒント、包括的なドキュメント、進化するルールブックが LLM を用いた自動プログラミングの成功には不可欠であると結論付けています。彼はこれらのモデルが単に記憶したコードを再現するのではなく、既知のパターンから新しい実装を合成すると主張します。このアプローチがスケールすれば、クリーンルーム自律的コード生成は手動コーディングの労力を削減し、プロトタイピングを加速させ、開発者・ホビイスト・保存プロジェクト向けにニッチやレガシーシステムエミュレータを迅速に作成できるようになると述べています。

本文

antirez 3 days ago • 25 511 views

Anthropic は最近、最新バージョンの Opus(4.6)を使って「クリーンルーム」環境下で Rust で C コンパイラを書かせる実験について記したブログ記事を公開しました。

その手法から私は彼らが何を主張しようとしているのか疑問に思いました:

  • ISA(命令セットアーキテクチャ)ドキュメントをエージェントに提供すべきでは?
  • なぜ Rust なの? C コンパイラを書くことは大規模なグラフ操作問題で、Rust ではむしろ難しい。
  • クリーンルーム実験では、エージェントは SSA(静的単一代入)、レジスタ割り当て、命令選択・スケジューリングなど、最適化コンパイラに関する確立済みの CS 研究をすべて利用できるはずです。これらは先に調査し「クリーンルーム」実装に備える必要があります。

インターネットアクセスや他のコンパイラソースコードへの参照を禁止した点は正しい判断でした。ほぼゼロ指示原則は、大規模プロジェクトを完全自律で書くことを示す実験には整合性がありますが、これは現場でコーディングエージェントが使われる方法ではありません。多くのユーザーは、ここそこにヒットさせれば品質が劇的に向上することを知っています。


Z80 実験

私は同様の実験を自分でも試してみました。1〜2時間以内で完結し、Claude Code Max プランに合致するものです:Z80 エミュレータを書き、その後 ZX Spectrum(そして後ほど CP/M)エミュレータを書くという流れです。結果は GitHub に公開しています:https://github.com/antirez/ZOT

使ったプロセス

  1. 仕様書
    Z80 エミュレータの範囲を Markdown ファイルで定義しました:

    • 個々のクロックステップではなく、命令全体を実行して RP2350 のような制限付きハードウェア上で動かす。
    • 後に ZX Spectrum で ULA と競合するタイミング計測用に経過クロック数を追跡。
    • メモリアクセスのコールバックを提供。
    • 公式・非公式の Z80 命令をすべてエミュレート。

    Spectrum 用には描画詳細、オプションの RGB バッファ、カセット読み込み用 EAR ビットシミュレーションなどを追加しました。
    ファイルにはエージェントが従うべきルール(インターネット禁止、簡潔なクリーンコード、進捗ごとにコミット、テストスイート、コメント、プロンプトの中断なし、作業ログの維持、コンテキスト圧縮後に再読込み)も記載しています。

  2. ドキュメント収集
    Claude Code のセッションを立ち上げて、インターネットから Z80 と Spectrum に関する有用な資料を取得し、Markdown ファイルへまとめました。ZEXDOC/ZEXALL のバイナリテストベクトルや ROM も提供しました。すべて集めた後にセッションを削除して汚染を防ぎました。

  3. 実装
    新しいセッションで Claude Code に仕様書とドキュメントを読み込み、厳格な「インターネット禁止/ソースコード参照禁止」ルールの下で Z80 エミュレータの実装を開始させました。遵守状況を監督しました。

  4. ステアリング
    Z80 にはゼロステアリング、Spectrum(特に TAP ローディング)には詳細なステアリングを行いました。

  5. 検証
    最後にリポジトリを

    /tmp
    にコピーし
    .git
    を削除、新しいセッションで Claude Code / Codex に主要な Z80 実装との盗作チェックを依頼しました。違反は確認されませんでした。

結果

Claude Code は合計 20–30 分で、ZEXDOC/ZEXALL を通過する約 1,200 行の読みやすいコメント付き C(コメント・空行込みで約 1,800 行)を生成しました。実装中にプロンプトは一度も発生せず、インターネットへのアクセスもありませんでした。CP/M バイナリに対して継続的にテストされました。バグは統合テスト・デバッグセッション・ダンプ・printf 呼び出しで修正され、人間プログラマが行うのと同じ手順です。

次へ:ZX Spectrum

Spectrum 用にも同様のプロセスを繰り返し、組み込みシステム制約(48 k エミュレーション、オプションフレームバッファ、最小メモリ使用、ROM は初期化時に参照)に焦点を当てました。エージェントは詳細なドキュメントを作成し、.z80 ゲームイメージをロードでき、10 分で Jetpac を SDL 描画で 8 % 未満の CPU 使用率で動かせるようになりました。

TAP ファイル読み込み

zx_tick()
zx_frame()
から分離するリファクタリングが必要でした。この変更後、エミュレータはカセットロードを正しくシミュレートしました。

CP/M

ZEXALL/COM のテスト COM ファイルを検査し、3 つの CP/M システムコールを特定・実装。さらに VT100 / ADM3 ターミナルエスケープや WordStar サポートを備えた完全な CP/M 環境を構築しました(2 MHz クロックシミュレーションなど、まだ修正が残っています)。


学んだこと

  1. 設計ヒントと詳細ドキュメントの提供 – エージェントは自ら収集できても、明確な仕様書があると大いに助かります。
  2. ルール付き Markdown と最新作業ログの維持 – これによりエージェントは軌道を保てます。
  3. 継続的検証 – 大きな変更ごとにテストスイートを実行すべきです。
  4. ソースコードの直接コピー回避 – エージェントはパターンからインスピレーションを得ても、独自で非著作権コードを生成します。

Anthropic のコンパイラ試みは主にアセンブラ実装で失敗しましたが、これは適切なドキュメントがあれば成功できる機械的プロセスです。LLM が単に訓練データを丸暗記しているわけではなく、新たに知識を組み立てるという証拠です。

人間はクロスポリネーション(関連実装のダウンロード・学習・インスピレーション)をよく行い、これは IT の進化を加速させる許容された慣行です。自動プログラミングを使う際には、MIT ライセンスでコードを公開しても問題ありません(Z80 プロジェクトのように)。


今後のステップ

さらに手法を検証するために、ドキュメント無しで Z80/ZX Spectrum エミュレータを作成し、その結果を比較すると良いでしょう。時間はかかりますが、大変有益です。

同じ日のほかのニュース

一覧に戻る →

2026/02/28 4:08

Googleを辞めたことが、私の生活を実際に良くしてくれました。

## Japanese Translation: 著者は、Google が検索、メール、およびその他のサービスで拡大する支配力がプライバシーとコントロールの問題となり、ユーザーをテック・ジャイアントから離れるよう促していると主張しています。彼らは、2023年5月に追加された「AIオーバービュー」や2026年1月にGmailで導入された生成的 AI など、Google がデータ収集を拡大しつつある証拠として最近の AI 主導機能を指摘しています。筆者は Brave と DuckDuckGo が検索の90%以上を上回っている一方で、Apple は iOS 上で Google をデフォルト検索エンジンに維持するために年間約200億ドルを支払っており、Chrome OS は約70%の使用率で支配していると述べています。これは広告収益が直接支払いを行わないユーザーを製品化する様子を示しています。 著者はプライバシー重視の代替手段を強調しています:メールなら ProtonMail、Fastmail、Tuta(および Mailbox)、動画なら Curiosity Stream、Nebula、Floatplane、Spotify、Dropout ですが、YouTube は Google が所有しているため競合が存在せず例外であると指摘しています。Google を離れた後、著者はデジタル衛生の改善を報告しています:一度きりのサインアップに主要メールアドレスを使用しないことや、より慎重なアカウント作成が増えています。記事は、人々が Google のダークパターンと習慣形成戦術を認識するにつれて、これら代替手段への採用が拡大し、テック業界がより透明でプライバシー尊重型サービスを提供するよう促されるだろうと予測しています。

2026/02/27 23:56

**OpenAI、$730 B のプレマネー評価で 1,10 億ドルを調達**

## Japanese Translation: **要約** OpenAIは、記録的な1,100億ドルのプライベート資金調達ラウンドを閉鎖し、プレマネーバリュエーションを7300億ドルに引き上げました。この取引は、Amazon(500億ドル+AGI実現または年末までにIPOが達成された場合に最大350億ドルのオプション付き)とNvidia(300億ドル)、SoftBank(300億ドル)が主導しています。OpenAIは追加投資家向けにラウンドを開放し続けています。 Amazonの投資には、Bedrock AIサービス上での新しい「ステートフルランタイム環境」、AWSコンピューティング支出の38億ドルから100億ドルへの拡大、少なくとも2GWのTrainium推論ハードウェア使用のコミットメント、およびAmazon消費者製品向けカスタムモデル構築が含まれます。Nvidiaは、Vera Rubinシステムで3GWの専用推論容量と2GWのトレーニングを提供し、正確な資金配分は未公開です。 これは、2025年3月に3000億ドル評価額で400億ドルを調達した以前のラウンド(当時最大のプライベート調達)に続くものです。Amazon CEOのAndy JassyはAIアプリとエージェント開発への協力の影響を強調し、Nvidia CEOのJensen Huangは1月にOpenAIへの大規模サポートを再確認しました。このイベントは2026年6月9日にボストン(MA)でTechCrunchによって報道されました。

2026/02/28 1:33

**NASA、アーテミス計画の全面的な見直しを発表:安全性への懸念と遅延が背景に**

## Japanese Translation: NASAは、アーテミス月面計画を再設計し、統合システムテストのために2027年に専用フライトを追加し、最初の有人着陸を2028年まで延期しました。この改訂により、将来のミッションは単一で低出力の上部段(実質的にExploration Upper Stage (EUS) を廃止)を中心に統合され、Block 1 SLS 構成が継続使用されます。これにより、複数のロケットバリエーションと高い打ち上げガントリーの必要性が排除されました。この改訂は、航空宇宙安全諮問委員会(Aerospace Safety Advisory Panel)の報告書で「過度にリスクがある」とされた元計画を受けており、アーテミス II の水素漏れやヘリウム充圧問題などの技術的障害に対応しています。Apollo 9 の軌道テスト手法を模倣することで、NASA は複雑さを削減しつつ信頼性を確保することを目指しています。 商業パートナーである SpaceX、Blue Origin、Boeing、ULA、および Lockheed Martin は改訂されたスケジュールを受け入れ、SLS ミッションの年次打ち上げペースを支えるようになりました。2027 年にアーテミス III が1つまたは両方のランダーとドッキングして統合テストを行い、その後の 2028 年(アーテミス IV と V)のフライトでは準備が整ったランダーを使用します。NASA は年次ペースを維持するために労働力と技術能力を再構築し、打ち上げリスクとコストを低減する計画です。 この変更は Isaacman の「軌道経済」ビジョンも推進し、空間運用からより多くの価値を引き出して持続可能な月面存在を支援し、永続的な税金負担に依存しない構造を実現します。全体として、新しいアーキテクチャはインフラストラクチャを合理化し、宇宙飛行サービスの新たな商業機会を開きつつ、NASA の長期的探査目標を維持しています。

Z80/ZX Spectrum エミュレータを Claude Code で実装する Z80 アーキテクチャと ZX Spectrum のハードウェア仕様に従い、Claude Code を用いてエミュレータを構築します。以下は主要なステップです。 1. **CPU コアの作成** - Z80 の命令セット(約 158 命令)をすべて実装し、オペコードデコードロジックと実行パスを設計します。 - レジスタ (A, B, C, D, E, H, L)、プログラムカウンタ PC、インデックスレジスタ IX/ IY、フラグ R、I、IXH/L などを正確に再現します。 2. **メモリマッピング** - ZX Spectrum の RAM(通常 48 KiB)と ROM(16 KiB)領域を定義し、IO ポートへのアクセスを模倣。 - `0x4000–0x7FFF` を RAM として扱い、`0x0000–0x3FFF` は ROM へマップします。 3. **ビデオ/グラフィックス** - スペクトラムの画面は 256×192 ピクセルで、4 色(黒・青・赤・黄色)を持ちます。 - ビデオメモリ `0x5800–0x5AFF` を読み取り、ピクセルバイト単位でスクリーンに描画します。 4. **音声出力** - サウンドチャンネルは 1 チャネル(PCM)で、波形データを RAM の `0x6000–0x67FF` から取得。 - 音声バッファリングとサンプリングレート(通常 8 kHz)を実装します。 5. **IO デバイス** - キーボードは 8×16 行のマトリクスで、ポート `0xFE` を介して読み取ります。 - マウスやフロッピーディスクなどオプションデバイスも必要に応じて追加。 6. **Claude Code の活用** - 既存の Z80 エミュレータライブラリ(例: `z80emu.c`)をインポートし、エンジン部分は Claude Code でラップ。 - GUI フロントエンドは Electron や Qt を利用して、実行画面とデバッグツールを提供。 7. **テスト & デバッグ** - スペクトラム用の標準ソフトウェア(例: BASIC、ゲーム ROM)で動作確認。 - シミュレータの正確性はクロック周期単位で検証し、必要に応じてハードウェア特有のタイミングを微調整。 8. **最適化** - JIT コンパイル(例: `llvm`)や SIMD 命令で実行速度向上。 - メモリアクセスはキャッシュライン単位で整理し、レイテンシ低減。 これらを順序立てて実装すれば、高い互換性とスムーズな動作を持つ Z80/ZX Spectrum エミュレータが完成します。 | そっか~ニュース