См. директиву DEVICE в документации, а также примеры, которые идут в составе. Если в примерах ничего с DEVICE не будет - пишите, что-нибудь быстро составлю.
Вид для печати
См. директиву DEVICE в документации, а также примеры, которые идут в составе. Если в примерах ничего с DEVICE не будет - пишите, что-нибудь быстро составлю.
К сожалению ничего о DEVICE не нашел, ни в примерах ни в документе по sjasm.
Качнул более полную доку. Читаю о директиве DEVICE/
---------- Post added at 14:50 ---------- Previous post was at 14:12 ----------
Почитал.
Осталось не понятно как указать в коде адрес по которому следует размещать данные.
?
Вот мой пример:
В BC адрес записывается #8002, но самих данных по этому адресу нет, они находятся сразу за командой ret.PHP код:ORG #EA60
START LD BC,DATA
RET
ORG #8002
DATA DB #0F,#8F,#0E,#8B
Версия компилятора RC7.
Компилирую: sjasmplus.exe Symbol.asm
См.
Компилируем sjasmplus.exe Symbol.asm, открываем Symbol.sna в эмуляторе и смотрим в дебаггере, что все на своих местах. Также см. в документации и в примерах SAVEBIN, SAVETRD и т.д.PHP код:DEVICE ZXSPECTRUM128
ORG #EA60
START LD BC,DATA
RET
ORG #8002
DATA DB #0F,#8F,#0E,#8B
SAVESNA "Symbol.sna", START
Спасибо, так работает.
Aprisobal, по поводу sjasm&xcode ответа не ждать?
http://habreffect.ru/files/9ac/5de2d5e64/woow.jpg
вааааааааааааау :eek: правда шоле!? :sleep:
Очень интересно! продолжайте… :rolleyes:
http://pit.dirty.ru/dirty/1/2010/09/...bea8470a11.jpg
извиняюсь, конечно, что вмешиваюсь, но
breeze, или это толстый троллинг, или ты неправ.
как сделать чтобы при записи:
sjasm v1.07 RC7 (build 02-04-2008)Код:SAVETRD "test.trd","test.B",#5D3B,211
выгружал из памяти в trd'шник сектор (256 байт), а не 211 байт! но при этом в старт и длину basic файла записывалось число 211? нужно для правильного монолоадера, а не как в документации к sjasm'у в примерах worm255\monoloader.txt по aprisobal - без записи параметров автостарта. быть может кто-то знает как это сделать, например с помощью lua-скрипта?
в конечном итоге вообще не понимаю какой смысл в том, что при записи:
выгружается файл длиной не кратный сектору ведь на дискете один фиг окажется файл длиной кратной сектору, с дополнением нулями последнего сектора, тогда как в том же basic файле можно было не только указать параметры автостарта, но и например передать пару приветов не лазя в дисковый доктор.Код:SAVETRD "test.trd","test.B",#5D3B,211
видел, возможное, но далеко не идеальное решение от boo_boo. да, кстати в svn какая версия sjasm'а лежит? не удалось ее собрать - сборка (make) валится с ошибкой:
что не так делаю?Цитата:
Undefined symbols:
"SaveTAP_ZX(char*, unsigned short)", referenced from:
dirSAVETAP() in directives.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [all] Error 1
Aprisobal, ага собрался! это та самая сборка rc8? вроде бы даже билд от того же числа... сейчас переделаю слегка по собственному рецепту, потестирую работоспособность и отпишу.
вопрос про сохранение trdшников остается.
---------- Post added at 19:18 ---------- Previous post was at 19:10 ----------
Aprisobal, кстати в тех ли местах я исправлял error message? или можно было только в одном каком-то месте исправить или что-то еще не учел... давно жду ответа на этот вопрос, хотя сколько пользуюсь модифицированной версией sjasm'а - столько он себя нормально ведет.
---------- Post added at 19:29 ---------- Previous post was at 19:18 ----------
первые тесты показали, что модифицированный RC8 работает, ошибки разбираются, tap компилит, правда из 2х тестовых тапок нормально работает 1 (второй тапок несколько отличается от sna и trd версий), но здесь быть может сам что-то наглючил (перепроверю еще) - тестовый исходник был.
---------- Post added at 19:31 ---------- Previous post was at 19:29 ----------
Aprisobal, в svn'е может makefile поправишь? вдруг кому пригодится еще...
Ковыряюсь в кое-каких исходниках, вот пара вопросов:
LD B,metka[ - каков аналог этой записи в SJASM? в B должен оказаться старший байт адреса, на который указывает metka.
.2 - что означает такая запись на месте метки? каков аналог в SJASM?
LD B,metka / 256Цитата:
LD B,metka[
спецефично для Storm. Означает DUP 2Цитата:
.2
Спасибо, похоже, что high работает.
А что, нет стандартной функции побитного разворачивания/отражения числа?
Что-то в доках не нашел...
Я решил проблему с сегфолтом 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 неправильно у меня тем способом работала.
Собрал на github все публично доступные версии SJAsmPlus в репозиторий, добавил ChangeLog (из документации):
https://github.com/sjasmplus/sjasmplus
Виндовый экзешник, если кому надо: https://github.com/downloads/sjasmpl...06-mingw32.zip
http://i53.tinypic.com/2e33kfa.png
Отлично, а то у меня сил не хватало, чтобы собрать все воедино. Прибью тогда сайт на sf.net, чтобы не путал людей и сделаю переадресацию сюда в тему или на ваш репозиторий в github.
- Добавил в архив с exe необходимые dll и документацию
- Добавил aprisobal в collaborators на github (доступ на запись)
Для чего в Makefile
с этими флагами на FreeBSD не собирается:Код:LDFLAGS="-ldl"
Код: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.
Для сборки на Linux. Для Мака и *BSD эту строку нужно закомментировать.
перечитал тему, разобрался с грехом пополам со storm.
приятный в работе ассемблер, спасибо.
Сделал бы ктонить сборку SjASM + какойнить эмуль для отладки
Это лишнее
да вполне удобно отлаживать в анриле.
Использую билд еще с саурсфорджа. Качал билд с гитхуба, те же яйца.
Проблема - не компилируется, умирает с эксепшеном [4608].
Компилировать load.a80
Если задать другой адрес для файла меню, например #4000, откомпилируется, но в том файле будут левые данные.
Что это такое, как побороть?