Вход

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



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

jerri
15.04.2016, 14:56
Sayman, если хочешь использовать через линкеры и прочее то SJasm тебе не бро.
используй нативный компилер - он под это заточен.

Sayman
15.04.2016, 15:34
Через какие линкеры? Мне бинар от ужасма нужен. Хотя, я выкинул эти таблички в отдельный файл с savebin. Так, что пофиг.

krt17
15.04.2016, 16:06
бред в общем.
Он делает именно то что ты от него хочешь, у сжасма конечно есть проблемы но точно не здесь. Требовать чтоб при компиляции в файл компилятор вернулся назад и переписал уже откомпиленый кусок вот это да тупость.

Sayman
15.04.2016, 17:21
Требовать чтоб при компиляции в файл компилятор вернулся назад и переписал уже откомпиленый кусок вот это да тупость.
Отнюдь! Это умеет делать любой уважающий себя компилятор. даже древний m80. Если уж он умеет, почему ужасм не может? более того, он это делает, но только результат видеть можно если сделать savebin, а не raw. это и есть тупость, т.к. бинарь получается всё ровно. Только в одном случае принудительно сохранять нужно, а в другом это баг.

jerri
15.04.2016, 17:25
Sayman, какой из компиляторов умеет работать с памятью? практически со снапшотом.
кроме аласма кстати.

krt17
23.04.2016, 03:32
Как это исправить? может я что-то не так делаю?
Нашел случайно что по этому поводу предлагает sjasm.
FPOS <position> The FPOS directive makes it possible to set the file position to anywhere in the output file.
Нестандартно, но как вариант, возможно пригодится.

Bedazzle
20.05.2016, 23:58
Подскажите удобный способ писать 16ричные значения

скажем, в коде есть LD BC, #0102, но хочется константы вынести,
и тогда определяю
VAR1 EQU #01
VAR2 EQU #02

LD BC, VAR1 * #100 + VAR2

ужаааасно :(
поэстетичней можно?

krt17
21.05.2016, 00:22
поэстетичней можно?


define aw *#100+
ld bc,var1 aw var2

Bedazzle
21.05.2016, 01:03
define aw *#100+
ld bc,var1 aw var2


Я думал может что встроенное есть, в доках не нарыл.
Спасибо, буду так - всяко удобнее, чем мой вариант. :)

Sayman
21.05.2016, 09:51
Подскажите удобный способ писать 16ричные значения

скажем, в коде есть LD BC, #0102, но хочется константы вынести,
и тогда определяю
VAR1 EQU #01
VAR2 EQU #02

LD BC, VAR1 * #100 + VAR2

ужаааасно :(
поэстетичней можно?
что за извращения такие?


IDE0 = 0xc1c0
...
ld iy,IDE0
...
ld a,(iy+DTYPE_H)
и т.д.

Alex Rider
21.05.2016, 16:14
что за извращения такие?
А что конкретно тебе тут не нравится, кроме того, что метки IDE0 написаны в разных регистрах? Или ты предлагаешь заменить засылку двух констант в регистровую пару на работу с индексным регистром?

Sayman
21.05.2016, 18:22
Alex Rider, мне показалось, что там был вопрос о том, как записать 16 бит число константой. ну так, ужасм это умеет. умеют, как я помню, все компиляторы. индексный регистр просто как живой пример (из рабочего кода). Если речь была не о том, то пардонте.
регистр метки исправил, не заметил...

Bedazzle
21.05.2016, 22:07
Alex Rider, мне показалось, что там был вопрос о том, как записать 16 бит число константой.

Имеется набор восьмибитных констант, и они загоняются в 16 бит регистры в различных комбинациях.
Вопрос о том, как 16 бит число записать, чтобы легко читалось.

Vitamin
21.05.2016, 22:49
Записывай сразу 16-битные значения, а там, где нужны половинки, используй high и low.

Bedazzle
22.05.2016, 09:52
Записывай сразу 16-битные значения, а там, где нужны половинки, используй high и low.

VAR1 EQU #0100
VAR2 EQU #0002

LD BC, VAR1 + VAR2

а где нужны восьмибитки, брать

LD H, high VAR1

типа так?

SAM style
22.05.2016, 10:13
VAR1 EQU #0100
VAR2 EQU #0002

LD BC, VAR1 + VAR2

а где нужны восьмибитки, брать

LD H, high VAR1

типа так?

var equ #0102
...
ld bc, var ; = #0102
ld h, high var ; = #01
ld l, low var ; = #02

denpopov
22.05.2016, 13:58
:v2_dizzy_facepalm:

Bedazzle
22.05.2016, 19:38
var equ #0102


от этого 0102 и хочу избавиться :)
у меня для B двенадцать разных констант, и для C двенадцать.
И в коде могут в различных комбинациях встречаться. :)

То, что уже посоветовали ранее с дефайном пока лучше всего смотрится.

Destr
23.05.2016, 13:23
А не собираются авторы DISPLAY расскрасить?
Не знаю кому как, а мне бы очень хотелось.
Думается что я не один выделял-бы цветом нужные мне выводы.

Bedazzle
23.05.2016, 14:09
А не собираются авторы DISPLAY расскрасить?
Не знаю кому как, а мне бы очень хотелось.
Думается что я не один выделял-бы цветом нужные мне выводы.

А в чём пишешь и собираешь? Notepad++ с плагином умеет всякое, подробности тут (http://zx-pk.ru/threads/4175-sjasm-multiedit-%28krasota-i-udobstvo%29.html?p=865505&viewfull=1#post865505).

Sayman
23.05.2016, 14:43
Bedazzle, DISPLAY, это деректива ужасма. Используется для вывода отладочной информации в консоль при сборке кода.

Destr
23.05.2016, 19:00
А в чём пишешь и собираешь? Notepad++ с плагином умеет всякое, подробности тут.
AlkePAD юзаю, но он тут ни при чём.

Bedazzle, DISPLAY, это деректива ужасма. Используется для вывода отладочной информации в консоль при сборке кода.
Да, я именно об этом.
Затеял было написать агента который бы висел в фоновом режиме и отслеживая консоль расскрашивал, но блин это крайний вариант, подумал может лучше попросить чтоб сделали (там делов-то ввести ключ, ну например /C2 и вот текущий INK стал красным.)

Bedazzle
23.05.2016, 22:29
Bedazzle, DISPLAY, это деректива ужасма. Используется для вывода отладочной информации в консоль при сборке кода.

Так в статье и рассказывается, как консольный вывод от ужасма раскрасить в n++.

http://i.imgur.com/n9kBhOo.jpg

Sayman
24.05.2016, 06:48
Я пользуюсь SynWrite 2. А сборку делаю в консоле батником (мне так удобнее). думаю, многие так желают и было бы хорошо красить вывод DISPLAY именно в консоле.

Destr
24.05.2016, 15:17
думаю, многие так желают и было бы хорошо красить вывод DISPLAY именно в консоле.
Поддерживаю!
Кому там надо маякнуть чтоб сделали?

denpopov
24.05.2016, 16:33
Кому там надо маякнуть чтоб сделали?
Витамину, если не пошлет.

Vitamin
24.05.2016, 18:12
Конечно пошлет.

Подсветка вывода- вещь хорошая, но предлагаемое решение (вхерачить эту подсветку в компилятор) - неправильное.

Нормально это делается через фильтрацию вывода. Например:



import os
import sys
import ctypes

# See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_api_reference.asp
# for information on Windows APIs.
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE= -11
STD_ERROR_HANDLE = -12

FOREGROUND_BLUE = 0x01 # text color contains blue.
FOREGROUND_GREEN= 0x02 # text color contains green.
FOREGROUND_RED = 0x04 # text color contains red.
FOREGROUND_INTENSITY = 0x08 # text color is intensified.
BACKGROUND_BLUE = 0x10 # background color contains blue.
BACKGROUND_GREEN= 0x20 # background color contains green.
BACKGROUND_RED = 0x40 # background color contains red.
BACKGROUND_INTENSITY = 0x80 # background color is intensified.

std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HAN DLE)

def set_color(color, handle=std_out_handle):
return ctypes.windll.kernel32.SetConsoleTextAttribute(han dle, color)

for line in sys.stdin:
if line.startswith('>'):
set_color(FOREGROUND_GREEN)
elif line.find('): error:') != -1:
set_color(FOREGROUND_RED)
elif line.find('): warning:') != -1:
set_color(FOREGROUND_GREEN | FOREGROUND_RED)
print(line, end='')
set_color(7)


И весь выхлоп компилятора пропускать через этот скрипт (работает исключительно на винде, на линуксах все гораздо проще). Питон для винды, думаю, сами найдете.

Destr
25.05.2016, 06:29
Питон для винды, думаю, сами найдете.
В смысле чтоб это заработало нужно что-то ещё на винду ставить?

Vitamin
25.05.2016, 09:06
Можно не ставить, а распаковать архив в любое удобное место. Сам sjasm тебе же тоже приходится куда-то класть.

Destr
25.05.2016, 16:52
Можно не ставить, а распаковать архив в любое удобное место. Сам sjasm тебе же тоже приходится куда-то класть.
Ну раз в sjasm встроить не хочешь (почему неправильно???), то хоть пошагово опиши что и как делать с твоим текстом...

Vitamin
25.05.2016, 19:13
Ну раз в sjasm встроить не хочешь (почему неправильно???)
Потому что
1) нужен совершенно разный код под разные платформы
2) эта раскраска нафиг не нужна (и может даже мешать) при работе из всяких IDE/редакторов, перехватывающих вывод
3) тебе конечно же не понравятся дефолтные цвета раскрашивания и захочется их настроить

Разумеется, все эти проблемы решаемые. Только здравый смысл подсказывает, что не надо так делать.

Ах да, забыл:
4) все равно это делать никто не будет


пошагово опиши что и как делать с твоим текстом...
Сохраняешь в файлик colorize.py и кладешь рядом с бинарником sjasm (для простоты). В своем батнике пишешь:


sjasm.exe <parameters> | path/to/python.exe colorize.py

Destr
25.05.2016, 21:17
Пишет такое:

D:\Speccy\Asm>sjasmplus.exe --nologo test.asm | python.exe colorize.py
File "colorize.py", line 32
print(line, end='')
^
SyntaxError: invalid syntax

- - - Добавлено - - -

Если убрать ", end=''", то рисует END зелёным цветом...
А как в тексте проги-то цвета переключать?

Bedazzle
25.05.2016, 23:21
Пишет такое:

D:\Speccy\Asm>sjasmplus.exe --nologo test.asm | python.exe colorize.py
File "colorize.py", line 32
print(line, end='')
^
SyntaxError: invalid syntax


замени
print(line, end='')

на
print line,

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

- - - Добавлено - - -


А как в тексте проги-то цвета переключать?

bit 0 - foreground blue
bit 1 - foreground green
bit 2 - foreground red
bit 3 - foreground intensity

