PASM (PDP-11 Assembly) — 16-битный PDP-11 ассемблер с синтаксисом MACRO-11.
Ассемблер PASM поддерживает большую часть инструкций архитектуры PDP-11. Использует синтаксис, совместимый с MACRO-11. Ассемблер генерирует сырые бинарные файлы, т. е. в них нет заголовков для загрузки в какую-либо ОС под PDP-11. Он не генерирует объектные файлы, не делает релокацию памяти. Генерируемые файлы нельзя слиновкать, например, линковщиком LINK-11. Он генерирует бинарные файлы, которые можно сразу загружать в память PDP-11 (т. н. работа с голым железом). По умолчанию инструкции генерируются относительно 01000 адреса (октальный). В готовом бинарном файле присутствуют заголовки для прямой загрузки в память PDP-11, как это требовалось при реальной работе с PDP-11 (длина блока данных, адрес загрузки программы, данные программы, контрольная сумма). Выходной файл можно загрузить и выполнить, например, в симуляторе процессора SIMH PDP-11. Также стоит упомянуть, что исходный код писался в ОС Linux и не нацелен на кроссплатформенность, поэтому запуск в других ОС не гарантирует корректную работоспособность.
Для установки выполните следующие команды:
$ git clone https://github.com/dispronesson/pasm.git
$ cd pasm
$ make
В каталоге build/debug будет находиться исполняемый файл (pasm).
Для запуска выполните следующую команду:
$ ./build/debug/pasm --help
Для запуска готовых бинарных файлов рекомендуется это делать в симуляторе процессора SIMH PDP-11.
Выполните следующие команды в симуляторе:
sim> load path/to-your/programm
sim> go
По умолчанию программа загружается по адресу 01000. Адрес следующей инструкции (PC) устанавливается также на этот адрес при загрузке программы в память, так что нет необходимости писать go <address>.