Files
doslang-mirror/tools
coolguy 32ad50b14a dev: run the host gate as 16-bit, and drop what it found dead
The gate was using a system-wide Open Watcom that only ships the 32-bit
compiler. The project downloads its own toolchain, and .dosboxx/watcom/binnt
has the Windows-hosted 16-bit wcl.exe -- the same compiler and the same target
as the DOS build. Run that instead, with build-dos.bat's exact command.

The difference is not academic. Compiling 16-bit immediately reported three
functions the unification had orphaned: emit_type_helpers, which the M7
program emitter replaced, and emit_drop_helpers and emit_drop_fields, which it
was the only caller of. The 32-bit check had been clean.

Those warnings were going to the DOS screen, where the runner cannot see them:
COMMAND.COM redirects handle 1 only, and Watcom writes diagnostics to handle 2.
So the suite was green while the build was not quiet. Nothing in the runner
would ever have said so.

Found while chasing W210/W107 reported from a DOS screen, which this does not
yet explain -- those are not among what the compiler build emits now.

M1-M7: 214 passed.
2026-08-17 02:22:44 +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.