open-simh.simtools/tests/test-macro-comma.lst.ok
Paul Koning 21f21b9799 Fix macro calls with omitted argument that has a default value,
followed by additional (not omitted) arguments.
2022-06-26 13:41:37 -04:00

92 lines
5.4 KiB
Plaintext

1 ;;;;;
2 ;
3 ; Test that commas create empty macro arguments.
4 ;
5 .macro tstarg a1,a2,a3,a4
6 .narg label
7 .endm
8
9 000000 start: tstarg ; 0 args
1 000000 .narg label
10 000000 tstarg 123 ; 1 arg
1 000001 .narg label
11 000000 tstarg 1, ; 2 args
1 000002 .narg label
12 000000 tstarg ,2 ; 2 args
1 000002 .narg label
13 000000 tstarg , ; 2 args
1 000002 .narg label
14 000000 tstarg ,, ; 3 args
1 000003 .narg label
15 000000 tstarg 1,, ; 3 args
1 000003 .narg label
16 000000 tstarg ,,3 ; 3 args
1 000003 .narg label
17 000000 tstarg 1,,3 ; 3 args
1 000003 .narg label
18 000000 tstarg 1,2,3 ; 3 args
1 000003 .narg label
19
20 ;;;;;
21 ;
22 ; Test what happens if we have invalid bracketed strings.
23 ; For now we fall back to treating them like unbracketed strings,
24 ; that will hopefully alert the user the best.
25 ;
26 .macro braket arg
27 ; arg
28 .endm
29
30 000000 braket <plain>
1 ; plain
31 000000 braket ^/simple/
1 ; simple
32 000000 braket <broken
1 ; <broken
33 000000 braket ^/broken
1 ; ^/broken
34 000000 braket <bro<ken>
1 ; <bro<ken>
35 000000 braket <bro<ken> string
1 ; <bro<ken>
36
37 ;
38 ; Test that commas work with default arguments
39 ;
40 .macro tstarg a1,a2=default,a3,a4
41 .narg label ; second arg is "a2"
42 .endm
43
44 000000 start: tstarg ; 0 args
1 000000 .narg label ; second arg is "default"
45 000000 tstarg 123 ; 1 arg
1 000001 .narg label ; second arg is "default"
46 000000 tstarg 1, ; 2 args
1 000002 .narg label ; second arg is ""
47 000000 tstarg ,2 ; 2 args
1 000002 .narg label ; second arg is "2"
48 000000 tstarg , ; 2 args
1 000002 .narg label ; second arg is ""
49 000000 tstarg ,, ; 3 args
1 000003 .narg label ; second arg is "default"
50 000000 tstarg 1,, ; 3 args
1 000003 .narg label ; second arg is "default"
51 000000 tstarg ,,3 ; 3 args
1 000003 .narg label ; second arg is "default"
52 000000 tstarg 1,,3 ; 3 args
1 000003 .narg label ; second arg is "default"
53 000000 tstarg 1,2,3 ; 3 args
1 000003 .narg label ; second arg is "2"
53
Symbol table
. 000000R 001 LABEL = 000003 START 000000R 001
Program sections:
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
000000 001 (RW,I,LCL,REL,CON,NOSAV)