;;;;; ; ; Test nested macros and name on .ENDM ; .macro M1 .word 1 .endm M1 ; ok M1 .macro M2 .word 2 .macro M3 .word 3 .endm M3 ; ok .endm M2 ; ok M2 M3 .macro M4 .word 4 .macro M4 .endm M4 ; ok .endm M4 ; ok M4 M4 ; should be empty now .macro M5 .word 5 .macro M5 .endm notM5 ; wrong; detected when M5 is expanded .endm M5 ; ok M5 M5 .macro M6 .endm notM6 ; wrong .endm ; end without macro .endr ; end without repetition .endc ; end without condition ; Test that a macro that is defined inside another macro isn't already ; defined while defining the outer macro. ; This is a bit tricky: macros are kept between passes, so just ; testing M3 before M2 (like above) won't work. .macro M7 .word 7 .if p2 .macro M8 ; only defined in pass 2 .word 8. .endm M8 ; ok .endc .endm M7 ; ok M8 ; not defined yet; will be taken as implied .word. M7 ; defines M8. M8 ; which can now be used.