The host gate accepted a WATCOM environment override and skipped when nothing was found. Both are wrong for what it is: a system-wide Open Watcom is a different version reporting different diagnostics, and a gate that skips is a gate that is not running, which is the exact shape of the problem this file was added to close. It now uses .dosboxx/watcom only and fails with the setup command when that is absent, matching how dosboxx.py already behaves. Nothing else in the project reaches for a system install: the DOS session sets WATCOM=W: before calling BUILD.BAT, so the C:\DEVEL\WATCOMC fallback inside it is unreachable. fec/test-dos.bat was tracked but dead -- the runner generates RUN.BAT and only copies build-dos.bat -- so it goes, along with the comment claiming it drives the build and the three fixture READMEs that still pointed at it. The registry decides what runs now. (.qemu/ is untracked local debris from the same era and is left alone.)
Development tools
Host support
The automated DOS development environment currently supports Windows 10/11.
The host only needs uv. The setup command downloads the pinned DOSBox-X and
Open Watcom DOS archives, verifies their SHA-256 hashes, and installs them in the
ignored .dosboxx/ cache.
uv run ferro-dos setup --accept-watcom-license
Review the Open Watcom license referenced by
tools/toolchains/dosboxx.lock.json before accepting it. Neither downloaded
archives nor installed tools are committed.
General DOS environment
ferro-dos provides the development entry points:
uv run ferro-dos build
uv run ferro-dos exec "FEC.EXE --check TESTS\M6\OKLAST.FE"
uv run ferro-dos batch fec\test-dos.bat
uv run ferro-dos shell
uv run ferro-dos --help
Every invocation creates an isolated host directory under .dosboxx/runs/ and
mounts it as writable C:. The repository is mounted read-only as R: and the
pinned Open Watcom installation as read-only W:. Current compiler sources,
the standard library, and fixtures are copied to C:\FEC; all compilation and
execution happen there inside DOSBox-X. Successful runs are removed by default.
Use --keep to retain a workspace and --show-dos to display the DOS window.
This directory-backed layout deliberately has no QEMU, disk-image, TCP-agent, or OCR dependency. A future disk-image backend can be added without changing the command interface.
Pytest regression suite
ferro-test uses the same isolated DOSBox-X/Open Watcom environment, builds
FEC.EXE once, and executes all selected cases sequentially in that one DOS
instance. Pytest still reports each registered case separately.
uv run ferro-test run --through m6 -v
uv run ferro-test run --only m6 --dos-log
uv run ferro-test --help
--keep-failed preserves a failed workspace, --dos-log prints captured DOS
output, --trace-dos disables per-command redirection, and --show-dos displays
the GUI. Working rules and DOS/Open Watcom build traps are in AGENTS.md.