bit 4 - background blue
bit 5 - background green
bit 6 - background red
bit 7 - background intensity

Destr
26.05.2016, 06:21
bit 0 - foreground blue
bit 1 - foreground green
bit 2 - foreground red
bit 3 - foreground intensity

bit 4 - background blue
bit 5 - background green
bit 6 - background red
bit 7 - background intensity
Я имел в виду DISPLAY.

Вроде разобрался - нету такого.
Придётся видимо самому извратится (откуда этот питон взялся? почему не юзают те языки что уже все знают, бейсик тот-же?)...

Sayman
26.05.2016, 07:02
1) нужен совершенно разный код под разные платформы
речь пока идёт про винду. про все все все платформы речи нет.

2) эта раскраска нафиг не нужна (и может даже мешать) при работе из всяких IDE/редакторов, перехватывающих вывод
решается добавлением ключика к ужасму который включает цветной вывод. кому он не нужен, тот ключик не использует. все счастливы.

3) тебе конечно же не понравятся дефолтные цвета раскрашивания и захочется их настроить
речь идёт про вывод только того, что выводит деректива DISPLAY и только она. Достаточно сделать вывод зелёным (светло-зелёным) или жёлтым цветом. думаю, такое всех устроит. Красный цвет не хотелось бы, т.к. красный явно для обозначения ошибок, но DISPLAY не для ошибок, а для отладочной инфы.

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

Destr
26.05.2016, 08:06
Короче получилось на питоне:
Код


import os
import sys
import ctypes

STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE= -11
STD_ERROR_HANDLE = -12

std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HAN DLE)

def set_color(color, handle=std_out_handle):
return ctypes.windll.kernel32.SetConsoleTextAttribute(han dle, color)

def col(line, i):
color = line[i+1] + line[i+2]
line = line.replace('~' + color,'')
c = int(color,16)
set_color(c)
if len(line) > 0:
print(line),

set_color(7)

for line in sys.stdin:
i = 0
if line.startswith('>'):
i = line.find('~')
if i>0:
col(line,i)
elif len(line) > 0:
print(line),

set_color(7)



В команде DISPLAY добавляем тильду и атрибут (в HEX-виде)
Например: DISPLAY "~E4abc" выведет "abc" красными буквами на ярко-желтом фоне.

Недостаток - python всё-равно надо инсталлить (т.е. после перестановки винды скрипт не заработает просто от наличия python.exe)
Так что раз старшие товарищи не хотят нам помочь, то придётся пока юзать так, а потом надеюсь сумею расковырять sjasm и воткнуть ключи в DISPLAY.

Bedazzle
26.05.2016, 08:35
Недостаток - python всё-равно надо инсталлить

Не обязательно его инсталлировать.
Достаточно перенести экзешник и несколько библиотек (количество разнится в зависимости от того, что используется в скрипте).

- - - Добавлено - - -


просто "питон" это очередной костыль, который спектрумисты так сильно любят...

Не нравится один инструмент - используешь другой.
Под разные задачи - всегда находится что-то более или менее удобное, в чём проблема-то?
Серебряной пули не будет никогда.

Destr
26.05.2016, 08:39
Достаточно перенести экзешник и несколько библиотек (количество разнится в зависимости от того, что используется в скрипте).
Не знаю кто как, а я запихал в папку D:\Speccy весь инструментарий (Эмуль, графредактор, музредактор, асм) и если винды переставить - всё работает по-прежнему (без всяких переносов и инсталляций).
С питоном этот фокус не прошел.


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

Vitamin
26.05.2016, 08:40
речь пока идёт про винду. про все все все платформы речи нет.
Вот как раз из-за винды, в силу убогости ее консоли, и куча проблем. В нормальных системах все решается ansi-последовательностями, поддержку которых в display сделать несложно.


все счастливы.
Кроме следующего желающего поковыряться в sjasm.


Достаточно сделать вывод зелёным (светло-зелёным) или жёлтым цветом. думаю, такое всех устроит.
Да вот как раз Destr хотел бы настраивать цвет вывода. Так что не всех и не устроит.


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


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

denpopov
26.05.2016, 09:03
Много назовешь компиляторов, которые такой хренью страдают?

xasm для Atari и 6502.

Sayman
26.05.2016, 09:54
Вот как раз из-за винды, в силу убогости ее консоли, и куча проблем.
ОПА? убогость консоли? т.е. на си надо написать 100500 строк чтобы сделать цветной вывод в виндовой консоле?
ВНЕЗАПНО:


#include <iostream>
#include <cstdlib>

int main()
{
system("color FC");
std::cout<<"Matrix has you\n";
return 0;
}

Первое - цвет фона.
Второе - цвета шрифта.
От 00 до FF
ЧЯДНТ?

Да вот как раз Destr хотел бы настраивать цвет вывода. Так что не всех и не устроит.
начнём с того, что цвета сейчас нет совсем никакого.

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

Посмотришь на sjasm - сплошное сборище костылей потому что "так было удобнее".
ООоо? Костыли типа чего? хотя да, есть там один - деректива device, сильно бесит.

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

Bedazzle
26.05.2016, 10:45
ужасм был бы первый, что плохо то?

Плохо видимо то, что никто больше обновлять ужасм не будет вообще. :)

Sayman
26.05.2016, 10:59
Bedazzle, т.е. вы считаете, что добавление 5 или 10 строк (грубо говоря) в код ужасма, это его типа сразу убивает? и тогда после этого его никто не будет обновлять? или вы имеете в виду то, что его и без этого никто уже не желает обновлять?
с другой стороны, есть ещё какие то вминяемые компиляторы под z80? которые умеют и снапшоты выдавать и не только, имеют местами довольно удобные дерективы, типа align, display и другие?

Bedazzle
26.05.2016, 11:19
его и без этого никто уже не желает обновлять?

Как-то так.
Если правильно понимаю, стабильная версия уже шестилетней давности.


с другой стороны, есть ещё какие то вминяемые компиляторы под z80?

Буржуи используют pasmo, но он тоже старенький.


которые умеют и снапшоты выдавать

А зачем именно снапшот?
В принципе, 27 (или сколько там для SNA) байт заголовка можно пришить утилиткой снаружи.

krt17
26.05.2016, 11:33
Bedazzle, т.е. вы считаете, что добавление 5 или 10 строк (грубо говоря) в код ужасма, это его типа сразу убивает? и тогда после этого его никто не будет обновлять? или вы имеете в виду то, что его и без этого никто уже не желает обновлять?
с другой стороны, есть ещё какие то вминяемые компиляторы под z80? которые умеют и снапшоты выдавать и не только, имеют местами довольно удобные дерективы, типа align, display и другие?

Непонятно раз вы в курсе и все умеете, что сами то не добавите, вроде исходники никто не прячет.
Сначала крики о убогости device а затем восторги о создании спапов. Вы уж определитесь. Я так понимаю что проблема была в непонимании как работает raw вывод, так это проблема не сжасма и как выяснилось и не проблема вообще, а желание не почитать доку а просто пожаловаться.
Про цвета по мне не нужная хрень, на то он и отладочный вывод что бы быть максимально понятным из текста, через пару месяцев все равно не вспомнить что это за цвета и что они означают в данном случае.

Destr
26.05.2016, 11:43
Про цвета по мне не нужная хрень, на то он и отладочный вывод что бы быть максимально понятным из текста,
Я вот сейчас кота пишу.
Отладочных выводов - около десятка строк.
Выделил цветами (на питоне) - сразу стало легче жить - глаз сразу выхватывает то что поярче (строки которые нужно смотреть часто).
Те что нужны пореже - сделал простым цветом (7).
Удобней. (до расскраски приходилось ЧИТАТЬ что в тех строках в заголовке, теперь сразу взгляд падает на цифры уже зная что это - важное).

denpopov
26.05.2016, 11:52
ЧЯДНТ?
не делаешь ужасм.

Sayman
26.05.2016, 12:01
Сначала крики о убогости device а затем восторги о создании спапов
я снапшоты не создаю когда делаю какую то сборку чего-либо. device был добавлен как раз потому, что автор не смог иначе это прикрутить. моя проблема как раз и была из-за этого, что ужасм без этого device не только снапшот не умеет выгружать, но и raw по нормальному не может обработать. Хотя более древние компиляторы это прекрасно делают. Проблема в том. что у ужасма есть другие интересные вещи, которых нет в других компиляторах. Только из-за этого им и пользуюсь. Как только ужасм научится нормально бинарники пилить, тогда и device не сильно нужен будет.

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

Vitamin
26.05.2016, 12:12
xasm для Atari и 6502.
На каких еще платформах он есть? Развивается?


ЧЯДНТ?
Вызов внешнего процесса два раза на строчку (установить цвет и сбросить) - этопять. Пешы исчо!

В нормальных системах это делается вот так:



#include <iostream>

int main()
{
std::cout << "\x1b[31m" << "Matrix has you" << "\x1b[39;49m" << std::endl;
}




мы разве говорим про количество? нет. есть или нет такой "хрени" у других. ну нет и нет, ужасм был бы первый, что плохо то?
Ну давай еще отсылку результатов сборки на почту вставь. Нуачо, ни у кого нет, удобно.

Bedazzle
26.05.2016, 13:00
Ну давай еще отсылку результатов сборки на почту вставь. Нуачо, ни у кого нет, удобно.

На почту - прошлый век. Надо сразу в мессенджер, и на тилипоне смотреть. %)

Sayman
26.05.2016, 13:16
Вызов внешнего процесса два раза на строчку (установить цвет и сбросить) - этопять. Пешы исчо!
В нормальных системах это делается вот так:

Vitamin, хорошему танцору всегда что-то мешает. Не нужно тут заливать про то, что под линукосм то или сё. я тебе могу несколько страниц накидать того, чего не может или криво может линукс. чё дальше-то?
я тебе привёл простой пример того, что это можно сделать. хочешь, ещё накидаю примеров, раз сам не можешь?

Ну давай еще отсылку результатов сборки на почту вставь. Нуачо, ни у кого нет, удобно
если будет в этом потребность, то и это можно вкарячить. хотя именно это можно решить путём редиректа вывода в текст который потом и улетит на почту, чО не так?!

Bedazzle
26.05.2016, 13:31
А где-нибудь список багов и пожелалок к ужасму вообще есть?

Vitamin
26.05.2016, 15:05
Vitamin, хорошему танцору всегда что-то мешает.
Отлично сказал! Тебе что мешает использовать внешний раскрасчик, напомни?


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


хотя именно это можно решить путём редиректа вывода в текст который потом и улетит на почту, чО не так?!
Ну и чем раскраска (побочная функция) отличается от отсылки почты (побочная функция) с точки зрения компиляции (основная функция)?

Я тебе дал гибкий и работающий способ решить твою проблему здесь и сейчас без необходимости менять что-то. Тебе это нужно было или потрендеть?

