6502tinymachines

チップたちが共有する規約

N0 報告、作業の後に書かれたもの。

走行スタンプ: 2026-09-02、rustc 1.97.1。コンソールのスケッチ (v0.2、nes リポジトリができるまでは 6502 リポジトリの中にある) は N0 を最初に置いた。 nes-bus を独立したリポジトリとして立て、どのチップクレートも話すフレーム型を そこに置き、ゲートはコンパイル検査ではなくゴールデン検査にする、と。

何が閉じたか

  • クレート: FrameParity、NES のフレーム定数と DotFrame (ntsc-crt から 移し、あちらは再エクスポートしている)、PpuPins、CpuPins と二つの 40 ピン DIP 表、CartEdge と 72 ピンの表、NROM 付きの Cartridge トレイト、 AudioSamples。依存は無い。七つのテストがこれを自分自身に押さえる (符号化は 値で留め、表は閉じていて位置も欠けが無いこと、NROM の CIRAM ピンが半田 オプションどおりであること、/RD のミューテーションがちょうど一本のピンだけを 反転させること)。
  • ntsc-crt が採用 (あちらの 051ef9d、ピン留めしたタグ v0.2.2): 移した型は 再エクスポートになり、それ以外は何も変わらなかった。あちらのスイート全体 (58 テスト) と 54 件のセルフカウントの主張は緑のまま。
  • 2c02 が採用 (あちらの 58dc408): DotFrame はここから取り込むようになり、 ハーネスの CHR バスの給仕は、半ステップごとに抽出した PpuPins のフレームを 通してチップを読む。P1 のノードゴールデン (3,624 状態、レジスタプログラム全体と 3,000 半ステップの描画) は REQUIRE_GOLDEN_P1=1 でフレームを通して緑に再生し、 ワークスペースの五つのテストはすべて通り、ゴールデンは P1 を閉じた時点と バイト単位で同一だ。
  • ミューテーションのゲート、両方向: MUTATE=rd は CHR の給仕を PpuPins::mutated_rd_for_proof (規約が一本のピンの極性について嘘をつく) 経由に し、P1 の再生は赤になる。MUTATE=1 (CHR のバイトが 1 ビットずれる) はいまも _db0、状態 623 で赤になる。P1 報告が刻印したのと同じ差分であり、書き換えた 経路が古い証明を生かしたままにしていることの証拠だ。

途中で決めたこと

  • アナログのピンは Option<f32> (vout、ad1、ad2): デジタルの抽出では 標本化できないし、そこに数字を詰めれば偽の読みをフレームに洗い込むことになる。 None は標本化していないという意味で、それを必要とする消費側は None を 名指しで拒まなければならない。消費側が一つも存在しないうちに変えた (v0.1.0 から v0.1.1)。
  • 一つのビルドに規約は一版だけ。 どのリポジトリも同じ nes-bus のタグに ピン留めする。同じクレートの git ソースが二つあれば、一つのビルドに互換性の 無い DotFrame 型が二つ立つからだ。上げる順番は、ここでタグを打ち、ntsc-crt を 上げてタグを打ち、2c02 の二つのピンを同時に上げる。
  • フレームは瞬間である。 構造体の中に半ステップの計数器は無い。トレースの 形式と比較のドライバは、v6502-pins が自分のフレームを Trace で包むのと 同じように、各チップのリポジトリ自身のゴールデン機構のものだ。

書き下ろし済み、ゲートを待っているもの

  • CpuPins と CartEdge にはまだ消費側が無い。最初のゲートは N1 (2A03 のピン ロックステップ) と N4/N5 (糊とコンソール) だ。それまで DIP とエッジの表は nesdev wiki からの主張で、ソースに日付が入っている。
  • 2c02 のハーネスにある ad/a_hi の抽出は、内部のアドレスバスをパッドから 見た姿として読む。リファレンス自身の handleChrBus に忠実だ。AD0..7 のパッド 多重 (アドレス相とデータ相) の全体は N5 でのコンソールの問題であり、ハーネスは それをやっている箇所でそう述べている。
  • スケッチはマイルストーンごとに check-self-counts.py の行を求めているが、この リポジトリはまだその道具を持っていない。上の主張は、それが記述する走行から テスト数を引いており、道具はリポジトリがずれるだけの散文を持ったときに来る。

ビルド時に nes-bus/docs/n0-report.md から取り込まれる。リポジトリが唯一の写しだ。報告書は独自の作業用語をいくつか使っている: 報告書で使われる言葉。