какой посоветуете ассемблер z80 для командной строки, чтобы умел генерировать intel hex на выходе?
Вид для печати
какой посоветуете ассемблер z80 для командной строки, чтобы умел генерировать intel hex на выходе?
sdasz80 из SDCC
Если некритично, что в литералах обязательна решётка # , а хексы пишутся как в Си через 0x
Вложение 81570Код:ld hl, #_Klad_idx
ld a, (hl)
add a, #0x0f
а как в нем директивы использовать?
Код:; test.asm
org #0x4000
call #0xcafe
;ld (iy+0),l
;djnz $
ret
Есть ли еще какие-то варианты, которые классический синтаксис Z80 асма понимают?Код:$ sdasz80 -o build/test.rel test.asm
test.asm:2: Error: <q> missing or improper operators, terminators, or delimiters
removing build/test.rel
sjasm наверно. Но мне нравится м80.) А потом, что мешает перегнать бин в хекс?
https://shop-pdp.net/ashtml/asxs02.htm#org
.org не пробовал. Там назначением адресов по идее линкер занимается.
Без понятия.
Дело же не хексе, как я понимаю. Основные фишки в самом трансляторе. Умеет ли IRP/IRPC, REPT, ну и макросредства должны быть на уровне. По крайней мере, это важно для удобства. Опять таки, если писать чуток и не изгаляться, то без разницы. Простых ассемблеров просто куча.)
В коде несколько блоков памяти в разных местах. В один bin файл такое не сохранишь.
Пока использую z80asm который в репозитории debian. Но он только в bin сохраняет и кучу файлов ненужных генерирует. Причем нельзя укзать в какую папку их писать, приходится делать вот так:
Хотя можно было одним файлом это все сразу в hex скомпилить и смещения для сборки hex файла не нужно было бы отдельно задавать - сразу в исходнике из org брать.Код:#!/bin/bash
set -e # Exit on any error
cd "$(dirname "${BASH_SOURCE[0]:-$0}")"
mkdir -p ./build && cd build
z80asm -o jetpac-hack1.bin ../jetpac-hack.asm
z80asm -o jetpac-hack2.bin ../jetpac-hack2.asm
z80asm -o jetpac-hack3.bin ../jetpac-hack3.asm
srec_cat jetpac-hack1.bin -binary -offset 0x7345 \
jetpac-hack2.bin -binary -offset 0x737d \
jetpac-hack3.bin -binary -offset 0x739c \
-o jetpac-hack.hex -Intel
rm jetpac-hack?.bin
С другой стороны undoc инструкции вроде ld (ix+offset),l поддерживает. sdasz80 не понимает, да и с синтаксисом у sdasz80 чтото совсем плохо.
Допустим первый исходник генерирует 50-100 блоков с разными адресами. Повреждать память между этими блоками нельзя.
Если сохранять это всё в 50-100 бинарников, как предлагаете собирать все это в хекс? Ведь для каждого бинарника нужно распарсить из результатов компиляиции начальный адрес.
При компиляции в hex на выходе просто имеем hex файл который содержи все эти блоки с нужными адресами. Никаких дополнительных телодвижений не нужно.