1COMPILATION LISTING OF SEGMENT nqueens
2          Compiled by: Multics PL/I Compiler, Release 33f, of February 11, 2017
3          Compiled at: Installation and location
4          Compiled on: 08/24/21  1617.6 pst Tue
5              Options: optimize list
6
7        1 nqueens: proc;
8        2     dcl a(11) bin fixed(35);
9        3     dcl count bin fixed(35);
10        4     dcl abs builtin;
11        5     declare n binary fixed (35); /* Counter */
12        6     count = 0;
13        7     call queen(11);
14        8     return;
15        9
16       10     place: procedure (ps) returns (fixed bin (35));
17       11         dcl ps bin fixed(35);
18       12         dcl i  bin fixed(35) init(0);
19       13         do i=1 to ps-1;
20       14             if a(i) = a(ps) then  return(0);
21       15             if abs ( a(i) - a(ps) ) = (ps-i) then return(0);
22       16         end;
23       17         return (1);
24       18     end place;
25       19
26       20     queen: procedure (n);
27       21         dcl n bin fixed (35);
28       22         dcl k bin fixed (35);
29       23         k = 1;
30       24         a(k) = 0;
31       25         do while (k > 0);
32       26             a(k) = a(k) + 1;
33       27             do while ( ( a(k)<= n) & (place(k) =0) );
34       28              a(k) = a(k) +1;
35       29             end;
36       30             if (a(k) <= n) then do;
37       31                 if (k = n ) then do;
38       32                     count = count + 1;
39       33                 end;
40       34                 else do;
41       35                     k= k +1;
42       36                     a(k) = 0;
43       37                 end; /* of inside else */
44       38             end; /* of first if */
45       39             else do;
46       40                k = k -1;
47       41             end;
48       42         end;  /* of external while loop  */
49       43     end queen;
50       44
51       45 end nqueens;
52
53          SOURCE FILES USED IN THIS COMPILATION.
54
55LINE      NUMBER  DATE MODIFIED     NAME                              PATHNAME
56             0    08/14/21  1008.5  nqueens.pl1                       >user_dir_dir>SysAdmin>Repair>nqueens.pl1
57
58          NAMES DECLARED IN THIS COMPILATION.
59
60IDENTIFIER               OFFSET    LOC STORAGE CLASS   DATA TYPE                ATTRIBUTES AND REFERENCES
61                                                                                (* indicates a set context)
62
63NAMES DECLARED BY DECLARE STATEMENT.
64a                               000100 automatic       fixed bin(35,0)          array dcl 2 set ref 14 14 15 15 24* 26* 26 27 28* 28
65                                                                                  30 36*
66abs                                                    builtin function         dcl 4 ref 15
67count                           000113 automatic       fixed bin(35,0)          dcl 3 set ref 6* 32* 32
68i                               000122 automatic       fixed bin(35,0)          initial dcl 12 set ref 12* 13* 14 15 15*
69k                               000134 automatic       fixed bin(35,0)          dcl 22 set ref 23* 24 25 26 26 27 27* 28 28 30 31
70                                                                                  35* 35 36 40* 40
71n                                      parameter       fixed bin(35,0)          dcl 21 ref 20 27 30 31
72ps                                     parameter       fixed bin(35,0)          dcl 11 ref 10 13 14 15 15
73
74NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED.
75n                                      automatic       fixed bin(35,0)          dcl 5
76
77NAMES DECLARED BY EXPLICIT CONTEXT.
78nqueens                         000002 constant        entry                    external dcl 1
79place                           000015 constant        entry                    internal dcl 10 ref 27
80queen                           000076 constant        entry                    internal dcl 20 ref 7
81
82THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION.
83
84STORAGE REQUIREMENTS FOR THIS PROGRAM.
85
86          Object    Text      Link      Symbol    Defs      Static
87Start          0       0       224         234     200         234
88Length       376     200        10         125      23           0
89
90BLOCK NAME                   STACK SIZE     TYPE            WHY NONQUICK/WHO SHARES STACK FRAME
91nqueens                              97 external procedure  is an external procedure.
92place                                   internal procedure  shares stack frame of external procedure nqueens.
93queen                                   internal procedure  shares stack frame of external procedure nqueens.
94
95STORAGE FOR AUTOMATIC VARIABLES.
96
97STACK FRAME                 LOC IDENTIFIER                  BLOCK NAME
98nqueens                  000100 a                           nqueens
99                         000113 count                       nqueens
100                         000122 i                           place
101                         000134 k                           queen
102
103THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM.
104r_e_as              r_le_a              return_mac          ext_entry
105
106NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM.
107
108NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM.
109
110
111
112CONSTANTS
113000166  aa     000004000000
114000167  aa     000000000000
115000170  aa     600000000041
116000171  aa     000134000000
117000172  aa     600000000041
118000173  aa     000140000000
119
120000174  aa     000002000000
121000175  aa     000000000000
122000176  aa     600000000041
123000177  aa     000135000000
124
125000000  aa     404000000043
126
127BEGIN PROCEDURE nqueens
128ENTRY TO nqueens                                            STATEMENT 1 ON LINE 1
129nqueens: proc;
130
131000001  da     000017200000
132000002  aa   000160 6270 00   eax7      112
133000003  aa  7 00034 3521 20   epp2      pr7|28,*
134000004  aa  2 01045 2721 00   tsp2      pr2|549             ext_entry
135000005  aa     000000000000
136000006  aa     000000000000
137                                                            STATEMENT 1 ON LINE 6
138    count = 0;
139
140000007  aa  6 00113 4501 00   stz       pr6|75              count
141                                                            STATEMENT 1 ON LINE 7
142    call queen(11);
143
144000010  aa   000013 2360 07   ldq       11,dl
145000011  aa  6 00135 7561 00   stq       pr6|93
146000012  aa   000162 3520 04   epp2      114,ic              000174 = 000002000000
147000013  aa   000063 6700 04   tsp4      51,ic               000076
148                                                            STATEMENT 1 ON LINE 8
149    return;
150
151000014  aa  0 00631 7101 00   tra       pr0|409             return_mac
152                                                            STATEMENT 1 ON LINE 45
153end nqueens;
154
155BEGIN PROCEDURE place
156ENTRY TO place                                              STATEMENT 1 ON LINE 10
157    place: procedure (ps) returns (fixed bin (35));
158
159000015  aa  6 00114 6501 00   spri4     pr6|76
160000016  aa  6 00116 2521 00   spri2     pr6|78
161                                                            STATEMENT 1 ON LINE 12
162000017  aa  6 00122 4501 00   stz       pr6|82              i
163                                                            STATEMENT 1 ON LINE 13
164        do i=1 to ps-1;
165
166000020  aa  2 00002 3361 20   lcq       pr2|2,*             ps
167000021  aa   000044 7770 00   llr       36
168000022  aa   000044 7330 00   lrs       36
169000023  aa   000001 0330 07   adl       1,dl
170000024  aa   000000 5330 00   negl      0
171000025  aa  6 00124 7571 00   staq      pr6|84
172000026  aa   000001 2360 07   ldq       1,dl
173000027  aa  6 00122 7561 00   stq       pr6|82              i
174000030  aa  6 00122 2351 00   lda       pr6|82              i
175000031  aa   000044 7330 00   lrs       36
176000032  aa  6 00124 1171 00   cmpaq     pr6|84
177000033  aa   000037 6054 04   tpnz      31,ic               000072
178                                                            STATEMENT 1 ON LINE 14
179            if a(i) = a(ps) then  return(0);
180
181000034  aa  6 00122 7271 00   lxl7      pr6|82              i
182000035  aa  6 00077 2361 17   ldq       pr6|63,7            a
183000036  aa  6 00116 3735 20   epp7      pr6|78,*
184000037  aa  7 00002 7261 20   lxl6      pr7|2,*             ps
185000040  aa  6 00077 1161 16   cmpq      pr6|63,6            a
186000041  aa   000003 6010 04   tnz       3,ic                000044
187000042  aa  7 00004 4501 20   stz       pr7|4,*
188000043  aa  6 00114 6101 00   rtcd      pr6|76
189                                                            STATEMENT 1 ON LINE 15
190            if abs ( a(i) - a(ps) ) = (ps-i) then return(0);
191
192000044  aa  7 00002 3361 20   lcq       pr7|2,*             ps
193000045  aa   000044 7770 00   llr       36
194000046  aa   000044 7330 00   lrs       36
195000047  aa  6 00122 0331 00   adl       pr6|82              i
196000050  aa   000000 5330 00   negl      0
197000051  aa  6 00136 7571 00   staq      pr6|94
198000052  aa  6 00077 3361 17   lcq       pr6|63,7            a
199000053  aa   000044 7770 00   llr       36
200000054  aa   000044 7330 00   lrs       36
201000055  aa  6 00077 0331 16   adl       pr6|63,6            a
202000056  aa   000000 5330 00   negl      0
203000057  aa   000002 6050 04   tpl       2,ic                000061
204000060  aa   000000 5330 00   negl      0
205000061  aa  6 00136 1171 00   cmpaq     pr6|94
206000062  aa   000003 6010 04   tnz       3,ic                000065
207000063  aa  7 00004 4501 20   stz       pr7|4,*
208000064  aa  6 00114 6101 00   rtcd      pr6|76
209                                                            STATEMENT 1 ON LINE 16
210        end;
211
212000065  aa  6 00122 2351 00   lda       pr6|82              i
213000066  aa   000044 7330 00   lrs       36
214000067  aa   000001 0330 07   adl       1,dl
215000070  aa  6 00122 7561 00   stq       pr6|82              i
216000071  aa   777737 7100 04   tra       -33,ic              000030
217                                                            STATEMENT 1 ON LINE 17
218        return (1);
219
220000072  aa   000001 2360 07   ldq       1,dl
221000073  aa  6 00116 3735 20   epp7      pr6|78,*
222000074  aa  7 00004 7561 20   stq       pr7|4,*
223000075  aa  6 00114 6101 00   rtcd      pr6|76
224                                                            STATEMENT 1 ON LINE 18
225    end place;
226
227  END PROCEDURE place
228BEGIN PROCEDURE queen
229ENTRY TO queen                                              STATEMENT 1 ON LINE 20
230    queen: procedure (n);
231000076  aa  6 00126 6501 00   spri4     pr6|86
232000077  aa  6 00130 2521 00   spri2     pr6|88
233                                                            STATEMENT 1 ON LINE 23
234        k = 1;
235
236000100  aa   000001 2360 07   ldq       1,dl
237000101  aa  6 00134 7561 00   stq       pr6|92              k
238                                                            STATEMENT 1 ON LINE 24
239        a(k) = 0;
240
241000102  aa  6 00077 4501 06   stz       pr6|63,ql           a
242                                                            STATEMENT 1 ON LINE 25
243        do while (k > 0);
244
245000103  aa   000000 0110 03   nop       0,du
246000104  aa  6 00134 2361 00   ldq       pr6|92              k
247000105  aa   000060 6044 04   tmoz      48,ic               000165
248                                                            STATEMENT 1 ON LINE 26
249            a(k) = a(k) + 1;
250
251000106  aa  6 00077 2351 06   lda       pr6|63,ql           a
252000107  aa   000044 7330 00   lrs       36
253000110  aa   000001 0330 07   adl       1,dl
254000111  aa  6 00134 7271 00   lxl7      pr6|92              k
255000112  aa  6 00077 7561 17   stq       pr6|63,7            a
256                                                            STATEMENT 1 ON LINE 27
257            do while ( ( a(k)<= n) & (place(k) =0) );
258
259000113  aa   000000 0110 03   nop       0,du
260000114  aa   000052 3520 04   epp2      42,ic               000166 = 000004000000
261000115  aa   777700 6700 04   tsp4      -64,ic              000015
262000116  aa  6 00140 2361 00   ldq       pr6|96
263000117  aa  0 00512 7001 00   tsx0      pr0|330             r_e_as
264000120  aa  6 00140 7551 00   sta       pr6|96
265000121  aa  6 00134 7271 00   lxl7      pr6|92              k
266000122  aa  6 00077 2361 17   ldq       pr6|63,7            a
267000123  aa  6 00130 3735 20   epp7      pr6|88,*
268000124  aa  7 00002 1161 20   cmpq      pr7|2,*             n
269000125  aa  0 00520 7001 00   tsx0      pr0|336             r_le_a
270000126  aa  6 00140 3151 00   cana      pr6|96
271000127  aa   000006 6000 04   tze       6,ic                000135
272                                                            STATEMENT 1 ON LINE 28
273             a(k) = a(k) +1;
274
275000130  aa  6 00077 2351 17   lda       pr6|63,7            a
276000131  aa   000044 7330 00   lrs       36
277000132  aa   000001 0330 07   adl       1,dl
278000133  aa  6 00077 7561 17   stq       pr6|63,7            a
279                                                            STATEMENT 1 ON LINE 29
280            end;
281
282000134  aa   777760 7100 04   tra       -16,ic              000114
283                                                            STATEMENT 1 ON LINE 30
284            if (a(k) <= n) then do;
285
286000135  aa  6 00077 2361 17   ldq       pr6|63,7            a
287000136  aa  7 00002 1161 20   cmpq      pr7|2,*             n
288000137  aa   000017 6054 04   tpnz      15,ic               000156
289                                                            STATEMENT 1 ON LINE 31
290                if (k = n ) then do;
291
292000140  aa  6 00134 2361 00   ldq       pr6|92              k
293000141  aa  7 00002 1161 20   cmpq      pr7|2,*             n
294000142  aa   000006 6010 04   tnz       6,ic                000150
295                                                            STATEMENT 1 ON LINE 32
296                    count = count + 1;
297
298000143  aa  6 00113 2351 00   lda       pr6|75              count
299000144  aa   000044 7330 00   lrs       36
300000145  aa   000001 0330 07   adl       1,dl
301000146  aa  6 00113 7561 00   stq       pr6|75              count
302                                                            STATEMENT 1 ON LINE 33
303                end;
304
305000147  aa   777735 7100 04   tra       -35,ic              000104
306                                                            STATEMENT 1 ON LINE 34
307                else do;
308
309                                                            STATEMENT 1 ON LINE 35
310                    k= k +1;
311
312000150  aa   000044 7770 00   llr       36
313000151  aa   000044 7330 00   lrs       36
314000152  aa   000001 0330 07   adl       1,dl
315000153  aa  6 00134 7561 00   stq       pr6|92              k
316                                                            STATEMENT 1 ON LINE 36
317                    a(k) = 0;
318
319000154  aa  6 00077 4501 06   stz       pr6|63,ql           a
320                                                            STATEMENT 1 ON LINE 37
321                end;
322
323                                                            STATEMENT 1 ON LINE 38
324            end;
325
326000155  aa   777727 7100 04   tra       -41,ic              000104
327                                                            STATEMENT 1 ON LINE 39
328            else do;
329
330                                                            STATEMENT 1 ON LINE 40
331               k = k -1;
332
333000156  aa  6 00134 3361 00   lcq       pr6|92              k
334000157  aa   000044 7770 00   llr       36
335000160  aa   000044 7330 00   lrs       36
336000161  aa   000001 0330 07   adl       1,dl
337000162  aa   000000 5330 00   negl      0
338000163  aa  6 00134 7561 00   stq       pr6|92              k
339                                                            STATEMENT 1 ON LINE 41
340            end;
341
342                                                            STATEMENT 1 ON LINE 42
343        end;
344
345000164  aa   777720 7100 04   tra       -48,ic              000104
346                                                            STATEMENT 1 ON LINE 43
347    end queen;
348
349000165  aa  6 00126 6101 00   rtcd      pr6|86
350  END PROCEDURE queen
351  END PROCEDURE nqueens
352