Вчера меня понесло на подвиги: увидел эмулятор и рискнул скомпилировать боекомплект. make сразу подавился, поэтому я вручную переделал исходник и скомпилировал. Программа потребовала некий файл. Нашел бестолковый комплект ассемблеров asN, скомпилировал и стал писать код. Посмотрел на исходник - эмулятор поддерживает вызовы FlexOS:
#define FLEX_WARMS 0x0003
#define FLEX_PSTRNG 0x001E
#define FLEX_PUTCHR 0x0018
#define FLEX_GETCHR 0x0015
Адрес зависит от выбранного типа процессора, для 6800 это адрес $AD00, $AD1E - печать строки с параметром регистр X указывает на строку текста, конц строки - байт 4. Написал программу:
LP:
JSR $AD1E * FLEX_PSTRNG
FCB 0
MSG:
FCC 'Hello,6800!'
FCB 13,10,4 * End of string
END
Новая засада - на выход получил только s19. Нашел утилиту и собрал снова
srec_cat prb.s19 -o prb.bin -binary
Эмулятор отработал код и выплюнул строку с мусором впереди. Стал разбираться - утилита неверно преобразует .s19 в .bin, а эмулятор загружает бинарь по адресу $100. Немного правок - получил сообщение на экране. Стали изучать код эмулятора и нашел проверку файла на формат .CMD(это файл FlexOS)и загрузку. Пытался скомпилировать программу в .CMD разными способами - не заработало. Стал искать другой ассемблер и нашел. Скомпилировал - не работает. Стал проверять: LDX превратилось в LDS. Сравнил исходник - неверный опкод в таблице. Исправил, скомпилировал - теперь работает. На GitHub уже заявлено неслабо проблем, а автор не шевелится вообще. Скомпилировал .cmd, запустил - эмулятор стартовал с адреса 0 и спотыкается на неверных опкодах. Стал копаться в исходниках - формат .cmd выглядит как байт 2, слово <начальный адрес>, байт <длина>, <последовательность байтов>, байт $16, слово<стартовый адрес>. Долго разбирался, как правильно написать исходник, подсказал Google:
* compile.bat: a09 -fprb.cmd prb.asm
START:
LDX #MSG
LP:
JSR $AD1E
FCB 0
MSG:
FCC 'Hello,6800!'
FCB 13,10,4
END START
Теперь сработало. Поиски вывели на еще одну страницу, с готовыми программами x64. Скомпилировал эмулятор,стал разбираться - для работы эмулятору нужны готовые программы формата .s19, но в комплекте не нашлось. Нашел исходники, но так и не сумел правильно скомпилировать. Весь комплект.
Не знаю, наберу ли силы на поиски вменяемого ассемблера, но все же надеюсь.

Комментарии
Отправить комментарий