Как включить файл, заданный в качестве параметра макроса в ca65

Я пытаюсь написать макрос ca65, который должен включать файл, указанный в качестве параметра макроса. ca65 — ассемблер компилятора cc65.

Хотя я научился работать с командой .incbin:

      .macro includethis4 filename
  .incbin .concat (filename, ".", "i")    ;this works
.endmacro

includethis4 "dummyfile"   ;this works!

Я получаю сообщение об ошибке «Ошибка: ожидается строковая константа» при использовании .include вместо .incbin

      .macro includethis3 filename
  .include .concat (filename, ".", "i")    ;this fails
.endmacro

includethis3 "dummyfile"   ;this fails!

Мне ясно, что .include и .incbin делают разные вещи; .include включает файл в исходный код и анализирует его, а .incbin добавляет содержимое файла в выходные данные. Для моего приложения мне нужен .include.

Использование .include с объединенной строкой работает вне макроса:

      .include .concat ("dummyfile", ".", "i")    ;this works

Та же строка с константной строкой по-прежнему вызывает сообщение «Ошибка: ожидается строковая константа» при использовании в макросе, даже если макрос не имеет параметров:

      .macro includethis2 
  .include .concat ("dummyfile", ".", "i")   ;this fails
.endmacro

includethis2    ;this fails

Мой тестовый файл «dummyfile.i» был пуст, поэтому побочных эффектов от включенного файла быть не могло. Команда для сборки моих примеров была

      ca65 testmacroinc.s

Мои вопросы:

  1. почему это работает с .incbin, но не с .include?
  2. как я могу достичь функциональности.include .concat (filename, ".", "i")внутри макроса?

0 ответов

Другие вопросы по тегам