unblock signals before fork, window mgr changes from jg
[unix-history] / usr / src / usr.bin / pascal / pc2 / langpats.c
CommitLineData
08bd3641 1/* Copyright (c) 1979, 1984 Regents of the University of California */
b3e05d18 2
08bd3641 3#ifndef lint
aa2758a3 4static char sccsid[] = "@(#)langpats.c 2.2 (Berkeley) %G%";
08bd3641 5#endif not lint
b3e05d18 6
08bd3641 7#include "inline.h"
af054913 8
a83071b9 9/*
08bd3641 10 * Pattern table for Pascal library routines.
a83071b9 11 */
08bd3641 12struct pats language_ptab[] = {
b3e05d18 13
08bd3641 14#ifdef vax
a83071b9 15/*
08bd3641 16 * General Pascal library routines
a83071b9 17 */
b3df80a8 18 { "2,_ROUND\n",
08bd3641
KM
19" movd (sp)+,r0\n\
20 cvtrdl r0,r0\n" },
b3e05d18 21
b3df80a8 22 { "2,_TRUNC\n",
08bd3641
KM
23" movd (sp)+,r0\n\
24 cvtdl r0,r0\n" },
b3e05d18 25
a83071b9
KM
26 { "1,_ACTFILE\n",
27" movl (sp)+,r1\n\
28 movl 12(r1),r0\n" },
29
6b4e6ddb 30 { "2,_FCALL\n",
08bd3641
KM
31" movl (sp)+,r5\n\
32 movl (sp),r0\n\
33 movc3 4(r0),__disply+8,(r5)\n\
6b4e6ddb 34 movl (sp)+,r0\n\
9d34bc3a 35 movc3 4(r0),8(r0),__disply+8\n" },
b3e05d18 36
25d46c52 37 { "2,_FRTN\n",
6b4e6ddb 38" movl (sp)+,r0\n\
08bd3641
KM
39 movl (sp)+,r5\n\
40 movc3 4(r0),(r5),__disply+8\n" },
b3e05d18 41
25d46c52 42 { "3,_FSAV\n",
08bd3641
KM
43" movl (sp)+,r3\n\
44 movl (sp)+,r4\n\
45 movl (sp),r5\n\
46 movl r3,(r5)\n\
47 ashl $3,r4,4(r5)\n\
48 movc3 4(r5),__disply+8,8(r5)\n\
9d34bc3a 49 movl (sp)+,r0\n" },
b3e05d18 50
a83071b9
KM
51/*
52 * Pascal relational comparisons
53 */
25d46c52 54 { "3,_RELEQ\n",
08bd3641
KM
55" movl (sp)+,r0\n\
56 movl (sp)+,r1\n\
57 movl (sp)+,r3\n\
9d34bc3a 58 movl r0,r4\n\
b3e05d18 591:\n\
f703f747
KM
60 movzwl $65535,r0\n\
61 cmpl r4,r0\n\
945bf1d0 62 jleq 3f\n\
f703f747
KM
63 subl2 r0,r4\n\
64 cmpc3 r0,(r1),(r3)\n\
65 jeql 1b\n\
f703f747 662:\n\
945bf1d0 67 clrl r0\n\
f703f747
KM
68 jbr 4f\n\
693:\n\
945bf1d0
KM
70 cmpc3 r4,(r1),(r3)\n\
71 jneq 2b\n\
72 incl r0\n\
f703f747 734:\n" },
b3e05d18 74
25d46c52 75 { "3,_RELNE\n",
08bd3641
KM
76" movl (sp)+,r0\n\
77 movl (sp)+,r1\n\
78 movl (sp)+,r3\n\
9d34bc3a 79 movl r0,r4\n\
b3e05d18 801:\n\
f703f747
KM
81 movzwl $65535,r0\n\
82 cmpl r4,r0\n\
945bf1d0 83 jleq 3f\n\
f703f747
KM
84 subl2 r0,r4\n\
85 cmpc3 r0,(r1),(r3)\n\
86 jeql 1b\n\
f703f747 872:\n\
b3e05d18 88 movl $1,r0\n\
945bf1d0
KM
89 jbr 4f\n\
903:\n\
91 cmpc3 r4,(r1),(r3)\n\
92 jneq 2b\n\
f703f747 934:\n" },
b3e05d18 94
25d46c52 95 { "3,_RELSLT\n",
08bd3641
KM
96" movl (sp)+,r0\n\
97 movl (sp)+,r1\n\
98 movl (sp)+,r3\n\
9d34bc3a 99 movl r0,r4\n\
945bf1d0 100 jbr 2f\n\
b3e05d18 1011:\n\
f703f747
KM
102 subl2 r0,r4\n\
103 cmpc3 r0,(r1),(r3)\n\
945bf1d0 104 jneq 3f\n\
f703f747 1052:\n\
945bf1d0
KM
106 movzwl $65535,r0\n\
107 cmpl r4,r0\n\
108 jgtr 1b\n\
f703f747
KM
109 cmpc3 r4,(r1),(r3)\n\
1103:\n\
111 jlss 4f\n\
112 clrl r0\n\
113 jbr 5f\n\
1144:\n\
b3e05d18 115 movl $1,r0\n\
f703f747 1165:\n" },
b3e05d18 117
25d46c52 118 { "3,_RELSLE\n",
08bd3641
KM
119" movl (sp)+,r0\n\
120 movl (sp)+,r1\n\
121 movl (sp)+,r3\n\
9d34bc3a 122 movl r0,r4\n\
945bf1d0 123 jbr 2f\n\
b3e05d18 1241:\n\
f703f747
KM
125 subl2 r0,r4\n\
126 cmpc3 r0,(r1),(r3)\n\
945bf1d0 127 jneq 3f\n\
f703f747 1282:\n\
945bf1d0
KM
129 movzwl $65535,r0\n\
130 cmpl r4,r0\n\
131 jgtr 1b\n\
f703f747
KM
132 cmpc3 r4,(r1),(r3)\n\
1333:\n\
134 jleq 4f\n\
135 clrl r0\n\
136 jbr 5f\n\
1374:\n\
b3e05d18 138 movl $1,r0\n\
f703f747 1395:\n" },
b3e05d18 140
25d46c52 141 { "3,_RELSGT\n",
08bd3641
KM
142" movl (sp)+,r0\n\
143 movl (sp)+,r1\n\
144 movl (sp)+,r3\n\
9d34bc3a 145 movl r0,r4\n\
945bf1d0 146 jbr 2f\n\
b3e05d18 1471:\n\
f703f747
KM
148 subl2 r0,r4\n\
149 cmpc3 r0,(r1),(r3)\n\
945bf1d0 150 jneq 3f\n\
f703f747 1512:\n\
945bf1d0
KM
152 movzwl $65535,r0\n\
153 cmpl r4,r0\n\
154 jgtr 1b\n\
f703f747
KM
155 cmpc3 r4,(r1),(r3)\n\
1563:\n\
157 jgtr 4f\n\
158 clrl r0\n\
159 jbr 5f\n\
1604:\n\
b3e05d18 161 movl $1,r0\n\
f703f747 1625:\n" },
b3e05d18 163
25d46c52 164 { "3,_RELSGE\n",
08bd3641
KM
165" movl (sp)+,r0\n\
166 movl (sp)+,r1\n\
167 movl (sp)+,r3\n\
9d34bc3a 168 movl r0,r4\n\
945bf1d0 169 jbr 2f\n\
b3e05d18 1701:\n\
f703f747
KM
171 subl2 r0,r4\n\
172 cmpc3 r0,(r1),(r3)\n\
945bf1d0 173 jneq 3f\n\
f703f747 1742:\n\
945bf1d0
KM
175 movzwl $65535,r0\n\
176 cmpl r4,r0\n\
177 jgtr 1b\n\
f703f747
KM
178 cmpc3 r4,(r1),(r3)\n\
1793:\n\
180 jgeq 4f\n\
181 clrl r0\n\
182 jbr 5f\n\
1834:\n\
b3e05d18 184 movl $1,r0\n\
f703f747 1855:\n" },
b3e05d18 186
a83071b9
KM
187/*
188 * Pascal set operations.
189 */
25d46c52 190 { "4,_ADDT\n",
08bd3641
KM
191" movl (sp)+,r0\n\
192 movl (sp)+,r1\n\
193 movl (sp)+,r2\n\
194 movl (sp)+,r4\n\
b3e05d18 195 movl r0,r3\n\
b3e05d18
KM
1961:\n\
197 bisl3 (r1)+,(r2)+,(r3)+\n\
198 sobgtr r4,1b\n" },
199
25d46c52 200 { "4,_SUBT\n",
08bd3641
KM
201" movl (sp)+,r0\n\
202 movl (sp)+,r1\n\
203 movl (sp)+,r2\n\
204 movl (sp)+,r4\n\
b3e05d18 205 movl r0,r3\n\
b3e05d18
KM
2061:\n\
207 bicl3 (r2)+,(r1)+,(r3)+\n\
208 sobgtr r4,1b\n" },
209
25d46c52 210 { "4,_MULT\n",
08bd3641
KM
211" movl (sp)+,r0\n\
212 movl (sp)+,r1\n\
213 movl (sp)+,r2\n\
214 movl (sp)+,r4\n\
b3e05d18 215 movl r0,r3\n\
b3e05d18
KM
2161:\n\
217 mcoml (r1)+,r5\n\
218 bicl3 r5,(r2)+,(r3)+\n\
219 sobgtr r4,1b\n" },
220
25d46c52 221 { "4,_IN\n",
08bd3641
KM
222" movl (sp)+,r1\n\
223 movl (sp)+,r2\n\
224 movl (sp)+,r3\n\
225 movl (sp)+,r4\n\
0d53952d 226 clrl r0\n\
945bf1d0
KM
227 subl2 r2,r1\n\
228 cmpl r1,r3\n\
f703f747 229 jgtru 1f\n\
945bf1d0
KM
230 jbc r1,(r4),1f\n\
231 incl r0\n\
a83071b9
KM
2321:\n" },
233
234/*
235 * Pascal runtime checks
236 */
237 { "1,_ASRT\n",
08bd3641
KM
238" movl (sp)+,r0\n\
239 tstl r0\n\
a83071b9
KM
240 jneq 1f\n\
241 pushl $0\n\
242 pushl $_EASRT\n\
243 calls $2,_ERROR\n\
2441:\n" },
245
246 { "2,_ASRTS\n",
08bd3641
KM
247" movl (sp)+,r0\n\
248 movl (sp)+,r1\n\
a83071b9
KM
249 tstl r0\n\
250 jneq 1f\n\
251 pushl r1\n\
252 pushl $_EASRTS\n\
253 calls $2,_ERROR\n\
2541:\n" },
255
256 { "1,_CHR\n",
257" movl (sp)+,r0\n\
258 cmpl r0,$127\n\
259 jlequ 1f\n\
260 pushl r0\n\
261 pushl $_ECHR\n\
262 calls $2,_ERROR\n\
2631:\n" },
264
265 { "0,_LINO\n",
266" incl __stcnt\n\
267 cmpl __stcnt,__stlim\n\
268 jlss 1f\n\
269 pushl __stcnt\n\
270 pushl $_ELINO\n\
271 calls $2,_ERROR\n\
2721:\n" },
273
274 { "1,_NIL\n",
275" movl (sp)+,r0\n\
276 cmpl r0,__maxptr\n\
277 jgtr 1f\n\
278 cmpl r0,__minptr\n\
279 jgeq 2f\n\
2801:\n\
281 pushl $0\n\
282 pushl $_ENIL\n\
283 calls $2,_ERROR\n\
2842:\n" },
285
286 { "2,_RANDOM\n",
08bd3641 287" movd (sp)+,r0\n\
a83071b9
KM
288 emul __seed,$1103515245,$0,r0\n\
289 ediv $0x7fffffff,r0,r1,r0\n\
290 movl r0,__seed\n\
291 cvtld r0,r0\n\
292 divd2 $0d2.147483647e+09,r0\n" },
293
294 { "3,_RANG4\n",
08bd3641
KM
295" movl (sp)+,r0\n\
296 movl (sp)+,r1\n\
297 movl (sp)+,r2\n\
a83071b9
KM
298 cmpl r0,r1\n\
299 jlss 1f\n\
300 cmpl r0,r2\n\
301 jleq 2f\n\
3021:\n\
303 pushl r0\n\
304 pushl $_ERANG\n\
305 calls $2,_ERROR\n\
3062:\n" },
307
308 { "2,_RSNG4\n",
08bd3641
KM
309" movl (sp)+,r0\n\
310 movl (sp)+,r1\n\
a83071b9
KM
311 cmpl r0,r1\n\
312 jlequ 1f\n\
313 pushl r0\n\
314 pushl $_ERANG\n\
315 calls $2,_ERROR\n\
3161:\n" },
317
318 { "1,_SEED\n",
08bd3641
KM
319" movl (sp)+,r1\n\
320 movl __seed,r0\n\
321 movl r1,__seed\n" },
a83071b9
KM
322
323 { "3,_SUBSC\n",
08bd3641
KM
324" movl (sp)+,r0\n\
325 movl (sp)+,r1\n\
326 movl (sp)+,r2\n\
a83071b9
KM
327 cmpl r0,r1\n\
328 jlss 1f\n\
329 cmpl r0,r2\n\
330 jleq 2f\n\
3311:\n\
332 pushl r0\n\
333 pushl $_ESUBSC\n\
334 calls $2,_ERROR\n\
3352:\n" },
336
337 { "2,_SUBSCZ\n",
08bd3641
KM
338" movl (sp)+,r0\n\
339 movl (sp)+,r1\n\
a83071b9
KM
340 cmpl r0,r1\n\
341 jlequ 1f\n\
342 pushl r0\n\
343 pushl $_ESUBSC\n\
344 calls $2,_ERROR\n\
3451:\n" },
af054913
KM
346#endif vax
347
348#ifdef mc68000
f83c4f18
KM
349/*
350 * General Pascal library routines
351 */
352 { "_ACTFILE\n",
aa2758a3 353" movl sp@+,a0\n\
f83c4f18
KM
354 movl a0@(12),d0\n" },
355
356 { "_ADDT\n",
aa2758a3
KM
357" movl sp@+,a0\n\
358 movl sp@+,d0\n\
359 movl sp@+,a1\n\
360 movl sp@+,d1\n\
361 movl a0,sp@-\n\
362 movl a2,sp@-\n\
363 movl d0,a2\n\
f83c4f18
KM
364 subql #1,d1\n\
3651:\n\
366 movl a2@+,d0\n\
367 orl a1@+,d0\n\
368 movl d0,a0@+\n\
369 dbra d1,1b\n\
370 movl sp@+,a2\n\
aa2758a3 371 movl sp@+,d0\n" },
f83c4f18
KM
372
373 { "_SUBT\n",
aa2758a3
KM
374" movl sp@+,a0\n\
375 movl sp@+,d0\n\
376 movl sp@+,a1\n\
377 movl sp@+,d1\n\
378 movl a0,sp@-\n\
379 movl a2,sp@-\n\
380 movl d0,a2\n\
f83c4f18
KM
381 subql #1,d1\n\
3821:\n\
383 movl a1@+,d0\n\
384 notl d0\n\
385 andl a2@+,d0\n\
386 movl d0,a0@+\n\
387 dbra d1,1b\n\
388 movl sp@+,a2\n\
aa2758a3 389 movl sp@+,d0\n" },
f83c4f18
KM
390
391 { "_MULT\n",
aa2758a3
KM
392" movl sp@+,a0\n\
393 movl sp@+,d0\n\
394 movl sp@+,a1\n\
395 movl sp@+,d1\n\
396 movl a0,sp@-\n\
397 movl a2,sp@-\n\
398 movl d0,a2\n\
f83c4f18
KM
399 subql #1,d1\n\
4001:\n\
401 movl a2@+,d0\n\
402 andl a1@+,d0\n\
403 movl d0,a0@+\n\
404 dbra d1,1b\n\
405 movl sp@+,a2\n\
aa2758a3 406 movl sp@+,d0\n" },
f83c4f18
KM
407
408 { "_IN\n",
aa2758a3
KM
409" movl sp@+,d0\n\
410 movl sp@+,a0\n\
411 movl sp@+,d1\n\
412 movl sp@+,a1\n\
413 subl a0,d0\n\
414 cmpl d1,d0\n\
a2793457 415 jhi 1f\n\
aa2758a3
KM
416 movl d0,d1\n\
417 lsrl #3,d1\n\
418 btst d0,a1@(0,d1:l)\n\
a2793457 419 jeq 1f\n\
f83c4f18 420 moveq #1,d0\n\
a2793457 421 jra 2f\n\
f83c4f18
KM
4221:\n\
423 moveq #0,d0\n\
4242:\n" },
aa2758a3 425
6dc72518 426 { "_RANG4\n",
aa2758a3
KM
427" movl sp@+,d0\n\
428 movl sp@+,a0\n\
429 movl sp@+,a1\n\
430 cmpl a0,d0\n\
6dc72518 431 jlt 1f\n\
aa2758a3 432 cmpl a1,d0\n\
6dc72518
PA
433 jle 2f\n\
4341:\n\
435 pea _ERANG\n\
436 jbsr _ERROR\n\
437 addqw #4,sp\n\
4382:\n" },
439 { "_RSNG4\n",
aa2758a3
KM
440" movl sp@+,a0\n\
441 movl sp@+,a1\n\
442 cmpl a1,a0\n\
6dc72518
PA
443 jls 1f\n\
444 pea _ERANG\n\
445 jbsr _ERROR\n\
446 addqw #4,sp\n\
4471:\n" },
aa2758a3
KM
448
449 { "_SUBSC\n",
450" movl sp@+,d0\n\
451 movl sp@+,a0\n\
452 movl sp@+,a1\n\
453 cmpl a0,d0\n\
454 jlt 1f\n\
455 cmpl a1,d0\n\
456 jle 2f\n\
4571:\n\
458 pea _ESUBSC\n\
459 jbsr _ERROR\n\
460 addqw #4,sp\n\
4612:\n" },
462
463 { "_SUBSCZ\n",
464" movl sp@+,a0\n\
465 movl sp@+,a1\n\
466 cmpl a1,a0\n\
467 jls 1f\n\
468 pea _ESUBSC\n\
469 jbsr _ERROR\n\
470 addqw #4,sp\n\
4711:\n" },
472
af054913 473#endif mc68000
a83071b9 474
08bd3641 475 { "", "" }
b3e05d18 476};