экстрактни тогда menu.C файл из диска создавшегося и посмотри, он идентичен menu.bin или нет?
И у меня тоже такой же билд и он не собирает... Выложи чтоли, подозреваю там были нюансы.
Вид для печати
экстрактни тогда menu.C файл из диска создавшегося и посмотри, он идентичен menu.bin или нет?
И у меня тоже такой же билд и он не собирает... Выложи чтоли, подозреваю там были нюансы.
На самом деле, не совпадают... Это верно: потому что код находится в адресах, начинающихся с 16384, но компилится под 23867. Получается, что в переменной menu лежит значение от 23867, а надо от 16384, то есть menu-23867+16384. Тогда page и org убираем и пишем:
Получается такой же файл. Правда когда dehrust, screen1 и прочие привел к такому же виду, программе не хватило адресного пространства :) Может, лучше использовать для этой цели утилиту TRDETZ.EXE, и прописать в asm.bat подобную строчку после компиляции:Код:menu
INCBIN "Packed/menuscr.bin"
menu_
SAVETRD "mercenar.trd","menu.C",menu-23867+16384,menu_-menu
SAVEBIN "11d",menu-23867+16384,menu_-menu
trdetz.exe mercenar.trd fwrite Packed\menuscr.bin menu.C
и т.д.? Адрес загрузки кода с помощью этой утилиты устанавливать тоже можно.
Прилагаю свой SjASMPlus и trdetz
стоп, кто там компилится в 23867? он откомпилился, сохранил, точка. При чем тут последующий код, у которого другой орг?
Проблему решил путём добавления ENT перед EMPTYTRD "trd.trd". Похож, случайно его задел, вот и проблемы пришли :) Спасиб в общем.
---------- Post added at 08:34 ---------- Previous post was at 08:22 ----------
Читай название темы. Это я как модератор говорю. Не нужно флуда.
---------- Post added at 09:31 ---------- Previous post was at 08:34 ----------
блин еще одна проблема. неправильно считается размер. то есть смотри, вот там файлы подключаются, например part1
если воткнуть куда-нить в основной блок display part1_-part1 выведет чего-то типа #4BC2, что вообще неверное в корне; а если в конец после инклуда этого парт1 - выведет правильное значение. Что за ерунда o_O Он же многопроходный.
Пока обошел в виде equ, но это блин реально бред.
Я потерял тот архив :) Кинь еще раз, плз?
Сейчас попробовал ввести вот такой код, и он вроде верно посчитал размер...
Код:DEVICE ZXSPECTRUM128
PAGE 0
ORG #4000
DISP 23867
DISPLAY adat_-adat
DISPLAY adat1_-adat1
ENT
PAGE 0
ORG #C000
adat
INCBIN "a.dat"
adat_
DISPLAY adat_-adat
PAGE 0
ORG #4000
adat1
INCBIN "a.dat"
adat1_
DISPLAY adat1_-adat1
У меня уже тоже его нет... Он кстати небольшие блоки нормально мне тоже посчитал.
Ладно, сейчас подумаю как быть.
Короче во вложении. Выводит после компиляции 2 числа. Они должны быть идентичны (первое число - это данные из equ part1_-part1, стоящее сразу после инкбина файла, второе - это непосредственно display part1_-part1), однако хрен там, они разные. Почему так - нет идей.
Там метка part1 определена еще в коде рядом. Он ее берет за нижнюю границу, когда считает в этом месте, похоже
Код:display high (part1_len+255) + high (scr_len+255)
display high (part1_-part1+255) + high (scr_-scr+255)
part2
call adder
jr lod_
part1
ld hl,0
ld (mod_),hl
Блин, точно :) Чет взгляд замылился видать.
Может кто-нибудь может дать мастер-класс по сжасму? Я еще по старинке XASом кодю. Интересно было бы посмотреть где удобнее.
А чего там давать. Бери да кодь. Только мнемоники придётся целиком писать. Ну и в конце SAVESNA чтобы результат сразу в эмуляторе глянуть.