Destr
26.05.2016, 16:36
Я тебе дал гибкий и работающий способ
Плохой способ, питона ставить надо.
Как по-правильному исходники искать?
Надо SjASMPlus v1.07 RC7 (build 02-04-2008)

Vitamin
26.05.2016, 16:43
Плохой способ, питона ставить надо.
Ну напиши на бейсике. Его все знают, ставить не надо.


Как по-правильному исходники искать?
Я взял репозиторий и склонировал. Насколько там кошерная версия- хз.
https://github.com/vitamin-caig/sjasmplus

denpopov
26.05.2016, 17:06
На каких еще платформах он есть? Развивается?
нинай. я юзал под венду, ошибки выделяются красным цветом.

Bedazzle
26.05.2016, 17:47
Плохой способ, питона ставить надо.

Да не надо питона ставить, достаточно копирования нужных файлов.

Destr
26.05.2016, 19:51
Да не надо питона ставить, достаточно копирования нужных файлов.
python.exe - в каталог sjasm
А остальное что и куда?

Vitamin
26.05.2016, 20:13
http://www.orbitals.com/programs/pyexe.html

Destr
26.05.2016, 21:05
http://www.orbitals.com/programs/pyexe.html
Во! Другое дело!
Так бы сразу - лишних страниц бы не было в ветке.
Всё работает, спасибо.

Ewgeny7
08.06.2016, 11:18
Может дурацкий вопрос, может уже и звучал в ветке.
Пользуюсь этим асмом в связке с Crymson Editor.
Все прекрасно, удобно.
Но приспичило покарябать и в асме для i8080/8085. А карябать мноооого предстоит.
Можно конечно пользоваться нативными командами ассемблера зетника, типа LD. Но хочется православного MOV.
Это никак не сделать? Типа, внешний файл подключить, али ешо чого?

Vitamin
08.06.2016, 12:31
define MOV LD

? :)

Ewgeny7
08.06.2016, 13:57
?
о_О
Сурово.... :)
А понативнее способа нету?

Vitamin
08.06.2016, 15:54
А понативнее способа нету?
Только править код.

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

Ewgeny7
08.06.2016, 16:04
Я в них не знаток, и даже не ценитель :)
Но TASM разве не заточен работать под разные процессоры?
К нему прилагается tasm80.tab, в котором перечислены команды и способы их употребления.
Мне так кажется, что родственные архитектуры было бы неплохо переключать обычной директивой.
Кстати, на Орионовском TASMе так и сделано, .Z80 и .8080.
Вот только тот самый тасм на ПЦ не запустишь, он на Орион рассчитан.

Vitamin
08.06.2016, 17:11
Ну раз все-равно какая-то кастомизация требуется, в чем проблема подключить файл с вышеупомянутым дефайном (если он работает)?

Bedazzle
10.06.2016, 11:27
А можно как-то централизованно выгрести все JP, которые можно безболезненно заменить на JR?
Можно конечно каждый переход заменить на вызов макроса с проверкой и дисплеем, но это как-то страшненько.

Ewgeny7
10.06.2016, 11:49
Поиск и замена рулят... Так и переправлял.

Vitamin
10.06.2016, 13:46
А можно как-то централизованно выгрести все JP, которые можно безболезненно заменить на JR?
А как эта задача относится к компилятору ассемблера?

krt17
10.06.2016, 14:09
Кривовастенько но думать дальше не охота


device zxspectrum48
z equ 1
nz equ 2
m equ 3
p equ 4
macro jpp cond,dest
if cond=m or cond=p
display "condition jp"
jp cond,dest
else
if $+128-dest<#100 then
display "jr ",$+128-dest
jr cond,dest
else
display "range jp"
jp cond,dest
endif
endif
endm
org #8000
jpp z,#8010
jpp z,#8100
jpp m,#8100
jp z,#8200
ret

denpopov
10.06.2016, 16:17
6809 в помощь)

Bedazzle
10.06.2016, 16:53
А как эта задача относится к компилятору ассемблера?

Не обязательно ассемблер :) может какой волшебный луа скрипт, или ещё что :)

Один раз конечно можно пройти и всё заменить, но ведь в процессе модификаций могут опять появиться места, которые можно оптимизировать.

Хотелось бы иметь возможность периодически/постоянно это дело чекать.

- - - Добавлено - - -


Кривовастенько но думать дальше не охота

Да, что-то такое и напридумывалось.

Если кто будет макро использовать, там чутка пофиксить надо:
https://i.imgur.com/qj1Ut5X.png

krt17
10.06.2016, 18:11
Если кто будет макро использовать, там чутка пофиксить надо:
Да с безусловными проблема конечно, перезрузки макросов нет в принципе, а условия я думал сами добавите их у меня явно мало. Разбор параметров макросов в сжасме конечно убогий, я как то поднимал этот вопрос сделать как в tasm rst7, но на меня посмотрели как на идиота и пропустили мимо ушей. Как через луа сделать пока не сообразил, монструозно выходит.

drbars
08.07.2016, 12:52
Есть ли возможность в сджасме сделать вычитание константы из кадого байта массива при компиляции?

Например:
DB "2345678"

При копиляции вычитаем 1 и получаем результат
1234567

upd
--
нашел директиву ABYTEZ

Bedazzle
12.08.2016, 23:25
Да с безусловными проблема конечно, перезрузки макросов нет в принципе, а условия я думал сами добавите их у меня явно мало. Разбор параметров макросов в сжасме конечно убогий, я как то поднимал этот вопрос сделать как в tasm rst7, но на меня посмотрели как на идиота и пропустили мимо ушей. Как через луа сделать пока не сообразил, монструозно выходит.

А вот и облом. :(
Макрос вываливается по error: [IF] Forward reference, так понимаю, пытается посчитать смещение до метки, адрес которой ещё неизвестен, и может стать другим в результате этой самой подмены jp на jr.

Так что вопрос автоматизации (пускай и частичной) актуален.

NEO SPECTRUMAN
08.03.2017, 23:05
может конечно известная бага
но я про нее напомню

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



dup 10
if aaa = 0
nop
endif
edup

точнее такая конструкция

dup 10
if aaa = 0
endif
if aaa = 1
endif
if aaa = 2
endif
edup


в итоге при компиляции

error: Unexpected end of file


даиб;%?К%"№я этот№""№%;
я 20 минут плясал с бубном пытаясь понять где ошибка
сравнивая 2 версии исходника

как это можно скомпилировать неправильно науке не известно...

иногда жалеешь что связался с этим гиблым делом...


вынес if за dup-ы
в итоге 20 строк превратилось в 50...
+ еще пришлось делать
количествоdupов = 100500...

рукалицо...



нужна наверное отдельная тема
багофичи sjasm-а
где в первом посте вести их список

jerri
09.03.2017, 07:39
NEO SPECTRUMAN, Этот баг разбирался еще лет так 5 назад

sjasm не приемлет IF/endif внутри dup\edup

Bedazzle
09.03.2017, 07:43
вынес if за dup-ы
в итоге 20 строк превратилось в 50...


Как вариант - вынеси то, что внутри дупа в файл, и сделай десять раз инклуд.
Тоже ужас, но всё-таки покомпактней.

Shiny
09.03.2017, 13:38
Вот такой вопрос возник. Известно, что ужясм в виде .sna генерит кривую область системных переменных $5C00-$5CFF. А был ли фикс?

и еще: не помню кто, но слышал в чятике, что есть другая версия, которая поддерживает STORM'овский синтаксис вида .4 add a,a - повтор 4 раза строки. Если есть, то где можно скачать?

NEO SPECTRUMAN
09.03.2017, 17:26
Этот баг разбирался еще лет так 5 назад
да в этой теме наверное одни и те же баги и так всплывают... 130 страниц... когда их все прочитать?

так еще и такое шикарное описание ошибки
Unexpected end of file...

mastermind
12.03.2017, 00:52
В рамках удовлетворения нездорового желания вспомнить C++ и заодно посмотреть что там нового сделали в C++11/14, возможно, буду неспеша немного "равнять" sjasmplus.

Пока что смерджил ветку Vitamin-а, переделал проект под CMake, поменял схему версий на YYYYMMDD (а то, судя по содержимому ветки, полный бардак с версиями), поправил обработку CRLF-окончаний строк в Unix.

Бинарники для винды (32 и 64 бита): https://github.com/mkoloberdin/sjasmplus/releases

Для Linux/MacOS можете собрать сами из исходников (см. по той же ссылке или репо: https://github.com/mkoloberdin/sjasmplus ):


mkdir build
cd build
cmake ..
make

Пытаюсь прочитать всю тему... Буду признателен за список пожеланий и багрепорты. (ничего не обещаю, но пишите :))

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

zebest
12.03.2017, 01:19
Если что-то нужно добавить
Писал , много тысяч лет назад тут же, но вроде так и не починили. Забавный баг, но голову сломать можно


DUP 1
nop;
EDU


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

Bedazzle
12.03.2017, 01:49
Бинарники для винды (32 и 64 бита)

Запустил 64 бита, работает.
Вин7 хоум

mastermind
12.03.2017, 02:08
Сконвертировал документацию, положил на гитхабовский Wiki: https://github.com/mkoloberdin/sjasmplus/wiki
МОЖНО РЕДАКТИРОВАТЬ прямо там. Присоединяйтесь ;) Было бы неплохо для начала разбить документацию на отдельные Wiki-страницы и составить оглавление.
Отлично подходящая задача для желающих помочь, но не знающих C/C++.

Для желающих проверить/довести до ума документацию в Wiki, вот также ссылка на HTML-версию (должно быть ближе к исходному Docbook XML):
https://htmlpreview.github.io/?https://github.com/mkoloberdin/sjasmplus/blob/master/docs-html/index.html

Alex Rider
12.03.2017, 02:58
Также, насколько я понимаю, ветка Vitamin-а может не содержать некоторых патчей сделанных другими пользователями, которые тут в теме упоминались. Если что-то нужно добавить, ткните носом.
http://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=773856&viewfull=1#post773856
http://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=769112&viewfull=1#post769112

NEO SPECTRUMAN
12.03.2017, 17:25
за список пожеланий
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 с которого всем нужно переходить на что то другое



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). Важное ограничение: любое выражение не может использоваться в
качестве операнда, а только метка, локальная или глобальная.




вот еще полезная команда для сборки всяких sna

ENTRYPOINT #expr

Задает точку входа в программу (устанавливает PC в указанное значение в случае
успешной компиляции).

там их еще много
в оригинальном мануале

а еще нужно все варианты написаний уже имеющихся команд

я спотыкался об то что не было какого то завершения команд привычного мне из emuzwin
какойто возможно eif endif emacro endmacro


а еще иногда когда пишешь код зависимый от времянок
или еще что то
хочется написать два(и более) ветвления\варианта в столбик рядом
и чтоб это потом скомпилировалось линейно


