MS-DOS Includes MSD.COM and MSD.EXE (104993)

The information in this article applies to:
    Microsoft MS-DOS operating system 6.2
    Microsoft MS-DOS operating system 6.21
    Microsoft MS-DOS operating system 6.22

This article was previously published under Q104993


MS-DOS includes two files to run Microsoft Diagnostics (MSD): MSD.COM and MSD.EXE.


MSD versions 2.0, 2.0a, and 2.01 do not interact correctly with expanded memory services (EMS) memory. MSD makes an INT 67h EMS call and passes an incorrect buffer pointer. The result is corrupted memory when INT 67h writes information to this invalid buffer.

To work around this problem, MSD.COM loads before MSD.EXE, hooks INT 67h, and then monitors for the MSD.EXE INT 67h call. MSD.COM patches the buffer pointer to point to the correct MSD.EXE data segment. This prevents the data corruption.

MSD.COM is used rather than making the change in MSD.EXE because MSD.COM can be used with any 2.x version of MSD.EXE. You can protect against memory corruption simply by placing the MSD.COM file in the directory where MSD.EXE is located.

Microsoft has confirmed this to be a problem in MSD versions 2.0, 2.0a, and 2.01. This problem was corrected in MSD version 2.1 (provided with Windows for Workgroups version 3.11).

Modification Type: Major Last Reviewed: 11/20/1999
Keywords: KB104993