{
  "schemaVersion": 1,
  "challenge": "tts-v1",
  "entryId": "gemini-38flash-v1",
  "sourceSha256": "52054137bbd8c2b9d3baa746d0611e6469c0a8bdbefd02fac60a6f328b1ed1bc",
  "metadata": {
    "schemaVersion": 1,
    "challenge": "tts-v1",
    "id": "gemini-38flash-v1",
    "title": "Gemini 3.8 Flash 2-Formant Speech Synthesizer",
    "author": "Gemini 3.8 Flash (GitHub Copilot)",
    "model": "gemini-3.8-flash",
    "agent": "GitHub Copilot CLI Autopilot",
    "baseline": "bd795bee12c5fb73a7de9e733e19e0aad95fb57c",
    "description": "An original 65C02 English text-to-speech engine targeting 3RIC's slot-4 dual AY-3-8910 Mockingboard. Implements an English Grapheme-to-Phoneme (G2P) rule engine with silent-E long vowel handling, consonant digraphs, vowel teams, soft/hard C and G, and an irregular word exception dictionary. Synthesizes 42 distinct phonemes across three acoustic classes (voiced vowels/glides/nasals using F1 and F2 formant tones modulated by a hardware sawtooth envelope for glottal pulses, unvoiced fricatives/plosives using shaped pseudo-random noise, and voiced fricatives/stops combining voice bar tones with noise). Supports interactive keyboard typing, immediate ESC cancellation during speech playback, and the standard TTS_INIT, TTS_SPEAK, and TTS_INPUT ABI.",
    "assistance": "Autonomous development by Gemini 3.8 Flash in Copilot CLI autopilot mode. No human assistance or external code reuse.",
    "license": "MIT",
    "memory": "Code and static data: $0800..$1468 (3177 bytes). Buffers in always-mapped RAM: PHONEME_BUF at $1469..$1568 (256 bytes), WORD_BUF at $1569..$1588 (32 bytes), TTS_INPUT at $1589..$1602 (122 bytes). Total binary size: 3,587 bytes. Zero-page workspace: $E0..$EF (16 bytes). Hardware MMIO: Slot-4 Mockingboard Left VIA at $C400..$C40F, Right VIA at $C480..$C48F; Apple II keyboard at $C000/$C010; video soft switches at $C051/$C052/$C054; ROM routines at $FC58 (HOME), $FDED (COUT), $FD8E (CROUT), $FD0C (RDKEY), $FF3A (BELL).",
    "limitations": "Tested strictly in the cycle-accurate 3RIC WASM / Node headless environment; physical Mockingboard silicon has not been tested. Speech has a monotone robotic pitch (F0 fixed at ~125 Hz) without complex prosodic intonation. The G2P rule system handles regular English phonics, common digraphs, silent-E patterns, and 30 irregular words, but arbitrary untranscribed foreign loanwords or irregular names fall back to default phonetic rules. Formant synthesis uses 2 resonant poles (F1 and F2) plus F0 voice bar rather than full 4-formant cascades."
  },
  "provenance": {
    "baseline": "bd795bee12c5fb73a7de9e733e19e0aad95fb57c",
    "gitRevision": "5e6960a6c82774ff53ea74291d6999e212b35221",
    "worktreeDirty": true
  },
  "createdAt": "2026-10-05T20:34:23.842Z",
  "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": 3587,
    "endExclusive": 5635,
    "symbols": {
      "TTS_INIT": 2051,
      "TTS_SPEAK": 2069,
      "TTS_INPUT": 5513
    }
  },
  "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": 921,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "921 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.0005853426017874876,
      "audio": {
        "frames": 28,
        "seconds": 0.0005833333333333334,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 255,
        "x": 128,
        "y": 7,
        "sp": 246,
        "status": 48,
        "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": 169,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "169 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.00010740814299900695,
      "audio": {
        "frames": 5,
        "seconds": 0.00010416666666666667,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 21,
        "y": 0,
        "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": 344,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "344 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.00021862959285004965,
      "audio": {
        "frames": 10,
        "seconds": 0.00020833333333333335,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 21,
        "y": 5,
        "sp": 246,
        "status": 35,
        "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": 2088,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "2088 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.001327030784508441,
      "audio": {
        "frames": 64,
        "seconds": 0.0013333333333333333,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 2,
        "x": 21,
        "y": 121,
        "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": 6748972,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "6748972 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.2893168619662365,
      "audio": {
        "frames": 205887,
        "seconds": 4.2893125,
        "channels": [
          {
            "mean": 1.0988047171756758e-7,
            "peak": 0.42728444933891296,
            "rms": 0.05840916337890146,
            "acRms": 0.058409163378798104
          },
          {
            "mean": -9.015974728858569e-7,
            "peak": 0.42765435576438904,
            "rms": 0.05894045994183424,
            "acRms": 0.05894045993493849
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 2.755317893843312e-7,
              "peak": 2.755317893843312e-7,
              "rms": 2.755317893843348e-7,
              "acRms": 4.46569184830158e-14
            },
            {
              "mean": -0.0000012384261935949326,
              "peak": 0.0000012384261935949326,
              "rms": 0.0000012384261935949326,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-2-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 8313074,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "8313074 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.2833836742800395,
      "audio": {
        "frames": 253603,
        "seconds": 5.2833958333333335,
        "channels": [
          {
            "mean": -1.144153750679713e-7,
            "peak": 0.4375371038913727,
            "rms": 0.06514178194056924,
            "acRms": 0.06514178194046877
          },
          {
            "mean": -6.732709402756248e-8,
            "peak": 0.4375624656677246,
            "rms": 0.06529409940613173,
            "acRms": 0.06529409940609703
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -3.086868787249841e-7,
              "peak": 3.086868787249841e-7,
              "rms": 3.086868787249799e-7,
              "acRms": 0
            },
            {
              "mean": -2.8037467814101547e-7,
              "peak": 2.8037467814101547e-7,
              "rms": 2.8037467814103235e-7,
              "acRms": 9.729507111180989e-14
            }
          ]
        }
      }
    },
    {
      "name": "sentence-3-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.",
      "expectedA": 0,
      "cycles": 8967440,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "8967440 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.69926673286991,
      "audio": {
        "frames": 273565,
        "seconds": 5.699270833333333,
        "channels": [
          {
            "mean": -0.0000031669036553231184,
            "peak": 0.43865281343460083,
            "rms": 0.061315209318354796,
            "acRms": 0.06131520923657021
          },
          {
            "mean": -0.000002876459976724305,
            "peak": 0.4386511743068695,
            "rms": 0.060927227732304495,
            "acRms": 0.06092722766440364
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000004591187462210655,
              "peak": 0.000004591187462210655,
              "rms": 0.000004591187462210655,
              "acRms": 0
            },
            {
              "mean": -0.000003792485358644626,
              "peak": 0.000003792485358644626,
              "rms": 0.0000037924853586443504,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-4-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "PLEASE TYPE A SENTENCE AND PRESS ENTER.",
      "expectedA": 0,
      "cycles": 7578173,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7578173 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.816316504468719,
      "audio": {
        "frames": 231183,
        "seconds": 4.8163125,
        "channels": [
          {
            "mean": -6.322483371701181e-7,
            "peak": 0.4387306272983551,
            "rms": 0.06344293219473152,
            "acRms": 0.06344293219158115
          },
          {
            "mean": -2.571329334299107e-7,
            "peak": 0.43873080611228943,
            "rms": 0.06385864524584137,
            "acRms": 0.06385864524532368
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.0000014886390999890864,
              "peak": 0.0000014886390999890864,
              "rms": 0.0000014886390999890864,
              "acRms": 0
            },
            {
              "mean": -6.404341661436774e-7,
              "peak": 6.404341661436774e-7,
              "rms": 6.404341661436552e-7,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-1-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "HELLO. THIS COMPUTER CAN TALK.",
      "expectedA": 0,
      "cycles": 6748972,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "6748972 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.2893168619662365,
      "audio": {
        "frames": 205887,
        "seconds": 4.2893125,
        "channels": [
          {
            "mean": -1.5627563792768978e-8,
            "peak": 0.4245591163635254,
            "rms": 0.058296505498655234,
            "acRms": 0.05829650549865314
          },
          {
            "mean": -7.60040110411136e-7,
            "peak": 0.42629170417785645,
            "rms": 0.05897729142622402,
            "acRms": 0.058977291421326704
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 3.7113206730055026e-8,
              "peak": 3.7113206730055026e-8,
              "rms": 3.711320673005708e-8,
              "acRms": 1.233896894832203e-14
            },
            {
              "mean": -8.629169201412878e-7,
              "peak": 8.629169201412878e-7,
              "rms": 8.629169201412443e-7,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-2-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 8313074,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "8313074 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.2833836742800395,
      "audio": {
        "frames": 253602,
        "seconds": 5.283375,
        "channels": [
          {
            "mean": -1.0334700617599806e-7,
            "peak": 0.4374952018260956,
            "rms": 0.06516318571732924,
            "acRms": 0.06516318571724729
          },
          {
            "mean": 3.982522182640936e-8,
            "peak": 0.43753743171691895,
            "rms": 0.0652990774506335,
            "acRms": 0.06529907745062136
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -3.101770005287108e-7,
              "peak": 3.101770005287108e-7,
              "rms": 3.101770005287268e-7,
              "acRms": 9.972942541209448e-14
            },
            {
              "mean": -9.709037840366364e-8,
              "peak": 9.709037840366364e-8,
              "rms": 9.709037840366364e-8,
              "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": 8967440,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "8967440 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.69926673286991,
      "audio": {
        "frames": 273565,
        "seconds": 5.699270833333333,
        "channels": [
          {
            "mean": -0.000003225230315997806,
            "peak": 0.4387349784374237,
            "rms": 0.06131195818983003,
            "acRms": 0.061311958105000654
          },
          {
            "mean": -0.0000027230482667092554,
            "peak": 0.4386514127254486,
            "rms": 0.060931514791056574,
            "acRms": 0.06093151473020964
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.000004640361566998763,
              "peak": 0.000004640361566998763,
              "rms": 0.000004640361566999029,
              "acRms": 1.5701547587165274e-12
            },
            {
              "mean": -0.0000035793987080978695,
              "peak": 0.0000035793987080978695,
              "rms": 0.000003579398708098049,
              "acRms": 1.1340226446498038e-12
            }
          ]
        }
      }
    },
    {
      "name": "sentence-4-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "PLEASE TYPE A SENTENCE AND PRESS ENTER.",
      "expectedA": 0,
      "cycles": 7578173,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "7578173 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.816316504468719,
      "audio": {
        "frames": 231184,
        "seconds": 4.816333333333334,
        "channels": [
          {
            "mean": -5.969547678684256e-7,
            "peak": 0.4387384355068207,
            "rms": 0.06338367519223766,
            "acRms": 0.06338367518942657
          },
          {
            "mean": -3.037743090225793e-7,
            "peak": 0.4387306869029999,
            "rms": 0.0638624914104066,
            "acRms": 0.06386249140968413
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -0.0000014418255886994302,
              "peak": 0.0000014418255886994302,
              "rms": 0.0000014418255886994302,
              "acRms": 0
            },
            {
              "mean": -6.199450695021369e-7,
              "peak": 6.199450695021369e-7,
              "rms": 6.199450695021195e-7,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "lowercase",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "hello. this computer can talk.",
      "expectedA": 0,
      "cycles": 6749428,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "6749428 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.289606673286991,
      "audio": {
        "frames": 205901,
        "seconds": 4.289604166666667,
        "channels": [
          {
            "mean": 7.680171104877156e-8,
            "peak": 0.42728444933891296,
            "rms": 0.05838509230679809,
            "acRms": 0.05838509230674758
          },
          {
            "mean": -8.014536279162183e-7,
            "peak": 0.42587047815322876,
            "rms": 0.058993291744296586,
            "acRms": 0.05899329173885251
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 2.755317893843312e-7,
              "peak": 2.755317893843312e-7,
              "rms": 2.755317893843348e-7,
              "acRms": 4.46569184830158e-14
            },
            {
              "mean": -9.761657793205814e-7,
              "peak": 9.761657793205814e-7,
              "rms": 9.761657793206402e-7,
              "acRms": 3.3927950614478626e-13
            }
          ]
        }
      }
    },
    {
      "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": 24405191,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "24405191 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": 15.510747010923536,
      "audio": {
        "frames": 744516,
        "seconds": 15.51075,
        "channels": [
          {
            "mean": 1.9963452102427574e-7,
            "peak": 0.42783647775650024,
            "rms": 0.06198925491079795,
            "acRms": 0.06198925491047649
          },
          {
            "mean": -0.000001178958318886368,
            "peak": 0.4275059700012207,
            "rms": 0.062115578067009805,
            "acRms": 0.06211557805582144
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 5.996204208713607e-7,
              "peak": 5.996204208713607e-7,
              "rms": 5.996204208713572e-7,
              "acRms": 0
            },
            {
              "mean": -7.424620207530097e-7,
              "peak": 7.424620207530097e-7,
              "rms": 7.424620207529977e-7,
              "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": 103475,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": 78672,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "103475 cycles"
        },
        {
          "name": "escape-injected-while-running",
          "ok": true,
          "detail": "Escape at cycle 78672"
        },
        {
          "name": "cancellation-deadline",
          "ok": true,
          "detail": "24803 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.06576365441906654,
      "audio": {
        "frames": 3156,
        "seconds": 0.06575,
        "channels": [
          {
            "mean": 0.0007215590282796757,
            "peak": 0.09799018502235413,
            "rms": 0.007404653628380736,
            "acRms": 0.007369412997315328
          },
          {
            "mean": 0.000791621306443449,
            "peak": 0.09799018502235413,
            "rms": 0.008030419221268197,
            "acRms": 0.007991305811724294
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 1,
        "x": 30,
        "y": 7,
        "sp": 246,
        "status": 33,
        "waiting": false
      },
      "effectiveDeadlineCycles": 1652109,
      "cancellationCycles": 24803,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 2.6426278942892623e-9,
              "peak": 2.6426278942892623e-9,
              "rms": 2.6426278942891808e-9,
              "acRms": 0
            },
            {
              "mean": 2.270098775625229e-9,
              "peak": 2.270098775625229e-9,
              "rms": 2.270098775625229e-9,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "after-cancellation",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 8313074,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "8313074 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.2833836742800395,
      "audio": {
        "frames": 253603,
        "seconds": 5.2833958333333335,
        "channels": [
          {
            "mean": -1.5355853468349138e-10,
            "peak": 0.4375372529029846,
            "rms": 0.06514024700413322,
            "acRms": 0.06514024700413322
          },
          {
            "mean": -1.908026806917062e-7,
            "peak": 0.43756231665611267,
            "rms": 0.06527199907979103,
            "acRms": 0.06527199907951216
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 0,
        "y": 7,
        "sp": 246,
        "status": 51,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": -1.999083991677253e-7,
              "peak": 1.999083991677253e-7,
              "rms": 1.999083991677197e-7,
              "acRms": 0
            },
            {
              "mean": -4.2938629007949203e-7,
              "peak": 4.2938629007949203e-7,
              "rms": 4.293862900794689e-7,
              "acRms": 0
            }
          ]
        }
      }
    }
  ],
  "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."
    }
  ]
}
