1 01/07/85 Multics Maclisp Differences
2
3
4 This info segment describes the differences betwen Multics Maclisp and
5 PDP-10 ITS/TOPS-20 MACLISP, as defined in "The Revised Maclisp
6 Manual", MIT/LCS/TR-295, dated May 21, 1983. The topics in this info
7 segment are in the order that they appear in this manual, and are also
8 accompanied by the page numbers on which the topic will be found.
9 Function and variable names in this segment will be in uppercase for
10 consistency with the manual and also to make them stand out; note that
11 in Multics Maclisp all the builtin functions are in lowercase and case
12 is significant.
13
14 This info segment only lists missing features or differences in
15 operation. Multics-only features are not listed.
16
17 Unless noted otherwise, if this info segment specifies that a Status
18 option does not exist then the corresponding SStatus option also does
19 not exist.
20
21
22 A number of functions which are in the default PDP-10 Maclisp
23 environment are only available on Multics after loading a file from the
24 extension library. These files are available in >ldd>include as Lisp
25 include files. If %include library is used then all the extensions
26 will be available, or individual library files may be loaded using
27 %include NAME; functions in the library will be noted here in entries
28 of the form:
29 FUNCs p.N: ext - NAME
30
31
32 INTRODUCTION:
33 Getting started p. 2: On Multics, Lisp may be entered by the "lisp"
34 command.
35
36 Init files p. 2: On Multics, the init file is hd>start_up.lisp.
37 No COMMENT statement is necessary.
38
39 ALLOC? p.3: Multics Maclisp does not ask the "ALLOC?" question. An
40 initial COMMENT statement in the init file is ignored.
41
42 JCL p. 3: The first argument to the "lisp" command is the pathname
43 of a saved environment, not an init file.
44
45
46 Datatypes:
47 TYPEP p.5: The possible values of TYPEP are LIST, SYMBOL, FIXNUM,
48 FLONUM, BIGNUM, ARRAY, STRING, RANDOM. This is the same as PDP-10
49 Maclisp, except for the lack of hunks and the addition of STRING.
50
51
52 The Evaluator:
53 PSETQ p.9: ext - other_other
54
55 LEXPR-FUNCALL p.15: ext - other_other
56
57
58 The Read-Eval-Print Loop:
59 *BREAK p.19: does not exist.
60
61 $P variable p.20: does not exist. The break loop always looks for
62 the symbol $P.
63
64 STATUS BREAKLEVEL p.21: does not exist.
65
66 READ variable p.21: does not exist. The standard READ function is
67 always used by the Read-Eval-Print loop.
68
69 *-READ-EVAL-PRINT, etc. p.2223: do not exist.
70
71
72 Control Forms:
73 CASEQ, SELECTQ p.2627: ext - other_other
74
75 LET with destructuring p.31: ext - destructuring_let. The default
76 LET special form only allows symbols in the CARs of the initialization
77 forms.
78
79 LET*, DESETQ p.32: ext - destructuring_let
80
81 LOOP p.39: ext - loop
82
83 *CATCH, *THROW p.47: ext - other_other
84
85 CATCH-BARRIER, CATCHALL p.51: do not exist.
86
87
88 SETF:
89 SETF, DEFSETF p.54-56: ext - setf
90
91 PUSH, POP p.57: ext - other_other
92
93
94 Definitional Forms:
95 DEFUN &keyword support p.6566: ext - defun. Other DEFUN features
96 are available in the default environment.
97
98 DEFVAR, DEFCONST p.69: ext - other_other. Note that the Emacs
99 extension include file "e-macros" defines an incompatible version of
100 DEFVAR. If this is already defined then loading the library will not
101 redefine it.
102
103 DEFMACRO, MACRO p.7071: ext - defmacro
104
105 DEFMACRO-DISPLACE, DEFSIMPLEMAC p.72: do not exist.
106
107 DEFMACRO-CHECK-ARGS p.72: does not exist. DEFMACRO acts as if it
108 were T.
109
110 DEFMACRO-DISPLACE-CALL p.72: does not exist. Multics DEFMACRO always
111 generates displacing macros, so it acts as if it were T.
112
113 DEFMACRO-FOR-COMPILING p.72: does not exist. The MACROS compiler
114 flag is obeyed, although the defmacro include file sets it to T when
115 it is first loaded.
116
117
118 MACRO-EXPANSION-USE p.73: does not exist. Multics DEFMACRO always
119 generates displacing macros, so it acts as if this were set to DISPLACE.
120
121 MACROEXPAND, MACROEXPAND-1, MACROEXPAND-1* p.73: do not exist.
122
123 MACROEXPANDED p.74: does not exist.
124
125 DEFUN& p.74: ext - defun
126
127 DEFUN&-CHECK-ARGS p.74: does not exist. DEFUN& acts as if it were
128 T.
129
130 DEFSTRUCT p.76: ext - defstruct
131
132
133 List Structure:
134 MAKE-LIST p.91: ext - runtime
135
136 LISTP p.92: ext - other_other. This is the Lisp Machine definition,
137 not the Maclisp definition. It is equivalent to not atom x.
138
139 PAIRP p.92: does not exist.
140
141 SUBLIS property p.108: not affected. Portable programs should not
142 use it, though.
143
144 CAR/CDR Control Variables: do not exist. CAR and CDR check for a
145 fixnum/flonum argument. For other argument types it assumes it is a
146 list and may fault doing the operation. For symbols, the CAR is the
147 value and the CDR is the property list, but this should not be depended
148 upon.
149
150
151 Numbers:
152 FIXNUMP p.113: ext - other_other
153
154 STATUS RANDOM p.123: does not exist.
155
156 ZFUZZ p.123: does not exist, so effectively 0.0.
157
158
159 Symbol Manipulation
160 PNGET, PNPUT p.131: do not exist.
161
162 SYMBOLCONC p.134: ext - runtime
163
164
165 Array Creation/Manipulation:
166 LISTARRAY p.144: Takes an optional second argument, N, which is the
167 maximum length of the list which should be returned. If the array has
168 more than this number of elements, only the first N elements will be
169 returned.
170
171 ARRAY-/#-DIMS, ARRAY-DIMENSION-N, ARRAY-TYPE p.145: do not exist.
172
173 DUMPARRAYS p.145: Only types FIXNUM and FLONUM are handled. If the
174 filespec is pdp-10 FILESPEC then the file is written in PDP-10
175 dumparrays format.
176
177 LOADARRAYS p.145: Only FIXNUM and FLONUM arrays are handled.
178
179
180 Hunks p.146-8: do not exist.
181
182
183 Strings p.149:
184 Multics strings are first class data types. There are no "real" or
185 "fake" strings.
186
187 +INTERNAL-STRING-MARKER property p.149: does not exist.
188
189
190 Bit Manipulation:
191 LOGAND, etc., BIT-TEST, etc. p.151: ext - other_other
192
193 ASH p.152: if "runtime" included then this turns into BIGNUM-ASH.
194
195 DEPOSIT-BYTE, LOAD-BYTE p.155: do not exist.
196
197 LDB, DPB p.155: ext - runtime
198
199 *DEPOSIT-BYTE, *LOAD-BYTE, *DPB, *LDB p.156: do not exist.
200
201
202 New-I/O:
203 SFA concept p.157: does not exist.
204
205 T concept p.157: since TYI/TYO variables do not exist, T is always
206 equivalent to user_input/user_output as appropriate.
207
208 TYI variable p.160: does not exist. Input functions act as if it
209 were equivalent to user_input I/O switch.
210
211 TTYSCAN-STRINGERS/| p.160: does not exist.
212
213 TYO variable p.161: does not exist. Output functions act as if it
214 were equivalent to user_output I/O switch.
215
216 OUTFILES p.161: defaults to NIL.
217
218 MSGFILES p.161: does not exist. T is always used for messages.
219
220 ECHOFILES p.161: does not exist. There is no echoing facility.
221
222 *NOPOINT function p.164: does not exist.
223
224 CURSORPOS p.164165: only works in the video system. Output affects
225 the specified window, so all references to the screen should be
226 replaced by window. The P and Q functions are not supported. There is
227 currently a bug where the insert line and \ delete line functions
228 are interchanged.
229
230
231 OPEN p.166: does not work properly unless you specify all of the
232 direction data mode device type and buffering mode. The ECHO and
233 CLA modes are not supported.
234
235 CNAMEF p.167: does not exist.
236
237 CLEAR-OUTPUT p.167: does not exist.
238
239 FORMAT p.169: ext - format. To prevent compiler warnings put
240 declare *lexpr format
241 in your source files that use FORMAT.
242
243 ?FORMAT p.179: ext - format
244
245 Y-OR-N-P YES-OR-NO-P p.182: do not exist.
246
247 UNTYI p.183: does not exist.
248
249 +TYO p.186: does not exist.
250
251 RUBOUT p.186: does not exist.
252
253
254 SSTATUS LINMODE p.188: not settable. STATUS LINMODE is OK.
255
256 TTYSCAN TTYIFA TTYOFA TTYCONS FASLNAMELIST FASLOAD TTYTYPE
257 OSPEED TTYSIZE TTY p.189-192: do not exist.
258
259 SPRIN1 p.193: does not exist.
260
261 GRIND-MACROEXPANDED p.193: does not exist.
262
263 CGOL CGOLREAD p.194: does not exist.
264
265
266 SFAs p.194-202: do not exist.
267
268
269 Old-I/O:
270 UREAD UWRITE variables p.203: unbound until the old I/O package is
271 autoloaded.
272
273
274 Files:
275 FASLOAD variable p.211: does not exist.
276
277 INCLUDE p.211: does not exist. %INCLUDE is similar but uses the
278 translator search path if not given a pathname.
279
280 DEFAULTF variable p.212: does not exist.
281
282 LENGTHF FASLP p.213: do not exist.
283
284 PROBEF RENAMEF p.214: do not exist.
285
286 MAPPALLFILES DIRECTORY MAPDIRECTORY p.215216: do not exist.
287
288
289 Syntax:
290 # reader macro p.218-223: ext - sharpsign. However #| and #% are
291 not defined.
292
293 SETSYNTAX-SHARP-MACRO p.227: does not exist. There is a
294 SHARPSIGN-SET-SYNTAX which is equivalent except that it does not take
295 the optional fourth argument. ext - sharpsign.
296
297 /#-MACRO-DATALIST p.228: Called SHARPSIGN-DATA-LIST. ext - sharpsign.
298
299 /#-SYMBOLIC-CHARACTERS-TABLE p.228: Called SHARPSIGN-CHARACTER-ALIST.
300 ext- sharpsign.
301
302 Error Handlers:
303 CERROR p.231: does not exist.
304
305 FERROR p.231: ext - format
306
307 Error Channels p.233-235: The default value of the error channel
308 variables are *INTERNAL-xxx-BREAK where xxx is the name of the
309 variable. These symbols are not interned though.
310
311 IO-LOSSAGE MACHINE-ERROR variable p.234235: do not exist.
312
313 ERROR-BREAK-ENVIRONMENT p.236: does not exist.
314
315 AUTOLOAD variable p.237: does not exist.
316
317
318 Debugging:
319 BAKLIST p.239: does not exist.
320
321 FRETRY p.240: does not exist.
322
323 EVALHOOK p.241: does not take the optional third argument.
324
325 SUBR p.245: does not exist.
326
327 EVAL variable p.247: does not exist.
328
329 STATUS PUNT p.247: does not exist. It is effectively NIL.
330
331
332 Declarations and the Compiler:
333 COMPILER-STATE p.253: is not bound in the interpreter.
334
335 FIXNUM-IDENTITY FLONUM-IDENTITY p.253: do not exist.
336
337 HERALD p.254: does not exist.
338
339 SQUID p.255: does not exist.
340
341
342 System Programming:
343 STATUS TTYINT p.257: does not exist. It may be possible to get
344 some of its functionality using STATUS INTERRUPT.
345
346 ALARMCLOCK function and variable p.259: does exist although the
347 manual says it is ITS only.
348
349 STATUS NOINTERRUPTS p.260: does not exist.
350
351 WITHOUT-INTERRUPTS p.260; ext - other_other
352
353 STATUS SSTATUS p.261: only the first four characters of the key
354 argument are significant as opposed to five on PDP-10's.
355
356 STATUS SITE STATUS FILESYSTEM-TYPE STATUS OPSYSTEM-TYPE
357 STATUS XJNAME STATUS SUBSYSTEM STATUS JNAME STATUS JNUMBER
358 STATUS USERID STATUS XUNAME STATUS HOMEDIR STATUS HSNAME
359 p.263-265: do not exist.
360
361 STATUS UDIR p.265: returns the default working dir as a symbol.
362
363
364 SUSPEND p.267: exists even though the manual says PDP-10 Only. It
365 takes no arguments and just pushes to a new Multics command level.
366
367 VALRET p.269: does not exist. CLINE will execute a command line.
368
369 GETDDTSYM PUTDDTSYM LH/| EXAMINE DEPOSIT VALUE-CELL-LOCATION
370 p.270: do not exist.
371
372 STATUS SXHASH p.272: does not exist.
373
374 GCPROTECT p.274: does not exist.
375
376 GCTWA variable p.274: does not exist.
377
378 STATUS SYSTEM sym p.275: The list returned never contains the
379 symbol SYMBOL MACRO or AUTOLOAD.
380
381 RECLAIM p.276: does not exist.
382
383 GC-OVERFLOW GCPROTECT p.276: do not exist.
384
385 STATUS GCMAX STATUS GCMIN STATUS GCSIZE STATUS ARRAY
386 STATUS BPSH STATUS BPSL STATUS MEMFREE STATUS FLUSH
387 STATUS LOSEF STATUS PDLNAMES STATUS FXPDL STATUS FLPDL
388 STATUS PDL STATUS SPDL STATUS SEGLOG STATUS PURSIZE
389 STATUS PURSPCNAMES p.277-280: do not exist.
390
391 STATUS PAGING p.278: the first elemtn of the result is always 0 as
392 there is no longer a paging device bulk store.
393
394
395 BPORG BPEND PAGEBPORG GETSP p.281: do not exist.
396
397 NORET p.281: The variable does not exist it used to be a Status
398 option. The function sets the internal NORET flag but nothing uses
399 it.
400
401 Pure cells pure pages ... p.282-284: Multics Maclisp does not have
402 the concept of pure data structure. The only things which are pure are
403 compiled functions.
404
405 *PURE PUTPROP variable PURCOPY variable PURIFY PURE PURCLOBRL
406 p.282-4: do not exist.
407
408
409 Editors:
410 LEDIT p.288: does not exist.
411
412
413 Internal System Functions:
414 STATUS USRHUNK STATUS CALLI STATUS SENDI STATUS VECTOR
415 p.294295: do not exist.
416
417 *-READ-EVAL-PRINT etc. p.295: do not exist.
418
419 *APPLY *EVAL etc except *DIF and *QUO. p.296-298: do not exist.
420
421 Initial Condition Handlers p.298299: Most of these are named
422 *INTERNAL-xxx-BREAK where xxx is the name of the condition. They are
423 also not interned.
424
425 +INTERNAL-AUTOLOAD p.298: does not exist. Actually there is an
426 analogue but its name is uninterned and it is the value of an
427 uninterned symbol so there is no way to access it.
428
429 +INTERNAL-*RSET-BREAK p.299: named *INTERNAL-*RSET-BREAK and is
430 uninterned.
431
432 +INTERNAL-IOL-BREAK p.299: does not exist and has no equivalent.
433 There is no IO-LOSSAGE condition.