экстрактни тогда 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 чтобы результат сразу в эмуляторе глянуть.
А отлаживать потом как? У меня еще ни одна хрень сразу не заработала, всегда находились ошибки, опечатки, неправильный подход обработки адресов и т.п.
Из Ксасма можно в STS прыгнуть протрассировать, воскликнуть "Аааа!" и обратно прыгнуть в Ксасм, исправить и опять в STS и так до полной победы. У сжасма есть какой-нибудь монитор?
Сжасм это компилятор, какой еще монитор :) Монитор есть у Unreal Speccy. Короче вон бери Курлесовскую сборку и вперед, она позволяет ставить брейкпойнты прямо в тексте программы.
Ну или как я - сохраняешь снапшот, в самом начале ставишь jr $ и открываешь снапшот Unreal'ом, далее трассируешь.
Не понял, компилятор это что такое? Я думал сжасм это ассемблер. Извиняюсь, я наверно ошибся, не туда попал.
О боже мой. Имел ввиду, что вообще программа, которая переводит из ассемблера в машкод называется компилятором. Короче ладно, для простоты - sjasm ассемблер для PC, программу ты пишешь в простом текстовом файле, так что никаких там адских STS и прочего у тебя не будет. На выходе будет снапшот ну или в файл или в диск записать можно. Далее это надо загрузить в эмулятор типа Unreal и там уже трассировать.
Это только поначалу кажется неудобным. Потом наоборот привыкаешь и думаешь "как вообще можно все это делать в ассемблере для спектрума, это ж неудобно кошмар как для больших программ".
Сомнительно мне всё же. Однако многие пользуются сжасмом и отзываются о нем положительно, так что я в замешательстве. Поэтому и спрашивал мастер класс что бы понаблюдать за тем как кто-то успешно его применяет. Все таки когда видишь, то это гораздо доходчивее чем когда об этом читаешь.
Тебе видео чтоли записать, как я его применяю? Я не понял, что ты хочешь.
Нет, пожалуй это будет слишком обременительно, достаточно было бы просто пару скринов с комментами типо: "...вот открываем, вот тут прописываем то-то и то-то иначе не заработает, тут пишем Hellow World, вот так завершаем, а так переключаемся в эмуль, а так и так удобно отлавливать глюки...удобство в том то и том то. Фсё!" Просто когда переходишь с одного интерфейса на другой почти всегда первый опыт неудачный, а было бы описано по шагам самый минимум с чего начать и как довести до завершения - это помогло бы преодолеть растерянность по ходу освоения.
Впрочем извиняюсь: я тут просмотрел свои исходники, их дохрена. И переписывать все это заново в сжасме слишком большая работа. Пока не буду дергаться. Может когда-нить потом что-то новое буду начинать и попробую в сжасме. Вот тогда и взбудоражу расспросами.
ЗЫ. Только один вопрос, как в текст асма бинарный файл внедрить, например курсор - восемь фаз стрелки с маской?
Так же, как и в большинстве спектрумовских ассемблеров:
- подгрузить бинарный файл при помощи INCBIN <filename>[,offset[,length]], он же INSERT, он же BINARY
- подгрузить файл прямо из TRD при помощи INCTRD <filenameoftrdimage>,<filenameintrdimage>[,offset[,length]]
- вставить DB или DW с данными
Valeron, у тебя какое-то предубеждение относительно SjASM =)
Ну выложи какой-нить исходник, я опишу что надо сделать, чтобы он заработал в sjasm. Вообще-то он поддерживает 90% мнемоник всех ассемблеров со спектрума, так что я сомневаюсь, что надо будет много переделывать.
А скриншоты ничего не дадут - я например предпочитаю все подряд редактировать в Far - сомневаюсь, что много людей делает так же. Текстовых редакторов море, выбирай любой.
У меня тоже. Тем не менее Fire and Ice и IF Creator были написаны на реале вообще без какого либо дебагера (я конечно знал что есть некий СТС но с ним делать не понимал).
SJAsm запускается из командной строки. Какой тут может быть интерфейс? А формат ассемблера скорее всего процентов на 99% совместим с Ксасом.
Ну значит ты круче меня, потому что у меня на дебагинг уходит в три раза больше времени чем на кодинг. :smile:
---------- Post added at 16:21 ---------- Previous post was at 16:18 ----------
Проходи мимо, потому что то что ты пишешь для меня это клинопись. Большинства асемблеров я не знаю, знаю только ксасм и немножко попользовался аласмом. И да, у меня есть предубеждение, я хочу всему научиться, что бы все уметь и нихрена не делать.
---------- Post added at 16:24 ---------- Previous post was at 16:21 ----------
Ну вот теперь становится понятно что программу нужно набирать в текстовом редакторе, а сохранять как? Как текст? И скармливать сжасму именно этот текст? Как то необычно. Значит все удобства интерфейса это удобство текстового редактора? Кстати Word подходит? Или только досовский .txt?
Не вполне понимаю какие исходники ты просил, вот у меня ТРДшник с ксасмом и на нем исходники, уже второй год их мусолю. Бери файл MAINPROG. Остальные файлы подгружаются этим файлом при асемблировании. Надеюсь ты знаком с интерфейсом самого ксасма и разберешься.
Что скажешь, реально это как-нибудь переконвертить под сжасм?
нУ короче я переконвертил за 3 минуты. При этом из них 2 минуты исправлял LTEXT на INCLUDE, LCODE на INSERT и добавлял DB к просто " где это было нужно. Ну и поправил название переменной, ты в одном месте обращался как к fl_black, её не было естессно, исправил.
Все на первый взгляд работает, тока в XAS стартует сразу с рисования, а у меня после компиляции в виде окошка выбирать, не знаю почему, тебе виднее. Могу положить результат, если интересно.
Можешь и в ворде наверное сохранять в виде text msdos, но это неудобно я думаю.Цитата:
Или только досовский .txt?
Круто! Покажи!
Меня Jerri научил, как работать с sjasm. Только нафига такие сложности, если в эмуляторе EmuZWin2.7 есть и ассемблер (с разной подсветкой текста), и дебаггер, и сами спектрумы разных моделей - всё в одном флаконе. Я вот на нем и сижу :)
Да пожалуйста. SNA можешь сразу загрузить и посмотреть. Ассемблируется без ошибок, но работает, как я уже сказал, как-то иначе. Ну и плюс если тебе TR-DOS надо, то надо не в снапшот сохранять, а в образ диска лучше, а то в снапшоте про трдос ни сном ни духом.
Кому чего. Мне не нравится он, неудобный редактор и совсем неудобный дебаггер.
---------- Post added at 20:12 ---------- Previous post was at 20:09 ----------
Ну у меня в FAR стоят плагины от Half Elf, так что я просто тупо открываю любой файл внутри TRD и он показывается уже перекодированным в текст, так что я просто скопировал файлы с диска на винт в папку, поправил заменой 2 команды и всё...
Да ты шаман!!! :v2_thumb:
Да, снапшот не работал потому что был зациклен на выделении. Оказалось что в драйвере клавиатуры вместо RRC B стало RLC B, то есть ротации поменяли направление. Прямо в дебагере поправил и все заработало. Но нет дисковых функций. Что мне тут еще добавить что бы он с ТРД заработал?
Ну тебе тут добавить какой-нить лоадер для трдоса например и сохранения твоего шаманства в виде единого кодового блока. Ну завтра могу тебе накидать, там не более 5 минут это займет.
---------- Post added at 00:22 ---------- Previous post was at 00:19 ----------
Ну выходит у Half Elf неправильно открывается исходних XAS, надо ему багфикс написать...
Постой, не спеши! У меня еще половина туду не выполнена. Просто нужно дисковые функции потестить, глюки половить, пока что гружу твой снапшот, потом вставляю в эмуль чистый диск и на нем отрабатываю. Но желательно что бы в образ собиралось. Я еще в этом не разобрался, просто скажи что поменять что бы не снапшот, а трдшник на выходе получался. И посоветуй какой сжасм брать, в смысле есть разница в версиях там, ну или еще какие-то нежелательные вещи?
сжасм последний бери и пользуйся.
В образ чтобы собиралось надо SAVETRD писать, но тогда будет неудобно каждый раз писать "LOAD CODE" в трдос и запускать еще, так что лучше сразу загрузчик написать. В общем я это уже сделал во вложении, просто ассемблируешь load.a80 и у тебя собирается valeron.trd с бейсик-загрузчиком в TR-DOS и кодовым блоком.
они не то чтобы скрывались :) если правильно помню, то давным давно детектирование трекерных форматов было дернуто у himik xzx, а он просил в широкий доступ не выкладывать. потом мы с Сашей думали АПИ поменять...
но это было лет 7 назад, так что наверное ты прав. как только untergrund поднимется и я актуальные исходники найду, положу на сайт
Кстати хоть тема и не про него, но на нем достаточно удобно все делать без лишних манипуляций, при наличии монитора 22' :)
Про ошибки и частые запуски написанного: сам так делаю, прогу в сто байт для меня проще 50 раз запустить, чем 50раз обдумать написанное
http://s007.radikal.ru/i302/1108/ce/007502b23ce1.bmp
Слева - дебагер для отладки и запуска
По центру - текстовик
Справа - результат
Снизу - рабочие метки, для быстрого поиска в большом тексте
1. Откомпилил (либо F4)
2. Запустил
и все.
У этого ассемблера куча неудобств, но и много достоинств
Мужики, хорош оффтопить. Тема про sjasm, а не про EmuzWin, Alasm или что там еще.
Только моя прога разрослась свыше 60 килобайт асемблерного текста, а используя сжасм все исходники в текстовом формате, можно сразу смотреть текстовым вьювером исходный текст и код в дебагере. Я уже оценил удобство!
---------- Post added at 19:45 ---------- Previous post was at 19:43 ----------
Еще вопрос, не нахожу как посмотреть адреса меток после компляции? Или нет такой функции?
Ну мне такая функция никогда не нужна была, я тупо делаю 'display "Метка такая-то: ", METKA', когда надо что-то посмотреть.
А так добавь в опции ассемблирования --lst=listing.txt --lstlab и у тебя в файле listing.txt в конце будет список label'ей с адресами. Еще есть LABELSLIST команда, но она вроде для импорта в дебаггер анрила.
Народ, а куда переехала разработка sjasm? Оно-ж на сорсфорже было, но там уже года два как не обновлялось ничего.