EXE File Format Description

An Atari 8-bit binary load file (executable) consists of one or more segments whose format is listed in table 1.

#### Header

The first segment must begin with $FFFF word to indicate it is a binary load file. For later segments the header is optional.

#### Init

After each segment is loaded, word at location $02E2 is checked to see if it was filled in with an INIT address. If so, that location is called as a subroutine before processing any additional segments.

#### Run

After all segments are loaded, if word at location $02E0 was filled in it is called for the run address. Some command line DOS's may attempt to automatically run a program from the start address of the first segment if no run address is specified if the file ends in .COM and is typed on the command line.

Atari executables can have virtually any extensions but EXE or COM are most common.

Offset | Description
--- | ---
00-01 | $FFFF - Indicates a binary load file. Mandatory for first segment, optional for any other segment
02-03 | Start Address. The segment will load at this address
04-05 | End Address. The last byte to load for this segment
06-?? | The actual segment data to load (End Address-Start Address + 1 bytes)
table1

#### Example

This example was created by my ChkExe program.

    Binary file:  intro1.exe
    [0002] Block:  3019-31EF (01D7)
    [01DD] Block:  0480-06D3 (0254)
    [0435] Block:  3000-3007 (0008)
    [0441] Init :  3019
    [0447] Block:  6000-6908 (0909)
    [0D54] Block:  3000-3007 (0008)
    [0D60] Init :  3019
    [0D66] Block:  7000-7730 (0731)
    [149B] Block:  3000-3007 (0008)
    [14A7] Init :  3019
    [14AD] Block:  7800-7BFC (03FD)
    [18AE] Block:  3000-3007 (0008)
    [18BA] Init :  3019
    [18C0] Block:  9000-934A (034B)
    [1C0F] Block:  3000-3007 (0008)
    [1C1B] Init :  3019
    [1C21] Run  :  0480

Back (c) 1998-2004 Jindroush Last modified: Fri Apr 16 17:13:26 1999