User Tag List

Страница 43 из 63 ПерваяПервая ... 394041424344454647 ... ПоследняяПоследняя
Показано с 421 по 430 из 699

Тема: SjASMPlus от z00m

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

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

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

    По умолчанию

    the temporary number-labels may not work inside IFUSED, if the first pass doesn't already detect the label as used...

    I did rewrite temporary label implementation in v1.11.1 I think? As it was not working correctly when amount of lines did change between passes, but thinking about it (not 100% sure), maybe now they don't mind changing amount of lines, but require to form the same list across all passes, so if some of them are missing because of IFUSED in first pass was false, then true later, the total list is different, and it maybe fails because of that.

    If you have only few of them, consider to change them to local labels? Or include the libraries after the main code, when the IFUSED will already know in first pass, which routines are used?

    Of course it would be better to fix sjasmplus, but that may take some time, or somebody else doing it, right now I'm waiting for z00m to release 1.18.3, not planning to work on sjasmplus this +-year.

    Still, if you can produce some minimal failing example, it may help to target the bug easier.

    About calling from one module to other ... the `call @other_module.function` is IMO best way, as that's what the source is really doing. Without "@" the label `my_module.other_module.function` is first-priority and other variants are searched only if that fails. Which usually still works for almost anything, except IFUSED. But I don't consider this 100% bug on sjasmplus side, it's heuristic, if you don't specify full global name, and as any heuristic - it's not perfect. (and there's no 100% correct fix for it, whatever you do, you can create anti-example where the new method will fail, as the whole concept is ambiguous).

    ... or you can try to zip your project and send it to me to see if I can quickly patch it to assemble with latest version (would be probably quicker to patch your sources, than sjasmplus... ...and maybe not).

    - - - Updated - - -

    ah, you (krt17 - thank you) did produce the minimal example. And seems I remember it correctly, the heuristic guessing what label you want to call at `call m2.used2` fails as the `n1.m2.used2` is first-priority in first pass, then the `used2: ifused` in first pass is "false", which makes the "2" temporary label non-existent in first pass.

    You can fix such source either by being more explicit in the call using "@" to target the correct module `call @m2.used2`, or you can change the "2" temporary label to some local label. Using those number-labels inside IFUSED blocks is really bad idea since v1.11.1 ... and using them before is really bad idea too... Hmm... I guess it's just bad idea in any case. Use regular labels.

    edit2: but I guess the temporary labels stuff is more like bug... maybe it could accept changes to the temporary labels list between first and second pass, but I'm not sure if that is enough to resolve this. I will keep that example around and maybe check it later, what can be done about it. 0xDEAD: anyway, thank you for reporting your issue, and sorry I don't have some perfect fix for you.
    Последний раз редактировалось Ped7g; 19.08.2021 в 23:33.

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

  3. #2

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    для сабжа временные метки это зло. никогда ими не пользовался. в плане обработки этих временных меток самый адекватный компилятор был от Microsoft - M80. Почему бы уважаемому Ped7g, не заглянуть в исходники M80 и не подчерпнуть некоторые методы там и не воткнуть в сабж? велосипед изобретать не нужно. всё давно украдено до нас...
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  4. #3

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

    По умолчанию

    hahaha... nice joke.

    Let me check the M80 source and take those excellent routines directly into sjasmplus.... right after I will find the source... any minute now... :P

    (or maybe I can disassemble it... and take a look at their IFUSED implementation... actually I got it's source right here:
    Код:
    
    
    Ok, that's a nice short source, also I don't see any obvious bugs, but I'm afraid it's not the best replacement for sjasmplus implementation, something is telling me sjasmplus is slightly better... )
    Последний раз редактировалось Ped7g; 20.08.2021 в 08:56.

  5. #4

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чё, проблема найти в интернете исходники M80?
    ну держите...
    дизасм, конечно, но довольно подробно комментированный.
    Вложения Вложения
    • Тип файла: zip M80.ZIP (62.7 Кб, Просмотров: 150)
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  6. #5

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

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    Чё, проблема найти в интернете исходники M80?
    the problem is the original author didn't give permissions to this, so it's useless. If they would want the M80 to survive and be useful, they would release the source themselves. Because they didn't release the source, they obviously want the M80 to be forgotten history, so the quicker it is lost, the better, to not fool some new users into wasting their time with dead and lost software.

    In this way even if sjasmplus would be super bad implemented, it's still more valuable, because you can take not just binary of sjasmplus, but also any part of source, and use it for yourself any way you need.

    But honestly, I'm not going even to read through that, usually when I read someone's else source, I see bugs, and then I try to fix them, and with M80 it's just waste of time. (I just finished review of expression evaluator of ZX Next assembler Odin, and it took me like 7 days to test it thoroughly and fix most of the bugs, see https://gitlab.com/next-tools/odin/-...uests/42/diffs if you don't mind Z80N assembly - and that's only one file/functionality ... also I spent about 1.5 years fixing sjasmplus, not really wanting or planning, I was just in need of some Z80 assembler for myself, and instead of working on my Next projects, I did have a look at the source ... and what has been seen, can't be unseen, so I had to fix it .... and there you go, I released zero Next productions so far ... but about 10 versions of sjasmplus ).

    Also I don't see any chance how it could help, as the architecture is completely different, M80 doesn't even have IFUSED (or lua scripts and other dynamic stuff), so whatever they do with temporary labels, they don't need to solve the issue which is demonstrated by krt17 example. And if you don't use the dynamic stuff like IFUSED, the current implementation of sjasmplus works too.

    Or to rephrase it, if you take any source which can be assembled by M80, and you take it "as is", only fix syntax for sjasmplus, it will assemble. But this is not true the other way, if I take some more complex project which is assembled by sjasmplus and try to fix syntax for M80, I will hit issues with some missing features.

    But, if *you* think there is some lesson to be learned in M80 and can be applied to current sjasmplus, and I'm wrong, all is not lost. You can just check the M80 source yourself, apply the knowledge to sjasmplus source (which *is* available for you), and create pull request on github so I can check the improvements and add them to the z00m's fork. Any improvements or helper hands are welcome, the sjasmplus will not improve on its own, only when people put effort into it, and create the improvements. Easy.

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

    Bedazzle(21.08.2021)

  7. #6

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ped7g, я тебе открою тайну. Ifused это костыль! Его сюда внедрили потому, что sjasm отродясь не умел работать с объектными файлами вроде REL файлов. Вот так можно собрать компактную библиотеку и вот тебе ifused. А может sjasm умеет нормально работать с условиями внутри макросов? Нет. А m80 уже 100 лет как умеет.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  8. #7

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

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    А может sjasm умеет нормально работать с условиями внутри макросов?
    what do you mean?

  9. #8

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

    По умолчанию

    https://github.com/z00m128/sjasmplus...es/tag/v1.18.3
    • added --color to enable/disable ANSI coloring of errors/warnings
    • added --syntax=s mode to disable sub-word substitutions of DEFINEs
    • added at-sign prefix for macro local labels to act as non-macro local label
    • SAVETRD accepts names containing dot ("z.x.B" is "z.x" with extension "B") - by Dart Alver
    • SAVETRD has optional argument to save BASIC with variables (length_minus_variables)
    • minor bugfixes (conditional block parser)


    So the `--syntax=s` may help with too aggressive substitutions, like macro arguments with name "x" ... not sure how much this helps for example with AloneCoder's sources, but should be a step forward. Let me know if there are more issues, maybe we will figure it out.

    Have a great time, and looking forward to new ZX/GB/MSX/CPC/Next productions...

    And thank you all for reporting issues and helping to steer the development, and your feedback. Really happy to read your messages.

    ---

    With regard 1.18.4 ... not many plans yet, of course any bug fixes if some bugs are found, and Amstrad CPC snapshots are in the pipeline...

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

    Bedazzle(30.08.2021), Dart Alver(31.08.2021)

  10. #9

    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    556
    Спасибо Благодарностей отдано 
    187
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Что-то странное происходит с функцией DISPLAY в королевстве Датском

    Код:
    SjASMPlus Z80 Cross-Assembler v1.18.3 (https://github.com/z00m128/sjasmplus)
    Pass 1 complete (0 errors)
    Pass 2 complete (0 errors)
    > Compile BGE v3.12 (2021)
    > Based of Burial Gfx Editor v.3.o5 and Supreme-GUI
    > (c) Copyright Delirium Tremens from Freedom
    > (c) Copyright Sinn from Delirium Tremens
    > (2ooo-2oo1)
    >  
    include data: name=52f.bin (2048 bytes) Offset=0  Len=2048
    >  End PGNJP adr : 0x60EE
    > End GuiVar:0x61B8
    > This addres must be < 0x8000: 0x648E, 25742
    > Resident GUI len :0x04F5, 1269
    > HM0x75F7
    > RGB: 0x0138, 312
    > Primitive len   :0x03CA, 970
    > MiniLoupe len   :0x0387, 903
    > MFree : 0xA390, 41872
    > LenMFree : 0x0070, 112
    > SetUp len  :0x109B, 4251
    >    $iOV free :0x005E, 94
    >    $iPL free :0x000D, 13
    >  
    > RAM drivers for modeles
    >  
    > lScorp1024  :0x001C, 28
    > lKAY256  :0x0015, 21
    > lKAY1024  :0x0023, 35
    > lS128  :0x000A, 10
    > lPen512  :0x0014, 20
    > lPen1024  :0x0013, 19
    > lATM1  :0x0017, 23
    > lTURBO2  :0x001D, 29
    > lPROFI  :0x0017, 23
    >  
    > LEN AUTOCONF :0x05A2, 1442
    > Length Init     :0x07CD, 1997
    >  Limit $ :0x0098, 152
    > (c) Sinn^dtr^fdm^2oo1
    > Length BGE     :0x4390, 17296
    > Free for BGE   :0x0070, 112
    >  
    > Aerosol len   :0x0E0C, 3596
    > Brush len   :0x10B9, 4281
    > Brush Free  :0x004B, 75
    > Sprites len :0x1ACB, 6859
    > Sprites free:0x0035, 53
    > CHR len :0x08AC, 2220
    > FNT len   :0x085F, 2143
    > FNT + CHR len :0x1116, 4374
    > SprtExport len :0x02DE, 734
    > SprtExport free:0x1822, 6178
    > SprHack len :0x045F, 1119
    > DiskSRV len :0x09B3, 2483
    > DiskSRV & SpHack len :0x0E1D, 3613
    > About len   :0x05C7, 1479
    >  
    > GUI  [all] : 0x2E6B, [free] :0x0093, 147
    >  
    > MISC len   :0x012C, 300
    > Fill len   :0x0304, 772
    include data: name=bgetxr.t8 (256 bytes) Offset=0  Len=256
    include data: name=bgetxr.t16 (1024 bytes) Offset=0  Len=1024
    > Texture len   :0x0A21, 2593
    > WinMenu len   :0x0DB2, 3506
    > MGN len      :0x12D2, 4818
    > CoordXY len   :0x0161, 353
    > MScreen len   :0x0271, 625
    > COLORpgn len   :0x08D1, 2257
    >  
    > LenP6Free : 0x0488, 1160
    >  
    >  
    include data: name=bge_spr (1696 bytes) Offset=0  Len=1696
    > Brs data len :0x0444, 1092
    > Box len   :0x0369, 873
    > Chnk len   :0x05DF, 1503
    > Objects len   :0x0F1B, 3867
    >  
    > LenP7Free : 0x00B9, 185
    >  
    >  
    >  
    >  
    Pass 3 complete
    Errors: 0, warnings: 0, compiled: 51245 lines, work time: 1.206 seconds

  11. #10

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

    По умолчанию

    you mean the ANSI color codes, or something else? And if you mean the color codes ("[36m" and "[m"), what terminal are you using or how do you process the sjasmplus output?

    There is some heuristic trying to decide if the current terminal supports color codes, checking for environment variable "TERM" and if that variable exist, then it looks if it contains substring "color". So you can maybe check what your TERM env. variable value is.

    If you are capturing the output to file, you may want to switch off color codes even if your terminal supports them.

    so --color=off to disable them then.

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

    Dart Alver(01.09.2021)

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

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

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

Эту тему просматривают: 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

Ваши права

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