PDA

Просмотр полной версии : SjASMPlus Z80 кросс ассемблер



Страницы : 1 2 [3] 4 5 6 7

moroz1999
24.11.2010, 12:03
Спасибо, похоже, что high работает.

Sinus
24.11.2010, 15:29
Может всётаки high и low использовать?
ld b, high metka

менее портабельно получается.
ld b,metka/256
понимает и sjasmplus, и alasm, и ещё какой-нибудь asm
а
ld b,high metka
это тоже самое что и
ld b,metka[
только вид сбоку

Lethargeek
16.12.2010, 16:28
А что, нет стандартной функции побитного разворачивания/отражения числа?
Что-то в доках не нашел...

SfS
23.02.2011, 18:01
Я решил проблему с сегфолтом MODULE под линукс.

Использовал sjasmplus-src-1.07-rc7

Вот два патча.
Первый:



--- directives.cpp.old 2008-04-02 10:21:16.000000000 +0700
+++ directives.cpp 2011-02-23 20:39:10.445291480 +0600
@@ -465,7 +465,7 @@

void dirMODULE() {
char* n;
- ModuleList = new CStringsList(ModuleName, ModuleList);
+ // ModuleList = new CStringsList(ModuleName, ModuleList);
if (ModuleName != NULL) {
delete[] ModuleName;
}
@@ -474,6 +474,9 @@
if (ModuleName == NULL) {
Error("No enough memory!", 0, FATAL);
}
+//
+ModuleList = new CStringsList(ModuleName, ModuleList);
+//
} else {
Error("[MODULE] Syntax error", 0, CATCHALL);
}
@@ -483,8 +486,14 @@
if (ModuleList) {
if (ModuleName != NULL) {
delete[] ModuleName;
- }
- if (ModuleList->string != NULL) {
+//
+ModuleName = NULL;
+//
+ }
+//
+ModuleList = ModuleList->next;
+//
+ if ( (ModuleList) && (ModuleList->string != NULL) ) {
ModuleName = STRDUP(ModuleList->string);
if (ModuleName == NULL) {
Error("No enough memory!", 0, FATAL);
@@ -492,7 +501,7 @@
} else {
ModuleName = NULL;
}
- ModuleList = ModuleList->next;
+// ModuleList = ModuleList->next;
} else {
Error("ENDMODULE without MODULE", 0);
}



И второй:



--- sjdefs.h.old 2008-04-01 17:41:58.000000000 +0700
+++ sjdefs.h 2011-02-23 19:54:45.036263394 +0600
@@ -120,6 +120,7 @@
#include "io_snapshots.h"
#include "io_trd.h"
#include "sjasm.h"
+#include <stdlib.h>

#endif
//eof sjdefs.h


Прошу автора воткнуть исправления в основную ветку. Модули - штука хорошая.

---------- Post added at 21:01 ---------- Previous post was at 21:00 ----------

В догонку.
Тут уже эту проблему где-то решали, но директива ENDMODULE неправильно у меня тем способом работала.

mastermind
14.03.2011, 08:24
Собрал на github все публично доступные версии SJAsmPlus в репозиторий, добавил ChangeLog (из документации):

https://github.com/sjasmplus/sjasmplus

Виндовый экзешник, если кому надо: https://github.com/downloads/sjasmplus/sjasmplus/sjasmplus-revision-2008-11-06-mingw32.zip

http://i53.tinypic.com/2e33kfa.png

Aprisobal
14.03.2011, 12:31
Отлично, а то у меня сил не хватало, чтобы собрать все воедино. Прибью тогда сайт на sf.net, чтобы не путал людей и сделаю переадресацию сюда в тему или на ваш репозиторий в github.

mastermind
14.03.2011, 16:28
Добавил в архив с exe (https://github.com/downloads/mkoloberdin/sjasmplus/sjasmplus-revision-2008-11-06-mingw32.zip) необходимые dll и документацию
Добавил aprisobal в collaborators на github (доступ на запись)

breeze
14.03.2011, 17:50
Для чего в Makefile


LDFLAGS="-ldl"

с этими флагами на FreeBSD не собирается:



g++ -o sjasmplus "-ldl" -O2 -DLUA_USE_LINUX -DMAX_PATH=PATH_MAX -Ilua5.1 -Itolua++ sjasm/devices.o sjasm/directives.o sjasm/io_snapshots.o sjasm/io_trd.o sjasm/io_tape.o sjasm/lua_lpack.o sjasm/lua_sjasm.o sjasm/parser.o sjasm/reader.o sjasm/sjasm.o sjasm/sjio.o sjasm/support.o sjasm/tables.o sjasm/z80.o lua5.1/lapi.o lua5.1/lauxlib.o lua5.1/lbaselib.o lua5.1/lcode.o lua5.1/ldblib.o lua5.1/ldebug.o lua5.1/ldo.o lua5.1/ldump.o lua5.1/lfunc.o lua5.1/lgc.o lua5.1/linit.o lua5.1/liolib.o lua5.1/llex.o lua5.1/lmathlib.o lua5.1/lmem.o lua5.1/loadlib.o lua5.1/lobject.o lua5.1/lopcodes.o lua5.1/loslib.o lua5.1/lparser.o lua5.1/lstate.o lua5.1/lstring.o lua5.1/lstrlib.o lua5.1/ltable.o lua5.1/ltablib.o lua5.1/ltm.o lua5.1/lundump.o lua5.1/lvm.o lua5.1/lzio.o tolua++/tolua_event.o tolua++/tolua_is.o tolua++/tolua_map.o tolua++/tolua_push.o tolua++/tolua_to.o
/usr/bin/ld: cannot find -ldl
*** Error code 1

Stop in /opt/sjasmplus.

Aprisobal
14.03.2011, 18:05
Для сборки на Linux. Для Мака и *BSD эту строку нужно закомментировать.

breeze
14.03.2011, 18:36
Для сборки на Linux. Для Мака и *BSD эту строку нужно закомментировать.

ну это понятно :) я бы хотел узнать нафига оно ?

да и не плохо бы добавить в Makefile - install ;)

goblinish
19.07.2011, 13:27
перечитал тему, разобрался с грехом пополам со storm.
приятный в работе ассемблер, спасибо.

iceoflame
22.07.2011, 14:56
Сделал бы ктонить сборку SjASM + какойнить эмуль для отладки

goblinish
22.07.2011, 20:04
Сделал бы ктонить сборку SjASM + какойнить эмуль для отладки

а смысл?

siril
23.07.2011, 17:19
а смысл?

типа IDE с дебаггером =)

jerri
23.07.2011, 17:46
Это лишнее

goblinish
23.07.2011, 20:20
типа IDE с дебаггером =)
Masm32 прикручивается, а вот с отладчиком будет сложнее...

psb
23.07.2011, 21:15
да вполне удобно отлаживать в анриле.

Shadow Maker
18.08.2011, 17:30
Использую билд еще с саурсфорджа. Качал билд с гитхуба, те же яйца.

Проблема - не компилируется, умирает с эксепшеном [4608].

Компилировать load.a80

Если задать другой адрес для файла меню, например #4000, откомпилируется, но в том файле будут левые данные.

Что это такое, как побороть?

VNN_KCS
18.08.2011, 18:03
Что это такое, как побороть?
Писать в Аласме или подобном, на Спекки.

dead8088
18.08.2011, 19:53
Использую билд еще с саурсфорджа. Качал билд с гитхуба, те же яйца.

Проблема - не компилируется, умирает с эксепшеном [4608].

Компилировать load.a80

Если задать другой адрес для файла меню, например #4000, откомпилируется, но в том файле будут левые данные.

Что это такое, как побороть?

У меня собралось... Версия SjASMPlus v1.07 RC7 (build 02-04-2008)

Shadow Maker
18.08.2011, 20:46
экстрактни тогда menu.C файл из диска создавшегося и посмотри, он идентичен menu.bin или нет?

И у меня тоже такой же билд и он не собирает... Выложи чтоли, подозреваю там были нюансы.

dead8088
19.08.2011, 00:52
На самом деле, не совпадают... Это верно: потому что код находится в адресах, начинающихся с 16384, но компилится под 23867. Получается, что в переменной menu лежит значение от 23867, а надо от 16384, то есть menu-23867+16384. Тогда page и org убираем и пишем:



menu
INCBIN "Packed/menuscr.bin"
menu_
SAVETRD "mercenar.trd","menu.C",menu-23867+16384,menu_-menu
SAVEBIN "11d",menu-23867+16384,menu_-menu


Получается такой же файл. Правда когда dehrust, screen1 и прочие привел к такому же виду, программе не хватило адресного пространства :) Может, лучше использовать для этой цели утилиту TRDETZ.EXE, и прописать в asm.bat подобную строчку после компиляции:

trdetz.exe mercenar.trd fwrite Packed\menuscr.bin menu.C

и т.д.? Адрес загрузки кода с помощью этой утилиты устанавливать тоже можно.

Прилагаю свой SjASMPlus и trdetz

Shadow Maker
19.08.2011, 10:50
стоп, кто там компилится в 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, но это блин реально бред.

dead8088
19.08.2011, 12:15
Я потерял тот архив :) Кинь еще раз, плз?

Сейчас попробовал ввести вот такой код, и он вроде верно посчитал размер...



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

Shadow Maker
19.08.2011, 12:58
У меня уже тоже его нет... Он кстати небольшие блоки нормально мне тоже посчитал.

Ладно, сейчас подумаю как быть.

Shadow Maker
19.08.2011, 13:07
Короче во вложении. Выводит после компиляции 2 числа. Они должны быть идентичны (первое число - это данные из equ part1_-part1, стоящее сразу после инкбина файла, второе - это непосредственно display part1_-part1), однако хрен там, они разные. Почему так - нет идей.

dead8088
19.08.2011, 18:27
Там метка 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

Shadow Maker
19.08.2011, 18:29
Блин, точно :) Чет взгляд замылился видать.

valeron
19.08.2011, 19:33
Может кто-нибудь может дать мастер-класс по сжасму? Я еще по старинке XASом кодю. Интересно было бы посмотреть где удобнее.

Shadow Maker
19.08.2011, 19:58
А чего там давать. Бери да кодь. Только мнемоники придётся целиком писать. Ну и в конце SAVESNA чтобы результат сразу в эмуляторе глянуть.

valeron
19.08.2011, 20:19
А отлаживать потом как? У меня еще ни одна хрень сразу не заработала, всегда находились ошибки, опечатки, неправильный подход обработки адресов и т.п.
Из Ксасма можно в STS прыгнуть протрассировать, воскликнуть "Аааа!" и обратно прыгнуть в Ксасм, исправить и опять в STS и так до полной победы. У сжасма есть какой-нибудь монитор?

Shadow Maker
19.08.2011, 20:24
Сжасм это компилятор, какой еще монитор :) Монитор есть у Unreal Speccy. Короче вон бери Курлесовскую сборку и вперед, она позволяет ставить брейкпойнты прямо в тексте программы.

Ну или как я - сохраняешь снапшот, в самом начале ставишь jr $ и открываешь снапшот Unreal'ом, далее трассируешь.

valeron
19.08.2011, 20:27
Не понял, компилятор это что такое? Я думал сжасм это ассемблер. Извиняюсь, я наверно ошибся, не туда попал.

Shadow Maker
19.08.2011, 20:32
О боже мой. Имел ввиду, что вообще программа, которая переводит из ассемблера в машкод называется компилятором. Короче ладно, для простоты - sjasm ассемблер для PC, программу ты пишешь в простом текстовом файле, так что никаких там адских STS и прочего у тебя не будет. На выходе будет снапшот ну или в файл или в диск записать можно. Далее это надо загрузить в эмулятор типа Unreal и там уже трассировать.

Это только поначалу кажется неудобным. Потом наоборот привыкаешь и думаешь "как вообще можно все это делать в ассемблере для спектрума, это ж неудобно кошмар как для больших программ".

