#!perl
# $Id$
use warnings;
use strict;
use CPU::Z80::Assembler;
$CPU::Z80::Assembler::verbose = 1 if $ENV{DEBUG};
use Test::More tests => 15;
my($bin1, $bin2);
ok $bin1 = z80asm('
MACRO HLAGH {
DEFW ss
LD A, 0
ss
}
HLAGH
'), "Macro without parameters";
ok $bin2 = z80asm('
DEFW ss
LD A, 0
ss
'), "expanded macro";
is $bin1, $bin2, "macro expansion OK";
ok $bin1 = z80asm('
MACRO HLAGH s {
DEFW ss
LD A, s
ss
}
HLAGH C
'), "Macro parameter names don't clash with labels that start with them";
ok $bin2 = z80asm('
DEFW ss
LD A, C
ss
'), "expanded macro";
is $bin1, $bin2, "macro expansion OK";
ok $bin1 = z80asm('
MACRO HLAGH r1,r2 {
DEFW ss
LD r1, r2
ss
}
HLAGH A, C
'), "Macro with 2 parameters";
ok $bin2 = z80asm('
DEFW ss
LD A, C
ss
'), "expanded macro";
is $bin1, $bin2, "macro expansion OK";
ok $bin1 = z80asm('
MACRO HLAGH r1,r2,r3 {
DEFW ss
LD r1, r2
LD r2, r3
ss
}
HLAGH A, C, D
'), "Macro with 3 parameters";
ok $bin2 = z80asm('
DEFW ss
LD A, C
LD C, D
ss
'), "expanded macro";
is $bin1, $bin2, "macro expansion OK";
ok $bin1 = z80asm('
MACRO HLAGH r1 {
LD r1
}
HLAGH { A, C }
'), "Braces in macro argument";
ok $bin2 = z80asm('
LD A, C
'), "expanded macro";
is $bin1, $bin2, "macro expansion OK";