какая нибудь команда + параметр количество столбиков
l5 x l6
ld a,b x xor b
rra x inc a
nop x
jp l2 x jp l3


end какая нибудь команда


x - какой нибудь символ разделитель



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/
и доки к этому неизвестно чему
тоже неизвестно где..

zebest
12.03.2017, 19:24
а как незакрытый dup может не давать ошибку????
оказываеЦЦа - леххко.. Тем более любой сам может проверить.
видимо синтаксис и вообще наличие закрывающего EDUP не проверяется. Хотя может компилятор ищет его до конца текста, и не находит ничего похожего, ну и молчит,Но и ошибок не выдает, партизан...
При этом не только этот конкретный DUP не компилится, не компилится ВСЯ! программа, уточняю, елси кто-то не понял.
а из хотелок - как раз встроенные друг в друга DUP-ы мне бы иногда не помешали:)

Bedazzle
12.03.2017, 20:23
а еще в sjasm-e
нельзя макрос с переменным количеством параметров


яростно плюсую!

Dart Alver
12.03.2017, 21:32
Не знаю может уже устаревшая инфа - на RC6 (и 7 тоже вроде бы остальное не пробовал) ловил баг с ключём --dos866. Оказалось он криво работает в инструкции define. Если написать чтото типа:
DEFINE chetotam "В кодировке виндовс"
и подставить в например:
DB chetotam
то получим невнятные кракозябры. Было подозрение что два раза перекодировалось, но не проверял.

Bedazzle
12.03.2017, 23:08
На одних и тех же исходниках новая версия валится, а rc7 нормально отрабатывает

https://i.imgur.com/A6i5vOF.png

внутри файла инклуды вида
INCLUDE "known/..... - отрабатывают
а когда доходит до того, где без директории known - валится.

jerri
13.03.2017, 07:09
вот еще полезная команда для сборки всяких sna


ENTRYPOINT #expr

Задает точку входа в программу (устанавливает PC в указанное значение в случае
успешной компиляции).


вот это зачем?
в оригинале все есть



SAVESNA "qsave.sna",beginning




про аласм говорилось много - но врядли оно нужно
лучше уговорить AlCo пусть под ПЦ аласм адаптирует

NEO SPECTRUMAN
14.03.2017, 00:43
При этом не только этот конкретный DUP не компилится, не компилится ВСЯ! программа, уточняю, елси кто-то не понял.
по моему все тоже самое с if
если очепятаться как я часто делаю enfif
то по моему тоже

(еще не проверил так ли это)

Hacker Grey
26.03.2017, 00:43
Привет всем. Подскажите, кто сталкивался. SjASMPlusпо умолчанию не отслеживает пересечение адресов.
Например идет org 100 , потом кусок кода и потом org 200 и второй кусок кода, все в одной странице и в одном слоте, так вот если второй кусок кода затирает первый или первый перевалили 200 , SjASMPlus спокойно компилирует дальше не ругаясь и не предупреждая, что я вылез на другой сегмент.
Этот отслеживание как то можно включить ?

jerri
26.03.2017, 00:49
Hacker Grey, нет ему глубоко фиолетово
я так заполнение памяти делаю



org #4000
ds #c000,#ff
org #5b00
...

Bedazzle
26.03.2017, 09:35
Подскажите, кто сталкивался. SjASMPlusпо умолчанию не отслеживает пересечение адресов.

Если орков не слишком много :) то можно понатыкать ASSERT и проверять разницу между двумя адресами.

NEO SPECTRUMAN
26.03.2017, 17:12
SjASMPlus спокойно компилирует дальше не ругаясь и не предупреждая, что я вылез на другой сегмент.
я наоборот пользуюсь єтим
когда нужно сделать регулируемую(менять смещение) таблицу

проверку залазенья я делал как то так



org 100
l1
nop
nop
nop
l2

org 200
l3
nop
l4

if l2 > l3
display "WTF?? o_O"
endif

if (l2-l1) > 100
display "WTF?? v2 o_O"
endif




Хотя проверка и простое предупреждение было бы полезно


а что дает ASSERT?????

Bedazzle
26.03.2017, 20:14
а что дает ASSERT?????

Как и в других языках - делает проверку, и валится с ошибкой (если результат проверки выражения равен нулю).



ASSERT <expression>
An 'assertion failed' error is issued if the expression evaluates to zero.

SAVC
14.05.2017, 18:43
Не работает функция high в такой программе, почему?
mark:
org (high(mark+255))*256

krt17
14.05.2017, 18:55
Не работает функция high в такой программе, почему?
Все работает, только после high надо пробел ставить, иначе как метка воспринимается.
А вообще конечно ds -$&#ff. Но эт кому как нравится.

Shiny
14.05.2017, 18:57
другая версия, наверное?

попробуйте align 256

NEO SPECTRUMAN
14.05.2017, 19:10
только после high надо пробел ставить
по хорошему пробелы нужно везде ставить
между всеми действиями (2 + 2) + 2
пару раз спотыкался об то что оно не понимало написанное без пробелов
особенно в сочетаниях ld a,(xxxx+xxxx+xxxx)

...а может и не sjasm єто был...

но привычка ужо осталась...

Знахарь
16.05.2017, 13:34
В итоге, кто какими связками пользуется? И, соответственно, порекомендует для разработки?

jerri
16.05.2017, 13:52
Знахарь, akelpad+sjasm+unreal+мешок утилит

пробовал TommyGun - чота вылетает

Shiny
16.05.2017, 14:08
sjasm+Spectaculator+Emeditor


получаешь .sna, запускаешь и доводишь до ума.
А потом отдельный вопрос сборки в /tap/.trd/.scl

SAM style
16.05.2017, 14:24
kate + bash + sjasm + mhmt + mctrd + xpeccy
с прямыми руками - и scl, и tap и trd сразу после компиляции

Знахарь
16.05.2017, 15:04
Ну плюсов вижу много )).. звучит привлекательно. Хорошо, а как максимально быстро прыгать между дебагом и асмом?

jerri
16.05.2017, 15:13
Знахарь, анрил умеет понимать список меток
sjasm умеет их сохранять
как то так


device zxspectrum48
org #8000
beginning
savesna "qsave.sna",beginning
labelslist "d:\_work\dropbox\unreal\user.l"

Знахарь
16.05.2017, 15:52
полагаю, дебаггер используется из unreal и в него можно попасть сразу после сборки кода? Имеется ввиду, не по нажатию esc, а автоматом, по аналогии со старым добрым STS - с выставлением начала там где указано в коде?

shurik-ua
16.05.2017, 15:56
вообще в отладчик нужно попадать только если что-то очень сильно пошло не так, а не сразу же после запуска ) - иначе это не программирование, а "Угадай мелодию" )

Знахарь
16.05.2017, 18:05
это асм, а не php ;) здесь часто надо гадать мелодии. Причем наигранные на барабане )) или самосоздаваемые другими мелодиями ))). Более того, в средах разработок под всякие GBA, Nintendo DS все было, скажем, по аналогии с emuZwin - окно эмуля, окно дебаггера, окно дампов графики в RAM с реалтайм обновлением и все что только можно одновременно, с взаимодействием, переключением. Быстро. чОтко. Кроме того, в дебаге проводится времени порой в разы больше, чем в написании.

Однако, вопрос про состояние сегодняшних дел, опыте разработки и наличии/отсутствии удобства ввиду использования РС-разработки, повышении производительности, приятности против старого-добргого alasm+sts. О том, что делается быстрее, лучше, удобней. Напр, в отдельном окне дамп памяти в виде графики есть возможность сделать с помощью чего-то? (раз уж мы вспомнили GBA)

NEO SPECTRUMAN
16.05.2017, 18:51
блокнот(редкостойное УГ но зато минимализм и удобство)+sjasm(редкостное УГ ну зато работает)+emuzwin(редкостное УГ ну зато...просто привык)+unreal(редкостойное УГ но зато есть некоторые плюшки для дебаганья)

на счет unreal-а
стабильно работает только последняя сборка от тслабс-а
и я находил еще одну сборку не помню от кого(не самую последнюю)

все остальные тупо постоянно выносят:mad:...
и пляски с бубном не помогают

Знахарь
16.05.2017, 18:59
блокнот(редкостойное УГ но зато минимализм и удобство)+sjasm(редкостное УГ ну зато работает)+emuzwin(редкостное УГ ну зато...просто привык)+unreal(редкостойное УГ но зато есть некоторые плюшки для дебаганья)

"все УГ, но тем не менее" - Драма человека-мазохиста )))

Насколько мне ясно по портянкам тут - не только unreal, но и собственно sjasm надо искать не последний?

Хорошо, зайдем с другой стороны.... У кого, кто хорошо уже наработался есть рабочие связки? Логично думать, есть - сюда их, в ZIPчике?

NEO SPECTRUMAN
16.05.2017, 19:00
Насколько мне ясно по портянкам тут - не только unreal, но и собственно sjasm надо искать не последний?
нужен не последний 1.07 RC7
а самый последний! https://github.com/mkoloberdin/sjasmplus

по хорошему нужно иметь парочку версий


>"все УГ, но тем не менее" - Драма человека-мазохиста )))
не правда я садист!!! ^3^

Shiny
16.05.2017, 19:22
sjasm(редкостное УГ ну зато работает)

интересно, чем не устраивает?

NEO SPECTRUMAN
16.05.2017, 19:26
интересно, чем не устраивает?
неполная lua (неимоверная куча проблем изза отсутствия некоторых команд (например goto и любого ее подобия) нету оригинального мануала какие команды поддержаны(все нужно методом научного тыка))
баги (вся тема набита ими)
макросы (не такая сильно большая проблема... но она есть и иногда напрягает)

сходу не вспомню все...

Shiny
16.05.2017, 19:57
нету оригинального мануала какие команды поддержаны(все нужно методом научного тыка))
баги (вся тема набита ими)

https://raw.githubusercontent.com/mkoloberdin/sjasmplus/my/docs/documentation.xml

но это край, да



неполная lua (неимоверная куча проблем изза отсутствия некоторых команд (например goto и любого ее подобия)

lua вообще малахольная, но койчо из нее можно выжать.


макросы (не такая сильно большая проблема... но она есть и иногда напрягает)

Не сталкивался. Мне пока хватает 3-4 штуки.


а вот с условной компиляцией мне неясно, как оно работает.

NEO SPECTRUMAN
16.05.2017, 20:23
https://raw.githubusercontent.com/mk...umentation.xml
но это край, да
а по луа там кот наплакал
4 примера
6 команд в них используется



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

пушо ручками дооолго и фиг потом исправишь\переделаешь



были бы макросы по мощней (переменное количество параметров)

было бы проще писать макросы для компиляции кода от других процов :v2_dizzy_botan:

mastermind
16.05.2017, 20:57
нету оригинального мануала какие команды поддержаны(все нужно методом научного тыка))
https://raw.githubusercontent.com/mkoloberdin/sjasmplus/my/docs/documentation.xml
но это край, да
Лучше см. сюда: https://github.com/mkoloberdin/sjasmplus/wiki
(там же можно редактировать/дописать чего не хватает)

