x80_cpm_run
Run a CP/M package in a fresh sandbox and get its console output, file manifest, termination reason, and assertion results. Use these artifacts to verify success since CP/M has no exit status.
Instructions
Run one CP/M package to completion in a fresh sandbox and return its console output, a manifest of the files it created, a termination reason, and your assertions. This tool deliberately has no exit_code field, because no CP/M backend has one: CP/M has no exit-status concept, cpmemu exit(0)s on every path including its runaway watchdog, romwbw_emu always returns 0, and a run that extracted 1 of 23 files and printed "Error" still exited 0 (measured). Success must be asserted from stdout plus the file manifest.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cpu | No | z80 | |
| args | No | The CP/M command tail. | |
| stdin | No | Bytes fed to the guest console. | |
| assert | No | ||
| collect | No | ||
| profile | Yes | cpm-hosted (cpmemu) is instant and file-oriented. The others boot a real OS on emulated hardware and need the files staged into a disk image. | |
| program | Yes | Host path to the .COM for hosted profiles; a host path (staged onto the session image) or a bare guest-resident name for hardware profiles. | |
| files_in | No | ||
| timeout_ms | No | Wall-clock deadline for the guest run. Enforced by the server and killed by process group; no backend in this family has an internal wall clock. | |
| eol_convert | No | ||
| default_mode | No | MUST default to binary. cpmemu's auto mode never resolves on WRITE: the same 23-member ARC extracted 1 of 23, printed 'Error', truncated the one file it wrote, and exited 0 (measured). Only a config file can set this; the server synthesizes one. | binary |
| keep_sandbox | No | ||
| boot_timeout_ms | No | Hardware profiles only: give up waiting for the OS prompt after this long and return stopped:'boot_timeout' with whatever boot output arrived. |