Да, постараюсь побыстрее, но как получится. Прикладываюсь к этому делу урывками...
В общем случае:
fasmg myfile.asm myfile.bin
В исходнике на первом месте должен быть включен файл 8085.inc
Если включить в исходник файл rks.inc и поставить в начале кода макрос RKS_START, а в конце RKS_END, то к бинарнику добавится заголовок с начальным и конечным адресом (как на магнитной ленте), а в конце - 2 байта, имитирующие контрольную сумму (эмулятор ее не проверяет, но ожидает)
проще всего положить все в одну папку: fasmg, 8085.inc, rks.inc и исходник - и собрать в командной строке.
а проект для WinAsm Studio придется настроить, это я сделаю
- - - Добавлено - - -
вот вам привет для начала.
для линукса файлам fasmg и build сначала установить признак "исполняемый"
- - - Добавлено - - -
так, стоп!
хорошо, что я скачал зип с форума фасма...
я туда почему-то старый архив залил (или он не заменился) - там старая версия. в принципе там все работает, кроме условных возвратов и есть проблема с использованиям $... в понедельник исправлю.
- - - Добавлено - - -
спасибо хорошему человеку, который выложил rku не в раре
напоминаю, что при записи на ленту специалист, в отличие от рк86 и остальных подобных, писал в заголовках сначала младший байт адреса, а потом старший. поэтому пользователям ЮТ, РК86 и т.д. рекомендую использовать вместо rks.inc rk.inc с таким содержимым (формат fasmg):
либо (формат fasm - не проверял)Код:;======================================================================= ; Macros to create tape header and tail ; for emulator of some soviet computers ;----------------------------------------------------------------------- macro RK_START? rk_org:0 db rk_org shr 8 db rk_org and 255 db rk_end_ shr 8 db rk_end_ and 255 org rk_org end macro ;----------------------------------------------------------------------- macro RK_END? rk_end_ = $ - 1 dw 0 end macro ;======================================================================= macro ENDM? top:65535 if $>top err "out of memory limit" end if end macro ;=======================================================================
,Код:macro rk_start _off { local _org if _off eq rk_org = 0 else rk_org = _off end if db rk_org shr 8 db rk_org and 255 db rk_end_ shr 8 db rk_end_ and 255 org rk_org } macro rk_end { rk_end_ = $ - 1 dw 0 }
а в тексте программы использовать не RKS_START и RKS_END, а RK_START и RK_END




)
Ответить с цитированием