[an error occurred while processing this directive]
|
для "чисто асма" правильно так:
1). Объявить секцию ".vectors". В ней расположить командами ".ivect" все вектора, включая нулевой - то есть резета. нулевой вектор указать на твой 'main', и параметрами указать режим стека. например у меня нулевой вектор объявлен
vecs: .ivec begin, USE_RETA
;и далее остальные .ivec
2). Объявить секцию например ".init". Там поставить метку start: , загрузить SP, SSP, IVPD, IVPH. В IVPD и IVPH. Последние грузить например так
mov #vecs>>8,mmap(@IVPD)
mov #vecs>>8,mmap(@IVPH)
и после загрузки этих регистров и требуемого кол-ва NOP выполнить команду RESET. Метку start объявить глобальной.
3). В секции .text поставить метку begin: и писать свою прогу.
Осталось написать .cmd файл для линкера, расположив там все секции как надо. И .cmd файл для HEX55, в котором объявить секции, экспортируемые в boot table и метку "start" как entry-point. У меня этот CMD выглядит так
debug\bootload.out
-i
-memwidth 8
-boot
-serial8
-v5510:2
-e start
SECTIONS { .vectors = boot, .init = boot, .text = boot, .data=boot, .n2270_data=boot }
А вот откуда у Вас берется лабуда, я не знаю.... Меньше всяких C-run time прилинковывать надо.
E-mail: info@telesys.ru