Hi, the current DEVLOAD version contains a special check for EDR-DOS, to set the DPB size to a 4 byte larger value if it's found. (It appends new DPBs when loading block devices, and therefore needs to know the size of the DPB.) Now, that's a fine thing, to support other DOS versions and all, but it has some flaws:
- The EDR-DOS check requires that the first version of (D)CONFIG.SYS VERSION=x.y,z.w is set to a value of 6.00, and that the second version is larger than 7.00. (The default values of 6.00 and 7.01 confirm to this.) - To improve compatibility regarding the EDPB layout, the EDR-DOS EDPB will be expanded to contain another additional 2 bytes. DEVLOAD won't work with this EDR-DOS version. - Other DOS versions might use larger EDPBs (even larger than 67 bytes), too. To solve the problem, DEVLOAD could contain code to detect FAT32-capable DOS versions that support Int21.7302 by checking this support, instead of relying on DOS version numbers that can be modified by VERSION= or SETVER-like programs. It could further detect the actual EDPB size using the supported Int21.7302 then. (When using RBIL as reference, note that the buffer description of Int21.7302 is wrong. The word at offset 0 is a returned value only.) This would not require any EDR-DOS check. I could write this code as a proposal. This solution would drop the partial support (only if VERSION= used as explained above) for EDR-DOS 7.01.07 (and currently released 7.01.08 WIPs), because this EDR-DOS version returns a smaller, modified EDPB on Int21.7302. EDR-DOS 7.01.06 wouldn't be supported too, because it uses larger DPBs (2 bytes larger than the DOS-C and MS-DOS EDPB) and actually supports FAT32 but doesn't provide the Int21.73 functions at all. It however also doesn't return OEM value EEh on Int21.3000 so it currently isn't supported either. DOS versions that don't provide Int21.7302 (usually aren't capable of FAT32) but still use a larger DPB than MS-DOS aren't supported by current DEVLOAD either unless they confirm to the DOS version values for FAT32-capable MS-DOS versions (> 7.00). If this is the case, the proposed DEVLOAD version would drop support for these DOS versions. I discussed this with Eric and later with Udo. While Udo agreed to change the EDPB layout of EDR-DOS to more closely match that one of DOS-C and MS-DOS, and return the actual EDPB on Int21.7302 instead of a modified one, Eric apparently doesn't want to use a SETVER-independant FAT32 capability check (the problem affects other DOS versions with SETVER, too) and an algorithm that safely detects larger EDPBs on FAT32-capable DOS versions. What do you think of this? Should DEVLOAD work even if SETVER or a similar program (CALLVER, GIVEVER, etc)* is used? Should it allow DOS versions with larger, further extended EDPBs? * After all, the loaded device driver might want a specific DOS version. So you'd better expect people to use SETVER on DEVLOAD. Regards, Christian ------------------------------------------------------------------------------ _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel