Hi!
i posted the error and a screen shot of it in the kernel issues thing
https://github.com/FDOS/kernel/issues/205
Let me type this screenshot message over and comment on it:
Immediately after loading the "Use!UMBs" Upper Memory Block Manager
which "Works on any PC/XT/AT, either with or without Extended or
Expanded Memory" (Marco van Zwetselaar, public domain 1991, v2.2)
there is a message:
Invalid Opcode at 9063 E602 0046
15A3 C70D 6B06 3705 8B00
FC46 463B 75F0 3B05 F27E
dos mem corrupt, first_mcb=02b6
prev 9fbf:0000 | 4d 08 00 40 46 00 00 00 53 43 00 00 00 00 00 00
notMZ e600:0000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
PANIC: MCB chain corrupted
System halted
Some context from RBIL:
Format of DOS memory control block:
Offset Size Description (Table 01628)
00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
01h WORD PSP segment of owner or special flag value (see #01629)
03h WORD size of memory block in paragraphs
05h 3 BYTEs unused by MS-DOS
...
08h 8 BYTEs ASCII program name if PSP memory block or DR DOS UMB,
else garbage
null-terminated if less than 8 characters
Notes: the next MCB is at segment (current + size + 1)
under DOS 3.1+, the first memory block is the DOS data segment,
containing installable drivers, buffers, etc. Under DOS 4.0+
it is
divided into subsegments, each with its own memory control block
(see #01633), the first of which is at offset 0000h.
for DOS 5+, blocks owned by DOS may have either "SC" or "SD" in
bytes
08h and 09h. "SC" is system code or locked-out inter-UMB memory,
"SD" is system data, device drivers, etc.
...
(Table 01629)
Values for special flag PSP segments:
0000h free
...
0008h belongs to DOS
...
Format of MS-DOS 5+ UMB control block:
Offset Size Description (Table 01630)
00h BYTE type: 5Ah if last block in chain, 4Dh otherwise
01h WORD first available paragraph in UMB if control block at start
of UMB, 000Ah if control block at end of UMB
03h WORD length in paragraphs of following UMB or locked-out region
05h 3 BYTEs unused
08h 8 BYTEs block type name: "UMB" if start block, "SM" if end
block in UMB
So what do we see here? A non-last MCB starting at 9fbf:0 with special
flag value 08 (belongs to DOS) and code "SC" which means "locked-out
inter-UMB memory". Size is 4640 paragraphs and DOS expects the next
block, which WOULD be the one of the first UMB area, at e600:0, but
as you can see, there are only a bunch of 00 bytes here. This could
mean that there is no writable memory at that place or that something
else is using the memory, which had the effect of overwriting the MCB
with 00 bytes. Maybe you have some controller buffer at the address?
What exactly is the hardware on which you are running this?
Do I understand you correctly that it worked with SvarDOS DR DOS
kernel on the same hardware? Do you load the same drivers there?
If not, which drivers do you load in SvarDOS and which drivers
do you load in FreeDOS? Does it help to load fewer drivers? :-)
You could copy-paste the output of MEM /DEBUG or MEM /FULL for
both FreeDOS and SvarDOS DR-DOS, so we can compare. Of course
without loading that UMB thing in FreeDOS, as it would crash.
Does that UMB driver have command line options which you could
use to exclude for example the (problematic?) area e600 to e7ff?
Regards, Eric
PS: Somebody may want to add some of the above to that bug ticket.
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel