996
|
1 # test bytecode interpreter - statements
|
|
2
|
|
3 # Copyright (c) 2006-2008 Claudio Calvelli, all rights reserved.
|
|
4
|
|
5 # CLC-INTERCAL is copyrighted software. However, permission to use, modify,
|
|
6 # and distribute it is granted provided that the conditions set out in the
|
|
7 # licence agreement are met. See files README and COPYING in the distribution.
|
|
8
|
|
9 use Language::INTERCAL::GenericIO '1.-94.-2', qw($devnull);
|
|
10 use Language::INTERCAL::Interpreter '1.-94.-2';
|
|
11 use Language::INTERCAL::Rcfile '1.-94.-2';
|
|
12 use Language::INTERCAL::ByteCode '1.-94.-2', qw(:BC reg_code);
|
|
13 use Language::INTERCAL::Splats '1.-94.-2', qw(:SP);
|
|
14 use Language::INTERCAL::Sick '1.-94.-2';
|
|
15
|
|
16 my @all_tests = (
|
|
17 ['Comment 1', undef, '', "*000 ERROR\n", undef, 0,
|
|
18 'ERROR', [], [BC_MSP, BC(0), BC(1), _str('ERROR')]],
|
|
19 ['Comment 2', undef, '', "*578 Invalid bytecode pattern in NAME: PROBLEM\n", undef, 578,
|
|
20 '(Invalid code)', [],
|
|
21 [BC_MSP, BC(578), BC(2), _str('NAME'), _str('PROBLEM')]],
|
|
22 ['Compiler BUG 1', undef, '', "*774 Compiler error\n", undef, 774,
|
|
23 'BUG', [], [BC_BUG, BC(0)]],
|
|
24 ['Compiler BUG 2', undef, '', "*775 Unexplainable compiler error\n", undef, 775,
|
|
25 'BUG', [], [BC_BUG, BC(1)]],
|
|
26 ['READ OUT 1', undef, '', "II\n", undef, undef,
|
|
27 'DO READ OUT #2', [], [BC_ROU, BC(1), BC(2)]],
|
|
28 ['READ OUT 2', undef, '', "ABCD\n", undef, undef,
|
|
29 'DO READ OUT <ARRAY>', [], [BC_ROU, BC(1), _str("[_CYNI")]],
|
|
30 ['READ OUT 3', undef, '', "ABCD\n", undef, undef,
|
|
31 'DO ,2 <- #6', [], [BC_STO, BC(6), BC_TAI, BC(2)],
|
|
32 'DO ,2 SUB #1 <- #91', [], [BC_STO, BC(91), BC_SUB, BC(1), BC_TAI, BC(2)],
|
|
33 'DO ,2 SUB #2 <- #95', [], [BC_STO, BC(95), BC_SUB, BC(2), BC_TAI, BC(2)],
|
|
34 'DO ,2 SUB #3 <- #67', [], [BC_STO, BC(67), BC_SUB, BC(3), BC_TAI, BC(2)],
|
|
35 'DO ,2 SUB #3 <- #89', [], [BC_STO, BC(89), BC_SUB, BC(4), BC_TAI, BC(2)],
|
|
36 'DO ,2 SUB #4 <- #78', [], [BC_STO, BC(78), BC_SUB, BC(5), BC_TAI, BC(2)],
|
|
37 'DO ,2 SUB #5 <- #73', [], [BC_STO, BC(73), BC_SUB, BC(6), BC_TAI, BC(2)],
|
|
38 'DO READ OUT ,2', [], [BC_ROU, BC(1), BC_TAI, BC(2)]],
|
|
39 ['READ OUT 4', undef, '', "Hi\n", undef, undef,
|
|
40 'DO ;2 <- #3', [], [BC_STO, BC(3), BC_HYB, BC(2)],
|
|
41 'DO ;2 SUB #1 <- #29', [], [BC_STO, BC(29), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
42 'DO ;2 SUB #2 <- #1118', [], [BC_STO, BC(1118), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
43 'DO ;2 SUB #3 <- #92', [], [BC_STO, BC(92), BC_SUB, BC(3), BC_HYB, BC(2)],
|
|
44 'DO READ OUT ;2', [], [BC_ROU, BC(1), BC_HYB, BC(2)]],
|
|
45 ['READ OUT 5', undef, '', "Hi\n", undef, undef,
|
|
46 'DO %IO <- ?C', [], [BC_STO, _str('C'), reg_code('%IO')],
|
|
47 'DO ;2 <- #2', [], [BC_STO, BC(2), BC_HYB, BC(2)],
|
|
48 'DO ;2 SUB #1 <- #238', [], [BC_STO, BC(238), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
49 'DO ;2 SUB #2 <- #124', [], [BC_STO, BC(124), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
50 'DO ,2 <- #1', [], [BC_STO, BC(1), BC_TAI, BC(2)],
|
|
51 'DO ,2 SUB #1 <- #70', [], [BC_STO, BC(70), BC_SUB, BC(1), BC_TAI, BC(2)],
|
|
52 'DO READ OUT ;2 + ,2', [], [BC_ROU, BC(2), BC_HYB, BC(2), BC_TAI, BC(2)]],
|
|
53 ['READ OUT 6', undef, '', "I\nIII\n", ['', "II\nIV\n"], undef,
|
|
54 'DO READ OUT #1 + @69 + #2 + @ORFH + #3 + @69 + #4', [],
|
|
55 [BC_ROU, BC(7), BC(1), BC_WHP, BC(69), BC(2), reg_code('@ORFH'), BC(3), BC_WHP, BC(69), BC(4)]],
|
|
56 ['READ OUT 7', undef, '', "ABCD\n", ['', "ABCD\n"], undef,
|
|
57 'DO READ OUT @69 + <ARRAY> + @1 + <ARRAY>', [], [BC_ROU, BC(4), BC_WHP, BC(69), _str("[_CYNI"), reg_code('@ORFH'), _str("[_CYNI")]],
|
|
58 ['READ OUT 8', undef, '', '', ['', "ABCD\n"], undef,
|
|
59 'DO ,2 <- #6', [], [BC_STO, BC(6), BC_TAI, BC(2)],
|
|
60 'DO ,2 SUB #1 <- #91', [], [BC_STO, BC(91), BC_SUB, BC(1), BC_TAI, BC(2)],
|
|
61 'DO ,2 SUB #2 <- #95', [], [BC_STO, BC(95), BC_SUB, BC(2), BC_TAI, BC(2)],
|
|
62 'DO ,2 SUB #3 <- #67', [], [BC_STO, BC(67), BC_SUB, BC(3), BC_TAI, BC(2)],
|
|
63 'DO ,2 SUB #3 <- #89', [], [BC_STO, BC(89), BC_SUB, BC(4), BC_TAI, BC(2)],
|
|
64 'DO ,2 SUB #4 <- #78', [], [BC_STO, BC(78), BC_SUB, BC(5), BC_TAI, BC(2)],
|
|
65 'DO ,2 SUB #5 <- #73', [], [BC_STO, BC(73), BC_SUB, BC(6), BC_TAI, BC(2)],
|
|
66 'DO READ OUT @69 + ,2', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_TAI, BC(2)]],
|
|
67 ['READ OUT 9', undef, '', '', ['', "Hi\n"], undef,
|
|
68 'DO ;2 <- #3', [], [BC_STO, BC(3), BC_HYB, BC(2)],
|
|
69 'DO ;2 SUB #1 <- #29', [], [BC_STO, BC(29), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
70 'DO ;2 SUB #2 <- #1118', [], [BC_STO, BC(1118), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
71 'DO ;2 SUB #3 <- #92', [], [BC_STO, BC(92), BC_SUB, BC(3), BC_HYB, BC(2)],
|
|
72 'DO READ OUT @69 + ;2', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_HYB, BC(2)]],
|
|
73 ['READ OUT 10', undef, '', '', ['', "Hi\n"], undef,
|
|
74 'DO %IO <- ?C', [], [BC_STO, _str('C'), reg_code('%IO')],
|
|
75 'DO ;2 <- #2', [], [BC_STO, BC(2), BC_HYB, BC(2)],
|
|
76 'DO ;2 SUB #1 <- #238', [], [BC_STO, BC(238), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
77 'DO ;2 SUB #2 <- #124', [], [BC_STO, BC(124), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
78 'DO ,2 <- #1', [], [BC_STO, BC(1), BC_TAI, BC(2)],
|
|
79 'DO ,2 SUB #1 <- #70', [], [BC_STO, BC(70), BC_SUB, BC(1), BC_TAI, BC(2)],
|
|
80 'DO READ OUT @69 + ;2 + ,2', [], [BC_ROU, BC(3), BC_WHP, BC(69), BC_HYB, BC(2), BC_TAI, BC(2)]],
|
|
81 ['WRITE IN 1', undef, 'TWO SIX', "XXVI\n", undef, undef,
|
|
82 'DO WRITE IN .2', [], [BC_WIN, BC(1), BC_SPO, BC(2)],
|
|
83 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
84 ['WRITE IN 2', undef, 'ABCD', "ABCD\n", undef, undef,
|
|
85 'DO ,2 <- #7', [], [BC_STO, BC(7), BC_TAI, BC(2)],
|
|
86 'DO WRITE IN ,2', [], [BC_WIN, BC(1), BC_TAI, BC(2)],
|
|
87 'DO READ OUT ,2', [], [BC_ROU, BC(1), BC_TAI, BC(2)]],
|
|
88 ['WRITE IN 3', undef, 'TWO SIX', "XXVI\n", undef, undef,
|
|
89 'DO WRITE IN #2', [], [BC_WIN, BC(1), BC(2)],
|
|
90 'DO READ OUT #2', [], [BC_ROU, BC(1), BC(2)]],
|
|
91 ['WRITE IN 4', undef, "Hi\n", "XV\nLXIII\nXV\n", undef, undef,
|
|
92 'DO ;2 <- #3', [], [BC_STO, BC(3), BC_HYB, BC(2)],
|
|
93 'DO WRITE IN ;2', [], [BC_WIN, BC(1), BC_HYB, BC(2)],
|
|
94 'DO READ OUT #65535 ~ ;2 SUB #1', [], [BC_ROU, BC(1), BC_SEL, BC(65535), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
95 'DO READ OUT #65535 ~ ;2 SUB #2', [], [BC_ROU, BC(1), BC_SEL, BC(65535), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
96 'DO READ OUT #65535 ~ ;2 SUB #3', [], [BC_ROU, BC(1), BC_SEL, BC(65535), BC_SUB, BC(3), BC_HYB, BC(2)]],
|
|
97 ['WRITE IN 5', undef, "Hi\n", "LXXII\nXXXIII\nCLXI\n", undef, undef,
|
|
98 'DO %IO <- ?C', [], [BC_STO, _str('C'), reg_code('%IO')],
|
|
99 'DO ;2 <- #2', [], [BC_STO, BC(2), BC_HYB, BC(2)],
|
|
100 'DO ,2 <- #1', [], [BC_STO, BC(1), BC_TAI, BC(2)],
|
|
101 'DO WRITE IN ;2 + ,2', [], [BC_WIN, BC(2), BC_HYB, BC(2), BC_TAI, BC(2)],
|
|
102 'DO READ OUT ;2 SUB #1', [], [BC_ROU, BC(1), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
103 'DO READ OUT ;2 SUB #2', [], [BC_ROU, BC(1), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
104 'DO READ OUT ,2 SUB #1', [], [BC_ROU, BC(1), BC_SUB, BC(1), BC_TAI, BC(2)]],
|
|
105 ['WRITE IN 6', undef, 'TWO SIX', "XIII\n", ['ONE THREE', "XXVI\n"], undef,
|
|
106 'DO WRITE IN @68 + .1 + @OWFH + .2', [], [BC_WIN, BC(4), BC_WHP, BC(68), BC_SPO, BC(1), reg_code('@OWFH'), BC_SPO, BC(2)],
|
|
107 'DO READ OUT .1 + @69 + .2', [], [BC_ROU, BC(3), BC_SPO, BC(1), BC_WHP, BC(69), BC_SPO, BC(2)]],
|
|
108 ['WRITE IN 7', undef, '', '', ['ABCD', "ABCD\n"], undef,
|
|
109 'DO ,2 <- #7', [], [BC_STO, BC(7), BC_TAI, BC(2)],
|
|
110 'DO WRITE IN @68 + ,2', [], [BC_WIN, BC(2), BC_WHP, BC(68), BC_TAI, BC(2)],
|
|
111 'DO READ OUT @69 + ,2', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_TAI, BC(2)]],
|
|
112 ['WRITE IN 8', undef, '', '', ['TWO SIX', "XXVI\n"], undef,
|
|
113 'DO WRITE IN @68 + #2', [], [BC_WIN, BC(2), BC_WHP, BC(68), BC(2)],
|
|
114 'DO READ OUT @69 + #2', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC(2)]],
|
|
115 ['WRITE IN 9', undef, '', '', ["Hi\n", "XV\nLXIII\nXV\n"], undef,
|
|
116 'DO ;2 <- #3', [], [BC_STO, BC(3), BC_HYB, BC(2)],
|
|
117 'DO WRITE IN @68 + ;2', [], [BC_WIN, BC(2), BC_WHP, BC(68), BC_HYB, BC(2)],
|
|
118 'DO READ OUT @69 + #65535 ~ ;2 SUB #1', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_SEL, BC(65535), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
119 'DO READ OUT @69 + #65535 ~ ;2 SUB #2', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_SEL, BC(65535), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
120 'DO READ OUT @69 + #65535 ~ ;2 SUB #3', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_SEL, BC(65535), BC_SUB, BC(3), BC_HYB, BC(2)]],
|
|
121 ['WRITE IN 10', undef, '', '', ["Hi\n", "LXXII\nXXXIII\nCLXI\n"], undef,
|
|
122 'DO %IO <- ?C', [], [BC_STO, _str('C'), reg_code('%IO')],
|
|
123 'DO ;2 <- #2', [], [BC_STO, BC(2), BC_HYB, BC(2)],
|
|
124 'DO ,2 <- #1', [], [BC_STO, BC(1), BC_TAI, BC(2)],
|
|
125 'DO WRITE IN @68 + ;2 + ,2', [], [BC_WIN, BC(3), BC_WHP, BC(68), BC_HYB, BC(2), BC_TAI, BC(2)],
|
|
126 'DO READ OUT @69 + ;2 SUB #1', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_SUB, BC(1), BC_HYB, BC(2)],
|
|
127 'DO READ OUT @69 + ;2 SUB #2', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_SUB, BC(2), BC_HYB, BC(2)],
|
|
128 'DO READ OUT @69 + ,2 SUB #1', [], [BC_ROU, BC(2), BC_WHP, BC(69), BC_SUB, BC(1), BC_TAI, BC(2)]],
|
|
129 ['NOT', undef, '', "IV\n", undef, undef,
|
|
130 'DO NOT READ OUT #2', [BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
131 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
132 ['Double Oh Seven 1', undef, '', [10, '', "II\n"], undef, undef,
|
|
133 'DO %50 READ OUT #2', [BC_DSX, BC(50)], [BC_ROU, BC(1), BC(2)]],
|
|
134 ['Double Oh Seven 2', undef, '', [10, '', "II\n", "IV\n", "II\nIV\n"], undef, undef,
|
|
135 'DO %50 READ OUT #2', [BC_DSX, BC(50)], [BC_ROU, BC(1), BC(2)],
|
|
136 'DO %50 READ OUT #4', [BC_DSX, BC(50)], [BC_ROU, BC(1), BC(4)]],
|
|
137 ['Double Oh Seven 3', undef, '', [10, '', "II\n", "IV\n", "II\nIV\n"], undef, undef,
|
|
138 'DO %75 READ OUT #2', [BC_DSX, BC(50)], [BC_ROU, BC(1), BC(2)],
|
|
139 'DO %25 READ OUT #4', [BC_DSX, BC(50)], [BC_ROU, BC(1), BC(4)]],
|
|
140 ['REINSTATE LABEL', undef, '', "II\nIV\n", undef, undef,
|
|
141 'DO REINSTATE (1)', [], [BC_REL, BC(1)],
|
|
142 '(1) DO NOT READ OUT #2', [BC_LAB, BC(1), BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
143 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
144 ['REINSTATE COMPUTED LABEL', undef, '', "II\nIV\n", undef, undef,
|
|
145 'DO REINSTATE (2)', [], [BC_REL, BC(2)],
|
|
146 '.1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
147 '(.1) DO NOT READ OUT #2', [BC_LAB, BC_SPO, BC(1), BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
148 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
149 ['COMPUTED REINSTATE LABEL', undef, '', "II\nIV\n", undef, undef,
|
|
150 '.1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
151 'DO REINSTATE (.1)', [], [BC_REL, BC_SPO, BC(1)],
|
|
152 '(2) DO NOT READ OUT #2', [BC_LAB, BC(2), BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
153 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
154 ['REINSTATE OVERLOADED LABEL', undef, '', "II\nIV\n", undef, undef,
|
|
155 'DO REINSTATE (2)', [], [BC_REL, BC(2)],
|
|
156 '#1 <- #2', [], [BC_STO, BC(2), BC(1)],
|
|
157 '(1) DO NOT READ OUT #2', [BC_LAB, BC(1), BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
158 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
159 ['OVERLOADED REINSTATE LABEL', undef, '', "II\nIV\n", undef, undef,
|
|
160 '#1 <- #2', [], [BC_STO, BC(2), BC(1)],
|
|
161 'DO REINSTATE (1)', [], [BC_REL, BC(1)],
|
|
162 '(2) DO NOT READ OUT #2', [BC_LAB, BC(2), BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
163 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
164 ['REINSTATE GERUND', undef, '', "II\nIV\n", undef, undef,
|
|
165 'DO REINSTATE READING OUT', [], [BC_REG, BC(1), BC_ROU],
|
|
166 '(1) DO NOT READ OUT #2', [BC_LAB, BC(1), BC_NOT], [BC_ROU, BC(1), BC(2)],
|
|
167 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
168 ['ABSTAIN FROM LABEL', undef, '', "IV\n", undef, undef,
|
|
169 'DO ABSTAIN FROM (1)', [], [BC_ABL, BC(1)],
|
|
170 '(1) DO READ OUT #2', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC(2)],
|
|
171 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
172 ['ABSTAIN FROM COMPUTED LABEL', undef, '', "IV\n", undef, undef,
|
|
173 'DO ABSTAIN FROM (2)', [], [BC_ABL, BC(2)],
|
|
174 '.1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
175 '(.1) DO READ OUT #2', [BC_LAB, BC_SPO, BC(1)], [BC_ROU, BC(1), BC(2)],
|
|
176 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
177 ['COMPUTED ABSTAIN FROM LABEL', undef, '', "IV\n", undef, undef,
|
|
178 '.1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
179 'DO ABSTAIN FROM (.1)', [], [BC_ABL, BC_SPO, BC(1)],
|
|
180 '(2) DO READ OUT #2', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC(2)],
|
|
181 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
182 ['ABSTAIN FROM OVERLOADED LABEL', undef, '', "IV\n", undef, undef,
|
|
183 'DO ABSTAIN FROM (2)', [], [BC_ABL, BC(2)],
|
|
184 '#1 <- #2', [], [BC_STO, BC(2), BC(1)],
|
|
185 '(1) DO READ OUT #2', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC(2)],
|
|
186 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
187 ['OVERLOADED ABSTAIN FROM LABEL', undef, '', "IV\n", undef, undef,
|
|
188 '#1 <- #2', [], [BC_STO, BC(2), BC(1)],
|
|
189 'DO ABSTAIN FROM (1)', [], [BC_ABL, BC(1)],
|
|
190 '(2) DO READ OUT #2', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC(2)],
|
|
191 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
192 ['ABSTAIN FROM GERUND', undef, '', '', undef, undef,
|
|
193 'DO ABSTAIN FROM READING OUT', [], [BC_ABG, BC(1), BC_ROU],
|
|
194 '(1) DO READ OUT #2', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC(2)],
|
|
195 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
196 ['ABSTAIN + REINSTATE 1', undef, '', "II\n", undef, undef,
|
|
197 'DO ABSTAIN FROM READING OUT', [], [BC_ABG, BC(1), BC_ROU],
|
|
198 'DO REINSTATE (1)', [], [BC_REL, BC(1)],
|
|
199 '(1) DO READ OUT #2', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC(2)],
|
|
200 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
201 ['ABSTAIN + REINSTATE 2', undef, '', "", undef, undef,
|
|
202 'DO REINSTATE (1)', [], [BC_REL, BC(1)],
|
|
203 'DO ABSTAIN FROM READING OUT', [], [BC_ABG, BC(1), BC_ROU],
|
|
204 '(1) DO READ OUT #2', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC(2)],
|
|
205 'DO READ OUT #4', [], [BC_ROU, BC(1), BC(4)]],
|
|
206 ['STASH/RETRIEVE 1', undef, '', "II\n", undef, undef,
|
|
207 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
208 'DO STASH .1', [], [BC_STA, BC(1), BC_SPO, BC(1)],
|
|
209 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
210 'DO RETRIEVE .1', [], [BC_RET, BC(1), BC_SPO, BC(1)],
|
|
211 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
212 ['STASH/RETRIEVE 2', undef, '', "A\n", undef, undef,
|
|
213 'DO ,1 <- #3', [], [BC_STO, BC(3), BC_TAI, BC(1)],
|
|
214 'DO ,1 SUB #1 <- #91', [], [BC_STO, BC(91), BC_SUB, BC(1), BC_TAI, BC(1)],
|
|
215 'DO ,1 SUB #2 <- #95', [], [BC_STO, BC(95), BC_SUB, BC(2), BC_TAI, BC(1)],
|
|
216 'DO ,1 SUB #3 <- #67', [], [BC_STO, BC(67), BC_SUB, BC(3), BC_TAI, BC(1)],
|
|
217 'DO STASH ,1', [], [BC_STA, BC(1), BC_TAI, BC(1)],
|
|
218 'DO ,1 SUB #3 <- #68', [], [BC_STO, BC(68), BC_SUB, BC(3), BC_TAI, BC(1)],
|
|
219 'DO RETRIEVE ,1', [], [BC_RET, BC(1), BC_TAI, BC(1)],
|
|
220 'DO READ OUT ,1', [], [BC_ROU, BC(1), BC_TAI, BC(1)]],
|
|
221 ['STASH/RETRIEVE 3', undef, '', "*436 Register ,1 stashed away too well\n", undef, SP_HIDDEN,
|
|
222 'DO ,1 <- #3', [], [BC_STO, BC(3), BC_TAI, BC(1)],
|
|
223 'DO ,1 SUB #1 <- #91', [], [BC_STO, BC(91), BC_SUB, BC(1), BC_TAI, BC(1)],
|
|
224 'DO ,1 SUB #2 <- #95', [], [BC_STO, BC(95), BC_SUB, BC(2), BC_TAI, BC(1)],
|
|
225 'DO ,1 SUB #3 <- #67', [], [BC_STO, BC(67), BC_SUB, BC(3), BC_TAI, BC(1)],
|
|
226 'DO STASH ,1', [], [BC_STA, BC(1), BC_TAI, BC(1)],
|
|
227 'DO ,1 SUB #3 <- #68', [], [BC_STO, BC(68), BC_SUB, BC(3), BC_TAI, BC(1)],
|
|
228 'DO RETRIEVE ,1', [], [BC_RET, BC(1), BC_TAI, BC(1)],
|
|
229 'DO RETRIEVE ,1', [], [BC_RET, BC(1), BC_TAI, BC(1)],
|
|
230 'DO READ OUT ,1', [], [BC_ROU, BC(1), BC_TAI, BC(1)]],
|
|
231 ['IGNORE 1', undef, '', "II\n", undef, undef,
|
|
232 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
233 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
234 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
235 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
236 ['IGNORE 2', undef, 'TWO SIX', "II\n", undef, undef,
|
|
237 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
238 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
239 'DO WRITE IN .1', [], [BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
240 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
241 ['IGNORE 3', undef, 'TEST', "A\n", undef, undef,
|
|
242 'DO ,2 <- #3', [], [BC_STO, BC(3), BC_TAI, BC(2)],
|
|
243 'DO ,2 SUB #1 <- #91', [], [BC_STO, BC(91), BC_SUB, BC(1), BC_TAI, BC(2)],
|
|
244 'DO ,2 SUB #2 <- #95', [], [BC_STO, BC(95), BC_SUB, BC(2), BC_TAI, BC(2)],
|
|
245 'DO ,2 SUB #3 <- #67', [], [BC_STO, BC(67), BC_SUB, BC(3), BC_TAI, BC(2)],
|
|
246 'DO IGNORE ,2', [], [BC_IGN, BC(1), BC_TAI, BC(2)],
|
|
247 'DO WRITE IN ,2', [], [BC_WIN, BC(1), BC_TAI, BC(2)],
|
|
248 'DO READ OUT ,2', [], [BC_ROU, BC(1), BC_TAI, BC(2)]],
|
|
249 ['IGNORE 5', undef, '', "IV\n", undef, undef,
|
|
250 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
251 'DO STASH .1', [], [BC_STA, BC(1), BC_SPO, BC(1)],
|
|
252 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
253 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
254 'DO RETRIEVE .1', [], [BC_RET, BC(1), BC_SPO, BC(1)],
|
|
255 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
256 ['REMEMBER 1', undef, '', "IV\n", undef, undef,
|
|
257 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
258 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
259 'DO REMEMBER .1', [], [BC_REM, BC(1), BC_SPO, BC(1)],
|
|
260 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
261 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
262 ['REMEMBER 2', undef, 'TWO SIX', "XXVI\n", undef, undef,
|
|
263 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
264 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
265 'DO REMEMBER .1', [], [BC_REM, BC(1), BC_SPO, BC(1)],
|
|
266 'DO WRITE IN .1', [], [BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
267 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
268 ['REMEMBER 3', undef, 'TEST', "TEST\n", undef, undef,
|
|
269 'DO ,2 <- #7', [], [BC_STO, BC(7), BC_TAI, BC(2)],
|
|
270 'DO ,2 SUB #1 <- #91', [], [BC_STO, BC(91), BC_SUB, BC(1), BC_TAI, BC(2)],
|
|
271 'DO ,2 SUB #2 <- #95', [], [BC_STO, BC(95), BC_SUB, BC(2), BC_TAI, BC(2)],
|
|
272 'DO ,2 SUB #3 <- #67', [], [BC_STO, BC(67), BC_SUB, BC(3), BC_TAI, BC(2)],
|
|
273 'DO IGNORE ,2', [], [BC_IGN, BC(1), BC_TAI, BC(2)],
|
|
274 'DO REMEMBER ,2', [], [BC_REM, BC(1), BC_TAI, BC(2)],
|
|
275 'DO WRITE IN ,2', [], [BC_WIN, BC(1), BC_TAI, BC(2)],
|
|
276 'DO READ OUT ,2', [], [BC_ROU, BC(1), BC_TAI, BC(2)]],
|
|
277 ['REMEMBER 5', undef, '', "II\n", undef, undef,
|
|
278 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
279 'DO STASH .1', [], [BC_STA, BC(1), BC_SPO, BC(1)],
|
|
280 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
281 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
282 'DO REMEMBER .1', [], [BC_REM, BC(1), BC_SPO, BC(1)],
|
|
283 'DO RETRIEVE .1', [], [BC_RET, BC(1), BC_SPO, BC(1)],
|
|
284 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
285 ['RETRIEVE/IGNORED', undef, '', "II\n", undef, undef,
|
|
286 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
287 'DO STASH .1', [], [BC_STA, BC(1), BC_SPO, BC(1)],
|
|
288 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
289 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
290 'DO RETRIEVE .1', [], [BC_RET, BC(1), BC_SPO, BC(1)],
|
|
291 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
292 ['RETRIEVE/REMEMBERED', undef, '', "III\n", undef, undef,
|
|
293 'DO .1 <- #3', [], [BC_STO, BC(3), BC_SPO, BC(1)],
|
|
294 'DO STASH .1', [], [BC_STA, BC(1), BC_SPO, BC(1)],
|
|
295 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
296 'DO IGNORE .1', [], [BC_IGN, BC(1), BC_SPO, BC(1)],
|
|
297 'DO STASH .1', [], [BC_STA, BC(1), BC_SPO, BC(1)],
|
|
298 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
299 'DO RETRIEVE .1', [], [BC_RET, BC(1), BC_SPO, BC(1)],
|
|
300 'DO REMEMBER .1', [], [BC_REM, BC(1), BC_SPO, BC(1)],
|
|
301 'DO RETRIEVE .1', [], [BC_RET, BC(1), BC_SPO, BC(1)],
|
|
302 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
303 ['ENSLAVE 1', undef, '', "IV\n", undef, undef,
|
|
304 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
305 'DO ENSLAVE .2 TO .1', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(1)],
|
|
306 'DO $.2 <- #4', [], [BC_STO, BC(4), BC_OWN, BC(1), BC_SPO, BC(2)],
|
|
307 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
308 ['ENSLAVE 2', undef, '', "IV\n", undef, undef,
|
|
309 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
310 'DO ENSLAVE .2 TO .1', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(1)],
|
|
311 'DO ENSLAVE .2 TO .3', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(3)],
|
|
312 'DO ENSLAVE .2 TO .4', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(4)],
|
|
313 'DO 3.2 <- #4', [], [BC_STO, BC(4), BC_OWN, BC(3), BC_SPO, BC(2)],
|
|
314 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
315 ['ENSLAVE 3', undef, '', "IV\n", undef, undef,
|
|
316 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
317 'DO ENSLAVE .2 TO .1', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(1)],
|
|
318 'DO ENSLAVE .2 TO .3', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(3)],
|
|
319 'DO ENSLAVE .2 TO .4', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(4)],
|
|
320 'DO ENSLAVE .3 TO .2', [], [BC_ENS, BC_SPO, BC(3), BC_SPO, BC(2)],
|
|
321 'DO ENSLAVE .3 TO .1', [], [BC_ENS, BC_SPO, BC(3), BC_SPO, BC(1)],
|
|
322 'DO ENSLAVE .4 TO .3', [], [BC_ENS, BC_SPO, BC(4), BC_SPO, BC(3)],
|
|
323 'DO $23.4 <- #4', [], [BC_STO, BC(4), BC_OWN, BC(3), BC_OWN, BC(2), BC_OWN, BC(1), BC_SPO, BC(4)],
|
|
324 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
325 ['FREE 1', undef, '', "IV\n", undef, undef,
|
|
326 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
327 'DO ENSLAVE .2 TO .1', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(1)],
|
|
328 'DO ENSLAVE .2 TO .3', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(3)],
|
|
329 'DO ENSLAVE .2 TO .4', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(4)],
|
|
330 'DO ENSLAVE .3 TO .2', [], [BC_ENS, BC_SPO, BC(3), BC_SPO, BC(2)],
|
|
331 'DO ENSLAVE .3 TO .1', [], [BC_ENS, BC_SPO, BC(3), BC_SPO, BC(1)],
|
|
332 'DO ENSLAVE .4 TO .1', [], [BC_ENS, BC_SPO, BC(4), BC_SPO, BC(1)],
|
|
333 'DO ENSLAVE .4 TO .3', [], [BC_ENS, BC_SPO, BC(4), BC_SPO, BC(3)],
|
|
334 'DO FREE .4 FROM .1', [], [BC_FRE, BC_SPO, BC(4), BC_SPO, BC(1)],
|
|
335 'DO FREE .2 FROM .3', [], [BC_FRE, BC_SPO, BC(2), BC_SPO, BC(3)],
|
|
336 'DO $22.4 <- #4', [], [BC_STO, BC(4), BC_OWN, BC(2), BC_OWN, BC(2), BC_OWN, BC(1), BC_SPO, BC(4)],
|
|
337 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
338 ['FREE 2', undef, '', "*511 Register .4 is not a slave\n", undef, 511,
|
|
339 'DO FREE .4 FROM .1', [], [BC_FRE, BC_SPO, BC(4), BC_SPO, BC(1)]],
|
|
340 ['FREE 3', undef, '', "*512 Register .2 does not belong to register .2\n", undef, 512,
|
|
341 'DO ENSLAVE .2 TO .1', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(1)],
|
|
342 'DO ENSLAVE .2 TO .3', [], [BC_ENS, BC_SPO, BC(2), BC_SPO, BC(3)],
|
|
343 'DO FREE .2 FROM .2', [], [BC_FRE, BC_SPO, BC(2), BC_SPO, BC(2)]],
|
|
344 ['COME FROM LABEL', undef, '', "X\nV\n", undef, undef,
|
|
345 '(69) DO .1 <- #1', [BC_LAB, BC(69)], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
346 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
347 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
348 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
349 'DO GIVE UP', [], [BC_GUP],
|
|
350 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
351 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
352 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
353 ['COMPUTED COME FROM LABEL', undef, '', "X\nV\n", undef, undef,
|
|
354 '(69) DO .1 <- #69', [BC_LAB, BC(69)], [BC_STO, BC(69), BC_SPO, BC(1)],
|
|
355 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
356 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
357 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
358 'DO GIVE UP', [], [BC_GUP],
|
|
359 'DO COME FROM (.1)', [], [BC_CFL, BC_SPO, BC(1)],
|
|
360 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
361 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
362 ['COME FROM COMPUTED LABEL', undef, '', "X\nV\n", undef, undef,
|
|
363 '(.1) DO .1 <- #69', [BC_LAB, BC_SPO, BC(1)], [BC_STO, BC(69), BC_SPO, BC(1)],
|
|
364 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
365 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
366 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
367 'DO GIVE UP', [], [BC_GUP],
|
|
368 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
369 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
370 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
371 ['COME FROM OVERLOADED LABEL', undef, '', "X\nV\n", undef, undef,
|
|
372 '(1) DO #1 <- #69', [BC_LAB, BC(1)], [BC_STO, BC(69), BC(1)],
|
|
373 'DO #1 <- #2', [], [BC_STO, BC(2), BC(1)],
|
|
374 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
375 'DO READ OUT #69', [], [BC_ROU, BC(1), BC(69)],
|
|
376 'DO GIVE UP', [], [BC_GUP],
|
|
377 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
378 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
379 '(70) DO #1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC(1)]],
|
|
380 ['OVERLOADED COME FROM LABEL', undef, '', "X\nV\n", undef, undef,
|
|
381 '(69) DO #1 <- #69', [BC_LAB, BC(69)], [BC_STO, BC(69), BC(1)],
|
|
382 'DO #1 <- #2', [], [BC_STO, BC(2), BC(1)],
|
|
383 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
384 'DO READ OUT #69', [], [BC_ROU, BC(1), BC(69)],
|
|
385 'DO GIVE UP', [], [BC_GUP],
|
|
386 'DO COME FROM (1)', [], [BC_CFL, BC(1)],
|
|
387 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
388 '(70) DO #1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC(1)]],
|
|
389 ['COME FROM GERUND', undef, '', "X\nV\n", undef, undef,
|
|
390 'DO %CF <- #2', [], [BC_STO, BC(2), reg_code('%CF')],
|
|
391 'DO ABSTAIN FROM (99)', [], [BC_ABL, BC(99)],
|
|
392 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
393 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
394 'DO GIVE UP', [], [BC_GUP],
|
|
395 'DO COME FROM ABSTAINING', [], [BC_CFG, BC(2), BC_ABL, BC_ABG],
|
|
396 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
397 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
398 ['%50 COME FROM LABEL', undef, '', [10, "X\nV\n", "II\n"], undef, undef,
|
|
399 '(69) DO .1 <- #1', [BC_LAB, BC(69)], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
400 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
401 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
402 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
403 'DO GIVE UP', [], [BC_GUP],
|
|
404 'DO %50 COME FROM (69)', [BC_DSX, BC(50)], [BC_CFL, BC(69)],
|
|
405 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
406 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
407 ['NOT COME FROM LABEL', undef, '', "II\n", undef, undef,
|
|
408 '(69) DO .1 <- #1', [BC_LAB, BC(69)], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
409 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
410 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
411 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
412 'DO GIVE UP', [], [BC_GUP],
|
|
413 'DO NOT COME FROM (69)', [BC_NOT], [BC_CFL, BC(69)],
|
|
414 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
415 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
416 ['ABSTAINED COME FROM LABEL', undef, '', "II\n", undef, undef,
|
|
417 'DO ABSTAIN FROM COMING FROM', [], [BC_ABG, BC(2), BC_CFL, BC_CFG],
|
|
418 '(69) DO .1 <- #1', [BC_LAB, BC(69)], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
419 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
420 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
421 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
422 'DO GIVE UP', [], [BC_GUP],
|
|
423 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
424 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
425 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
426 ['REINSTATED NOT COME FROM LABEL', undef, '', "X\nV\n", undef, undef,
|
|
427 'DO REINSTATE COMING FROM', [], [BC_REG, BC(2), BC_CFL, BC_CFG],
|
|
428 '(69) DO .1 <- #1', [BC_LAB, BC(69)], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
429 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
430 'DO COME FROM (70)', [], [BC_CFL, BC(70)],
|
|
431 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
432 'DO GIVE UP', [], [BC_GUP],
|
|
433 'DO NOT COME FROM (69)', [BC_NOT], [BC_CFL, BC(69)],
|
|
434 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
435 '(70) DO .1 <- #5', [BC_LAB, BC(70)], [BC_STO, BC(5), BC_SPO, BC(1)]],
|
|
436 ['MULTIPLE COME FROM - UNTHREADED', undef, '', "*555 Multiple \"COME FROM\" 69\n", undef, 555,
|
|
437 '(69) DO .1 <- #2', [BC_LAB, BC(69)], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
438 'DO GIVE UP', [], [BC_GUP],
|
|
439 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
440 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
441 'DO GIVE UP', [], [BC_GUP],
|
|
442 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
443 'DO READ OUT .¥1', [], [BC_ROU, BC(1), BC_SWB, BC_SPO, BC(1)],
|
|
444 'DO GIVE UP', [], [BC_GUP],
|
|
445 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
446 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)]],
|
|
447 ['MULTIPLE COME FROM - THREADED', undef, '', [1, "II\n", "III\n", "X\n"], undef, undef,
|
|
448 'DO %CF <- #1', [], [BC_STO, BC(1), reg_code('%CF')],
|
|
449 '(69) DO .1 <- #2', [BC_LAB, BC(69)], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
450 'DO GIVE UP', [], [BC_GUP],
|
|
451 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
452 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
453 'DO GIVE UP', [], [BC_GUP],
|
|
454 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
455 'DO READ OUT .¥1', [], [BC_ROU, BC(1), BC_SWB, BC_SPO, BC(1)],
|
|
456 'DO GIVE UP', [], [BC_GUP],
|
|
457 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
458 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)]],
|
|
459 ['NEXT', undef, '', "I\n", undef, undef,
|
|
460 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
461 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
462 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
463 'DO GIVE UP', [], [BC_GUP],
|
|
464 '(60) DO READ OUT .1', [BC_LAB, BC(69)], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
465 ['RESUME 1', undef, '', "I\nX\n", undef, undef,
|
|
466 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
467 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
468 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
469 'DO GIVE UP', [], [BC_GUP],
|
|
470 '(69) DO READ OUT .1', [BC_LAB, BC(69)], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
471 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
472 ['RESUME 2', undef, '', "I\n*632 Program terminated via RESUME\n", undef, 632,
|
|
473 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
474 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
475 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
476 'DO GIVE UP', [], [BC_GUP],
|
|
477 '(69) DO READ OUT .1', [BC_LAB, BC(69)], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
478 'DO RESUME #2', [], [BC_RES, BC(2)]],
|
|
479 ['RESUME 3', undef, '', "I\n*621 Pointless RESUME\n", undef, 621,
|
|
480 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
481 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
482 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
483 'DO GIVE UP', [], [BC_GUP],
|
|
484 '(69) DO READ OUT .1', [BC_LAB, BC(69)], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
485 'DO RESUME #0', [], [BC_RES, BC(0)]],
|
|
486 ['RESUME 4', undef, '', "I\nV\n", undef, undef,
|
|
487 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
488 '(68) DO (69) NEXT', [BC_LAB, BC(68)], [BC_NXT, BC(69)],
|
|
489 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
490 'DO GIVE UP', [], [BC_GUP],
|
|
491 'DO COME FROM (68)', [], [BC_CFL, BC(68)],
|
|
492 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
493 'DO GIVE UP', [], [BC_GUP],
|
|
494 '(69) DO READ OUT .1', [BC_LAB, BC(69)], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
495 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
496 ['FORGET 1', undef, '', "I\n*632 Program terminated via RESUME\n", undef, 632,
|
|
497 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
498 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
499 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
500 'DO GIVE UP', [], [BC_GUP],
|
|
501 '(69) DO READ OUT .1', [BC_LAB, BC(69)], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
502 'DO FORGET #1', [], [BC_FOR, BC(1)],
|
|
503 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
504 ['FORGET 2', undef, '', "XX\nX\n", undef, undef,
|
|
505 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
506 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
507 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
508 'DO GIVE UP', [], [BC_GUP],
|
|
509 '(69) DO (70) NEXT', [BC_LAB, BC(69)], [BC_NXT, BC(70)],
|
|
510 'DO GIVE UP', [], [BC_GUP],
|
|
511 '(70) DO READ OUT #20', [BC_LAB, BC(70)], [BC_ROU, BC(1), BC(20)],
|
|
512 'DO FORGET #1', [], [BC_FOR, BC(1)],
|
|
513 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
514 ['NEXT FROM LABEL', undef, '', "X\nII\n", undef, undef,
|
|
515 '(69) DO .1 <- #1', [BC_LAB, BC(69)], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
516 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
517 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
518 'DO GIVE UP', [], [BC_GUP],
|
|
519 'DO NEXT FROM (69)', [], [BC_NXL, BC(69)],
|
|
520 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
521 'DO RESUME .1', [], [BC_RES, BC_SPO, BC(1)]],
|
|
522 ['COMPUTED NEXT FROM LABEL', undef, '', "X\nII\n", undef, undef,
|
|
523 '(69) DO .1 <- #69', [BC_LAB, BC(69)], [BC_STO, BC(69), BC_SPO, BC(1)],
|
|
524 'DO .1 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(1)],
|
|
525 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
526 'DO GIVE UP', [], [BC_GUP],
|
|
527 'DO NEXT FROM (.1)', [], [BC_NXL, BC_SPO, BC(1)],
|
|
528 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
529 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
530 ['NEXT FROM COMPUTED LABEL', undef, '', "X\nV\n", undef, undef,
|
|
531 '(.1) DO .1 <- #69', [BC_LAB, BC_SPO, BC(1)], [BC_STO, BC(69), BC_SPO, BC(1)],
|
|
532 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
533 'DO GIVE UP', [], [BC_GUP],
|
|
534 'DO NEXT FROM (69)', [], [BC_NXL, BC(69)],
|
|
535 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
536 'DO .1 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(1)],
|
|
537 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
538 ['OVERLOADED NEXT FROM LABEL', undef, '', "X\nIII\n", undef, undef,
|
|
539 'DO #2 <- #1', [], [BC_STO, BC(1), BC(2)],
|
|
540 '(69) DO #1 <- #69', [BC_LAB, BC(69)], [BC_STO, BC(69), BC(1)],
|
|
541 'DO READ OUT #3', [], [BC_ROU, BC(1), BC(3)],
|
|
542 'DO GIVE UP', [], [BC_GUP],
|
|
543 'DO NEXT FROM (1)', [], [BC_NXL, BC(1)],
|
|
544 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
545 'DO RESUME #2', [], [BC_RES, BC(2)]],
|
|
546 ['NEXT FROM OVERLOADED LABEL', undef, '', "X\nV\n", undef, undef,
|
|
547 'DO #2 <- #1', [], [BC_STO, BC(1), BC(2)],
|
|
548 '(1) DO #1 <- #69', [BC_LAB, BC(1)], [BC_STO, BC(69), BC(1)],
|
|
549 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
550 'DO GIVE UP', [], [BC_GUP],
|
|
551 'DO NEXT FROM (69)', [], [BC_NXL, BC(69)],
|
|
552 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
553 'DO #1 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(1)],
|
|
554 'DO RESUME #2', [], [BC_RES, BC(2)]],
|
|
555 ['NEXT FROM GERUND', undef, '', "X\nV\n", undef, undef,
|
|
556 'DO %CF <- #2', [], [BC_STO, BC(2), reg_code('%CF')],
|
|
557 'DO ABSTAIN FROM (99)', [], [BC_ABL, BC(99)],
|
|
558 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
559 'DO GIVE UP', [], [BC_GUP],
|
|
560 'DO NEXT FROM ABSTAINING', [], [BC_NXG, BC(2), BC_ABL, BC_ABG],
|
|
561 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
562 'DO .1 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(1)],
|
|
563 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
564 ['STUDY 1', undef, '', "M\nMM\n", undef, undef,
|
|
565 'DO STUDY #1 AT (1000) IN CLASS @2', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(2)],
|
|
566 'DO STUDY #2 AT (2000) IN CLASS @2', [], [BC_STU, BC(2), BC(2000), BC_WHP, BC(2)],
|
|
567 'DO READ OUT @2 SUB #1', [], [BC_ROU, BC(1), BC_SUB, BC(1), BC_WHP, BC(2)],
|
|
568 'DO READ OUT @2 SUB #2', [], [BC_ROU, BC(1), BC_SUB, BC(2), BC_WHP, BC(2)]],
|
|
569 ['STUDY 2', undef, '', "*999 Lecture at 100 is too early\n", undef, 999,
|
|
570 'DO STUDY #1 AT (100) IN CLASS @2', [], [BC_STU, BC(1), BC(100), BC_WHP, BC(2)]],
|
|
571 ['ENROL 1', undef, '', "M\nMM\n", undef, undef,
|
|
572 'DO STUDY #1 AT (1000) IN CLASS @2', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(2)],
|
|
573 'DO STUDY #2 AT (2000) IN CLASS @2', [], [BC_STU, BC(2), BC(2000), BC_WHP, BC(2)],
|
|
574 'DO ENROL .1 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(1)],
|
|
575 'DO ENROL .2 TO LEARN #2', [], [BC_ENR, BC(1), BC(2), BC_SPO, BC(2)],
|
|
576 'DO ENROL .3 TO LEARN #1 + #2', [], [BC_ENR, BC(2), BC(1), BC(2), BC_SPO, BC(3)],
|
|
577 'DO READ OUT @2 SUB #1', [], [BC_ROU, BC(1), BC_SUB, BC(1), BC_WHP, BC(2)],
|
|
578 'DO READ OUT @2 SUB #2', [], [BC_ROU, BC(1), BC_SUB, BC(2), BC_WHP, BC(2)]],
|
|
579 ['ENROL 2', undef, '', "*799 No class teaches subjects #1 + #2\n", undef, 799,
|
|
580 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
581 'DO STUDY #2 AT (2000) IN CLASS @2', [], [BC_STU, BC(2), BC(2000), BC_WHP, BC(2)],
|
|
582 'DO ENROL .1 TO LEARN #1 + #2', [], [BC_ENR, BC(2), BC(1), BC(2), BC_SPO, BC(1)]],
|
|
583 ['ENROL 3', undef, '', "*603 Class war between \@1 and \@2\n", undef, 603,
|
|
584 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
585 'DO STUDY #1 AT (2000) IN CLASS @2', [], [BC_STU, BC(1), BC(2000), BC_WHP, BC(2)],
|
|
586 'DO ENROL .1 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(1)]],
|
|
587 ['LEARNS 1', undef, '', "M\n", undef, undef,
|
|
588 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
589 'DO ENROL .1 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(1)],
|
|
590 'DO .1 LEARNS #1', [], [BC_LEA, BC(1), BC_SPO, BC(1)],
|
|
591 'DO READ OUT @2 SUB #2', [], [BC_ROU, BC(1), BC_SUB, BC(2), BC_WHP, BC(2)],
|
|
592 '(1000) DO READ OUT @1 SUB #1', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_SUB, BC(1), BC_WHP, BC(1)]],
|
|
593 ['LEARNS 2', undef, '', "*822 Register .1 is not a student\n", undef, 822,
|
|
594 'DO .1 LEARNS #4', [], [BC_LEA, BC(1), BC_SPO, BC(1)]],
|
|
595 ['LEARNS 3', undef, '', "*823 Subject #4 is not in .1's curriculum\n", undef, 823,
|
|
596 'DO STUDY #2 AT (3000) IN CLASS @1', [], [BC_STU, BC(2), BC(3000), BC_WHP, BC(1)],
|
|
597 'DO STUDY #3 AT (4000) IN CLASS @2', [], [BC_STU, BC(3), BC(4000), BC_WHP, BC(2)],
|
|
598 'DO ENROL .1 TO LEARN #2', [], [BC_ENR, BC(1), BC(2), BC_SPO, BC(1)],
|
|
599 'DO ENROL .1 TO LEARN #3', [], [BC_ENR, BC(1), BC(3), BC_SPO, BC(1)],
|
|
600 'DO .1 LEARNS #4', [], [BC_LEA, BC(4), BC_SPO, BC(1)]],
|
|
601 ['LEARNS 4', undef, '', "*603 Class war between \@1 and \@2\n", undef, 603,
|
|
602 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
603 'DO STUDY #1 AT (2000) IN CLASS @2', [], [BC_STU, BC(1), BC(2000), BC_WHP, BC(2)],
|
|
604 'DO STUDY #2 AT (3000) IN CLASS @1', [], [BC_STU, BC(2), BC(3000), BC_WHP, BC(1)],
|
|
605 'DO STUDY #3 AT (4000) IN CLASS @2', [], [BC_STU, BC(3), BC(4000), BC_WHP, BC(2)],
|
|
606 'DO ENROL .1 TO LEARN #2', [], [BC_ENR, BC(1), BC(2), BC_SPO, BC(1)],
|
|
607 'DO ENROL .1 TO LEARN #3', [], [BC_ENR, BC(1), BC(3), BC_SPO, BC(1)],
|
|
608 'DO .1 LEARNS #1', [], [BC_LEA, BC(1), BC_SPO, BC(1)]],
|
|
609 ['FINISH LECTURE 1', undef, '', "M\nV\n", undef, undef,
|
|
610 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
611 'DO ENROL .1 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(1)],
|
|
612 'DO .1 LEARNS #1', [], [BC_LEA, BC(1), BC_SPO, BC(1)],
|
|
613 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
614 'DO GIVE UP', [], [BC_GUP],
|
|
615 '(1000) DO READ OUT @1 SUB #1', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_SUB, BC(1), BC_WHP, BC(1)],
|
|
616 'DO $@1 <- #5', [], [BC_STO, BC(5), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
617 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
618 ['FINISH LECTURE 2', undef, '', "M\nX\n", undef, undef,
|
|
619 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
620 'DO ENROL .1 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(1)],
|
|
621 '(69) DO .1 LEARNS #1', [BC_LAB, BC(69)], [BC_LEA, BC(1), BC_SPO, BC(1)],
|
|
622 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
623 'DO GIVE UP', [], [BC_GUP],
|
|
624 'DO COME FROM (69)', [], [BC_CFL, BC(69)],
|
|
625 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
626 'DO GIVE UP', [], [BC_GUP],
|
|
627 '(1000) DO READ OUT @1 SUB #1', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_SUB, BC(1), BC_WHP, BC(1)],
|
|
628 'DO $@1 <- #5', [], [BC_STO, BC(5), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
629 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
630 ['FINISH LECTURE 3', undef, '', "*699 Not in a lecture\n", undef, 699,
|
|
631 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
632 ['GRADUATES', undef, '', "*822 Register .1 is not a student\n", undef, 822,
|
|
633 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
634 'DO ENROL .1 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(1)],
|
|
635 'DO .1 GRADUATES', [], [BC_GRA, BC_SPO, BC(1)],
|
|
636 'DO .1 LEARNS #4', [], [BC_LEA, BC(1), BC_SPO, BC(1)]],
|
|
637 ['SWAP 1', undef, '', "XX\nX\n", undef, undef,
|
|
638 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
639 'DO SWAP RESUME EXPRESSION AND FORGET EXPRESSION', [], [BC_SWA, BC_RES, BC_FOR],
|
|
640 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
641 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
642 'DO GIVE UP', [], [BC_GUP],
|
|
643 '(69) DO (70) NEXT', [BC_LAB, BC(69)], [BC_NXT, BC(70)],
|
|
644 'DO GIVE UP', [], [BC_GUP],
|
|
645 '(70) DO READ OUT #20', [BC_LAB, BC(70)], [BC_ROU, BC(1), BC(20)],
|
|
646 'DO RESUME #1', [], [BC_RES, BC(1)], # really executed as FORGET
|
|
647 'DO FORGET #1', [], [BC_FOR, BC(1)]], # really executed as RESUME
|
|
648 ['SWAP 2', undef, '', "XX\nX\n", undef, undef,
|
|
649 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
650 'DO SWAP SWAP STATEMENT AND STATEMENT AND CONVERT STATEMENT TO STATEMENT', [], [BC_SWA, BC_SWA, BC_CON],
|
|
651 'DO CONVERT RESUME EXPRESSION TO FORGET EXPRESSION', [], [BC_CON, BC_RES, BC_FOR],
|
|
652 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
653 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
654 'DO GIVE UP', [], [BC_GUP],
|
|
655 '(69) DO (70) NEXT', [BC_LAB, BC(69)], [BC_NXT, BC(70)],
|
|
656 'DO GIVE UP', [], [BC_GUP],
|
|
657 '(70) DO READ OUT #20', [BC_LAB, BC(70)], [BC_ROU, BC(1), BC(20)],
|
|
658 'DO RESUME #1', [], [BC_RES, BC(1)], # really executed as FORGET
|
|
659 'DO FORGET #1', [], [BC_FOR, BC(1)]], # really executed as RESUME
|
|
660 ['SWAP 3', undef, '', "*445 Cannot swap RES and FIN\n", undef, 445,
|
|
661 'DO SWAP RESUME EXPRESSION AND FINISH LECTURE', [], [BC_SWA, BC_RES, BC_FIN]],
|
|
662 ['CONVERT 1', undef, '', "XX\n", undef, undef,
|
|
663 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
664 'DO CONVERT FORGET EXPRESSION TO RESUME EXPRESSION', [], [BC_CON, BC_FOR, BC_RES],
|
|
665 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
666 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
667 'DO GIVE UP', [], [BC_GUP],
|
|
668 '(69) DO (70) NEXT', [BC_LAB, BC(69)], [BC_NXT, BC(70)],
|
|
669 'DO GIVE UP', [], [BC_GUP],
|
|
670 '(70) DO READ OUT #20', [BC_LAB, BC(70)], [BC_ROU, BC(1), BC(20)],
|
|
671 'DO FORGET #1', [], [BC_FOR, BC(1)]], # really executed as RESUME
|
|
672 ['CONVERT 2', undef, '', "XX\n", undef, undef,
|
|
673 'DO .1 <- #1', [], [BC_STO, BC(1), BC_SPO, BC(1)],
|
|
674 'DO SWAP SWAP STATEMENT AND STATEMENT AND CONVERT STATEMENT TO STATEMENT', [], [BC_SWA, BC_SWA, BC_CON],
|
|
675 'DO SWAP FORGET EXPRESSION AND RESUME EXPRESSION', [], [BC_SWA, BC_FOR, BC_RES],
|
|
676 'DO (69) NEXT', [], [BC_NXT, BC(69)],
|
|
677 'DO READ OUT #10', [], [BC_ROU, BC(1), BC(10)],
|
|
678 'DO GIVE UP', [], [BC_GUP],
|
|
679 '(69) DO (70) NEXT', [BC_LAB, BC(69)], [BC_NXT, BC(70)],
|
|
680 'DO GIVE UP', [], [BC_GUP],
|
|
681 '(70) DO READ OUT #20', [BC_LAB, BC(70)], [BC_ROU, BC(1), BC(20)],
|
|
682 'DO FORGET #1', [], [BC_FOR, BC(1)]], # really executed as RESUME
|
|
683 ['CONVERT 3', undef, '', "*444 Cannot convert RES to FIN\n", undef, 444,
|
|
684 'DO CONVERT RESUME EXPRESSION AND FINISH LECTURE', [], [BC_CON, BC_RES, BC_FIN]],
|
|
685 ['CREATE 1', '1972', '', "\nII\n\nIII\n", undef, undef,
|
|
686 # extend the 1972 compiler with Unary Division and call it D
|
|
687 'DO CREATE ?UNARY ,D, AS UDV', [],
|
|
688 [BC_CRE, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('D'),
|
|
689 BC(1), BC(4), BC(1), BC_UDV],
|
|
690 'DO .1 <- #D8', [], [BC_MSP, BC(0), BC(1), _str('DO .1 <- #D8')],
|
|
691 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
692 'DO .2 <- #D3', [], [BC_MSP, BC(0), BC(1), _str('DO .1 <- #D3')],
|
|
693 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
694 ['DESTROY', 'sick', '', "II\n*000 DO .1 <- #-8\n", undef, 0,
|
|
695 # extend sick to have another name for unary division, then destroy original
|
|
696 'DO CREATE ?UNARY ,D, AS UDV', [],
|
|
697 [BC_CRE, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('D'),
|
|
698 BC(1), BC(4), BC(1), BC_UDV],
|
|
699 'DO DESTROY ?UNARY ,#45,', [],
|
|
700 [BC_DES, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('-')],
|
|
701 'DO .1 <- #D8', [], [BC_STO, BC_UDV, BC(8), BC_SPO, BC(1)],
|
|
702 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
703 'DO .1 <- #-8', [], [BC_STO, BC_UDV, BC(8), BC_SPO, BC(1)],
|
|
704 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
705 ['CREATE 2', 'sick', '', "II\nII\n", undef, undef,
|
|
706 # add D as unary division; delete original and new; then add them again;
|
|
707 # note that the program needs only be recompiled once even though there
|
|
708 # are many creations/destructions
|
|
709 'DO CREATE ?UNARY ,D, AS UDV', [],
|
|
710 [BC_CRE, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('D'),
|
|
711 BC(1), BC(4), BC(1), BC_UDV],
|
|
712 'DO DESTROY ?UNARY ,#45,', [],
|
|
713 [BC_DES, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('-')],
|
|
714 'DO DESTROY ?UNARY ,D,', [],
|
|
715 [BC_DES, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('D')],
|
|
716 'DO CREATE ?UNARY ,#45, AS UDV', [],
|
|
717 [BC_CRE, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('-'),
|
|
718 BC(1), BC(4), BC(1), BC_UDV],
|
|
719 'DO CREATE ?UNARY ,D, AS UDV', [],
|
|
720 [BC_CRE, BC(1), _str('UNARY'), BC(1), BC(0), BC(1), _str('D'),
|
|
721 BC(1), BC(4), BC(1), BC_UDV],
|
|
722 'DO .1 <- #D8', [], [BC_STO, BC_UDV, BC(8), BC_SPO, BC(1)],
|
|
723 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
724 'DO .1 <- #-8', [], [BC_STO, BC_UDV, BC(8), BC_SPO, BC(1)],
|
|
725 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
726 ['EVENTS 1', undef, '', "IV\nVI\nII\n", undef, undef,
|
|
727 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
728 'DO #1 WHILE READ OUT .2', [], [BC_ECB, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
729 # make sure the event has time to execute before continuing
|
|
730 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
731 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
732 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
733 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
734 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
735 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
736 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
737 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
738 ['EVENTS 2', undef, '', "VI\nII\n*456 No splat\nIV\n", undef, 456,
|
|
739 'DO * WHILE READ OUT .2', [], [BC_ECB, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
740 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
741 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
742 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
743 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
744 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
745 'DO .2 <- *', [], [BC_STO, BC_SPL, BC_SPO, BC(2)]],
|
|
746 ['EVENTS 3', undef, '', "VI\nII\nIV\n", undef, undef,
|
|
747 'DO * WHILE READ OUT .2', [], [BC_ECB, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
748 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
749 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
750 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
751 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
752 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
753 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
754 ['EVENTS 4', undef, '', "*751 Invalid event: BODY WHILE CONDITION\n", undef, 751,
|
|
755 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
756 'DO READ OUT .2 WHILE #1', [], [BC_EBC, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
757 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
758 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
759 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
760 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
761 ['EVENTS 5', undef, '', "*751 Invalid event: BODY WHILE CONDITION\n", undef, 751,
|
|
762 'DO READ OUT .2 WHILE *', [], [BC_EBC, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
763 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
764 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
765 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
766 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
767 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
768 'DO .2 <- *', [], [BC_STO, BC_SPL, BC_SPO, BC(2)]],
|
|
769 ['EVENTS 6', undef, '', "*751 Invalid event: BODY WHILE CONDITION\n", undef, 751,
|
|
770 'DO READ OUT .2 WHILE *', [], [BC_EBC, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
771 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
772 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
773 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
774 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
775 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
776 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
777 ['EVENTS 7', undef, '', "*751 Invalid event: BODY WHILE CONDITION\n", undef, 751,
|
|
778 'DO SWAP EXPRESSION WHILE STATEMENT AND STATEMENT WHILE EXPRESSION', [], [BC_SWA, BC_ECB, BC_EBC],
|
|
779 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
780 'DO READ OUT .2 WHILE #1', [], [BC_ECB, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
781 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
782 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
783 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
784 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
785 ['EVENTS 8', undef, '', "*751 Invalid event: BODY WHILE CONDITION\n", undef, 751,
|
|
786 'DO SWAP EXPRESSION WHILE STATEMENT AND STATEMENT WHILE EXPRESSION', [], [BC_SWA, BC_ECB, BC_EBC],
|
|
787 'DO READ OUT .2 WHILE *', [], [BC_ECB, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
788 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
789 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
790 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
791 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
792 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
793 'DO .2 <- *', [], [BC_STO, BC_SPL, BC_SPO, BC(2)]],
|
|
794 ['EVENTS 9', undef, '', "*751 Invalid event: BODY WHILE CONDITION\n", undef, 751,
|
|
795 'DO SWAP EXPRESSION WHILE STATEMENT AND STATEMENT WHILE EXPRESSION', [], [BC_SWA, BC_ECB, BC_EBC],
|
|
796 'DO READ OUT .2 WHILE *', [], [BC_ECB, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
797 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
798 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
799 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
800 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
801 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
802 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
803 ['EVENTS 10', undef, '', "IV\nVI\nII\n", undef, undef,
|
|
804 'DO SWAP EXPRESSION WHILE STATEMENT AND STATEMENT WHILE EXPRESSION', [], [BC_SWA, BC_ECB, BC_EBC],
|
|
805 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
806 'DO #1 WHILE READ OUT .2', [], [BC_EBC, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
807 # make sure the event has time to execute before continuing
|
|
808 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
809 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
810 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
811 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
812 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
813 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
814 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
815 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
816 ['EVENTS 11', undef, '', "VI\nII\n*456 No splat\nIV\n", undef, 456,
|
|
817 'DO SWAP EXPRESSION WHILE STATEMENT AND STATEMENT WHILE EXPRESSION', [], [BC_SWA, BC_ECB, BC_EBC],
|
|
818 'DO * WHILE READ OUT .2', [], [BC_EBC, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
819 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
820 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
821 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
822 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
823 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
824 'DO .2 <- *', [], [BC_STO, BC_SPL, BC_SPO, BC(2)]],
|
|
825 ['EVENTS 12', undef, '', "VI\nII\nIV\n", undef, undef,
|
|
826 'DO SWAP EXPRESSION WHILE STATEMENT AND STATEMENT WHILE EXPRESSION', [], [BC_SWA, BC_ECB, BC_EBC],
|
|
827 'DO * WHILE READ OUT .2', [], [BC_EBC, BC_SPL, BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
828 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
829 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
830 'DO .2 <- #2', [], [BC_STO, BC(2), BC_SPO, BC(2)],
|
|
831 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
832 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
833 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)]],
|
|
834 ['EVENTS 13', undef, '', "VI\n*456 No splat\nIII\n", undef, 456,
|
|
835 'DO * WHILE (1) NEXT', [], [BC_ECB, BC_SPL, BC_NXT, BC(1)],
|
|
836 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
837 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
838 'DO .2 <- *', [], [BC_STO, BC_SPL, BC_SPO, BC(2)],
|
|
839 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
840 'DO GIVE UP', [], [BC_GUP],
|
|
841 '(1) DO .2 <- #3', [BC_LAB, BC(1)], [BC_STO, BC(3), BC_SPO, BC(2)],
|
|
842 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
843 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
844 ['EVENTS 14', undef, '', "VI\nIII\n", undef, undef,
|
|
845 'DO #1 WHILE (1) NEXT', [], [BC_ECB, BC(1), BC_NXT, BC(1)],
|
|
846 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
847 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
848 'DO GIVE UP', [], [BC_GUP],
|
|
849 '(1) DO .2 <- #3', [BC_LAB, BC(1)], [BC_STO, BC(3), BC_SPO, BC(2)],
|
|
850 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
851 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
852 ['EVENTS 15', undef, '', "VI\n", undef, undef,
|
|
853 'DO ABSTAIN FROM NEXTING', [], [BC_ABG, BC(1), BC_NXT],
|
|
854 'DO #1 WHILE (1) NEXT', [], [BC_ECB, BC(1), BC_NXT, BC(1)],
|
|
855 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
856 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
857 'DO GIVE UP', [], [BC_GUP],
|
|
858 '(1) DO .2 <- #3', [BC_LAB, BC(1)], [BC_STO, BC(3), BC_SPO, BC(2)],
|
|
859 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
860 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
861 ['EVENTS 16', undef, '', "VI\n", undef, undef,
|
|
862 'DO ABSTAIN FROM READING OUT', [], [BC_ABG, BC(1), BC_ROU],
|
|
863 'DO REINSTATE (2)', [], [BC_REL, BC(2)],
|
|
864 'DO #1 WHILE (1) NEXT', [], [BC_ECB, BC(1), BC_NXT, BC(1)],
|
|
865 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
866 '(2) DO READ OUT .2', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
867 'DO GIVE UP', [], [BC_GUP],
|
|
868 '(1) DO .2 <- #3', [BC_LAB, BC(1)], [BC_STO, BC(3), BC_SPO, BC(2)],
|
|
869 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
870 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
871 ['EVENTS 17', undef, '', "III\nVI\n", undef, undef,
|
|
872 '(1) DO #1 WHILE (2) NEXT', [BC_LAB, BC(1)], [BC_ECB, BC(1), BC_NXT, BC(2)],
|
|
873 'DO .2 <- #8', [], [BC_STO, BC(8), BC_SPO, BC(2)],
|
|
874 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
875 'DO GIVE UP', [], [BC_GUP],
|
|
876 'DO COME FROM (1)', [], [BC_CFL, BC(1)],
|
|
877 # make sure the event has time to execute before continuing
|
|
878 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
879 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
880 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
881 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
882 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
883 'DO NOTHING FOR A WHILE', [BC_NOT], [BC_MSP, BC(0), BC(0)],
|
|
884 'DO .1 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(1)],
|
|
885 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
886 'DO GIVE UP', [], [BC_GUP],
|
|
887 '(2) DO .2 <- #3', [BC_LAB, BC(2)], [BC_STO, BC(3), BC_SPO, BC(2)],
|
|
888 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
889 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
890 ['EVENTS 18', undef, '', [1, "VI\n", "IV\n", "III\n"], undef, undef,
|
|
891 'DO %CF <- #3', [], [BC_STO, BC(3), reg_code('%CF')],
|
|
892 'DO #1 WHILE REINSTATE READING OUT', [], [BC_ECB, BC(1), BC_REG, BC(1), BC_ROU],
|
|
893 'DO GIVE UP', [], [BC_GUP],
|
|
894 'DO COME FROM REINSTATING', [], [BC_CFG, BC(2), BC_REG, BC_REL],
|
|
895 'DO NOT READ OUT %CF', [BC_NOT], [BC_ROU, BC(1), reg_code('%CF')],
|
|
896 'DO GIVE UP', [], [BC_GUP],
|
|
897 'DO COME FROM REINSTATING', [], [BC_CFG, BC(2), BC_REG, BC_REL],
|
|
898 'DO .1 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(1)],
|
|
899 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
900 'DO GIVE UP', [], [BC_GUP],
|
|
901 'DO COME FROM REINSTATING', [], [BC_CFG, BC(2), BC_REG, BC_REL],
|
|
902 'DO .2 <- #6', [], [BC_STO, BC(6), BC_SPO, BC(2)],
|
|
903 'DO READ OUT .2', [], [BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
904 'DO GIVE UP', [], [BC_GUP]],
|
|
905 ['LOOPS 1a', undef, 'SIX', "IV\nVI\n", undef, undef,
|
|
906 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
907 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
908 [BC_CWB, BC_WIN, BC(1), BC_SPO, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
909 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
910 ['LOOPS 1b', undef, 'SIX', "IV\nVI\n", undef, undef,
|
|
911 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
912 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
913 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
914 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)]],
|
|
915 ['LOOPS 2a', undef, '', "IV\nIV\nIV\nIV\nIV\n", undef, undef,
|
|
916 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
917 'DO (1) NEXT WHILE READ OUT .2', [],
|
|
918 [BC_CWB, BC_ROU, BC(1), BC_SPO, BC(2), BC_NXT, BC(1)],
|
|
919 'DO GIVE UP', [], [BC_GUP],
|
|
920 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
921 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
922 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
923 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
924 ['LOOPS 2b', undef, '', "IV\nIV\nIV\nIV\nIV\n", undef, undef,
|
|
925 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
926 'DO (1) NEXT WHILE READ OUT .2', [],
|
|
927 [BC_BWC, BC_NXT, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
928 'DO GIVE UP', [], [BC_GUP],
|
|
929 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
930 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
931 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
932 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
933 ['LOOPS 3a', undef, '', "IV\nIV\nII\nII\nII\n", undef, undef,
|
|
934 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
935 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
936 'DO ENROL .2 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(2)],
|
|
937 'DO .2 LEARNS #1 WHILE READ OUT .2', [],
|
|
938 [BC_CWB, BC_ROU, BC(1), BC_SPO, BC(2), BC_LEA, BC(1), BC_SPO, BC(2)],
|
|
939 'DO GIVE UP', [], [BC_GUP],
|
|
940 '(1000) DO NOT GIVE UP', [BC_LAB, BC(1000), BC_NOT], [BC_GUP],
|
|
941 'DO $@1 <- #2', [], [BC_STO, BC(2), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
942 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
943 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
944 ['LOOPS 3b', undef, '', "IV\nIV\nII\nII\nII\n", undef, undef,
|
|
945 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
946 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
947 'DO ENROL .2 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(2)],
|
|
948 'DO .2 LEARNS #1 WHILE READ OUT .2', [],
|
|
949 [BC_BWC, BC_LEA, BC(1), BC_SPO, BC(2), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
950 'DO GIVE UP', [], [BC_GUP],
|
|
951 '(1000) DO NOT GIVE UP', [BC_LAB, BC(1000), BC_NOT], [BC_GUP],
|
|
952 'DO $@1 <- #2', [], [BC_STO, BC(2), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
953 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
954 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
955 ['LOOPS 4a', undef, '', "IV\nV\n", undef, undef,
|
|
956 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
957 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
958 'DO READ OUT .2 WHILE (2) NEXT', [],
|
|
959 [BC_CWB, BC_NXT, BC(2), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
960 'DO GIVE UP', [], [BC_GUP],
|
|
961 '(2) DO READ OUT .3', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
962 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
963 ['LOOPS 4b', undef, '', "IV\nV\n", undef, undef,
|
|
964 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
965 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
966 'DO READ OUT .2 WHILE (2) NEXT', [],
|
|
967 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_NXT, BC(2)],
|
|
968 'DO GIVE UP', [], [BC_GUP],
|
|
969 '(2) DO READ OUT .3', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
970 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
971 ['LOOPS 5a', undef, '', "V\nV\n", undef, undef,
|
|
972 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
973 'DO (1) NEXT WHILE (2) NEXT', [],
|
|
974 [BC_CWB, BC_NXT, BC(2), BC_NXT, BC(1)],
|
|
975 'DO GIVE UP', [], [BC_GUP],
|
|
976 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
977 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
978 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
979 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
980 '(2) DO READ OUT .3', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
981 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
982 ['LOOPS 5b', undef, '', "V\nV\n", undef, undef,
|
|
983 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
984 'DO (1) NEXT WHILE (2) NEXT', [],
|
|
985 [BC_BWC, BC_NXT, BC(1), BC_NXT, BC(2)],
|
|
986 'DO GIVE UP', [], [BC_GUP],
|
|
987 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
988 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
989 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
990 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
991 '(2) DO READ OUT .3', [BC_LAB, BC(2)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
992 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
993 ['LOOPS 6a', undef, '', "V\nII\n", undef, undef,
|
|
994 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
995 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
996 'DO ENROL .3 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(3)],
|
|
997 'DO .3 LEARNS #1 WHILE (1) NEXT', [],
|
|
998 [BC_CWB, BC_NXT, BC(1), BC_LEA, BC(1), BC_SPO, BC(3)],
|
|
999 'DO GIVE UP', [], [BC_GUP],
|
|
1000 '(1000) DO NOT GIVE UP', [BC_LAB, BC(1000), BC_NOT], [BC_GUP],
|
|
1001 'DO $@1 <- #2', [], [BC_STO, BC(2), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1002 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1003 'DO FINISH LECTURE', [], [BC_FIN],
|
|
1004 '(1) DO READ OUT .3', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
1005 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1006 ['LOOPS 6b', undef, '', "V\nII\n", undef, undef,
|
|
1007 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1008 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1009 'DO ENROL .3 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(3)],
|
|
1010 'DO .3 LEARNS #1 WHILE (1) NEXT', [],
|
|
1011 [BC_BWC, BC_LEA, BC(1), BC_SPO, BC(3), BC_NXT, BC(1)],
|
|
1012 'DO GIVE UP', [], [BC_GUP],
|
|
1013 '(1000) DO NOT GIVE UP', [BC_LAB, BC(1000), BC_NOT], [BC_GUP],
|
|
1014 'DO $@1 <- #2', [], [BC_STO, BC(2), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1015 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1016 'DO FINISH LECTURE', [], [BC_FIN],
|
|
1017 '(1) DO READ OUT .3', [BC_LAB, BC(1)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
1018 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1019 ['LOOPS 7a', undef, '', "IV\nV\n", undef, undef,
|
|
1020 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1021 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1022 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1023 'DO ENROL .2 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(2)],
|
|
1024 'DO READ OUT .2 WHILE .2 LEARNS #1', [],
|
|
1025 [BC_CWB, BC_LEA, BC(1), BC_SPO, BC(2), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1026 'DO GIVE UP', [], [BC_GUP],
|
|
1027 '(1000) DO READ OUT .3', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
1028 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
1029 ['LOOPS 7b', undef, '', "IV\nV\n", undef, undef,
|
|
1030 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1031 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1032 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1033 'DO ENROL .2 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(2)],
|
|
1034 'DO READ OUT .2 WHILE .2 LEARNS #1', [],
|
|
1035 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_LEA, BC(1), BC_SPO, BC(2)],
|
|
1036 'DO GIVE UP', [], [BC_GUP],
|
|
1037 '(1000) DO READ OUT .3', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_SPO, BC(3)],
|
|
1038 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
1039 ['LOOPS 8a', undef, '', "V\nV\n", undef, undef,
|
|
1040 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1041 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1042 'DO ENROL .3 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(3)],
|
|
1043 'DO (1) NEXT WHILE .3 LEARHS #1', [],
|
|
1044 [BC_CWB, BC_LEA, BC(1), BC_SPO, BC(3), BC_NXT, BC(1)],
|
|
1045 'DO GIVE UP', [], [BC_GUP],
|
|
1046 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
1047 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1048 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1049 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
1050 '(1000) DO READ OUT $@1', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1051 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
1052 ['LOOPS 8b', undef, '', "V\nV\n", undef, undef,
|
|
1053 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1054 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1055 'DO ENROL .3 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(3)],
|
|
1056 'DO (1) NEXT WHILE .3 LEARHS #1', [],
|
|
1057 [BC_BWC, BC_NXT, BC(1), BC_LEA, BC(1), BC_SPO, BC(3)],
|
|
1058 'DO GIVE UP', [], [BC_GUP],
|
|
1059 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
1060 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1061 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1062 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
1063 '(1000) DO READ OUT $@1', [BC_LAB, BC(1000)], [BC_ROU, BC(1), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1064 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
1065 ['LOOPS 9a', undef, '', "V\nII\n", undef, undef,
|
|
1066 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1067 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1068 'DO STUDY #2 AT (2000) IN CLASS @1', [], [BC_STU, BC(2), BC(2000), BC_WHP, BC(1)],
|
|
1069 'DO ENROL .3 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(3)],
|
|
1070 'DO .3 LEARNS #1 WHILE .3 LEARNS #2', [],
|
|
1071 [BC_CWB, BC_LEA, BC(2), BC_SPO, BC(3), BC_LEA, BC(1), BC_SPO, BC(3)],
|
|
1072 'DO GIVE UP', [], [BC_GUP],
|
|
1073 '(1000) DO NOT GIVE UP', [BC_LAB, BC(1000), BC_NOT], [BC_GUP],
|
|
1074 'DO $@1 <- #2', [], [BC_STO, BC(2), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1075 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1076 'DO FINISH LECTURE', [], [BC_FIN],
|
|
1077 '(2000) DO READ OUT $@1', [BC_LAB, BC(2000)], [BC_ROU, BC(1), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1078 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
1079 ['LOOPS 9b', undef, '', "V\nII\n", undef, undef,
|
|
1080 'DO .3 <- #5', [], [BC_STO, BC(5), BC_SPO, BC(3)],
|
|
1081 'DO STUDY #1 AT (1000) IN CLASS @1', [], [BC_STU, BC(1), BC(1000), BC_WHP, BC(1)],
|
|
1082 'DO STUDY #2 AT (2000) IN CLASS @1', [], [BC_STU, BC(2), BC(2000), BC_WHP, BC(1)],
|
|
1083 'DO ENROL .3 TO LEARN #1', [], [BC_ENR, BC(1), BC(1), BC_SPO, BC(3)],
|
|
1084 'DO .3 LEARNS #1 WHILE .3 LEARNS #2', [],
|
|
1085 [BC_BWC, BC_LEA, BC(1), BC_SPO, BC(3), BC_LEA, BC(2), BC_SPO, BC(3)],
|
|
1086 'DO GIVE UP', [], [BC_GUP],
|
|
1087 '(1000) DO NOT GIVE UP', [BC_LAB, BC(1000), BC_NOT], [BC_GUP],
|
|
1088 'DO $@1 <- #2', [], [BC_STO, BC(2), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1089 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1090 'DO FINISH LECTURE', [], [BC_FIN],
|
|
1091 '(2000) DO READ OUT $@1', [BC_LAB, BC(2000)], [BC_ROU, BC(1), BC_OWN, BC(1), BC_WHP, BC(1)],
|
|
1092 'DO FINISH LECTURE', [], [BC_FIN]],
|
|
1093 ['LOOPS 10a', undef, '', "IV\nIV\nIV\n", undef, undef,
|
|
1094 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1095 'DO (1) NEXT WHILE READ OUT .2', [],
|
|
1096 [BC_CWB, BC_ROU, BC(1), BC_SPO, BC(2), BC_NXT, BC(1)],
|
|
1097 'DO GIVE UP', [], [BC_GUP],
|
|
1098 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
1099 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1100 'DO ABSTAIN FROM READING OUT', [], [BC_ABG, BC(1), BC_ROU],
|
|
1101 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1102 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1103 ['LOOPS 10b', undef, '', "IV\nIV\nIV\n", undef, undef,
|
|
1104 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1105 'DO (1) NEXT WHILE READ OUT .2', [],
|
|
1106 [BC_BWC, BC_NXT, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1107 'DO GIVE UP', [], [BC_GUP],
|
|
1108 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
1109 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1110 'DO ABSTAIN FROM READING OUT', [], [BC_ABG, BC(1), BC_ROU],
|
|
1111 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1112 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1113 ['LOOPS 11a', undef, 'SIX', "IV\nVI\nV\n", undef, undef,
|
|
1114 'DO %CF <- #2', [], [BC_STO, BC(2), reg_code('%CF')],
|
|
1115 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1116 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1117 [BC_CWB, BC_WIN, BC(1), BC_SPO, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1118 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1119 'DO GIVE UP', [], [BC_GUP],
|
|
1120 'DO NEXT FROM WRITING IN', [], [BC_NXG, BC(1), BC_WIN],
|
|
1121 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
1122 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1123 ['LOOPS 11b', undef, 'SIX', "IV\nVI\nV\n", undef, undef,
|
|
1124 'DO %CF <- #2', [], [BC_STO, BC(2), reg_code('%CF')],
|
|
1125 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1126 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1127 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
1128 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1129 'DO GIVE UP', [], [BC_GUP],
|
|
1130 'DO NEXT FROM WRITING IN', [], [BC_NXG, BC(1), BC_WIN],
|
|
1131 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
1132 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1133 ['LOOPS 12a', undef, "SIX\nNINE\nONE TWO\n", "IV\nXII\n", undef, undef,
|
|
1134 'DO %CF <- #2', [], [BC_STO, BC(2), reg_code('%CF')],
|
|
1135 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1136 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1137 [BC_CWB, BC_WIN, BC(1), BC_SPO, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1138 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1139 'DO GIVE UP', [], [BC_GUP],
|
|
1140 'DO NEXT FROM READING OUT', [], [BC_NXG, BC(1), BC_ROU],
|
|
1141 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1142 ['LOOPS 12b', undef, "SIX\nNINE\nONE TWO\n", "IV\nXII\n", undef, undef,
|
|
1143 'DO %CF <- #2', [], [BC_STO, BC(2), reg_code('%CF')],
|
|
1144 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1145 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1146 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
1147 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1148 'DO GIVE UP', [], [BC_GUP],
|
|
1149 'DO NEXT FROM READING OUT', [], [BC_NXG, BC(1), BC_ROU],
|
|
1150 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1151 ['LOOPS 13a', undef, 'SIX', "IV\nVI\nV\nV\n", undef, undef,
|
|
1152 'DO %CF <- #3', [], [BC_STO, BC(3), reg_code('%CF')],
|
|
1153 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1154 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1155 [BC_CWB, BC_WIN, BC(1), BC_SPO, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1156 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1157 'DO GIVE UP', [], [BC_GUP],
|
|
1158 'DO NEXT FROM WRITING IN', [], [BC_NXG, BC(1), BC_WIN],
|
|
1159 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
1160 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
1161 'DO NEXT FROM WRITING IN', [], [BC_NXG, BC(1), BC_WIN],
|
|
1162 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
1163 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1164 ['LOOPS 13b', undef, 'SIX', "IV\nVI\nV\nV\n", undef, undef,
|
|
1165 'DO %CF <- #3', [], [BC_STO, BC(3), reg_code('%CF')],
|
|
1166 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1167 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1168 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
1169 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1170 'DO GIVE UP', [], [BC_GUP],
|
|
1171 'DO NEXT FROM WRITING IN', [], [BC_NXG, BC(1), BC_WIN],
|
|
1172 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
1173 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
1174 'DO NEXT FROM WRITING IN', [], [BC_NXG, BC(1), BC_WIN],
|
|
1175 'DO READ OUT #5', [], [BC_ROU, BC(1), BC(5)],
|
|
1176 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1177 ['LOOPS 14a', undef, "SIX\nNINE\nONE TWO\n", "IV\nXII\nXII\n", undef, undef,
|
|
1178 'DO %CF <- #3', [], [BC_STO, BC(3), reg_code('%CF')],
|
|
1179 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1180 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1181 [BC_CWB, BC_WIN, BC(1), BC_SPO, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1182 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1183 'DO GIVE UP', [], [BC_GUP],
|
|
1184 'DO NEXT FROM READING OUT', [], [BC_NXG, BC(1), BC_ROU],
|
|
1185 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
1186 'DO NEXT FROM READING OUT', [], [BC_NXG, BC(1), BC_ROU],
|
|
1187 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1188 ['LOOPS 14b', undef, "SIX\nNINE\nONE TWO\n", "IV\nXII\nXII\n", undef, undef,
|
|
1189 'DO %CF <- #3', [], [BC_STO, BC(3), reg_code('%CF')],
|
|
1190 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1191 'DO READ OUT .2 WHILE WRITE IN .1', [],
|
|
1192 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_WIN, BC(1), BC_SPO, BC(1)],
|
|
1193 'DO READ OUT .1', [], [BC_ROU, BC(1), BC_SPO, BC(1)],
|
|
1194 'DO GIVE UP', [], [BC_GUP],
|
|
1195 'DO NEXT FROM READING OUT', [], [BC_NXG, BC(1), BC_ROU],
|
|
1196 'DO RESUME #1', [], [BC_RES, BC(1)],
|
|
1197 'DO NEXT FROM READING OUT', [], [BC_NXG, BC(1), BC_ROU],
|
|
1198 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1199 ['LOOPS 15a', undef, '', "IV\nIV\nIV\nIV\nIV\n", undef, undef,
|
|
1200 'DO SWAP CONDITION WHILE BODY AND BODY WHILE CONDITION', [], [BC_SWA, BC_CWB, BC_BWC],
|
|
1201 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1202 'DO (1) NEXT WHILE READ OUT .2', [],
|
|
1203 [BC_CWB, BC_NXT, BC(1), BC_ROU, BC(1), BC_SPO, BC(2)],
|
|
1204 'DO GIVE UP', [], [BC_GUP],
|
|
1205 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
1206 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1207 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1208 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1209 ['LOOPS 15b', undef, '', "IV\nIV\nIV\nIV\nIV\n", undef, undef,
|
|
1210 'DO SWAP CONDITION WHILE BODY AND BODY WHILE CONDITION', [], [BC_SWA, BC_CWB, BC_BWC],
|
|
1211 'DO .2 <- #4', [], [BC_STO, BC(4), BC_SPO, BC(2)],
|
|
1212 'DO (1) NEXT WHILE READ OUT .2', [],
|
|
1213 [BC_BWC, BC_ROU, BC(1), BC_SPO, BC(2), BC_NXT, BC(1)],
|
|
1214 'DO GIVE UP', [], [BC_GUP],
|
|
1215 '(1) DO NOT GIVE UP', [BC_LAB, BC(1), BC_NOT], [BC_GUP],
|
|
1216 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1217 'DO NOT GIVE UP', [BC_NOT], [BC_GUP],
|
|
1218 'DO RESUME #1', [], [BC_RES, BC(1)]],
|
|
1219 );
|
|
1220
|
|
1221 $| = 1;
|
|
1222
|
|
1223 my $maxtest = 0;
|
|
1224 for my $tester (@all_tests) {
|
|
1225 my ($name, $load, $in, $out, $auxfile, $splat, @data) = @$tester;
|
|
1226 $maxtest += 2;
|
|
1227 $maxtest += $out->[0] - 1 if ref $out;
|
|
1228 $maxtest++ if defined $auxfile;
|
|
1229 }
|
|
1230 print "1..$maxtest\n";
|
|
1231
|
|
1232 my $testnum = 1;
|
|
1233 my $rc = new Language::INTERCAL::Rcfile;
|
|
1234 my $compiler = new Language::INTERCAL::Sick($rc);
|
|
1235 TESTER:
|
|
1236 for my $tester (@all_tests) {
|
|
1237 my ($name, $load, $in, $out, $auxfile, $splat, @data) = @$tester;
|
|
1238 my ($iter, @out) = ref $out ? @$out : (1, $out);
|
|
1239 my $obj;
|
|
1240 if ($load) {
|
|
1241 eval {
|
|
1242 $compiler->reset();
|
|
1243 $compiler->setoption('default_charset', 'ASCII');
|
|
1244 $compiler->setoption('default_backend', 'Run');
|
|
1245 $compiler->clearoption('preload');
|
|
1246 $compiler->setoption('preload', $load);
|
|
1247 $compiler->setoption('trace', 0);
|
|
1248 $compiler->source('null.iacc');
|
|
1249 $compiler->load_objects();
|
|
1250 $obj = $compiler->get_object('null.iacc')
|
|
1251 or die "Internal error: no compiler object\n";
|
|
1252 };
|
|
1253 if ($@) {
|
|
1254 print STDERR "FAILED $name: $@";
|
|
1255 print "not ok ", $testnum++, "\n" for (-1..$iter);
|
|
1256 next;
|
|
1257 }
|
|
1258 } else {
|
|
1259 $obj = new Language::INTERCAL::Interpreter($rc);
|
|
1260 }
|
|
1261 $obj->object->setbug(0, 0);
|
|
1262 my $source = '';
|
|
1263 my @code = ();
|
|
1264 while (@data) {
|
|
1265 my $ss = (shift @data) . "\n";
|
|
1266 my $sp = shift @data;
|
|
1267 my $sc = shift @data;
|
|
1268 push @code, pack('C*', BC_STS, BC(length $source), BC(length $ss),
|
|
1269 BC(0), BC(0), @$sp, @$sc);
|
|
1270 $source .= $ss;
|
|
1271 }
|
|
1272 push @code, pack('C*', BC_STS, BC(length $source), BC(11),
|
|
1273 BC(0), BC(0), BC_GUP);
|
|
1274 $source .= "DO GIVE UP\n";
|
|
1275 my $i_data = $in;
|
|
1276 my $i_fh = Language::INTERCAL::GenericIO->new('STRING', 'w', \$i_data);
|
|
1277 my $o_data = '';
|
|
1278 my $o_fh = Language::INTERCAL::GenericIO->new('STRING', 'r', \$o_data);
|
|
1279 my $b_fh = undef;
|
|
1280 my $a_fh = undef;
|
|
1281 my $a_data = '';
|
|
1282 if (defined $auxfile) {
|
|
1283 $a_fh = Language::INTERCAL::GenericIO->new('STRING', 'r', \$a_data);
|
|
1284 my $b_data = $auxfile->[0];
|
|
1285 $b_fh = Language::INTERCAL::GenericIO->new('STRING', 'w', \$b_data);
|
|
1286 }
|
|
1287 eval {
|
|
1288 $obj->object->source($source);
|
|
1289 $obj->object->code(\@code);
|
|
1290 $obj->setreg('@TRFH', $devnull);
|
|
1291 $obj->setreg('@OWFH', $i_fh);
|
|
1292 $obj->setreg('@OSFH', $o_fh);
|
|
1293 $obj->setreg('@ORFH', $o_fh);
|
|
1294 $obj->setreg('@69', $a_fh) if defined $a_fh;
|
|
1295 $obj->setreg('@68', $b_fh) if defined $b_fh;
|
|
1296 $obj->start()->run()->stop();
|
|
1297 };
|
|
1298 if ($@) {
|
|
1299 print "not ok ", $testnum++, "\n" for (0..$iter);
|
|
1300 print "not ok ", $testnum++, "\n" if defined $auxfile;
|
|
1301 print STDERR "Failed $name: $@";
|
|
1302 next;
|
|
1303 }
|
|
1304 my $os = $obj->splat;
|
|
1305 if (defined $os) {
|
|
1306 print defined $splat && $os == $splat ? "" : "not ", "ok ", $testnum++, "\n";
|
|
1307 print STDERR "Failed $name (*$os)\n" unless defined $splat && $os == $splat;
|
|
1308 } else {
|
|
1309 print defined $splat ? "not " : "", "ok ", $testnum++, "\n";
|
|
1310 print STDERR "Failed $name (no splat)\n" if defined $splat;
|
|
1311 }
|
|
1312 if (defined $auxfile) {
|
|
1313 if ($auxfile->[1] eq $a_data) {
|
|
1314 print "ok ", $testnum++, "\n";
|
|
1315 } else {
|
|
1316 print "not ok ", $testnum++, "\n";
|
|
1317 $a_data =~ s/\n/\\n/g;
|
|
1318 my $x = $auxfile->[1];
|
|
1319 $x =~ s/\n/\\n/g;
|
|
1320 print STDERR "Failed $name (aux output='$a_data' instead of '$x')\n";
|
|
1321 }
|
|
1322 }
|
|
1323 my %out = map { ($_ => 0) } @out;
|
|
1324 if (ref $out && $out->[0] == 1) {
|
|
1325 my $ok = 1;
|
|
1326 for my $o (@out) {
|
|
1327 my $i = index($o_data, $o);
|
|
1328 if ($i < 0) {
|
|
1329 print STDERR "Failed $name: should have printed $o", $o =~ /\n$/ ? '' : "\n";
|
|
1330 $ok = 0;
|
|
1331 } else {
|
|
1332 substr($o_data, $i, length($o)) = '';
|
|
1333 }
|
|
1334 }
|
|
1335 if ($o_data ne '') {
|
|
1336 $ok and print STDERR "Failed $name: should not have printed $o_data", $o_data =~ /\n$/ ? '' : "\n";
|
|
1337 $ok = 0;
|
|
1338 }
|
|
1339 print $ok ? '' : 'not ', "ok ", $testnum++, "\n";
|
|
1340 } else {
|
|
1341 print STDERR "Failed $name: should not have printed $o_data", $o_data =~ /\n$/ ? '' : "\n" if ! exists $out{$o_data};
|
|
1342 print exists $out{$o_data} ? '' : 'not ', "ok ", $testnum++, "\n";
|
|
1343 $out{$o_data}++ if exists $out{$o_data};
|
|
1344 }
|
|
1345 next unless ref $out;
|
|
1346 next if $out->[0] == 1;
|
|
1347 for (my $inum = 1; $inum < $iter; $inum++) {
|
|
1348 $i_data = $in;
|
|
1349 $o_data = '';
|
|
1350 $o_fh->reset;
|
|
1351 eval { $obj->start()->run()->stop() };
|
|
1352 print STDERR "Failed $name: should not have printed $o_data", $o_data =~ /\n$/ ? '' : "\n" if ! exists $out{$o_data};
|
|
1353 print exists $out{$o_data} ? '' : 'not ', "ok ", $testnum++, "\n";
|
|
1354 $out{$o_data}++ if exists $out{$o_data};
|
|
1355 }
|
|
1356 }
|
|
1357
|
|
1358 sub _str {
|
|
1359 my ($str) = @_;
|
|
1360 return (BC_STR, BC(length $str), unpack('C*', $str));
|
|
1361 }
|
|
1362
|