6502tinymachines

文書が主張することを確かめる

M5 の報告。作業の後に書かれた。

走行スタンプ: 2026-09-01、このリポジトリの六番目のコミット、下に記録した python3 tools/check-self-counts.py の走行。ラダーの最後の節目だ: ここでは新しいものを何も作らない。すでにあるものを数え、その数え方自身を検査する。

スキャナ

tools/check-self-counts.py: 文書の中の荷重を受けている数字はすべて、述べられた個数に当たらなければならないパターンで捕まえ、取り直した測定と比べる。実測の出どころは、fractions で再計算した厳密な有理数、再走行させた書き写しの検査、読み直したデータファイル、それを所有するクレートから読んだ凍結済みの比較定数、数え上げたワークスペースの構成員、実行してその合計を読み取った cargo のテスト群とその MUTATE=1 の走行 (--fast はこの二行を飛ばす。REQUIRE_ALL=1 は飛ばしを失敗にする)。意図的に覆っていないものはヘッダに書いてある: スループットと差分エンベロープの数値だ。どちらも N 回中の最良を走行スタンプ付きで記録したもので、ここで走り直せば、より雑音の多い数字に置き換わってしまう。

スキャナは最初の走行で元を取った: M2 のテストと報告に載っていた棒の列は、黄色の棒に 68.9 IRE を持っていたが、導出は 68.97 を与える。小数一桁で正しい値は 69.0 であり、M2 が理由付けした 1 IRE の波形許容がその打ち間違いを吸収してしまっていた。両方の箇所で直し、スキャナはいまこの列を導出に対して 0.06 IRE で押さえている。スキャナはまた、NOTICE.md が「ハッシュでピン留め」と主張しながらハッシュを引用していないことも見つけた。ハッシュはいま引用されている。

最終走行: 56 件の主張を検証、失敗 0、飛ばし 0 (遅い行は 56 テストの緑と 33 の MUTATE の赤を測り、README と M4 の報告に一致した)。

データの出どころごとのライセンス

NOTICE.md が出どころごとの登録簿で、データファイルと取り込んだオラクルのそれぞれに一項目、その条項とピン留めしたハッシュが付く。各データファイルは自分の出自ヘッダも持っている。記録した判断: 注記付きの登録簿を一つ持つことは、スタブを並べたディレクトリよりも仕様の「データの出どころごとにライセンスファイル」をよく満たす。登録簿は、査読する人がすでに見る唯一の場所だからだ。

既知のダイバージェンス

docs/divergences.md にまとめた: 大きさ付きの blargg の表、ST 170M の簡略化、nesdev の差動位相を模型化していないこと、そして内部で意図して選んだこと。それぞれが、それを測ったか記録した報告やモジュールの文書を指している。

仕様、手渡し返す

docs/spec-v0_3-draft.md: 確認が取れなかった三つの訂正 (フレーム全体のレート、ラング D、帯域幅の条項)、実装が必要とした追加、v0.2 の未解決の問いがすべて解決したこと、そしてディレクターへの新しい三つの問い。最初の問いは、実録の検査が待っているハードウェアについてだ。

ラダー、閉じる

M0 から M5 まで、六コミット、一日。すべての剰余を証明したグリッドの規約。ページ自身の波形に押さえた NES 符号化器。食い違いのすべてに原因を帰した、blargg に対するラング A。主要規格自身の条項に対する RGB 符号化器。四つの分離ラングのうち、一つは名指しで拒み、一つは仕様に照らして訂正した。模型であることについて正直な CRT 模型。自分の位相を稼いだ捕捉ソース。そしてこの走査。最後に開いたまま残り、すべて記録されたもの: 実録の記録 (ハードウェア)、アーケードのシェル (併走するプロジェクト)、実時間のスループット (名指しした間引きと SIMD のてこ)、そして v0.3 の批准。

ビルド時に ntsc-crt/docs/m5-report.md から取り込まれる。写しはリポジトリの一つだけだ。報告は独自の作業用の言葉をいくつか使う: 報告書で使われる言葉。