Уточняю - набор директив.Набор команд однозначно определяется целевым процессором.
"Функции по макросам", вероятно, умеет любой вменяемый МАКРОАССЕМБЛЕР.
Спектрумовские, за исключением ALASM, такой возможностью не обладают.
Да и ALASM не особо... Вменяемый макропроцессор в моём понимании, если что,
это m4.
Что такое "короткие записи" я не знаю.
А STRUCT макропроцессоры все умеют? Или надо искать препроцессор, который бы это мог? А сохранять в SNA, например? Или надо еще и линкер искать для ZX? А ECHO по ходу компиляции, чтобы листинг не читать, а сразу видеть размеры/точки/etc.? А MODULE и записи вида <module>.<label>? А INSERT (INCBIN)?
А "короткая запись" - это типа PUSH HL,DE,BC,AF... Крайне полезная фича
В общем, для кроссассемблинга на ZX мой выбор - SJAsm+. Удобнее пока не встречал. А на самом ZX нравятся ALASM и ZXASM (ZASM), но использовать их в Unreal по уже описанной причине - грабли, а реала, увы, нет.