valeron
19.08.2011, 20:47
Сомнительно мне всё же. Однако многие пользуются сжасмом и отзываются о нем положительно, так что я в замешательстве. Поэтому и спрашивал мастер класс что бы понаблюдать за тем как кто-то успешно его применяет. Все таки когда видишь, то это гораздо доходчивее чем когда об этом читаешь.

Shadow Maker
20.08.2011, 00:12
Тебе видео чтоли записать, как я его применяю? Я не понял, что ты хочешь.

valeron
20.08.2011, 01:13
Нет, пожалуй это будет слишком обременительно, достаточно было бы просто пару скринов с комментами типо: "...вот открываем, вот тут прописываем то-то и то-то иначе не заработает, тут пишем Hellow World, вот так завершаем, а так переключаемся в эмуль, а так и так удобно отлавливать глюки...удобство в том то и том то. Фсё!" Просто когда переходишь с одного интерфейса на другой почти всегда первый опыт неудачный, а было бы описано по шагам самый минимум с чего начать и как довести до завершения - это помогло бы преодолеть растерянность по ходу освоения.
Впрочем извиняюсь: я тут просмотрел свои исходники, их дохрена. И переписывать все это заново в сжасме слишком большая работа. Пока не буду дергаться. Может когда-нить потом что-то новое буду начинать и попробую в сжасме. Вот тогда и взбудоражу расспросами.
ЗЫ. Только один вопрос, как в текст асма бинарный файл внедрить, например курсор - восемь фаз стрелки с маской?

rajdee
20.08.2011, 10:50
ЗЫ. Только один вопрос, как в текст асма бинарный файл внедрить, например курсор - восемь фаз стрелки с маской?
Так же, как и в большинстве спектрумовских ассемблеров:

подгрузить бинарный файл при помощи INCBIN <filename>[,offset[,length]], он же INSERT, он же BINARY
подгрузить файл прямо из TRD при помощи INCTRD <filenameoftrdimage>,<filenameintrdimage>[,offset[,length]]
вставить DB или DW с данными


Valeron, у тебя какое-то предубеждение относительно SjASM =)

Shadow Maker
20.08.2011, 13:55
Нет, пожалуй это будет слишком обременительно, достаточно было бы просто пару скринов с комментами типо: "...вот открываем, вот тут прописываем то-то и то-то иначе не заработает, тут пишем Hellow World, вот так завершаем, а так переключаемся в эмуль, а так и так удобно отлавливать глюки...удобство в том то и том то. Фсё!" Просто когда переходишь с одного интерфейса на другой почти всегда первый опыт неудачный, а было бы описано по шагам самый минимум с чего начать и как довести до завершения - это помогло бы преодолеть растерянность по ходу освоения.
Впрочем извиняюсь: я тут просмотрел свои исходники, их дохрена. И переписывать все это заново в сжасме слишком большая работа. Пока не буду дергаться. Может когда-нить потом что-то новое буду начинать и попробую в сжасме. Вот тогда и взбудоражу расспросами.
ЗЫ. Только один вопрос, как в текст асма бинарный файл внедрить, например курсор - восемь фаз стрелки с маской?

Ну выложи какой-нить исходник, я опишу что надо сделать, чтобы он заработал в sjasm. Вообще-то он поддерживает 90% мнемоник всех ассемблеров со спектрума, так что я сомневаюсь, что надо будет много переделывать.

А скриншоты ничего не дадут - я например предпочитаю все подряд редактировать в Far - сомневаюсь, что много людей делает так же. Текстовых редакторов море, выбирай любой.

newart
20.08.2011, 14:08
А отлаживать потом как? У меня еще ни одна хрень сразу не заработала, всегда находились ошибки, опечатки, неправильный подход обработки адресов и т.п.
У меня тоже. Тем не менее Fire and Ice и IF Creator были написаны на реале вообще без какого либо дебагера (я конечно знал что есть некий СТС но с ним делать не понимал).

SJAsm запускается из командной строки. Какой тут может быть интерфейс? А формат ассемблера скорее всего процентов на 99% совместим с Ксасом.

valeron
20.08.2011, 17:24
У меня тоже. Тем не менее Fire and Ice и IF Creator были написаны на реале вообще без какого либо дебагера (я конечно знал что есть некий СТС но с ним делать не понимал).


Ну значит ты круче меня, потому что у меня на дебагинг уходит в три раза больше времени чем на кодинг. :smile:

---------- Post added at 16:21 ---------- Previous post was at 16:18 ----------


подгрузить бинарный файл при помощи INCBIN <filename>[,offset[,length]], он же INSERT, он же BINARY
Проходи мимо, потому что то что ты пишешь для меня это клинопись. Большинства асемблеров я не знаю, знаю только ксасм и немножко попользовался аласмом. И да, у меня есть предубеждение, я хочу всему научиться, что бы все уметь и нихрена не делать.

---------- Post added at 16:24 ---------- Previous post was at 16:21 ----------


Ну выложи какой-нить исходник, я опишу что надо сделать, чтобы он заработал в sjasm. Вообще-то он поддерживает 90% мнемоник всех ассемблеров со спектрума, так что я сомневаюсь, что надо будет много переделывать.

А скриншоты ничего не дадут - я например предпочитаю все подряд редактировать в Far - сомневаюсь, что много людей делает так же. Текстовых редакторов море, выбирай любой.

Ну вот теперь становится понятно что программу нужно набирать в текстовом редакторе, а сохранять как? Как текст? И скармливать сжасму именно этот текст? Как то необычно. Значит все удобства интерфейса это удобство текстового редактора? Кстати Word подходит? Или только досовский .txt?

Не вполне понимаю какие исходники ты просил, вот у меня ТРДшник с ксасмом и на нем исходники, уже второй год их мусолю. Бери файл MAINPROG. Остальные файлы подгружаются этим файлом при асемблировании. Надеюсь ты знаком с интерфейсом самого ксасма и разберешься.
Что скажешь, реально это как-нибудь переконвертить под сжасм?

Shadow Maker
20.08.2011, 18:22
нУ короче я переконвертил за 3 минуты. При этом из них 2 минуты исправлял LTEXT на INCLUDE, LCODE на INSERT и добавлял DB к просто " где это было нужно. Ну и поправил название переменной, ты в одном месте обращался как к fl_black, её не было естессно, исправил.

Все на первый взгляд работает, тока в XAS стартует сразу с рисования, а у меня после компиляции в виде окошка выбирать, не знаю почему, тебе виднее. Могу положить результат, если интересно.


Или только досовский .txt?
Можешь и в ворде наверное сохранять в виде text msdos, но это неудобно я думаю.

valeron
20.08.2011, 18:34
Круто! Покажи!

VNN_KCS
20.08.2011, 19:42
реально это как-нибудь переконвертить под сжасм?
На Спеке можешь перевести в txt формат Best View-ром. Я так делал для тех, кто просил. Хотя может уже не актуально, раз перевели.

Andrew771
20.08.2011, 20:00
Меня Jerri научил, как работать с sjasm. Только нафига такие сложности, если в эмуляторе EmuZWin2.7 есть и ассемблер (с разной подсветкой текста), и дебаггер, и сами спектрумы разных моделей - всё в одном флаконе. Я вот на нем и сижу :)

Shadow Maker
20.08.2011, 20:08
Да пожалуйста. SNA можешь сразу загрузить и посмотреть. Ассемблируется без ошибок, но работает, как я уже сказал, как-то иначе. Ну и плюс если тебе TR-DOS надо, то надо не в снапшот сохранять, а в образ диска лучше, а то в снапшоте про трдос ни сном ни духом.

Shadow Maker
20.08.2011, 20:12
Меня Jerri научил, как работать с sjasm. Только нафига такие сложности, если в эмуляторе EmuZWin2.7 есть и ассемблер (с разной подсветкой текста), и дебаггер, и сами спектрумы разных моделей - всё в одном флаконе. Я вот на нем и сижу :)
Кому чего. Мне не нравится он, неудобный редактор и совсем неудобный дебаггер.

---------- Post added at 20:12 ---------- Previous post was at 20:09 ----------


Что скажешь, реально это как-нибудь переконвертить под сжасм?
Ну у меня в FAR стоят плагины от Half Elf, так что я просто тупо открываю любой файл внутри TRD и он показывается уже перекодированным в текст, так что я просто скопировал файлы с диска на винт в папку, поправил заменой 2 команды и всё...

valeron
20.08.2011, 21:50
Да пожалуйста. SNA можешь сразу загрузить и посмотреть. Ассемблируется без ошибок, но работает, как я уже сказал, как-то иначе. Ну и плюс если тебе TR-DOS надо, то надо не в снапшот сохранять, а в образ диска лучше, а то в снапшоте про трдос ни сном ни духом.

Да ты шаман!!! :v2_thumb:
Да, снапшот не работал потому что был зациклен на выделении. Оказалось что в драйвере клавиатуры вместо RRC B стало RLC B, то есть ротации поменяли направление. Прямо в дебагере поправил и все заработало. Но нет дисковых функций. Что мне тут еще добавить что бы он с ТРД заработал?

Shadow Maker
21.08.2011, 00:22
Да ты шаман!!! :v2_thumb:
Да, снапшот не работал потому что был зациклен на выделении. Оказалось что в драйвере клавиатуры вместо RRC B стало RLC B, то есть ротации поменяли направление. Прямо в дебагере поправил и все заработало. Но нет дисковых функций. Что мне тут еще добавить что бы он с ТРД заработал?

Ну тебе тут добавить какой-нить лоадер для трдоса например и сохранения твоего шаманства в виде единого кодового блока. Ну завтра могу тебе накидать, там не более 5 минут это займет.

---------- Post added at 00:22 ---------- Previous post was at 00:19 ----------


Да ты шаман!!! :v2_thumb:
Да, снапшот не работал потому что был зациклен на выделении. Оказалось что в драйвере клавиатуры вместо RRC B стало RLC B
Ну выходит у Half Elf неправильно открывается исходних XAS, надо ему багфикс написать...

elf/2
21.08.2011, 00:44
Ну выходит у Half Elf неправильно открывается исходних XAS, надо ему багфикс написать...
кастую Сашу Медведева в этот тред: надо в 8 строке RRC c RLC в табличке поменять... (судя по всему)

