{{fbdoc item="title" value="Building for DOS"}}

The DOS target is still a supported FreeBASIC target, but it is not shaped like
a modern hosted operating system. It normally uses a DJGPP-style toolchain and
has platform limits that the compiler and runtime must respect.

{{fbdoc item="subsect" value="Current build path"}}

Use the DOS build scripts when they are available in the checkout. They encode
the current toolchain layout and package expectations better than the old manual
DJGPP notes did.

%%(sh)
./build_scripts/msdos-build-freebasic.sh
./build_scripts/msdos-test-freebasic.sh
%%

For direct make work, prefer a target triplet rather than old short target
names:

%%(sh)
make print-config TARGET_TRIPLET=i586-pc-msdosdjgpp
make TARGET_TRIPLET=i586-pc-msdosdjgpp
%%

{{fbdoc item="subsect" value="Known DOS limits"}}

Most normal compiler and runtime work is usable on DOS, but DOS-specific limits
remain important. The DOS runtime does not provide thread support, TCP support
is not available there, and audio playback is blocking compared with the more
modern hosted ports.
