Страница 1 из 2

директива IFUSED ужясма

Добавлено: 20 ноя 2020, 12:04
shiny
Короче, код такой:

Код: Выделить всё

    device zxspectrum128
        ORG #6000
begin

end
    page 0
    org $C000
page0b:
 db "Dzhigurda",0
page0e:

    display /d,end-begin
    savesna "!void.sna",begin
    IFUSED page0b
    display page0b
    ELSE
    display "no page 0"
    ENDIF
Версия 1.07 RC7, при компеляции выдает no page 0. Хотя по идее, должно казать адрес.
чо за фигня?

Добавлено: 20 ноя 2020, 13:10
krt17
дак ты ее и не юзед

Добавлено: 20 ноя 2020, 13:14
shiny
ну да, конечно

Код: Выделить всё

    device zxspectrum128
        ORG #6000
begin
;border
 MACRO brd n
    ld a,n
    out ($FE),a
 ENDM
;liney
;atrxy
    jr $
    call nbde

    IFUSED nbde
nbde    INC D:LD A,D:AND 7:RET NZ
        LD A,E:ADD A,#20:LD E,A:RET C
        LD A,D:SUB 8:LD D,A:RET
    ENDIF

    IFUSED nbhl
nbhl    INC h:LD A,h:AND 7:RET NZ
        LD A,L:ADD A,#20:LD L,A:RET C
        LD A,H:SUB 8:LD H,A:RET
    ENDIF

end
    display /d,end-begin
    savesna "!void.sna",begin



Добавлено: 20 ноя 2020, 13:15
krt17
Нипонел, ты разобрался?

Добавлено: 20 ноя 2020, 13:20
shiny
нед(

Добавлено: 20 ноя 2020, 13:42
krt17
Изображение

Все заебись с твоим кодом

Добавлено: 20 ноя 2020, 13:45
krt17
Если обьявлена это хуйня, надо к ней обратиться как во втором примере. А так все работало всегда

Добавлено: 20 ноя 2020, 13:56
shiny
Ну да, меня это и смутило - пример с nbde работает, а с page0 нет.
смысл в том, чтобы влегкую написать загрузчик. т.е., если объявлены page0,page1,page3,page4, то использовать директивы IFUSED и при загрузке и при создании TRD

Добавлено: 20 ноя 2020, 14:02
krt17
сделай display c ними тогда сработает, наверное ну или какую другую неважную хрень
А вообще такие штуки define делаются, посмотри мож тебе удобнее будет

Добавлено: 20 ноя 2020, 14:06
shiny
Кулибины, блядь - пилят ужасм до посинения.

huj equ page0b

теперь работает. Спасибо за подсказку

Добавлено: 20 ноя 2020, 16:36
shiny
а хер там. если page0b не задана, то не катит.

Добавлено: 20 ноя 2020, 17:00
shiny

Код: Выделить всё

    device zxspectrum128
        ORG #6000
begin
    jr $
    ld a,$10,bc,$7ffd:out (c),a
    ld hl,$C000
end
    page 0
    org $C000
page0b:
 db "Dzhigurda",0
page0e:

    LUA
    if sj.get_label("page0b")~=-1 then
    sj.insert_label("nop0", 1)
    else
    sj.insert_label("nop0", 0)
    end
    ENDLUA

;    display nop0
    savesna "!void.sna",begin

    IF nop0==1
    display "p0 OK"
    ELSE
    display "no page 0"
    ENDIF
    


Добавлено: 20 ноя 2020, 17:25
krt17

Код: Выделить всё

    device zxspectrum128
    ORG #6000
begin
    jr  $
    define page0b
;----------------------
    ifdef page0b
    display "win"
    else
    display "failed"
    endif
;----------------------
    savesna "!void.sna",begin
так православно

Добавлено: 20 ноя 2020, 17:31
shiny
это глупо. page0b задана для страницы. Похоже, что удобнее использовать DEFINE.
Но, бля, критерий IFUSED ебанутый, если я правильно понял.

Добавлено: 20 ноя 2020, 17:32
krt17
не, ифузед заябись, просто не для этого, у тебя второй пример прям каноничный

Добавлено: 20 ноя 2020, 17:35
shiny
только с документаций не совпадает. IFUSED прринимает значение true, если к метке было обращение - CALL или LD A,()

неправильно это.

Добавлено: 20 ноя 2020, 17:39
krt17

Код: Выделить всё

    device zxspectrum128
    ORG #6000
begin
    jr  $
hui equ wtf
;----------------------
    ifused wtf
wtf equ 1
    display "win"
    else
    display "failed"
    endif
;----------------------
    savesna "!void.sna",begin
суяли, все работает и так

Добавлено: 20 ноя 2020, 17:52
shiny
если page0b не задано, то компеляция валится.

Добавлено: 20 ноя 2020, 18:04
krt17
Ясное дело, яж говорю, оно не совсем для этого. Но то что должно делать делает правильно

Добавлено: 20 ноя 2020, 18:13
shiny
Ага, теперь понел. Все же с DEFINE работает:

Код: Выделить всё

    page 0
    org $C000
page0b:
 DEFINE pg0
f0: incbin "page0\0.bin.zx7"
f1: incbin "page0\1.bin.zx7"
page0e:

...

 IFDEF pg0
 di
 ld de,(#5CF4)
 ld hl, #C000
 sectors page0b,page0e
 call #3d13
 ENDIF


Добавлено: 11 апр 2021, 07:35
shiny
новый ужасм
http://www.pouet.net/prod.php?which=88704

по тесту пофиксили эту директиву

Добавлено: 11 апр 2021, 16:41
krt17
Шыншыл писал(а):по тесту
какому тесту? в ней и так все работало

Добавлено: 11 апр 2021, 16:43
krt17
смотрю чейжлоги тут https://github.com/z00m128/sjasmplus/releases последний год не было никаких фиксов

Добавлено: 11 апр 2021, 17:46
shiny

Код: Выделить всё

    device zxspectrum128
        ORG #6000
begin
    jr $
    ld a,"0"
    rst 16
    ld hl,bla
    IFUSED bla
;    ld a,-1
    display "bla"
    ENDIF
    jr $
bla:
end
    display /d,end-begin
    savesna "!void.sna",begin

Добавлено: 11 апр 2021, 18:19
krt17
И чё? Нихуа не изменилось, работает как раньше.

Добавлено: 11 апр 2021, 19:10
krt17
Добавили exist это да, раньше это только дефайнами делалось, но так себе костыль, имхо не нужный.

Добавлено: 11 апр 2021, 21:29
shiny
krt17 87115 писал(а):И чё? Нихуа не изменилось, работает как раньше.
работает по-другому. в прежней версии директива работала при использовании call r1 или ld a,(a1). Здесь, похоже, работает при определении метки.

Добавлено: 11 апр 2021, 22:45
krt17
А зачем тогда ты пример с использованием показал?

Добавлено: 11 апр 2021, 22:46
krt17
И не должна при определении работать, если работает то это косяк

Добавлено: 12 апр 2021, 06:45
shiny
почему косяк то?