Digital Research IRL Dateiformat

Neben dem Original von Digital Research existiert die Beschreibung von John Elliott. Da beide etwas voneinander abweichen, habe ich sie hier auch beide ausgehängt.
Digital Research John Elliott

Digital Research
Das IRL-Format wird von den Standard-CP/M PLUS-Programmen LINK und LIB (von Digital Research, DR) unterstützt und erzeugt. Die folgende Beschreibung stammt aus dem Buch
Programmer's Utilities Guide for the CP/M TM Family of Operating Systems
von Digital Research.
Eine IRL-Datei besteht aus drei Teilen: Header, Index und einem REL-Teil.

Der Header besteht aus 128 Bytes und ist definiert wie folgt:

Der Index besteht aus einer Anzahl von Einträgen entsprechend den Entry-Symbolen im REL-Teil. Diese Einträge haben folgende Form:
e r b c1 c2 ... cn d
mit:

e=Extent-Offset vom Start des REL-Teils zum Start des Moduls
r=Rekord-Offset vom Start des Extent zum Start des Moduls
b=Byte-Offset vom Start des Rekords zum Start des Moduls
c1-cn=Name des Symbols
d=Anzeige des Symbolendes (0FEH)
Der Index ist beendet bei einem Eintrag von c1 = 0FEH. Der Rest des Rekords mit dem Eintrag des Endes ist ungenutzt.

Der REL-Teil besteht aus dem Standard-REL-Code.
John Elliott
Eine .IRL-Datei ist eine indizierte .REL-Datei, wodurch die Geschwindigkeit des Linkers deutlich erhöht wird. Sie besteht aus drei Teilen:


Der Datei-Offset in einer IRL-Datei ist drei Bytes lang (siehe oben):
	DB	high	; (Datei-Offset >> 14 ) & 0x7F
	DB	middle	; (Datei-Offset >>  7 ) & 0x7F
	DB	low	; (Datei-Offset     1 ) & 0x7F