open-simh.simtools/tests/test-endm.lst.ok
Olaf Seibert 015c8bee23 Prepent register label values with a % in symbol table.
This changes the layout of all the regression test listings...
2021-01-23 16:37:15 +01:00

100 lines
5.5 KiB
Plaintext

1 ;;;;;
2 ;
3 ; Test nested macros and name on .ENDM
4 ;
5
6 .macro M1
7 .word 1
8 .endm M1 ; ok
9
10 000000 M1
1 000000 000001 .word 1
11
12 .macro M2
13 .word 2
14 .macro M3
15 .word 3
16 .endm M3 ; ok
17 .endm M2 ; ok
18
19 000002 M2
1 000002 000002 .word 2
2 .macro M3
3 .word 3
4 .endm M3 ; ok
20 000004 M3
1 000004 000003 .word 3
21
22 .macro M4
23 .word 4
24 .macro M4
25 .endm M4 ; ok
26 .endm M4 ; ok
27
28 000006 M4
1 000006 000004 .word 4
2 .macro M4
3 .endm M4 ; ok
29 000010 M4 ; should be empty now
30
31 .macro M5
32 .word 5
33 .macro M5
34 .endm notM5 ; wrong; detected when M5 is expanded
35 .endm M5 ; ok
36
37 000010 M5
1 000010 000005 .word 5
2 .macro M5
test-endm.mac:37->M5:3: ***ERROR .ENDM 'NOTM5' does not match .MACRO 'M5'
3 .endm notM5 ; wrong; detected when M5 is expanded
38 000012 M5
39
40 .macro M6
test-endm.mac:41: ***ERROR .ENDM 'NOTM6' does not match .MACRO 'M6'
41 .endm notM6 ; wrong
42
test-endm.mac:43: ***ERROR No macro definition block active
43 .endm ; end without macro
test-endm.mac:44: ***ERROR No repeat block active
44 .endr ; end without repetition
test-endm.mac:45: ***ERROR No conditional block active
45 .endc ; end without condition
46
47 ; Test that a macro that is defined inside another macro isn't already
48 ; defined while defining the outer macro.
49 ; This is a bit tricky: macros are kept between passes, so just
50 ; testing M3 before M2 (like above) won't work.
51
52 .macro M7
53 .word 7
54 .if p2
55 .macro M8 ; only defined in pass 2
56 .word 8.
57 .endm M8 ; ok
58 .endc
59 .endm M7 ; ok
60
61 000012 000000G M8 ; not defined yet; will be taken as implied .word.
62 000014 M7 ; defines M8.
1 000014 000007 .word 7
2 .if p2
3 .macro M8 ; only defined in pass 2
4 .word 8.
5 .endm M8 ; ok
6 .endc
63 000016 M8 ; which can now be used.
1 000016 000010 .word 8.
63
Symbol table
. ******R 001 M8 = ****** GX
Program sections:
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
000020 001 (RW,I,LCL,REL,CON,NOSAV)