моя теперь насяльника, у меня студии нету :(

valeron
21.08.2011, 01:41
Ну тебе тут добавить какой-нить лоадер для трдоса например и сохранения твоего шаманства в виде единого кодового блока. Ну завтра могу тебе накидать, там не более 5 минут это займет.
Постой, не спеши! У меня еще половина туду не выполнена. Просто нужно дисковые функции потестить, глюки половить, пока что гружу твой снапшот, потом вставляю в эмуль чистый диск и на нем отрабатываю. Но желательно что бы в образ собиралось. Я еще в этом не разобрался, просто скажи что поменять что бы не снапшот, а трдшник на выходе получался. И посоветуй какой сжасм брать, в смысле есть разница в версиях там, ну или еще какие-то нежелательные вещи?

Shadow Maker
21.08.2011, 11:02
сжасм последний бери и пользуйся.

В образ чтобы собиралось надо SAVETRD писать, но тогда будет неудобно каждый раз писать "LOAD CODE" в трдос и запускать еще, так что лучше сразу загрузчик написать. В общем я это уже сделал во вложении, просто ассемблируешь load.a80 и у тебя собирается valeron.trd с бейсик-загрузчиком в TR-DOS и кодовым блоком.

Shadow Maker
21.08.2011, 11:05
кастую Сашу Медведева в этот тред: надо в 8 строке RRC c RLC в табличке поменять... (судя по всему)

моя теперь насяльника, у меня студии нету :(
Исходники чтоли на сайт тогда положите от xLOOK, смысла уж нет думаю их скрывать.

elf/2
21.08.2011, 13:30
Исходники чтоли на сайт тогда положите от xLOOK, смысла уж нет думаю их скрывать.
они не то чтобы скрывались :) если правильно помню, то давным давно детектирование трекерных форматов было дернуто у himik xzx, а он просил в широкий доступ не выкладывать. потом мы с Сашей думали АПИ поменять...

но это было лет 7 назад, так что наверное ты прав. как только untergrund поднимется и я актуальные исходники найду, положу на сайт

GM BIT
21.08.2011, 17:09
Меня Jerri научил, как работать с sjasm. Только нафига такие сложности, если в эмуляторе EmuZWin2.7 есть и ассемблер (с разной подсветкой текста), и дебаггер, и сами спектрумы разных моделей - всё в одном флаконе. Я вот на нем и сижу

Кстати хоть тема и не про него, но на нем достаточно удобно все делать без лишних манипуляций, при наличии монитора 22' :)
Про ошибки и частые запуски написанного: сам так делаю, прогу в сто байт для меня проще 50 раз запустить, чем 50раз обдумать написанное

http://s007.radikal.ru/i302/1108/ce/007502b23ce1.bmp

Слева - дебагер для отладки и запуска
По центру - текстовик
Справа - результат
Снизу - рабочие метки, для быстрого поиска в большом тексте

1. Откомпилил (либо F4)
2. Запустил

и все.

У этого ассемблера куча неудобств, но и много достоинств

Shadow Maker
21.08.2011, 17:44
Мужики, хорош оффтопить. Тема про sjasm, а не про EmuzWin, Alasm или что там еще.

valeron
21.08.2011, 20:45
прогу в сто байт для меня проще 50 раз запустить, чем 50раз обдумать написанное
Только моя прога разрослась свыше 60 килобайт асемблерного текста, а используя сжасм все исходники в текстовом формате, можно сразу смотреть текстовым вьювером исходный текст и код в дебагере. Я уже оценил удобство!

---------- Post added at 19:45 ---------- Previous post was at 19:43 ----------


сжасм последний бери и пользуйся.
Еще вопрос, не нахожу как посмотреть адреса меток после компляции? Или нет такой функции?

Shadow Maker
22.08.2011, 00:09
Ну мне такая функция никогда не нужна была, я тупо делаю 'display "Метка такая-то: ", METKA', когда надо что-то посмотреть.

А так добавь в опции ассемблирования --lst=listing.txt --lstlab и у тебя в файле listing.txt в конце будет список label'ей с адресами. Еще есть LABELSLIST команда, но она вроде для импорта в дебаггер анрила.

Q-Master
22.08.2011, 08:55
Народ, а куда переехала разработка sjasm? Оно-ж на сорсфорже было, но там уже года два как не обновлялось ничего.

mastermind
22.08.2011, 09:42
Q-Master, см.:
http://zx.pk.ru/showpost.php?p=366222&postcount=505
и
http://zx.pk.ru/showpost.php?p=366275&postcount=506

valeron
22.08.2011, 20:06
Ну мне такая функция никогда не нужна была, я тупо делаю 'display "Метка такая-то: ", METKA', когда надо что-то посмотреть.

Не понял, в чем делаешь "display" ?

NovaStorm
23.08.2011, 08:40
Да прям в коде. Что асм может посчитать, то и вывести может.

Q-Master
23.08.2011, 09:17
Q-Master, см.:
http://zx.pk.ru/showpost.php?p=366222&postcount=505
и
http://zx.pk.ru/showpost.php?p=366275&postcount=506

Мда. Собрал. Получил вот это:
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]
Аварийный останов

NovaStorm
23.08.2011, 10:39
Хы.
>[DJNZ] Target out of range (-24263)
Эк его раскорячило =)
>Deb-G5
>powerpc-linux-gnu
Ну кто его на таком тестировал?... Сам сижу на win32-1.06, глюков пока не ловил.

Shadow Maker
23.08.2011, 11:10
Это вы всё на моём коде тестироваете? Отлично, конечно, но если внести правильные значения, может все начнет компилироваться? Например ENT добавить.

Q-Master
24.08.2011, 11:30
Хы.
>[DJNZ] Target out of range (-24263)
Эк его раскорячило =)
>Deb-G5
>powerpc-linux-gnu
Ну кто его на таком тестировал?... Сам сижу на win32-1.06, глюков пока не ловил.

Ну вот я протестировал. Теперь его пилить надо чтобы биг-эндиан умел и не падал с грохотом.

elf/2
30.08.2011, 19:54
но это было лет 7 назад, так что наверное ты прав. как только untergrund поднимется и я актуальные исходники найду, положу на сайт

off-topic: исходники положил (http://thex.untergrund.net/look/xlook.0.2.src.7z)

GM BIT
31.08.2011, 19:17
Как пользоваться? Если можно алгоритм от А до Я (желательно в первый пост темы)
И help на русском есть? хочу всетаки попытаться.
Сейчас во встроенном ассемблере EmuzWin, два нажатия и вижу результат
Возможно ли прикрутить Sjasm к чемунить за одно нажатие, я конечно понимаю удобство сборки по слухам, но поиспользовать его так и не взялся

Shadow Maker
31.08.2011, 23:43
Напиши бат файл и будет за одно нажатие

GM BIT
02.09.2011, 21:52
Написать скромный work что-ли?
Кстати как то писал тред про ASAM надо бы его переправить на Sjasm? Хотя удобство в писании бат файлов для Sjasm такжу не вижу. /мож еще не вижу?/
57 страниц топика читать нет времени!!!

palsw
02.09.2011, 22:36
Как пользоваться? Если можно алгоритм от А до Я (желательно в первый пост темы)
И help на русском есть? хочу всетаки попытаться.
Сейчас во встроенном ассемблере EmuzWin, два нажатия и вижу результат
Возможно ли прикрутить Sjasm к чемунить за одно нажатие, я конечно понимаю удобство сборки по слухам, но поиспользовать его так и не взялся

согласен,обьясните на пальцах как пользоваться совместно с эмулятором автоматизировано

Shadow Maker
03.09.2011, 10:33
Ну если и впрямь очень надо...

Для удобства работы создаете какой-нить батник, типа compile.bat:

Вот например мой:


D:\Speccy\Lang\sjasmplus demo.a80
D:\Speccy\Emuls\Unr_Spec\unreal.exe demo.sna

Можно разумеется и относительные пути к файлам написать и какие угодно, просто мне так удобнее. Если в trd сохраняется, то соответственно demo.trd.

Все вроде просто. Если пользоваться версией Курлеса (и эмулятора и sjasm'a), то прямо в текстах можно натыкать брейкпойнтов, так что при старте в эмуляторе уже стоять будут точки останова, где вы их указали. Мне лично это не надо, я просто втыкаю jr $ где надо и все.

Документации на русском вроде нет. Да там и не надо особо ничего, только про SAVESNA и SAVETRD прочитай, остальное на 99% соответствует всех спектрумским ассемблерам.


Кстати как то писал тред про ASAM надо бы его переправить на Sjasm?
Если ты про перенос текста исходника из ASAM - там исправлять будет тоже буквально пару строчек текста и все. Если ты что-то хочешь перенести где-то на форуме - конкретизируй линками, перенесу.

moroz1999
24.09.2011, 22:26
Новый unreal поддерживает установку внешних брейкпоинтов через отдельный ini:
http://dlcorp.nedopc.com/viewtopic.php?f=27&p=23683#p23683

Как можно воспользоваться этой фичей из SJASM?

Shadow Maker
25.09.2011, 12:31
Че-то по-моему никак, кроме как переработать сжасм, дабы он генерил файл брейкпойнтов в этом формате. Ну или можешь нагенерить брейкпойнты, потом свой скрипт запустить (ты ж пхп знаешь), который переконвертит в формат bpx.ini, а далее собственно анрил запускать.

moroz1999
25.09.2011, 15:09
логично, спасибо!

moroz1999
25.09.2011, 20:33
А есть ли какой-то способ вкладывать модули друг-в-друга, чтобы ограничить их видимость?
Что-то типа такого:
MODULE primer1
MODULE submodule
ENDMODULE
ENDMODULE

MODULE primer2
MODULE submodule
ENDMODULE
ENDMODULE

Чтобы при вызове submodule из primer1 вызывался нужный вложенный, и чтобы компилятор не ругался на совпадающие имена.
Есть ли какой-то способ? А то частенько эти самые submodule отличаются друг-от-друга реализацией, но делают примерно одно и то же, поэтому их переназывать для каждого случая неудобно.

moroz1999
25.09.2011, 20:52
согласен,обьясните на пальцах как пользоваться совместно с эмулятором автоматизировано
прилагаю пример. В папку sjasm нужно положить sjasm.exe, в папку unreal - полный unreal.
После этого для компиляции кликаем compile.bat, и всё.

Не обязательно разносить файловую организацию и непосредственно сам код в разные файлы, как у меня, но это удобно при более-менее больших проектах.

DimkaM
26.09.2011, 08:31
А есть ли какой-то способ вкладывать модули друг-в-друга, чтобы ограничить их видимость?
Что-то типа такого:
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
По другому я незнаю.

ZXMAK
27.09.2011, 15:29
а sjasm позволяет компилить простые исходники, без спец директив? типа такого:


ORG #C000
ld hl,#8000
ld de,#4000
ld bc,#1B00
ldir

NovaStorm
27.09.2011, 19:05
Конечно, получишь просто бинарь.

ZXMAK
19.10.2011, 23:21
а как задать компиляцию в TAP файл?

Дмитрий_Мигачев
20.10.2011, 20:19
Тоже интересно :)

Shadow Maker
21.02.2012, 21:07
Собственно мне тут тоже вдруг понадобилось то же, что и moroz1999 - то бишь подгрузить файл брейкпойнтов в анреал.

Во вложении мелкий скрипт, предназначен для работы с sjasmplus, который умеет делать листинг брейкпойнтов по команде BPLIST и соответственно ставить их по команде SETBP.

Итак, делать надо вот что:

1. Создаете батничек для ассемблирования, например такой:


sjasmplus demo.a80
php bpconv.php
unreal demo.sna


Что где - понятно наверное, первое - это запускается ассемблирование, потом пхп-скрипт конвертить брейкпойнты в формат unreal и запускается собственно unreal.

2. Соответственно понадобится PHP (в гугле спросите, кто не знает, просто архив куда-нибудь скачайте и пропишите, или php.exe в ту же папку положите, ну не мне вас учить) и скрипт (во вложении). В скрипте в любом редакторе поменяйте путь в папку, где у вас лежит unreal.

3. Сам скрипт настроен на то, что экспортируется файл breaks.lst, можете поменять, если вы делаете BPLIST с другим именем.

Вроде всё. Единственное что - курлес вроде не делал возможным ставить брейкпойнты в разные страницы памяти, поэтому всё фигачится в нулевую.

newart
21.02.2012, 21:29
2. Соответственно понадобится PHP (в гугле спросите, кто не знает, просто архив куда-нибудь скачайте и пропишите, или php.exe в ту же папку положите, ну не мне вас учить) и скрипт (во вложении). В скрипте в любом редакторе поменяйте путь в папку, где у вас лежит unreal.
В рот мне ноги! Выучи уже PureBasic - он проще спектрумовского.

Vitamin
21.02.2012, 21:36
В рот мне ноги! Выучи уже PureBasic - он проще спектрумовского.
А ты перепиши программку из вложения на пуревасице. И сравни размер и понятность исходников.

newart
21.02.2012, 21:45
А ты перепиши программку из вложения на пуревасице. И сравни размер и понятность исходников.




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.

Shadow Maker
21.02.2012, 21:49
Ну так кто тебе мешает? Исходники есть, делай что хочешь. Я для себя писал вообще-то, у меня php в системе стоит.

PS: Вообще утомил уже в каждой теме рекламировать PureBasic, тебе платят чтоли за это?

newart
21.02.2012, 22:04
PS: Вообще утомил уже в каждой теме рекламировать PureBasic, тебе платят чтоли за это?
Да не рекламирую я, а по дружески советую. :)

Vitamin
21.02.2012, 22:07
Как-то так.

Размер совпал. Понятность для меня равнозначна.


