New Executable


The New Executable is a 16-bit.exe file format, a successor to the DOS MZ executable format. It was used in Windows 1.0–3.x, multitasking MS-DOS 4.0, OS/2 1.x, and the OS/2 subset of Windows NT up to version 5.0. A NE is also called a segmented executable.

History

The first product to be released using the New Executable format was Windows 1.0 in 1985, followed by the 1986 multitasking MS-DOS 4.0, which was a separate branch of MS-DOS development, released between mainstream MS-DOS versions 3.2 and 3.3, and sometimes referred to as "European MS-DOS 4.0".
OS/2 1.0 was not released until 1987, but the "target operating system" field in the file header reserves value 01 for OS/2, and 02 for Windows, suggesting that the format was designed with OS/2 already in mind, the Joint Development Agreement between IBM and Microsoft for OS/2 having been signed in August 1985, a few months before Windows 1.0 was released in November 1985.
The Portable Executable format replaced NE format in 32-bit and 64-bit versions of Windows, while Linear Executables replaced NE for 32-bit programs in OS/2.

Compatibility

While designed for 16-bit OSes, NE executables can be run on 32-bit Windows. Beginning with Windows Vista, icon resources inside New Executables are not extracted and shown even by the 32-bit shell. 64-bit versions of Windows completely lack native support for running NE executables, because 64-bit Windows cannot run 16-bit programs on the processor without the help of an emulator.
Due to the rare and fairly complex nature of these files, only a few.EXE packers support it: WinLite, PackWin, PKLite 2.01, and SLR Optloader or NeLite for OS/2. The NE format is also still used as container for .fon Microsoft Windows bitmapped fonts.

DOS stub

New, linear, and portable executables retain the DOS MZ format file header for backward compatibility with DOS. When run under DOS, a so-called DOS stub is executed which usually prints a "This program cannot be run in DOS mode " message and exits. This constitutes a minimal form of a so called fat binary. Windows 1.0 executables, however, have their file header formatted in such a way that DOS refuses to run them with the "Program too big to fit in memory" error message; see Windows 1.0 Features.