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 > Freedos-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/freedos-devel -- founder of yellow rose group 💛️ _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel