Важная информация

User Tag List

Страница 19 из 19 ПерваяПервая ... 1516171819
Показано с 181 по 188 из 188

Тема: sjasmplus от z00m

  1. #181
    Member
    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    62
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    https://github.com/z00m128/sjasmplus...es/tag/v1.14.2

    v1.14.2 changelog:
    - added i8080 mode (--i8080 CLI option) (it's still Z80 Zilog syntax, just limited instruction set)
    - added Sharp LR35902 mode (--lr35902 CLI option) (100% syntax compatibility with IDA, 95% bgb)
    - new $$label operator to retrieve page of label
    - 1.14.0 include-path bugfix reverted, the "." is again automatically added (did break projects)
    - small improvements/polish/extra-info in docs, INSTALL, README, few new tests added
    - cmake script fix of SYSTEM_LUA=ON option, CirrusCI configs added for macOS and FreeBSD
    - few fixes of memory leaks, invalid memory access, double free/delete

    Documentation http://z00m128.github.io/sjasmplus/documentation.html (or in the package/cloned source).

    Should "just work".
    If you have any issue with it, and the docs doesn't explain why the assembler is doing what it is doing, please report it, so I can take a look
    (before I will forget how it works).

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

    NEO SPECTRUMAN (04.10.2019), Protom (13.10.2019)

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

  4. #182
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,192
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    38
    Поблагодарили
    30 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    прогнал свои дизассмы
    100% совпадение


    на
    ld hl, sp+$FA
    выдало
    error: Offset out of range (+250)
    но bin-анрник в итоге правильный


    хотя по GBCPUman.pdf
    ld hl,sp+n
    n - signed value о_О

    потом проверю как команда отрабатывает на эмуляторе
    и действительно ли там signed...
    вангую что это кривая IDA
    Последний раз редактировалось NEO SPECTRUMAN; 04.10.2019 в 23:56.

  5. #183
    Member
    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    62
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ld hl, sp+$FA
    выдало
    error: Offset out of range (+250)
    That's "correct" (but annoying), it's signed int8_t, so in source should be value -128 .. +127 ($FA = -6: `ld hl,sp-6` is correct syntax)
    ... it should have been just warning, but I'm reusing the check from `jr/djnz` routines which report these as error, and I was too lazy to change it.
    (but it's still producing the binary, so if you are lazy too, you can just ignore it... or edit the source and add -256 to such line = `ld hl,sp+$FA-256`= that will remove the error message)

    Thinking about it, there's no "(int8_t)" typecast like in C, so if IDA is producing 0..255 values, you really have to manually go over all error reports and add the -256 on those lines ... or actually, if the IDA is holding the $%02x formatting rigorously (and the whole instruction formatting), one sed line in bash like:
    Код:
    cat x.asm | sed -r "s/(\\bld\\s+hl,\\ sp\\+\\\$[89A-F][0-9A-F]\\s*\$)/\\1 -256 ; fixed by sed/" > x_fixed.asm
    (ARGH... took me 15min to build it with correct escaping for bash.. while in Java/C++ I would just write the regexp in 3min)

    (the regexp in it's final form is "s/(\bld\s+hl,\ sp\+\$[89A-F][0-9A-F]\s*$)/\1 -256 ; fixed by sed/" ... i.e. find all lines with ld hl, sp+$80..$FF values which have nothing after it except whitespace+endline, and adds " -256 " text after them. So you can even run this replacement on the already fixed file, shouldn't change it twice (because the endline condition is not fulfilled).
    Последний раз редактировалось Ped7g; 05.10.2019 в 01:14.

  6. #184
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,192
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    38
    Поблагодарили
    30 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    you can just ignore it...
    меня это не беспокоит
    я просто отписался о первой увиденной ошибке

    главное что теперь можно выкинуть rgbasm (затереть Gutmann-ом шесть раз подряд )
    и забыть про него
    Последний раз редактировалось NEO SPECTRUMAN; 05.10.2019 в 02:31.

  7. #185
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,192
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    38
    Поблагодарили
    30 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем
    генерация контрольной суммы не нужна!
    GB вроде бы ее не проверяет
    проверяется только $0134-$014D
    и логотип nintendo


    все что нужно для запуска своего кода
    Код:
    ; ---------------------------------------------------------------------------		
    			org $0100
    		nop
    		jp	start
    ; ---------------------------------------------------------------------------
    			org $0104
    
    		db $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D ;nintendo logo
    		db $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99 ;do not change !!!
    		db $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E ;!!!
    
    check
    		db   "CHCK_SUM_TEZT! "		;rom name
    		db   00				;
    		db   00,00			;
    		db   00				;
    		db   00				;
    		db   00				;
    		db   00				;
    		db   00				;
    		db   00				;
    		db   00				;
    
    checksum_cnt = 0
    checksum = 0	
    		dup 25
    checksum = checksum + ({b check + checksum_cnt})
    checksum_cnt = checksum_cnt + 1
    		edup
    checksum = checksum + 25
    
    		db   low (256 - checksum)
    
    		db   $00,$00			;rom check sum (who cares?)
    ; ---------------------------------------------------------------------------
    - - - Добавлено - - -

    Если что
    могу проверить
    действительно ли контральтовая сумма не имеет значения
    на железном dmg-01

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

    но для правильной работы эмуляторов и flash картриджей
    придется наверно все таки прописывать
    тип картриджа
    количество банок ПЗУ \ ОЗУ

    да и может есть тупые эмуляторы которые откажутся запускать без совпадения общей контрольной суммы

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

    расчет не нужной контрольной суммы для 32К rom-а
    (помещать в конце исходника перед сохранением)

    Код:
    ;rom_00_check_sum
    
    full_checksum_cnt = 0
    full_checksum = 0	
    		dup $14E
    full_checksum = full_checksum + ({b full_checksum_cnt})
    full_checksum_cnt = full_checksum_cnt + 1
    		edup
    
    full_checksum_cnt = $150
    		dup $3EB0
    full_checksum = full_checksum + ({b full_checksum_cnt})
    full_checksum_cnt = full_checksum_cnt + 1
    		edup
    
    
    ;rom_01_check_sum
    
    full_checksum_cnt = $4000
    		dup $4000
    full_checksum = full_checksum + ({b full_checksum_cnt})
    full_checksum_cnt = full_checksum_cnt + 1
    		edup
    
    		org $014E
    		
    		db high full_checksum
    		db low full_checksum
    		
    	SAVEBIN "teZt.gb",$0000,$8000

    для больших картриджей
    скорей всего просто щелкать страницами
    (такой вариант я не проверял)
    Код:
    slot 0
    page 0
    ;rom_00_check_sum
    slot 1
    page 1
    ;rom_01_check_sum
    slot 1
    page 2
    ;rom_01_check_sum  (COPY)
    slot 1
    page 3
    ;rom_01_check_sum  (COPY)
    slot 1
    page 4
    ;rom_01_check_sum  (COPY)
    ...
    ...
    org $014E
    db high full_checksum
    db low full_checksum
    Последний раз редактировалось NEO SPECTRUMAN; 09.10.2019 в 19:30.

  8. #186
    Member
    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    62
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    If you know the checksum was zero before running the checksum loop, you can just do full $4000 DUP on first area (no need to split it), the result should be same?
    (or you can clear it before checksumming with `ORG $14E : DW 0`)

    And then you can probably create macro for $4000x bank checksum with arguments for entry address+slot+page and use it for all parts...

    Etc... I'm generally not interested too much to include this directly into sjasmplus git (N-logo for sure *NOT*, the checksum macro... maybe, but it's trivial to write if you know the sjasmplus syntax).

    So I guess it's enough to have this documented here on the forum, or maybe somebody will write some public blog about "how to use sjasmplus for GB development"... (somebody not connected to sjasmplus project in any way and published on unrelated web not connected to the sjasmplus).

    Thank you very much NEO SPECTRUMAN for testing it and for the syntax research info - it was essential task to make this happen (I think any major issue would be already found by now, so I guess LR35902 feature is of decent quality). (of course if any bug is found, let me know, as always)

    Have fun.

  9. #187
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,192
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    38
    Поблагодарили
    30 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    the result should be same?
    ну да
    если сначала туда забить ручками db 0,0

    ну а в моему случае это был дизасм bgbtest.gb
    и там уже была своя контрольная сумма
    которую нужно было исправить на новую

    тк например
    db "BGBWELCOME "
    сходу не совпадает
    и нужно уточнять какая изначально была кодировка текста

    конечно можно перед расчетом можно сделать
    org $014E
    dw 0



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

    Цитата Сообщение от Ped7g Посмотреть сообщение
    address+slot+page
    не уверен на 100% процентов
    но у GB по моему только slot 1





    Цитата Сообщение от Ped7g Посмотреть сообщение
    let me know, as always)
    ну не баг
    а скорей пожелание

    нужен

    DEVICE ZXSPECTRUM4096

    slot 0,1,2,3
    0...255 pages
    как сейчас это on military Russian spectrum clones
    таких как ZX-Evo, ATM3


    и если это не трудно то
    с запасом на будущее можно бы и
    ZXSPECTRUM8192
    ZXSPECTRUM16384 (ought to be enough for anybody )


    так же у злых русских есть и ZXSPECTRUM2048
    например ZX-Phoenix

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

    Цитата Сообщение от Ped7g Посмотреть сообщение
    syntax research info
    я ВНЕЗАПНО обнаружил \ забыл
    что в bgb
    целых 3 варианта синтаксиса

    а я закинул только вариант no$gmb

    а там еще
    rgbds (на 95% совпадающий с rgbasm \ ida версией)
    wla-dx (???? о_О)

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

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

    Цитата Сообщение от Ped7g Посмотреть сообщение
    maybe, but it's trivial to write if you know the sjasmplus syntax
    не везде описан сам алгоритм
    я нашел описание только в одном отечественном источнике

    n*****do logo можно выдрать от куда угодно и самому
    просто нужно указать по каким адресам оно лежит


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


    а за n*****do©™® logo можно будет послать в какой нибудь gb programming reference
    Последний раз редактировалось NEO SPECTRUMAN; 10.10.2019 в 06:23.

  10. #188
    Member
    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    62
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    DEVICE ZXSPECTRUM4096
    added to github issues, may happen (probably still in v1.14.x) (larger sizes will probably work easily too, I think 2GiB would be first size to run into some minor problems, as the expression evaluator is strictly `int32_t`, can't recall any other code having any hard limit ... oh, the array for pages/slots is 128 items max, but I'm itching to rewrite that to std::vector for long time any way... and I must have adjusted it for Next already, that one has 224 pages)

    BTW https://www.wallpaper.com/lifestyle/...dheld-game-boy

    I don't know what how the GB home-brew scene looks, but I guess with this device being announced today in about ~2 hours, there may be some new interest into the scene (although it doesn't seem the manufacturer themselves push any dev tools even for their other fake copies, so I don't think they will promote anything like that).

    Still it's funny coincidence, just when --lr35902 was added to sjasmplus ... I'm curious if somebody will ever try to build some medium/larger GB app with it (hopefully they will find way to send me any feedback, or report any issues blocking them).

    (I personally want to focus on ZX Next, I have hardly enough spare time for that, so I'm not jumping onto GB thing ... except of course bugfixing of sjasmplus, but AFAIK it should be usable for GB development as is... if somebody would add nice collection of macros and how-to tutorials, it would be quite complete assembler tool IMO, I don't see any serious issue)

Страница 19 из 19 ПерваяПервая ... 1516171819

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

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

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

Похожие темы

  1. SjASMPlus Z80 кросс ассемблер
    от Aprisobal в разделе Программирование
    Ответов: 1613
    Последнее: 08.10.2019, 07:47
  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

Ваши права

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