User Tag List

Страница 31 из 63 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя
Показано с 301 по 310 из 699

Тема: SjASMPlus от z00m

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    Ped7g, а можно сделать чтоб DISPLAY выводил и в binary виде?
    Кстати да, иногда полезно в двоичном виде выводить.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Кстати да, иногда полезно в двоичном виде выводить.
    ну и главное с нулями в начале
    00000001
    00000010
    00100001
    00000111
    от сокращенной записи толку не будет

    1
    10
    100001
    111
    так как не прослеживаются столбцы


    конечно для себя я нагородил вот такое
    но это не совсем то что хотелось бы
    не сильно удобно использовать
    Код:
    tmp_var0 = ((tmp_out and %00000001)/%00000001)
    tmp_var1 = ((tmp_out and %00000010)/%00000010)*$10
    tmp_var2 = ((tmp_out and %00000100)/%00000100)*$100
    tmp_var3 = ((tmp_out and %00001000)/%00001000)*$1000
    
    tmp_var4 = ((tmp_out and %00010000)/%00010000)
    tmp_var5 = ((tmp_out and %00100000)/%00100000)*$10
    tmp_var6 = ((tmp_out and %01000000)/%01000000)*$100
    tmp_var7 = ((tmp_out and %10000000)/%10000000)*$1000
    
    tmp_varA = tmp_var0 + tmp_var1 + tmp_var2 + tmp_var3
    tmp_varB = tmp_var4 + tmp_var5 + tmp_var6 + tmp_var7
    
    		display tmp_varB," ",tmp_varA," ",/D,tmp_cnt

  4. #3

    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    229
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    103
    Поблагодарили
    77 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    Ped7g, а можно сделать чтоб DISPLAY выводил и в binary виде?
    da, mozno. Tolko 8-bit ja dumaju? Kakda budet nuzno 16-bit, jest mozno ... split the value to high/low and print both of them ... (my Russian is too limited to make full sentence ... heh, sorry)

    Этот пользователь поблагодарил Ped7g за это полезное сообщение:

    NEO SPECTRUMAN(24.08.2020)

  5. #4

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    da, mozno. Tolko 8-bit ja dumaju?
    Да, 8 бит хорошо.

    Цитата Сообщение от Ped7g Посмотреть сообщение
    (my Russian is too limited to make full sentence ... heh, sorry)
    Your Russian is quite well written for the novice!
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  6. #5

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    for the novice!
    может потому что Ped7g из Чехии
    что как бы тоже exUSSR

  7. #6

    Регистрация
    24.07.2018
    Адрес
    г. Москва
    Сообщений
    83
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    34 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    sub a,32
    Я тоже засел как-то с алгоритмом из-за того, что "SUB A,B" превратились этим ассемблером в два опкода - "SUB A" и затем "SUB B", что было ФАТАЛЬНО не тем, что мне нужно было. Главное, такие ошибки довольно трудно-отлавливаемые. Нахрена такие "фичи" добавлять, не понятно. Такие фичи должны быть включаемыми и по умолчанию выключенными, а не включенными и хрен знает как выключаемыми. Ну или они ХОТЯ БЫ должны быть корректно реализованы. В данном случае, по моему мнению, реализованы они некорректно, потому что мнемоникой предполагается синтаксис SUB [A,]B, и если конкретный ассемблер sjasm хочет как-то расширить синтаксис в этом месте, то должен учитывать необязательный неявный "A," вначале списка, а не тупо собирать кучу команд по списку регистров. Это мое мнение. Считаю, что здесь все же ошибка реализации. Вначале нужно удалить A из начала списка, затем уже реализовывать свои фантазии, и проблем ни у кого не возникло бы. И если кому-то нужно будет зачем-то получить ряд инструкций, начиная с регистра A (понятия не имею, зачем), то пусть пишет SUB A,A,B,C,D, и так далее, на здоровье, сколько угодно (т.е. все ноль раз), а не я вместе со всеми должен страдать, выискивая дизасмом, почему корректный алгоритм не работает. Ped7g пишет, что
    Цитата Сообщение от Ped7g Посмотреть сообщение
    (vs Zilog official syntax, which is ... unfortunate... in some cases).
    но вместо того, чтобы помочь мне, программисту, создал еще больше проблем. Да нормальный тут у Зилога синтаксис. В SUB, AND, OR, XOR, CP не указывается A, потому что нет одноименных инструкций, работающих не с A. А у ADD, ADC, SBC указывается A, потому что есть еще ADD|ADC|SBC rp,rp, и возникла бы неопределенность. Обязан ли я помнить такие моменты, что SBC надо писать с A, а SUB - без A? Не обязан. Тут скорее неправильное трактование этого официального синтаксиса автором ассемблера, который В ПЕРВУЮ ОЧЕРЕДЬ должен был ПОМОЧЬ программисту с написанием программы, либо убрав "A,", либо, в крайнем случае, подсказывая ему о таких моментах предупреждениями или ошибками. Уж точно не мешать своими "фичами", трактуя код как-то по-своему, как какой-то сумасшедший. Ну два возможных варианта, автор. Тут не предусмотрено варианта - наассемблировать какой-то херни. Своими такими вот "фичами" "помогать" ассемблер должен где-то в десятую очередь, и то, если такой запрос поступил. А у нас тут в этом месте происходит конкретное такое вредительство, и иначе это не назвать. И, главное, куча человек уже написали о проблемах в этом месте, все опытные, уже с 30+ опытом программирования, но нет, "я - художник, я так вижу". Браво.

    Решение проблемы двойными запятыми - костыльное, но да, работает. Добавил "OPT --syntax=abf", как рекомендует Ped7g, это работает. Но это костыль, потому что проблема, на мой взгляд, как я сказал, в реализации "фичи", а не в количестве запятых. Не понимаю, почему я должен добавлять какую-то хрень в код, чтобы наконец-таки получить чистый ассемблер. Ну окей, я свои личные проблемы решил добавлением директивы, но в ассемблере так и осталась некорректная реализация фичи. Ну это такова в целом философия автора, которая идет вразрез с моей философией. Я считаю, что база должна работать из коробки, а автор, очевидно, считает, что я вначале обязан использовать его выдуманные директивы, указать устройство, чтобы хотя бы что-то начало работать, например, зачем-то указать NOSLOT, чтобы ассемблировать по нулевому адресу, и что-то еще указывать, чтобы начать получать в итоге базовую базу, а не чьи-то фантазии на тему SUB A: SUB B.

    И чего еще мне не хватило - это добавления \x## (16-чное 2-разрядное число) последовательностей в строковых параметрах для указания управляющих символов. И это для Спектрума, где куча управляющих символов, всякие управляющие AT, INK, PAPER, и т.д. Это я не понял, почему было не добавить. Серьезно, никому в голову не пришло сделать?! Очевидная же штука, казалось бы. Но нет.

    В остальном, все супер, но я макросы не использовал, много в какие дебри не лез. ALIGN попользовал для выравнивания кода в паре мест - отлично подошло, DISP отлично работает. Какими-то другими изысками не пользовался. Половинками индексных регистров тоже, мне сподручнее было написать DEFB #FD и LD L,A, чем пользоваться фейками. В общем, мне вообще мало что нужно для счастья, так что я скорее всем доволен.
    Последний раз редактировалось cafedead; 10.05.2025 в 18:32.

  8. #7

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от cafedead Посмотреть сообщение
    Обязан ли я помнить такие моменты, что SBC надо писать с A, а SUB - без A? Не обязан.
    Цитата Сообщение от cafedead Посмотреть сообщение
    я вначале обязан использовать его выдуманные директивы, указать устройство, чтобы хотя бы что-то начало работать
    Троля греть не хорошо, но ты реально мастер.

  9. #8

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    читаю инструкцию
    нашел опечатку
    [void] _pc("code")

    Parse string of Z80 assembly. Example: _pc("ADD A,B")

    [void] _pl("label code")

    Parse line of Z80 assembly. Example: _pc("SOMELABEL ADD A,B")
    [integer] sj.calc("expression")

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

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


    Этот пользователь поблагодарил NEO SPECTRUMAN за это полезное сообщение:

    Ped7g(24.08.2020)

  10. #9

    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    229
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    103
    Поблагодарили
    77 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    все равно метки получаются плохо различимыми
    yes, doesn't look well.

    I would maybe try to use the CN ahead of instruction, and real labels on separate line ahead:
    Код:
    frq = $+1
    CN=CN+10 :   ld de,$0123
    BTW, the "=" (alias "DEFL") is more like variable, and allows redefinition of the value. If things like `frq` are used for self-modify code, I would suggest to use EQU instead, which creates "constant" (attempt to redefine it second time in source will emit error about different value assigned).

    With a bonus of the EQU maybe creating different visual feel in this case too:
    Код:
    frq EQU $+1
    CN=CN+10 :   ld de,$0123
    Or maybe use macro? But that will explode the listing file, but if you are not planning to use listing very often for this area of code, it may help with the source (you can disable listing for particular part of source, if you are using listing to check other areas).

    Код:
    countT  MACRO   cycles?
    CN=CN+(cycles?)
            ENDM
    
    CN=0
            ld      a,b         : countT 4
            and     $70         : countT 7
    frq=$+1 ld      de,$1234    : countT 10
            IF CN < 26
                .((26-CN+3)/4) nop
                countT (26-CN+3)&-4
            ENDIF

    Этот пользователь поблагодарил Ped7g за это полезное сообщение:

    NEO SPECTRUMAN(24.08.2020)

  11. #10

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    But that will explode the listing file
    а он и так у меня обычно не читаемый и весит мегабайтов 7

    например листинг NSID_Emu весит 15MB
    туда давно бесполезно заглядывать...


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

    Цитата Сообщение от Ped7g Посмотреть сообщение
    Or maybe use macro?
    интересно
    возможно оно даже будет работать с adp

    а на каком pass-е уже будет результат?
    так как полученные цифры еще будут передаваться lua для расчета таблиц

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

    Цитата Сообщение от Ped7g Посмотреть сообщение
    you can disable listing for particular part of source, if you are using listing to check other areas).
    а как это делать?

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

    ну и на верно только мои исходники компилируются столько времени в sjasm
    Последний раз редактировалось NEO SPECTRUMAN; 24.08.2020 в 04:48.

Страница 31 из 63 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SjASMPlus Z80 кросс ассемблер
    от Aprisobal в разделе Программирование
    Ответов: 1663
    Последнее: 19.06.2021, 01:36
  2. Исходники TR-DOS для SjASMPlus
    от Keeper в разделе Программирование
    Ответов: 20
    Последнее: 11.02.2011, 11:57
  3. Запуск STS из .sna, сгенерированного sjasmplus.
    от siril в разделе Программирование
    Ответов: 7
    Последнее: 11.10.2010, 21:33
  4. Breakpoints в связке Sjasmplus+UnrealSpeccy
    от Kurles в разделе Программирование
    Ответов: 19
    Последнее: 26.01.2009, 12:36
  5. Disturbed COverMAnia ( music disk with z00m music collection)
    от kyv в разделе Музыка
    Ответов: 10
    Последнее: 27.03.2008, 10:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •