DEVICE ZXSPECTRUMNEXT
MACRO testMacro arg1?
IF 0 == arg1? : testMacro 1 : ENDIF
.macro_local.1:
.smc+1:
ret
ENDM
ORG $8000
.no_main_local.1e: EQU 123
.no_main_local.1: ; has no main label, will become "_.no_main_local"
xor a
jr nz,.no_main_local.1
jr z,main.1.local.1
main.smc1+1:
main.1e: EQU 234
main.1:
halt
testMacro 0
.local.smc1+1:
.local.1e: EQU 345
.local.1:
xor a
jr nz,.local.1
jr nz,_.no_main_local.1
MODULE module@1
RELOCATE_START HIGH
.no_main_local.2e: EQU 456
.no_main_local.2: EQU high $
xor a
jr nz,$+.no_main_local.2
jr z,main.2.local.2
main.smc2+1:
main.2e: EQU 567
main.2:
RELOCATE_END
halt
testMacro 0
.local.smc2+1:
.local.2e: EQU 678
.local.2:
xor a
@main.1.local.2e: EQU 789 ; fake global label looking like another local
@main.1.local.2: ; fake global label looking like another local
jr nz,main.2.local.2
jr nz,$+_.no_main_local.2
ENDMODULE
DW _.no_main_local.1e, module@1.main.2.local.2e
STRUCT S_TEST, 10
byte BYTE 0x12
word WORD 0x3456
ENDS
data:
.s1 S_TEST
.s2 S_TEST { 0x78, 0x9ABC }
s3 S_TEST { 0xDE, 0xF023 }
ld ix,data.s2
ld a,(ix+S_TEST.word)
ld (s3.word),a
ld de,S_TEST
add ix,de
; same stuff, but in module m2 (!)
MODULE m2
STRUCT S_TEST, 10
byte BYTE 0x12
word WORD 0x3456
ENDS
data:
.s1 S_TEST
.s2 S_TEST { 0x78, 0x9ABC }
s3 S_TEST { 0xDE, 0xF023 }
ld ix,data.s2
ld a,(ix+S_TEST.word)
ld (s3.word),a
ld de,S_TEST
add ix,de
ENDMODULE