Да, постараюсь побыстрее, но как получится. Прикладываюсь к этому делу урывками...
В общем случае:
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):
Код:
;=======================================================================
; 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
;=======================================================================
либо (формат fasm - не проверял)
Код:
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