Страница 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
почему косяк то?