NEO SPECTRUMAN
16.05.2017, 21:11
(там же можно редактировать/дописать чего не хватает)
там наверное нужно регистрироваться чтоб что то править...


а когда следующий будет релиз? :v2_dizzy_turn:

Shiny
16.05.2017, 21:15
я люблю большие развернутые процедуры килобайт по надцать
и для меня критичны средства автоматической генерации кода

пушо ручками дооолго и фиг потом исправишь\переделаешь

rept в помощь. Например freak.zip

Shiny
17.05.2017, 07:26
Лучше см. сюда: https://github.com/mkoloberdin/sjasmplus/wiki
(там же можно редактировать/дописать чего не хватает)

Хорошо, что сделали :3

Знахарь
19.05.2017, 15:01
Итак, все откаментили. Но готовой связочки никто в zip чике так и не запостил ))) а как же помощь начинающим сироткам?

Shiny
19.05.2017, 17:37
Но готовой связочки никто в zip чике так и не запостил ))) а как же помощь начинающим сироткам?

Что конкретно нужно?

OrionExt
19.05.2017, 18:14
Итак, все откаментили. Но готовой связочки никто в zip чике так и не запостил ))) а как же помощь начинающим сироткам?
Так у всех свои предпочтения, а так Блокнот от Win – всегда готов;)

Black Cat / Era CG
20.05.2017, 06:01
Итак, все откаментили. Но готовой связочки никто в zip чике так и не запостил ))) а как же помощь начинающим сироткам?
Ну я вот когда-то такую статейку делал: http://era-cg.su/?name=articles&id=1 Там NPP+SjASMPlus+US. Ей и пользуюсь. Но это далеко не идеал.

Bedazzle
20.05.2017, 17:50
Ну я вот когда-то такую статейку делал. Там NPP+SjASMPlus+US. Ей и пользуюсь. Но это далеко не идеал.

Пользуюсь, спасибо. :)

Black Cat / Era CG
20.05.2017, 19:50
Пользуюсь, спасибо.
Да особо-то не за что.

jerri
20.05.2017, 21:39
Итак, все откаментили. Но готовой связочки никто в zip чике так и не запостил ))) а как же помощь начинающим сироткам?

ты бы это яснее свои мысли бы отображал
вот тут (https://www.dropbox.com/s/xks9fvr9utsx5b1/ZX_IDE.rar?dl=0) лежит архив с моим набором програм
в папке с акелпадом лежит файл start.bat который запускается по F5 из акелпада
там можешь свои скрипты наскриптить.

так же в архиве лежит моя рыба для создания программ

Знахарь
20.05.2017, 21:50
О! Спасибо, "добрый самаритянин"! Вот это уже беседа!

Black Cat / Era CG
20.05.2017, 22:40
вот тут лежит архив с моим набором програм
в папке с акелпадом лежит файл start.bat который запускается по F5 из акелпада
там можешь свои скрипты наскриптить.
Надо тоже посмотреть. Фолдинга ж там (у Акеля) нет?

jerri
20.05.2017, 23:55
Black Cat / Era CG, чего у него нет?

а он же настраиваемый
там еще кодеры есть
пишут что там можно

Black Cat / Era CG
21.05.2017, 05:46
Black Cat / Era CG, чего у него нет?
Ну сворачивания блоков кода типа (схематично):


[-]-KeyEnd DUP 3 ;Развернутый блок
| EI
| HALT
| CALL Scroll
| CALL S_Left
L EDUP
JR Key


[+]-KeyEnd DUP 3 ;Свернутый блок
JR Key

Shiny
21.05.2017, 09:49
вот так бы процедурки или циклы свернуть

jerri
21.05.2017, 11:07
Black Cat / Era CG, в приложенной версии акелпада
в кодере a80
прописано сворачивание

;[ начало
;] конец

там если чо можно еще варианты прописать

Black Cat / Era CG
21.05.2017, 13:16
вот так бы процедурки или циклы свернуть
Ну в Notepad++ я добавил сворачивание произвольного блока по
;--->
...
;<---


Black Cat / Era CG, в приложенной версии акелпада
в кодере a80
прописано сворачивание

;[ начало
;] конец

там если чо можно еще варианты прописать
Вот об этом и спрашивал. Не знал, что есть такое в AkelPad. Спасибо за инфу.

Shiny
21.05.2017, 13:46
шит, в Emeditor'e плагина нет для Folding(

Black Cat / Era CG
21.05.2017, 15:30
шит, в Emeditor'e плагина нет для Folding(
А что такого хорошего в Emeditor?
Просто интересно. Сборок на основе различных редакторов тьма. Но обычно никто особо не описывает особенности полюбившейся сборки. Отсюда и вопросы. А хотелось бы найти идеал.
Кратко опишу, что сделал и что нравится в NPP:
Что нравится:

Бесплатность.
Нумерация строк.
Вкладки. Возможность одновременной работы с несколькими файлами и с одними и теми же файлами в разных областях.
Настраиваемая подсветка синтаксиса.
Возможность настройки сворачивания кода / комментариев.

Что сделал:

Подсветка для SjASMPlus (не без косяков).
Сворачивание комментариев, блоков типа IF...ENDIF, DUP...EDUP..., произвольных блоков кода.
Прикрутил естественно SjASMPlus. Все ошибки компиляции выводятся в окошко "консоли". Откуда можно в пару кликов перейти к строке с ошибкой.
Панель меток. Отдельная панелька справа со списком всех меток редактируемого файла. Можно перейти к нужной из списка.
Вот и все.

То есть в моем варианте сделано только самое необходимое. И то не самым лучшим образом.

Shiny
21.05.2017, 15:56
А что такого хорошего в Emeditor?

много чего. на бесплатность давно наплевать.

jerri
21.05.2017, 17:46
Black Cat / Era CG, если чо там вообще произвольно настраивается всё

Black Cat / Era CG
21.05.2017, 18:22
много чего. на бесплатность давно наплевать.
А мне наоборот. Я готовлюсь. Из ворованного только винда:)


Black Cat / Era CG, если чо там вообще произвольно настраивается всё
Ну это везде так.

Shiny
21.05.2017, 20:21
А мне наоборот. Я готовлюсь. Из ворованного только винда

Идейный?=) Была бесплатная прога версии 6х, правда обрезанная нафиг.

Black Cat / Era CG
21.05.2017, 21:53
Идейный?=)
Параноидальный:)

Shiny
22.05.2017, 05:18
Параноидальный
Варум?

Black Cat / Era CG
22.05.2017, 06:57
Шынни, wtf?

- - - Добавлено - - -


много чего.
А можно подробнее. В виде сравнения со списком для NPP выше. Чего есть такого хорошего, чего нет/не реализованного в моей связке. Ибо поиск идеального варианта продолжается.

Jerri, к вам тот же вопрос.

Я даже сам думал написать заточенный редактор с подкидным и прочими. Но бросил, так толком и не начав.

Shiny
22.05.2017, 08:16
А можно подробнее. В виде сравнения со списком для NPP выше

Бесплатность. есть древняя бесплатная версия, но мне наплевать на платный/бесплатный

Нумерация строк. Настраивается. Переход к номеру строки реализован

Вкладки. Возможность одновременной работы с несколькими файлами и с одними и теми же файлами в разных областях. Вкладки есть, остальное непонятно

Настраиваемая подсветка синтаксиса. Настраивается. Я подобную фичу считаю излишней, потому что отвлекает.

Возможность настройки сворачивания кода / комментариев. Ищу, как реализовать. плагин Outline и т.д.

Из плюшек:
- поддержка кодировок
- External Tools - возможность настройки ассемблера с перехватом stdin
- поиск с заменой с RegExp и другими мульками.
- скриптинг (js/vbs) - не разбирался до конца

- - - Добавлено - - -

Забыл еще фичи: splitter для окна+ комментирование/снятие комментариев текста - ;

Black Cat / Era CG
22.05.2017, 08:37
Переход к номеру строки реализованЭто есть.

Возможность одновременной работы с несколькими файлами и с одними и теми же файлами в разных областях. Вкладки есть, остальное непонятноЭто когда окошко редактора разбито на 2 части. И в левой и правой открыт один и тот же файл (редактируются они синхронно само собой), только, например в одной области мы в конце файла, а в другой где-то в середине. Иногда бывает полезно. Типа так:
http://savepic.ru/14050098.png




Настраиваемая подсветка синтаксиса. Настраивается. Я подобную фичу считаю излишней, потому что отвлекает.
Дело вкуса.



Из плюшек:
- поддержка кодировок
есть


- External Tools - возможность настройки ассемблера с перехватом stdin
ну stdout я понимаю, переход по ошибкам, а stdin?

- поиск с заменой с RegExp и другими мульками.
тож есть

- скриптинг (js/vbs) - не разбирался до конца
тоже вроде все есть через плагины. тоже не разбирался

Забыл еще фичи: splitter для окна+ комментирование/снятие комментариев текста - ;
а это че? комментирование текста (комментарии не хранятся в самом файле). так?

Shiny
22.05.2017, 09:06
Это когда окошко редактора разбито на 2 части. И в левой и правой открыт один и тот же файл (редактируются они синхронно само собой), только, например в одной области мы в конце файла, а в другой где-то в середине. Иногда бывает полезно. Типа так:

splitter (Ctrl+F12) - хоть две части, хоть 4 =)


ну stdout я понимаю, переход по ошибкам, а stdin?

да, stdout, опечатался



а это че? комментирование текста (комментарии не хранятся в самом файле). так?

Это "дело вкуса"
http://i93.fastpic.ru/big/2017/0522/4f/ebf45d2118b6e281d28479aa2385fd4f.png

Black Cat / Era CG
22.05.2017, 09:17
Это "дело вкуса"
Ну если я правильно понял че это, полезная фича.


splitter (Ctrl+F12) - хоть две части, хоть 4 =)
а. ну в npp вроде только 2. В принципе мне на ноуте больше и не надо:)

В общем, пока только фичу с комментированием для себя отметил. Остальное вроде все есть.
Спасибо за инфу.

jerri
22.05.2017, 09:28
Black Cat / Era CG, разговор неконструктивный :)
мне нравится не навороченность редактора а соответствие моим вкусам
в данном случае - раскраска, скорость работы и универсальность инструмента

