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
Atari pages accessed
times. Last modified: Fri Apr 16 17:13:26 1999
(c) 1999 Jindroush
Back