Не понял, в чем делаешь "display" ?
Вид для печати
Да прям в коде. Что асм может посчитать, то и вывести может.
Мда. Собрал. Получил вот это:
qmaster@Deb-G5-QM:~/--/FF4/t$ ./sjasmplus load.a80
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
load.a80(16): error: Duplicate label: MonoLoader.Begin
load.a80(75): error: Duplicate label: MonoLoader.K128
load.a80(153): error: Duplicate label: MonoLoader.MAIN_LOAD
load.a80(332): error: Duplicate label: MonoLoader.LOAD
load.a80(382): error: Duplicate label: MonoLoader.Trdos_HL
load.a80(384): error: Duplicate label: MonoLoader.Trdos_DE
load.a80(386): error: Duplicate label: MonoLoader.Trdos_BC
load.a80(388): error: Duplicate label: MonoLoader.Trdos_A
load.a80(404): error: Duplicate label: MonoLoader.Trdos_Ret
load.a80(409): error: Duplicate label: MonoLoader.Trdos_INT
load.a80(446): error: Duplicate label: MonoLoader.Trdos_B1
load.a80(451): error: Duplicate label: MonoLoader.Trdos_B2
load.a80(468): error: Duplicate label: MonoLoader.SHOW
load.a80(573): error: Duplicate label: MonoLoader.Unpack
depacker_laser_compact.a80(150): error: Duplicate label: MonoLoader.DLC6
depacker_laser_compact.a80(180): error: Duplicate label: MonoLoader.DLC7
depacker_laser_compact.a80(202): error: Duplicate label: MonoLoader.DLC8
depacker_laser_compact.a80(233): error: Duplicate label: MonoLoader.DLC10
depacker_laser_compact.a80(284): error: Duplicate label: MonoLoader.DLC13
depacker_laser_compact.a80(286): error: Duplicate label: MonoLoader.DLC14
load.a80(583): error: Duplicate label: MonoLoader.EndBasic
load.a80(600): error: Duplicate label: menu
load.a80(604): error: Duplicate label: menu_
load.a80(616): error: Duplicate label: dehrust
load.a80(620): error: Duplicate label: dehrust_
Pass 1 complete (25 errors)
depacker_laser_compact.a80(112): error: [DJNZ] Target out of range (-24263)
Pass 2 complete (26 errors)
load.a80(676): warning: Label has different value in pass 3: previous value 0 not equal 43407
Pass 3 complete
Errors: 26, warnings: 1, compiled: 989 lines, work time: 0.012 seconds
*** glibc detected *** ./sjasmplus: munmap_chunk(): invalid pointer: 0x10b18670 ***
======= Backtrace: =========
/lib/powerpc-linux-gnu/libc.so.6(+0x82514)[0xfc90514]
/usr/lib/powerpc-linux-gnu/libstdc++.so.6(_ZdlPv+0x2c)[0xff71f04]
./sjasmplus[0x1001d694]
./sjasmplus[0x1000249c]
/lib/powerpc-linux-gnu/libc.so.6(+0x1f7ec)[0xfc2d7ec]
/lib/powerpc-linux-gnu/libc.so.6(+0x1f9b0)[0xfc2d9b0]
======= Memory map: ========
00100000-00103000 r-xp 00000000 00:00 0 [vdso]
0fc0e000-0fd78000 r-xp 00000000 08:14 5664070 /lib/powerpc-linux-gnu/libc-2.13.so
0fd78000-0fd87000 ---p 0016a000 08:14 5664070 /lib/powerpc-linux-gnu/libc-2.13.so
0fd87000-0fd8b000 r--p 00169000 08:14 5664070 /lib/powerpc-linux-gnu/libc-2.13.so
0fd8b000-0fd8c000 rw-p 0016d000 08:14 5664070 /lib/powerpc-linux-gnu/libc-2.13.so
0fd8c000-0fd8f000 rw-p 00000000 00:00 0
0fd9f000-0fdb4000 r-xp 00000000 08:14 5661589 /lib/powerpc-linux-gnu/libgcc_s.so.1
0fdb4000-0fdc3000 ---p 00015000 08:14 5661589 /lib/powerpc-linux-gnu/libgcc_s.so.1
0fdc3000-0fdc4000 rw-p 00014000 08:14 5661589 /lib/powerpc-linux-gnu/libgcc_s.so.1
0fdd4000-0fe7e000 r-xp 00000000 08:14 5664066 /lib/powerpc-linux-gnu/libm-2.13.so
0fe7e000-0fe8e000 ---p 000aa000 08:14 5664066 /lib/powerpc-linux-gnu/libm-2.13.so
0fe8e000-0fe91000 r--p 000aa000 08:14 5664066 /lib/powerpc-linux-gnu/libm-2.13.so
0fe91000-0fe92000 rw-p 000ad000 08:14 5664066 /lib/powerpc-linux-gnu/libm-2.13.so
0fea2000-0ffb0000 r-xp 00000000 08:14 5350357 /usr/lib/powerpc-linux-gnu/libstdc++.so.6.0.16
0ffb0000-0ffbf000 ---p 0010e000 08:14 5350357 /usr/lib/powerpc-linux-gnu/libstdc++.so.6.0.16
0ffbf000-0ffc4000 r--p 0010d000 08:14 5350357 /usr/lib/powerpc-linux-gnu/libstdc++.so.6.0.16
0ffc4000-0ffc6000 rw-p 00112000 08:14 5350357 /usr/lib/powerpc-linux-gnu/libstdc++.so.6.0.16
0ffc6000-0ffcc000 rw-p 00000000 00:00 0
0ffdc000-0ffdf000 r-xp 00000000 08:14 5664056 /lib/powerpc-linux-gnu/libdl-2.13.so
0ffdf000-0ffee000 ---p 00003000 08:14 5664056 /lib/powerpc-linux-gnu/libdl-2.13.so
0ffee000-0ffef000 r--p 00002000 08:14 5664056 /lib/powerpc-linux-gnu/libdl-2.13.so
0ffef000-0fff0000 rw-p 00003000 08:14 5664056 /lib/powerpc-linux-gnu/libdl-2.13.so
10000000-1005a000 r-xp 00000000 08:14 2507620 /home/qmaster/--/FF4/t/sjasmplus
10069000-1006b000 rw-p 00059000 08:14 2507620 /home/qmaster/--/FF4/t/sjasmplus
1006b000-102fb000 rwxp 00000000 00:00 0
10af5000-10b39000 rwxp 00000000 00:00 0 [heap]
f78ab000-f78af000 rw-p 00000000 00:00 0
f78e7000-f78e8000 rw-p 00000000 00:00 0
f78e8000-f7908000 r-xp 00000000 08:14 5664050 /lib/powerpc-linux-gnu/ld-2.13.so
f7908000-f7909000 rw-p 00000000 00:00 0
f7909000-f790a000 r--p 00021000 08:14 5664050 /lib/powerpc-linux-gnu/ld-2.13.so
f790a000-f790b000 rw-p 00022000 08:14 5664050 /lib/powerpc-linux-gnu/ld-2.13.so
ffbac000-ffbcd000 rw-p 00000000 00:00 0 [stack]
Аварийный останов
Хы.
>[DJNZ] Target out of range (-24263)
Эк его раскорячило =)
>Deb-G5
>powerpc-linux-gnu
Ну кто его на таком тестировал?... Сам сижу на win32-1.06, глюков пока не ловил.
Это вы всё на моём коде тестироваете? Отлично, конечно, но если внести правильные значения, может все начнет компилироваться? Например ENT добавить.
off-topic: исходники положил
Как пользоваться? Если можно алгоритм от А до Я (желательно в первый пост темы)
И help на русском есть? хочу всетаки попытаться.
Сейчас во встроенном ассемблере EmuzWin, два нажатия и вижу результат
Возможно ли прикрутить Sjasm к чемунить за одно нажатие, я конечно понимаю удобство сборки по слухам, но поиспользовать его так и не взялся
Напиши бат файл и будет за одно нажатие
Написать скромный work что-ли?
Кстати как то писал тред про ASAM надо бы его переправить на Sjasm? Хотя удобство в писании бат файлов для Sjasm такжу не вижу. /мож еще не вижу?/
57 страниц топика читать нет времени!!!
Ну если и впрямь очень надо...
Для удобства работы создаете какой-нить батник, типа compile.bat:
Вот например мой:
Можно разумеется и относительные пути к файлам написать и какие угодно, просто мне так удобнее. Если в trd сохраняется, то соответственно demo.trd.Цитата:
D:\Speccy\Lang\sjasmplus demo.a80
D:\Speccy\Emuls\Unr_Spec\unreal.exe demo.sna
Все вроде просто. Если пользоваться версией Курлеса (и эмулятора и sjasm'a), то прямо в текстах можно натыкать брейкпойнтов, так что при старте в эмуляторе уже стоять будут точки останова, где вы их указали. Мне лично это не надо, я просто втыкаю jr $ где надо и все.
Документации на русском вроде нет. Да там и не надо особо ничего, только про SAVESNA и SAVETRD прочитай, остальное на 99% соответствует всех спектрумским ассемблерам.
Если ты про перенос текста исходника из ASAM - там исправлять будет тоже буквально пару строчек текста и все. Если ты что-то хочешь перенести где-то на форуме - конкретизируй линками, перенесу.Цитата:
Кстати как то писал тред про ASAM надо бы его переправить на Sjasm?
Новый unreal поддерживает установку внешних брейкпоинтов через отдельный ini:
http://dlcorp.nedopc.com/viewtopic.p...p=23683#p23683
Как можно воспользоваться этой фичей из SJASM?
Че-то по-моему никак, кроме как переработать сжасм, дабы он генерил файл брейкпойнтов в этом формате. Ну или можешь нагенерить брейкпойнты, потом свой скрипт запустить (ты ж пхп знаешь), который переконвертит в формат bpx.ini, а далее собственно анрил запускать.
логично, спасибо!
А есть ли какой-то способ вкладывать модули друг-в-друга, чтобы ограничить их видимость?
Что-то типа такого:
MODULE primer1
MODULE submodule
ENDMODULE
ENDMODULE
MODULE primer2
MODULE submodule
ENDMODULE
ENDMODULE
Чтобы при вызове submodule из primer1 вызывался нужный вложенный, и чтобы компилятор не ругался на совпадающие имена.
Есть ли какой-то способ? А то частенько эти самые submodule отличаются друг-от-друга реализацией, но делают примерно одно и то же, поэтому их переназывать для каждого случая неудобно.
прилагаю пример. В папку sjasm нужно положить sjasm.exe, в папку unreal - полный unreal.
После этого для компиляции кликаем compile.bat, и всё.
Не обязательно разносить файловую организацию и непосредственно сам код в разные файлы, как у меня, но это удобно при более-менее больших проектах.
Цитата:
А есть ли какой-то способ вкладывать модули друг-в-друга, чтобы ограничить их видимость?
Что-то типа такого:
MODULE primer1
MODULE submodule
ENDMODULE
ENDMODULE
MODULE primer2
MODULE submodule
ENDMODULE
ENDMODULE
По другому я незнаю.Код:MODULE primer1
submodule1
.label1
.label2
submodule2
.label1
jp primer2.submodule2
.label2
ENDMODULE
MODULE primer2
submodule1
.label1
call submodule2.label1
.label2
call primer1.submodule1.label1
submodule2
.label1
.label2
ENDMODULE
а sjasm позволяет компилить простые исходники, без спец директив? типа такого:
Цитата:
ORG #C000
ld hl,#8000
ld de,#4000
ld bc,#1B00
ldir
Конечно, получишь просто бинарь.
а как задать компиляцию в TAP файл?
Тоже интересно :)
Собственно мне тут тоже вдруг понадобилось то же, что и moroz1999 - то бишь подгрузить файл брейкпойнтов в анреал.
Во вложении мелкий скрипт, предназначен для работы с sjasmplus, который умеет делать листинг брейкпойнтов по команде BPLIST и соответственно ставить их по команде SETBP.
Итак, делать надо вот что:
1. Создаете батничек для ассемблирования, например такой:
Что где - понятно наверное, первое - это запускается ассемблирование, потом пхп-скрипт конвертить брейкпойнты в формат unreal и запускается собственно unreal.Код:sjasmplus demo.a80
php bpconv.php
unreal demo.sna
2. Соответственно понадобится PHP (в гугле спросите, кто не знает, просто архив куда-нибудь скачайте и пропишите, или php.exe в ту же папку положите, ну не мне вас учить) и скрипт (во вложении). В скрипте в любом редакторе поменяйте путь в папку, где у вас лежит unreal.
3. Сам скрипт настроен на то, что экспортируется файл breaks.lst, можете поменять, если вы делаете BPLIST с другим именем.
Вроде всё. Единственное что - курлес вроде не делал возможным ставить брейкпойнты в разные страницы памяти, поэтому всё фигачится в нулевую.
Как-то так.Цитата:
ReadFile(0, "breaks.lst")
CreateFile(1, "D:/Speccy/Emuls/Unr_Spec/bpx.ini")
While Eof(0)
WriteStringN(1, "x0=0x" + ReadString(0) )
Wend
---------- Post added at 21:45 ---------- Previous post was at 21:41 ----------
Размер совпал. Понятность для меня равнозначна.
PB для данной задачи подходит больше чем php.
Ну так кто тебе мешает? Исходники есть, делай что хочешь. Я для себя писал вообще-то, у меня php в системе стоит.
PS: Вообще утомил уже в каждой теме рекламировать PureBasic, тебе платят чтоли за это?
Ключевое слово "для меня"?
А если:
Короче уж некуда.Код:sed -nr "s/(.*)/x0=0x&/p" breaks.lst > D:/Speccy/Emuls/Unr_Spec/bpx.ini
PB не является языком для обработки текстовых данных. PHP ближе к нему.
Если бы ты написал на PB, а у него в системе стоял php, было бы то же самое)
на питоне надо писать, товарищи, на питоне! :))))
а если серьезно, то все понятно и с пб, и с седом (хотя тут менее очевидно), только вот юзабилити под виндой в данном случае лучше с пб и спорить тут нечего.
Не вижу разницы между выкладыванием бинаря (PB) и выкладыванием бинаря с батником для запуска. sed есть и для винды. Весит ~75kB (http://gnuwin32.sourceforge.net/packages/sed.htm)
Только как говорил тот же newart- "а может этот экзешник мне винт отформатирует!"
psb, поскольку бинаря я ни от кого не вижу, это какое-то не очень правильное утверждение. И если все равно писать батник для ассемблирования - юзеру вообще думаю пофигу, бинарь там будет или вызов внешнего обработчика. Впрочем как знаете.
Ненашёл исходников сясма с брейкпоинтами. Обнаружил только патч.
в этом месте надо поправить вывод, и нмкаких шаманств ненужно будет
Код:+void WriteBp(aint val) {
+ char line[6], *tline;
+ tline = line;
+ PrintHEX16(tline, val);
+ line[4] = '\n';
+ line[5] = 0;
+ fputs(line, FP_UnrealBp);
+}
Пропатчите пож. последнюю версию sjasm для работы с брекопоинтами в формате последнего Unreal. Запарился использовать старую версию sjasm и старый Unreal.
Подходит, спасибо! Но это конечно как удалять аппендицит через гланды. IMHO проще в сорсах sjasm добавить кусок кода кто умеет. Я не умею и разбираться влом. Пока сижу вот на таком варианте.
Да просто все равно же компилируется батником, разницы вообще лично мне никакой. В сорсах-то там вообще одну строчку поменять так-то.
Ну в общем жить можно. На запуск образа из IDE UEStudio по F9 теперь тратится на секунду дольше за счет выполнения php, зато все работает с Unreal 0.37.6
в cjasm есть бага
не работает if endif внутри dup:edup