Black Cat / Era CG
22.05.2017, 09:41
Black Cat / Era CG, разговор неконструктивный
мне нравится не навороченность редактора а соответствие моим вкусам
Я наверное неправильно понят. Я не пытаюсь навязать свой вариант. Я пытаюсь:
1. Выяснить, какие фичи есть у других вариантов (я вот, например не знал, что у AkekPad'а есть сворачивание. Теперь знаю. Спасибо);
2. Рассказать, какие фичи есть в варианте, которым пользуюсь я.
Так сказать, хочется раскрыть особенности всего ассортимента. Просто ищу идеальный вариант для себя. Ну и людям инфа (мне кажется) может оказаться полезной.
Для этого и пытаюсь выяснить все возможности разных редакторов у тех, кто ими пользуется.
Как-то так.

Shiny
22.05.2017, 09:42
Кстати, о раскрасках и прочих финтифлюшках. Кто какой шрифт использует?

Black Cat / Era CG
22.05.2017, 09:56
Я добавлю. Текущий вариант которым я пользуюсь меня не во всем устраивает. Вот и пытаюсь подыскать что-то более подходящее.

- - - Добавлено - - -


Кто какой шрифт использует?
Раньше юзал Courier New, щас Consolas.

jerri
22.05.2017, 09:57
Black Cat / Era CG, ааа тогда понятно
у акелпада я не нашел возможности отслеживать 2 места файла но за счет плагинов там наверное и не такое есть
есть режим с несколькими окнами или есть с вкладками. - опционально

zebest
22.05.2017, 12:53
Crimson Editor меня устраивает для моих под(д)елок более чем во всем. я так понимаю Emeditor - развитие поновее и поплатнее.
Лучшее - враг хорошего.

Black Cat / Era CG
22.05.2017, 14:14
Crimson Editor меня устраивает для моих под(д)елок более чем во всем.
А чего в нем есть вкусного?:)

Shiny
22.05.2017, 14:37
ггг, напомнило, как мой бывший ученик в Сбере писал килобайтные скрипты vbs и считал номера строке в Notepad =)
на что он пересел - на Aditor или на другое - уже не помню.

Знахарь
23.05.2017, 18:49
notepad++ много чего умеет реально, при этом весит на диске и в раме... ну просто ничего не весит в сравнении со скайпом и dropbox

подсветки и т.п. - все опциями - хоть елку в огнях, хоть голый notepad.

шрифты - выбираем из утсновленных и! есть, если не путаю даже ручное отключение cleartype. для ценящих зрение.

sublime - тоже гут, тоже всего аж выпадает из подола )))) но его можно допилить до ide, что, кстати, успешно делают веб-кодеры.

Ок, кто еще готов поделиться своими связками для работы? Как насчет граф дампера памяти? как в ide HAM для GBA было?

Black Cat / Era CG
23.05.2017, 19:53
Как насчет граф дампера памяти?
Что-то подобное есть в дебагере эмулятора Xpeccy (в теме неподалеку). Есть что-то подобное вроде автрства Шинни, если не ошибаюсь.

Alex Rider
23.05.2017, 20:16
sublime - тоже гут, тоже всего аж выпадает из подола
Тоже пользую Sublime, рядом trdtool, Unreal, самописный тул для сборки тапок, bat-скрипты. У Sublime есть проекты - это здорово. Но есть какя-то проблема с открытием модуля с ошибкой в подпапке проекта. Плюс хочется прыгать по меткам и автофолдинг, а этого без парсера текста на уровне редактора не сделать. Была голубая мечта сделать расширение для Visual Studio. Уьогое API и документация для 2010 погубила инициативу на корню. Может быть, когда-нить руки дойдут проверить как обстоят дела в 2017 версии...

Shiny
23.05.2017, 21:24
хм. дампер памяти? нет, не слышал.

В Spectaculator'e есть опция Export..., жаль не в отладчике.

Black Cat / Era CG
23.05.2017, 21:29
дампер памяти?
Вроде смотрелка была дампов в целях поиска графики, не?

NEO SPECTRUMAN
23.05.2017, 21:47
Вроде смотрелка была дампов в целях поиска графики, не?
от гоблиниша называлась просто grabber
но качество у нее не очень
и сохраняла оно только в jpg...

для поиска графики можно юзать emuzwin (тоже простой виевер)
zxspin или specemu (в каком то из 2-х или в 2-х сразу
но виевер памяти там по мощнее)

Знахарь
23.05.2017, 22:06
да, дампер - типа как в emuZwin - в окошке вся память показана в виде графики и это окошко рядом висит и в нем видно прям как раме спрайты готовятся и все такое. Это было в HAM для гаймбоев - там эмуль все показывал.

ага, спасибо, гляну еще и эти эмули

Black Cat / Era CG
23.05.2017, 22:27
В Xpeccy вот такое есть:

http://savepic.ru/14121407.png

NEO SPECTRUMAN
23.05.2017, 22:45
В Xpeccy вот такое есть:
его еще попробуй запустить
не читая всю тему...

єто не тот софт который работает из коробки...

Black Cat / Era CG
23.05.2017, 22:47
его еще попробуй запустить
не читая всю тему...
Да ладно:) У меня вон руки ваще откуда-то не оттуда растут. Но ниче запустил и пользуюсь:)

NEO SPECTRUMAN
23.05.2017, 22:49
Да ладно У меня вон руки ваще откуда-то не оттуда растут. Но ниче запустил и пользуюсь
да ладно
любой нормальный человек возьмет
скачает из последнего поста
запустит и оно свалится с ошибками
потом если он прочитает что еще нужно скачать отдельно либы
он их скачает
закинет куда надо
и оно снова свалится с ошибками не запустившись
дальше попросту забьет на все это...


У меня вон руки ваще откуда-то не оттуда растут.
а у меня растут от туда
апсолютно перпендикулярны туловищу
но на концах клещи :rolleyes:

Black Cat / Era CG
23.05.2017, 22:58
Ну он просто изначально не для винды пишется. Видимо поэтому танцы с бубнами - пингвиноводов же таким не напугать.
А если таким архивом попробовать: https://drive.google.com/file/d/0B2N_UI_YNWo8TlNrRlBWOG5xQ2c/view?usp=sharing
?

- - - Добавлено - - -

Потом просто менять экзешник на новый. Вроде должно работать.

NEO SPECTRUMAN
23.05.2017, 23:00
А если таким архивом попробовать:
тут есть готовые конфиги и ромы в комплекте

а в том что выложено их нужно зателепатировать самому

поэтому и говорю что нужно перечитывать всю тему чтоб запустить

Black Cat / Era CG
23.05.2017, 23:02
Ну да. Согласен. Это я на случай, может кому пригодится:)

Знахарь
23.05.2017, 23:26
А все запустилось и судя по описанию - там для sjasm уже все запилили аж с лихвой и дебаг получше...
а sprite scanner?
оу... а оно в дебаге в tools

вот это уже похоже на тулзы для gba

Shiny
24.05.2017, 10:07
Сборка в .TAP

Сборка в .SCL: мой пост из топика (http://zx-pk.ru/threads/23602-sborka-scl-iz-sjasm-(ne-finalnaya).html?p=914139&viewfull=1#post914139)

point777
06.07.2017, 22:44
В Xpeccy вот такое есть:

http://savepic.ru/14121407.png


Сорри что не по теме, не подскажешь где можно скачать memory sprite scanner?

Shiny
07.07.2017, 09:03
Кажется, у Fuse есть тулза. Или сохранить снапшот и посмотреть моей:

http://g0blinish.ucoz.ru/pb/bingrab.7z

Black Cat / Era CG
07.07.2017, 10:50
Сорри что не по теме, не подскажешь где можно скачать memory sprite scanner?
Это не отдельная тулза. Это функция эмулятора Xpeccy (брать его тут: http://zx-pk.ru/threads/9479-xpeccy.html).
Там фича открывается так: жмем Esc - попадаем в дебаггер, сверху кнопка (вроде б 4 слева) с выпадающим меню, третий пункт этого меню. Все.

mastermind
08.09.2017, 04:01
Новая экспериментальная версия: 20170908

Бинарники для винды и для macOS: https://github.com/mkoloberdin/sjasmplus/releases
Для Linux можно собрать из исходников: https://github.com/mkoloberdin/sjasmplus

Очень неполный список исправленного в частности см. ниже. + что-то наверняка поломано :) , тестирование приветствуется.
Багрепорты и пр. запросы лучше писать сюда: https://github.com/mkoloberdin/sjasmplus/issues
Документация в Wiki (там же можно ее редактировать): https://github.com/mkoloberdin/sjasmplus/wiki


Писал , много тысяч лет назад тут же, но вроде так и не починили. Забавный баг, но голову сломать можно


DUP 1
nop;
EDU


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

Исправлено.


http://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=773856&viewfull=1#post773856
http://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=769112&viewfull=1#post769112
1-я ссылка: этот код был переписан уже в ветке Vitamin-а, полагаю, исправлено.
2-я: поправил.


На одних и тех же исходниках новая версия валится, а rc7 нормально отрабатывает

https://i.imgur.com/A6i5vOF.png

внутри файла инклуды вида
INCLUDE "known/..... - отрабатывают
а когда доходит до того, где без директории known - валится.

Это тоже д.б. исправлено, но на винде я не тестировал.

Bedazzle
08.09.2017, 11:13
Новая экспериментальная версия: 20170908


Win7 64

мусорит, сохраняя пустой блабла.out файл

ошибок не показывает, всё красиво
но бинарника не сохраняет :(

https://i.imgur.com/cko7LfS.png

может ли быть проблема в том, что на ассемблирование посылается файл, в котором ряд инклудов, в последнем из которых идёт само сохрание бинарника в виде
SAVEBIN "../utilz/heavy.bin", GAMESTART

те же исходники рц7 компилит без проблем

mastermind
08.09.2017, 20:06
Bedazzle, спасибо за тестирование.
Пытаюсь воспроизвести проблему, пока не получается. (ни на Linux ни на Windows) Самое странное что в скриншоте "compiled: 0 lines"
Исходники бы сильно помогли.

Bedazzle
08.09.2017, 21:30
Bedazzle, спасибо за тестирование.
Пытаюсь воспроизвести проблему, пока не получается. (ни на Linux ни на Windows) Самое странное что в скриншоте "compiled: 0 lines"
Исходники бы сильно помогли.

Попробую что-нибудь повыпилить, чтобы найти минимально неработающее.

На деле там да, сильно побольше строк :)
https://i.imgur.com/xuJSlfR.png

Shiny
09.09.2017, 10:08
и впили нормальные системные переменные: когда в ужясме создается снапшот, невозможно печатать текст, все валится.
решается костылем.

Alexander27Ru
13.10.2017, 12:26
Всем привет! Только начинаю осваивать SjASMPlus, собственно с ассемблером Z80 проблем нет, а вот с директивами не очень понятно. Хочется мне объявить в основном коде несколько процедур, а потом вставлять их там где мне нужно. Что-то вроде 'procedure' в Pascal/Delphi. Как это можно сделать в SjASMPlus? Почитал про MACRO и MODULE, но не уверен что это то самое.

Вот иллюстрация чего я хочу, надеюсь будет понятно:


; это не должно компилироваться сразу
procedure SomethingToDo
puch bc

pop bc
ret
end procedure

; и это
procedure Init
ld bc, #00ff
out (c), b
ret
end procedure

; и это
procedure AllDone
ld bc, #ffff
out (c), b
ret
end procedure

; а вот это уже попадает в код
org #8000
call Init
call SomethingToDo
...
call SomethingToDo
...
call AllDone

Black Cat / Era CG
13.10.2017, 12:55
Почитал про MACRO и MODULE, но не уверен что это то самое.
Насколько помню, совсем не то самое.
MACRO, классический макрос, при компиляции его код вставляется туда, где встречается его использование. То есть это совсем не вызов процедуры в классическом виде.
MODULE, по-моему, еще дальше от этого, вроде бы это просто определение отдельного именного пространства, то есть для того, чтобы обратиться к метке, объявленной внутри модуля, извне, надо будет еще и приписать к этой метке имя модуля с точкой в качестве префикса (CALL ModuleName.Label). Это сделано для возможности использования одних и те же меток (с одинаковыми именами) в разных функциональных частях кода.

А ваще не очень понятно, зачем вам это?

Alexander27Ru
13.10.2017, 13:33
Конкретной задачи нет, пока просто экспериментирую в эмуляторе, вспоминаю ассемблер. До этого много кодил в Delphi, и наверное это уже способ мышления такой - всё обёртывать в процедуры и функции, а затем в основном коде вызывать их в нужном порядке. Подумал компилятор ассемблера позволяет вытворять что-то в сходном стиле.

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

Black Cat / Era CG
13.10.2017, 13:44
Ну делайте примерно так.

Основной код, откуда вызываются процедуры.
Процедура 1.
Процедура 2.
Процедура 3.
То есть:


; Тут будет основной код
org #8000
call Init
call SomethingToDo
...
call SomethingToDo
...
call AllDone
ret

; это будет компилироваться сразу и лежать сразу за основным кодомSomethingToDo
puch bc

pop bc
ret


; и это
Init
ld bc, #00ff
out (c), b
ret


; и это
AllDone
ld bc, #ffff
out (c), b
ret

А еще, ничего не мешает выделить процедуры по смыслу в отдельные файл(ы), и подключать его(их) через INCLUDE. Тогда в любом нормальном редакторе с поддержкой вкладок, можно открывать эти файлы в отдельных вкладках, а не мотать постоянно простыню кода.

Alexander27Ru
13.10.2017, 14:01
О, теперь понятно, спасибо. Наконец-то в голове прояснилось. :v2_clapp: Буду экспериментировать дальше.

shurik-ua
13.10.2017, 14:17
в дельфи в начале описываются процедуры и функции, а потом уже в конце листинга процедура Main - в асме же можно обратиться к функции из любого места - не важно где она объявлена ДО или ПОСЛЕ вызывающего кода.

Black Cat / Era CG
13.10.2017, 14:53
в дельфи в начале описываются процедуры и функции, а потом уже в конце листинга процедура Main - в асме же можно обратиться к функции из любого места - не важно где она объявлена ДО или ПОСЛЕ вызывающего кода.
Именно так. Я в своем примере разместил основной код "сверху", просто потому что мне так удобнее :)

