source: trunk/lisp/lispm/defmic.lisp @ 226

Last change on this file since 226 was 226, checked in by rjs, 3 years ago

Initial versions.

File size: 21.9 KB
Line 
1;;; -*-LISP-*-
2
3;       ** (c) Copyright 1980 Massachusetts Institute of Technology **
4;;; This file contains all the definitions for the machine instruction set
5;;; and some other stuff needed by the compiler.
6
7
8;;; This section contains various information regarding the misc. instructions
9;;; on the Lisp Machine.  Every entry is of the form:
10;;; (DEFMIC <name> <opcode> <arglist> <lisp-function-p> <no-QINTCMP>)
11;;;   <name> is the name of the instruction.  If the Lisp function name
12;;;             is different from the instruction name, this is a cons
13;;;             of the function name and the instruction name (e.g. (CAR . M-CAR))
14;;;   <opcode> is the number which appears in the macro-instruction.
15;;;   <arglist> is a list resembling a lambda-list for the Lisp function
16;;;             corresponding to the instruction.  & keywords not allowed.
17;;;   <lisp-function-p> should be either T or NIL.  If T, then there
18;;;             will be a Lisp function defined in the initial Lisp
19;;;             environment (available in the interpreter) corresponding
20;;;             to the instruction.
21;;;   <no-QINTCMP> is OPTIONAL.  If it is not present it is taken to be NIL.
22;;;             If it is non-NIL, then no QINTCMP property will be created
23;;;             for the symbol.  Otherwise the QINTCMP property is created from
24;;;             the length of <arglist>.  The QINTCMP property permits the
25;;;             compiler to compile calls to this function as a misc instruction.
26
27;240 241 FREE
28(DEFMIC (CAR . M-CAR) 242 (X) T T)
29(DEFMIC (CDR . M-CDR) 243 (X) T T)
30(DEFMIC (CAAR . M-CAAR) 244 (X) T T)
31(DEFMIC (CADR . M-CADR) 245 (X) T T)
32(DEFMIC (CDAR . M-CDAR) 246 (X) T T)
33(DEFMIC (CDDR . M-CDDR) 247 (X) T T)
34(DEFMIC CAAAR 250 (X) T)
35(DEFMIC CAADR 251 (X) T)
36(DEFMIC CADAR 252 (X) T)
37(DEFMIC CADDR 253 (X) T)
38(DEFMIC CDAAR 254 (X) T)
39(DEFMIC CDADR 255 (X) T)
40(DEFMIC CDDAR 256 (X) T)
41(DEFMIC CDDDR 257 (X) T)
42(DEFMIC CAAAAR 260 (X) T)
43(DEFMIC CAAADR 261 (X) T)
44(DEFMIC CAADAR 262 (X) T)
45(DEFMIC CAADDR 263 (X) T)
46(DEFMIC CADAAR 264 (X) T)
47(DEFMIC CADADR 265 (X) T)
48(DEFMIC CADDAR 266 (X) T)
49(DEFMIC CADDDR 267 (X) T)
50(DEFMIC CDAAAR 270 (X) T)
51(DEFMIC CDAADR 271 (X) T)
52(DEFMIC CDADAR 272 (X) T)
53(DEFMIC CDADDR 273 (X) T)
54(DEFMIC CDDAAR 274 (X) T)
55(DEFMIC CDDADR 275 (X) T)
56(DEFMIC CDDDAR 276 (X) T)
57(DEFMIC CDDDDR 277 (X) T)
58
59;300-302 FREE
60(DEFMIC %DATA-TYPE 303 (X) T)
61(DEFMIC %POINTER 304 (X) T)
62;305-307 FREE
63(DEFMIC %MAKE-POINTER 310 (DTP ADDRESS) T)
64(DEFMIC %SPREAD 311 (LIST) NIL T)
65(DEFMIC %P-STORE-CONTENTS 312 (POINTER X) T)
66(DEFMIC %LOGLDB 313 (PPSS WORD) T)    ;THESE DONT COMPLAIN ABOUT LOADING/CLOBBERING SIGN
67(DEFMIC %LOGDPB 314 (VALUE PPSS WORD) T)  ;RESULT IS ALWAYS A FIXNUM
68(DEFMIC LDB 315 (PPSS WORD) T)
69(DEFMIC DPB 316 (VALUE PPSS WORD) T)
70(DEFMIC %P-STORE-TAG-AND-POINTER 317 (POINTER MISC-FIELDS POINTER-FIELD) T)
71
72(DEFMIC GET 320 (SYMBOL PROPNAME) T)
73(DEFMIC GETL 321 (SYMBOL PROPLIST) T)
74(DEFMIC ASSQ 322 (X ALIST) T)
75(DEFMIC LAST 323 (LIST) T)
76(DEFMIC LENGTH 324 (LIST) T)
77(DEFMIC 1+ 325 (N) T)
78(DEFMIC 1- 326 (N) T)
79(DEFMIC RPLACA 327 (CONS X) T)
80(DEFMIC RPLACD 330 (CONS X) T)
81(DEFMIC ZEROP 331 (NUMBER) T)
82(DEFMIC SET 332 (SYMBOL X) T)
83;333 FREE
84;334 FREE
85;335 FREE
86;(DEFMIC STORE 336 )
87(DEFMIC XSTORE 337 (NEWDATA ARRAYREF) T)
88
89(DEFMIC FALSE 340 () T)
90(DEFMIC TRUE 341 () T)
91(DEFMIC NOT 342 (X) T)
92(DEFMIC (NULL . NOT) 342 (X) T)
93(DEFMIC ATOM 343 (X) T)
94(DEFMIC ODDP 344 (NUMBER) T)
95(DEFMIC EVENP 345 (NUMBER) T)
96(DEFMIC %HALT 346 () T)
97(DEFMIC GET-PNAME 347 (SYMBOL) T)
98(DEFMIC LSH 350 (N NBITS) T)
99(DEFMIC ROT 351 (N NBITS) T)
100(DEFMIC *BOOLE 352 (FN ARG1 ARG2) T)
101(DEFMIC NUMBERP 353 (X) T)
102(DEFMIC PLUSP 354 (NUMBER) T)
103(DEFMIC MINUSP 355 (NUMBER) T)
104(DEFMIC \ 356 (X Y) T)
105(DEFMIC MINUS 357 (NUMBER) T)
106(DEFMIC PRINT-NAME-CELL-LOCATION 360 (SYMBOL) T)
107(DEFMIC VALUE-CELL-LOCATION 361 (SYMBOL) T)
108(DEFMIC FUNCTION-CELL-LOCATION 362 (SYMBOL) T)
109(DEFMIC PROPERTY-CELL-LOCATION 363 (SYMBOL) T)
110(DEFMIC NCONS 364 (X) T)
111(DEFMIC NCONS-IN-AREA 365 (X AREA) T)
112(DEFMIC CONS 366 (X Y) T)
113(DEFMIC CONS-IN-AREA 367 (X Y AREA) T)
114(DEFMIC XCONS 370 (X Y) T)
115(DEFMIC XCONS-IN-AREA 371 (X Y AREA) T)
116;(DEFMIC ARRAY-DIMENSION-N 372 (---) T)
117(DEFMIC SYMEVAL 373 (SYMBOL) T)
118;(DEFMIC %AREA-RELATIVE-CONTENTS 374 (---) T)
119(DEFMIC MAKE-LIST 375 (AREA LENGTH) T)
120(DEFMIC %CALL-MULT-VALUE 376 () NIL T)
121(DEFMIC %CALL0-MULT-VALUE 377 () NIL T)
122(DEFMIC %RETURN-2 400 () NIL T)
123(DEFMIC %RETURN-3 401 () NIL T)
124(DEFMIC %RETURN-N 402 () NIL T)
125(DEFMIC RETURN-NEXT-VALUE 403 (X) NIL)
126(DEFMIC RETURN-LIST 404 (VALUES) NIL T)
127;(DEFMIC APPLY 405 )
128(DEFMIC BIND 406 (POINTER X) NIL)
129;(DEFMIC GET-MACRO-ARG-DESC-POINTER 407 )
130(DEFMIC MEMQ 410 (X LIST) T)
131(DEFMIC (< . M-<) 411 (NUM1 NUM2) T)
132(DEFMIC (> . M->) 412 (NUM1 NUM2) T)
133(DEFMIC (= . M-=) 413 (NUM1 NUM2) T)
134(DEFMIC CHAR-EQUAL 414 (CH1 CH2) T)
135(DEFMIC %STRING-SEARCH-CHAR 415 (CHAR STRING START END) T)
136(DEFMIC %STRING-EQUAL 416 (STRING1 INDEX1 STRING2 INDEX2 COUNT) T)
137(DEFMIC NTH 417 (N LIST) T)
138(DEFMIC NTHCDR 420 (N LIST) T)
139(DEFMIC (*PLUS . M-+) 421 (NUM1 NUM2) T)
140(DEFMIC (*DIF . M--) 422 (NUM1 NUM2) T)
141(DEFMIC (*TIMES . M-*) 423 (NUM1 NUM2) T)
142(DEFMIC (*QUO . M-//) 424 (NUM1 NUM2) T)
143(DEFMIC (*LOGAND . M-LOGAND) 425 (NUM1 NUM2) T)
144(DEFMIC (*LOGXOR . M-LOGXOR) 426 (NUM1 NUM2) T)
145(DEFMIC (*LOGIOR . M-LOGIOR) 427 (NUM1 NUM2) T)
146(DEFMIC ARRAY-LEADER 430 (ARRAY INDEX) T)
147(DEFMIC STORE-ARRAY-LEADER 431 (X ARRAY INDEX) T)
148(DEFMIC GET-LIST-POINTER-INTO-ARRAY 432 (ARRAY) T)
149(DEFMIC ARRAY-PUSH 433 (ARRAY X) T)
150(DEFMIC APPLY 434 (FN ARGS) T)
151;435-441 FREE
152(DEFMIC %P-FLAG-BIT 442 (POINTER) T)
153(DEFMIC %P-CDR-CODE 443 (POINTER) T)
154(DEFMIC %P-DATA-TYPE 444 (POINTER) T)
155(DEFMIC %P-POINTER 445 (POINTER) T)
156(DEFMIC %PAGE-TRACE 446 (TABLE) T)
157(DEFMIC %P-STORE-FLAG-BIT 447 (POINTER FLAG-BIT) T)
158(DEFMIC %P-STORE-CDR-CODE 450 (POINTER CDR-CODE) T)
159(DEFMIC %P-STORE-DATA-TYPE 451 (POINTER DATA-TYPE) T)
160(DEFMIC %P-STORE-POINTER 452 (POINTER POINTER) T)
161;453-455 FREE
162(DEFMIC %CATCH-OPEN 456 () NIL T)
163(DEFMIC %CATCH-OPEN-MV 457 () NIL T)
164;461, 462 FREE
165(DEFMIC %FEXPR-CALL 462 () NIL T)
166(DEFMIC %FEXPR-CALL-MV 463 () NIL T)
167(DEFMIC %LEXPR-CALL 464 () NIL T)
168(DEFMIC %LEXPR-CALL-MV 465 () NIL T)
169(DEFMIC *CATCH 466 (TAG FORM) T T)
170;467 FREE
171(DEFMIC *THROW 470 (TAG VALUE) T)
172(DEFMIC %XBUS-WRITE-SYNC 471 (IO-ADDR WORD DELAY SYNC-LOC SYNC-MASK SYNC-VAL) T)
173(DEFMIC %P-LDB 472 (PPSS POINTER) T)
174(DEFMIC %P-DPB 473 (VALUE PPSS POINTER) T)
175(DEFMIC MASK-FIELD 474 (PPSS FIXNUM) T)
176(DEFMIC %P-MASK-FIELD 475  (PPSS POINTER) T)
177(DEFMIC DEPOSIT-FIELD 476 (VALUE PPSS FIXNUM) T)
178(DEFMIC %P-DEPOSIT-FIELD 477 (VALUE PPSS POINTER) T)
179(DEFMIC COPY-ARRAY-CONTENTS 500 (FROM TO) T)
180(DEFMIC COPY-ARRAY-CONTENTS-AND-LEADER 501 (FROM TO) T)
181(DEFMIC %FUNCTION-INSIDE-SELF 502 () T)
182(DEFMIC ARRAY-HAS-LEADER-P 503 (ARRAY) T)
183(DEFMIC COPY-ARRAY-PORTION 504 (FROM-ARRAY FROM-START FROM-END TO-ARRAY TO-START TO-END) T)
184(DEFMIC FIND-POSITION-IN-LIST 505 (X LIST) T)
185;(DEFMIC FIND-POSITION-IN-LIST-EQUAL 506 )
186(DEFMIC G-L-P 507 (ARRAY) T)
187(DEFMIC FIND-POSITION-IN-VECTOR 510 (X LIST) NIL)
188;(DEFMIC FIND-POSITION-IN-VECTOR-EQUAL 511 )
189(DEFMIC AR-1 512 (ARRAY SUB) T)
190(DEFMIC AR-2 513 (ARRAY SUB1 SUB2) T)
191(DEFMIC AR-3 514 (ARRAY SUB1 SUB2 SUB3) T)
192(DEFMIC AS-1 515 (VALUE ARRAY SUB) T)
193(DEFMIC AS-2 516 (VALUE ARRAY SUB1 SUB2) T)
194(DEFMIC AS-3 517 (VALUE ARRAY SUB1 SUB2 SUB3) T)
195(DEFMIC %INSTANCE-REF 520 (INSTANCE INDEX) T)
196(DEFMIC %INSTANCE-LOC 521 (INSTANCE INDEX) T)
197(DEFMIC %INSTANCE-SET 522 (VAL INSTANCE INDEX) T)
198;523-525 FREE
199(DEFMIC %GC-CONS-WORK 526 (NQS) T)
200(DEFMIC %P-CONTENTS-OFFSET 527 (POINTER OFFSET) T)
201(DEFMIC %DISK-RESTORE 530 (PARTITION-HIGH-16-BITS LOW-16-BITS) T)
202(DEFMIC %DISK-SAVE 531 (MAIN-MEMORY-SIZE PARTITION-HIGH-16-BITS LOW-16-BITS) T)
203(DEFMIC %ARGS-INFO 532 (FUNCTION) T)
204(DEFMIC %OPEN-CALL-BLOCK 533 (FUNCTION ADI-PAIRS DESTINATION) NIL)
205(DEFMIC %PUSH 534 (X) NIL)
206(DEFMIC %ACTIVATE-OPEN-CALL-BLOCK 535 () NIL)
207(DEFMIC %ASSURE-PDL-ROOM 536 (ROOM) NIL)
208(DEFMIC STACK-GROUP-RETURN 537 (X) T)
209;(DEFMIC %STACK-GROUP-RETURN-MULTI 540 )
210;541-542 FREE
211(DEFMIC %CALL-MULT-VALUE-LIST 543 () NIL T)
212(DEFMIC %CALL0-MULT-VALUE-LIST 544 () NIL T)
213(DEFMIC %GC-SCAV-RESET 545 (REGION) T)
214(DEFMIC %P-STORE-CONTENTS-OFFSET 546 (X POINTER OFFSET) T)
215(DEFMIC %GC-FREE-REGION 547 (REGION) T)
216(DEFMIC %GC-FLIP 550 (REGION) T)
217(DEFMIC ARRAY-LENGTH 551 (ARRAY) T)
218(DEFMIC ARRAY-ACTIVE-LENGTH 552 (ARRAY) T)
219(DEFMIC %COMPUTE-PAGE-HASH 553 (ADDR) T)
220(DEFMIC GET-LOCATIVE-POINTER-INTO-ARRAY 554 (ARRAY-REF) T)
221(DEFMIC %UNIBUS-READ 555 (UNIBUS-ADDR) T)
222(DEFMIC %UNIBUS-WRITE 556 (UNIBUS-ADDR WORD) T)
223(DEFMIC %GC-SCAVENGE 557 (WORK-UNITS) T)
224(DEFMIC %CHAOS-WAKEUP 560 () T)
225(DEFMIC %AREA-NUMBER 561 (X) T)
226(DEFMIC *MAX 562 (NUM1 NUM2) T)
227(DEFMIC *MIN 563 (NUM1 NUM2) T)
228(DEFMIC CLOSURE 565 (SYMBOL-LIST FUNCTION) T)
229;(DEFMIC DOWNWARD-CLOSURE 566 (SYMBOL-LIST FUNCTION) T)
230(DEFMIC LISTP 567 (X) T)
231(DEFMIC NLISTP 570 (X) T)
232(DEFMIC SYMBOLP 571 (X) T)
233(DEFMIC NSYMBOLP 572 (X) T)
234(DEFMIC ARRAYP 573 (X) T)
235(DEFMIC FBOUNDP 574 (SYMBOL) T)
236(DEFMIC STRINGP 575 (X) T)
237(DEFMIC BOUNDP 576 (SYMBOL) T)
238(DEFMIC \\ 577 (NUM1 NUM2) T)
239(DEFMIC FSYMEVAL 600 (SYMBOL) T)
240(DEFMIC AP-1 601 (ARRAY SUB) T)
241(DEFMIC AP-2 602 (ARRAY SUB1 SUB2) T)
242(DEFMIC AP-3 603 (ARRAY SUB1 SUB2 SUB3) T)
243(DEFMIC AP-LEADER 604 (ARRAY SUB) T)
244(DEFMIC %P-LDB-OFFSET 605 (PPSS POINTER OFFSET) T)
245(DEFMIC %P-DPB-OFFSET 606 (VALUE PPSS POINTER OFFSET) T)
246(DEFMIC %P-MASK-FIELD-OFFSET 607 (PPSS POINTER OFFSET) T)
247(DEFMIC %P-DEPOSIT-FIELD-OFFSET 610 (VALUE PPSS POINTER OFFSET) T)
248(DEFMIC %MULTIPLY-FRACTIONS 611 (NUM1 NUM2) T)
249(DEFMIC %DIVIDE-DOUBLE 612 (HIGH-DIVIDEND LOW-DIVIDEND DIVISOR) T)
250(DEFMIC %REMAINDER-DOUBLE 613 (HIGH-DIVIDEND LOW-DIVIDEND DIVISOR) T)
251(DEFMIC HAULONG 614 (NUM) T)
252(DEFMIC %ALLOCATE-AND-INITIALIZE 615 (RETURN-DTP HEADER-DTP HEADER WORD2 AREA NQS) T)
253(DEFMIC %ALLOCATE-AND-INITIALIZE-ARRAY 616 (HEADER INDEX-LENGTH LEADER-LENGTH AREA NQS) T)
254(DEFMIC %MAKE-POINTER-OFFSET 617 (NEW-DTP POINTER OFFSET) T)
255(DEFMIC ^ 620 (NUM EXPT) T)
256(DEFMIC %CHANGE-PAGE-STATUS 621 (VIRT-ADDR SWAP-STATUS ACCESS-AND-META) T)
257(DEFMIC %CREATE-PHYSICAL-PAGE 622 (PHYS-ADDR) T)
258(DEFMIC %DELETE-PHYSICAL-PAGE 623 (PHYS-ADDR) T)
259(DEFMIC %24-BIT-PLUS 624 (NUM1 NUM2) T)
260(DEFMIC %24-BIT-DIFFERENCE 625 (NUM1 NUM2) T)
261(DEFMIC %24-BIT-TIMES 626 (NUM1 NUM2) T)
262(DEFMIC ABS 627 (NUM) T)
263(DEFMIC %POINTER-DIFFERENCE 630 (PTR1 PTR2) T)
264(DEFMIC %P-CONTENTS-AS-LOCATIVE 631 (POINTER) T)
265(DEFMIC %P-CONTENTS-AS-LOCATIVE-OFFSET 632 (POINTER OFFSET) T)
266(DEFMIC (EQ . M-EQ) 633 (X Y) T)
267(DEFMIC %STORE-CONDITIONAL 634 (POINTER OLD NEW) T)
268(DEFMIC %STACK-FRAME-POINTER 635 () NIL)
269(DEFMIC *UNWIND-STACK 636 (TAG VALUE FRAME-COUNT ACTION) T)
270(DEFMIC %XBUS-READ 637 (IO-ADDR) T)
271(DEFMIC %XBUS-WRITE 640 (IO-ADDR WORD) T)
272(DEFMIC PACKAGE-CELL-LOCATION 641 (SYMBOL) T)
273(DEFMIC MOVE-PDL-TOP 642 NIL NIL T)
274(DEFMIC SHRINK-PDL-SAVE-TOP 643 (VALUE-TO-MOVE N-SLOTS) NIL T)
275(DEFMIC SPECIAL-PDL-INDEX 644 NIL NIL T)
276(DEFMIC UNBIND-TO-INDEX 645 (SPECIAL-PDL-INDEX) NIL T)
277(DEFMIC UNBIND-TO-INDEX-MOVE 646 (SPECIAL-PDL-INDEX VALUE-TO-MOVE) NIL T)
278(DEFMIC FIX 647 (NUMBER) T)
279(DEFMIC FLOAT 650 (NUMBER) T)
280(DEFMIC SMALL-FLOAT 651 (NUMBER) T)
281(DEFMIC %FLOAT-DOUBLE 652 (NUMBER NUMBER) T)
282(DEFMIC BIGNUM-TO-ARRAY 653 (BIGNUM BASE) T)
283(DEFMIC ARRAY-TO-BIGNUM 654 (ARRAY BASE SIGN) T)
284;655 FREE
285(DEFMIC %WRITE-INTERNAL-PROCESSOR-MEMORIES 656 (CODE ADR D-HI D-LOW) T)
286;657 FREE
287(DEFMIC %REGION-NUMBER 660 (PTR) T)
288(DEFMIC %FIND-STRUCTURE-HEADER 661 (PTR) T)
289(DEFMIC %STRUCTURE-BOXED-SIZE 662 (PTR) T)
290(DEFMIC %STRUCTURE-TOTAL-SIZE 663 (PTR) T)
291(DEFMIC %MAKE-REGION 664 (BITS SIZE) T)
292(DEFMIC BITBLT 665 (ALU WIDTH HEIGHT FROM-ARRAY FROM-X FROM-Y TO-ARRAY TO-X TO-Y) T)
293(DEFMIC %DISK-OP 666 (RQB) T)
294(DEFMIC %PHYSICAL-ADDRESS 667 (PTR) T)
295(DEFMIC POP-OPEN-CALL 670 NIL NIL T)
296(DEFMIC %BEEP 671 (HALF-WAVELENGTH DURATION) T)
297(DEFMIC %FIND-STRUCTURE-LEADER 672 (PTR) T)
298(DEFMIC BPT 673 NIL T)
299(DEFMIC %FINDCORE 674 () T)
300(DEFMIC %PAGE-IN 675 (PFN VPN) T)
301(DEFMIC ASH 676 (N NBITS) T)
302;677 FREE
303(DEFMIC %DRAW-CHAR 700 (FONT-ARRAY CHAR-CODE X-BITPOS Y-BITPOS ALU-FUNCTION SHEET) T)
304(DEFMIC %DRAW-RECTANGLE 701 (WIDTH HEIGHT X-BITPOS Y-BITPOS ALU-FUNCTION SHEET) T)
305(DEFMIC %DRAW-LINE 702 (X0 Y0 X Y ALU DRAW-END-POINT SHEET) T)
306(DEFMIC %DRAW-TRIANGLE 703 (X1 Y1 X2 Y2 X3 Y3 ALU SHEET) T)
307(DEFMIC %COLOR-TRANSFORM 704 (N17 N16 N15 N14 N13 N12 N11 N10 N7 N6 N5 N4 N3 N2 N1 N0
308                              WIDTH HEIGHT ARRAY START-X START-Y) T)
309
310; FROM HERE TO 777 FREE
311
312;;; The ARGDESC properties, telling the compiler special things about
313;;; a few functions whose arguments would otherwise be compiled wrong.
314
315;AN ARGDESC PROPERTY IS A LIST OF 2-LISTS.  THE FIRST ELEMENT OF EA
316;2-LIST IS A REPEAT COUNT. THE SECOND IS A LIST OF ADL SPECIFIER TYPE TOKENS.
317
318;ARGDESC PROP'S BELOW ARE FOR HAND CODED FCTNS THAT CANT BE CALLED
319; WITH MISC INSTRUCTION (WHICH WOULD BE IMPLIED BY HAVING A QINTCMP PROPERTY).
320; (THE REASON WHY A MISC CALL WOULD LOSE IS USUALLY THAT A NEW FRAME
321;  MUST BE MADE).
322
323(DEFPROP *CATCH ((2 (FEF-ARG-REQ FEF-QT-EVAL))) ARGDESC)
324
325(DEFPROP BREAK ((1 (FEF-ARG-REQ FEF-QT-QT))
326                (1 (FEF-ARG-OPT FEF-QT-EVAL))) ARGDESC)
327
328;MAKE SURE CALLS TO DEFPROP GET COMPILED RIGHT (IE SPREAD ARGS).  OTHERWISE,
329; WOULD LOSE BECAUSE ITS A MACLISP FSUBR.
330
331  (DEFPROP DEFPROP ((3 (FEF-ARG-REQ FEF-QT-QT))) ARGDESC)
332  (DEFPROP FASLOAD ((1 (FEF-ARG-REQ FEF-QT-EVAL)) (1 (FEF-ARG-OPT FEF-QT-EVAL))) ARGDESC)
333        ;Likewise FASLOAD which is a SUBR in LISPM since strings self-evaluate.
334  (DEFPROP SIGNP ((1 (FEF-ARG-REQ FEF-QT-QT)) (1 (FEF-ARG-REQ FEF-QT-EVAL))) ARGDESC)
335      ;This is here because the compiler loses on QUOTE-HAIR functions.
336  (DEFPROP STATUS ((1 (FEF-ARG-REQ FEF-QT-QT))
337                   (1 (FEF-ARG-OPT FEF-QT-QT))) ARGDESC)
338  (DEFPROP SSTATUS ((2 (FEF-ARG-REQ FEF-QT-QT))) ARGDESC)
339
340;MAKE SURE FUNCTIONAL ARGS TO MAPPING FUNCTIONS GET BROKEN OFF AND COMPILED
341; EVEN IF QUOTE USED INSTEAD OF FUNCTION.  (HOWEVER, A POINTER TO THE
342;  BROKEN-OFF SYMBOL INSTEAD OF THE CONTENTS OF ITS FUNCTION CELL WILL BE PASSED
343;  IF QUOTE IS USED).
344
345  (DEFPROP MAP    ((1 (FEF-ARG-REQ FEF-QT-EVAL FEF-FUNCTIONAL-ARG))
346                   (1 (FEF-ARG-REQ FEF-QT-EVAL))
347                   (105 (FEF-ARG-OPT FEF-QT-EVAL)) ) ARGDESC)
348  (DEFPROP MAPC   ((1 (FEF-ARG-REQ FEF-QT-EVAL FEF-FUNCTIONAL-ARG))
349                   (1 (FEF-ARG-REQ FEF-QT-EVAL))
350                   (105 (FEF-ARG-OPT FEF-QT-EVAL)) ) ARGDESC)
351  (DEFPROP MAPCAR ((1 (FEF-ARG-REQ FEF-QT-EVAL FEF-FUNCTIONAL-ARG))
352                   (1 (FEF-ARG-REQ FEF-QT-EVAL))
353                   (105 (FEF-ARG-OPT FEF-QT-EVAL)) ) ARGDESC)
354  (DEFPROP MAPLIST ((1 (FEF-ARG-REQ FEF-QT-EVAL FEF-FUNCTIONAL-ARG))
355                    (1 (FEF-ARG-REQ FEF-QT-EVAL))
356                    (105 (FEF-ARG-OPT FEF-QT-EVAL)) ) ARGDESC)
357  (DEFPROP MAPCAN ((1 (FEF-ARG-REQ FEF-QT-EVAL FEF-FUNCTIONAL-ARG))
358                   (1 (FEF-ARG-REQ FEF-QT-EVAL))
359                   (105 (FEF-ARG-OPT FEF-QT-EVAL)) ) ARGDESC)
360  (DEFPROP MAPCON ((1 (FEF-ARG-REQ FEF-QT-EVAL FEF-FUNCTIONAL-ARG))
361                   (1 (FEF-ARG-REQ FEF-QT-EVAL))
362                   (105 (FEF-ARG-OPT FEF-QT-EVAL)) ) ARGDESC)
363  (DEFPROP APPLY ((2 (FEF-ARG-REQ FEF-QT-EVAL))) ARGDESC)
364        ;Because LSUBR in Maclisp?
365
366;;; Instructions and other symbols for LAP
367
368(DEFPROP CALL 0 QLVAL)
369
370(DEFPROP CALL0 1000 QLVAL)
371
372(DEFPROP MOVE 2000 QLVAL)
373
374(DEFPROP CAR 3000 QLVAL)
375
376(DEFPROP CDR 4000 QLVAL)
377
378(DEFPROP CADR 5000 QLVAL)
379
380(DEFPROP CDDR 6000 QLVAL)
381
382(DEFPROP CDAR 7000 QLVAL)
383
384(DEFPROP CAAR 10000 QLVAL)
385
386;ND1
387;(DEFPROP UNUSED 11000 QLVAL) ;NOT USED
388(DEFPROP *PLUS 31000 QLVAL)  ;THESE USED TO BE CALLED +, -, ETC. BUT THOSE ARE NOW N-ARG
389(DEFPROP *DIF 51000 QLVAL)   ;WHILE THESE SEVEN ARE TWO-ARGUMENTS-ONLY (INSTRUCTIONS).
390(DEFPROP *TIMES 71000 QLVAL)
391(DEFPROP *QUO 111000 QLVAL)
392(DEFPROP *LOGAND 131000 QLVAL)
393(DEFPROP *LOGXOR 151000 QLVAL)
394(DEFPROP *LOGIOR 171000 QLVAL)
395
396;ND2
397(DEFPROP = 12000 QLVAL)
398(DEFPROP > 32000 QLVAL)
399(DEFPROP < 52000 QLVAL)
400(DEFPROP EQ 72000 QLVAL)
401;;; SETE CDR 112000
402;;; SETE CDDR 132000
403;;; SETE 1+ 152000
404;;; SETE 1- 172000
405
406;ND3
407;;; 13000 unused, used to be BIND.
408(DEFPROP BINDNIL 33000 QLVAL)
409(DEFPROP BINDPOP 53000 QLVAL)
410(DEFPROP SETNIL 73000 QLVAL)
411(DEFPROP SETZERO 113000 QLVAL)
412(DEFPROP PUSH-E 133000 QLVAL)
413(DEFPROP MOVEM 153000 QLVAL)
414(DEFPROP POP 173000 QLVAL)
415
416;;; 14 BRANCH
417(DEFPROP MISC 15000 QLVAL)
418
419;;; - MISCELLANEOUS FUNCTIONS -
420(DEFPROP LIST 0 QLVAL)
421(DEFPROP LIST-IN-AREA 100 QLVAL)
422(DEFPROP UNBIND 200 QLVAL)
423 (DEFMIC UNBIND-0 200 NIL NIL T)        ;FOR UCONS
424 (DEFMIC UNBIND-1 201 NIL NIL T)        ;FOR UCONS
425 (DEFMIC UNBIND-2 202 NIL NIL T)        ;FOR UCONS
426 (DEFMIC UNBIND-3 203 NIL NIL T)        ;FOR UCONS
427 (DEFMIC UNBIND-4 204 NIL NIL T)        ;FOR UCONS
428 (DEFMIC UNBIND-5 205 NIL NIL T)        ;FOR UCONS
429 (DEFMIC UNBIND-6 206 NIL NIL T)        ;FOR UCONS
430 (DEFMIC UNBIND-7 207 NIL NIL T)        ;FOR UCONS
431 (DEFMIC UNBIND-10 210 NIL NIL T)       ;FOR UCONS
432 (DEFMIC UNBIND-11 211 NIL NIL T)       ;FOR UCONS
433 (DEFMIC UNBIND-12 212 NIL NIL T)       ;FOR UCONS
434 (DEFMIC UNBIND-13 213 NIL NIL T)       ;FOR UCONS
435 (DEFMIC UNBIND-14 214 NIL NIL T)       ;FOR UCONS
436 (DEFMIC UNBIND-15 215 NIL NIL T)       ;FOR UCONS
437 (DEFMIC UNBIND-16 216 NIL NIL T)       ;FOR UCONS
438 (DEFMIC UNBIND-17 217 NIL NIL T)       ;FOR UCONS
439(DEFPROP POPPDL 220 QLVAL)
440 (DEFMIC POPPDL-0 220 NIL NIL T)        ;FOR UCONS
441 (DEFMIC POPPDL-1 221 NIL NIL T)        ;FOR UCONS
442 (DEFMIC POPPDL-2 222 NIL NIL T)        ;FOR UCONS
443 (DEFMIC POPPDL-3 223 NIL NIL T)        ;FOR UCONS
444 (DEFMIC POPPDL-4 224 NIL NIL T)        ;FOR UCONS
445 (DEFMIC POPPDL-5 225 NIL NIL T)        ;FOR UCONS
446 (DEFMIC POPPDL-6 226 NIL NIL T)        ;FOR UCONS
447 (DEFMIC POPPDL-7 227 NIL NIL T)        ;FOR UCONS
448 (DEFMIC POPPDL-10 230 NIL NIL T)       ;FOR UCONS
449 (DEFMIC POPPDL-11 231 NIL NIL T)       ;FOR UCONS
450 (DEFMIC POPPDL-12 232 NIL NIL T)       ;FOR UCONS
451 (DEFMIC POPPDL-13 233 NIL NIL T)       ;FOR UCONS
452 (DEFMIC POPPDL-14 234 NIL NIL T)       ;FOR UCONS
453 (DEFMIC POPPDL-15 235 NIL NIL T)       ;FOR UCONS
454 (DEFMIC POPPDL-16 236 NIL NIL T)       ;FOR UCONS
455 (DEFMIC POPPDL-17 237 NIL NIL T)       ;FOR UCONS
456;The rest of these come from the DEFMIC table above.
457
458;"BASE REGISTERS"
459(DEFPROP FEF 0 QLVAL)
460
461(DEFPROP CONST-PAGE 400 QLVAL)
462
463(DEFPROP LOCBLOCK 500 QLVAL)
464
465(DEFPROP ARG 600 QLVAL)
466
467(DEFPROP LPDL 700 QLVAL)
468
469;DESTINATIONS
470(DEFPROP D-IGNORE 0 QLVAL)
471
472(DEFPROP D-INDS 0 QLVAL)
473
474(DEFPROP D-PDL 20000 QLVAL)
475
476(DEFPROP D-NEXT 40000 QLVAL)
477
478(DEFPROP D-LAST  60000 QLVAL)
479
480(DEFPROP D-RETURN 100000 QLVAL)
481
482;(DEFPROP DEST-ARG-QTD 60000 QLVAL)             ;ADDED TO D-NEXT,D-LAST
483
484(DEFPROP D-NEXT-LIST 160000 QLVAL)
485
486;;; Properties for the micro-compiler
487
488(DEFPROP M-CAR QMA LAST-ARG-IN-T-ENTRY)
489(DEFPROP M-CDR QMD LAST-ARG-IN-T-ENTRY)
490(DEFPROP M-CAAR QMAA LAST-ARG-IN-T-ENTRY)
491(DEFPROP M-CADR QMAD LAST-ARG-IN-T-ENTRY)
492(DEFPROP M-CDAR QMDA LAST-ARG-IN-T-ENTRY)
493(DEFPROP M-CDDR QMDD LAST-ARG-IN-T-ENTRY)
494(DEFPROP CAAAR QMAAA LAST-ARG-IN-T-ENTRY)
495(DEFPROP CAADR QMAAD LAST-ARG-IN-T-ENTRY)
496(DEFPROP CADAR QMADA LAST-ARG-IN-T-ENTRY)
497(DEFPROP CADDR QMADD LAST-ARG-IN-T-ENTRY)
498(DEFPROP CDAAR QMDAA LAST-ARG-IN-T-ENTRY)
499(DEFPROP CDADR QMDAD LAST-ARG-IN-T-ENTRY)
500(DEFPROP CDDAR QMDDA LAST-ARG-IN-T-ENTRY)
501(DEFPROP CDDDR QMDDD LAST-ARG-IN-T-ENTRY)
502(DEFPROP CAAAAR QMAAAA LAST-ARG-IN-T-ENTRY)
503(DEFPROP CAAADR QMAAAD LAST-ARG-IN-T-ENTRY)
504(DEFPROP CAADAR QMAADA LAST-ARG-IN-T-ENTRY)
505(DEFPROP CAADDR QMAADD LAST-ARG-IN-T-ENTRY)
506(DEFPROP CADAAR QMADAA LAST-ARG-IN-T-ENTRY)
507(DEFPROP CADADR QMADAD LAST-ARG-IN-T-ENTRY)
508(DEFPROP CADDAR QMADDA LAST-ARG-IN-T-ENTRY)
509(DEFPROP CADDDR QMADDD LAST-ARG-IN-T-ENTRY)
510(DEFPROP CDAAAR QMDAAA LAST-ARG-IN-T-ENTRY)
511(DEFPROP CDAADR QMDAAD LAST-ARG-IN-T-ENTRY)
512(DEFPROP CDADAR QMDADA LAST-ARG-IN-T-ENTRY)
513(DEFPROP CDADDR QMDADD LAST-ARG-IN-T-ENTRY)
514(DEFPROP CDDAAR QMDDAA LAST-ARG-IN-T-ENTRY)
515(DEFPROP CDDADR QMDDAD LAST-ARG-IN-T-ENTRY)
516(DEFPROP CDDDAR QMDDDA LAST-ARG-IN-T-ENTRY)
517(DEFPROP CDDDDR QMDDDD LAST-ARG-IN-T-ENTRY)
518
519(DEFPROP M-+ XTCADD LAST-ARG-IN-T-ENTRY)        ;CHECKS INPUT D.T. TO ASSURE FIXED
520(DEFPROP M-- XTCSUB LAST-ARG-IN-T-ENTRY)
521(DEFPROP M-* XTCMUL LAST-ARG-IN-T-ENTRY)
522(DEFPROP M-// XTCDIV LAST-ARG-IN-T-ENTRY)
523(DEFPROP M-LOGAND XTCAND LAST-ARG-IN-T-ENTRY)
524(DEFPROP M-LOGXOR XTCXOR LAST-ARG-IN-T-ENTRY)
525(DEFPROP M-LOGIOR XTCIOR LAST-ARG-IN-T-ENTRY)
526
527;(DEFPROP XTCADD XTADD NO-TYPE-CHECKING-ENTRY)  ;ONE ARG IN T, ONE ON PDL
528;(DEFPROP XTCSUB XTSUB NO-TYPE-CHECKING-ENTRY)
529;(DEFPROP XTCMUL XTMUL NO-TYPE-CHECKING-ENTRY)
530;(DEFPROP XTCDIV XTDIV NO-TYPE-CHECKING-ENTRY)
531;(DEFPROP XTCAND XTAND NO-TYPE-CHECKING-ENTRY)
532;(DEFPROP XTCXOR XTXOR NO-TYPE-CHECKING-ENTRY)
533;(DEFPROP XTCIOR XTIOR NO-TYPE-CHECKING-ENTRY)
534
535;(DEFPROP M-+ XTADD UNBOXED-NUM-IN-T-ENTRY)     ;THESE GUYS DONT REALLY CHECK ANYWAY
536;(DEFPROP M-- XTSUB UNBOXED-NUM-IN-T-ENTRY)
537;(DEFPROP M-* XTMUL UNBOXED-NUM-IN-T-ENTRY)
538;(DEFPROP M-// XTDIV UNBOXED-NUM-IN-T-ENTRY)
539;(DEFPROP M-LOGAND XTAND UNBOXED-NUM-IN-T-ENTRY)
540;(DEFPROP M-LOGXOR XTXOR UNBOXED-NUM-IN-T-ENTRY)
541;(DEFPROP M-LOGIOR XTIOR UNBOXED-NUM-IN-T-ENTRY)
542
543;(DEFPROP M-+ XMADD NO-TYPE-CHECKING-ENTRY)     ;THESE ARE A BIT FASTER
544;(DEFPROP M-- XMSUB NO-TYPE-CHECKING-ENTRY)     ;TAKE 2 ARGS ON PDL
545;(DEFPROP M-* XMMUL NO-TYPE-CHECKING-ENTRY)
546;(DEFPROP M-// XMDIV NO-TYPE-CHECKING-ENTRY)
547;(DEFPROP M-LOGAND XMAND NO-TYPE-CHECKING-ENTRY)
548;(DEFPROP M-LOGXOR XMXOR NO-TYPE-CHECKING-ENTRY)
549;(DEFPROP M-LOGIOR XMIOR NO-TYPE-CHECKING-ENTRY)
550
551;(DEFPROP ATOM XTATOM LAST-ARG-IN-T-ENTRY)
552;(DEFPROP ZEROP XTZERO LAST-ARG-IN-T-ENTRY)
553(DEFPROP NUMBERP XTNUMB LAST-ARG-IN-T-ENTRY)
554;(DEFPROP PLUSP XTPLUP LAST-ARG-IN-T-ENTRY)
555;(DEFPROP MINUSP XTMNSP LAST-ARG-IN-T-ENTRY)
556;(DEFPROP MINUS XTMNS LAST-ARG-IN-T-ENTRY)
557;(DEFPROP 1+ XT1PLS LAST-ARG-IN-T-ENTRY)
558;(DEFPROP 1- XT1MNS LAST-ARG-IN-T-ENTRY)
559;(DEFPROP SYMEVAL XTSYME LAST-ARG-IN-T-ENTRY)
560(DEFPROP LENGTH XTLENG LAST-ARG-IN-T-ENTRY)
561
562;(DEFPROP ZEROP XBZERO UNBOXED-NUM-IN-T-ENTRY)
563;(DEFPROP PLUSP XBPLUP UNBOXED-NUM-IN-T-ENTRY)
564;(DEFPROP MINUSP XBMNSP UNBOXED-NUM-IN-T-ENTRY)
565;(DEFPROP MINUS XBMNS UNBOXED-NUM-IN-T-ENTRY)
566;(DEFPROP 1+ XB1PLS UNBOXED-NUM-IN-T-ENTRY)
567;(DEFPROP 1- XB1MNS UNBOXED-NUM-IN-T-ENTRY)
568
569;;; Certain MISC-instructions make assumptions about what destinations
570;;; they are used with.  Some require D-IGNORE, because they assume that
571;;; there is no return address on the micro-stack.  Some do not allow D-IGNORE,
572;;; because they popj and start a memory cycle.  Some are really random.
573(DEFVAR MISC-INSTRUCTION-REQUIRED-DESTINATION-ALIST
574        '( (%ALLOCATE-AND-INITIALIZE D-PDL D-NEXT D-LAST D-RETURN D-NEXT-LIST)
575           (%ALLOCATE-AND-INITIALIZE-ARRAY D-PDL D-NEXT D-LAST D-RETURN D-NEXT-LIST)
576           (%SPREAD D-NEXT D-LAST)
577           (RETURN-LIST D-RETURN)
578           (%OPEN-CALL-BLOCK D-IGNORE D-INDS)
579           (%ACTIVATE-OPEN-CALL-BLOCK D-IGNORE D-INDS)
580           (%RETURN-2 D-IGNORE D-INDS)
581           (%RETURN-3 D-IGNORE D-INDS)
582           (%RETURN-N D-IGNORE D-INDS)
583           (%RETURN-NEXT-VALUE D-IGNORE D-INDS)))
Note: See TracBrowser for help on using the repository browser.