On Mon, 2025-05-12 at 02:03 +0200, Eric Auer via Freedos-devel wrote:
>
> 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?
>
Just a M218
https://theretroweb.com/motherboards/s/pcchips-m218
> Do I understand you correctly that it worked with SvarDOS DR DOS
> kernel on the same hardware? Do you load the same drivers there?
yes correct
> If not, which drivers do you load in SvarDOS and which drivers
> do you load in FreeDOS? Does it help to load fewer drivers? :-)
same 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.
>
ok! >:3 i will!
fdos mem /debug
Conventional Memory Detail:
Segment Total Name Type
------- ---------------- ------------ -------------
0000 1,024 (1K) interrupt vector table
0040 768 (1K) BIOS data area
0070 9,264 (9K) IO system data
NUL system device driver
CON system device driver
PRN system device driver
AUX system device driver
LPT1 system device driver
LPT2 system device driver
LPT3 system device driver
COM1 system device driver
COM2 system device driver
COM3 system device driver
COM4 system device driver
CLOCK$ system device driver
A: - F: system device driver
02b3 15,968 (16K) DOS system data
02b5 192 (0K) FILES FILES=16 (3 in this block)
02c2 6,320 (6K) LTEMM device driver
EMMXXXX0 installed DEVICE=LTEMM
044e 1,648 (2K) FDXMS286 device driver
XMSXXXX0 installed DEVICE=FDXMS286
04b6 4,016 (4K) NNANSI device driver
CON installed DEVICE=NNANSI
05b2 480 (0K) FILES FILES=16 (8 in this block)
05d1 1,152 (1K) LASTDRV LASTDRIVE=M
061a 2,048 (2K) STACKS data area
069a 112 (0K) 4DOS data area
06a2 3,984 (4K) 4DOS program
079c 1,024 (1K) 4DOS environment
07dd 448 (0K) free
07fa 912 (1K) FDAPM program
0834 704 (1K) free
0861 4,144 (4K) CLOCK program
0965 3,088 (3K) CTMOUSE program
0a27 3,968 (4K) EXP16 program
0b20 768 (1K) MEM environment
0b51 54,944 (54K) MEM program
18bc 553,008 (540K) free
Upper Memory is not accessible
Memory Type Total Used Free
---------------- -------- -------- --------
Conventional 639K 44K 595K
Upper 0K 0K 0K
Reserved 385K 385K 0K
Extended (XMS) 15,232K 64K 15,168K
---------------- -------- -------- --------
Total memory 16,256K 493K 15,763K
Total under 1 MB 639K 44K 595K
Total Expanded (EMS) 2,048K (2,097,152 bytes)
Free Expanded (EMS) 1,776K (1,818,624 bytes)
Memory accessible using Int 15h 0K ( 0 bytes)
Largest executable program size 594K (607,968 bytes)
FreeDOS is resident in the high memory area.
drdos mem /debug output
Conventional Memory Detail:
Segment Total Name Type
------- ---------------- ------------ -------------
0000 1,024 (1K) interrupt vector table
0040 768 (1K) BIOS data area
0070 2,736 (3K) IO system data
CON system device driver
AUX system device driver
PRN system device driver
CLOCK$ system device driver
A: - F: system device driver
COM1 system device driver
LPT1 system device driver
LPT2 system device driver
LPT3 system device driver
COM2 system device driver
COM3 system device driver
COM4 system device driver
011b 23,136 (23K) DOS system code
NUL installed DEVICE=DOS
CON installed DEVICE=DOS
XMSXXXX0 installed DEVICE=DOS
EMMXXXX0 installed DEVICE=DOS
06c2 80 (0K) 4DOS data area
06c8 3,984 (4K) 4DOS program
07c2 1,024 (1K) 4DOS environment
0803 368 (0K) free
081b 912 (1K) FDAPM program
0855 624 (1K) free
087d 4,144 (4K) CLOCK program
0981 3,088 (3K) CTMOUSE program
0a43 640 (1K) free
0a6c 3,968 (4K) EXP16 program
0b65 688 (1K) MEM environment
0b91 54,944 (54K) MEM program
18fc 551,984 (539K) free
Upper Memory is not accessible
Memory Type Total Used Free
---------------- -------- -------- --------
Conventional 639K 45K 594K
Upper 0K 0K 0K
Reserved 385K 385K 0K
Extended (XMS) 15,232K 64K 15,168K
---------------- -------- -------- --------
Total memory 16,256K 494K 15,762K
Total under 1 MB 639K 45K 594K
Total Expanded (EMS) 2,048K (2,097,152 bytes)
Free Expanded (EMS) 1,776K (1,818,624 bytes)
Memory accessible using Int 15h 0K ( 0 bytes)
Largest executable program size 593K (606,944 bytes)
DR-DOS is resident in the high memory area.
> Does that UMB driver have command line options which you could
> use to exclude for example the (problematic?) area e600 to e7ff?
it should beable to but it is fine the e600 to e7ff is fine
>
> Regards, Eric
>
> PS: Somebody may want to add some of the above to that bug ticket.
>
>
>
>
>
> _______________________________________________
> Freedos-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/freedos-devel
--
founder of yellow rose group 💛️
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel