The old code was essentially a no-op due to x86 taking shifts mod 32.
This lead DOS to believe that it had 10KiB of memory, which is not
enough to contain io.sys, the DOS kernel, and command.com. This causes
command.com to overwrite the DOS kernel when it goes to relocate itself
at the end of the memory, leading to system crash.
Dosbox will override the default configuration with `dosbox.conf` if
launched with `dosbox .` in the source directory. Only override it for
building, not for interactive usage.
With the stock configuration, DOSBox limits the amount of instructions
it emulates each millisecond to a value it guesses. This is a reasonable
default to have when emulating games or other software from the time,
but woefully slow for our purposes of compilation.
Since the user's configuration file will most likely be tailored to
other uses, it makes sense, then, to use a project-specific
configuration here and override any user configuration. For now, set
only the cycles setting to 'max'.
The DOSBox invocation in the Makefile gets a bit long with the addition
of the -conf flag, so contain it in a variable instead.
Using `dw` ended up shifting all the values over by one byte, making DOS
think our 320K floppy was actually 16MiB in size, and had 46 sectors of
FAT instead of 1. This further lead it trash the setup stack and fail to
locate the disk directory.