Ключевое слово "для меня"?

А если:


sed -nr "s/(.*)/x0=0x&/p" breaks.lst > D:/Speccy/Emuls/Unr_Spec/bpx.ini

Короче уж некуда.


PB для данной задачи подходит больше чем php.
PB не является языком для обработки текстовых данных. PHP ближе к нему.


Ну так кто тебе мешает? Исходники есть, делай что хочешь. Я для себя писал вообще-то, у меня php в системе стоит.
Если бы ты написал на PB, а у него в системе стоял php, было бы то же самое)

newart
21.02.2012, 22:27
Если бы ты написал на PB, а у него в системе стоял php, было бы то же самое)
Если бы я написал на PB, я выложил бы exe и разговоро о том на чем о написано даже не было бы.

---------- Post added at 22:27 ---------- Previous post was at 22:23 ----------


PB не является языком для обработки текстовых данных. PHP ближе к нему.
Согласен. Только я говорил о другом.

psb
22.02.2012, 00:21
на питоне надо писать, товарищи, на питоне! :))))
а если серьезно, то все понятно и с пб, и с седом (хотя тут менее очевидно), только вот юзабилити под виндой в данном случае лучше с пб и спорить тут нечего.

Vitamin
22.02.2012, 11:17
только вот юзабилити под виндой в данном случае лучше с пб и спорить тут нечего.
Не вижу разницы между выкладыванием бинаря (PB) и выкладыванием бинаря с батником для запуска. sed есть и для винды. Весит ~75kB (http://gnuwin32.sourceforge.net/packages/sed.htm)

Только как говорил тот же newart- "а может этот экзешник мне винт отформатирует!"

Shadow Maker
22.02.2012, 11:23
psb, поскольку бинаря я ни от кого не вижу, это какое-то не очень правильное утверждение. И если все равно писать батник для ассемблирования - юзеру вообще думаю пофигу, бинарь там будет или вызов внешнего обработчика. Впрочем как знаете.

DimkaM
22.02.2012, 15:54
Ненашёл исходников сясма с брейкпоинтами. Обнаружил только патч.

в этом месте надо поправить вывод, и нмкаких шаманств ненужно будет

+void WriteBp(aint val) {
+ char line[6], *tline;
+ tline = line;
+ PrintHEX16(tline, val);
+ line[4] = '\n';
+ line[5] = 0;
+ fputs(line, FP_UnrealBp);
+}

SoftLight
22.02.2012, 17:17
Пропатчите пож. последнюю версию sjasm для работы с брекопоинтами в формате последнего Unreal. Запарился использовать старую версию sjasm и старый Unreal.

Shadow Maker
23.02.2012, 12:52
Пропатчите пож. последнюю версию sjasm для работы с брекопоинтами в формате последнего Unreal. Запарился использовать старую версию sjasm и старый Unreal.

А мой вариант тебе не подходит?

SoftLight
23.02.2012, 13:48
Подходит, спасибо! Но это конечно как удалять аппендицит через гланды. IMHO проще в сорсах sjasm добавить кусок кода кто умеет. Я не умею и разбираться влом. Пока сижу вот на таком (http://zx.pk.ru/showpost.php?p=177958&postcount=4)варианте.

Shadow Maker
23.02.2012, 14:07
Да просто все равно же компилируется батником, разницы вообще лично мне никакой. В сорсах-то там вообще одну строчку поменять так-то.

SoftLight
23.02.2012, 16:17
Ну в общем жить можно. На запуск образа из IDE UEStudio по F9 теперь тратится на секунду дольше за счет выполнения php, зато все работает с Unreal 0.37.6

jerri
23.02.2012, 16:35
в cjasm есть бага
не работает if endif внутри dup:edup

DimkaM
24.02.2012, 12:53
Пропатчите пож. последнюю версию
SjASMPlus 1.07 RC8 PRERELEASE, скачал исходники из svn, vs2010 компилит но сясм вылетает.
1.07 RC7 компилится и работает нормально.
Ща mingw попробую.

Shadow Maker
24.02.2012, 14:10
Там же не с свн надо, а с гита, там точно работала версия с мингв.

Где ты кстати нашел RC8? Я такой ни в свн ни в гите не вижу.

https://github.com/mkoloberdin/sjasmplus

Shadow Maker
24.02.2012, 15:24
Не знаю почему :) Сейчас заменю.

Я внутренности не смотрел, ну раз RC8, то норм. Собралось нормально всё?

DimkaM
24.02.2012, 16:11
Может LUA того, выпилил бы кто.

Под виндой у кого собирается?

mastermind
24.02.2012, 16:53
Под виндой у кого собирается?
Вот здесь есть уже собранный из git: https://github.com/downloads/mkoloberdin/sjasmplus/sjasmplus-revision-2008-11-06-mingw32.zip

jerri
24.02.2012, 20:14
вот это (http://zx.pk.ru/showpost.php?p=456967&postcount=3) компилит?
если нет то в топку

Shadow Maker
24.02.2012, 21:24
вот это (http://zx.pk.ru/showpost.php?p=456967&postcount=3) компилит?
если нет то в топку
Ну это фиксить надо, я-то не C++ программист, чтобы зафиксить.

---------- Post added at 21:24 ---------- Previous post was at 21:24 ----------


Может LUA того, выпилил бы кто.

Под виндой у кого собирается?
Зачем выпиливать ЛУА??

Shadow Maker
25.02.2012, 13:50
А смысл? Не мешает же.

alone
25.02.2012, 22:44
Меня лично уже задолбало, что каждый новый автор ветки Unreal оттуда что-то выкидывает. Один выкинул турбо, другой память, третий магнитофон. Потом то же случилось с Alasm. Теперь и с SjAsm. Оно вам мешает? Если вы не пользуетесь фичей, то это не значит, что она никому не нужна.

Shadow Maker
26.02.2012, 00:52
Ну смысл в том, что размер исполняемого файла значительно меньше становится :)

впрочем всем на это давно уже пофиг… :cool:
Вот именно. Не мешает - пусть остается, а потом вдруг понадобится - а её нет. Я например макросами не пользуюсь вообще - но не предлагаю же нафиг выкинуть их.

---------- Post added at 00:52 ---------- Previous post was at 00:50 ----------


Один выкинул турбо, другой память, третий магнитофон.
А это в какой версии нет магнитофона?

alone
27.02.2012, 07:23
SS+Q - это вообще-то Home. А функция не исчезла.

---------- Post added at 06:23 ---------- Previous post was at 06:22 ----------


А это в какой версии нет магнитофона?
Unreal Speccy Portable. Во всяком случае, я не понял, как там его включить.

P. S.: А, понял, они только автостарт выкинули. Запуск ленты теперь через меню.

breeze
16.03.2012, 17:06
подскажите плиз, как написать sjasm конструкцию типа:


cp 'addr +2

что бы он не матерился?

Shadow Maker
16.03.2012, 17:11
А она что должна делать?

breeze
16.03.2012, 17:22
А она что должна делать?

взять старшее значение указателя addr ну и прибавить 2

Shadow Maker
16.03.2012, 17:33
cp (high addr)+2 ?

breeze
16.03.2012, 17:35
cp (high addr)+2 ?

да, спасибо большое. собралось.

Destr
24.03.2012, 11:25
Может быть не в тему влез, но хотелось бы выразить пожелание - нельзя-ли чтоб в сообщении при компиляции (в случае ошибки) номер строки выделялся цветом? (ну скажем красным)
А то ведь как, жму F5 (компиляция и запуск, это в акеле) и там у меня стоит "Press any key". На автомате жму "Enter", а уже мгновением позже моск оценивает была ошибка или всё ок.
Выделение очень помогло-бы.
(отмену запуска сделать)

Shadow Maker
24.03.2012, 14:19
По-моему разработкой Sjasm уже давно никто не занимается.

Destr
24.03.2012, 23:36
По-моему разработкой Sjasm уже давно никто не занимается.
Весьма прискорбно...
:(

Alex Rider
07.04.2012, 21:07
Есть такое дело:



MACRO Sample high, low

ld hl,high << 8 + low

ENDM


SjASM говорит про такое "bytes lost". Придумал на скорую руку как-то так:



MACRO Sample high, low

ld hl,(#0000 | high << 8 + low)

ENDM


Выглядит коряво. Есть прямой способ?

upd:
упс, наошибся

ld hl,(#0000 | high << 8 + low) - тут скобки не нужны. Без них все работает как хотел. Решение кривым быть не перестало.

DimkaM
08.04.2012, 12:12
Alex Rider,

cp (high addr)+2 ?
ld hl,(high << 8) + low
или
ld hl,high*256+low

А ваще high и low зарезервированы ассемблером

thims
10.04.2012, 00:30
По-моему разработкой Sjasm уже давно никто не занимается.
Чё эта вдруг? Тут: SjASMPlusUnreal (http://sjasmplusunreal.codeplex.com/).

ld hl,(high << 8) + low
Верно сие совершенно. Кстати, про приоритет операций много где написано, включая доку по SjASMPlus... Вообще-то.

Alex Rider
10.04.2012, 11:09
А ваще high и low зарезервированы ассемблером


Кстати, про приоритет операций много где написано

Спасибо, все работвет, до меня дошло сразу. Про приотритет не доглядел, запамятовал, что у + выше приоритет, чем у <<. "high" и "low" взял для примера, пример синтетический, слова эти активно пользую по прямому назначению.

Shadow Maker
10.04.2012, 12:09
Чё эта вдруг? Тут: SjASMPlusUnreal (http://sjasmplusunreal.codeplex.com/).
Это вообще что? Где чейнджлог?

thims
10.04.2012, 13:35
Это вообще что? Где чейнджлог?Это асм и анрил. Чейнджлог там внутре у ней. У анрила в news.txt, а у асма соответственно в доке. Для начальной заливки сойдет.

Shadow Maker
11.04.2012, 15:01
А анрил зачем?

---------- Post added at 15:01 ---------- Previous post was at 14:58 ----------


- Added new BPLIST and BPSET pseudo-ops.
- Removed LUA support.
- Removed platforms support others than WIN32.
- Minor code cleanups.
Кошмар. Верни всё назад.

DimkaM
11.04.2012, 16:29
Кошмар. Верни всё назад.кому чево нада, тот тово и делает.

А ежли взад, то в топик старте оно есть.

thims
11.04.2012, 18:31
А анрил зачем?
За надом.

Кошмар. Верни всё назад.Притопать к тебе домой и скопировать тебе на диск старый дистро? Или как вернуть? SjASMPlusUnreal можешь не пользовать, если не нравится. Какие вообще проблемы? Или ты постоянно запускаешь луашные скрипты на смартфонах? Тогда тебе в 2008й год.

psb
12.04.2012, 13:40
завели бы репу и сделали ветки. и все патчи полезные были бы у всех. а то вам в 1990-какой-то год надо...

thims
12.04.2012, 21:22
завели бы репу и сделали ветки. и все патчи полезные были бы у всех. а то вам в 1990-какой-то год надо...
Ну уж. Сурсконтролу тыща лет уже. Какой там 90-й.. А по репке - так вот же шь она (http://sjasmplusunreal.codeplex.com/)- хошь патчи заливай, хошь ветки заводи. Хошь баги заводи, хошь просто обсуждай. Хошь свном подключайся, а хошь прям студией десятой. Всё есть.

Shadow Maker
12.04.2012, 23:24
Короче чувствую, чтобы сделать всё как надо - надо выучить Си и сделать самому.

---------- Post added at 23:24 ---------- Previous post was at 23:22 ----------


За надом.
Притопать к тебе домой и скопировать тебе на диск старый дистро? Или как вернуть? SjASMPlusUnreal можешь не пользовать, если не нравится. Какие вообще проблемы? Или ты постоянно запускаешь луашные скрипты на смартфонах? Тогда тебе в 2008й год.
Я не понимаю это желание всё вырезать. Может я например макросы не использую, давай их выкинем, а также я не пользуюсь половиной команд сжасма, например сборкой тапов - надо тоже убить. Про то, что где-то 20-30% пишущись на линуксе тоже идут лесом я вообще молчу. Короче - нафига урезать нормально работающую вещь?

psb
12.04.2012, 23:44
А по репке - так вот же шь она
ну, на сколько я понимаю, это как раз урезанная версия? надо централизованно делать, чтобы была главная ветка (полная, для всех, на спец. сайте полной версии;)), и эта для анрила как бранч. и чтобы кто-то их синкал время от времени...


Короче чувствую, чтобы сделать всё как надо - надо выучить Си и сделать самому.
+10! :)

thims
13.04.2012, 01:17
Короче чувствую, чтобы сделать всё как надо
А ты, надо полагать, боженька святой? Единственный на планете знаешь, как всё надо? Или у тебя есть последователи? ;)

Я не понимаю это желание всё вырезать.
А я тебе объясню. Копаться в куче мусора, которую представляет из себя практически любой опенсорсный проект существенно проще, если мусора меньше.

Про то, что где-то 20-30% пишущись на линуксе
А это при чем здесь? Пиши наздоровье. Я вон в последнем апдейте даже мейк сделал для мингва.

Короче - нафига урезать нормально работающую вещь?Да что я работающего-то урезал!?

ну, на сколько я понимаю, это как раз урезанная версия?
В чем это она, позвольте, урезанная? Она наоборот как раз, расширена новыми псевдоопами!

NovaStorm
13.04.2012, 09:02
Я вот например использовал скриптинг на lua, и он мне весьма помогал.

Shadow Maker
13.04.2012, 09:48
В чем это она, позвольте, урезанная? Она наоборот как раз, расширена новыми псевдоопами!
В Sjasm с 2009 года есть SETBP и BPLIST. Какие тогда псевдоопы ты добавил?

rajdee
13.04.2012, 10:09
Да поднимите вы свой проект на git, дался она вам со своей версией.

thims
13.04.2012, 11:02
Я вот например использовал скриптинг на lua, и он мне весьма помогал.
Можно поподробнее? Реально интересно - чем? А то пока мне кажется, "он мне весьма помогал" - это так, для красного словца. За каким чёртом сдался луа в компиляторе спектрумовского ассемблера!?

В Sjasm с 2009 года есть SETBP и BPLIST. Какие тогда псевдоопы ты добавил?
SETBP и BPLIST. А где они там есть можно догадываться только по косвенным признакам. Где взять версию с ними - хз. В шапке без них. Линк где-то на стопицотой странице этого эпичного треда - не рабочий. Вот я их и добавил. К тому же мой BPLIST сохраняет ловушки для свежайшей версии унрила. К тому же мой SETBP позволяет использовать себя без параметров, а также указывать тип ловушки.

Да поднимите вы свой проект на git, дался она вам со своей версией.
Госпади! Да уже подымали и на гите и на сурсфорже, колотить! И чо? Как будто важна платформа. Какая х... разница - на кодеплексе, гуглокоде, гите или сурсфорже? С 2008 года ни одного изменения.

Eltaron
13.04.2012, 11:35
Госпади! Да уже подымали и на гите и на сурсфорже, колотить! И чо? Как будто важна платформа. Какая х... разница - на кодеплексе, гуглокоде, гите или сурсфорже? С 2008 года ни одного изменения.
Платформа не важна. Важно то, что надо иметь возможность понимать точки бранчеванья для возможности в дальнейшем что-то с чем-то смерджить. А когда Initial Commit в сурсконтрол _уже_ содержит измененный код - толку от такого форка немного.

thims
13.04.2012, 11:50
А когда Initial Commit в сурсконтрол _уже_ содержит измененный код - толку от такого форка немного.
Измененный относительно чего? Предлагаешь исходный SjASM (http://home.wanadoo.nl/smastijn/sjasm.html) залить и бранчеваться?

psb
13.04.2012, 12:07
В чем это она, позвольте, урезанная? Она наоборот как раз, расширена новыми псевдоопами!
а я не видел, только здесь об этом прочитал, что что-то вырезали.


За каким чёртом сдался луа в компиляторе спектрумовского ассемблера!?
элементарно: в прошивке GS считается контрольная сумма прошивки и кладется в прошивку. это реальный пример (ну, не считая того, что вроде в прошивке чекинг заигнорен).


Измененный относительно чего? Предлагаешь исходный SjASM залить и бранчеваться?
имхо, типа того. НО, для нас (спектрумистов) исходный SjASM - это наш SjASM (который пилил Aprisobal), а не авторский. нужен человек, который будет это поддерживать и следить за репой, тогда все могут делать бранчи, мутить там что угодно под себя, но если будет полезная многим фича - она войдет в основную полную ветку.

блин, и то же самое надо делать для unreal.

NovaStorm
13.04.2012, 12:20
За каким чёртом сдался луа в компиляторе спектрумовского ассемблера!?
Препроцессор и кодогенерация, например можно генерить нужные таблички и развёрнутый код для вывода спрайтов.

Shadow Maker
14.04.2012, 01:34
Так, всё, хорош флудить, бред уже какой-то пошел. thims хочет делать себе ассемблер и эмуль с блекджеком и всем прочим - успехов ему. Засим собственно можно и прекратить спор ни о чем.

Лас
06.06.2012, 20:01
SjASMPlusUnreal (http://sjasmplusunreal.codeplex.com/).
А можно в какой нибудь ветке UnrealSpeccy сделать автозагрузку и автостарт, например, снэпшота или, скажем, scl?

Предположим, в ini анрила добавить строку типа autostartfile=имяфайла.sna . Далее, когда анрил запущен, с некой периодичностью он должен сканировать каталог, указанный в ini анрила как DIR, на появление этого файла в этом каталоге.
В случае появления запускать этот файл, затем удалять его и снова ожидать его появления, чтобы снова запустить.
Как мне кажется, это удобно для отладки своих программ в связке SjASMPlus+Unreal с помощью директивы SjASMPlus "savesna":
Компилируем свой код и пишем .sna в каталог. Уже запущенный Unreal автоматически подхватывает нужный файл и запускает его, не забыв заново загрузить пользовательский список меток и брикпойнтов. Удаляет файл из каталога.

Думаю, что я своими силами мог реализовать подобное, если бы на это найти время...
Для того, кто возьмется - готов заплатить, ну, 500 деревянных.

Или это уже реализовано как-то?

thims
06.06.2012, 20:26
Уже запущенный Unreal автоматически подхватывает нужный файл и запускает его, не забыв заново загрузить пользовательский список меток и брикпойнтов.
Бряки и так подхватываются. Только какой дьявольский смысл в таком геморе, если анрил стартует за 1 секунду?

Лас
06.06.2012, 20:41
Бряки и так подхватываются. Только какой дьявольский смысл в таком геморе, если анрил стартует за 1 секунду?
1. Собственно, смысл я уже описал выше.
2. Гемор - это ваше субьективное понятие, как программиста
3. Этот ваш "гемор" - для юзера ничто иное, как опция. Кого волнует, насколько это сложно реализовать программисту. Кстати, уверен, что несложно.
4. Лично мне недостаточно комфортно работается в среде SJasm+UnrealSpeccy+UEStudio, когда при компиляции и билде нового кода в sna я постоянно должен закрывать окно анрила, плюс закрывать еще окно командной строки, которое анрил не закрывает, даже при установленном hideconsole=1, когда анрил запускается из командной строки. Либо при каждом новом билде получать +2 окна анрила (анрил и окно консоли) в котором запускается мой новый скомпилированный снэп.
Гораздо проще, если анрил будет проверять появление заданного снэпа в директории и сам будет загружать его.

Alex Rider
06.06.2012, 21:25
В случае появления запускать этот файл, затем удалять его и снова ожидать его появления, чтобы снова запустить.

Ну, не удалять, а мониторить дату сохранения, и перезапускать sna при ее изменении, мне кажется. И с образами дисков и лент так можно (перечитывать и сбрасываться). Удалять документ, открытый приложением - это не по-православному.

psb
06.06.2012, 21:49
я когда отлаживал, вообще не закрывал анрил. просто f3, тык в снап и готово, при этом ты сразу в отладчике. какая-то надуманная проблема, ИМХО.

NovaStorm
07.06.2012, 08:40
А можно ли как-то автоматом подсчитать кол-во тактов между парой меток(ну если конечно там циклов/переходов нету)?

psb
07.06.2012, 11:26
поставить 2 бряка на 2 метки, потом нажать esc. когда вывалишься в отладчик на 2й метке, внизу будет видно скока тактов сожралось (и пофиг на циклы/переходы).

NovaStorm
07.06.2012, 13:41
поставить 2 бряка на 2 метки, потом нажать esc. когда вывалишься в отладчик на 2й метке, внизу будет видно скока тактов сожралось (и пофиг на циклы/переходы).

Ну это-то понятно, но интересовало, как бы сделать это в асме, например для выравнивания таймингов, иначе слишком уж много тупой ручной работы.

Shadow Maker
08.06.2012, 00:21
Для того, чтобы это сделать в асме, надо в асм запилить половину эмулятора :) учитывая вон вышесказанное про ноп в три такта. мало ли кто по какому режиму считать собрался.

psb
08.06.2012, 11:14
Йес!!! Наш ответ Чемберлену. Вернее некоторым чЮдакам, которые не верят, что NOP не всегда равен 4м тактам.
ахаха! :)
поди включен режим с ваитами:) 3 такта блин:) чЮдаки, лол:)

Ну это-то понятно, но интересовало, как бы сделать это в асме, например для выравнивания таймингов, иначе слишком уж много тупой ручной работы.
когда мне надо было выравнивать по тактам куски кода, я делал примерно так:



code ;X t
code ;Y t
code ;Z t
padd_macro Tneed-X-Y-Z

тут ручная работа, конечно, есть, но все же проще что-то менять. padd_macro - макрос (или куча макросов), который добавляет код в нужное кол-во тактов.

было дело, даже писал автоматический такой "компилятор", который делал то же, что и макрос, но в процессе работы проги и кол-во тактов дробное(!). но в любом случае вручную надо было задавать кол-во тактов полезного кода.

thims
08.06.2012, 13:51
Гораздо проще, если анрил будет проверять появление заданного снэпа в директории и сам будет загружать его.Никогда он не будет этого делать. Инфа 100%. Потому рекомендую в свой сборочный батник вставить команду taskkill и успокоиться.

Sinus
08.06.2012, 16:29
это самый обычный режим. Конкретно Пентагоновский. На любом эмуле так.

в этом проверь - http://detstwo.com/pub/zemu/
зуб даю что NOP - 4 такта :)

TmK
09.06.2012, 12:02
Sinus, вполне верю, но ссылка какая-то неправильная. Перед всеми извиняюсь, потер свой бред, в споре рождается истина :(

NOP всегда 4 такта, а вот при приходе команды HALT бывает плавающая задержка 0-4 такта )

SAM style
09.06.2012, 12:12
...а вот при приходе команды HALT бывает плавающая задержка 0-4 такта )HALT делается как много NOP-ов, при возникновении INT очередной NOP не прерывается, а доделывается, после чего происходит выход из HALT-а. Поэтому HALT всегда кратен 4 тактам, никакой "плавающей задержки"

