Hello,6800!

 


Вчера меня понесло на подвиги: увидел эмулятор и рискнул скомпилировать боекомплект. make сразу подавился, поэтому я вручную переделал исходник и скомпилировал. Программа потребовала некий файл. Нашел бестолковый комплект ассемблеров asN, скомпилировал и стал писать код. Посмотрел на исходник - эмулятор поддерживает вызовы FlexOS:

#define FLEX_ENTRY (CPU.emu6800 ? 0xAD00 : 0xCD00)
#define FLEX_WARMS 0x0003
#define FLEX_PSTRNG 0x001E
#define FLEX_PUTCHR 0x0018
#define FLEX_GETCHR 0x0015

Адрес зависит от выбранного типа процессора, для 6800 это адрес $AD00, $AD1E - печать строки с параметром  регистр X указывает на строку текста, конц строки - байт 4. Написал программу:

LDX #MSG+256
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

ORG $100
START:
LDX #MSG
LP:
JSR $AD1E
FCB 0
MSG:
FCC 'Hello,6800!'
FCB 13,10,4
END START


Теперь сработало. Поиски вывели на еще одну страницу, с готовыми программами x64. Скомпилировал эмулятор,стал разбираться - для работы эмулятору нужны готовые программы формата .s19, но в комплекте не нашлось. Нашел исходники, но так и не сумел правильно скомпилировать. Весь комплект.

Не знаю, наберу ли силы на поиски вменяемого ассемблера, но все же надеюсь.

Комментарии