Hallo Herr Eric Auer via Freedos-devel, am Montag, 12. Mai 2025 um 02:03 schrieben Sie:
> 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? Nice analysis. on first glance: USE!UMB should have checked that this memory is indeed writable. It seems it's not and that is just a stupid program bug. The cool thing is that source is provided, and some genius with too much time to spend caould fix this. > What exactly is the hardware on which you are running this? other then "genuine harris 286 @ 25MHz with 16 MB of ram and @ mb of EMS", how would this help you? Tom _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel