Спасибо.
Смотрите как я генерю рабочий бинарь с правильными смещениями (это может помочь. Наверное):

Код:
OUTPUT_FORMAT("a.out-pdp11")
ENTRY(start)
phys = 00001000;
SECTIONS
{
    .text phys : AT(phys)
    {
        code = .;
        *(.text)
        *(.rodata)
        . = ALIGN(phys);
        *(.data);
    }
}
.bss убираю вообще, а .data подпихиваю в .text

Теперь так:

Код:
pdp11-aout-ld.exe -T %PdpDev%\Bin\pdp11-bin.ld %PdpDev%\Lib\crt0.o %1.o %Modules% %Libraries% -o %1.out
IF errorlevel 1 PAUSE
pdp11-aout-objcopy.exe --output-target binary %1.out ..\%1.bin
IF errorlevel 1 PAUSE
%PdpDev%\Bin\make-bk.exe ..\%1 512
IF errorlevel 1 PAUSE
Здесь всё хорошо, кроме ". = ALIGN(phys)" перед данными. Что туда добавить - так и не понял. Делаю ALIGN(phys+phys) и тоже работает, хотя ничего визуально не меняется (даже сам бинарь). Делаю мелкое число - глючит.