updated notes and bugs regarding demoscene entry "Majic 12: Show" and

why and when it triggers a "MCB list is corrupt" error message in
DOSBox and how to reconfigure your dosbox.conf to work around it.

It turns out the demo (perhaps the graphical effect routines) clears and
overwrites memory in the 0xC0000-0xCFFFF range. If DOSBox has any
private areas or upper memory blocks there, the data there will be lost.
If upper memory blocks exist up there, they will be lost and DOSBox will
E_Exit() with a message stating that the MCB list is corrupt. When I
added code to dump the MCBs, I saw that when this happens, the MCBs
below the 640KB boundary are OK, the MCBs in the upper memory are zeroed
out.
This commit is contained in:
Jonathan Campbell 2014-04-23 16:46:15 -07:00
parent e77b8abff3
commit 5c9842baa4

View File

@ -6,9 +6,15 @@ VGA raster bugs:
(but only if the cycles count is greater than about 9000).
Memory corruption bugs:
- DOSBox complains upon demo exit that the MCB (memory allocation
chain) is corrupted IF "private area in umb=false" and
"private area size=4096", or "private area in umb=false"
and "mainline compatible mapping=false" and "private area size"
is less than 32768.
- Majic 12 appears to have issues with upper memory blocks or anything
in the upper (0xC000-0xCFFF) range. If you run the demo with umb=true
or with the private data area in umb, the contents stored up there
will be partially or fully zeroed by the demo on shutdown. Worst
case scenario the overwritten data will cause DOSBox to crash with
an error message stating that the MCBs (Memory Control Block linked
list used to manage DOS memory allocations) is corrupt.
A dump of the MCB list in that case shows MCBs in lower memory
(below 640KB) are intact while the MCB chain in upper memory is
completely gone!