MSCDEX.EXE is able to pick up that the media changed and show fresh
contents. Windows 95 is able to see the change (not automatically, but
if you hit F5 (refresh) after the change the contents reflect CD media
change).
8KB of RAM is present first. Without that check, mainline DOSBox's fixed
segment assignments would reach beyond available memory (if less than
8KB) and crash. added option to specify that DOSBox should allocate all
kernel structures in the UMB private area, leaving as much lower system
RAM available as possible. Doing this makes it possible to set memsize=4
(4KB) and run very small DOS programs.
0x7C00 offset to variable that is set to 0x7C00. Add code to refuse
booting a guest OS if less than 32KB of RAM is being emulated (the IBM
PC boot process requires 32KB of RAM). added TODO where the user should
be able to override that lockout if they feel adventerous.
dynamic private allocation to subtract 1 paragraph from memory total,
because some parts of the emulation use that for UMB linkage. added code
to error out in non-dynamic case if there is insufficient room for the
private area. this fixes cases where random crashes could result from
memsizekb=16 and private area size=16384, for example.
value rather than assume 0xFFFE. The choice is based on the size of the
memory block allocated for the image, which means that if there's plenty
of RAM, then SP=0xFFFE anyway, BUT, if the memory block is smaller, the
stack pointer is assigned the largest value (minus 2) that fits within
the memory block. Doing this resolves the random crashes that occured
with most DOS programs, including DOSBox's builtin commands, when less
than 72KB of RAM was assigned. Because of this fix, it is now possible
to assign as little as 16KB of RAM and run without crashing. Programs
that still fit work fine. Programs that are too large silently fail.
Programs that can load, but cannot allocate the memory they need, error
out fine without crashing.
Because of this fix, the check in the DOS memory setup code has been
modified to set the minimum to 16KB instead of 72KB.
flag so that other parts of the program have a way to know the DOS
kernel is no longer in charge. Added code to Program::SetEnv() and other
environment block code to fail and print a BUG message if emulator code
attempts to modify the environment block if the DOS kernel is disabled,
since, once the guest OS boots, that environment block is probably long
gone by then and overwritten. This fixes a bug I found where if you set
the memory size to 246KB or less, boot PC-DOS 1.0, and then hit CTRL+F9
to terminate the emulator, the emulator will instead run through
thousands of "illegal memory read" messages as code within the emulator
does a string scan from what is obviously now unmapped or overwritten
memory.
when play=0. Fix PLAY AUDIO MSF command code mistake that converted
M:S:F to LBA without considering the 150-sector offset. This fixes the
bug where pausing and resuming would skip forward 2 seconds.
control bit to be toggled but with no effect on actual A20 gating, a
setting intended to test whether a particular program OS is properly
checking the HMA region rather than just assuming it worked (and then
crashing). added reminder to self.