open-simh.simtools/tests/test-if.lst.ok
Olaf Seibert 0ab2a4fa16 Add consistency checking for symbol flags
while also adding some consistency.
All listings now list . (dot) as defined so they need updating.
2021-05-30 13:19:39 +02:00

164 lines
8.6 KiB
Plaintext

1 ;;;;;
2 ;
3 ; Test various conditions of the condition directive
4 ;
5
6 000000 zero = 0
7 000001 one = 1
8 000002 defd = 2
9 000003 defd2 = 3
10 177777 min1 = -1
11
12 ; defined
13 000000 001 .iif df defd .byte 1
14 .iif df undf .byte 0
15 .iif ndf defd .byte 0
16 000001 001 .iif ndf undf .byte 1
17
18 .ifdf defd
19 000002 001 .byte 1
20 .endc
21 .ifdf undf
22 .byte 0
23 .endc
24 .ifndf defd
25 .byte 0
26 .endc
27 .ifndf undf
28 000003 001 .byte 1
29 .endc
30
31 ; multiple df and ndf
32 000004 001 .iif df defd & defd2, .byte 1
33 .iif df defd & undefd .byte 0
34 .iif df undefd & defd, .byte 0
35 .iif df undefd & undefd .byte 0
36
37 .iif ndf defd & defd2 .byte 0
38 .iif ndf defd & undefd, .byte 0
39 .iif ndf undefd & defd, .byte 0
40 000005 001 .iif ndf undefd & undefd .byte 1
41
42 ; multiple df or ndf
43 000006 001 .iif df defd ! defd2, .byte 1
44 000007 001 .iif df defd ! undefd .byte 1
45 000010 001 .iif df undefd ! defd, .byte 1
46 .iif df undefd ! undefd .byte 0
47
48 .iif ndf defd ! defd2, .byte 0
49 000011 001 .iif ndf defd ! undefd .byte 1
50 000012 001 .iif ndf undefd ! defd .byte 1
51 000013 001 .iif ndf undefd ! undefd .byte 1
52
53 ; blank (string)
54 000014 001 .iif b ^// .byte 1
55 .iif b <x> .byte 0
56 .iif nb <> .byte 0
57 000015 001 .iif nb ^/x/ .byte 1
58
59 ; identical (strings)
60 000016 001 .iif idn ^/a/ <a> .byte 1
61 .iif idn ^/a/ <b> .byte 0
62 .iif dif ^/a/ <a> .byte 0
63 000017 001 .iif dif ^/a/ <b> .byte 1
64
65 ; skip P1 and P2
66
67 ; equal to zero (value)
68 000000 001 .iif eq zero .byte 1
69 000001 .iif eq one .byte 0
70 000000 .iif ne zero .byte 0
71 000001 001 .iif ne one .byte 1
72
73 000000 001 .iif z zero .byte 1
74 000001 .iif z one .byte 0
75 000000 .iif nz zero .byte 0
76 000001 001 .iif nz one .byte 1
77
78 ; greater than zero (value)
79 177777 .iif gt min1 .byte 0
80 000000 .iif gt zero .byte 0
81 000001 001 .iif gt one .byte 1
82
83 177777 .iif g min1 .byte 0
84 000000 .iif g zero .byte 0
85 000001 001 .iif g one .byte 1
86
87 ; greater than or equal to zero (value)
88 177777 .iif ge min1 .byte 0
89 000000 001 .iif ge zero .byte 1
90 000001 001 .iif ge one .byte 1
91
92 ; less than zero (value)
93 177777 001 .iif lt min1 .byte 1
94 000000 .iif lt zero .byte 0
95 000001 .iif lt one .byte 0
96
97 177777 001 .iif l min1 .byte 1
98 000000 .iif l zero .byte 0
99 000001 .iif l one .byte 0
100
101 ; less than or equal to zero (value)
102 177777 001 .iif le min1 .byte 1
103 000000 001 .iif le zero .byte 1
104 000001 .iif le one .byte 0
105
106 ; expression with separating comma
107 000000 001 .iif z one - one, .byte 1
108 000000 .iif nz one - one, .byte 0
109 000001 001 .iif nz 2 - one, .byte 1
110
111 ; labels
112 000000 001 .iif z zero, lab1: .byte 1
113 000001 001 .iif nz one, lab2: .byte 1
114
115 ; multiline conditions
116 000001 .if ne one
117 000040 001 .byte 1
118 .iff
119 .byte 0
120 .ift
121 000041 001 .byte 1
122 .iftf
123 000042 001 .byte 1
124 .endc
125
126 000001 .if eq one
127 .byte 0
128 .iff
129 000043 001 .byte 1
130 .ift
131 .byte 0
132 .iftf
133 000044 001 .byte 1
134 .endc
135
136 ; errors
test-if.mac:137: ***ERROR Missing .(I)IF condition
137 .iif
test-if.mac:138: ***ERROR Missing .(I)IF condition
138 .iif 0
test-if.mac:139: ***ERROR Missing .(I)IF condition
139 .iif 1
test-if.mac:140: ***ERROR Bad .IF expression
140 000000 .iif undefd
test-if.mac:141: ***ERROR Bad .IF expression
141 000000 .iif zero
test-if.mac:142: ***ERROR Bad .IF expression
142 000000 .iif one
test-if.mac:143: ***ERROR Bad .IF expression
143 000000 .iif z
143
Symbol table
. 000045R 001 DEFD2 = 000003 LAB2 000037R 001 ONE = 000001
DEFD = 000002 LAB1 000036R 001 MIN1 = 177777 ZERO = 000000
Program sections:
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
000045 001 (RW,I,LCL,REL,CON,NOSAV)