User Tag List

Страница 65 из 70 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя
Показано с 641 по 650 из 699

Тема: SjASMPlus от z00m

  1. #641

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Ну тот же SjASMplus вполне ассемблирует если правильно операторы писать, а не endm к rept прикручивать.
    Внезапно, это нормальный синтаксис для чего-то почтенно архаичного, не помню уже, чего конкретно (pasmo?). Но, да, соглашусь, синтаксис странный, кто и зачем такое придумал...

  2. #642

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

    По умолчанию

    Цитата Сообщение от Chwe Посмотреть сообщение
    Внезапно, это нормальный синтаксис для чего-то почтенно архаичного, не помню уже, чего конкретно (pasmo?). Но, да, соглашусь, синтаксис странный, кто и зачем такое придумал...
    Незнаю на счёт pasmo, а в ужасме используется rept ... endr (аналог также dup ... edup ), а endm это для макросов: macro ... endm

  3. #643

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    238
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Также вопрос - есть ли ассемблеры z80, которые умеют ассемблировать код вроде такого:
    Код:
    leng1   equ     10
    leng2   equ     label2-label1
    
            rept    leng2*2
            jr      $+2         ; 12T
            endm
        
    label1:
            rept    leng1*2
            jr      $+2         ; 12T
            endm
    label2:
    Это М80 (MACRO-80) - классика. Только он под CP/M. Многие современные не могут похвастаться таким как REPT/IRP/IRPC и пр.

  4. #644

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, я тут проверил от нечего делать. sjasm-то этот синтаксис всё ещё понимает. Ругается, но понимает.

  5. #645

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

    По умолчанию

    Цитата Сообщение от Chwe Посмотреть сообщение
    Кстати, я тут проверил от нечего делать. sjasm-то этот синтаксис всё ещё понимает. Ругается, но понимает.
    В смысле, что значит всё ещё ? И почему это он не должен ругаться если ктото не читает инструкцию и использует команды языка вопреки его правилам и грамматики ? На такое вообще любой компилятор ругаться будет.
    Какие в этом претензии к SjASMplus ?

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

  6. #646

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    238
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, а IRPC сделает?
    Код:
    BXlt	equ	0a5h
    
    DBS.	MACRO	str,stre
    	IRPC	x,<str>
    	db	'&x&' xor BXlt
    	ENDM
    	db	'&stre&' or 128 xor BXlt
    	ENDM
    
      5D33                          	OpNum:	DspStr
      5D33    DF              +     		rst	18h
                                                    dbs.	<operator:>,< >
      5D34    CA              +     		db	'o' xor BXlt
      5D35    D5              +     		db	'p' xor BXlt
      5D36    C0              +     		db	'e' xor BXlt
      5D37    D7              +     		db	'r' xor BXlt
      5D38    C4              +     		db	'a' xor BXlt
      5D39    D1              +     		db	't' xor BXlt
      5D3A    CA              +     		db	'o' xor BXlt
      5D3B    D7              +     		db	'r' xor BXlt
      5D3C    9F              +     		db	':' xor BXlt
      5D3D    05              +     		db	' ' or 128 xor BXlt

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

  8. #647

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

    По умолчанию

    Цитата Сообщение от M80 Посмотреть сообщение
    Ну, а IRPC сделает?
    Насколько знаю IRP и IRPC готовых аналогов в SjASMplus нет, while есть, а этих не видел.

    Если очень нужно чтото подобное, то можно как-то выкрутиться используя lua-скрипты, и даже более хитрую обработку строки провернуть, но это будет посложнее конечно, хотя и более универсально.
    Но если честно я особо не припоминаю подобных функций и в других популярных у нас спектрумовских ассемблерах. И на практике даже и не знал что чтото такое зачемто нужно ))

    Вообще в теме время от времени присутствует разработчик Ped7g, может быть если удастся обосновать необходимость данных фичь, то сможете уговорить их реализовать ))


    Мне, если честно, более интересно было бы появление в SjASMplus возможности создания макросов с неопределённым количеством параметров, чтобы такой макрос можно было бы вызвать как вообще без параметра, так и с любым количеством.

    Пусть это будет не macro , а например macro@ или macro$ или как-то по другому, параметры чтоб имели какое-то фиксированное название с порядковым номером, один со специальным именем (или нулевым номером) указывал номер последнего переданного, и их также можно было бы в lua перенаправить.

    Вот тут можно было-бы неплохо развернуться. И тот же IRP например реализовать внешней библиотекой через lua, и много другого ))
    Последний раз редактировалось Dart Alver; 16.01.2025 в 22:19.

  9. #648

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

    По умолчанию

    sjasmplus doesn't have IRPC, you can get same machine code in some different way.

    One of the options is to use virtual memory of DEVICE to post-process the string with xor like this:
    Код:
    BXlt	equ     0a5h
            DEVICE  ZXSPECTRUM48    ; switch virtual device memory mode on
            ORG     $5D33           ; first do regular ASCII string
    OpNum:  rst     $18             ; the "C literal suffix means
    .str:   DB      "operator: "C   ; to tag last byte with "or 128"
            ; now go over the ASCII string again and xor each byte:
    .length equ     $ - .str        ; length for dot-repeater
            ORG     .str            ; go back in virtual memory to start of str
            .(.length) DB {b $} ^ BXlt      ; .length-many-times xor content of virtual memory
            SAVEBIN "temp.bin", OpNum, $-OpNum      ; save resulting machine code
    which assembles as this listing shows (notice the memory at 5D34 written twice, first getting regular ASCII chars, second time being xor-ed):

    Код:
     1    0000              BXlt	equ     0a5h
     2    0000                      DEVICE  ZXSPECTRUM48    ; switch virtual device memory mode on
     3    0000                      ORG     $5D33           ; first do regular ASCII string
     4    5D33 DF           OpNum:  rst     $18             ; the "C literal suffix means
     5    5D34 6F 70 65 72  .str:   DB      "operator: "C   ; to tag last byte with "or 128"
     5    5D38 61 74 6F 72
     5    5D3C 3A A0
     6    5D3E                      ; now go over the ASCII string again and xor each byte:
     7    5D3E              .length equ     $ - .str        ; length for dot-repeater
     8    5D3E                      ORG     .str            ; go back in virtual memory to start of str
     9    5D34 CA          > DB {b $} ^ BXlt      ; .length-many-times xor content of virtual memory
     9    5D35 D5          > DB {b $} ^ BXlt
     9    5D36 C0          > DB {b $} ^ BXlt
     9    5D37 D7          > DB {b $} ^ BXlt
     9    5D38 C4          > DB {b $} ^ BXlt
     9    5D39 D1          > DB {b $} ^ BXlt
     9    5D3A CA          > DB {b $} ^ BXlt
     9    5D3B D7          > DB {b $} ^ BXlt
     9    5D3C 9F          > DB {b $} ^ BXlt
     9    5D3D 05          > DB {b $} ^ BXlt
    and hexa dump of saved binary file:

    Код:
    $ hd ~/zx/ped/scratch/temp.bin 
    00000000  df ca d5 c0 d7 c4 d1 ca  d7 9f 05                 |...........|
    0000000b
    There are for sure more possible ways, but not a simple way to replicate the exact syntax of your example, you need to convert that source for sjasmplus, sorry.
    Последний раз редактировалось Ped7g; 17.01.2025 в 01:46.

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

    Bedazzle(17.01.2025)

  10. #649

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    238
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо Ped7g за ваше внимание.
    Я начал работать с M80 с конца 80-х и тогда других вариантов не было. А уже ближе к 2000-м начал подумывать об использовании чего нибудь посовременнее. Но, тогда уже было много наработок на M80 с его IRP/IRPC, и требовалось много изменений. Тем более, что основная заповедь гласит: "работает, не трожь!" И даже сейчас, с вашим SjASMPlus, видно что это не просто.

  11. #650

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

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    One of the options is to use virtual memory of DEVICE to post-process the string with xor like this:
    Neat and cool! Good to know these tricks.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

Страница 65 из 70 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя

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

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

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

Ваши права

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