{
  "schemaVersion": 1,
  "challenge": "tts-v1",
  "entryId": "astra-talks-v1",
  "sourceSha256": "f5d1f2b1daefbfbcaabf446215207141d48b380c35a6b9e00e1e72df59298edb",
  "metadata": {
    "schemaVersion": 1,
    "challenge": "tts-v1",
    "id": "astra-talks-v1",
    "title": "Astra: Copper Voice",
    "author": "GPT-6 Astra via GitHub Copilot for ebadger",
    "model": "gpt-6-astra; reasoning effort unknown; temperature unknown; seed unknown; context tier unknown",
    "agent": "GitHub Copilot App / CLI on Windows; PowerShell, Node.js, existing asm6502 and unchanged baseline Emscripten/WASM runtime",
    "baseline": "bd795bee12c5fb73a7de9e733e19e0aad95fb57c",
    "description": "Original runtime English grapheme-to-phoneme rules and synthetic harmonic/formant/noise phoneme tiles, clocked through paired real AY amplitude DAC writes on both slot-4 chips. Includes an editable 120-character text UI and reusable guest ABI.",
    "assistance": "Astra-authored engine, rules, generator and tests. Human/coordinator supplied task and challenge requirements. No other engine or entrant read; no human voice, pretrained assets or host TTS. Hardware references read as permitted; review status is documented in README and PR.",
    "license": "MIT for original source and synthetic voice/rule data; zlib notice for hardware amplitude calibration; see LICENSE and NOTICE.txt.",
    "memory": "Always-mapped image $0800-$85FF; text page 1 $0400-$07FF. $1800-$19FF phoneme queue; waveforms from $3000. Borrowed $06-$0D restored by TTS_SPEAK. TTS_INPUT reserves 122 bytes. Upper ROM always visible; C007 exposes input RAM, C006 restores BASIC on return; no language-card storage or $C800 scratch. Slot-4 T1 polled, IRQs disabled.",
    "limitations": "Original approximate English rules, fixed-pitch synthetic phoneme concatenation, no stress dictionary. Human intelligibility listening unavailable; physical hardware/SD loading untested. Numerical PCM checks are not speech-quality certification. Exact measured results and reproduction commands are in README."
  },
  "provenance": {
    "baseline": "bd795bee12c5fb73a7de9e733e19e0aad95fb57c",
    "gitRevision": "5e6960a6c82774ff53ea74291d6999e212b35221",
    "worktreeDirty": true
  },
  "createdAt": "2026-10-05T20:34:07.130Z",
  "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": 32256,
    "endExclusive": 34304,
    "symbols": {
      "TTS_INIT": 2051,
      "TTS_SPEAK": 2209,
      "TTS_INPUT": 3802
    }
  },
  "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": 645,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "645 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.0004099304865938431,
      "audio": {
        "frames": 19,
        "seconds": 0.0003958333333333333,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 127,
        "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": 1338,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "1338 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.0008503674280039722,
      "audio": {
        "frames": 41,
        "seconds": 0.0008541666666666667,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "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": 1783,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "1783 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.0011331876861966237,
      "audio": {
        "frames": 54,
        "seconds": 0.001125,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "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": 13418,
      "deadlineCycles": 3146875,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "13418 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.008527825223435948,
      "audio": {
        "frames": 410,
        "seconds": 0.008541666666666666,
        "channels": [
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          },
          {
            "mean": 0,
            "peak": 0,
            "rms": 0,
            "acRms": 0
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 2,
        "x": 255,
        "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": "sentence-1-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "HELLO. THIS COMPUTER CAN TALK.",
      "expectedA": 0,
      "cycles": 4564358,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "4564358 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": 2.9008829394240316,
      "audio": {
        "frames": 139242,
        "seconds": 2.900875,
        "channels": [
          {
            "mean": 0.00028254066061547293,
            "peak": 0.22854407131671906,
            "rms": 0.034238380229244754,
            "acRms": 0.03423721442374419
          },
          {
            "mean": 0.000282575660630709,
            "peak": 0.22891251742839813,
            "rms": 0.03423656892875335,
            "acRms": 0.034235402772704426
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 9.490642582932196e-7,
              "peak": 9.490642582932196e-7,
              "rms": 9.490642582931747e-7,
              "acRms": 0
            },
            {
              "mean": 9.848271247392404e-7,
              "peak": 9.848271247392404e-7,
              "rms": 9.84827124739311e-7,
              "acRms": 3.727472246908974e-13
            }
          ]
        }
      }
    },
    {
      "name": "sentence-2-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 5817115,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5817115 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.69707408142999,
      "audio": {
        "frames": 177460,
        "seconds": 3.6970833333333335,
        "channels": [
          {
            "mean": 0.00022056166381663876,
            "peak": 0.3137694299221039,
            "rms": 0.03788454187471467,
            "acRms": 0.03788389982049715
          },
          {
            "mean": 0.0002205500098000607,
            "peak": 0.3136972188949585,
            "rms": 0.03789983198585365,
            "acRms": 0.037899190258488535
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 8.17934051156044e-7,
              "peak": 8.17934051156044e-7,
              "rms": 8.17934051156044e-7,
              "acRms": 0
            },
            {
              "mean": 8.060131335696497e-7,
              "peak": 8.060131335696497e-7,
              "rms": 8.060131335696083e-7,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-3-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.",
      "expectedA": 0,
      "cycles": 5960913,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5960913 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.788465064548163,
      "audio": {
        "frames": 181846,
        "seconds": 3.7884583333333333,
        "channels": [
          {
            "mean": 0.00021616158179323404,
            "peak": 0.21734388172626495,
            "rms": 0.03457038743492739,
            "acRms": 0.03456971162117992
          },
          {
            "mean": 0.00021616117792547576,
            "peak": 0.21734388172626495,
            "rms": 0.03457088433744491,
            "acRms": 0.03457020853593671
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 7.344875712078647e-7,
              "peak": 7.344875712078647e-7,
              "rms": 7.344875712078479e-7,
              "acRms": 0
            },
            {
              "mean": 7.344875712078647e-7,
              "peak": 7.344875712078647e-7,
              "rms": 7.344875712078479e-7,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-4-repeat-1",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "PLEASE TYPE A SENTENCE AND PRESS ENTER.",
      "expectedA": 0,
      "cycles": 5455433,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5455433 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.467206673286991,
      "audio": {
        "frames": 166426,
        "seconds": 3.4672083333333332,
        "channels": [
          {
            "mean": 0.00023452311449705378,
            "peak": 0.1753796488046646,
            "rms": 0.03592249172056177,
            "acRms": 0.03592172616011925
          },
          {
            "mean": 0.00023546445891817262,
            "peak": 0.1754109114408493,
            "rms": 0.035980463452811674,
            "acRms": 0.03597969297767427
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 7.310882121913664e-9,
              "peak": 7.310882121913664e-9,
              "rms": 7.3108821219133145e-9,
              "acRms": 0
            },
            {
              "mean": 7.310882121913664e-9,
              "peak": 7.310882121913664e-9,
              "rms": 7.3108821219133145e-9,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-1-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "HELLO. THIS COMPUTER CAN TALK.",
      "expectedA": 0,
      "cycles": 4564358,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "4564358 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": 2.9008829394240316,
      "audio": {
        "frames": 139243,
        "seconds": 2.9008958333333332,
        "channels": [
          {
            "mean": 0.0002814469872816044,
            "peak": 0.22903266549110413,
            "rms": 0.03425623777832303,
            "acRms": 0.034255081583881186
          },
          {
            "mean": 0.0002813998944652873,
            "peak": 0.22835098206996918,
            "rms": 0.034250881598262804,
            "acRms": 0.03424972560996092
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 9.848271247392404e-7,
              "peak": 9.848271247392404e-7,
              "rms": 9.84827124739311e-7,
              "acRms": 3.727472246908974e-13
            },
            {
              "mean": 9.371433407068253e-7,
              "peak": 9.371433407068253e-7,
              "rms": 9.371433407068253e-7,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "sentence-2-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 5817115,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5817115 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.69707408142999,
      "audio": {
        "frames": 177459,
        "seconds": 3.6970625,
        "channels": [
          {
            "mean": 0.00022056231275483572,
            "peak": 0.31412607431411743,
            "rms": 0.037942388382240545,
            "acRms": 0.0379417473031353
          },
          {
            "mean": 0.00022144694159100296,
            "peak": 0.31412607431411743,
            "rms": 0.03791369895758,
            "acRms": 0.03791305223663828
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 8.17934051156044e-7,
              "peak": 8.17934051156044e-7,
              "rms": 8.17934051156044e-7,
              "acRms": 0
            },
            {
              "mean": 8.17934051156044e-7,
              "peak": 8.17934051156044e-7,
              "rms": 8.17934051156044e-7,
              "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": 5960913,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5960913 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.788465064548163,
      "audio": {
        "frames": 181846,
        "seconds": 3.7884583333333333,
        "channels": [
          {
            "mean": 0.0002161748262043471,
            "peak": 0.2169872522354126,
            "rms": 0.03458350616071158,
            "acRms": 0.034582830520541424
          },
          {
            "mean": 0.0002161517824945892,
            "peak": 0.21705377101898193,
            "rms": 0.034583397960128784,
            "acRms": 0.03458272246188209
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 7.46408488794259e-7,
              "peak": 7.46408488794259e-7,
              "rms": 7.464084887942217e-7,
              "acRms": 0
            },
            {
              "mean": 7.225666536214703e-7,
              "peak": 7.225666536214703e-7,
              "rms": 7.225666536214969e-7,
              "acRms": 1.9588311420321562e-13
            }
          ]
        }
      }
    },
    {
      "name": "sentence-4-repeat-2",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "PLEASE TYPE A SENTENCE AND PRESS ENTER.",
      "expectedA": 0,
      "cycles": 5455433,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5455433 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.467206673286991,
      "audio": {
        "frames": 166426,
        "seconds": 3.4672083333333332,
        "channels": [
          {
            "mean": 0.000235465190321352,
            "peak": 0.1752428263425827,
            "rms": 0.03590585415343424,
            "acRms": 0.035905082072484364
          },
          {
            "mean": 0.00023546617242920396,
            "peak": 0.17528001964092255,
            "rms": 0.03588210386468669,
            "acRms": 0.03588133126624213
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 7.310882121913664e-9,
              "peak": 7.310882121913664e-9,
              "rms": 7.3108821219133145e-9,
              "acRms": 0
            },
            {
              "mean": 7.310882121913664e-9,
              "peak": 7.310882121913664e-9,
              "rms": 7.3108821219133145e-9,
              "acRms": 0
            }
          ]
        }
      }
    },
    {
      "name": "lowercase",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "hello. this computer can talk.",
      "expectedA": 0,
      "cycles": 4564526,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "4564526 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": 2.900989712015889,
      "audio": {
        "frames": 139248,
        "seconds": 2.901,
        "channels": [
          {
            "mean": 0.0002814139921975331,
            "peak": 0.22819951176643372,
            "rms": 0.03425362721483946,
            "acRms": 0.034252471203377224
          },
          {
            "mean": 0.00028141377509893317,
            "peak": 0.2284775823354721,
            "rms": 0.03425003528014149,
            "acRms": 0.034248879149223574
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 9.60985175879614e-7,
              "peak": 9.60985175879614e-7,
              "rms": 9.609851758796707e-7,
              "acRms": 3.305360493644971e-13
            },
            {
              "mean": 9.60985175879614e-7,
              "peak": 9.60985175879614e-7,
              "rms": 9.609851758796707e-7,
              "acRms": 3.305360493644971e-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": 18052580,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "18052580 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": 11.473337835153922,
      "audio": {
        "frames": 550720,
        "seconds": 11.473333333333333,
        "channels": [
          {
            "mean": 0.00006761726871183462,
            "peak": 0.2287922352552414,
            "rms": 0.03394678864821101,
            "acRms": 0.03394672130605959
          },
          {
            "mean": 0.00006774211265817638,
            "peak": 0.22891251742839813,
            "rms": 0.03395485954869002,
            "acRms": 0.033954791973702894
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 5.15443403514837e-8,
              "peak": 5.15443403514837e-8,
              "rms": 5.1544340351485285e-8,
              "acRms": 1.2794086049161931e-14
            },
            {
              "mean": 8.777278992511128e-8,
              "peak": 8.777278992511128e-8,
              "rms": 8.777278992510821e-8,
              "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": 80675,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": 78671,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "80675 cycles"
        },
        {
          "name": "escape-injected-while-running",
          "ok": true,
          "detail": "Escape at cycle 78671"
        },
        {
          "name": "cancellation-deadline",
          "ok": true,
          "detail": "2004 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.051273088381330684,
      "audio": {
        "frames": 2461,
        "seconds": 0.051270833333333335,
        "channels": [
          {
            "mean": 1.2566681922344663e-10,
            "peak": 5.15443403514837e-8,
            "rms": 2.5450762858786192e-9,
            "acRms": 2.5419719021830217e-9
          },
          {
            "mean": 2.853239818776474e-10,
            "peak": 8.777278992511128e-8,
            "rms": 5.004366285749176e-9,
            "acRms": 4.996225790264936e-9
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 1,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 48,
        "waiting": false
      },
      "effectiveDeadlineCycles": 1652108,
      "cancellationCycles": 2004,
      "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": "after-cancellation",
      "status": "passed",
      "routine": "TTS_SPEAK",
      "input": "WE MAKE NEW SOFTWARE FOR OLD COMPUTERS.",
      "expectedA": 0,
      "cycles": 5817115,
      "deadlineCycles": 141609375,
      "returned": true,
      "escapeInjectedAtCycle": null,
      "serial": "",
      "serialBytes": 0,
      "checks": [
        {
          "name": "returned-before-deadline",
          "ok": true,
          "detail": "5817115 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.69707408142999,
      "audio": {
        "frames": 177460,
        "seconds": 3.6970833333333335,
        "channels": [
          {
            "mean": 0.00022053867484988859,
            "peak": 0.3136972188949585,
            "rms": 0.03791035240793691,
            "acRms": 0.03790971092460167
          },
          {
            "mean": 0.00022055026778922666,
            "peak": 0.31412607431411743,
            "rms": 0.03792815106842415,
            "acRms": 0.037927509818713144
          }
        ]
      },
      "registers": {
        "pc": 776,
        "a": 0,
        "x": 255,
        "y": 7,
        "sp": 246,
        "status": 50,
        "waiting": false
      },
      "effectiveDeadlineCycles": 141609375,
      "postReturn": {
        "settleCycles": 393360,
        "measuredCycles": 236016,
        "audio": {
          "frames": 7200,
          "seconds": 0.15,
          "channels": [
            {
              "mean": 7.940922159832553e-7,
              "peak": 7.940922159832553e-7,
              "rms": 7.940922159832691e-7,
              "acRms": 1.4802499958932216e-13
            },
            {
              "mean": 8.060131335696497e-7,
              "peak": 8.060131335696497e-7,
              "rms": 8.060131335696083e-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."
    }
  ]
}
