User Tag List

Страница 28 из 63 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя
Показано с 271 по 280 из 699

Тема: SjASMPlus от z00m

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

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

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

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Не дай бог. Весь смысл опции коту под хвост.
    какой глубокий смысл?
    в не соблюдении спецификации файловой системы на размер файла???


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

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    А вот у меня отлично всё грузит как и должен )))
    ты больной или прикидываешься?

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

    конечно будет грузить если использовать одно только количество секторов

    я конечно видел упоминание в intrd что какие то долбоклюи пишут не правильный размер файла
    вопрос только зачем?
    (сразу отвечу
    когда они делали моноблок ручками в редакторе диска на самом спектруме в 96 году
    они просто не удосужились исправить за одно и размер файла
    они просто вписали сумму секторов моноблока и все
    и "удалили" остальные файлы из каталога)

    что тебе дает знание размера первого блока?

    стандартными средствами tr-dos моноблок все равно не раскалупать потом
    после применения сжатия (то что move)
    да и тем более если в моноблоке 15 частей...


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

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Описание:
    отлично ты процитировал зарубежный источник где tr-dos вообще не применяют
    Последний раз редактировалось NEO SPECTRUMAN; 12.08.2020 в 01:04.

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    отлично ты процитировал зарубежный источник где tr-dos вообще не применяют
    Вообще идея данной доработки и первая реализация была моя, затем Ped7g полностью переписал код в более приемлемом виде сохранив функциональность.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    какой глубокий смысл?
    в не соблюдении спецификации файловой системы на размер файла
    Да ладно ! 80 % трдос игр построены на полном несоблюдении вашей 'спецификации' которую никто никогда не соблюдал на постсоветском пространстве.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    когда они делали моноблок ручками в редакторе диска на самом спектруме в 96 году
    они просто не удосужились исправить за одно и размер файла
    они просто вписали сумму секторов моноблока и все
    Серьёзно ? Считаешь что в 96-м за компом ленивые дураки сидели ?

    Допустим для чисто контейнера данных исправление байтового размера не скажется никак. Ну а если 'исправить' контейнер с бейсик-загрузчиком ?

  4. #3

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

    По умолчанию

    новая версия выдает 100500 предупреждений на adp

    adp.asm(417): warning: When lua script emits machine code bytes, use "ALLPASS" m
    odifier



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

    можно подробней про то
    когда выдается такое предупреждение?


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


    чисто на вид полученный код работает



    я уже совершенно не помню как это все работает
    и почему

    Код:
    ;FAST TAB macro pg00
    						;по окончанию PASS2 уже установлен новый org!
    	macro fasttab_allocate_macro_pg00 _fasttab_alloc_page_for_table_pg00?, _fasttab_alloc_table_haddr_pg00?, _fasttab_alloc_procedure_number_pg00?
    					
    @__fasttab_allocate_page_for_table_pg00 = _fasttab_alloc_page_for_table_pg00?					
    @__fasttab_allocate_table_haddr_pg00 = _fasttab_alloc_table_haddr_pg00?
    @__fasttab_allocate_procedure_number_pg00 = _fasttab_alloc_procedure_number_pg00?
    						
    @__fasttab_allocate_macro_current_addr_pg00 = $		;бекап адреса
    			;display "fasttab_allocate_macro_current_addr_pg00 ",@__fasttab_allocate_macro_current_addr_pg00
    
    							;чтение состояния слотов
    			org $0000
    @__fasttab_allocate_macro_current_slot0_pg00 = $$
    			;display "fasttab_allocate_macro_current_slot0_pg00 ",@__fasttab_allocate_macro_current_slot0_pg00
    			org $4000
    @__fasttab_allocate_macro_current_slot1_pg00 = $$
    			;display "fasttab_allocate_macro_current_slot1_pg00 ",@__fasttab_allocate_macro_current_slot1_pg00
    			org $8000
    @__fasttab_allocate_macro_current_slot2_pg00 = $$
    			;display "fasttab_allocate_macro_current_slot2_pg00 ",@__fasttab_allocate_macro_current_slot2_pg00
    			org $C000
    @__fasttab_allocate_macro_current_slot3_pg00 = $$
    			;display "fasttab_allocate_macro_current_slot3_pg00 ",@__fasttab_allocate_macro_current_slot3_pg00
    ;				
    ;							;востановление адреса
    			org @__fasttab_allocate_macro_current_addr_pg00
    ;			display "current addr check ",$
    				
    		lua pass1
    								
    		lua_fasttab_allocate_procedure_start_addr_pg00[(_c("__fasttab_allocate_table_haddr_pg00"))][(_c("__fasttab_allocate_procedure_number_pg00"))] = _c("$")	
    									
    		endlua
    		lua allpass
    		lua_function_fasttab_allocate_pg00((_c("__fasttab_allocate_table_haddr_pg00")),(_c("__fasttab_allocate_procedure_number_pg00")))
    		endlua
    		
    		lua pass2	;copy
    		if lua_fasttab_allocator_page_finded_pg00 == 1 then
    
    			_pc("slot 0")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")
    			_pc("slot 1")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")
    			_pc("slot 2")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")	
    			_pc("slot 3")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")
    			
    			_pc(string.format("org $%04x", _c("__fasttab_allocate_table_haddr_pg00 * 256") + (_c("__fasttab_allocate_procedure_number_pg00"))))
    								
    			_pc(string.format("defb $%02x", lua_fasttab_allocator_new_h_org_pg00))
    				
    			_pc("slot 0")
    			_pc("page @__fasttab_allocate_macro_current_slot0_pg00")
    			_pc("slot 1")
    			_pc("page @__fasttab_allocate_macro_current_slot1_pg00")	
    			_pc("slot 2")
    			_pc("page @__fasttab_allocate_macro_current_slot2_pg00")		
    			_pc("slot 3")
    			_pc("page @__fasttab_allocate_macro_current_slot3_pg00")
    			
    			_pc(string.format("org $%04x", lua_fasttab_allocator_new_h_org_pg00*256 + (_c("__fasttab_allocate_procedure_number_pg00"))))
    		end 
    		endlua
    		lua pass3	;
    		if lua_fasttab_allocator_page_finded_pg00 == 1 then
    			
    			_pc("slot 0")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")
    			_pc("slot 1")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")	
    			_pc("slot 2")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")		
    			_pc("slot 3")
    			_pc("page @__fasttab_allocate_page_for_table_pg00 ")
    			
    			_pc(string.format("org $%04x", _c("__fasttab_allocate_table_haddr_pg00 * 256") + (_c("__fasttab_allocate_procedure_number_pg00"))))
    								
    			_pc(string.format("defb $%02x", lua_fasttab_allocator_new_h_org_pg00))
    			
    			_pc("slot 0")
    			_pc("page @__fasttab_allocate_macro_current_slot0_pg00")
    			_pc("slot 1")
    			_pc("page @__fasttab_allocate_macro_current_slot1_pg00")		
    			_pc("slot 2")
    			_pc("page @__fasttab_allocate_macro_current_slot2_pg00")			
    			_pc("slot 3")
    			_pc("page @__fasttab_allocate_macro_current_slot3_pg00")
    			
    			_pc(string.format("org $%04x", lua_fasttab_allocator_new_h_org_pg00*256 + (_c("__fasttab_allocate_procedure_number_pg00"))))
    		end 
    		endlua
    	endm


    в принципе если это предупреждение представляет какую либо? ценность
    и его можно будет убрать например так
    lua pass1 ;ok
    lua pass2 ;ok
    lua pass3 ;ok

    то можно будет заменить все авто заменой
    Последний раз редактировалось NEO SPECTRUMAN; 08.07.2020 в 14:09.

  5. #4

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

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    чисто на вид полученный код работает
    hmm... yeah, I guess you are very special case, when the warning is actually wrong, and your precise pass1/allpass is used as designed and correctly.
    (usually missing "allpass" with machine code emitted is just simple bug, but your code is lot more complicated case).

    I was trying to add "suppress warning" mechanics on the "endlua" area, but I failed there miserably (not so easy), so that's why the warning can't be suppressed in v1.15.1.

    I will explore your idea of suppressing it at the beginning `lua` line, that may be possible.

    meanwhile, if you have this construct in separate module, consider to switch off warnings globally by `--msg=err` level, producing only errors, or to use v1.15.0 for the moment. Sorry for the inconvenience, but I didn't think about such complex case, while the warning did help me to catch many common cases, where just add "allpass" is solution.

  6. #5

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

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    meanwhile, if you have this construct in separate module, consider to switch off warnings globally by `--msg=err` level, producing only errors,
    ну глобально я оно отключить не могу
    так как у меня выводятся и мои важные предупреждения средствами lua (по крайней мере я так думаю : )
    да и у меня тонны ошибок в коде...

    так что я пока побуду на 1.15.0
    пока не добавится ;ok

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

    так же мне недавно попадалось


    на нескольких вот таких таблицах на 256 значений

    Код:
    	pulse_frq2 = {}
    					
    	pulse_frq2[0] = ((0.50001545147716300 * pulse_fundamental_mlt) + (0.54171988752370500 * pulse_harmonic_mlt))
    	pulse_frq2[1] = ((0.49965567733372600 * pulse_fundamental_mlt) + (0.51692156470823500 * pulse_harmonic_mlt))
    	pulse_frq2[2] = ((0.49929590319028900 * pulse_fundamental_mlt) + (0.51590447856727700 * pulse_harmonic_mlt))
    	....

    правда все решилось
    добавлением endlua lua allpass посредине

  7. #6

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

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    так же мне недавно попадалось
    yes, the total buffer for lua text script to be executed is about 32kiB. I was refactoring this just for v1.15.1 to make it constant in the source, so if you are building sjasmplus from source, you should easily find the new constant and raise it (and disable the allpass warning), but I think you use only the binaries.

    I'm not sure if, and by how much I should raise the script length limit, as I have little idea what limits are on the lua side (on sjasmplus side it's all about heap memory, so I can probably allocate also 10 or 100MB without issue on modern PC). Also the buffer is fixed size, allocating for every script in full length, but maybe I can check C++ `std::string` performance characteristics to see if it does deal with `append` effectively, not putting any fixed limit on the usage at all, leaving that to dynamic string allocator. Or maybe I can just use `std::vector` for this too.

    There's lot of sjasmplus source which is not using basic C++ idioms and doing things manually like in C, but I never had time to rewrite some parts just to make them more C++, as I always have to hunt some bug or add feature, and also it took time to have enough test coverage to make such source rewrite reasonably safe (without test coverage the risk of breaking old stuff is too high). So maybe one day... ... in sjasmplus v2.x ...

  8. #7

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

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    but I think you use only the binaries.
    так и есть
    собирать sjasm-ы пока не научились

  9. #8

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

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    так же только что нашел такую ошибку
    коментарий написанный впритык уничтожает endif
    thanks, I will take a look on it, I guess it's about the cloned-parser-code used to parse some special cases like `endif/endlua/....` and similar, not using the main regular parser, so I guess every of those cloned ones is small original and not behaving the same way as regular, I will have to review them all.


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    но хотелось бы использовать вот так
    The proposed syntax is already valid in sjasmplus, but has different meaning. The logical or is logical or.

    But I get your idea, I will try to search for some nice common way how these things are done, the C++ doesn't have built-in operator for this kind of calculation IIRC, but some languages have them...

    I think possible syntax may be like:
    Код:
      IF long_expression isfrom(0, 1, 5, 7)
      ENDIF
    I just can't recall what are the common names in other languages for such operator, and I need to check what kind of "array" enclosing is best fit for sjasmplus syntax, I think I can even go with`isfrom[0, 1, 5]` using brackets (I'm a bit worried about parentheses), the brackets can clash only with DEFARRAY, which should be quite safe usage, unless you decide to do `DEFARRAY isfrom`

    BTW, if your "very long label" contains only very limited amout of numbers, like 20 to 29, you can in current/old sjasmplus use the DEFARRAY lookup-table trick:
    Код:
    very_long_label = 20
      DEFARRAY nextIfCheck 1, 1, 0, 0, 0, 1, 1, 0, 0, 0  ; true for: 20, 21, 25, 26
      DUP 10
        IF nextIfCheck[very_long_label - 20]
            DISPLAY /D, very_long_label, " -> true"
        ELSE
            DISPLAY /D, very_long_label, " -> false"
        ENDIF
    very_long_label = very_long_label + 1
      EDUP

  10. #9

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

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    I just can't recall what are the common names in other languages for such operator
    For example, Python:

    Код:
    if variable in (1,2,3):
       ...
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

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

    Ped7g(11.07.2020)

  11. #10

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

    По умолчанию

    Tried to search for something similar in other languages, but nothing precisely fits sjasmplus current syntax, so I'm leaning toward "in_array" operator:
    Код:
      ; "in_array" operator:
    
      ; variant with literal array directly in the expression
        ; syntax: <expression> in_array [0, 1, 4, 5]
          ; result is -1 when <expression> evaluates to 0, 1, 4, 5
          ; result is 0 when <expression> evaluates to anything else
    
      ; variant with array defined by DEFARRAY
        ; syntax: <expression> in_array <defarray name>
          ; result is -1 when <expression> does match (evaluated!) value in DEFARRAY
          ; result is 0 when <expression> evaluates to anything else
    
     ; examples:
      IF (very_long_label % 33) in_array [0, 1, 5, 7]
      ENDIF
      DEFARRAY freeday 6, 7
    weekday = 2  ; tuesday
      IF weekday in_array freeday
        ; not hit
      ENDIF
    weekday = 7  ; sunday
      IF weekday in_array freeday
        ; *hit*
      ENDIF
    I need to review it a bit more to make sure this doesn't clash with current syntax in any edge-case, but so far it looks good to me and should be possible to implement it.

    Any comments before I add it?

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

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

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

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

Ваши права

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