Files
doslang-mirror/tools
coolguy eb85e9fa3d dev: run host syntax gates before starting DOSBox-X
There is an Open Watcom install on this host (C:\WATCOM19), and its Windows
build compiles the compiler's own sources in about a second. Every declaration
mismatch in the unification commits was found that way; each one would
otherwise have cost a DOSBox-X boot and a full compiler build to surface, with
a DOS-side message that names the wrong thing.

Add tools/tests/test_host_syntax.py: compile all twelve sources with the flags
build-dos.bat uses (-za -wx -wcd=202) and fail on any diagnostic. It skips when
Watcom is absent, so the suite still runs elsewhere. Two structural checks come
with it -- that build-dos.bat, the Makefile and the test agree on the source
list, and that no .c under fec/src is compiled by nothing. Both would have
caught check.c and emit_c.c quietly leaving the build when the M7 wrappers
included them textually.

ferro-test now runs these and the 8.3 name check before starting the VM, and
stops if they fail.

This is not verification and does not claim to be: wcc386 targets 32-bit where
the real build is 16-bit large model, so it sees syntax, types and declarations
and nothing about code generation. The DOS build and the milestone suite remain
the gate. It only moves the cheap failures earlier.
2026-08-17 01:57:06 +09:00
..

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.