lua в sjasm-e какаето упоратая или дремучая
в ней нет кучи нужных команд (которые нагугливаются)
того же goto
приходиться писать неимоверно упоратый код
а еще меня добивает что нельзя завершить цикл
вот так(это на фоне отсутствия goto)
for a=1,128,1 do
a=128
end
это какоето
так и должно быть в lua?
и вообще нету списка команд
приходиться как всегда методом научного тыка
+местами надо немного в видоизмененной форме в отличии от того что во всех мануалах
(а выход с сообщением об ошибке из зацикленного по кода можно сделать по тайм ауту(который должен отключаться при необходимости(тк вдруг захочется что нибудь считать\перебирвать на протяжении нескольких тысяч часов(например вот совсем недавно я делал brutal force для генерации таблиц))))
- - - Добавлено - - -
мы хотим собрать сами из исходников
для умственно отсталых можно написать что нужно скачать как ругаться где взять бубен чтоб все это сходу скомпилировать
в смысле для wind0wZ
- - - Добавлено - - -
В sjasm-е есть такая багофича с макросами
предположим обьявляем макрос
macro mk,xxx
defb 1 + high xxx, 2 + low xxx
endm
при
mk 16384
все будет правильно
$41, $02
но если написать
mk 16384 + $10
компилятор развернет это в
defb 1 + high 16384 + $10, 2 + low 16384 + $10
а там другой приоритет действий
сначала high а потом сложение
в итоге компилируется оно с ошибкой в виде
$51, $12
в место
$41, $12
нужно чтоб во время разворачивания макросов
параметр ставился в скобки
defb 1 + high (16384 + $10), 2 + low (16384 + $10)
тогда результат будет предсказуемым
желательно чтоб было опционально для совместимости со старыми исходниками(пусть по дефолту включено)
или тогда нужно в мануале указывать что может быть такая грабля
а еще я хочу опциональное отключение дебилизма в виде ld a,5,a,b,d,h,ret,fghfdg,ghsd
потому что я пишу привычное мне
cp a,(hl) одна команда
а мне ее компилирует в
cp a
cp (hl)
xor a
xor (hl)
так бы руки по отрывал бы и тем и тем
экономщики блджад
а потом ищешь чаво оно не работает
а еще в sjasm-e
нельзя макрос с переменным количеством параметров
что очень иногда мешает!!!!
я не знаю что добавлено в сборке Vitamin-а
и я ее никогда не использовал
есть где то полный перечень её изменений?
а еще хотелось бы расширение набора команд
и разных видов их написания
+заимтвования их у других компиляторов
например emuzwin с которого всем нужно переходить на что то другое
вот еще полезная команда для сборки всяких snaКод:DEFG ........ .X...... DEFG .XXXXX.. .X...... DEFG ......X. .XXXXX.. DEFG ..XXXXX. .X....X. DEFG .X....X. .X....X. DEFG ..XXXX.X .XXXXX.. DEFG ........ ........ (компилируется в 0,40h,7Ch,40h, и т.д.) или: DEFG ........ .X...... .XXXXX.. .X...... ......X. .XXXXX.. ..XXXXX. .X....X. .X....X. .X....X. ..XXXX.X .XXXXX.. ........ ........ (в этом случае порядок другой: 0,7Ch,2,3Eh,42h,3Dh,0,40h, т.е. байты размещаются по колонкам). DEFD xxxxxx [[,] xxxxxx ]... Директива для определения упакованных шестнадцатеричных. Например, DEFD 1234567890 эквивалентно DEFB 12h,34h,56h,78h,90h. Если элемент стартует не с шестнадцатеричной цифры, то он считается обычным выражением (и занимает 1 байт, как в директиве DEFB). ERROR [#severity],'text'[,#passes] или ERROR [#severity],"text"[,#passes] Генерирует ошибку, заданную пользователем. Может использоваться, например, в макроопределениях для проверки допустимости параметров. severity: 0 - warning (предупрежедение: текст попадает в список сообщений, но компиляция продолжается); 1 - обычный error (код более не генерируется, но компиляция может еще некоторое время продолжаться); 2 или выше - fatal error, компиляция останавливается немедленно. Если #passes не задано, сообщение показывается на всех проходах компиляции. Если оно задано, то значение выражения используется как двоичная маска: бит 0 устанавливается, чтобы сообщение показывалось на проходе 1, бит 1 - на проходе 2, и бит 2 - на проходе 3. Т.е. например, если passes = 2, то сообщение будет отображаться только на первом проходе компиляции, а если pass = 6 - то на втором и третьем (при его наличии) проходах. label[:] PROC ... [label2[:]] {ENDP|ENDPROC|EPROC} Задает процедуру. Фактически, всего лишь ограничивает видимость локальных меток, заданных между PROC и ENDPROC. Процедуры могут быть вложены друг в друга, и уровень допустимой вложенности ничем не ограничен. FOR var=values ... {EFOR|ENDFOR} Дублирует все операторы между заголовком до финального ENDFOR столько раз, сколько всевозможных значений перечислено в списке для переменной цикла var, на каждом шаге присваивая этой переменной очередное значение из списка, как если бы имя var определялось директивой DEFINE. Список значений может содержать любые выражения, строки, заключенные в одинарные и двойные кавычки (во втором случае значение подставляется без кавычек), а так же среди прочего перечень значений в виде #from TO #to [STEP #step]. В последнем случае сначала переменной присваивается значение выражения #from, и оно на каждом проходе увеличивает свое значение на #step (по умолчанию - на 1), пока не превзойдет (при отрицательном #step - пока станет меньше) значения выражения #to. GOTO [cond,][label] Эквивалент инструкции JR/JP, но по возможности компилятор использует короткие переходы (JR). Важное ограничение: любое выражение не может использоваться в качестве операнда, а только метка, локальная или глобальная.
там их еще многоКод:ENTRYPOINT #expr Задает точку входа в программу (устанавливает PC в указанное значение в случае успешной компиляции).
в оригинальном мануале
а еще нужно все варианты написаний уже имеющихся команд
я спотыкался об то что не было какого то завершения команд привычного мне из emuzwin
какойто возможно eif endif emacro endmacro
а еще иногда когда пишешь код зависимый от времянок
или еще что то
хочется написать два(и более) ветвления\варианта в столбик рядом
и чтоб это потом скомпилировалось линейно
x - какой нибудь символ разделительКод:какая нибудь команда + параметр количество столбиков l5 x l6 ld a,b x xor b rra x inc a nop x jp l2 x jp l3 end какая нибудь команда
вот бы как то это организоватьКод:l5 ld a,b rra nop jp l2 l6 xor b inc a jp l3
и еще по возможности в каждом столбике должна быть возможность писать комментарии\расстановку
пусть даже это будет при помощи другого указателя начало комента не ";"
если так будет проще сделать
хотелось бы авто замену
делаю
replace "ld a,a", "defb $AA"
должно учитывать пробелы!!!
(или может при помощи дополнительных параметров должно пропускать любое их количество между и считать табы за пробелы. для случаев если написано ld_____a,__a)
и еще до компиляции
все ld a,a
подменяются на defb $AA
в sjasm-e по моему что то такое есть
но оно не дает нужного функционала (по моему оно не понимает пробел.
...и все! его уже нельзя использовать...)
нужно чтоб набрал
replace "d", "1"
а оно тебе заменило
ld a,a
на
l1 a,a
и выдало ошибку
оно поможет даже если будет возможность использовать ее только в начале исходника
еще не хватает возможности писать шестнадцатеричные цифры
вот так 1234h
как это работает в emuzwin
а потом при адаптации исходника...
по моему sjasm не понимает какой то вариант написания defb defw
db dw чтоле
периодически приходиться в блокноте жать заменить все
и ждать пока оно начухается (все же в курсе как он тормозит на 500К текстах))))
а чтото другое для замены запускать влом...
еще бы хотелось поддержку мнемоник i8080
чтоб не переправлять код с i8080
а просто вставлять готовое
можно в виде
i8080mode
mov a,a
endi8080mode
просить поддержки других процов наверное уже сильно жирно...
но если расширить возможности макросов и впилить автозамену
то на них можно будет дописать поддержку нужных команд
(скоро зарелижу свой компилятор какой то фигни написаный на макросах sjasm-a)))))
не помешало бы сохранение\экспорт в разные другие форматы для разных машин с i8080 z80
всяких zx80-ов, CPC-ов, РК-шек и тс-конф
чтоб не писать свой генератор контрольных сум
а просто указать адреса и все...
или нужно укомплектовать мануалы компилятора готовыми кусками кода
- - - Добавлено - - -
Кстате да!!!
помогла бы проверка на наличие опечаток и недописок (по словарю?)
и выдавание их в виде списка
zebest а как незакрытый dup может не давать ошибку????
не помешал бы вариант написания
if **** then
тк в некоторых компиляторах он используется
с таким же успехом в этом же исходнике он применяется в lua
и вполне его можно случайно написать в место
if ****
наверное нужно повысить совместимость с аль асмом (ALASM)
чтоб компилировать его код без большого количества переделок
чтоб переманить аль асмовцев в sjasm
и чтоб они делали более лучший софт используя ПЦ а не трахались в эмуляторе...
если есть какието разные трактования
можно режим совместимости при необходимости
alonecodersourcemode
всякий alasm код
endalonecodersourcemode
да и улучшеное понимание других старых компиляторов не помешало бы
а то куча софта написано на неизвестно чем
http://opensourcezx.untergrund.net/
и доки к этому неизвестно чему
тоже неизвестно где..





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
