Talk:DOS MZ executable

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

MZ and ZM[edit]

early docs said like "M and Z letters" with no particular order. Some even said ZM instead.

and DOS loaders i saw could use any of the stamps with no difference — Preceding unsigned comment added by 83.149.9.249 (talk) 23:19, 5 July 2011 (UTC)[reply]

Officially, it is "MZ" (4Dh 5Ah), however, you are right that it was erroneously published the other way around in some books (AFAIR even Microsoft ones - they often contain mistakes as such). Most DOS implementations (including all non-archaic issues of MS-DOS, PC DOS and DR-DOS and PTS-DOS) therefore accept both "MZ" and "ZM", but some very old implementations do not. (Possibly some recent emulator implementations do not as well.) Therefore "ZM" (5Ah 4Dh) should be (and typically is) avoided.
"ZM" is known to have been used by some very old Microsoft linkers.
--Matthiaspaul (talk) 18:15, 9 October 2013 (UTC)[reply]

MZP?[edit]

What about MZP's created by e.g. Borland C++ (for DOS and Windows platforms)? What does that "P" stands for? — Preceding unsigned comment added by 116.236.131.146 (talk) 14:13, 9 October 2013 (UTC)[reply]

If MZP is followed by a 0x00, it seems to me that that EXE has 80 remaining bytes at the end of the file, because "P", 0x00 = 0x5000 (Little-Endian) = 0x0050 (Big-Endian) = 80. Ben221199 (talk) 12:27, 21 July 2023 (UTC)[reply]

Chronology[edit]

I'm unable to find information about which DOS version was the first to support exe files. I remember that the primary motivation behind it was to use more than 64 KByte of memory, can the *.COM files are limited to that amount. --178.203.10.38 (talk) 23:41, 22 September 2019 (UTC)[reply]

It's DOS 2.0 (see e.g. here: https://wiki.osdev.org/MZ), but I can't find an authorative source right now. Jalwikip (talk) 19:25, 1 November 2020 (UTC)[reply]
Actually it is DOS 1.0. Looking at the source code of MS-DOS at GitHub (https://github.com/microsoft/MS-DOS) and some official floppy images at WorldWinPC (https://winworldpc.com/product/ms-dos/1x), you will see MS-DOS has some EXEs too with the defined EXE format. Ben221199 (talk) 12:30, 21 July 2023 (UTC)[reply]

Emulation/Compatiblity layers[edit]

Quick Google searches for "cygwin run dos application" and "cygwin run dos program" yields nothing relevant, and the claim that it would even try to do this makes no sense. It's a source code level and shell level compatiblity layer for *nix programs to run on Windows, DOS emulation is not a goal. Cygwin will most likely leave it up to the operating system to execute an exe file.

I also removed wine from the list since it just hands it over to Dosbox. (According to Wine (software)) Although, it's not wrong from the perspective of a Windows application trying to execute a DOS application.

--83.245.206.247 (talk) 16:59, 2 June 2022 (UTC)[reply]

Rename page and merge it with the ".exe" page?[edit]

Both COM (Command) and EXE (Executable), and actually BAT (Batch) too, appear in the first MS-DOS: https://github.com/microsoft/MS-DOS/blob/master/v1.25/source/COMMAND.ASM#L884. Batch has his own page: Batch file; COM has one too: COM file. However, EXE has two pages: .exe and DOS MZ executable. It seems to me that it is better to merge those two pages together, because EXE files are always MZ files and in case of newer operating systems this MZ header will always be used to find the location of the PE header (or NE, LE, LX, etc.) using e_lfanew. The new page will describe the MZ header in the first place and can have some section called Extension, Extended EXE or something else to explain what has been added in Windows 1.0 and OS/2. I suggest the page name Microsoft Executable (file), because the file is a executable developed by Mark Zbikowski at Microsoft for MS-DOS, Windows and OS/2, which are all Microsoft products. I suggest the name Microsoft Command (file) and Microsoft Batch (file) for the other two file types, but that should actually belong to their Talk-pages. Ben221199 (talk) 12:57, 21 July 2023 (UTC)[reply]