# Pascal-S validator pilot `pascals.atg` describes Wirth Pascal-S (1976) as implemented by `PascalS0` (Turbo-Pascal batch interpreter). It was authored from the P2 pilot skeleton and corrected against some 90 oracle probes — every construct below was checked against the running interpreter (no fpc involved anywhere). ## Oracle notes `psc` was built with `fpc -Mtp` from `Pascals/` plus a `/tmp`-only `TrmInOut` stub (the shipped unit needs DOS `REGISTERS`/`MsDos`; only console setup, irrelevant to parse verdicts). Behaviors the harness respects, all verified: - Verdicts come from the `.lst` listing: `******* ^ NNN` markers (full error table printed in `PascalS0.pas:errormsg`); absence = accept. Feeding is via `psc src.lst` args with stdin ` build/PascalS (build/ is git-ignored) ``` Needs `CR` (Coco/R), `gm2 -fiso`, the `parser.frm`/`scanner.frm` frames and `FileIO.def/.mod` — all resolved from the environment with sensible defaults (`CRFRAMES`, `M2LIB`, `CR`, `GM2`). ## Differential results (PascalS vs `psc`) Accept battery (22 cases: all statements, arrays, records, `ord`/`chr`, reals, strings, `odd`, write-widths, `eof(input)`): **0 false positives**. Broken mutants (12: truncation, bad factors, unterminated comment, `@`, missing `TO`, `ELSE`, `goto`, `_`, `1..3`, set constructor): **0 missed**, positions close. Example corpus (`Pascals/eg0`–`eg7`): agree on all 8 (`eg0`/`eg1` are intentionally broken and both sides reject them). `tests/deep.pas` (nested routines with `var` params, records, all statements, reals): clean on both sides.