SfS
09.06.2012, 12:19
чо-где последняя-распоследняя версия ужасма?:) с правками от 2012 года?

Лас
09.06.2012, 13:03
Никогда он не будет этого делать. Инфа 100%. Потому рекомендую в свой сборочный батник вставить команду taskkill и успокоиться.
Я уже всё сделал. Без всяких taskkilloв, батников и перезапусков анрила. 4 часа в VS2010 с нулевым знанием Си и Unreal теперь запускает свежий qsave1.sna. Свою инфу 100% и рекомендации расслабиться можешь засунуть себе в исходник.

Лас
10.06.2012, 02:06
Реализовал еще одно решение, проще предыдущего. PureBasic.
launcher.exe запускается после окончания компиляции SjASM или, к примеру, по кнопке Run из IDE (UEStudio).



;launcher.exe при запуске ищет окно UnrealSpeccy
;в случае отсутствия запущенного эмулятора - запускает его и снова ищет окно
;переводит фокус на окно Unreal и имитирует нажатие клавиш
;Alt+F3 - быстрая загрузка qsave1.sna
;если UnrealSpeccy был изначально свернут - сворачивает снова
;иначе оставляет окно активным
;--------------
;поиск главного окна UnrealSpeccy
count=0
minim=0
Repeat
count=count+1
UnrealWin=FindWindow_(0,"UnrealSpeccy") ;ищем по заголовку окна
Delay(1)
If count=1000
RunProg = WinExec_("D:\ZX\Unreal\unreal.exe", #SW_SHOWNORMAL)
Delay(1000)
EndIf
Until UnrealWin>0 ;пока не найдем окно

;фокус в окно Unreal
If GetWindowLong_(UnrealWin, #GWL_STYLE) & #WS_MINIMIZE
minim=1
ShowWindow_(UnrealWin, #SW_SHOWNORMAL)
UpdateWindow_(UnrealWin)
EndIf
actwin=GetWindowThreadProcessId_(GetForegroundWind ow_(),0)
curwin=GetCurrentThreadId_()
If (actwin<>curwin)
AttachThreadInput_(actwin,curwin,#True)
EndIf
SetForegroundWindow_(UnrealWin)
If (actwin<>curwin)
AttachThreadInput_(actwin,curwin,#False)
EndIf
InvalidateRect_(UnrealWin,#Null,#True)

;эмуляция нажатия ALT+F3 (quick load qsave1.sna)
Delay (800)
keybd_event_(#VK_MENU,MapVirtualKey_(#VK_MENU,0),0 ,0)
keybd_event_(#VK_F3,MapVirtualKey_(#VK_F3,0),0,0)
Delay(200)
keybd_event_(#VK_MENU,MapVirtualKey_(#VK_MENU,0),# KEYEVENTF_KEYUP,0)
keybd_event_(#VK_F3,MapVirtualKey_(#VK_F3,0),#KEYE VENTF_KEYUP,0)
If minim=1
ShowWindow_(UnrealWin, #SW_SHOWMINIMIZED)
EndIf

psb
12.06.2012, 19:10
никакой "плавающей задержки"
имеется в виду, что при halt при приходе прерывания задержка выполнения следующей команды будет отстоять от начала прерывания в 0..3 такта (ну, плюс константное время входа в прерывание, т.е. болтанка возможна).


PureBasic.
newart, перелогинься! :v2_lol:

thims
13.06.2012, 22:54
Реализовал еще одно решение, проще предыдущего. PureBasic.
Ну что тут скажешь... Мое почтение. Это очень простые решения, безусловно. Гораздо проще, чем запускать run.bat следующего содержания:

taskkill /f /im unreal.exe
unreal.exe mycode.sna

Лас
13.06.2012, 23:33
Ну что тут скажешь... Мое почтение. Это очень простые решения, безусловно. Гораздо проще, чем запускать run.bat следующего содержания:

taskkill /f /im unreal.exe
unreal.exe mycode.sna
Слушаем и читаем мы только себя, thims.
Я уже, кажется, писал, почему вариант с перезапуском анрила мне не подходил.

thims
15.06.2012, 18:50
Я уже, кажется, писал, почему вариант с перезапуском анрила мне не подходил.
Ключевое слово выделено. Чтобы не казалось, скажу точно: нет, не писал.

drbars
31.07.2012, 19:37
Друзья! У меня возник вопрос, этот sjasm может упаковывать откомпилизованные исходники?

Хочется чтобы после ассемблирования на trd образе появился бейсик с монолоадером и упакованный кодовый блок, например хрустом. Киньте примером плз.

goblinish
31.07.2012, 19:46
Друзья! У меня возник вопрос, этот sjasm может упаковывать откомпилизованные исходники?

Хочется чтобы после ассемблирования на trd образе появился бейсик с монолоадером и упакованный кодовый блок, например хрустом. Киньте примером плз.

savesna "ms.sna",begin
;savebin "mc.bin",begin,end-begin
;SAVEHOB "mc.$c","MunSq.C",begin,end-begin
;EMPTYTRD "mc.trd"
;SAVETRD "mc.trd","MunSq.C",begin,end-begin

дальше сам.

psb
31.07.2012, 20:07
паковать можно хрустом(отдельной консольной утилитой), кидать на trd упакованный блок тоже отдельной утилитой.

drbars
31.07.2012, 20:53
Ребят, а пример есть? У меня под рукой ни утилиты, ничего.

psb
31.07.2012, 21:06
Ребят, а пример есть? У меня под рукой ни утилиты, ничего.
хехе:) пример будет в новой вики по zx-девелопменту, а под рукой тоже ничего нет...

drbars
31.07.2012, 21:09
Пример монолоадера тоже проскакивал, нужно искать по форуму...

---------- Post added at 20:08 ---------- Previous post was at 20:06 ----------

Хруст: http://zx.pk.ru/showthread.php?t=13013
Нашел в примерах sjasm монолоадер. Теперь упаковку помучаю.

goblinish
31.07.2012, 21:23
кстати, когда дему писал, в sjasm'e глюк нашел, но затерял исходник.
надо бы вопроизвести..

Shadow Maker
01.08.2012, 14:40
паковать можно хрустом(отдельной консольной утилитой), кидать на trd упакованный блок тоже отдельной утилитой.
Кидать можно напрямую sjasm'ом. Например так:



page 0
org #4000
dehrust
INCBIN "dehrust.bin"
dehrust_
SAVETRD "mercenar.trd","dehrust.C",dehrust,dehrust_-dehrust

dehrust_len equ dehrust_-dehrust


Можно подставить любое имя файла естественно.

psb
01.08.2012, 14:44
можно конечно - использовать sjasm как часть утилит для сборки образа (как гвозди микроскопом)... может можно и паковать, если написать хруст на lua...

Shadow Maker
01.08.2012, 14:49
А зачем использовать какие-то левые консольные программы, когда всё умеет сам sjasm? Так можно и собственнно сохранение в SNA делать отдельный утилитой например, вывод блоков - тоже отдельной, а че, подумаешь, стопицот левых программ висит.

psb
01.08.2012, 15:08
если бы он это делал за один проход вместе со сжатием, было бы норм (хотя и странно). а так получается, добавляются постбилд-шаги, где ассемблер используется для "левых" целей... это называется "костыли".

drbars
01.08.2012, 21:02
Что-то этот dehrust.bin корявый какой-то. У меня заработал только исходник от обычного спековского хруста 1.3, который тут недавно выложили.

Дмитрий
01.08.2012, 22:27
drbars, посмотри EvoSDK, там реализовано все на автомате от компиляции исходника на Си (!!?) и вплоть до создания монолоадера на сжасме и последующим формированием трд и запуском в эмуле. Уверен там найдешь что-то полезное для себя

moroz1999
01.08.2012, 23:38
Я пользуюсь вместо хруста MegaLZ, с хрустом тоже какая-то заморочка была при распаковке.

drbars
01.08.2012, 23:46
drbars, посмотри EvoSDK, там реализовано все на автомате от компиляции исходника на Си (!!?) и вплоть до создания монолоадера на сжасме и последующим формированием трд и запуском в эмуле. Уверен там найдешь что-то полезное для себя
Да уже разобрался, принцип огорода с паковкой стал понятен. Всё компилируется и работает.

esl
12.08.2012, 22:58
Приветствую !
подскажите пожалуйста, есть ряд вопросов

osx,
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)

как понять номер строки с ошибкой
т.к. сейчас то что вижу не имеет отношения к реальности

например
p2.asm(42): error: Syntax error: ','B'
- 26 строка в файле
правда по LST файлу можно найти где ошибка но как-то странно


00101 4024 out_de_99: ; CODE XREF: vdp_wr_de_a+4p
00102 4024
00103 4024 ; vdp_rd_de+1p ...
00104 4024
00105 4024 7B ld a, e
00106 4025
00107 4025 D3 99 out (99h), a ; '™'
00108 4027
00109 4027 7A ld a, d
00110 4028
00111 4028 D3 99 out (99h), a ; '™'
00112 402A
00113 402A C9 ret


2. подскажите как правильно записать бинарник
в чем сейчас грабля
есть исходник, в нем 2 ORG
ORG 4000h
sdaddsa
ORG 0E000h
ds
ds

после e000 только DS
но при записи, это все пишется одним потоком байт, и дописывает 0 вместо всех DS
я бы ожидал что DS это просто объявление адресов, без реальных 0

Shadow Maker
12.08.2012, 23:28
ds это заполнение символом, который идёт после ds. У тебя в данном случае чем заполняется? Бинарник сохраняется с начала и до конца, что ты от него хочешь-то? По файлам он тоже все нормально строку показывает, че-то или ты не понимаешь, или одно из двух, в общем надо файл.

psb
13.08.2012, 00:46
можно записать только нужный кодовый блок директивой ассемблера, без содержимого Е000.

esl
13.08.2012, 01:20
можно записать только нужный кодовый блок директивой ассемблера, без содержимого Е000.

Как ?

---------- Post added at 00:20 ---------- Previous post was at 00:16 ----------


Бинарник сохраняется с начала и до конца, что ты от него хочешь-то? По файлам он тоже все нормально строку показывает, че-то или ты не понимаешь, или одно из двух, в общем надо файл.

хочу чтоб сохранил только нужный мне кусок ;)
без указания типа машины

c DS в общем то не сильно принципиально
обошлось
просто мне казалось что m80 было как-то по другому
ну и ладно с ним

а с нумерацией строк - похоже понял
я то скомпилил sjasmplus под osx
а исходник подсунул ему из win

перевел исходинк в UNIX style
и попустило, но баг на лицо



0059 4024 out_de_99: ; CODE XREF: vdp_wr_de_a+4p
0060 4024 ; vdp_rd_de+1p ...
0061 4024 7B ld a, e
0062 4025 D3 99 out (99h), a ; '™'
0063 4027 7A ld a, d
0064 4028 D3 99 out (99h), a ; '™'
0065 402A C9 ret
0066 402B ; End of function out_de_99

Shadow Maker
13.08.2012, 01:26
В чем баг-то заключается? Исходники где твоей мега-программы, чтобы можно было посмотреть?

Про бинарники читай документацию. Я так понял ты хочешь это:


OUTPUT loader.com
ORG 100H
INCLUDE loader.asm
INCLUDE bios.asm

OUTPUT bigfile.dat
ORG 4000H
INCLUDE main.asm
ORG 8000H
INCLUDE data.asm
This will create two files: loader.com and bigfile.dat.

Savebin без указания типа машины не работает, а так можно было бы и им сохранить, указав с какого адреса сохранять.

esl
13.08.2012, 01:54
В чем баг-то заключается? Исходники где твоей мега-программы, чтобы можно было посмотреть?


ну прям классический ответ девелопера на баг репорт ;)
я ж в своем посте описал в чем грабля
ну да ладно, пойдем обычным путем

[precondition]
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
build under OS X 10.7.3

[steps to reproduce]
1. extract attached zip
2. execute ./build.sh from archive
3. compare lst file

or just compare lst files

[expected result]
lst file test_unix.lst should be same as test_win.lst

[actual result]
lst file for test_win.lst contain unnecessary lines and invalid line numbering

looks like incorrect processing windows line ending (CR/LF) under UNIX system
CR and LF like different lines for SJASM

but if convert windows file to unix format (dos2unix) line number work correct
and let file doesn't contain unnecessary lines

ок, убрал ссылку в теле письма на аттач, теперь он виден явно

Shadow Maker
13.08.2012, 01:56
Я не девелопер, никаких аттаченых зипов не вижу. sjasm под автораспознавание концовок не затачивался, насколько я знаю, он берет как есть. Можешь сам внедрить, исходники у тебя есть.

Да и проблема какая-то выеденного яйца не стоит по-моему.

esl
13.08.2012, 02:13
В чем баг-то заключается? Исходники где твоей мега-программы, чтобы можно было посмотреть?

Про бинарники читай документацию. Я так понял ты хочешь это:


OUTPUT loader.com
ORG 100H
INCLUDE loader.asm
INCLUDE bios.asm

OUTPUT bigfile.dat
ORG 4000H
INCLUDE main.asm
ORG 8000H
INCLUDE data.asm
This will create two files: loader.com and bigfile.dat.

Savebin без указания типа машины не работает, а так можно было бы и им сохранить, указав с какого адреса сохранять.
про savebin я в доке прочитал.

а вот что конкретно попадет в loader.com и bigfile.dat.
loader.com
100h .. последний байт на момент чего ????


bigfile.dat
4000h .. 8000h+len(data.asm) ??

---------- Post added at 01:13 ---------- Previous post was at 00:59 ----------


Я не девелопер, никаких аттаченых зипов не вижу. sjasm под автораспознавание концовок не затачивался, насколько я знаю, он берет как есть. Можешь сам внедрить, исходники у тебя есть.

Да и проблема какая-то выеденного яйца не стоит по-моему.

ну как сказать то ;)
почему сюда написал

компилю значится первый раз исходник, и получаю результат работы вида


SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
Pass 1 complete (0 errors)
p2.asm(1985): error: Bytes lost 8
p2.asm(1987): error: Bytes lost 8
p2.asm(1987): error: Bytes lost 8
Pass 2 complete (3 errors)
p2.asm(1985): error: Bytes lost 8
p2.asm(1987): error: Bytes lost 8
p2.asm(1987): error: Bytes lost 8
Pass 3 complete
Errors: 6, warnings: 0, compiled: 15798 lines, work time: 0.044 seconds


тихо фигею с 15798 ибо в самом файле 8268 строк

смотрю строчки 1985-1987 и фигею второй раз


sbc hl, de
ex de, hl
ld a, 60h ; '`' ; First Char of Konami


ЧТО ТУТ может вызвать error: Bytes lost 8

и только когда включил LST и догадался в него посмотреть


p2.asm(1985): error: Bytes lost 8
01985 44A4 db 'S','O','U','N','D', 1, 1,'@','@','@','@','Y','&#161;','O', 1, 1, 1, 1
01985 44A4 534F554E4401014040404059A14F01010101
01986 44B6
p2.asm(1987): error: Bytes lost 8
p2.asm(1987): error: Bytes lost 8
01987 44B6 db 'C','G', 1, 1, 1, 1, 1,'@','@','@','@','R','&#161;','S', 1,'C','&#161;','K'
01987 44B6 434701010101014040404052A1530143A14B


что уже ГОРАЗДО ближе к телу
про текст ошибки - разговор отдельный ;)

p.s. Bytes lost 8 - 8ка тут, это я искал что же за грабля
и попатчил исходник чтобы понять какая из 3х функия конкретно говорит эту фразу

потом уже пришла идея про конец строк, но далеко не сразу ;)

так стоит эта проблема пол дня потраченного времени ?
или яйца выеденного не стоит ?

да и на sourceforge указано что он win/FreeBSD/Linux
значитца должен

Shadow Maker
13.08.2012, 02:22
Ну упоминания стоит, да. Только версии не для винды официально не поддержаны, насколько я знаю, так что там на свой страх и риск всё.


loader.com
100h .. последний байт на момент чего ????
С начала OUTPUT и до следующего OUTPUT.



bigfile.dat
4000h .. 8000h+len(data.asm) ??
Блин. Ну тут будет содержимое main.asm+data.asm. Без нулей между ними, они просто на тот адрес отассемблируются.

psb
13.08.2012, 02:56
Как ?


org #5d40
start_
nop
nop
nop
end_

org #e000
ds ...
ds ...

SAVEBIN "prog.C",start_,end_-start_

Shadow Maker
13.08.2012, 09:50
SAVEBIN работает только в режиме эмуляции реальной машины, а он этого не хочет.

NovaStorm
13.08.2012, 10:27
SAVEBIN работает только в режиме эмуляции реальной машины
Кстати, почему? Вроде в 1.06 он и без DEVICE работал.

Shadow Maker
13.08.2012, 11:40
Не ко мне вопрос. Наверное из-за страничек.

psb
13.08.2012, 18:34
хочет не хочет... возможность-то есть, разницы особо нет.

Shadow Maker
13.08.2012, 18:36
Ну учитывая, что он компилит под MSX - думается разница есть.

psb
13.08.2012, 18:41
разница в чем? опкоды другие станут у з80? ;)

Shadow Maker
13.08.2012, 18:48
Ты видимо уже забыл, о чем говорил. Перечитай. Разговор шел о том, почему не подходит SAVEBIN.

Shadow Maker
13.08.2012, 19:38
Esl про savebin знает, я не в курсе чего там за архитектура у того компа, под какой он это пишет, наверное ему 48k мало.

esl
13.08.2012, 20:25
тише, господа !

ниче странного у меня то и нету, сейчас компилю дизасм рома для MSX
потом возможно будет под другую архитектуру

просто sjasm впервые увидел буквально вчера, прочел доку, стал спрашивать

задача в общем у меня простоя,
код компилится с 4000h .. 7fff

что надо прописать в чтоб такое в файл бросало

реально оно там больше компилит
4000..8000 E000..E400 (тут живут переменные DSами)
нужно только то что 4000-8000

esl
13.08.2012, 22:50
DEVICE ZXSPECTRUM48
ORG 0x4000

Start:
...code goes here...
End:

SAVEBIN "path/filename",0x4000,0x4000 или SAVEBIN "path/filename",0x4000,End-Start


Переменные живут в таком виде vars.asm


DISPLAY "Sys vars begins at:",$
SYS_CONFIG
START_UP_MODE DB 0
PREFFERED_BOOT_DEVICE DB 0
RAM_DISK_NAME DB 0
RAM_DISK_AUTOFORMAT DB 0
...bla-bla...
SYS_CONFIG_SIZE EQU SYS_CONFIG_END-SYS_CONFIG


подключаю:



BIOS_END_ADDR ;Variables
INCLUDE "inc\vars.asm"


о!
по виду походе на то что надо !
спасибо, буду пробовать !

drbars
20.08.2012, 12:57
Какой из SJASM умеет BASIC сохранить с автозапуском? Юзаю
SjASMPlus Z80 Cross-Assembler v1.07 RC7 (build 02-04-2008) — не фурычит.


SAVETRD "namr.trd","basic.B",23867,EndBasic-BeginBasic,1

:(

Shadow Maker
20.08.2012, 13:15
Никакой не умеет. зайди хекс-редактором поправь пару байт и всё. или доктором каким-нить.

Alex Rider
20.08.2012, 23:54
А еще есть http://zx.pk.ru/showthread.php?t=19326. Умеет больше многа.

drbars
21.08.2012, 11:02
На самом деле, я встречал посты, что SJASM вроде кто-то для себя фиксил и автостарт BASIC'а работал. Может это в пресловутом RC8 которого нигде нет?

Shadow Maker
21.08.2012, 11:37
Да тут каждый второй че-то там для себя фиксит. Надо чтоли Си изучить уже и скомпилить себе нормальный сжасм :)

---------- Post added at 11:37 ---------- Previous post was at 11:36 ----------


суйяли???:v2_conf2: не может?? а мужики то не знают... (с)
вот из старого.. Щаз че-нить низ послендего в тапочки закомпилю...
upd- ну и из последнего, в Border Creator-e, без проблем.Там в исходниках просто строчка закоменчена,
правда кто их когда смотрел, те исходники... Загрузчик конечно интересный, но рабочий же.
А где исходник?

Alex Rider
21.08.2012, 11:37
Может это в пресловутом RC8 которого нигде нет?
Ага. В нем. Только с поправкой: ... который не работает совсем.

Shadow Maker
21.08.2012, 12:40
Ага. В нем. Только с поправкой: ... который не работает совсем.
Это не я писал. Как ты так процитировал-то.

Кстати скомпилилось, правда со 100 варнингами. Надо посмотреть :)

Хм, и правда работает автостарт.

---------- Post added at 12:40 ---------- Previous post was at 11:44 ----------

Вот, держи: http://zx.logtech.ru/sjasmplus.exe

Вроде пока "не работает совсем" не заметил. Все мне сбилдило и записало.

И кстати да, zebest прав, есть же SAVETAP для записи на ленту.

psb
21.08.2012, 12:46
если бы была утилита, где можно было бы править хедеры на диске, всё решалось бы вообще без каких-либо проблем. а то найди специальный асм, сделай то, сделай сё... костыли какие-то...

Shadow Maker
21.08.2012, 12:53
При чем тут хедеры на диске. Автостарт не в хедерах же прописывается. Утилита - взять любой хекс-редактор и исправить.

psb
21.08.2012, 13:41
При чем тут хедеры на диске. Автостарт не в хедерах же прописывается.
можно было бы записать правильный кодовый блок (с автостартом), а потом пофиксить длину в хедере.

Shadow Maker
21.08.2012, 13:55
Ну любой диск эксплорер тебе в помощь. Far Manager, Total Commander с плагинами вроде это всё позволяют.

Alex Rider
21.08.2012, 14:02
Как ты так процитировал-то.
А вот непонятно как-то. Я уже пару раз замечал, что форум такие штуки выкидывает. Сегодня просто в спешке не заметил, что за ник он вставаил.

если бы была утилита, где можно было бы править хедеры на диске, всё решалось бы вообще без каких-либо проблем.
Да никак у меня руки не дойдут сделать что-то подобное моей tap-утилите для trd :( Чтобы все и сразу.

Shadow Maker
21.08.2012, 14:19
Потестируйте чтоли кто-нить этот RC8 билд, который я сбилдил. Что там не работает у кого?

psb
21.08.2012, 14:32
Ну любой диск эксплорер тебе в помощь. Far Manager, Total Commander с плагинами вроде это всё позволяют.
спасибо кэп! :) я-то про утилиту, которую в авто-сборке можно юзать. ручками и так 100500 вариантов есть.


Да никак у меня руки не дойдут сделать что-то подобное моей tap-утилите для trd Чтобы все и сразу.
еще для всё и сразу: склейку файлов посекторную:)

SoftLight
21.08.2012, 17:09
Потестируйте чтоли кто-нить этот RC8 билд, который я сбилдил. Что там не работает у кого?

вроде все нормально, но можно ли еще добавить поддержку BPLIST и SET BP ?

drbars
21.08.2012, 19:52
Потестируйте чтоли кто-нить этот RC8 билд, который я сбилдил. Что там не работает у кого?

Ну собвстенно автостарт в байсике при записи TRD образа также не работает.

VNN_KCS
21.08.2012, 21:55
Может быть смешно, но я до сих пор пользую ALASM. Нет желания изменить ему, но всё большее количество кодеров переходит на этот асм. Будьте добры, обьясните что и как. Как им пользоваться и как запустить из XP? какую версию этого асма скачать и откуда? Хотелось бы подробное описание пользователя.
Заранее благодарен. VNN

VNN_KCS
21.08.2012, 22:51
В дистрибутиве,
Скачал. При попытке запустить ехе-шник блымнуло и всё. Что делать?
Давай лучше в почту, чтоб флэйм не разводить. vnn.kcs(гав)yandex.ru

Shadow Maker
22.08.2012, 01:12
Ну собвстенно автостарт в байсике при записи TRD образа также не работает.
Как так, у меня работает, а у тебя нет? Давай сурс, будем разбираться.

---------- Post added at 00:26 ---------- Previous post was at 00:25 ----------


вроде все нормально, но можно ли еще добавить поддержку BPLIST и SET BP ?
Да наверное добавлю, линк не дашь на исходник? Че-то курлес вроде писал. А то я только патчи нашел, на RC7.

---------- Post added at 00:43 ---------- Previous post was at 00:26 ----------


вроде как и компилит.
синтаксис EDUP правда так же и косячит, не проверяеЦЦо на ошибки, но я то ужо привычный, знайу, как оно бывает:) Может то жи поправишь ?
Вот это не обещаю, я как бы си++ тока сегодня увидел :) Ну попробую после разбора с SETBP и BPLIST. Кинь линком, где ты пояснял проблему.

