On Tue, 9 Jun 2015, John Elliott wrote: >> If you can mark the EXEs as something other than MZ, you could perhaps >> make a TSR loader stub that loads an x86 emulator on demand to run EXE >> files. >> >> COM... I think you're gonna be stuck with using only an EXE format because >> trying to detect a COM file by architecture is fraught with peril. > > I'd suggest using 0xC3 0x00 as a magic number for any non-8086 executable. > Or, for preference, using a 4-byte magic number: 0xC3 0x00 0x00 followed by > a byte giving the supported CPU architecture. Then the logic in the loader > would be: > > 0xC3 0x00 0x00 <suitable architecture> -> run as native EXE > 0xC3 0x00 0x00 <unsuitable architecture> -> return an error > 0x4D 0x5A (or 0x5A 0x4D) -> run in emulator as x86 EXE > anything else -> run in emulator as x86 COM > > The reason for using 0xC3 0x00 as the magic number is that no useful > DOS COM file will start with those bytes (0xC3 is x86 for RET). The extended > sequence 0xC3 0x00 0x00 also rules out CP/M-80 COM files, which might start > with 0xC3 but won't follow that with two zeroes. > >
Do "ZM" EXEs actually exist? I've also been curious as to what the format is for .TOS binaries (since GEMDOS has such a similar API to MS-DOS). -uso. ------------------------------------------------------------------------------ _______________________________________________ Freedos-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freedos-devel
