{
  "schemaVersion": 1,
  "challenge": "tts-v1",
  "entryId": "grok-4-7",
  "sourceSha256": "aa8bd655e348fa8821f3a6bccf4cdf20c8ff223c5ea2afdd161ecef46a7cc032",
  "metadata": {
    "schemaVersion": 1,
    "challenge": "tts-v1",
    "id": "grok-4-7",
    "title": "Wirethroat formant talker",
    "author": "Grok 4.7",
    "model": "grok-4.7 (GitHub Copilot, default reasoning)",
    "agent": "GitHub Copilot coding agent in an isolated worktree",
    "baseline": "bd795bee12c5fb73a7de9e733e19e0aad95fb57c",
    "description": "Original English letter-to-sound rules and a two-formant AY voice. Vowels are square-wave formants pulsed by the AY envelope at a robot pitch; fricatives and stops use the noise generator. A text UI accepts up to 120 characters and speaks them through TTS_SPEAK.",
    "assistance": "Launched from the user's chat after they pointed at the published challenge page. No other model wrote the original engine or generated voice assets. After candidate 196fdd2, read-only reviews from GPT 5.6 Sol and Gemini 3.1 Pro. GPT noted ABI returns did not force upper ROM visible. Gemini approved the candidate and noted a stale UI DONE flag after invalid input. Both were fixed in a later commit. The reviewers did not write code.",
    "license": "MIT for new source and original data. AY bus helpers adapted from codegen/programs/groovebox.s (Eric Badger / 3RIC, MIT).",
    "memory": "Load/entry $0800. Code, rules, phoneme table, TTS_INPUT (122 bytes), and scratch stay in always-mapped RAM and end before $1C00. TTS_INIT does not touch $C006/$C007. Every ABI return reads $C082 so upper ROM is visible and language-card writes are off. Zero page is not used. $0300-$031F is left for the caller trampoline.",
    "limitations": "Best-effort English rules, not a dictionary. Soft G, numbers, and many irregular spellings are weak or rejected. No human listening pass and no physical Mockingboard test in this run. Checker PCM shows energy, not intelligibility."
  },
  "provenance": {
    "baseline": "bd795bee12c5fb73a7de9e733e19e0aad95fb57c",
    "gitRevision": "5e6960a6c82774ff53ea74291d6999e212b35221",
    "worktreeDirty": true
  },
  "createdAt": "2026-10-05T20:34:36.571Z",
  "ok": true,
  "status": "passed",
  "mode": "runtime",
  "scope": {
    "completeConformance": false,
    "automated": [
      "raw image load; exact caller-return breakpoint and stack balance",
      "bounded guest-call ABI, preserved strings, upper ROM mapping",
      "mixed stereo PCM activity and settled post-return silence"
    ],
    "manualUnverified": [
      "Intelligibility and pronunciation require human listening; non-speech tones can pass PCM checks.",
      "PCM is the mixed VM output; AY-only sound-source compliance is NOT established.",
      "Interactive typing/editing, input UI, and BRK return to a usable monitor are unverified.",
      "ROM/SD physical loading, bank initialization on the physical loader, and real hardware are unverified.",
      "Entrant metadata/provenance claims are self-reported, not independently verified."
    ],
    "entrantScriptsExecuted": false
  },
  "program": {
    "org": 2048,
    "bytes": 5047,
    "endExclusive": 7095,
    "symbols": {
      "TTS_INIT": 2051,
      "TTS_SPEAK": 2062,
      "TTS_INPUT": 6424
    }
  },
  "runtime": {
    "engine": "unmodified WASM via harness.boot",
    "clockHz": 1573437.5,
    "sampleRate": 48000,
    "channels": 2,
    "wavEncoding": "PCM16LE",
    "thresholds": {
      "speechAcRms": 0.0001,
      "speechPeak": 0.001,
      "minimumSpeechFrames": 48,
      "silenceRms": 0.0001,
      "silencePeak": 0.0005
    },
    "budgets": {
      "short": 3146875,
      "speech": 141609375,
      "cancellation": 1573437,
      "injectAfter": 78671,
      "batch": 8192,
      "settle": 393359,
      "silence": 236015
    },
    "testOverrides": false
  },
  "calls": [
    {
      "name": "init",
      "status": "passed",
      "routine": "TTS_INIT",
      "input": null,
      "expectedA": null,
      "cycles": 844,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "844 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 0.0005364051638530288,
      "audio": {
        "frames": 25,
        "seconds": 0.0005208333333333333,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 1,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 3146875,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            },
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "empty",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "",
      "expectedA": 0,
      "cycles": 873,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "873 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "no-speech-pcm",
          "ok": true,
          "detail": "empty/space-only/invalid calls must not emit an audible signal"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 0.0005548361469712016,
      "audio": {
        "frames": 27,
        "seconds": 0.0005625,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 3146875,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            },
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "spaces",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "     ",
      "expectedA": 0,
      "cycles": 1223,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "1223 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "no-speech-pcm",
          "ok": true,
          "detail": "empty/space-only/invalid calls must not emit an audible signal"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 0.000777279046673287,
      "audio": {
        "frames": 37,
        "seconds": 0.0007708333333333333,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 3146875,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            },
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "overlength-121",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
      "expectedA": 2,
      "cycles": 10022,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "10022 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=2; got 2"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "no-speech-pcm",
          "ok": true,
          "detail": "empty/space-only/invalid calls must not emit an audible signal"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 0.006369493545183714,
      "audio": {
        "frames": 306,
        "seconds": 0.006375,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 2,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 33,
        "waiting": false
      },
      "effectiveDeadlineCycles": 3146875,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            },
            {
              "mean": 0,
              "peak": 0,
              "rms": 0,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-1-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "HELLO. THIS COMPUTER CAN TALK.",
      "expectedA": 0,
      "cycles": 5126912,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5126912 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 3.2584147765640514,
      "audio": {
        "frames": 156404,
        "seconds": 3.2584166666666667,
        "channels": [
          {
            "mean": -4.73267472162512e-7,
            "peak": 0.37138304114341736,
            "rms": 0.07280160988919336,
            "acRms": 0.07280160988765505
          },
          {
            "mean": -4.96974102459376e-7,
            "peak": 0.3716854751110077,
            "rms": 0.07276194499449999,
            "acRms": 0.0727619449928028
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.0000010254327662551077,
              "peak": 0.0000010254327662551077,
              "rms": 0.0000010254327662551801,
              "acRms": 3.852688255314535e-13
            },
            {
              "mean": -0.000001090997898245405,
              "peak": 0.000001090997898245405,
              "rms": 0.0000010909978982454733,
              "acRms": 3.8605428776481074e-13
            }
          ]
        }
      }
    },
    {
      "name": "sentence-2-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 7037626,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7037626 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 4.4727712413108245,
      "audio": {
        "frames": 214693,
        "seconds": 4.472770833333334,
        "channels": [
          {
            "mean": -0.0000012558176260399894,
            "peak": 0.37364399433135986,
            "rms": 0.07673362358794351,
            "acRms": 0.07673362357766719
          },
          {
            "mean": -0.000001197909807316016,
            "peak": 0.37364038825035095,
            "rms": 0.076723098189265,
            "acRms": 0.07672309817991327
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.0000020115869574510725,
              "peak": 0.0000020115869574510725,
              "rms": 0.0000020115869574511975,
              "acRms": 7.088353819051421e-13
            },
            {
              "mean": -0.0000020156846858299104,
              "peak": 0.0000020156846858299104,
              "rms": 0.000002015684685830036,
              "acRms": 7.105427357601002e-13
            }
          ]
        }
      }
    },
    {
      "name": "sentence-3-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.",
      "expectedA": 0,
      "cycles": 7881580,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7881580 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 5.009147169811321,
      "audio": {
        "frames": 240439,
        "seconds": 5.009145833333333,
        "channels": [
          {
            "mean": -0.0000023098188089135106,
            "peak": 0.37319302558898926,
            "rms": 0.07492731507484814,
            "acRms": 0.07492731503924521
          },
          {
            "mean": -0.00000237358871994969,
            "peak": 0.37336018681526184,
            "rms": 0.07492978664070034,
            "acRms": 0.07492978660310566
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.0000021758023649454117,
              "peak": 0.0000021758023649454117,
              "rms": 0.0000021758023649454117,
              "acRms": 0
            },
            {
              "mean": -0.000002289051280968124,
              "peak": 0.000002289051280968124,
              "rms": 0.0000022890512809681478,
              "acRms": 3.30230421884103e-13
            }
          ]
        }
      }
    },
    {
      "name": "sentence-4-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "PLEASE TYPE A SENTENCE AND PRESS ENTER.",
      "expectedA": 0,
      "cycles": 6184544,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "6184544 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 3.930594001986097,
      "audio": {
        "frames": 188669,
        "seconds": 3.9306041666666665,
        "channels": [
          {
            "mean": -0.0000026749851284985675,
            "peak": 0.37206658720970154,
            "rms": 0.07243693025624666,
            "acRms": 0.0724369302068551
          },
          {
            "mean": -0.000002907648626842639,
            "peak": 0.3724557161331177,
            "rms": 0.07243477005855511,
            "acRms": 0.07243477000019626
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.0000031736215078126406,
              "peak": 0.0000031736215078126406,
              "rms": 0.0000031736215078125635,
              "acRms": 0
            },
            {
              "mean": -0.0000034016090921795694,
              "peak": 0.0000034016090921795694,
              "rms": 0.0000034016090921793966,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-1-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "HELLO. THIS COMPUTER CAN TALK.",
      "expectedA": 0,
      "cycles": 5126912,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5126912 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 3.2584147765640514,
      "audio": {
        "frames": 156404,
        "seconds": 3.2584166666666667,
        "channels": [
          {
            "mean": -0.0000034713758548235293,
            "peak": 0.3718557059764862,
            "rms": 0.0726603264151803,
            "acRms": 0.07266032633225714
          },
          {
            "mean": -0.000003644460373668894,
            "peak": 0.37239447236061096,
            "rms": 0.07261368743892861,
            "acRms": 0.0726136873474714
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000003862613993987907,
              "peak": 0.000003862613993987907,
              "rms": 0.000003862613993988189,
              "acRms": 1.4757409855686967e-12
            },
            {
              "mean": -0.000004017585979454452,
              "peak": 0.000004017585979454452,
              "rms": 0.000004017585979454701,
              "acRms": 1.4153897152469577e-12
            }
          ]
        }
      }
    },
    {
      "name": "sentence-2-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 7037626,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7037626 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 4.4727712413108245,
      "audio": {
        "frames": 214693,
        "seconds": 4.472770833333334,
        "channels": [
          {
            "mean": -0.000004487495826818832,
            "peak": 0.3976510763168335,
            "rms": 0.07679902261245537,
            "acRms": 0.07679902248134941
          },
          {
            "mean": -0.000004650667721258335,
            "peak": 0.39765092730522156,
            "rms": 0.0768768917602699,
            "acRms": 0.07687689161959883
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000005159433840162819,
              "peak": 0.000005159433840162819,
              "rms": 0.000005159433840162634,
              "acRms": 0
            },
            {
              "mean": -0.00000534597802470671,
              "peak": 0.00000534597802470671,
              "rms": 0.000005345978024706555,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-3-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.",
      "expectedA": 0,
      "cycles": 7881580,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7881580 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 5.009147169811321,
      "audio": {
        "frames": 240439,
        "seconds": 5.009145833333333,
        "channels": [
          {
            "mean": -0.000005232836049451515,
            "peak": 0.3744265139102936,
            "rms": 0.07507148048222906,
            "acRms": 0.07507148029985239
          },
          {
            "mean": -0.000005463671612514909,
            "peak": 0.3745562732219696,
            "rms": 0.07509056259069437,
            "acRms": 0.075090562391923
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000005096429958939552,
              "peak": 0.000005096429958939552,
              "rms": 0.000005096429958939552,
              "acRms": 0
            },
            {
              "mean": -0.0000053944531828165054,
              "peak": 0.0000053944531828165054,
              "rms": 0.0000053944531828165054,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-4-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "PLEASE TYPE A SENTENCE AND PRESS ENTER.",
      "expectedA": 0,
      "cycles": 6184544,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "6184544 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 3.930594001986097,
      "audio": {
        "frames": 188668,
        "seconds": 3.9305833333333333,
        "channels": [
          {
            "mean": -0.00000567328798146016,
            "peak": 0.374909371137619,
            "rms": 0.07233089518805776,
            "acRms": 0.07233089496556504
          },
          {
            "mean": -0.000005774405480413351,
            "peak": 0.3752460181713104,
            "rms": 0.07237477844793001,
            "acRms": 0.0723747782175752
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000006280746219999855,
              "peak": 0.000006280746219999855,
              "rms": 0.000006280746219999533,
              "acRms": 0
            },
            {
              "mean": -0.000006366986781358719,
              "peak": 0.000006366986781358719,
              "rms": 0.000006366986781358719,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "lowercase",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "hello. this computer can talk.",
      "expectedA": 0,
      "cycles": 5127320,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5127320 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 3.25867408142999,
      "audio": {
        "frames": 156417,
        "seconds": 3.2586875,
        "channels": [
          {
            "mean": -0.000006953132680203208,
            "peak": 0.3732847571372986,
            "rms": 0.07290283119130495,
            "acRms": 0.07290283085972624
          },
          {
            "mean": -0.000006984988233106748,
            "peak": 0.37288570404052734,
            "rms": 0.07287315979664236,
            "acRms": 0.0728731594618822
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000007522339274146361,
              "peak": 0.000007522339274146361,
              "rms": 0.000007522339274145822,
              "acRms": 0
            },
            {
              "mean": -0.000007564062343590194,
              "peak": 0.000007564062343590194,
              "rms": 0.000007564062343589835,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "maximum-120",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "HELLO. THIS COMPUTER CAN TALK. HELLO. THIS COMPUTER CAN TALK. HELLO. THIS COMPUTER CAN TALK. HELLO. THIS COMPUTER CAN TA",
      "expectedA": 0,
      "cycles": 20140206,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "20140206 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 12.800130923535253,
      "audio": {
        "frames": 614406,
        "seconds": 12.800125,
        "channels": [
          {
            "mean": 0.000016479373737676775,
            "peak": 0.3745923638343811,
            "rms": 0.07325034716348423,
            "acRms": 0.0732503453097745
          },
          {
            "mean": 0.00001672528196238175,
            "peak": 0.374766081571579,
            "rms": 0.0732777296370553,
            "acRms": 0.07327772772832354
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000011621511475823354,
              "peak": 0.000011621511475823354,
              "rms": 0.000011621511475823086,
              "acRms": 0
            },
            {
              "mean": -0.000011660627023957204,
              "peak": 0.000011660627023957204,
              "rms": 0.000011660627023956938,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "escape-cancellation",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. THE QUICK BROWN FOX JUMPS OVER",
      "expectedA": 1,
      "cycles": 848426,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": 78674,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "848426 cycles"
        },
        {
          "name": "escape-injected-while-running",
          "ok": true,
          "detail": "Escape at cycle 78674"
        },
        {
          "name": "cancellation-deadline",
          "ok": true,
          "detail": "769752 cycles after Escape (limit 1573437)"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=1; got 1"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 0.5392181132075472,
      "audio": {
        "frames": 25882,
        "seconds": 0.5392083333333333,
        "channels": [
          {
            "mean": 0.000030721532475625197,
            "peak": 0.1268051415681839,
            "rms": 0.002346800494597776,
            "acRms": 0.0023465994010241106
          },
          {
            "mean": 0.00003085802972362578,
            "peak": 0.1268051117658615,
            "rms": 0.0023467140825840045,
            "acRms": 0.002346511190554961
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 1,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 33,
        "waiting": false
      },
      "effectiveDeadlineCycles": 1652111,
      "cancellationCycles": 769752,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7201,
          "seconds": 0.15002083333333333,
          "channels": [
            {
              "mean": -0.00001162078115157783,
              "peak": 0.00001162078115157783,
              "rms": 0.00001162078115157783,
              "acRms": 0
            },
            {
              "mean": -0.00001165989669971168,
              "peak": 0.00001165989669971168,
              "rms": 0.00001165989669971168,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "after-cancellation",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 7037626,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7037626 cycles"
        },
        {
          "name": "balanced-stack",
          "ok": true,
          "detail": "SP 246 -> 246"
        },
        {
          "name": "return-code",
          "ok": true,
          "detail": "expected A=0; got 0"
        },
        {
          "name": "upper-rom-visible",
          "ok": true,
          "detail": "compare $D000/$E000/$F000/$FFFF read mappings with boot ROM mappings"
        },
        {
          "name": "caller-preserved",
          "ok": true,
          "detail": "$0300..$031F is reserved"
        },
        {
          "name": "input-preserved",
          "ok": true,
          "detail": "all supplied bytes including NUL must remain unchanged"
        },
        {
          "name": "pcm-activity",
          "ok": true,
          "detail": "mixed PCM activity only; not intelligibility or AY-only proof"
        },
        {
          "name": "post-return-silence",
          "ok": true,
          "detail": "measured after DC settling; caller spins without muting hardware"
        }
      ],
      "seconds": 4.4727712413108245,
      "audio": {
        "frames": 214693,
        "seconds": 4.472770833333334,
        "channels": [
          {
            "mean": -0.00001246280349172288,
            "peak": 0.39764463901519775,
            "rms": 0.07673727586101184,
            "acRms": 0.07673727484897779
          },
          {
            "mean": -0.000012630711630474955,
            "peak": 0.39764460921287537,
            "rms": 0.07676170238312104,
            "acRms": 0.07676170134396432
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 34,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000013446063348965254,
              "peak": 0.000013446063348965254,
              "rms": 0.000013446063348964617,
              "acRms": 0
            },
            {
              "mean": -0.000013701059287996031,
              "peak": 0.000013701059287996031,
              "rms": 0.000013701059287996597,
              "acRms": 3.93494435681459e-12
            }
          ]
        }
      }
    }
  ],
  "errors": [],
  "artifacts": [
    {
      "file": "tts.prg",
      "kind": "program"
    },
    {
      "file": "sentence-1.wav",
      "kind": "audio",
      "text": "HELLO. THIS COMPUTER CAN TALK."
    },
    {
      "file": "sentence-2.wav",
      "kind": "audio",
      "text": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS."
    },
    {
      "file": "sentence-3.wav",
      "kind": "audio",
      "text": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG."
    },
    {
      "file": "sentence-4.wav",
      "kind": "audio",
      "text": "PLEASE TYPE A SENTENCE AND PRESS ENTER."
    }
  ]
}
