Спасибо. Пока не готов. Ещу не доконца освежил мнемонику 8080, поэтому пока не. Но все равно спасибо, может когда нибудь дойдут рукиivagor
Если хочется удобной компоновки с бинарниками, продвинутых макросов и дополнительных директив препроцессора то можно расширить область поиска трансляторов ассемблера:
1. CP/Mные трансляторы. Для кросскомпиляции понадобится еще эмулятор cp/m типа такого
2. Вот такой вариант (правда для 8080 я его не пробовал, но для x86 fasmом пользуюсь)
3. Перейти на сторону синтаксиса z80 и тогда станут доступны продвинутые асмы для этого проца.
Подобные вопросы уже возникали в теме, стоит там посмотреть.
О! Вот это купер круто. Спасибо!svofski
Если ты исполнен отваги пользоваться препроцессором, в принципе обычный сишный препроцессор можно использовать с чем угодно, даже с TASM, потому что TASM поддерживает разделители в виде бекслеша. Попробовал по быстрому, вот как это выглядит.
Код:
$ cat tets.asm
#define ADD(xx,yy) clc \\
lda xx \\
adc yy \\
sta xx
ADD(foo,bar)
$ cpp -P tets.asm
clc \ lda foo \ adc bar \ sta foo
- - - Добавлено - - -
Заметил неприятную особенность TASM.
Максимальная длинна метки 32 (с учетом символа окончания строки). Но если используется директива .MODULE то максимальная длинна всех локальных меток уменьшается на длинную moduleLabel
т.е код ниже не скомпилируется изза того что максимальная длинна локальных меток для этого модуля будет 32-22=10, а длинна _restoreSP = 11
Код:.MODULE DrawSprite_Jerri_orig DrawSprite_Jerri_orig: MVI a,12 ; LXI h,0 DAD sp SHLD _restoreSP+1