А теперь посмотрим на исходники, на которые дал ссылку Error404. Интересует, как они конвертируют номер записи:

Скрытый текст

Код:
LDFCB:	LD	(RDWR),A	; Save Read/Write flag
	LD	A,(IX+33)	; Get first byte random record
	LD	D,A		; Save it in D
	RES	7,D		; Reset MSB to get next record
	RLA			; Shift MSB in carry
	LD	A,(IX+34)	; Load next byte random record
	RLA			; Shift Carry
	PUSH	AF		; Save it
	AND	MAXEXT		; Mask next extent
	LD	C,A		; Save it in C
	POP	AF		; Get byte
	RLA			; Shift 4 times
	RLA
	RLA
	RLA
	AND	0FH		; Mask it
	LD	B,A		; Save data module number
	LD	A,(IX+35)	; Get next byte random record
	LD	E,6		; Set random record to large flag
	CP	4		; Test random record to large
	JR	NC,LDFCB8	; Yes then error
	RLCA			; Shift 4 times
	RLCA
	RLCA
	RLCA
	ADD	A,B		; Add byte
	LD	B,A		; Save data module number in B
	LD	(IX+NXTREC),D	; Set next record count
	LD	D,(IX+FCBMOD)	; Get data module number
	BIT	6,D		; Test error random record
	JR	NZ,LDFCB0	; Yes then jump
	LD	A,C		; Get new extent number
	CP	(IX+FCBEXT)	; Compare with FCB
	JR	NZ,LDFCB0	; Not equal then open next extent
	LD	A,B		; Get new data module number
	XOR	(IX+FCBMOD)	; Compare with data module number
	AND	MAXMOD		; Mask it
	JR	Z,LDFCB6	; Equal then return
LDFCB0:	BIT	7,D		; Test FCB modified (write)
[свернуть]

Обратите внимание на выделенные красным цветом строчки. Правильно ли запомнились в стеке 4 бита расширенного номера экстента? Или может быть нужно было только 3 раза потом сдвиг делать?