the first 64KB @ 1MB, "mask" aka use RAM alias handler to accurately
emulate the gate, as well as "on" and "off" to emulate scenarios where
A20 is locked on or off.
the demo is using for animation is NOT PIT timer #0, but PIT timer #2.
Yes, the one normally used to drive your PC speaker. And it doesn't let
it tick so much as it uses it for a delay loop. DOSBox's emulation
apparently counts down too slow, which is why the demo runs too slow.
The PIT hack written for it forces the value to count down faster,
allowing the demo to run at full framerate.
twice are related to the ability to choose the private area size,
meaning that if the private area is too small, the demo (or DOSBox?)
causes memory corruption or overruns the buffer?
PIT emulation via pit hack= DOSBox config file param. Added PIT hack for
Project Angel. When the PIT timer is written, the value is forced to one
of two values (18.2Hz or 421Hz). Considering that the demo is constantly
fiddling around with the timer in ways it can lose stability, this
forces the demo to run properly and resolves quite a few issues with
DOSBox.
that when option is set, the private data segment is given to all RAM
from a base segment, then DOS kernel structures are allocated from it,
and then, at the stage where the MCB system is first built, direct the
private segment back up to it's original location (private segment
allocations prior to that point naturally take their place bottom up).
Fixed XMS driver to correctly handle the dynamic case. So far as I can
tell, the dynamic mode does not cause any problems, not even with
Windows 3.1.
longer used). added code to call PAGING_FlushTLB() to ensure that
changes to the memory map take effect. Prior to the fix, the code
changed the map to unmap the regions but the memory was still accessible
because of TLBs.
boot an operating system. Mainline DOSBox behavior is to leave it up
there, while DOSBox-X now defaults to unmapping the UMB (since the OS
will not know it's there and will probably confuse it with adapter ROM).
emperically based on "compatible mapping". Added dosbox.conf setting to
allow overriding the VGA BIOS size. Re-added code to choose private area
segment and position it just past the VGA BIOS. Project Angel is happy
this time, Windows 95 no longer causes numerous "illegal memory read"
errors. So far, so good.
UMB block. When compatible mapping is disabled, it helps pack adapter
ROM usage down and allows up to 176KB of extra space should DOS programs
use any UMBs.
DOSBox was doing at 0xD000 was emulating Upper Memory Blocks. Added code
to memory handler to default map out those pages, then allow the XMS
driver to map them back to RAM. Added options so that you can control
the UMB region and size from dosbox.conf.
region in the 0xF000 segment instead of DOSBox's private segment at
0xC800. Corrected language regarding realbig16, the B (big) bit hack
doesn't allow for 32-bit real mode code, it only allows the code segment
to extend past 64KB (huge real mode).
acknowledged in my code that mapping out D000:0 only causes minor but
possibly significant faults with BIOS routines in F000:0 (would that be
what killed DOSBox-X2?)