---------- Post added at 01:12 ---------- Previous post was at 00:43 ----------

Хотя не, выковырял из патча команды. Ссылка та же - http://zx.logtech.ru/sjasmplus.exe
Тестируйте. Пока сохраняет в старом виде, завтра переделаю под последний unreal.

Напоминаю - команды setbp X (или setbreakpoint X) и bplist "имяфайла". Первая ставит точку останова, вторая генерирует файл.

Shadow Maker
22.08.2012, 10:04
Выложил билд с поддержкой bpx.ini от последнего Unreal.
В синтаксис setbp добавлена возможность ставить на r w x (ну как в unreal в общем - на чтение, запись и вызов) - теперь оно setbp адрес,[r/w/x]. По умолчанию ставится на вызов, если не указывать.

Код частично утащен у thims'а :)

http://zx.logtech.ru/sjasmplus.exe

Shadow Maker
22.08.2012, 11:49
Там какой-то мегакод для этих едупов, похоже нет вложенной проверки едупов и вообще я там половину не понял :) Например также не работает вот такое:


dup 56
ldi

ld sp,56
add hl,sp
ld sp,hl
dup 28
dec l
ld d,(hl)
dec l
ld e,(hl)
push de
edup

то есть если пропущен едуп тоже ошибок не показывает. В общем постараюсь разобраться на следующей неделе. Надо книжки по си++ почитать :)