Andrew771
13.10.2017, 16:40
Пишешь jp MAIN в самом начале программы и ставишь процедуры, где хочешь. Кросскомпиль Паскаля (http://zx-pk.ru/threads/24967-zx-like-pascal.html) так и делает, если есть процедуры.

bigral
13.10.2017, 21:01
Вот иллюстрация чего я хочу, надеюсь будет понятно:


; это не должно компилироваться сразу
procedure SomethingToDo
puch bc

pop bc
ret
end procedure


"не должно компилироваться сразу" - а когда ему компилироваться? Может имеются ввиду директивы "условной компиляции" (их применяют для создания универсального исходника который может производить бинарники для разных конфигураций)?

- - - Updated - - -


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

Смысла "ВСЕ обертывать" нету. Просто пишешь код думая об "структурах" которыми ты манипулируешь, не думая где этот код будет и где эти структуры будут. В процессе будет видно какие куски кода надо выделить в процедуры так как их надо выполнять 2 и более раз (возможны процедуры с многими входами в отличии от паскаля). Если какой-то кусок хочется "свернуть" чтобы он "не путался" в конкретном месте мешая понимать смысл программы, но при этом он не процедура, то для него надо делать include и размещать в отдельном файле (ну или обьявить его макросом и использовать 1 раз).

Alex Rider
13.10.2017, 21:14
То есть никаких "процедур", просто расставляем в требуемом порядке фрагменты кода, а там где фрагменты должны отработать по несколько раз уже сами решаем где этот фрагмент будет лежать в конечном коде и как он будет вызываться?
Добавлю к комментариям выше, что "где лежать" определяется порядком следования кода в исходнике. Выбросить невызываемые процедуры компилятор не может, потому что, в общем-то, категориями процедур он не оперирует (в отличие от Delphi, в ассемблере можно сделать переход на любую команду в коде, и даже внутрь команды).

Alexander27Ru
14.10.2017, 10:41
Ребят, всем спасибо за пояснение. В каком стиле выстраивать код стало понятно. Давным-давно, в школе, пописывал простые программки на ассемблере, сейчас всё позабыл. Но буду вспоминать, благо школьный спектрум ещё жив. :speccy:

Black Cat / Era CG
14.10.2017, 13:14
Давным-давно, в школе, пописывал простые программки на ассемблере, сейчас всё позабыл. Но буду вспоминать, благо школьный спектрум ещё жив.
Ну щас с этим проще. Есть куча отсканированных книг, кросс-инструменты...

krt17
31.10.2017, 00:54
Несколько раз сталкивался с глюком, вроде удалось локализовать.

Shiny
31.10.2017, 06:38
Несколько раз сталкивался с глюком, вроде удалось локализовать.

не понял. можно описать, в чем глюк?

krt17
31.10.2017, 10:42
не понял. можно описать, в чем глюк?

Я не знаю в чем, есть симптомы, если срабатывает ifused в инклюде то на структурах вываливает ошибку. Для понимания компильнуть как есть, а потом закоментив call test2.
Очень мешает делать универсальные включаемые библиотеки, можно конечно не юзать структуры, что и приходится делать, но мало ли починят.

Shiny
31.10.2017, 10:51
с ifused засада какая-то вообще.

jerri
02.02.2018, 21:38
Господа а кто подскажет как узнать длину подгружаемого файла?

krt17
02.02.2018, 21:54
Господа а кто подскажет как узнать длину подгружаемого файла?
Я или гружу через incbin вначале и смотрю по $-startfile или через lua

jerri
02.02.2018, 22:17
krt17, спасибо но блин сколько файлов грузить. изза этого чуть не сорвался релиз кстати;)

а луа это как?

krt17
02.02.2018, 22:23
Я примерно так


function filesize (file)
if not sj.file_exists(file) then
sj.exit(0)
end
local fl=io.open(file,"r")
local len=fl:seek("end")
fl:close()
return len
end
_pl("filelenght\tequ "..filesize ("file.bin"))

jerri
03.02.2018, 00:06
Я примерно так


function filesize (file)
if not sj.file_exists(file) then
sj.exit(0)
end
local fl=io.open(file,"r")
local len=fl:seek("end")
fl:close()
return len
end
_pl("filelenght\tequ "..filesize ("file.bin"))


мда проще для всех 30 файлов создать инклуд с определителем.

krt17
04.02.2018, 22:40
Хохо сжасм пожиратель мозга

org 0x8000
temp equ 0
dup 10
nop
if temp
nop
endif
edup
вынос if из dup ему нравится намного больше.

Есть ли еще асм с внутренним скриптовым языком (как lua в sjasmplus) ?

Shiny
26.11.2018, 19:46
чот меня стремает новые версии использовать.

Destr
26.11.2018, 20:09
А можно в коде указать чтоб диск на эмуль смонтировал?

Dart Alver
26.11.2018, 21:24
Сегодня прямо праздник какой-то
sjasmplus v1.10.3
Смотрю какие-то фиксики добавились. ))
Жалко что баг с ключём --dos866 в DEFINE не починен. По прежнему фраза в кириллице определённая через DEFINE перекодируется неправильно. Подозреваю что 2 раза, 2 раза )))

mastermind
26.11.2018, 22:21
Сегодня прямо праздник какой-то
sjasmplus v1.10.3 (https://github.com/z00m128/sjasmplus/releases/tag/v1.10.3)
Fixed macro issue with commas inside quotes
Fixed IFUSED and IFNUSED directives
Fixed STRUCT directive
Added support of register operands for operators HIGH and LOW

О, это вообще отдельный форк: https://github.com/z00m128/sjasmplus
Не тот что обсуждается в данной теме: https://github.com/sjasmplus/sjasmplus

krt17
26.11.2018, 23:02
Не тот что обсуждается в данной теме:
Сори, я знал что другой, но не думал что это принципиально. Удалил.

mastermind
26.11.2018, 23:46
Удалять-то зачем было? Но прояснить стоит что это разные модификации.

Dart Alver
26.11.2018, 23:58
Удалять-то зачем было? Но прояснить стоит что это разные модификации.
И насколько отличаются модификации ? Какая убежала вперёд ?

mastermind
27.11.2018, 00:42
И насколько отличаются модификации ? Какая убежала вперёд ?
Хороший вопрос. Я не знаком с той веткой. По результатам беглого взгляда на репо, они скорее разбежались в разные стороны, т.к. обе изначально основаны на старом репо Aprisobal на Sourceforge.

Shiny
27.11.2018, 09:55
Кстати, для .SNA системные переменные так и остались покоцанными? Надоело костыли писать постоянно.

mastermind
27.11.2018, 19:50
Кстати, для .SNA системные переменные так и остались покоцанными? Надоело костыли писать постоянно.

Более внятное описание проблемы может поспособствовать ее исправлению ;)

Shiny
28.11.2018, 05:45
Более внятное описание проблемы может поспособствовать ее исправлению ;)

Скажем так: вывод текста в .SNA не работает, rst 10h приведет к сбросу. Причина: неверные данные системных переменных.

Shiny
28.11.2018, 10:50
Еще один момент: как-то мелькала левая сборка, которая к Basic-файлу добавляла номер строки Autorun. А в текущей такое работает?

stepmotor
21.12.2018, 22:50
Решил написать свой удобный редактор для SjASM, чтобы подсветка ошибок и синтаксиса была а так-же запуск полученного в эмуляторе.
Вот что получилось. :) может кому интересно будет.
Скачать можно тут. (http://micronc.ru/zx/sjasm_editor.zip)

Bedazzle
22.12.2018, 12:34
Решил написать свой удобный редактор для SjASM

1) *.a80 к открываемым файлам можно добавить?
2) что я делаю не так?

https://i.imgur.com/ZasEdUi.png

файлы находятся рядышком

https://i.imgur.com/toodq5n.png

(если компилить один файлик из той же директории, где редактор - то компилится успешно)

