sldec.doc 91 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530
  1. University of Utah Symbolic Computation Group July 1978
  2. Technical Report No. TR-2 First Revision - March 1979
  3. MANUAL
  4. for
  5. STANDARD LISP
  6. on
  7. DECSYSTEM 10 and 20
  8. by
  9. Inge B. Frick
  10. University of Utah
  11. Salt Lake City, UT 84112
  12. ABSTRACT
  13. An implementation of Standard Lisp on the DECsystem
  14. 10 and 20 is presented. The implementation is based
  15. on Stanford Lisp 1.6.
  16. Work supported in part by the National Science Foundation under Grant
  17. No. MCS 76-15035.
  18. STANDARD LISP ON DECSYSTEM 10 AND 20
  19. Table of Contents _____ __ ________
  20. 1. PRELIMINARIES ......................................... 1
  21. 1.1 Document Conventions ................................. 1
  22. 1.2 Special Terminal Control Characters .................. 2
  23. 1.3 Data Types ........................................... 2
  24. 1.4 Property Lists ....................................... 5
  25. 1.5 Value Cells .......................................... 6
  26. 1.6 Function Cells ....................................... 6
  27. 1.7 The OBLIST ........................................... 7
  28. 2. EXTENSIONS AND DIFFERENCES FROM STANDARD LISP ......... 8
  29. 2.1 Boolean Arguments And Predicates ..................... 8
  30. 2.2 Error Handling ....................................... 8
  31. 2.3 I/O .................................................. 11
  32. 2.4 The Interpreter ...................................... 15
  33. 2.5 The Fap Loader ....................................... 18
  34. 2.6 Logical Routines And LAP Support ..................... 18
  35. 2.7 The Alternative Scanner SCAN ......................... 20
  36. 2.7.1 Scanner Functions .................................. 20
  37. 2.8 Other Functions ...................................... 22
  38. 2.9 Memory Allocation .................................... 24
  39. 2.9.1 Storage Allocation Areas ........................... 24
  40. 2.9.2 Allocation ......................................... 25
  41. 2.9.3 Reallocating Space ................................. 25
  42. 2.10 The Garbage Collector ............................... 26
  43. 3. GLOBAL (FLUID) SYSTEM VARIABLES ....................... 28
  44. 4. ERROR MESSAGES AND WARNINGS ........................... 32
  45. 4.1 Error messages not starting with a bad part .......... 32
  46. 4.2 Error messages starting with a bad part .............. 36
  47. 4.3 Warnings and diagnostic messages ..................... 38
  48. 5.0 DIFFERENCES BETWEEN LISP 1.6 AND STANDARD LISP ....... 40
  49. 6.0 REFERENCES ........................................... 42
  50. INDEX .................................................... 43
  51. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 1
  52. 1.0 PRELIMINARIES
  53. This manual describes Standard Lisp implemented on the DECsystem 10
  54. and 20. The code for Stanford Lisp 1.6 has been changed in order to
  55. make it conform to the specifications in the Standard Lisp report
  56. [1]. For this reason the parts of the STANFORD LISP 1.6 MANUAL [2],
  57. that still are relevant have been included here, so that [2] is no
  58. longer necessary. This Standard Lisp system contains the system
  59. described in [1] as a subset. This manual is therefore intended as a
  60. complement to [1] and features fully discussed in [1] are not
  61. described here.
  62. 1.1 Document Conventions
  63. In the description of the primitive data structures, the following
  64. pictorial notation is used:
  65. ---------
  66. | | | ->
  67. ---------
  68. |
  69. v
  70. represents a 36-bit word in FREE STORAGE (a Lisp cell) with 2
  71. 18-bit pointers. The CAR part is to the left and the CDR part to
  72. the right.
  73. -----------
  74. | ABC | | ->
  75. -----------
  76. is similar to the previous, but the ABC stands for a pointer to
  77. the identifier ABC. I.e. CAR of the structure is ABC.
  78. ---------
  79. | |
  80. ---------
  81. represents a 36-bit word in full word space.
  82. Character conventions: The characters altmode, carriage return,
  83. linefeed, formfeed, horizontal tab, space and rubout (delete) will
  84. sometimes be represented as <alt>, <cr>, <lf>, <ff>, <tab>, <sp> and
  85. <del>. Control characters are usually written as ^ followed by an
  86. ordinary character, e.g. control-A is written ^A.
  87. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 2
  88. 1.2 Special Terminal Control Characters
  89. The time-sharing system treats many control characters in special
  90. ways. For a complete discussion of control characters see the
  91. appropriate DECsystem 10 or 20 manuals. Briefly the following
  92. special control characters are used in Lisp.
  93. Character Meaning
  94. ^C Exit Lisp and talk to the monitor.
  95. ^G (Bell) Stop the current Lisp process and go to the top
  96. level of Lisp. Only effective when Lisp is asking
  97. for input.
  98. ^O Suppress console printout until an input is
  99. requested.
  100. ^U (^X in Tenex) Delete the entire input line now
  101. being typed. This is only effective when *DDTIN is
  102. NIL.
  103. <del> (^A in Tenex) Delete the last character typed if
  104. *DDTIN is NIL. If *DDTIN is true, then <del> (in
  105. Tenex too) will delete the entire S-expression
  106. being read.
  107. ^R Retypes the current input line. No special meaning
  108. in Tenex.
  109. 1.3 Data Types
  110. This section describes the implementation of the primitive data types
  111. discussed in [1] 2.1. It should be noted that some of the details
  112. given in this section are temporary and may be changed. These
  113. changes will be transparent to the user if he does not access parts
  114. of an atom by using CAR, CDR, RPLACA or RPLACD etc..
  115. All atoms (except INUMs, see below) start with one word that contains
  116. a type tag in the left half and a pointer to the rest of the atom in
  117. the right half.
  118. Integer - There are three representations for integers depending on _______
  119. the numerical magnitude of the integer: INUM, FIXNUM and BIGNUM.
  120. Their ranges are as follows:
  121. INUM abs(n) < K K is usually 2^16-8
  122. FIXNUM K =< abs(n) < 2^35
  123. BIGNUM 2^35 =< abs(n)
  124. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 3
  125. INUMs are small integers represented by pointers outside of the
  126. normal LISP addressing space. INUMs are addresses in the range
  127. 2^18-2K-J+1 to 2^18-1-J, where J at present is 8. The
  128. representation for zero is INUM0 = 2^18-K-J.
  129. FIXNUMs are represented by list structure of the following form:
  130. -------------- ---------
  131. | fixtag | | -> | value |
  132. -------------- ---------
  133. where value is the 2's complement representation of the fixed
  134. point number and fixtag at present is -6.
  135. BIGNUMs are represented by list structure of the following forms:
  136. Positive BIGNUMs:
  137. -------------- --------- -----------
  138. | postag | | -> | | | -> ... -> | | NIL |
  139. -------------- --------- -----------
  140. | |
  141. v v
  142. --------- -----------
  143. | N0 | | Nn |
  144. --------- -----------
  145. Negative BIGNUMs:
  146. -------------- --------- -----------
  147. | negtag | | -> | | | -> ... -> | | NIL |
  148. -------------- --------- -----------
  149. | |
  150. v v
  151. --------- -----------
  152. | N0 | | Nn |
  153. --------- -----------
  154. where N0 ... Nn are positive 36 bit integers ordered from
  155. least to most significant and at present postag is -7 and
  156. negtag is -8. The value of a BIGNUM is:
  157. sign * (N0 + N1*2^35 + N2*(2^35)^2 +...+Nn*(2^35)^n)
  158. The syntax for integers is as described in [1] 2.1, with the
  159. exception that an integer followed by a ".", is read as an integer
  160. with decimal radix instead of a floating point number with no
  161. exponent and no fractional part. With this exception the radix
  162. when reading a number is specified by the value of the variable
  163. IBASE. The radix when printing an integer is specified by the
  164. value of the variable BASE. When the value of BASE is 10
  165. (decimal), then integers will print with a following ".", unless
  166. the variable *NOPOINT is not NIL.
  167. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 4
  168. Floating - Floating point numbers are represented by list structure ________
  169. of the following form:
  170. -------------- ---------
  171. | flotag | | -> | value |
  172. -------------- ---------
  173. where value is in DECsystem 10 2's complement representation and
  174. flotag at present is -5.
  175. The radix for a floating point number is always decimal. A
  176. floating point number must be in the (approximate) range:
  177. 10^-38 < abs(x) < 10^+38 or x = 0
  178. A floating point number has approximately eight significant digits
  179. of accuracy.
  180. String - Strings are represented by a header word followed by a list ______
  181. of full words, each containing five ASCII characters.
  182. Example: The string "Time of day" is represented as follows:
  183. -------------- --------- --------- -----------
  184. | strtag | | -> | | | -> | | | -> | | NIL |
  185. -------------- --------- --------- -----------
  186. | | |
  187. v v v
  188. --------- --------- ---------
  189. | Time | | of da | | y^^^^ |
  190. --------- --------- ---------
  191. where ^ means null or ASCII 0, and strtag at present is -4. The
  192. number of characters in a string is limited only by available full
  193. word space.
  194. vector - A vector is internally represented as a dotted pair of the ______
  195. following form:
  196. --------------
  197. | vectag | | -> vector in BPS
  198. --------------
  199. where vectag at present is -3. The size of a vector is only
  200. limited by the available BPS.
  201. code-pointer - A code pointer is represented as a dotted pair of the ____________
  202. following form:
  203. --------------
  204. | codtag | | -> binary code in BPS
  205. --------------
  206. where codtag at present is -2.
  207. id - An identifier is represented by a dotted pair of the following __
  208. form:
  209. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 5
  210. -------------
  211. | idtag | | -> property list
  212. -------------
  213. where idtag at present is -1.
  214. The syntax for identifiers is similar to that specified in [1] 2.1
  215. with the following differences:
  216. <lead-character> ::= <special-character>|<letter>
  217. <regular-character> ::= <lead-character>|<digit>|+|-|'
  218. <letter> ::= <alphabetic>|<extra-letter>
  219. <delimiter> ::= (|)|<|>|[|]|<alt>|<rub>
  220. <ignored> ::= <tab>|<lf>|<vtab>|<ff>|<cr>|<space>|,
  221. <special-control> ::= <null>|<control-Z>|'|+|-|.|E|"|!
  222. <extra-letter> ::= <any character not a digit, ignored,
  223. delimiter or special-control>
  224. The number of characters in an id is limited only by available
  225. full word space.
  226. 1.4 Property Lists
  227. The property list of an identifier is a list of flags and (property
  228. name, property value) pairs associated with that identifier. All
  229. identifiers have a PNAME (print name) property with a property value
  230. that is a list of full words with the same format as for a string.
  231. Example: The identifier A is represented by:
  232. ---------- -----------
  233. | -1 | | -> | | NIL |
  234. ---------- -----------
  235. |
  236. v
  237. ------------- -----------
  238. | PNAME | | -> | | NIL |
  239. ------------- -----------
  240. |
  241. v
  242. ---------
  243. | A^^^^ |
  244. ---------
  245. Example: After the commands (FLAG '(A) 'NFLG) and (PUT 'A 'TYP 'K)
  246. then the identifier A is represented by:
  247. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 6
  248. ---------- --------- ------------ -----------
  249. | -1 | | -> | | | -> | NFLG | | -> | | NIL |
  250. ---------- --------- ------------ -----------
  251. | |
  252. v v
  253. ----------- ------------- -----------
  254. | TYP | K | | PNAME | | -> | | NIL |
  255. ----------- ------------- -----------
  256. |
  257. v
  258. ---------
  259. | A^^^^ |
  260. ---------
  261. 1.5 Value Cells
  262. When a value is assigned to an identifier, the property name VALUE is
  263. put on the identifier's property list with property value being a
  264. pointer to a value cell. The CDR of the value cell holds the value
  265. of the identifier. The address of a value cell remains constant for
  266. that identifier unless REMPROPed, to enable compiled functions to
  267. directly reference the values of global or fluid variables.
  268. Example: After the command (SETQ A 'B), the identifier A is
  269. represented by:
  270. ---------- --------- -----------
  271. | -1 | | -> | | | -> | | NIL |
  272. ---------- --------- -----------
  273. | |
  274. v v
  275. ------------- ------------- -----------
  276. | VALUE | | -- | PNAME | | -> | | NIL |
  277. ------------- | ------------- -----------
  278. v |
  279. --------- v
  280. | 0 | B | ---------
  281. --------- | A^^^^ |
  282. ---------
  283. 1.6 Function Cells
  284. When an identifier is defined as a function by PUTD, DE, DF or DM,
  285. the property name FUNCELL is put on the identifier's property list
  286. with property value being a pointer to a function cell. The CAR of
  287. the function cell is the function type, EXPR, FEXPR or MACRO. The
  288. CDR of the function cell is a lambda expression or a code pointer.
  289. It is possible that future versions of Standard Lisp will use the
  290. value cell as a function cell. For that reason the function cell
  291. should only be accessed by means of PUTD, GETD and REMD. The value
  292. cell should only be accessed by SET, SETQ and EVAL. At present
  293. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 7
  294. (GETD x) is identical to (GET x 'FUNCELL).
  295. Example: After the command (PUTD 'A 'type 'body), the identifier A
  296. is represented by:
  297. ---------- --------- -----------
  298. | -1 | | -> | | | -> | | NIL |
  299. ---------- --------- -----------
  300. | |
  301. v v
  302. --------------- ------------- -----------
  303. | FUNCELL | | -- | PNAME | | -> | | NIL |
  304. --------------- | ------------- -----------
  305. v |
  306. --------------- v
  307. | type | body | ---------
  308. --------------- | A^^^^ |
  309. ---------
  310. where "type" should be one of EXPR, FEXPR or MACRO and "body" should
  311. be either a lambda expression or a code pointer.
  312. 1.7 The OBLIST
  313. For the sake of searching efficiency, the OBLIST has two levels: the
  314. first level contains sequentially stored "buckets" which are "hashed"
  315. into as a function of the print name of the identifier. Each bucket
  316. is a list of all distinct identifiers which have hashed into that
  317. bucket. Thus, (CAR OBLIST) is the first bucket, and (CAAR OBLIST) is
  318. the first identifier of the first bucket.
  319. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 8
  320. 2.0 EXTENSIONS AND DIFFERENCES FROM STANDARD LISP
  321. The following functions are implemented exactly according to their
  322. definitions in [1].
  323. ABS, AND, APPEND, ATOM, CONS, DE, DEFLIST, DELETE, DF, DIFFERENCE,
  324. DIVIDE, DM, EJECT, EQ, EQN, EQUAL, EXPAND, EXPT, FIX, FLAG, FLAGP,
  325. FLOAT, FLUIDP, FUNCTION, GENSYM, GET, GETD, GETV, GLOBALP, GREATERP,
  326. IDP, INTERN, LENGTH, LESSP, LIST, LPOSN, MAP, MAPC, MAPCAN, MAPCAR,
  327. MAPCON, MAPLIST, MAX, MAX2, MEMBER, MEMQ, MIN, MINUS, MIN2, MKVECT,
  328. NOT, NULL, OR, PAGELENGTH, PAIR, PLUS, PLUS2, POSN, PRINT, PRIN1,
  329. PRIN2, PROG, PROGN, PUT, PUTV, QUOTE, QUOTIENT, REMAINDER, REMD,
  330. REMFLAG, REMOB, REMPROP, REVERSE, SASSOC, SUBLIS, SUBST, TERPRI,
  331. TIMES, TIMES2, UPBV.
  332. The rest of this section describes new functions and functions that
  333. differ from those in Standard Lisp.
  334. 2.1 Boolean Argument And Predicates
  335. In this Standard Lisp implementation all booleans are actually
  336. extra-boolean, i.e. functions that test boolean arguments test for
  337. NIL or not NIL, they never test for T. The predicates BIGP,
  338. CONSTANTP, DIGIT, FILEP, FIXP, FLOATP, INUMP, LITER, NUMBERP, PAIRP
  339. and STRINGP return their argument instead of T when the tested
  340. condition is true. VECTORP is identical to UPBV so that it returns
  341. the upper limit if its argument is a vector. Currently CODEP returns
  342. T if its argument is a code-pointer, but this might change in future
  343. versions.
  344. 2.2 Error Handling
  345. Error handling is somewhat different from that described in [1] 3.8.
  346. Almost no Lisp system errors use the ERROR function. They are
  347. handled internally in a similar way as a call to ERROR, the only
  348. difference from a call to ERROR, is that the global variable EMSG* is
  349. set to the offending expression (not the entire message) for messages
  350. that include an offending part and to NIL for others.
  351. After an error various types of backtraces will be printed depending
  352. on the value of the variable *BAKGAG. If *BAKGAG is not NIL then a
  353. backtrace is printed as a series of function calls, determined from
  354. the regular pushdown list (stack), starting from the most recent
  355. function call. If *BAKGAG is 0 or a negative integer then
  356. S-expressions found on the stack (RPDL) will also be printed. If
  357. *BAKGAG is +N or -N where N is an integer, then only the N last slots
  358. on the stack will be considered (besides function calls and
  359. S-expressions, the stack may contain other objects that are not
  360. printed). The format for printing is:
  361. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 9
  362. printout meaning ________ _______
  363. fn1-fn2 Function 1 called function 2
  364. fn1-EVALARGS The arguments to fn1 are being evaluated
  365. before entering function 1.
  366. fn1-ENTER Function 1 is entered.
  367. ?-fn1 Some internal LISP function called function
  368. 1.
  369. NIL-fn1 Function 1 was called from a place other
  370. than BPS or the Lisp system code. Something
  371. is very wrong.
  372. =sexp1 The S-expression 1 was on the stack.
  373. Note: The BACKTRACE printout is often confused by compiled function
  374. calls of the form (RETURN (FOO X)) which is compiled as
  375. (JCALL (E FOO)) which will not show up in the BACKTRACE.
  376. ERROR(ERVAL:any, MESSAGE:any) _____________________________
  377. This function is similar to that in [1] 3.8 but ERVAL is not
  378. necessarily an integer and the backtrace is somewhat different.
  379. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 10
  380. EXPR PROCEDURE ERROR(ERVAL,MESSAGE);
  381. BEGIN SCALAR OCH;
  382. EMSG!*:=MESSAGE;
  383. IF NULL !*ERRMSG THEN GOTO ER
  384. ELSE IF !*ERRMSG NEQ 0 THEN OCH:=WRS NIL;
  385. IF NULL MESSAGE THEN GOTO BR;
  386. TERPRI();
  387. PRIN2 "***** ";
  388. IF ATOM MESSAGE THEN <<PRIN2 MESSAGE; GOTO BR>>;
  389. PRIN1 CAR MESSAGE;
  390. PRINC '! ;
  391. FOR EACH Y IN CDR MESSAGE DO <<PRIN2 Y; PRINC '! >>;
  392. BR: IF NOT !*BAKGAG THEN GOTO NB
  393. ELSE IF NOT FIXP !*BAKGAG THEN
  394. {backtrace stack back to ERRORSET, printing function calls}
  395. ELSE IF !*BAKGAG = 0 THEN
  396. {backtrace stack back to ERRORSET,
  397. printing function calls and arguments}
  398. ELSE IF !*BAKGAG > 0 THEN
  399. {backtrace !*BAKGAG last slots on stack,
  400. printing function calls}
  401. ELSE IF !*BAKGAG < 0 THEN
  402. {backtrace -!*BAKGAG last slots on stack,
  403. printing function calls and arguments}
  404. TERPRI();
  405. IF !*ERRMSG NEQ 0 THEN WRS OCH;
  406. ER: {return ERVAL to a surrounding ERRORSET, unbinding
  407. FLUID variables to the environment of the ERRORSET}
  408. END;
  409. ERRORSET(U:any, !*ERRMSG:any, !*BAKGAG:any):any _______________________________________________
  410. Type: EVAL, SPREAD
  411. The difference from the definition in [1] 3.8 are that the second and
  412. third variables are FLUID and of type any. The effect of these
  413. variables can be seen in the preceding definition of ERROR. Note
  414. that messages are printed on the standard output device or the
  415. current output device, not on both.
  416. If the GLOBAL variable !*RSET, of type boolean, is T then an ERROR
  417. that is not surrounded by ERRORSET (except the top level of Lisp)
  418. doesn't restore the environment of the top level. This makes it
  419. possible to examine the variable bindings after an error. To restore
  420. variable bindings to their top level values, type a bell ( ^G ).
  421. WARNING(MESSAGE:any):NIL ________________________
  422. Type: EVAL, SPREAD
  423. Prints a message in a format similar to error messages, but preceded
  424. by 3 asterisks instead of 5. If !*ERRMSG is 0 then the message is
  425. printed on the current output device, otherwise on the standard
  426. output device. If !*MSG is NIL then no message is printed.
  427. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 11
  428. EXPR PROCEDURE WARNING MESSAGE;
  429. BEGIN SCALAR OCH;
  430. IF NOT !*MSG THEN RETURN;
  431. IF !*ERRMSG NEQ 0 THEN OCH:=WRS NIL;
  432. TERPRI();
  433. PRIN2 "*** ";
  434. IF ATOM MESSAGE THEN <<PRIN2 MESSAGE; GOTO BR>>;
  435. PRIN1 CAR MESSAGE;
  436. PRINC '! ;
  437. FOR EACH Y IN CDR MESSAGE DO <<PRIN2 Y; PRINC '! >>;
  438. BR: TERPRI();
  439. IF !*ERRMSG NEQ 0 THEN WRS OCH
  440. END;
  441. TIME():integer ______________
  442. Type: EVAL, SPREAD
  443. TIME returns the CPU-time in milliseconds since the job was logged
  444. in.
  445. 2.3 I/O
  446. The I/O routines OPEN, CLOSE, RDS and WRS are similar to those in
  447. [1]. A description of the system dependent parts and the (minor)
  448. differences from [1] is given below.
  449. OPEN(FILENAME-LIST:list, HOW:id):{integer, NIL} _______________________________________________
  450. OPEN associates the specified files (might be more than one) with one
  451. of the 16 possible I/O channels in Lisp and returns as value the
  452. number of the channel. This number is then used as argument to
  453. CLOSE, RDS and WRS. The channels are numbered from 0 to 15. Channel
  454. 0 is the standard device (i.e. the TTY). It is always open for both
  455. input and output and cannot be closed. Instead of 0, NIL can be used
  456. and 0 is always converted to NIL by RDS and WRS before assigning
  457. values to the globals INC* and OUTC*.
  458. The syntax for FILENAME-LIST is as follows:
  459. <filename-list> ::= (<file-spec>)
  460. ::= <id or string>
  461. <file-spec> ::= <filename>
  462. ::= <file-spec> <filename>
  463. ::= <device-name> <file-spec>
  464. <devicename> ::= <id or string>:
  465. ::= (<atom> <atom>)
  466. ::= DIR: <id or string>
  467. <filename> ::= <id or string>
  468. ::= (<id or string> . <id or string>)
  469. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 12
  470. Semantics:
  471. A filename-list that is an atom is the same as device DSK:, the atom
  472. as filename and no extension.
  473. A device-name is either an identifier or string ending with colon (:)
  474. which is the name of an input or output device, or a list containing
  475. a project-programmer number, or (not in TOPS-10 version) DIR:
  476. followed by an identifier or string which is the name of a disk
  477. directory. In the two last cases, the disk is implicitly specified.
  478. I/O device names may not have more than three characters plus a
  479. colon.
  480. A filename is either an identifier or string which specifies a
  481. filename with a blank extension, or a dotted pair of filename and
  482. extension. In both cases the filename applies to the recently (to
  483. the left) specified device-name. If no device-name is specified,
  484. then DSK: is assumed. A filename may not be longer than six, and an
  485. extension not longer than three characters.
  486. HOW must be either INPUT, OUTPUT, INBIN or OUTBIN. The last two
  487. keywords are used for binary I/O together with BINI and BINO. They
  488. are mainly intended for the Fap loader.
  489. CLOSE(CHANNELNAME:{integer, NIL}):{integer, NIL} ________________________________________________
  490. Type: EVAL, SPREAD
  491. CLOSE closes the specified channel if it is open and returns its
  492. argument as value. If CHANNELNAME is NIL or 0 then nothing happens
  493. and NIL is returned.
  494. RDS(CHANNELNAME:{integer, NIL}):{integer, NIL} ______________________________________________
  495. Type: EVAL, SPREAD
  496. RDS selects the specified channel for input and returns as value the
  497. channelname for the previously selected channel. When the end of the
  498. selected channel is reached, the channel is automatically closed.
  499. RDS sets the global variable INC* to the channel name for the
  500. currently selected input channel.
  501. WRS(CHANNELNAME:{integer, NIL}):{integer, NIL} ______________________________________________
  502. Type: EVAL, SPREAD
  503. WRS selects the specified channel for output and returns as value the
  504. channel name for the previously selected channel. WRS sets the
  505. global variable OUTC* to the channel name for the currently selected
  506. output channel.
  507. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 13
  508. FILEP(FILENAME-LIST:list):{list, NIL} _____________________________________
  509. Type: EVAL, SPREAD
  510. FILENAME-LIST specifies a file in the same way as the first argument
  511. to OPEN. If this is an existing file, then FILEP returns its
  512. argument, otherwise NIL is returned.
  513. SETSYS(SYSDEVICE:any):{integer, string} _______________________________________
  514. Type: EVAL, SPREAD
  515. SETSYS redefines the meaning of the device SYS: for OPEN. It is a
  516. different function when running on a Tenex machine as compared with
  517. running on a Tops-10 or Tops-20 machine.
  518. On a Tenex machine, if SYSDEVICE is a non-negative integer, then SYS:
  519. is set to mean the directory with directory number SYSDEVICE.
  520. On a Tops machine, if SYSDEVICE is an identifier or string ending
  521. with a colon ":", then SYSDEVICE is regarded as the name of an I/O
  522. device and SYS: is set to mean that device. The device name may not
  523. contain more than three characters, not counting the colon.
  524. If SYSDEVICE is anything else, then nothing is changed. The value of
  525. SETSYS is the directory number respectively the device name
  526. associated with SYS: after the call to SETSYS.
  527. SETPCHAR(PROMPT:{id or string}):id __________________________________
  528. Type: EVAL, SPREAD
  529. SETPCHAR sets the Lisp prompter to the four first characters of
  530. PROMPT and returns the previous prompter as a non interned id.
  531. RDSLSH(U:boolean):boolean _________________________
  532. Type: EVAL, SPREAD
  533. RDSLSH affects how READ reads the characters "%", "@", "'", "/", "!",
  534. "[", "]", "<" and ">". If U is NIL then READ is set to read Standard
  535. Lisp, which means that "'" is quote, "%" is start of a comment ending
  536. at (but not including) <lf>, "!" is escape (slashifier), "[" and "]"
  537. surround a vector, "<" and ">" are super parentheses and "@" and "/"
  538. are letters. If U is not NIL (e.g. T) then READ is set to read
  539. LISP 1.6, which means that "@" is quote, "/" is escape, "[" and "]"
  540. are super parentheses and "%", "<", ">", "'" and "!" are letters.
  541. RDSLSH ends by calling SCANSET(NIL).
  542. PGLINE():pair _____________
  543. Type: EVAL, SPREAD
  544. PGLINE returns a dotted pair of current line and current page of
  545. input. When the input is coming from the TTY, then the the answer is
  546. always (1 . 1). When the input is coming from a file with SOS or
  547. EDIT line numbers, then those line numbers are returned, otherwise
  548. the line and page numbers are found by counting line and page feeds.
  549. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 14
  550. READ():any __________
  551. Type: EVAL, SPREAD
  552. READ is the same as in [1] with the following differences. The
  553. delimiters "<" and ">" operate as "super-parentheses". A right angle
  554. bracket ">" will close all open left parentheses "(" up to matching
  555. left angle bracket "<". If there is no matching left angle bracket,
  556. it will close the entire S-expression.
  557. When the input is comming from the terminal, then the character
  558. altmode (or escape) will end the input line and close the
  559. S-expression being read in the same way as a rigth angle bracket
  560. without a matching left angle bracket.
  561. SKIPTO(SKPCH:{id, string}):integer __________________________________
  562. Type: EVAL, SPREAD
  563. SKIPTO skips characters from the selected input channel until a
  564. character is found that matches the first character in the print name
  565. of SKPCH. The ASCII code for that character is returned as value.
  566. TYI():integer _____________
  567. Type: EVAL, SPREAD
  568. TYI reads the next character from the selected input channel and
  569. returns the ASCII code for that character.
  570. UNREADCH(BCHR:id):id ____________________
  571. Type: EVAL, SPREAD
  572. UNREADCH puts the first character in BCHRs print name in an internal
  573. backspace buffer and returns BCHR. This has as effect that when a
  574. character is to be read from the selected input channel, then it is
  575. instead taken from the backspace buffer and the buffer is cleared so
  576. that subsequent characters are read from the selected input channel.
  577. The buffer can only contain one character at a time. If a second
  578. UNREADCH is executed before the buffer is cleared, then the buffer is
  579. overwritten with the new BCHR, undoing the effect of the first
  580. UNREADCH.
  581. UNREADCH should only be used after TYI or READCH. The reason for
  582. this is that functions that read atoms (READ and SCAN), uses the
  583. backspace buffer to store the delimiter.
  584. TYO(OCHR:integer):integer _________________________
  585. TYO prints the character whose ASCII code is OCHR and returns OCHR.
  586. PAGELENGTH and LINELENGTH __________ __________
  587. are similar to their definition in [1] but there is no upper limit to
  588. their argument. The argument should be a positive number or NIL.
  589. PAGELENGTH also accepts 0 as argument. Calls to PAGELENGTH or
  590. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 15
  591. LINELENGTH do only affect the presently selected output channel.
  592. Each output channel that is OPENed, has initially LINELENGTH 112
  593. (decimal) and PAGELENGTH 0 (i.e. no paging). The TTY channel
  594. (channel NIL) has initially LINELENGTH 69 and PAGELENGTH 0.
  595. The character ^Z (Ascii 32) is used by PRIN1, PRIN2 and PRINT to
  596. break an atom that is to long to fit in on the current line. All
  597. reading routines (TYI, READCH and READ) will ignore everything
  598. between a ^Z and a <lf> including the end points.
  599. Standard Lisp uses the character ^_ (Ascii 37) internaly as end of
  600. line character. The reading routines will interpret a single <lf>, a
  601. single <ff> or a <cr> followed by a <lf> or a <ff> as an end of line.
  602. The printing routines print ^_ as <cr><lf>, except for TYO: (TYO 37)
  603. (octal) prints ^_ (control ).
  604. 2.4 The Interpreter
  605. The interpreter is an extension of that defined in [1]. The main
  606. differences from [1] are:
  607. The body of a lambda expression is an implied PROGN.
  608. Environments can be passed around (FUNARG feature).
  609. The LABEL construct is supported.
  610. FEXPRs may have a second argument that is the environment.
  611. The compiler doesn't support these features.
  612. EVAL(U:any):any _______________
  613. Type: EVAL, SPREAD
  614. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 16
  615. EXPR PROCEDURE EVAL U;
  616. BEGIN SCALAR FN;
  617. RETURN
  618. IF ATOM U THEN
  619. IF NOT IDP U THEN U
  620. ELSE IF A:=GET(U,VALUE) AND NOT(A:=CDR A EQ 'UNBOUND) THEN A
  621. ELSE ERROR(29,LIST(U,"UNBOUND VARIABLE))
  622. ELSE IF IDP CAR U THEN
  623. IF A:=GETD CAR U THEN
  624. IF CAR A EQ 'EXPR THEN APPLY(CDR A,EVLIS CDR U)
  625. ELSE IF CAR A EQ 'FEXPR THEN APPLY(CDR A, LIST CDR U)
  626. ELSE IF CAR A EQ 'MACRO THEN EVAL APPLY(CDR A, LIST U)
  627. ELSE ERROR(28,LIST(CAR U,"UNDEFINED FUNCTION"))
  628. ELSE IF A:=GET(CAR U,'VALUE) AND NOT((A:=CDR A) EQ 'UNBOUND)
  629. AND NOT(A EQ CAR U) THEN EVAL A . CDR U
  630. ELSE ERROR(28,LIST(CAR U,"UNDEFINED FUNCTION"))
  631. ELSE IF PAIRP CAR U OR CODEP CAR U
  632. THEN APPLY(CAR U, EVLIS CDR U)
  633. ELSE ERROR(28,LIST(CAR U,"UNDEFINED FUNCTION"))
  634. END;
  635. Note: The identifier UNBOUND is not interned and the ERROR function
  636. is not used.
  637. APPLY(FN:any, ARGS:list):any ____________________________
  638. Type: EVAL, SPREAD
  639. EXPR PROCEDURE APPLY(FN,ARGS);
  640. BEGIN SCALAR A;
  641. RETURN
  642. IF ATOM FN THEN
  643. IF IDP FN THEN
  644. IF A:=GETD FN THEN
  645. IF CAR A EQ 'EXPR THEN APPLY(CDR A, ARGS)
  646. ELSE ERROR(31,LIST(FN,"NOT EXPR - APPLY"))
  647. ELSE IF A:=GET(FN,'VALUE) AND NOT((A:=CDR A) EQ 'UNBOUND)
  648. AND NOT(A EQ FN) THEN APPLY(A,ARGS)
  649. ELSE ERROR(30,LIST(FN,"UNDEFINED FUNCTION - APPLY"))
  650. ELSE IF CODEP FN THEN
  651. IF LENGTH ARGS > 14 THEN ERROR(145,"TO MANY ARGS FOR EXPR")
  652. ELSE {spread the actual parameters in ARGS, transfer to entry
  653. point of the function and return the value returned
  654. by the function}
  655. ELSE ERROR(30,LIST(FN,"UNDEFINED FUNCTION - APPLY"))
  656. ELSE IF CAR FN EQ 'LAMBDA THEN
  657. IF A:=CADR FN AND IDP FN THEN ERROR(146,"ILLEGAL LAMBDA FORMAT")
  658. ELSE IF (A:=LENGTH A - LENGTH ARGS) < 0 THEN
  659. ERROR(147,"TO MANY ARGUMENTS SUPPLIED - APPLY")
  660. ELSE IF A > 0 THEN
  661. IF A=1 AND LENGTH ARGS =1 AND
  662. {APPLY was called from EVAL to evaluate FEXPR call} THEN
  663. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 17
  664. APPLY(FN,LIST(CAR ARGS,{binding context pointer (BCP)}))
  665. ELSE ERROR(148,"TO FEW ARGUMENTS SUPPLIED - APPLY")
  666. ELSE <<{bind the actual parameters in ARGS to the formal
  667. parameters in CADR FN};
  668. A:=EVAL('PROGN . CDDR FN);
  669. {unbind formal parameters};
  670. A>>
  671. ELSE IF CAR FN EQ 'FUNARG THEN
  672. <<{unbind parameters back to BCP in CADDR FN};
  673. A:=APPLY(CADR FN,ARGS);
  674. {restore bindings};
  675. A>>
  676. ELSE IF CAR FN EQ 'LABEL THEN
  677. <<{bind function in CADDR FN to formal name in CADR FN};
  678. A:=APPLY(CADDR FN,ARGS);
  679. {unbind name};
  680. A>>
  681. ELSE APPLY(EVAL FN,ARGS)
  682. END;
  683. !%EVAL(U:any,ENV:{list, integer}):any _____________________________________
  684. Type: EVAL, SPREAD
  685. EXPR PROCEDURE !%EVAL(U,ENV);
  686. BEGIN SCALAR A;
  687. IF PAIRP ENV THEN FOR EACH X IN ENV DO
  688. {bind actual parameter in CDR X to formal parameter in CAR X}
  689. ELSE {ENV is a BCP. Unbind parameters back to BCP};
  690. A:=EVAL U;
  691. {restore parameters};
  692. RETURN A
  693. END;
  694. !%APPLY(FN:any,ARGS:list,ENV:{list, integer}):any _________________________________________________
  695. Type: EVAL, SPREAD
  696. EXPR PROCEDURE !%APPLY(FN,ARGS,ENV);
  697. !%EVAL(LIST('APPLY,FN,ARGS),ENV);
  698. !*FUNCTION(FN:any) __________________
  699. Type: EVAL, SPREAD
  700. !*FUNCTION is used instead of FUNCTION when it is necessary to pass
  701. along an environment together with a function definition.
  702. FEXPR PROCEDURE !*FUNCTION FN;
  703. LIST('FUNARG,CAR FN,{BCP for current environment});
  704. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 18
  705. 2.5 The Fap Loader
  706. The Fap loader loads binary files generated by the compiler.
  707. FLOAD(FILE-LIST:list):NIL _________________________
  708. Type: NOEVAL, NOSPREAD
  709. FILE-LIST is a list of identifiers or strings, each of which is the
  710. name of a file with the implied extension FAP. FLOAD loads these
  711. files with the Fap loader.
  712. FEXPR PROCEDURE FLOAD FILES;
  713. FOR EACH X IN FILES DO FISLM X;
  714. FISLM(FILE:id):NIL __________________
  715. Type: EVAL, SPREAD
  716. FISLM loads the Fap file FILE.FAP.
  717. If the global variable *PREDEF is not NIL then the Fap loader prints
  718. the message:
  719. *** x REDEFINED
  720. if the function x is redefined.
  721. If the global variable *PURIFY is not NIL then the Fap loader will
  722. try to convert the function links in the loaded binary code, from
  723. slow to fast links.
  724. 2.6 Logical Routines And LAP Support
  725. The following routines are mainly intended for use by the Lisp
  726. Assembler (LAP).
  727. !*BOX(POINTER:any):integer __________________________
  728. Type: EVAL, SPREAD
  729. !*BOX converts POINTER from its machine representation to a Lisp
  730. number. !*BOX is the inverse operation to NUMVAL.
  731. NUMVAL(NUM:number):any ______________________
  732. Type: EVAL, SPREAD
  733. NUMVAL converts the number NUM from its Lisp representation to its
  734. machine representation. NUMVAL(!*BOX(x)) is EQ to x for any x.
  735. !*BOX(NUMVAL(x)) is EQUAL to x if x is an INUM or a FIXNUM.
  736. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 19
  737. MKCODE(ADR:integer, NARG:integer):codepointer _____________________________________________
  738. Type: EVAL, SPREAD
  739. MKCODE converts the address ADR into a code pointer. NARG is the
  740. number of arguments.
  741. BOOLE(OPR:integer, A:integer, B:integer):integer ________________________________________________
  742. Type: EVAL, SPREAD
  743. BOOLE performs a 36 bit Boolean operation on A and B. OPR specifies
  744. which of 16 Boolean operations to perform. These operations are
  745. defined in the following table of the result for the i:th bit in the
  746. answer with given value of OPR and i:th bit of A and B. In the table
  747. "-" stands for boolean not.
  748. A,B 0,0 1,0 0,1 1,1
  749. OPR
  750. 0 0 0 0 0 0
  751. 1 A^B 0 0 0 1
  752. 2 -A^B 0 0 1 0
  753. 3 B 0 0 1 1
  754. 4 A^-B 0 1 0 0
  755. 5 A 0 1 0 1
  756. 6 -A=B 0 1 1 0
  757. 7 AvB 0 1 1 1
  758. 8 -A^-B 1 0 0 0
  759. 9 A=B 1 0 0 1
  760. 10 -A 1 0 1 0
  761. 11 -AvB 1 0 1 1
  762. 12 -B 1 1 0 0
  763. 13 Av-B 1 1 0 1
  764. 14 -Av-B 1 1 1 0
  765. 15 1 1 1 1 1
  766. As can be seen from above, OPR is the number whose binary
  767. representation is the corresponding table entry.
  768. LSH(NUM:integer, SHIFT:integer):integer _______________________________________
  769. Type: EVAL, SPREAD
  770. LSH performs a logical 36 bit left shift of SHIFT places on NUM. If
  771. SHIFT is negative, then NUM will be shifted right. In both cases,
  772. vacated bits are filled with zeros.
  773. EXAMINE(ADR:integer):integer ____________________________
  774. Type: EVAL, SPREAD
  775. EXAMINE converts the word at address ADR in memory to a Lisp number
  776. and returns it.
  777. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 20
  778. DEPOSIT(NUM:number, ADR:integer):integer ________________________________________
  779. Type: EVAL, SPREAD
  780. DEPOSIT deposits the 36 bit machine representation of NUM in the word
  781. at address ADR in memory. NUM is returned as value.
  782. 2.7 The Alternative Scanner SCAN
  783. Lisp uses a table driven scanner. There are two scanner tables, the
  784. Standard Lisp table and a second table that may be modified by the
  785. user for the purpose of implementing scanners for other languages.
  786. The syntax when using the second table is:
  787. <alphabetic> ::= A|B| ... |Z|a| ... |z
  788. <extra letter> ::= <initially no character>
  789. <letter> ::= <alphabetic>|<extra letter>
  790. <ignored> ::= <tab>|<lf>|<vtab>|<ff>|<cr>|<space>
  791. <digit> ::= 1|2|3|4|5|6|7|8|9
  792. <delimiter> ::= <all characters except letter, digit or
  793. ignored>
  794. <special control> ::= <null>|^Z|+|-|.|E|<comment start>|<comment
  795. end>|<string start>|<string end>|<slashifier>
  796. <identifier> ::= <letter>
  797. ::= <slashifier><any character>
  798. ::= <identifier><digit>
  799. ::= <identifier><identifier>
  800. <comment> ::= <comment start><any characters except comment
  801. end>
  802. ::= ^Z<any characters except lf or ff><lf or ff>
  803. <string-text> ::= <any character except string end>
  804. ::= <string end><string end>
  805. ::= <string-text><string-text>
  806. <string> ::= <string start><string-text><string end>
  807. The syntax for numbers is as usual (see 1.3), except that leading
  808. signs ("+" or "-") in numbers are treated as delimiters.
  809. In the above syntax letter, delimiter, ignored, comment start,
  810. comment end, string start, string end and slashifier can be changed
  811. by the user. Initially comment start is "%", comment end is <lf>,
  812. string start and string end is " (double quote) and the slashifier is
  813. "!", i.e. the same as for the ordinary Lisp scanner. Note that "^Z"
  814. starts a comment also when comment start has been defined as
  815. something else. Note also that the comment end is not commented out
  816. in a comment started by something else than ^Z.
  817. 2.7.1 Scanner Functions - In the following descriptions, all
  818. characters are specified by their ASCII code. E.g. " " is (in octal)
  819. 40 and "A" is 101.
  820. SCANSET(SWITCH:extraboolean):extraboolean _________________________________________
  821. Type EVAL, SPREAD
  822. SCANSET switches the scanners attention between the two scanner
  823. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 21
  824. tables. If SWITCH is NIL the Standard Lisp scanner table is used,
  825. otherwise the user settable scanner table is used. SCANSET returns
  826. the previous setting.
  827. SCANINIT(COMMENT-START:integer, COMMENT-END:integer, ____________________________________________________
  828. STRING-START:integer, STRING-END:integer, SLASHIFIER:integer):NIL _________________________________________________________________
  829. Type EVAL, SPREAD
  830. SCANINIT reinitializes the scanner so that all characters except
  831. alphabetics and digits, are delimiters (no ignored). It then sets
  832. comment start, comment end, string start, string end and slashifier
  833. to be the specified characters.
  834. DELIMIT(CHAR:integer):integer _____________________________
  835. Type EVAL, SPREAD
  836. DELIMIT specifies to the scanner that CHAR is a delimiter. CHAR is
  837. returned as value.
  838. LETTER(CHAR:integer):integer ____________________________
  839. Type EVAL, SPREAD
  840. LETTER specifies to the scanner that CHAR is a letter, and thus
  841. allows CHAR to be in an identifier. CHAR is returned as value.
  842. IGNORE(CHAR:integer):integer ____________________________
  843. Type EVAL, SPREAD
  844. IGNORE specifies to the scanner that CHAR is not to be returned as a
  845. delimiter from scan, but instead will be ignored. However, CHAR will
  846. still function as a delimiter inside a number or an identifier.
  847. SCAN():integer ______________
  848. Type EVAL, SPREAD
  849. SCAN reads an atom or delimiter and sets the variable SCNVAL to the
  850. value read, and returns a number corresponding to the syntactical
  851. type read as follows:
  852. Type SCAN value SCNVAL value
  853. identifier 0 the uninterned identifier
  854. string 1 the string
  855. number 2 the number
  856. delimiter 3 an interned id with the delimiter
  857. as print name
  858. SCAN will give different results depending on which scanner is used.
  859. READ checks which scanner is used and will temporarily switch to the
  860. Standard Lisp scanner if that scanner is not already used. An error
  861. in READ might leave the Standard Lisp scanner in use even though it
  862. wasn't before the READ.
  863. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 22
  864. 2.8 Other Functions
  865. INTERNP(U:any):extra-boolean ____________________________
  866. Type: EVAL, SPREAD
  867. INTERNP returns T if U is an interned id, otherwise NIL.
  868. INUMP(U:any):extra-boolean __________________________
  869. Type: EVAL, SPREAD
  870. INUMP returns U if it is an INUM, otherwise NIL.
  871. BIGP(U:any):extra-boolean _________________________
  872. Type: EVAL, SPREAD
  873. BIGP returns U if it is a BIGNUM, otherwise NIL.
  874. GCD(A:integer, B:integer):integer _________________________________
  875. Type: EVAL, SPREAD
  876. GCD returns the greatest common divisor of A and B.
  877. COMPRESS(U:id-list):any _______________________
  878. Type: EVAL, SPREAD
  879. COMPRESS is similar to the definition in [1], but it is currently
  880. more general. It uses READ to read the character ids in U and it can
  881. read an arbitrary S-expression.
  882. EXPLODE(U:any):id-list ______________________
  883. Type: EVAL, SPREAD
  884. EXPLODE is similar to the definition in [1], but it is currently more
  885. general as it can explode any S-expression. This is done by using
  886. PRIN1 to print to a list. EXPLODE uses the Standard Lisp scanner
  887. table and will temporarily switch scanner tables if necessary.
  888. EXPLODEC(U:any):id-list _______________________
  889. Type: EVAL, SPREAD
  890. EXPLODEC is similar to EXPLODE but it uses PRIN2 instead of PRIN1.
  891. This means that the escape character does not prefix special
  892. characters and strings are not enclosed by " ... ".
  893. SET and SETQ ___ ____
  894. are the same as in [1] except that they do not declare unknown
  895. variables to be FLUID.
  896. FLUID, UNFLUID and GLOBAL ______ _______ ___ ______
  897. are similar to their definition in [1] but they presently have some
  898. side effects used by REDUCE.
  899. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 23
  900. PUTD(U:id,V:id,W:any):id ________________________
  901. Type: EVAL, SPREAD.
  902. If U is flagged LOSE, then PUTD does nothing. If V is EXPR, FEXPR or
  903. MACRO, then U is defined as a function of type V with function
  904. property W else PUTD is the same as PUT.
  905. If *COMP is on and FLAGP(V,'COMPILE) and W is a LAMBDA expression
  906. then W is compiled. Initially EXPR and FEXPR are flagged COMPILE.
  907. ATSOC(U:any, V:alist):{dotted-pair, NIL} ________________________________________
  908. Type: EVAL, SPREAD
  909. ATSOC is similar to ASSOC but it uses EQ instead of EQUAL.
  910. EXPR PROCEDURE ATSOC(U, V);
  911. IF NULL V THEN NIL
  912. ELSE IF U EQ CAAR V THEN CAR V
  913. ELSE ASSOC(U, CDR V);
  914. ASCII(COD:integer):integer __________________________
  915. Type: EVAL, SPREAD
  916. ASCII returns an non-interned single character identifier such that
  917. the ASCII code for the character is COD.
  918. Example: (ASCII 101) returns an identifier with print name "A".
  919. COND([U:cond-form]):any _______________________
  920. Type: NOEVAL, NOSPREAD
  921. Cond-form is more general than that defined in [1] 2.3. A cond-form
  922. is a list of N+1 element lists of the form:
  923. (ANTECEDENT:any CONSEQUENT-1:any ... CONSEQUENT-N:any)
  924. where N is a non-negative integer.
  925. The Antecedents are evaluated in their order of appearance until a
  926. non-NIL value is encountered. The consequents of the selected U are
  927. evaluated from left to right and the value of the last consequent is
  928. returned as value of COND. If there are no consequents then the
  929. value of the antecedent is returned.
  930. FREEZE(U:boolean) _________________
  931. Type: EVAL, SPREAD
  932. FREEZE halts the Lisp system in such a way that it can later be
  933. restarted. The value of U determines what happens when the system is
  934. restarted: If U is true (not NIL) then any additional memory is
  935. allocated and the the system is back at the top level. If U is NIL
  936. then the system is restored to where it was (except for that all
  937. files are closed), and NIL is returned as value of FREEZE.
  938. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 24
  939. 2.9 Memory Allocation
  940. The Standard Lisp system has many different areas of memory for
  941. storing data which can independently vary in size. Some LISP
  942. applications demand larger allocations for these areas than others.
  943. To allow users to adjust the sizes of these areas to their own needs,
  944. a memory allocation procedure exists.
  945. 2.9.1 Storage Allocation Areas -
  946. BINARY PROGRAM SPACE Compiled functions and vectors.
  947. FREE STORAGE LISP pairs
  948. FULL WORD SPACE Numbers and print names
  949. BIT TABLES Used by garbage collector
  950. REGULAR PUSHDOWN LIST Return addresses for function calls and
  951. local variables in interpreter and
  952. compiled code.
  953. SPECIAL PUSHDOWN LIST Old bindings of fluid variables.
  954. EXPANDED CORE I/O buffers.
  955. The various areas are differently allocated on a Tops-10 machine as
  956. compared with a Tops-20 or Tenex machine. The memory map for the two
  957. cases are as follows:
  958. TOPS-10 TENEX or TOPS-20
  959. TOP OF CORE
  960. -------------------------
  961. | BINARY PROGRAM SPACE |
  962. -------------------------
  963. BOTTOM OF HIGH CORE
  964. TOP OF CORE TOP OF LOW CORE
  965. ------------------------- -------------------------
  966. | EXPANDED CORE | | EXPANDED CORE |
  967. ------------------------- -------------------------
  968. | SPECIAL PUSHDOWN LIST | | SPECIAL PUSHDOWN LIST |
  969. ------------------------- -------------------------
  970. | REGULAR PUSHDOWN LIST | | REGULAR PUSHDOWN LIST |
  971. ------------------------- -------------------------
  972. | BIT TABLES | | BIT TABLES |
  973. ------------------------- -------------------------
  974. | FULL WORD SPACE | | FULL WORD SPACE |
  975. ------------------------- -------------------------
  976. | FREE STORAGE | | FREE STORAGE |
  977. ------------------------- -------------------------
  978. | BINARY PROGRAM SPACE | | LISP INTERPRETER |
  979. ------------------------- -------------------------
  980. | LISP INTERPRETER | BOTTOM OF CORE
  981. -------------------------
  982. BOTTOM OF CORE
  983. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 25
  984. 2.9.2 Allocation -
  985. When the Lisp system is initially started, it asks the user:
  986. ALLOC?
  987. If this is answered with "Y" then the following questions are asked,
  988. otherwise the default values are used. The questions vary slightly
  989. between a Tops-10, a Tops-20 and a Tenex machine:
  990. Tops-10 Tops-20 Tenex Default Meaning
  991. Core (K): Core (K): 12 K words core (decimal).
  992. SYS: SYS: SYS: Meaning of SYS: in OPEN.
  993. SYS: dir# Dir# for Meaning of SYS: in OPEN.
  994. <REDUCE> or 0.
  995. FWDS= FWDS= FWDS= 400+1/4FREE Words full word space
  996. (octal)
  997. BPS.= 2000 Words binary program
  998. space (octal)
  999. SPDL= SPDL= SPDL= 1000 Words special pushdown
  1000. list (octal)
  1001. RPDL= RPDL= RPDL= 1000 Words regular pushdown
  1002. list (octal)
  1003. HASH= HASH= HASH= 77 Number of buckets in
  1004. oblist (octal)
  1005. There are two basic responses to any of these questions:
  1006. 1. A space causes the default value to be used.
  1007. 2. A number ended by a space or a cr causes the number to be
  1008. used.
  1009. 2.9.3 Reallocating Space -
  1010. CORE(SIZE:integer):integer __________________________
  1011. Type: EVAL, SPREAD
  1012. If SIZE is 0 then CORE returns the (low-)core size including extended
  1013. core. If SIZE is negative then CORE returns the (low-)core size
  1014. excluding extended core (i.e. Lisp allocated core).If SIZE is a
  1015. positive integer then the system will try to allocate SIZE K words
  1016. (low-)core.
  1017. If SIZE is smaller than current Lisp alloc. core, then the warning
  1018. message:
  1019. *** CAN'T CUT CORE INTO ALLOCATED SPACE
  1020. is printed, no action is taken and the value returned is the same
  1021. as that when SIZE is negative (i.e. minimum positive value of
  1022. SIZE).
  1023. Otherwise the core will be expanded to SIZE K words and (if not a
  1024. (EXCORE n) has been executed) then the additional core will be
  1025. reallocated in the following way:
  1026. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 26
  1027. 1/4 for full words space
  1028. 1/64 for each push down list
  1029. about 1/16 for bit tables
  1030. the remainder for free storage (Lisp cells)
  1031. The above described allocation scheme is also used if the run of Lisp
  1032. is stopped (by an error or by a ^C) and then either started again by
  1033. the START command or SAVEd and then RUN again. When BPS is in high
  1034. core (Tops-20 or Tenex) then it is automatically expanded as long as
  1035. there is free high core. When BPS is in low core (Tops-10) then The
  1036. binary program space can not actually be expanded, but an extra
  1037. binary program space can be defined in the expanded core by the
  1038. following function.
  1039. EXCORE(ARG:any):any ___________________
  1040. Type: EVAL, SPREAD
  1041. EXCORE has two effects:
  1042. 1. The allocation procedure described in CORE, is inhibited if
  1043. ARG is not NIL.
  1044. 2. In case of a Tops-10 machine, there is also a second effect:
  1045. If ARG is a positive integer then ARG K words of binary
  1046. space is defined in extra core and BPORG and BPEND are set
  1047. to the beginning and end of this extra BPS. If ARG is 0 or
  1048. NIL then BPORG and BPEND are set to their old values in
  1049. ordinary BPS if they have been set to point into extra BPS.
  1050. EXCISE():T __________
  1051. Type: EVAL, SPREAD
  1052. EXCISE contracts core to its size excluding extra core.
  1053. Note that if a Lisp core image is saved and later RUN, then the extra
  1054. core will be reallocated as described in CORE.
  1055. 2.10 The Garbage Collector
  1056. The garbage collector in LISP is called whenever FREE STORAGE or FULL
  1057. WORD SPACE is exhausted. The garbage collector analyzes the entire
  1058. state of list structure which is pointed to by either the OBLIST, the
  1059. regular pushdown list, the special pushdown list, list arrays, and a
  1060. few other special cells. By recursively marking all words in free
  1061. and full word spaces which are pointed to in this manner, it is
  1062. possible to determine which words are not pointed to and are
  1063. therefore garbage. Such words are collected together on their
  1064. respective free storage or full word space lists.
  1065. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 27
  1066. RECLAIM():NIL _____________
  1067. Type: EVAL, SPREAD
  1068. RECLAIM causes a garbage collection to occur and returns NIL.
  1069. GCTIME():integer ________________
  1070. Type: EVAL, SPREAD
  1071. GCTIME returns the number of milliseconds LISP has spent garbage
  1072. collecting since it was started.
  1073. SPEAK():integer _______________
  1074. Type: EVAL, SPREAD
  1075. SPEAK returns the total number of CONSes which have been executed
  1076. since LISP was started.
  1077. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 28
  1078. 3.0 GLOBAL (FLUID) SYSTEM VARIABLES
  1079. *RAISE, NIL and T are implemented as described in [1]..
  1080. The following variables differ from those defined in [1].
  1081. *COMP - Initial value = NIL _____
  1082. See description of PUTD in section 2.8.
  1083. EMSG* - Initial value = NIL _____
  1084. Most of the system errors do not use ERROR and only part of their
  1085. message is found as the value of EMSG*. See ERROR.
  1086. $EOF$ - Initial value = $EOF$ _____
  1087. $EOF$ is returned to a surrounding ERRORSET (or the top level if
  1088. there is none) when a input function reaches the end of the currently
  1089. selected input file.
  1090. $EOL$ - Initial value = ^_ (Ascii 37) _____
  1091. See description of ^_ at the end of section 2.3.
  1092. The following variables are extensions of Standard Lisp:
  1093. *BAKGAG - Initial value = NIL _______
  1094. *BAKGAG is the third argument to ERRORSET. If *BAKGAG is not NIL
  1095. then a backtrace will be printed when an error occurs. For the
  1096. different forms of backtraces depending on the value of *BAKGAG see
  1097. ERROR.
  1098. *DDTIN - Initial value = NIL ______
  1099. *DDTIN controls whether input from the TTY is seen line by line or
  1100. character by character.
  1101. If *DDTIN is NIL, then input is seen line by line, i.e. the input
  1102. buffer is only sent to the Lisp system when a carriage return, a line
  1103. feed, a form feed or an altmode is typed on the TTY. This means that
  1104. terminal editing characters like ^U, <rub> etc. (or corresponding in
  1105. a Tenex system) can be used.
  1106. If *DDTIN is not NIL (e.g. T) then input is seen character by
  1107. character, i.e. each character is sent to the Lisp system when it is
  1108. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 29
  1109. typed on the TTY. This means that editing characters can't be used,
  1110. but <rub> will delete the entire S-expression being read and start
  1111. reading again.
  1112. *ERRMSG - Initial value = T _______
  1113. *ERRMSG is the second argument to ERRORSET. If *ERRMSG is NIL then
  1114. no error message will be printed. If *ERRMSG is 0 then error
  1115. messages will be printed on the currently selected output channel.
  1116. If *ERRMSG is anything else, then error messages will be printed on
  1117. the TTY.
  1118. *ECHO - Initial value = NIL _____
  1119. If *ECHO is not NIL then all characters read from a file (not TTY)
  1120. are echoed to the current output file. No conversion from lower to
  1121. upper case is done of the echoed character regardless of the value of
  1122. !*RAISE. If a ^D is encountered in the file, the program will wait
  1123. until a " " (a space) is typed on the TTY and then continue. The ^D
  1124. is not echoed.
  1125. If *ECHO is NIL no echoing takes place.
  1126. *GCGAG - Initial value = NIL ______
  1127. If *GCGAG is not NIL when a garbage collection occurs then the
  1128. following is printed on the TTY:
  1129. either
  1130. *** FREE STG EXHAUSTED
  1131. or
  1132. *** FULL WORD SPACE EXHAUSTED
  1133. or nothing
  1134. followed by
  1135. *** n FREE STG, m FULL WORDS AVAILABLE
  1136. where n and m are the number of words (cells) printed in the current
  1137. radix.
  1138. If *GCGAG is NIL then these messages are not printed.
  1139. *MSG - Initial value = T ____
  1140. If *MSG is NIL then no warnings will be printed, e.g. PUTD will not
  1141. print any message when a function is redefined.
  1142. *NOPOINT - Initial value = NIL ________
  1143. If *NOPOINT is NIL then integers printed (or EXPLODEd) with a decimal
  1144. radix (BASE = 10.) are followed by a ".".
  1145. If *NOPOINT is not NIL then decimal integers are not printed with a
  1146. following ".".
  1147. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 30
  1148. *NOUUO - Initial value = NIL ______
  1149. If *NOUUO is not NIL then slow links in compiled code are converted
  1150. to fast links when the code is executed. Fast links can't be TRaced
  1151. as can slow links.
  1152. *PREDEF - Initial value = NIL _______
  1153. If *PREDEF is not NIL then the Fap loader will print
  1154. *** x REDEFINED
  1155. on the TTY, when x is a function that is being redefined.
  1156. If *PREDEF is NIL then no message is printed.
  1157. *PURIFY - Initial value = NIL _______
  1158. If *PURIFY is not NIL then the Fap loader will try to convert slow
  1159. links to fast links in the loaded binary code.
  1160. If *PURIFY is NIL then this conversion will not take place at load
  1161. time. It will take place when executing the code if *NOUUO is not
  1162. NIL.
  1163. *RSET - Initial value = NIL _____
  1164. If an error occurs that is not surrounded by an ERRORSET so that the
  1165. system will go to the top level, then the value of *RSET determines
  1166. whether fluid variables will be restored to their top level values or
  1167. kept at the values they had when the error occurred:
  1168. If *RSET is NIL then fluid variables will be restored to top level
  1169. values.
  1170. If *RSET is not NIL then the current values will be kept.
  1171. BASE - Initial value = 10 (decimal) ____
  1172. The value of BASE is used as radix when printing integers. Floating
  1173. point numbers are always decimal.
  1174. IBASE - Initial value = 10 (decimal) _____
  1175. The value of IBASE is used as radix when reading integers. Floating
  1176. point numbers are always decimal.
  1177. INITFN* - Initial value = NIL _______
  1178. If INITFN* is not NIL, then it must be a function of no arguments.
  1179. This is an initialization function that will be evaluated after a
  1180. Lisp error return to the top level has occurred or when a BELL has
  1181. been typed or when a Lisp core image is started again or when the
  1182. memory is reallocated by CORE.
  1183. INITFN* is useful when it is desirable to change the top level of
  1184. Lisp.
  1185. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 31
  1186. (SETQ INITFN!* (FUNCTION EVALQUOTE))
  1187. causes the top level to become EVALQUOTE instead of EVAL.
  1188. BPEND - Value = Address of end of BPS _____
  1189. (NUMVAL BPEND) points to the end of BPS.
  1190. BPORG - Value = Address of beginning of free BPS _____
  1191. (NUMVAL BPORG) points to the beginning of free BPS.
  1192. INC* - Value = Channel number for currently selected input channel. ____
  1193. INC* is updated by calls to RDS and should not be changed in any
  1194. other way. INC* is NIL when the current input channel is the TTY.
  1195. OUTC* - Value = Channel number for currently selected output channel. _____
  1196. OUTC* is updated by calls to WRS and should not be changed in any
  1197. other way. OUTC* is NIL when the current output channel is the TTY.
  1198. OBLIST - Value = List of lists of interned identifiers. ______
  1199. See 1.7
  1200. SCNVAL - Initial value = NIL ______
  1201. See SCAN.
  1202. SYSTEM* - Value = 1, 0 or -1. _______
  1203. SYSTEM* indicates what operating system the current Lisp system is
  1204. intended for:
  1205. System Value of SYSTEM*
  1206. Tenex 1
  1207. Tops-10 0
  1208. Tops-20 -1
  1209. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 32
  1210. 4.0 ERROR MESSAGES AND WARNINGS
  1211. The Lisp system checks for some error conditions and prints messages
  1212. accordingly, but some of the error checking described in [1] is
  1213. currently not implemented.
  1214. In particular CAR, CDR, RPLACA and RPLACD do not check that their
  1215. argument is a pair. This means also that improper arguments to NCONC
  1216. or ASSOC are not checked.
  1217. Illegal use of GO or RETURN is not checked, indeed GO and RETURN can
  1218. currently be used almost anywhere in interpreted code.
  1219. The use of an id as both a function and a variable is currently
  1220. allowed.
  1221. Erroneous conditions (e.g. illegal CAR or CDR) that are not tested,
  1222. result in either the wrong message at some later time, or no error
  1223. message at all. In the latter case the system has screwed itself
  1224. without complaining.
  1225. When error messages are printed, it is usually difficult to determine
  1226. which function caused the error and which functions called it. In
  1227. this situation, the BACKTRACE is useful, (see *BAKGAG). *RSET is
  1228. also useful to determine the values of variables at the time of the
  1229. error.
  1230. The following is a list of error messages, their cause and in some
  1231. cases their remedy. The messages are grouped in four groups and they
  1232. are listed alphabetically within each group. The "*****" that
  1233. precedes error messages and the "***" that precedes warnings have
  1234. been omitted in the description. The error messages for some
  1235. optional features that are not normaly available, are included. The
  1236. descriptions of possible causes for the errors, sometimes includes
  1237. functions that are not normaly available.
  1238. 4.1 Error Messages Not Starting With A Bad Part
  1239. These messages are of the type:
  1240. ***** <message>.
  1241. BIGNUM UNSUITABLE AS ARGUMENT
  1242. BOOLE, DEPOSIT, EXAMINE, BINO, OPEN, ASCII, MKCODE, SETMOD,
  1243. CPLUS, CDIF, CTIMES, CRECIP, MKVECT, LSH, %SOSSWAP, WBLK or
  1244. EXCORE, was given a number that was not an INUM or a FIXNUM.
  1245. This error might also occur in some other routines, if BPORG
  1246. or BPEND have been set to BIGNUMs.
  1247. BINARY PROGRAM SPACE EXCEEDED
  1248. LAP, (ARRAY, EXARRAY or LOAD) has exceeded BINARY PROGRAM
  1249. SPACE. If you are running on a Tenex or Tops-20 machine,
  1250. this should not happen as the available BPS is about 100 K.
  1251. If you are running on a Tops-10 machine you can either start
  1252. again from a fresh LISP and allocate more BPS, or you can use
  1253. EXCORE.
  1254. CAN'T EXPAND CORE
  1255. CORE, EXCORE, OPEN, (LOAD or ED) failed to expand core. In
  1256. the case of CORE or EXCORE, try again with a smaller
  1257. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 33
  1258. argument. A possible remedy might also be to EXCISE and then
  1259. try again.
  1260. COULDN'T SSAVE
  1261. LSSAVE failed.
  1262. COULDN'T SWAP SUCCESSFULLY
  1263. %SOSSWAP failed.
  1264. DOT CONTEXT ERROR
  1265. READ doesn't like dots adjacent to parentheses or other dots.
  1266. EXCORE x ON TOP LEVEL REQUIRED
  1267. This error only occurs on a Tops-10 machine. There is not
  1268. enough BPS for the Fap loader to load code into BPS. As the
  1269. input is coming from a file, the Fap loader can't use EXCORE
  1270. to get more BPS, as that would clobber the input buffer.
  1271. Execute (EXCORE x) and try again.
  1272. FASLOAD BUG
  1273. A bug has been discovered in the Fap loader.
  1274. FASLOAD EMPTY FILE
  1275. A file to be loaded by the Fap loader was empty or the
  1276. fisltable is not a vector.
  1277. FASLOAD EXCEEDS BPS
  1278. The Fap loader has run out of BPS. For a remedy, see message
  1279. under BINARY PROGRAM SPACE EXCEEDED
  1280. FASLOAD FORMAT ERR
  1281. Something went wrong during the Fap loading process. There
  1282. might be a format error in the Fap file. This error might be
  1283. preceded by another Lisp error message telling what went
  1284. wrong.
  1285. FASLOAD GC-PRO ERR This error occurred during the last stage of the
  1286. Fap loading process.
  1287. FISLTABLE FULL
  1288. The Fap loader needed a bigger fisltable. On a Tops-10
  1289. system, set FISLSIZE to a larger number and try again. On a
  1290. Tops-20 or a Tenex system, the fisltable should be big
  1291. enough, but it can be enlarged by N words, by the following:
  1292. subtract N from BPORG, add N to FISLSIZE, execute
  1293. (SETQ FISLTABLE (MKVECT (DIFFERENCE (TIMES2 FISLSIZE 2) 1)))
  1294. and set BPORG to its old value.
  1295. FLOATING OVERFLOW
  1296. A numeric routine detected a floating point overflow.
  1297. GARBAGED OBLIST
  1298. This error is always preceded by some other error. The error
  1299. message routine for that error discovered an illegal address
  1300. in the OBLIST or on the property list of some id on the
  1301. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 34
  1302. OBLIST. You are in trouble.
  1303. ILLEGAL LAMBDA FORMAT
  1304. APPLY was given a lambda expression whose parameter list was
  1305. an id other than NIL.
  1306. INPUT ERROR
  1307. Bad data was read from the selected input channel.
  1308. LISP.ED MISSING
  1309. An ED or GRINDEF command (not usually available) has been
  1310. issued, but the system couldn't find the Alvine code file
  1311. LISP.ED. Either you have defined SYS: to be a device on
  1312. which LISP.ED isn't found, or there is no such file at your
  1313. installation.
  1314. LISP.ED OR LOD MISSING
  1315. Either LISP.ED was not found (see previous message comment),
  1316. or a LOAD command has been issued, but the file LISP.LOD
  1317. wasn't found, in which case the situation is similar to an
  1318. absence of LISP.ED.
  1319. LISP.LOD MISSING
  1320. LISP.LOD wasn't found, see previous message comment.
  1321. LISP.SYM not found!! No load
  1322. A LOAD command has been issued, the file LISP.LOD was found,
  1323. but the symbol table file LISP.SYM wasn't found.
  1324. MISSING PRINT NAME IN OBLIST
  1325. INTERN found a member of the OBLIST that has no print name.
  1326. You are in trouble.
  1327. MORE THAN ONE S-EXPRESSION - COMPRESS
  1328. COMPRESS objects to a list which constitutes the characters
  1329. for more than one S-expression.
  1330. NO FISLTABLE ROOM
  1331. This can only occur on a Tops-10 machine. The available BPS
  1332. is not enough for the Fap loaders fisltable. You need to get
  1333. more BPS.
  1334. NO FREE STG LEFT
  1335. All free storage (Lisp cells) is used. The garbage collector
  1336. couldn't find any unused cells. The unbinding of the stacks
  1337. that occurs after this error (and others) will normaly
  1338. release some storage. If that isn't enough, you can get more
  1339. storage by using the CORE function.
  1340. NO FULL WORDS LEFT
  1341. All full words are being used for print names and numbers.
  1342. The problem and its solution is similar to FREE STG.
  1343. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 35
  1344. NO INPUT - RDS
  1345. The argument to RDS was not a channel OPENed for input.
  1346. NO I/O CHANNELS LEFT
  1347. OPEN failed to find a free I/O channel. There is a maximum
  1348. of 16 (including the TTY) open I/O channels at the same time.
  1349. NOGO
  1350. This usually follows a previous error message from the Fap
  1351. loader.
  1352. NO LIST - COMPRESS
  1353. NIL has been given as argument to COMPRESS.
  1354. NON-INTEGRAL OPERAND
  1355. DIVIDE, REMAINDER and GCD only accepts integers as arguments.
  1356. NO OUTPUT - WRS
  1357. The argument to WRS was not a channel OPENed for output.
  1358. NO PRINT NAME
  1359. Some routine couldn't find a print name. This might occur in
  1360. several ways:
  1361. 1. The argument to INTERN, SETPCHAR or (on Tenex or Tops-20
  1362. machines) the element after DIR: in argument to OPEN,
  1363. was not a string or an id.
  1364. 2. The argument to PRINC or SKIPTO or an element of the
  1365. argument to COMPRESS was not a string, an id or an INUM.
  1366. 3. The argument to REMOB, INTERNP or one of the above
  1367. functions, was a string or an id without a print name.
  1368. NUMBER NOT DIGIT
  1369. The argument to PRINC or SKIPTO or an element of the argument
  1370. to COMPRESS was an INUM that was either negative or larger
  1371. than 9.
  1372. OUTPUT ERROR
  1373. Data was improperly written on the selected output device.
  1374. Possibly a write-locked DECTAPE.
  1375. PDL OVERFLOW FROM GC - CAN'T CONTINUE
  1376. There is not enough space on the regular stack to finish
  1377. garbage collecting. This error forces the Lisp system to go
  1378. to the top level, ignoring any ERRORSETs that might be in
  1379. effect. The problem and its solution is similar to the error
  1380. NO FREE STG LEFT.
  1381. TOO FEW ARGUMENTS SUPPLIED - APPLY
  1382. TOO MANY ARGUMENTS SUPPLIED - APPLY
  1383. APPLY checks that interpreted functions have correct number
  1384. of arguments.
  1385. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 36
  1386. TOO MANY ARGS FOR EXPR
  1387. A function that spreads its argument, an EXPR, was given more
  1388. than 14 arguments.
  1389. ZERO DIVISOR
  1390. The second argument to DIVIDE, REMAINDER or QUOTIENT was
  1391. zero.
  1392. 4.2 Error Messages Starting With A Bad Part
  1393. The following messages are all of the form:
  1394. ***** x <message> They are ordered alphabetically after the
  1395. message part.
  1396. x CALLED AS EXPR
  1397. This error occurs when a call to "x" from a compiled function
  1398. is to be performed and "x" is a FEXPR but the call has been
  1399. compiled as if "x" was an EXPR. This means that the
  1400. arguments to "x" have been evaluated when the call is made.
  1401. At present this error doesn't occur. Instead the system
  1402. makes a (dubious) try to recover. It quotes all the
  1403. arguments and makes a list of them and then calls "x" with
  1404. this list as argument.
  1405. x CAN'T FIND FILE
  1406. OPEN couldn't find the file specified by "x". If you were
  1407. looking for a file on SYS:, maybe your definition of SYS: is
  1408. wrong.
  1409. x DEVICE NOT AVAILABLE
  1410. The device specified to OPEN in the file name list "x", was
  1411. not available.
  1412. x DIRECTORY FULL
  1413. The directory is full for the device specified in the file
  1414. name list "x".
  1415. x FILE IS WRITE PROTECTED
  1416. OPEN found that the file specified by "x" is write protected
  1417. and may not be opened for output.
  1418. x ILLEGAL ARG TO LINELENGTH
  1419. The argument "x" to LINELENGTH wasn't NIL or a positive INUM.
  1420. x ILLEGAL ARG TO PAGELENGTH
  1421. The argument "x" to PAGELENGTH wasn't NIL or a non-negative
  1422. INUM.
  1423. x ILLEGAL DEVICE
  1424. The device specified in the file name list "x" doesn't exist
  1425. or it is of the wrong type. E.g. it is not possible to open
  1426. the lineprinter for input.
  1427. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 37
  1428. x ILL MEM REF FROM y
  1429. An illegal memory reference was made. "x" is the address (in
  1430. octal) of the instruction where the error was made. "y" is
  1431. the function containing that instruction. "y" is found in a
  1432. similar way to the BACKTRACE, so that ? denotes an internal
  1433. routine and NIL denotes a position outside normal code, e.g.
  1434. in free storage.
  1435. This error is usually caused by taking CAR or CDR of an atom.
  1436. x ILL UUO FROM y
  1437. An illegal instruction was executed at address "x" in the
  1438. function "y". ? and NIL have the same meaning as in the
  1439. previous error message.
  1440. x IS NOT A CHANNEL NAME
  1441. RDS, WRS or CLOSE was given "x" as argument. "x" was not NIL
  1442. or an integer between 0 and 15.
  1443. x IS NOT AN IDENTIFIER
  1444. "x" should have been an identifier. The functions that
  1445. checks for identifiers, are: PUTD, PUT, FLAG, REMFLAG, SET
  1446. and SETQ. The elements of the parameter list in a PROG or a
  1447. lambda expression must also be ids.
  1448. x IS NOT A NUMBER
  1449. An arithmetic routine was given an argument "x", that wasn't
  1450. a number.
  1451. x IS NOT A VECTOR
  1452. The second argument to PUTV or GETV must be a vector. "x"
  1453. wasn't.
  1454. x MAY NOT BE CHANGED
  1455. "x" is one of the ids NIL and T. SET and SETQ may not change
  1456. the value of these ids.
  1457. (x y) MISMATCHED - PAIR
  1458. The two arguments "x" and "y" to PAIR were not lists of the
  1459. same length.
  1460. x MODULE NOT FOUND
  1461. FLOAD or FISLM was given the name of a module that couldn't
  1462. be found. Your definition of SYS: may be wrong.
  1463. x NOT A KEYWORD FOR OPEN
  1464. "x" was the second argument to OPEN, but it was not one of
  1465. INPUT, OUTPUT, INBIN or OUTBIN.
  1466. x NOT EXPR - APPLY
  1467. "x" was the first argument to APPLY. It was a function but
  1468. not an EXPR.
  1469. x PUSHDOWN CAPACITY EXCEEDED
  1470. The "x" pushdown stack has overflowed. "x" is either REG
  1471. (regular) or SPEC (special). The overflow is usually caused
  1472. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 38
  1473. by non-termination of recursion. If this is not the case but
  1474. the recursion just is very deep, then you can enlarge the
  1475. stacks by using CORE.
  1476. x SUBSCRIPT OUT OF RANGE
  1477. The first argument "x" to GETV or PUTV was out of range for
  1478. the vector specified by the second argument.
  1479. x TOO BIG VECTOR
  1480. MKVECT was given "x" argument, but there is not space in the
  1481. BPS for a vector of size "x"+1.
  1482. x UNBOUND VARIABLE - EVAL
  1483. EVAL tried to evaluate the id "x" and found that it had no
  1484. value. You probably forgot to QUOTE "x".
  1485. x UNDEFINED FUNCTION
  1486. The function "x" is not defined.
  1487. x UNDEFINED FUNCTION - APPLY
  1488. The function "x" is not defined.
  1489. x UNDEFINED PROG TAG - GO
  1490. A GO in some interpreted function had an undefined label "x".
  1491. x UNDEFINED UUO
  1492. The compiled function "y" made a call to "x", but "x" was not
  1493. a function. Note that a MACRO is not accepted as a function
  1494. by calls from compiled functions.
  1495. 4.3 Warnings And Diagnostic Messages
  1496. These messages are preceded by a "***".
  1497. CAN'T CUT CORE INTO ALLOCATED
  1498. The argument to CORE was to small. See CORE.
  1499. CAN'T EXCISE
  1500. CORE or EXCISE couldn't reallocate or excise extra core as
  1501. EXCORE had been executed earlier with an argument that was
  1502. not NIL. If you want to excise or reallocate extra core,
  1503. execute (EXCORE NIL), then try again.
  1504. EXCORE x PERFORMED
  1505. This message can only occur on a Tops-10 machine. The Fap
  1506. loader needed more BPS than was available and used EXCORE to
  1507. get more BPS. This message is not printed if *MSG is NIL.
  1508. FREE STG EXHAUSTED
  1509. The free storage (the Lisp cells) was exhausted and caused a
  1510. garbage collection. This message is not printed when *GCGAG
  1511. is NIL.
  1512. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 39
  1513. FULL WORD SPACE EXHAUSTED
  1514. The full word space got exhausted and caused a garbage
  1515. collection. This message is not printed when *GCGAG is NIL.
  1516. WOULDN'T REDUCE CORE
  1517. %SOSSWAP couldn't reduce the core to what it was. This
  1518. message is only possible on a Tops-10 machine. %SOSSWAP is
  1519. normally not implemented on Tops-10 machines.
  1520. (F)SUBR CONVERTED TO (F)EXPR
  1521. The function types FSUBR and/or SUBR have been replaced by
  1522. FEXPR and/or EXPR by the Fap loader when loading a module.
  1523. This message is not given more than once for each module
  1524. loaded. The module was compiled before the function types
  1525. FSUBR and SUBR where deleted from Standard Lisp. Recompile
  1526. the module and the message will go away. This automatic
  1527. conversion will removed sometime in the future, an undefined
  1528. function error will then occur at run time instead.
  1529. (F)SUBR CONVERTED TO (F)EXPR IN PUTD
  1530. A call to PUTD used the old function type FSUBR or SUBR that
  1531. are now replaced by FEXPR and EXPR. Use FEXPR or EXPR
  1532. instead. Compiled functions are now distinguished by the
  1533. predicate CODEP. Using (F)SUBR will cause an error sometime
  1534. in the future when this conversion is removed.
  1535. x FREE STORAGE, y FULL WORDS AVAILABLE
  1536. There are "x" Lisp cells and "y" full words available after
  1537. the garbage collection that just occurred. This message is
  1538. not printed if *GCGAG is NIL.
  1539. x REDEFINED
  1540. This message is printed by PUTD or by the Fap loader when the
  1541. function "x" has been redefined. The message from the Fap
  1542. loader is not printed if *PREDEF is NIL. The message from
  1543. PUTD is not printed if *MSG is NIL.
  1544. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 40
  1545. 5.0 DIFFERENCES BETWEEN LISP 1.6 AND STANDARD LISP
  1546. The following is a list of the major differences between LISP 1.6 and
  1547. Standard Lisp on the DECsystem 10 and 20:
  1548. 1. There are no LSUBRs and consequently no ARG or SETARG.
  1549. 2. An EXPR may have up to 13 arguments.
  1550. 3. SUBR and FSUBR is replaced by EXPR and FEXPR. Compiled
  1551. functions are distinguished from interpreted functions by
  1552. the predicate CODEP.
  1553. 4. There are no arrays, so ARRAY, EXARRAY and STORE are not
  1554. defined. Use vectors instead.
  1555. 5. Alvine (ED, GRINDEF) is normally not implemented.
  1556. 6. The Lisp LOADer, *PUTSYM, PUTSYM, *GETSYM and GETSYM are
  1557. normally not implemented.
  1558. 7. The trace functions TRACE and TRACET are replaced by the
  1559. somewhat different TR and TRST.
  1560. 8. The I/O functions DSKIN and SYSIN are not defined.
  1561. 9. The functions APPEND, NCONC, DIFFERENCE, QUOTIENT, GREATERP
  1562. and LESSP are now EXPRs and take only two arguments. BOOLE
  1563. takes 3 arguments.
  1564. 10. ASSOC and SASSOC uses EQUAL instead of EQ. ATSOC is similar
  1565. to ASSOC but uses EQ.
  1566. 11. REMOB is a SUBR with one argument.
  1567. 12. Computed GO labels are not allowed, i.e. the argument to GO
  1568. must be an id.
  1569. 13. GC, MAKNAM and PRINC are renamed to RECLAIM, COMPRESS and
  1570. PRIN2.
  1571. 14. OUTPUT, INPUT, OUTBIN, INBIN, OUTC and INC are replaced by
  1572. OPEN, RDS, WRS and CLOSE.
  1573. 15. The mapping functions (MAP, MAPC, MAPCAR, MAPLIST, MAPCAN
  1574. and MAPCON), take their arguments in the opposite order.
  1575. 16. The functions INITFN, BAKGAG, GCGAG, NOUUO, DDTIN, RAISE,
  1576. FECHO and *RSET are replaced by variables.
  1577. 17. ERRSET is replaced by the SUBR ERRORSET.
  1578. 18. *EXPAND and *EXPAND1 are replaced by EXPAND.
  1579. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 41
  1580. 19. The characters "%", "[", "]", "<", ">", "@", "'", "/" and
  1581. "!" have a different meaning. See RDSLSH.
  1582. 20. The BIGNUM and SCAN packets are permanently resident.
  1583. 21. The basic datatypes are differently implemented. The format
  1584. for property lists is changed. Flags and properties can
  1585. never clash.
  1586. 22. A string is not the same as an uninterned id.
  1587. 23. CHRCT is replaced by POSN.
  1588. 24. *EVAL is renamed to EVAL. APPLY is an EXPR with 2 args.
  1589. %APPLY and %EVAL support the FUNARG feature.
  1590. 25. PROG2 is replaced by PROGN
  1591. 26. The following functions are not defined: CSYM, LAST,
  1592. DEFPROP, GETL, MAKNUM and UNTYI.
  1593. 27. Several new functions are defined.
  1594. 28. End of line is treated differently. See ^_ and $EOL$.
  1595. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 42
  1596. 6.0 REFERENCES
  1597. [1] J. B. Marti, A. C. Hearn, M. L. Griss, C. Griss, Standard LISP ________ ____
  1598. Report, Utah Computational Physics, UCP-60, January 1978. ______
  1599. [2] Lynn H. Quam, Whitfield Diffie, Stanford LISP 1.6 Manual, ________ ____ ___ ______
  1600. Stanford Artificial Intelligence Laboratory, Operating Note
  1601. 28.7.
  1602. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 43
  1603. Index
  1604. $EOF$ . . . . . . . . . . . . . . 28
  1605. $EOL$ . . . . . . . . . . . . . . 28
  1606. %APPLY . . . . . . . . . . . . . . 17
  1607. %EVAL . . . . . . . . . . . . . . 17
  1608. *BAKGAG . . . . . . . . . . . . . 10, 28
  1609. *BOX . . . . . . . . . . . . . . . 18
  1610. *COMP . . . . . . . . . . . . . . 23, 28
  1611. *DDTIN . . . . . . . . . . . . . . 28
  1612. *ECHO . . . . . . . . . . . . . . 29
  1613. *ERRMSG . . . . . . . . . . . . . 10, 29
  1614. *FUNCTION . . . . . . . . . . . . 17
  1615. *GCGAG . . . . . . . . . . . . . . 29
  1616. *MSG . . . . . . . . . . . . . . . 29
  1617. *NOPOINT . . . . . . . . . . . . . 29
  1618. *NOUUO . . . . . . . . . . . . . . 30
  1619. *PREDEF . . . . . . . . . . . . . 30
  1620. *PURIFY . . . . . . . . . . . . . 30
  1621. *RAISE . . . . . . . . . . . . . . 28
  1622. *RSET . . . . . . . . . . . . . . 10, 30
  1623. <del> . . . . . . . . . . . . . . 2
  1624. ABS . . . . . . . . . . . . . . . 8
  1625. AND . . . . . . . . . . . . . . . 8
  1626. APPEND . . . . . . . . . . . . . . 8
  1627. APPLY . . . . . . . . . . . . . . 16
  1628. ASCII . . . . . . . . . . . . . . 23
  1629. ASSOC . . . . . . . . . . . . . . 32
  1630. ATOM . . . . . . . . . . . . . . . 8
  1631. ATSOC . . . . . . . . . . . . . . 23
  1632. BASE . . . . . . . . . . . . . . . 30
  1633. BCP (binding context pointer) . . 17
  1634. BIGNUM . . . . . . . . . . . . . . 2
  1635. BIGP . . . . . . . . . . . . . . . 8, 22
  1636. Binary program space (BPS) . . . . 24
  1637. Binding context pointer (BCP) . . 17
  1638. BOOLE . . . . . . . . . . . . . . 19
  1639. BPEND . . . . . . . . . . . . . . 31
  1640. BPORG . . . . . . . . . . . . . . 31
  1641. BPS (binary program space) . . . . 24
  1642. CAR . . . . . . . . . . . . . . . 32
  1643. CDR . . . . . . . . . . . . . . . 32
  1644. CLOSE . . . . . . . . . . . . . . 12
  1645. Code-pointer . . . . . . . . . . . 4
  1646. CODEP . . . . . . . . . . . . . . 8, 39-40
  1647. COMPILE . . . . . . . . . . . . . 23
  1648. COMPRESS . . . . . . . . . . . . . 22
  1649. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 44
  1650. COND . . . . . . . . . . . . . . . 23
  1651. Cond-form . . . . . . . . . . . . 23
  1652. CONS . . . . . . . . . . . . . . . 8
  1653. CONSTANTP . . . . . . . . . . . . 8
  1654. CORE . . . . . . . . . . . . . . . 25
  1655. DE . . . . . . . . . . . . . . . . 8
  1656. DEFLIST . . . . . . . . . . . . . 8
  1657. DELETE . . . . . . . . . . . . . . 8
  1658. DELIMIT . . . . . . . . . . . . . 21
  1659. DEPOSIT . . . . . . . . . . . . . 20
  1660. DF . . . . . . . . . . . . . . . . 8
  1661. DIFFERENCE . . . . . . . . . . . . 8
  1662. DIGIT . . . . . . . . . . . . . . 8
  1663. DIVIDE . . . . . . . . . . . . . . 8
  1664. DM . . . . . . . . . . . . . . . . 8
  1665. EJECT . . . . . . . . . . . . . . 8
  1666. EMSG* . . . . . . . . . . . . . . 10, 28
  1667. EQ . . . . . . . . . . . . . . . . 8
  1668. EQN . . . . . . . . . . . . . . . 8
  1669. EQUAL . . . . . . . . . . . . . . 8
  1670. ERROR . . . . . . . . . . . . . . 9
  1671. Error handling . . . . . . . . . . 8
  1672. ERRORSET . . . . . . . . . . . . . 10
  1673. EVAL . . . . . . . . . . . . . . . 15
  1674. EXAMINE . . . . . . . . . . . . . 19
  1675. EXCISE . . . . . . . . . . . . . . 26
  1676. EXCORE . . . . . . . . . . . . . . 26
  1677. EXPAND . . . . . . . . . . . . . . 8
  1678. EXPLODE . . . . . . . . . . . . . 22
  1679. EXPLODEC . . . . . . . . . . . . . 22
  1680. EXPT . . . . . . . . . . . . . . . 8
  1681. Fap loader . . . . . . . . . . . . 18
  1682. File name list . . . . . . . . . . 11
  1683. FILEP . . . . . . . . . . . . . . 8, 13
  1684. FISLM . . . . . . . . . . . . . . 18
  1685. FIX . . . . . . . . . . . . . . . 8
  1686. FIXNUM . . . . . . . . . . . . . . 2
  1687. FIXP . . . . . . . . . . . . . . . 8
  1688. FLAG . . . . . . . . . . . . . . . 8
  1689. FLAGP . . . . . . . . . . . . . . 8
  1690. FLOAD . . . . . . . . . . . . . . 18
  1691. FLOAT . . . . . . . . . . . . . . 8
  1692. Floating . . . . . . . . . . . . . 4
  1693. FLOATP . . . . . . . . . . . . . . 8
  1694. FLUID . . . . . . . . . . . . . . 22
  1695. FLUIDP . . . . . . . . . . . . . . 8
  1696. FREEZE . . . . . . . . . . . . . . 23
  1697. FSUBR . . . . . . . . . . . . . . 40
  1698. Full word space . . . . . . . . . 24
  1699. FUNARG . . . . . . . . . . . . . . 17
  1700. FUNCELL . . . . . . . . . . . . . 6
  1701. FUNCTION . . . . . . . . . . . . . 8
  1702. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 45
  1703. Function cell . . . . . . . . . . 6
  1704. GCD . . . . . . . . . . . . . . . 22
  1705. GCTIME . . . . . . . . . . . . . . 27
  1706. GENSYM . . . . . . . . . . . . . . 8
  1707. GET . . . . . . . . . . . . . . . 8
  1708. GETD . . . . . . . . . . . . . . . 8
  1709. GETV . . . . . . . . . . . . . . . 8
  1710. GLOBAL . . . . . . . . . . . . . . 22
  1711. GLOBALP . . . . . . . . . . . . . 8
  1712. GO . . . . . . . . . . . . . . . . 32
  1713. GREATERP . . . . . . . . . . . . . 8
  1714. IBASE . . . . . . . . . . . . . . 30
  1715. Id . . . . . . . . . . . . . . . . 4
  1716. Identifier . . . . . . . . . . . . 4
  1717. IDP . . . . . . . . . . . . . . . 8
  1718. IGNORE . . . . . . . . . . . . . . 21
  1719. INC* . . . . . . . . . . . . . . . 12, 31
  1720. INITFN* . . . . . . . . . . . . . 30
  1721. Integer . . . . . . . . . . . . . 2
  1722. INTERN . . . . . . . . . . . . . . 8
  1723. INTERNP . . . . . . . . . . . . . 22
  1724. Interpreter . . . . . . . . . . . 15
  1725. INUM . . . . . . . . . . . . . . . 2
  1726. INUMP . . . . . . . . . . . . . . 8, 22
  1727. LABEL . . . . . . . . . . . . . . 17
  1728. LENGTH . . . . . . . . . . . . . . 8
  1729. LESSP . . . . . . . . . . . . . . 8
  1730. LETTER . . . . . . . . . . . . . . 21
  1731. LINELENGTH . . . . . . . . . . . . 14
  1732. LIST . . . . . . . . . . . . . . . 8
  1733. LITER . . . . . . . . . . . . . . 8
  1734. LPOSN . . . . . . . . . . . . . . 8
  1735. LSH . . . . . . . . . . . . . . . 19
  1736. MAP . . . . . . . . . . . . . . . 8
  1737. MAPC . . . . . . . . . . . . . . . 8
  1738. MAPCAN . . . . . . . . . . . . . . 8
  1739. MAPCAR . . . . . . . . . . . . . . 8
  1740. MAPCON . . . . . . . . . . . . . . 8
  1741. MAPLIST . . . . . . . . . . . . . 8
  1742. MAX . . . . . . . . . . . . . . . 8
  1743. MAX2 . . . . . . . . . . . . . . . 8
  1744. MEMBER . . . . . . . . . . . . . . 8
  1745. MEMQ . . . . . . . . . . . . . . . 8
  1746. MIN . . . . . . . . . . . . . . . 8
  1747. MIN2 . . . . . . . . . . . . . . . 8
  1748. MINUS . . . . . . . . . . . . . . 8
  1749. MKCODE . . . . . . . . . . . . . . 19
  1750. MKVECT . . . . . . . . . . . . . . 8
  1751. NCONC . . . . . . . . . . . . . . 32
  1752. NIL . . . . . . . . . . . . . . . 28
  1753. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 46
  1754. NOT . . . . . . . . . . . . . . . 8
  1755. NULL . . . . . . . . . . . . . . . 8
  1756. NUMBERP . . . . . . . . . . . . . 8
  1757. NUMVAL . . . . . . . . . . . . . . 18
  1758. OBLIST . . . . . . . . . . . . . . 31
  1759. OPEN . . . . . . . . . . . . . . . 11
  1760. OR . . . . . . . . . . . . . . . . 8
  1761. OUTC* . . . . . . . . . . . . . . 12, 31
  1762. PAGELENGTH . . . . . . . . . . . . 8, 14
  1763. PAIR . . . . . . . . . . . . . . . 8
  1764. PAIRP . . . . . . . . . . . . . . 8
  1765. PGLINE . . . . . . . . . . . . . . 13
  1766. PLUS . . . . . . . . . . . . . . . 8
  1767. PLUS2 . . . . . . . . . . . . . . 8
  1768. PNAME . . . . . . . . . . . . . . 5
  1769. POSN . . . . . . . . . . . . . . . 8
  1770. PRIN1 . . . . . . . . . . . . . . 8, 15
  1771. PRIN2 . . . . . . . . . . . . . . 8, 15
  1772. PRINT . . . . . . . . . . . . . . 8, 15
  1773. PROG . . . . . . . . . . . . . . . 8
  1774. PROGN . . . . . . . . . . . . . . 8
  1775. Property list . . . . . . . . . . 5
  1776. PUT . . . . . . . . . . . . . . . 8
  1777. PUTD . . . . . . . . . . . . . . . 23
  1778. PUTV . . . . . . . . . . . . . . . 8
  1779. QUOTE . . . . . . . . . . . . . . 8
  1780. QUOTIENT . . . . . . . . . . . . . 8
  1781. RDS . . . . . . . . . . . . . . . 12
  1782. RDSLSH . . . . . . . . . . . . . . 13
  1783. READ . . . . . . . . . . . . . . . 14-15, 21
  1784. READCH . . . . . . . . . . . . . . 15
  1785. RECLAIM . . . . . . . . . . . . . 27
  1786. REMAINDER . . . . . . . . . . . . 8
  1787. REMD . . . . . . . . . . . . . . . 8
  1788. REMFLAG . . . . . . . . . . . . . 8
  1789. REMOB . . . . . . . . . . . . . . 8
  1790. REMPROP . . . . . . . . . . . . . 8
  1791. RETURN . . . . . . . . . . . . . . 32
  1792. REVERSE . . . . . . . . . . . . . 8
  1793. RPLACA . . . . . . . . . . . . . . 32
  1794. RPLACD . . . . . . . . . . . . . . 32
  1795. SASSOC . . . . . . . . . . . . . . 8
  1796. SCAN . . . . . . . . . . . . . . . 21
  1797. SCANINIT . . . . . . . . . . . . . 21
  1798. SCANSET . . . . . . . . . . . . . 20
  1799. SCNVAL . . . . . . . . . . . . . . 31
  1800. SET . . . . . . . . . . . . . . . 22
  1801. SETPCHAR . . . . . . . . . . . . . 13
  1802. SETQ . . . . . . . . . . . . . . . 22
  1803. SETSYS . . . . . . . . . . . . . . 13
  1804. STANDARD LISP ON DECSYSTEM 10 AND 20 Page 47
  1805. SKIPTO . . . . . . . . . . . . . . 14
  1806. SPEAK . . . . . . . . . . . . . . 27
  1807. String . . . . . . . . . . . . . . 4
  1808. STRINGP . . . . . . . . . . . . . 8
  1809. SUBLIS . . . . . . . . . . . . . . 8
  1810. SUBR . . . . . . . . . . . . . . . 40
  1811. SUBST . . . . . . . . . . . . . . 8
  1812. SYS: . . . . . . . . . . . . . . . 13
  1813. SYSTEM* . . . . . . . . . . . . . 31
  1814. T . . . . . . . . . . . . . . . . 28
  1815. TERPRI . . . . . . . . . . . . . . 8
  1816. TIME . . . . . . . . . . . . . . . 11
  1817. TIMES . . . . . . . . . . . . . . 8
  1818. TIMES2 . . . . . . . . . . . . . . 8
  1819. TYI . . . . . . . . . . . . . . . 14-15
  1820. TYO . . . . . . . . . . . . . . . 14
  1821. UNBOUND . . . . . . . . . . . . . 16
  1822. UNFLUID . . . . . . . . . . . . . 22
  1823. UNREADCH . . . . . . . . . . . . . 14
  1824. UPBV . . . . . . . . . . . . . . . 8
  1825. VALUE . . . . . . . . . . . . . . 6
  1826. Value cell . . . . . . . . . . . . 6
  1827. Vector . . . . . . . . . . . . . . 4
  1828. VECTORP . . . . . . . . . . . . . 8
  1829. WARNING . . . . . . . . . . . . . 10
  1830. WRS . . . . . . . . . . . . . . . 12
  1831. ^A . . . . . . . . . . . . . . . . 2
  1832. ^C . . . . . . . . . . . . . . . . 2
  1833. ^G . . . . . . . . . . . . . . . . 2, 10
  1834. ^O . . . . . . . . . . . . . . . . 2
  1835. ^R . . . . . . . . . . . . . . . . 2
  1836. ^U . . . . . . . . . . . . . . . . 2
  1837. ^X . . . . . . . . . . . . . . . . 2
  1838. ^Z . . . . . . . . . . . . . . . . 15
  1839. ^_ . . . . . . . . . . . . . . . . 15, 28