A.3 The Header

The header consists of a record (tppuheader) containing several pieces of information for recompilation. This is shown in table (A.1). The header is always stored in little-endian format.

Table A.1: PPU Header

offsetsize (bytes)description

00h 3 Magic : ’PPU’ in ASCII
03h 3 PPU File format version (e.g : ’021’ in ASCII)
06h 2 Compiler version used to compile this module (major,minor)
08h 2 Code module target processor
0Ah 2 Code module target operating system
0Ch 4 Flags for PPU file
10h 4 Size of PPU file (without header)
14h 4 CRC-32 of the entire PPU file
18h 4 CRC-32 of partial data of PPU file (public data mostly)
1Ch 8 Reserved

The header is already read by the ppufile.openfile command. You can access all fields using ppufile.header which holds the current header record.

Table A.2: PPU CPU Field values


0 unknown
1 Intel 80x86 or compatible
2 Motorola 680x0 or compatible
3 Alpha AXP or compatible
4 PowerPC or compatible

Some of the possible flags in the header are described in table (A.3). Not all the flags are described, for more information, read the source code of ppu.pas.

Table A.3: PPU Header Flag values

Symbolic bit flag nameDescription

uf_init Module has an initialization (either Delphi or TP style) section.
uf_finalize Module has a finalization section.
uf_big_endian All the data stored in the chunks is in big-endian format.
uf_has_browser Unit contains symbol browser information.
uf_smart_linked The code module has been smartlinked.
uf_static_linked The code is statically linked.
uf_has_resources Unit has resource section.