PS - Если есть какие-то еще билды sjasmplus, у которых можно утащить что-то полезное - говорите, не стесняйтесь, заберем, внедрим.

psb
22.08.2012, 12:03
я просто мимо проходил...

никто не желает написать статью в вики "быстрый старт с SjASM"? про батники, шаблон кода и т.п... чтобы взял, попробовал и сразу начал работать...

drbars
23.08.2012, 00:10
Как так, у меня работает, а у тебя нет? Давай сурс, будем разбираться.

Разобрался. EVO-DOS v0.3 почему-то командой LIST не показывает строку автозапуска.

jerri
23.08.2012, 10:50
Shadow Maker, там еще недоработки есть - теже вложенные ИФы

Shadow Maker
23.08.2012, 12:16
Там вообще беда, если какой-то из необходимых параметров отсутствует - например PHASE сделал, а он ждет еще и UNPHASE, при этом в свежей версии он крашится почему-то...

drbars
24.08.2012, 11:43
В TASM'е чтобы создать таблицу в коде с кратного 256 адреса писалось вот так:


FONTAD EQU $&#FF00+256
DEFS FONTAD-$

В SJASME'е придумал только так:


FONTAD EQU (($/256)+1)*256
ORG FONTAD

Ещё например в ALASM'е было удобное обращение к старшей ячейке адреса у метки:


