Последняя редакция: 7.05.2004


                         IRL формат
                         ~~~~~~~~~~

  IRL-файл представляет собой индексированный REL-файл. Благодаря индекси-
рованию улучшается работа линкера. В начале IRL-файла находятся 3 байта:

	db	старший		;+0  (File offset >> 14) & 0x7F
	db	средний		;+1  (File offset >>  7) & 0x7F
	db	младший		;+2  (File offset     1) & 0x7F

IRL-файл состоит из 3 секций: IRL-заголовок, Символьная таблица и REL-имидж.


 IRL-заголовок
 ~~~~~~~~~~~~~
Массив 128 байт в начале REL-файла. Используются только первые три байта,
содержащие смещение до REL-имиджа. Остальные байты установлены в ноль:

	db	старш,средн,0  ; Смещение до REL-имиджа. Младший байт
			       ; всегда равен 0. Начало REL-имиджа вы-
                               ; равнивается на границу в 128 байтов.
	ds	125	       ; Не используются и установлены в 0.

Чтобы вычислить смещение до REL-имиджа, надо "старший" и "средний" байты
умножить на 128. Например для файла clib.irl: 0011h * 128 = 0880h

	ld	h,xx		;+0
	ld	a,xx		;+1
	;a,h,l * 128
	add	a,a
	ld	l,a
	xor	a
	srl	h
	rr	l
	srl	h
	rr	l
	rra
	;hl=ст.разряд
	;a=мл.разряд

Обратите внимание, что 7-й бит первого байта всегда 0. В не индексированном
rel-файле, 7-й бит первого байта всегда 1 (первый бит записи "имя модуля").


 Символьная таблица
 ~~~~~~~~~~~~~~~~~~
Таблица начинается со смещения +80h от начала файла и состоит из множества
символьных записей разной длины. Каждая запись имеет формат:

	db	ст,средн,мл	; Смещение от начала rel-имиджа до rel-модуля,
				; содержащего символьную строку (имя).
	db	"SYMBOL"	; Символьная строка из 1..8 символов.
	db	0FEh		; Конец строки.


Конец таблицы отмечается 0 в начале символьной строки:

	db	ст,средн,0	; Размер REL-имиджа. Это не смещение на конец
				; файла в REL-имидже, а показывает число байт
				; REL-имиджа, включая выравнивание до границы
				; в 128 байт.
	db	0FEh		; Конец строки.

 Примечание!: У irl-файлов от библиотекаря "OL", данная запись имеет формат:

	db	0,0,0
	db	0FFh

После этой записи, таблица выравнивается (LIB использует байт 1Ah) до следу-
ющей границы в 128 байт.


 REL-имидж
 ~~~~~~~~~
REL-имидж всегда начинается с границы в 128 байт. Состоит из обычных rel-
данных. Чтобы преобразовать IRL-библиотеку в REL-библиотеку, надо удалить
заголовок и символьную таблицу.