3) последняя строка исходника при отображении режется скроллбаром (см. предыдущую картинку)
4) окошко BIN->HEX прикольно расширить до конверсии между разными системами, и отображать сразу результат (BIN, DEC, HEX, OCT)
сами биты неплохо подписать 7-0 и разделить небольшим пробелом на две части, визуально будет удобнее
5) нижнюю часть с консолью, куда выводятся результаты компиляции и ошибки, было бы неплохо иметь возможность увеличивать/уменьшать
6) если исходник отредактирован, как в другом софте, рапортовать об этом звёздочкой рядом с названием файла в заголовке таба

stepmotor
22.12.2018, 19:00
Подправил все :)
Новую исправленную версию можно скачать по ссылке (http://micronc.ru/zx/sj_ed.zip).

в ini файле можно прописать свой путь к эмулятору
Name=SPECCY ; Отображаемое на кнопке имя
Path=C:\SjasmEditor\spec\Speccy.exe ; путь к эмулятору
FileEx=.sna ; Расширение файла которое будет кидать после компиляции эмулятору. Имя .asm файла должно совпадать с именем скомпилированного файла.

[CMD]
Height=100 ; Высота окна вывода консольной информации

PS: теперь вроде все видит и компилирует. :)

http://micronc.ru/zx/1.png

jerri
22.12.2018, 21:51
stepmotor, у меня бывают ситуации когда требуется 2 варианта запуска компилятора
1 сборка всего проекта (запуск на компиляцию make.asm)
2 компиляция текущего файла

еще момент - раскраска текста - смена фона возможна?

Shiny
23.12.2018, 08:37
Хватает этого:
https://i106.fastpic.ru/big/2018/1223/e7/fb9d79f7cea47d11dc9dff426040a2e7.png

а сборка всех удобнее батником

jerri
23.12.2018, 12:29
Shiny, у меня акелпад с цветовой схемой и всеми настройками
но если будет чтото компактнее и лучше то я бы не отказался

Shiny
23.12.2018, 12:57
Как я говорил, мне не нравится расцветка. Насколько компактнее не знаю, но Emeditor есть как текстовый редактор по умолчанию. Заодно есть приятная возможность написать исходник и использовать ужасм.

- - - Добавлено - - -

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

mastermind
23.12.2018, 15:08
Кстати, знает ли кто-то шрифт, который удобный для программистов, но еще с поддержкой кириллицы?
https://sourcefoundry.org/hack/

Bedazzle
23.12.2018, 15:15
Кстати, знает ли кто-то шрифт, который удобный для программистов, но еще с поддержкой кириллицы? Luculent приелся.

Удобный в каком плане?
https://en.wikipedia.org/wiki/Consolas
https://fonts.google.com/specimen/Source+Code+Pro

stepmotor
23.12.2018, 15:43
Все подправил, добавил еще в tools > 8х8 to DB .. :)
Скачать (http://micronc.ru/zx/sj_ed_2.zip)

Shiny
23.12.2018, 18:00
Удобный в каком плане?

Цумбайшпиль Diana Font

Bedazzle
24.12.2018, 00:10
Цумбайшпиль Diana Font

Шутку про Диану не вкурил.
Прогерские шрифты выше в прошлом сообщении.

stepmotor
24.12.2018, 07:55
Самый удобный шрифт с поддержкой кириллицы уж есть в ПК , называется Courier New :)

Shiny
24.12.2018, 14:33
Это если самиздат читать.


Шутку про Диану не вкурил.

опечатался, Dina Font
http://www.dcmembers.com/jibsen/download/61/

Bedazzle
24.12.2018, 23:51
Все подправил, добавил еще в tools > 8х8 to DB .. :)

*.a80 нету в масках файлов

Слегка смущает год и копирайт от майков
https://i.imgur.com/MK7Vr6C.png

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

P.S.
многофайловый проект скомпилился!

stepmotor
25.12.2018, 07:33
Слегка смущает год и копирайт от майков

Это вывод с консоли :) Запустите cmd и увидите тоже самое :)

*.a80 добавлю.

Проблему с окнами проверю.

Bedazzle
25.12.2018, 18:05
Это вывод с консоли :) Запустите cmd и увидите тоже самое :)

Это понятно, что вывод с консоли винды :)
Зачем оно в консоли редактора? :)

stepmotor
25.12.2018, 19:27
Зачем оно в консоли редактора?
Редактор с SjASM ассемблером через консоль общается :)

Можно конечно эту инфу стартовую затереть :)

Shiny
25.12.2018, 19:28
У Emeditor задействован перехват вывода на консоль без всяких там мелкософт.

stepmotor
25.12.2018, 20:51
У Emeditor задействован перехват вывода на консоль без всяких там мелкософт.
Ну там ребята обтачивали все.. а я за несколько вечеров накидал как смог :)
Дело поправимое. :)

Bedazzle
25.12.2018, 21:49
Редактор с SjASM ассемблером через консоль общается :)

Можно конечно эту инфу стартовую затереть :)

Не можно, а нужно. Сейчас создаётся впечатление, что редактор написан в 2009 году,
ибо 2018 даже в About нет.

Shiny
25.12.2018, 22:26
понеслись ворчуны. этак вы всю инициативу загубите.

stepmotor
25.12.2018, 22:53
Все заметки поправил. Можно Скачать тут (http://micronc.ru/zx/sj_ed_3.zip) :)
Еще в планах есть желание чуть попозже сделать выравнивание новой строки по предыдущей по нажатию на Enter :) Чуть позже сделаю.


понеслись ворчуны. этак вы всю инициативу загубите.
:v2_cheer:

Bedazzle
26.12.2018, 02:09
Все заметки поправил. Можно Скачать тут (http://micronc.ru/zx/sj_ed_3.zip) :)
Еще в планах есть желание чуть попозже сделать выравнивание новой строки по предыдущей по нажатию на Enter :) Чуть позже сделаю.


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

stepmotor
30.12.2018, 19:25
-Добавил открытие файлов путем их перетаскивания на окно редактора.
-Добавил автоматическое выравнивание по началу предыдущей строки.
-Добавил Recent Files
+ еще немного доработок..
Скачать последнюю версию. (http://micronc.ru/zx/sj_ed4.zip)

Dart Alver
30.12.2018, 22:12
stepmotor, Очень даже неплохо. Цвето и шрифто-выделение понравилось.
Из хотелок :
1 - не особо актуальная - поддержка кодировки IBM866
2 - хотелось бы файл проекта с левой панелью типо как в кримсон едиторе, иначе crimson всёже удобнее. Правда в нём есть бяка - файл проекта использует абсолютные пути к файлам, скопировал папку на другой комп и надо все пути править ))
3 - это если 2-е когда-нибудь будет, то хотелось бы для проекта определение команд сборки/компиляции (например прописать запуск конкректного батника для конкретного проекта)

- - - Добавлено - - -

Кстати а в самом SjASMe кто-нибудь ещё копается ?

AahzBrut
30.12.2018, 22:22
Вопрос - как в sjasmplus резульатат компиляции сохранить в tap с автозапуском?
SAVETAP есть, но не совсем с параметрами понятно...

stepmotor
30.12.2018, 22:56
в examples есть пример..
TapLib называется.

в версии SjASMPlus 1.10.3

Dexus
05.01.2019, 11:30
Ну что ж.. 14 лет назад я зацепился за сабжевый компилятор, подумал "о, крутота какая, столько наворотов, макросы, макрооператоры, сохранялки всякие". Но потом сильно удивился не сумев в нём откомпилировать ни один свой код. Написал в этом же самом треде (https://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=21716&viewfull=1#post21716), пожаловался на то, что сабж не умеет в Forward reference. Вот такой простейший кусок не компилится:

length equ end-start
org 8000h
start
ld bc,length
ret
end

Сие преспокойно компилилось в TASM, в z80asm, и в свежем rasm тоже компилится. Почему сабж до сих пор не умеет такого простого действия, как переменные (equ) с отсылкой на метки ниже? Ведь в конце уже первого прохода все смещения уже известны, а тут их аж 3... И сабж остаётся более ущербным в этом плане, чем древний спектрумовский tasm, которым я пользовался 25 лет назад.

Dart Alver
05.01.2019, 14:38
пожаловался на то, что сабж не умеет в Forward reference
Да это один из самых серьёзных недостатков Sj , как то столкнулся, пришлось целые куски кода перетусовывать и придумывать разные извращения чтобы это скомпилилось. ))

Shiny
05.01.2019, 16:03
мне не мешает, хотя и выскакивает

krt17
05.01.2019, 17:11
Forward reference
Вообще не мешает, если бы остальные проблемы сижасма так же легко отлавливались и обходились.
Нашел очередной прикол, sj.add_word работает криво, в нюансах разбираться не стал, обойти не сложно, но пару седых волос прибавил.

Dart Alver
06.01.2019, 03:42
Вообще не мешает, если бы остальные проблемы сижасма так же легко отлавливались и обходились
Согласен что отсутствие преописания в большинстве случаев без напряга обходится перетасовкой кода (что собственно и приходится делать), но в ряде случаев приходится ставить костыли, возвращать orgи на предыдущие позиции, в общем маразм, не соответствующий высокому званию отличного писишного ассемблера для z80 ))
По поводу остальных проблем. Думал как бы сделать локализацию программы, чтоб в случае чего по всему коду текст не выковыривать, вроде без проблем, создаёшь файлы с соответствующими DEFINEами текстовых строк, а в код подставляешь idшки. Грузи инклюд с нужной локализацией и в путь. А на практике получилась туфта )) Пока сообразил что в дифайнах перекодировка из cp1251 в cp866 работает неправильно... )) В конце концов перешёл на нормально работающие неуклюжие макросы ))

CityAceE
29.01.2019, 12:07
А кто-нибудь ещё занимается поддержкой SjASMPlus? Хочется новую фичу! А именно, чтобы по какому-нибудь ключу он компилировал код, написанный для процессора Intel 8080 (он это и сейчас прекрасно делает), но чтобы в процессе компиляции он бы ругался в консоль на специфичные для Z80 команды. А то иной раз, например, вместо JP LABEL напишешь JR LABEL, а потом не можешь понять почему ничего не работает, хотя визуально всё отлично и скомпилировалось без ошибок. А проблема всего лишь в одной букве, которую сразу и не заметишь.

Shiny
29.01.2019, 15:38
удобнее Telemark Tasm с таблицей i8080. zasm - это лишь мечты.

mastermind
29.01.2019, 22:07
CityAceE, чтоб в него новые фичи добавлять, неплохо бы сначала его существующий код привести к чему-то более менее удобоваримому. (там адок) Чем я время от времени по мере возможностей и занимаюсь. (см. репо: https://github.com/sjasmplus/sjasmplus )
Но данную конкретную фичу по идее реализовать несложно в любом случае. Постараюсь найти время в ближайшие дни и сделать.