LD H,'METKA
где H=#C0

ORG #C000
METKA DEFS #10


Есть какие-нибудь удобные способы в SJASM?

NovaStorm
24.08.2012, 12:05
ALIGN например.

esl
15.09.2012, 21:09
Нужна помощь зала !

можно ли внутри макро сформировать метку ?

такое не работает


macro AAAAA _label_
_label_ EQU $+1
ld hl,0
ld a,h
or l
call nz,xxxx
endm

AAAAA zz00
AAAAA zz01


говорит
error: Unrecognized instruction: zz00 EQU $+1

и еще вопрос
в m80 в свое время можно было сгенеирить имя метки из параметра макроса и строки
можно ли тут такое ?

что то типа (в деталях может и ошибаюсь но типа того)


macro AAAAA _suffix_
LABEL&_suffix_:
ld hl,0
ld a,h
or l
call nz,xxxx
endm

AAAAA zz00
AAAAA zz01


---------- Post added at 20:09 ---------- Previous post was at 19:40 ----------

вроде выкрутился, но как-то странно :(



macro AAAAA _label_
; ld hl,0
db 21h
_label_:
dw 0
ld a,h
or l
call nz,xxxx
endm

AAAAA zz00
AAAAA zz01

т.е. _label_ (то куда подставится имя) должна быть в начале строки
правда по LST понять что произошло совсем невозможно
в нем даже упоминания про определение новой метки нет.
вопрос а КАК ПРАВИЛЬНО

esl
17.09.2012, 01:29
...
Если в начале строки - метка, иначе - все остальное... в LST нет упоминания из-за того что компилятор не считает "LABEL&_suffix_:" меткой

в LST нет упоминания когда в начале строки
_label_:

и как-то оно мягко скажем не явно и не прозрачно.


а про "LABEL&_suffix_:" я спрашивал, можно ли ....

jerri
17.09.2012, 14:18
Keeper, это но то случаем что реализовано в Alasm?


macro macross
label:0
endm

macross l1
дает
Labеll1


macross l2
дает
Labell2


нужно бывает иногда
особенно видно в движке wolf48

jerri
17.09.2012, 15:05
Keeper, в доке к Аласм?
это новые фичи

jerri
17.09.2012, 15:55
Keeper, а он такого и не умеет
он много чего не умеет, но я например так и не понял почему

LABEL\0 не разворачивается в LABELхх
это идеологически вполне допустимо

---------- Post added at 15:55 ---------- Previous post was at 15:54 ----------

jerri, http://zx.pk.ru/showthread.php?t=17907 я уже поднимал тему
посмотри что понимает аласм и кстати по глюкам sjasm тоже есть :)

jerri
17.09.2012, 16:15
Keeper, не знаю :)
допиливание обычно имеет побочным эффектом забаговывание

esl
17.09.2012, 17:03
Keeper, не знаю :)
допиливание обычно имеет побочным эффектом забаговывание

дык тестами покрывать надо.

---------- Post added at 16:03 ---------- Previous post was at 16:01 ----------


Можно пример использования, может я неправильно понял зачем это нужно :)

ну например
macro _preffix_
ld (store&_preffix_),a
ld hl,(value&_preffix_)
jp label_&_preffix_
endm

jerri
17.09.2012, 17:43
esl, это детский лепет
вот это пример :)



;RAY 1,1,H,L,D,E,y,x
MACRO RAY
mainplus=\0 ;основное направление положительно
secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
;LD DE,(cur\7\6)
cur\0\1\7\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\0\1\7\6
INC \3 ;l/h
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
LD A,(DE)
RLA
JC raysec\0\1\7\6
DEC \3,\5 ;l/h,e/d
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ENDIF

raynsec\0\1\7\6
INC HX
IFN mainplus ;основное направление положительно
INC \2 ;h/l
ENDIF
LD A,(HL)
RLA
JP C,rayhlq ;b=texx
IFN mainplus ;основное направление положительно
INC \4 ;d/e
ELSE
DEC \2,\4 ;h/l,d/e
ENDIF
LD A,B
IFN secplus ;побочное направление положительно
ADD A,C
ELSE
SUB C
ENDIF
LD B,A
JNC raynsec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \5 ;e/d
ENDIF
LD A,(DE)
RLA
JC raysec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \3 ;l/h
ELSE ;побочное направление отрицательно
DEC \3,\5 ;l/h,e/d
ENDIF
JP raynsec\0\1\7\6

raysec\0\1\7\6
EXD
LD A,B
IFN secplus ;побочное направление положительно
SUB C
DIVPOS
ELSE
ADD A,C
DIVNEG
ENDIF
IFN mainplus ;основное направление положительно
CPL
LD B,A ;b=texx
ELSE
LD B,A ;b=texx
CPL
ENDIF
JP raydeq
ENDM

sjasm скукоживается сразу

psb
17.09.2012, 18:10
от такого я тоже скукоживаюсь... :)))

esl
17.09.2012, 18:37
esl, это детский лепет
вот это пример :)



то был пример, а ЭТО - черная магия ;)

jerri
17.09.2012, 20:35
esl, ну следуя логике
я должен получив строчку
"ray\0\1\7\6_YX=$+1"
сначала заменить все \х на данные макроса
и только потом парсить уже готовый набор данных
а не так как сделано сейчас

---------- Post added at 20:33 ---------- Previous post was at 20:32 ----------

esl, ну ты рар не смотрел
вот там реально чорная магия

---------- Post added at 20:35 ---------- Previous post was at 20:33 ----------

Keeper, а что за асм использует савелий?

esl
17.09.2012, 21:00
esl, ну следуя логике
я должен получив строчку
"ray\0\1\7\6_YX=$+1"
сначала заменить все \х на данные макроса
и только потом парсить уже готовый набор данных
а не так как сделано сейчас

как работает подстановка как раз то легко понять
а вот макроссссссс

jerri
17.09.2012, 21:12
esl, я тут наброски делал на PB и не увидел особых проблем с макросами :(

NovaStorm
17.09.2012, 21:36
Кошмарный пример, зачем я его на ночь глядел...
Неужели после сборки всех вариантов в один параметризированный макрос объём кода сократился и стал понятнее?
И кстати вот всплывает велосипедистость sjasm+, где в одну кучу кода навалены разные тулзы. А макры... ну m4 и прочие никто не отменял.

jerri
17.09.2012, 21:38
NovaStorm, если ты про методы товарища Алоне то это к нему обратись:)
но прелесть Аласма в том что он это понимает и интерпретирует нормально

NovaStorm
17.09.2012, 21:56
Я пожалуй не буду психикой рисковать, стараясь в этом разобраться, мне пока для кодогенерации и lua со встроенными макрами хватает, на сях генерить пробовал, но это уж слишком специфично, если уж совсем прижмёт, может m4 и буду осваивать.

jerri
17.09.2012, 23:47
Keeper, а можно пример текста для этого монстра?

jerri
18.09.2012, 00:34
красиво конечно но больно много писать обвязки

esl
18.09.2012, 00:52
кстате сразу из доки ;)



concat macro part1,part2
call part1_part2
endm

The call

concat module,function

will therefore result in

call module_function

jerri
18.09.2012, 00:57
esl, так то да
если бы не надо было писать килобайты обвязки

jerri
18.09.2012, 09:42
Keeper, об этом


copy /B /Y page0\services.rom+page1\dos6_12e_patch.rom+page2\ *.rom+page3\*.rom zxevo_pen.rom
copy /B /Y page3\*.rom+page1\dos6_12e_patch.rom+page2\*.rom+p age0\services.rom zxevo_atm.rom

..\tools\addcrc\addcrc zxevo_pen.rom
ren crc.bin crc_pen.bin
..\tools\addcrc\addcrc zxevo_atm.rom
ren crc.bin crc_atm.bin

..\tools\sjasmplus\sjasmplus --sym=sym.log --lst=dump.log -isrc build_update.a80
..\tools\addcrc\addcrc header.rom

copy /B /Y header.rom+crc.bin+zxevo_pen.rom+zxevo_atm.rom zxevo_rom.upd

del crc_pen.bin
del crc_atm.bin
del crc.bin
del header.rom
del zxevo_pen.rom
del zxevo_atm.rom



у него куча батников в каждой директории лежит
которые все это компилят и линкуют

psb
18.09.2012, 13:03
и я примерно так же делаю.

jerri
18.09.2012, 13:04
Keeper, у меня сейчас акелпад с прикрученым SJASM по f5 компилит и запускает снап мне хватает

jerri
18.09.2012, 14:25
Keeper, демки хорошо :) но мне ближе и интереснее игры а там немного другая специфика ну и собрать порезать на банки снап тоже не сильно сложно ;)

psb
18.09.2012, 15:15
порезать, потом запаковать, потом монолоадер приклеить... а демки на этапе разработки тоже как снапы смотрятся. хошь не хошь, а в итоге нагородишь автосборщик все равно.