\C{build} Building RxDOS 7.2x from the source code


\H{} Required tools

\n NASM 2.04 .. 2.13, other versions might work (2.13.03 tested most recently).

\n One of these linkers:

\lcont{
\n WarpLink 2.70

\n Other 16-bit OMF linkers, with trivial adjustments

\n NASM's internal linker (output format \c{bin})
}

Usage of NASM's internal linker made exe2bin unnecessary. The kernel can now
only be build with NASM, object file output support is discontinued.


\H{} Warnings to expect

The "word data exceeds bounds" warnings that are displayed for
biocode.asm:455, biocode.asm:504, and doscode.asm:600 can probably be ignored.

ldosboot shows messages indicating how many bytes are left available in the
boot sector loaders, these are:

\n Main boot sector for all FAT types.

\n FSINFO for the FSIBOOT-using FAT32.

ldosboot iniload shows messages indicating how many bytes are left
available before the various fixed labels, these are:

\n ms7_entry: MS-DOS 7/8 load protocol entrypoint, at 200h.

\n ldos_entry: lDOS load protocol entrypoint, at 400h.

\n end: End of common early loader (for lDOS and MS-DOS 6 entrypoints).

\n end2: End of extended early loader (for MS-DOS 7/8 entrypoint).

iniblz shows a message indicating how many bytes are used by the depacker.
Additionally, building RxDOSPAK.COM also shows the same messages for
ldosboot iniload as the normal build, these will generally be the same.

lDOS entry.asm and RxDOS dosdata.asm show how many bytes are left in front of
specific fixed labels, these are:

\n The Interrupt Restoration Table (IRT), at 70h:100h (DOSENTRY:100h).

\n The pre-SDA (pre Swappable Data Area), in DOSDATA.


\H{} Scripts

The mak.sh script should be sufficient to create a makefile or simple script
for your particular platform. It was created for a Linux bash environment.

The provided documentation is partly written for Halibut, a program that compiles
its input to various other formats. To compile the documentation into one text file
and one HTML file, use the script doc/makdoc. This script is now called by
the mak.sh script too.

