2
* init.c logo init module dvb
4
* Copyright (C) 1993 by the Regents of the University of California
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27
typedef struct priminfo {
36
NODE *True, *False, *Right_Paren, *Left_Paren, *Toplevel, *System, *Error,
37
*End, *Redefp, *Caseignoredp, *Erract, *Printdepthlimit,
38
*Printwidthlimit, *Pause, *LoadNoisily, *AllowGetSet,
39
*UnburyOnEdit, *Fullprintp, *Make, *Listvalue, *Dotsvalue,
40
*If, *Ifelse, *To, *Macro, *Unbound, *Not_Enough_Node,
41
*Minus_Sign, *Minus_Tight, *Startup, *Query, *Output, *Op, *Stop,
43
NODE *Null_Word = NIL;
46
{"*", 1, 1, 1, PREFIX_PRIORITY + 3, lmul},
47
{"+", 1, 1, 1, PREFIX_PRIORITY + 2, ladd},
48
{"-", 1, 1, 1, PREFIX_PRIORITY + 2, lsub},
49
{"--", 1, 1, 1, PREFIX_PRIORITY + 4, lsub},
50
{".defmacro", 2, 2, 2, PREFIX_PRIORITY, ldefmacro},
51
{".eq", 2, 2, 2, PREFIX_PRIORITY, l_eq},
52
{".macro", -1, -1, -1, PREFIX_PRIORITY, lmacro},
53
{".maybeoutput", 1, 1, 1, MAYBE_PRIORITY, loutput},
54
{".setbf", 2, 2, 2, PREFIX_PRIORITY, l_setbf},
55
{".setfirst", 2, 2, 2, PREFIX_PRIORITY, l_setfirst},
56
{".setitem", 3, 3, 3, PREFIX_PRIORITY, l_setitem},
57
{"/", 1, 1, 1, PREFIX_PRIORITY + 3, ldivide},
58
{"<", 2, 2, 2, PREFIX_PRIORITY + 1, llessp},
59
{"=", 2, 2, 2, PREFIX_PRIORITY + 1, lequalp},
60
{">", 2, 2, 2, PREFIX_PRIORITY + 1, lgreaterp},
61
{"?", 0, 0, 1, PREFIX_PRIORITY, lqm},
62
{"allopen", 0, 0, 0, PREFIX_PRIORITY, lallopen},
63
{"and", 0, 2, -1, PREFIX_PRIORITY, land},
64
{"apply", 2, 2, 2, MACRO_PRIORITY, lapply},
65
{"arc", 2, 2, 2, PREFIX_PRIORITY, larc},
66
{"arctan", 1, 1, 2, PREFIX_PRIORITY, latan},
67
{"array", 1, 1, 2, PREFIX_PRIORITY, larray},
68
{"arrayp", 1, 1, 1, PREFIX_PRIORITY, larrayp},
69
{"arraytolist", 1, 1, 1, PREFIX_PRIORITY, larraytolist},
70
{"array?", 1, 1, 1, PREFIX_PRIORITY, larrayp},
71
{"ascii", 1, 1, 1, PREFIX_PRIORITY, lascii},
72
{"ashift", 2, 2, 2, PREFIX_PRIORITY, lashift},
73
{"back", 1, 1, 1, PREFIX_PRIORITY, lback},
74
{"background", 0, 0, 0, PREFIX_PRIORITY, lbackground},
75
{"backslashedp", 1, 1, 1, PREFIX_PRIORITY, lbackslashedp},
76
{"backslashed?", 1, 1, 1, PREFIX_PRIORITY, lbackslashedp},
77
{"beforep", 2, 2, 2, PREFIX_PRIORITY, lbeforep},
78
{"before?", 2, 2, 2, PREFIX_PRIORITY, lbeforep},
79
{"bf", 1, 1, 1, PREFIX_PRIORITY, lbutfirst},
80
{"bfs", 1, 1, 1, PREFIX_PRIORITY, lbfs},
81
{"bg", 0, 0, 0, PREFIX_PRIORITY, lbackground},
82
{"bitand", 0, 2, -1, PREFIX_PRIORITY, lbitand},
83
{"bitnot", 1, 1, 1, PREFIX_PRIORITY, lbitnot},
84
{"bitor", 0, 2, -1, PREFIX_PRIORITY, lbitor},
85
{"bitxor", 0, 2, -1, PREFIX_PRIORITY, lbitxor},
86
{"bk", 1, 1, 1, PREFIX_PRIORITY, lback},
87
{"bl", 1, 1, 1, PREFIX_PRIORITY, lbutlast},
88
{"buried", 0, 0, 0, PREFIX_PRIORITY, lburied},
89
{"buriedp", 1, 1, 1, PREFIX_PRIORITY, lburiedp},
90
{"buried?", 1, 1, 1, PREFIX_PRIORITY, lburiedp},
91
{"bury", 1, 1, 1, PREFIX_PRIORITY, lbury},
92
{"butfirst", 1, 1, 1, PREFIX_PRIORITY, lbutfirst},
93
{"butfirsts", 1, 1, 1, PREFIX_PRIORITY, lbfs},
94
{"butlast", 1, 1, 1, PREFIX_PRIORITY, lbutlast},
95
{"buttonp", 0, 0, 0, PREFIX_PRIORITY, lbuttonp},
96
{"button?", 0, 0, 0, PREFIX_PRIORITY, lbuttonp},
97
{"bye", 0, 0, 0, PREFIX_PRIORITY, lbye},
98
{"catch", 2, 2, 2, MACRO_PRIORITY, lcatch},
99
{"char", 1, 1, 1, PREFIX_PRIORITY, lchar},
100
{"clean", 0, 0, 0, PREFIX_PRIORITY, lclean},
101
{"clearscreen", 0, 0, 0, PREFIX_PRIORITY, lclearscreen},
102
{"cleartext", 0, 0, 0, PREFIX_PRIORITY, lcleartext},
103
{"close", 1, 1, 1, PREFIX_PRIORITY, lclose},
104
{"co", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lcontinue},
105
{"contents", 0, 0, 0, PREFIX_PRIORITY, lcontents},
106
{"continue", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lcontinue},
107
{"copydef", 2, 2, 2, PREFIX_PRIORITY, lcopydef},
108
{"cos", 1, 1, 1, PREFIX_PRIORITY, lcos},
109
{"count", 1, 1, 1, PREFIX_PRIORITY, lcount},
110
{"cs", 0, 0, 0, PREFIX_PRIORITY, lclearscreen},
111
{"ct", 0, 0, 0, PREFIX_PRIORITY, lcleartext},
112
{"cursor", 0, 0, 0, PREFIX_PRIORITY, lcursor},
113
{"define", 2, 2, 2, PREFIX_PRIORITY, ldefine},
114
{"definedp", 1, 1, 1, PREFIX_PRIORITY, ldefinedp},
115
{"defined?", 1, 1, 1, PREFIX_PRIORITY, ldefinedp},
116
{"difference", 2, 2, 2, PREFIX_PRIORITY, lsub},
117
{"dribble", 1, 1, 1, PREFIX_PRIORITY, ldribble},
118
{"ed", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, ledit},
119
{"edit", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, ledit},
120
{"editfile", 1, 1, 1, PREFIX_PRIORITY, leditfile},
121
{"emptyp", 1, 1, 1, PREFIX_PRIORITY, lemptyp},
122
{"empty?", 1, 1, 1, PREFIX_PRIORITY, lemptyp},
123
{"eofp", 0, 0, 0, PREFIX_PRIORITY, leofp},
124
{"eof?", 0, 0, 0, PREFIX_PRIORITY, leofp},
125
{"epspict", 1, 1, 1, PREFIX_PRIORITY, lepspict},
126
{"equalp", 2, 2, 2, PREFIX_PRIORITY, lequalp},
127
{"equal?", 2, 2, 2, PREFIX_PRIORITY, lequalp},
128
{"er", 1, 1, 1, PREFIX_PRIORITY, lerase},
129
{"erall", 0, 0, 0, PREFIX_PRIORITY, lerall},
130
{"erase", 1, 1, 1, PREFIX_PRIORITY, lerase},
131
{"erasefile", 1, 1, 1, PREFIX_PRIORITY, lerasefile},
132
{"erf", 1, 1, 1, PREFIX_PRIORITY, lerasefile},
133
{"erns", 0, 0, 0, PREFIX_PRIORITY, lerns},
134
{"erpls", 0, 0, 0, PREFIX_PRIORITY, lerpls},
135
{"erps", 0, 0, 0, PREFIX_PRIORITY, lerps},
136
{"error", 0, 0, 0, PREFIX_PRIORITY, lerror},
137
{"exp", 1, 1, 1, PREFIX_PRIORITY, lexp},
138
{"fd", 1, 1, 1, PREFIX_PRIORITY, lforward},
139
{"fence", 0, 0, 0, PREFIX_PRIORITY, lfence},
140
{"fill", 0, 0, 0, PREFIX_PRIORITY, lfill},
141
{"first", 1, 1, 1, PREFIX_PRIORITY, lfirst},
142
{"firsts", 1, 1, 1, PREFIX_PRIORITY, lfirsts},
143
{"forever", 1, 1, 1, MACRO_PRIORITY, lforever},
144
{"form", 3, 3, 3, PREFIX_PRIORITY, lform},
145
{"forward", 1, 1, 1, PREFIX_PRIORITY, lforward},
146
{"fput", 2, 2, 2, PREFIX_PRIORITY, lfput},
147
{"fs", 0, 0, 0, PREFIX_PRIORITY, lfullscreen},
148
{"fullscreen", 0, 0, 0, PREFIX_PRIORITY, lfullscreen},
149
{"fulltext", 1, 1, 1, PREFIX_PRIORITY, lfulltext},
150
{"gc", 0, 0, 1, PREFIX_PRIORITY, lgc},
151
{"goto", 1, 1, 1, MACRO_PRIORITY, lgoto},
152
{"gprop", 2, 2, 2, PREFIX_PRIORITY, lgprop},
153
{"greaterp", 2, 2, 2, PREFIX_PRIORITY, lgreaterp},
154
{"greater?", 2, 2, 2, PREFIX_PRIORITY, lgreaterp},
155
{"heading", 0, 0, 0, PREFIX_PRIORITY, lheading},
156
{"help", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lhelp},
157
{"hideturtle", 0, 0, 0, PREFIX_PRIORITY, lhideturtle},
158
{"home", 0, 0, 0, PREFIX_PRIORITY, lhome},
159
{"ht", 0, 0, 0, PREFIX_PRIORITY, lhideturtle},
160
{"if", 2, 2, 3, MACRO_PRIORITY, lif},
161
{"ifelse", 3, 3, 3, MACRO_PRIORITY, lifelse},
162
{"iff", 1, 1, 1, MACRO_PRIORITY, liffalse},
163
{"iffalse", 1, 1, 1, MACRO_PRIORITY, liffalse},
164
{"ift", 1, 1, 1, MACRO_PRIORITY, liftrue},
165
{"iftrue", 1, 1, 1, MACRO_PRIORITY, liftrue},
166
{"int", 1, 1, 1, PREFIX_PRIORITY, linteg},
167
{"item", 2, 2, 2, PREFIX_PRIORITY, litem},
168
{"keyp", 0, 0, 0, PREFIX_PRIORITY, lkeyp},
169
{"key?", 0, 0, 0, PREFIX_PRIORITY, lkeyp},
170
{"label", 1, 1, 1, PREFIX_PRIORITY, llabel},
171
{"last", 1, 1, 1, PREFIX_PRIORITY, llast},
172
{"left", 1, 1, 1, PREFIX_PRIORITY, lleft},
173
{"lessp", 2, 2, 2, PREFIX_PRIORITY, llessp},
174
{"less?", 2, 2, 2, PREFIX_PRIORITY, llessp},
175
{"list", 0, 2, -1, PREFIX_PRIORITY, llist},
176
{"listp", 1, 1, 1, PREFIX_PRIORITY, llistp},
177
{"listtoarray", 1, 1, 2, PREFIX_PRIORITY, llisttoarray},
178
{"list?", 1, 1, 1, PREFIX_PRIORITY, llistp},
179
{"ln", 1, 1, 1, PREFIX_PRIORITY, lln},
180
{"load", 1, 1, 1, PREFIX_PRIORITY, lload},
181
{"loadpict", 1, 1, 1, PREFIX_PRIORITY, lloadpict},
182
{"local", 1, 1, -1, PREFIX_PRIORITY, llocal},
183
{"log10", 1, 1, 1, PREFIX_PRIORITY, llog10},
184
{"lowercase", 1, 1, 1, PREFIX_PRIORITY, llowercase},
185
{"lput", 2, 2, 2, PREFIX_PRIORITY, llput},
186
{"lshift", 2, 2, 2, PREFIX_PRIORITY, llshift},
187
{"lt", 1, 1, 1, PREFIX_PRIORITY, lleft},
188
{"macrop", 1, 1, 1, PREFIX_PRIORITY, lmacrop},
189
{"macro?", 1, 1, 1, PREFIX_PRIORITY, lmacrop},
190
{"make", 2, 2, 2, PREFIX_PRIORITY, lmake},
191
{"member", 2, 2, 2, PREFIX_PRIORITY, lmember},
192
{"memberp", 2, 2, 2, PREFIX_PRIORITY, lmemberp},
193
{"member?", 2, 2, 2, PREFIX_PRIORITY, lmemberp},
194
{"minus", 1, 1, 1, PREFIX_PRIORITY, lsub},
195
{"modulo", 2, 2, 2, PREFIX_PRIORITY, lmodulo},
196
{"mousepos", 0, 0, 0, PREFIX_PRIORITY, lmousepos},
197
{"namep", 1, 1, 1, PREFIX_PRIORITY, lnamep},
198
{"name?", 1, 1, 1, PREFIX_PRIORITY, lnamep},
199
{"names", 0, 0, 0, PREFIX_PRIORITY, lnames},
200
{"nodes", 0, 0, 0, PREFIX_PRIORITY, lnodes},
201
{"nodribble", 0, 0, 0, PREFIX_PRIORITY, lnodribble},
202
{"norefresh", 0, 0, 0, PREFIX_PRIORITY, lnorefresh},
203
{"not", 1, 1, 1, PREFIX_PRIORITY, lnot},
204
{"numberp", 1, 1, 1, PREFIX_PRIORITY, lnumberp},
205
{"number?", 1, 1, 1, PREFIX_PRIORITY, lnumberp},
206
{"op", 1, 1, 1, OUTPUT_PRIORITY, loutput},
207
{"openappend", 1, 1, 1, PREFIX_PRIORITY, lopenappend},
208
{"openread", 1, 1, 1, PREFIX_PRIORITY, lopenread},
209
{"openupdate", 1, 1, 1, PREFIX_PRIORITY, lopenupdate},
210
{"openwrite", 1, 1, 1, PREFIX_PRIORITY, lopenwrite},
211
{"or", 0, 2, -1, PREFIX_PRIORITY, lor},
212
{"output", 1, 1, 1, OUTPUT_PRIORITY, loutput},
213
{"palette", 1, 1, 1, PREFIX_PRIORITY, lpalette},
214
{"parse", 1, 1, 1, PREFIX_PRIORITY, lparse},
215
{"pause", 0, 0, 0, PREFIX_PRIORITY, lpause},
216
{"pc", 0, 0, 0, PREFIX_PRIORITY, lpencolor},
217
{"pd", 0, 0, 0, PREFIX_PRIORITY, lpendown},
218
{"pe", 0, 0, 0, PREFIX_PRIORITY, lpenerase},
219
{"pencolor", 0, 0, 0, PREFIX_PRIORITY, lpencolor},
220
{"pendown", 0, 0, 0, PREFIX_PRIORITY, lpendown},
221
{"pendownp", 0, 0, 0, PREFIX_PRIORITY, lpendownp},
222
{"pendown?", 0, 0, 0, PREFIX_PRIORITY, lpendownp},
223
{"penerase", 0, 0, 0, PREFIX_PRIORITY, lpenerase},
224
{"penmode", 0, 0, 0, PREFIX_PRIORITY, lpenmode},
225
{"penpaint", 0, 0, 0, PREFIX_PRIORITY, lpenpaint},
226
{"penpattern", 0, 0, 0, PREFIX_PRIORITY, lpenpattern},
227
{"penreverse", 0, 0, 0, PREFIX_PRIORITY, lpenreverse},
228
{"pensize", 0, 0, 0, PREFIX_PRIORITY, lpensize},
229
{"penup", 0, 0, 0, PREFIX_PRIORITY, lpenup},
230
{"plist", 1, 1, 1, PREFIX_PRIORITY, lplist},
231
{"plistp", 1, 1, 1, PREFIX_PRIORITY, lplistp},
232
{"plist?", 1, 1, 1, PREFIX_PRIORITY, lplistp},
233
{"plists", 0, 0, 0, PREFIX_PRIORITY, lplists},
234
{"po", 1, 1, 1, PREFIX_PRIORITY, lpo},
235
{"pos", 0, 0, 0, PREFIX_PRIORITY, lpos},
236
{"pot", 1, 1, 1, PREFIX_PRIORITY, lpot},
237
{"power", 2, 2, 2, PREFIX_PRIORITY, lpower},
238
{"pprop", 3, 3, 3, PREFIX_PRIORITY, lpprop},
239
{"ppt", 0, 0, 0, PREFIX_PRIORITY, lpenpaint},
240
{"pr", 0, 1, -1, PREFIX_PRIORITY, lprint},
241
{"prefix", 0, 0, 0, PREFIX_PRIORITY, lprefix},
242
{"primitivep", 1, 1, 1, PREFIX_PRIORITY, lprimitivep},
243
{"primitive?", 1, 1, 1, PREFIX_PRIORITY, lprimitivep},
244
{"print", 0, 1, -1, PREFIX_PRIORITY, lprint},
245
{"procedurep", 1, 1, 1, PREFIX_PRIORITY, lprocedurep},
246
{"procedure?", 1, 1, 1, PREFIX_PRIORITY, lprocedurep},
247
{"procedures", 0, 0, 0, PREFIX_PRIORITY, lprocedures},
248
{"product", 0, 2, -1, PREFIX_PRIORITY, lmul},
249
{"pu", 0, 0, 0, PREFIX_PRIORITY, lpenup},
250
{"px", 0, 0, 0, PREFIX_PRIORITY, lpenreverse},
251
{"quotient", 1, 2, 2, PREFIX_PRIORITY, ldivide},
252
{"radarctan", 1, 1, 2, PREFIX_PRIORITY, lradatan},
253
{"radcos", 1, 1, 1, PREFIX_PRIORITY, lradcos},
254
{"radsin", 1, 1, 1, PREFIX_PRIORITY, lradsin},
255
{"random", 1, 1, 1, PREFIX_PRIORITY, lrandom},
256
{"rawascii", 1, 1, 1, PREFIX_PRIORITY, lrawascii},
257
{"rc", 0, 0, 0, PREFIX_PRIORITY, lreadchar},
258
{"rcs", 1, 1, 1, PREFIX_PRIORITY, lreadchars},
259
{"readchar", 0, 0, 0, PREFIX_PRIORITY, lreadchar},
260
{"readchars", 1, 1, 1, PREFIX_PRIORITY, lreadchars},
261
{"reader", 0, 0, 0, PREFIX_PRIORITY, lreader},
262
{"readlist", 0, 0, 0, PREFIX_PRIORITY, lreadlist},
263
{"readpos", 0, 0, 0, PREFIX_PRIORITY, lreadpos},
264
{"readrawline", 0, 0, 0, PREFIX_PRIORITY, lreadrawline},
265
{"readword", 0, 0, 0, PREFIX_PRIORITY, lreadword},
266
{"refresh", 0, 0, 0, PREFIX_PRIORITY, lrefresh},
267
{"remainder", 2, 2, 2, PREFIX_PRIORITY, lremainder},
268
{"remprop", 2, 2, 2, PREFIX_PRIORITY, lremprop},
269
{"repcount", 0, 0, 0, PREFIX_PRIORITY, lrepcount},
270
{"repeat", 2, 2, 2, MACRO_PRIORITY, lrepeat},
271
{"rerandom", 0, 0, 1, PREFIX_PRIORITY, lrerandom},
272
{"right", 1, 1, 1, PREFIX_PRIORITY, lright},
273
{"rl", 0, 0, 0, PREFIX_PRIORITY, lreadlist},
274
{"round", 1, 1, 1, PREFIX_PRIORITY, lround},
275
{"rt", 1, 1, 1, PREFIX_PRIORITY, lright},
276
{"run", 1, 1, 1, MACRO_PRIORITY, lrun},
277
{"runparse", 1, 1, 1, PREFIX_PRIORITY, lrunparse},
278
{"runresult", 1, 1, 1, MACRO_PRIORITY, lrunresult},
279
{"rw", 0, 0, 0, PREFIX_PRIORITY, lreadword},
280
{"save", 1, 1, 1, PREFIX_PRIORITY, lsave},
281
{"savepict", 1, 1, 1, PREFIX_PRIORITY, lsavepict},
282
{"scrunch", 0, 0, 0, PREFIX_PRIORITY, lscrunch},
283
{"se", 0, 2, -1, PREFIX_PRIORITY, lsentence},
284
{"sentence", 0, 2, -1, PREFIX_PRIORITY, lsentence},
285
{"setbg", 1, 1, 1, PREFIX_PRIORITY, lsetbackground},
286
{"setbackground", 1, 1, 1, PREFIX_PRIORITY, lsetbackground},
287
{"setcursor", 1, 1, 1, PREFIX_PRIORITY, lsetcursor},
288
{"seth", 1, 1, 1, PREFIX_PRIORITY, lsetheading},
289
{"setheading", 1, 1, 1, PREFIX_PRIORITY, lsetheading},
290
{"setitem", 3, 3, 3, PREFIX_PRIORITY, lsetitem},
291
{"setmargins", 1, 1, 1, PREFIX_PRIORITY, lsetmargins},
292
{"setpalette", 2, 2, 2, PREFIX_PRIORITY, lsetpalette},
293
{"setpc", 1, 1, 1, PREFIX_PRIORITY, lsetpencolor},
294
{"setpencolor", 1, 1, 1, PREFIX_PRIORITY, lsetpencolor},
295
{"setpenpattern", 1, 1, 1, PREFIX_PRIORITY, lsetpenpattern},
296
{"setpensize", 1, 1, 1, PREFIX_PRIORITY, lsetpensize},
297
{"setpos", 1, 1, 1, PREFIX_PRIORITY, lsetpos},
298
{"setprefix", 1, 1, 1, PREFIX_PRIORITY, lsetprefix},
299
{"setread", 1, 1, 1, PREFIX_PRIORITY, lsetread},
300
{"setreadpos", 1, 1, 1, PREFIX_PRIORITY, lsetreadpos},
301
{"setscrunch", 2, 2, 2, PREFIX_PRIORITY, lsetscrunch},
302
#if defined(WIN32)|defined(ibm)
303
{"settc", 2, 2, 2, PREFIX_PRIORITY, set_text_color},
304
{"settextcolor", 2, 2, 2, PREFIX_PRIORITY, set_text_color},
306
{"setwrite", 1, 1, 1, PREFIX_PRIORITY, lsetwrite},
307
{"setwritepos", 1, 1, 1, PREFIX_PRIORITY, lsetwritepos},
308
{"setx", 1, 1, 1, PREFIX_PRIORITY, lsetx},
309
{"setxy", 2, 2, 2, PREFIX_PRIORITY, lsetxy},
310
{"sety", 1, 1, 1, PREFIX_PRIORITY, lsety},
311
{"shell", 1, 1, 2, PREFIX_PRIORITY, lshell},
312
{"show", 0, 1, -1, PREFIX_PRIORITY, lshow},
313
{"shownp", 0, 0, 0, PREFIX_PRIORITY, lshownp},
314
{"shown?", 0, 0, 0, PREFIX_PRIORITY, lshownp},
315
{"showturtle", 0, 0, 0, PREFIX_PRIORITY, lshowturtle},
316
{"sin", 1, 1, 1, PREFIX_PRIORITY, lsin},
317
{"splitscreen", 0, 0, 0, PREFIX_PRIORITY, lsplitscreen},
318
{"sqrt", 1, 1, 1, PREFIX_PRIORITY, lsqrt},
319
{"ss", 0, 0, 0, PREFIX_PRIORITY, lsplitscreen},
320
{"st", 0, 0, 0, PREFIX_PRIORITY, lshowturtle},
321
{"standout", 1, 1, 1, PREFIX_PRIORITY, lstandout},
322
{"step", 1, 1, 1, PREFIX_PRIORITY, lstep},
323
{"stepped", 0, 0, 0, PREFIX_PRIORITY, lstepped},
324
{"steppedp", 1, 1, 1, PREFIX_PRIORITY, lsteppedp},
325
{"stepped?", 1, 1, 1, PREFIX_PRIORITY, lsteppedp},
326
{"stop", 0, 0, 0, STOP_PRIORITY, lstop},
327
{"substringp", 2, 2, 2, PREFIX_PRIORITY, lsubstringp},
328
{"substring?", 2, 2, 2, PREFIX_PRIORITY, lsubstringp},
329
{"sum", 0, 2, -1, PREFIX_PRIORITY, ladd},
330
{"tag", 1, 1, 1, PREFIX_PRIORITY, ltag},
331
{"test", 1, 1, 1, PREFIX_PRIORITY, ltest},
332
{"text", 1, 1, 1, PREFIX_PRIORITY, ltext},
333
{"textscreen", 0, 0, 0, PREFIX_PRIORITY, ltextscreen},
334
{"thing", 1, 1, 1, PREFIX_PRIORITY, lthing},
335
{"throw", 1, 1, 2, PREFIX_PRIORITY, lthrow},
336
{"to", -1, -1, -1, PREFIX_PRIORITY, lto},
337
{"tone", 2, 2, 2, PREFIX_PRIORITY, ltone},
338
{"towards", 1, 1, 1, PREFIX_PRIORITY, ltowards},
339
{"trace", 1, 1, 1, PREFIX_PRIORITY, ltrace},
340
{"traced", 0, 0, 0, PREFIX_PRIORITY, ltraced},
341
{"tracedp", 1, 1, 1, PREFIX_PRIORITY, ltracedp},
342
{"traced?", 1, 1, 1, PREFIX_PRIORITY, ltracedp},
343
{"ts", 0, 0, 0, PREFIX_PRIORITY, ltextscreen},
344
{"type", 0, 1, -1, PREFIX_PRIORITY, ltype},
345
{"unbury", 1, 1, 1, PREFIX_PRIORITY, lunbury},
346
{"unstep", 1, 1, 1, PREFIX_PRIORITY, lunstep},
347
{"untrace", 1, 1, 1, PREFIX_PRIORITY, luntrace},
348
{"uppercase", 1, 1, 1, PREFIX_PRIORITY, luppercase},
349
{"wait", 1, 1, 1, PREFIX_PRIORITY, lwait},
350
{"window", 0, 0, 0, PREFIX_PRIORITY, lwindow},
351
{"word", 0, 2, -1, PREFIX_PRIORITY, lword},
352
{"wordp", 1, 1, 1, PREFIX_PRIORITY, lwordp},
353
{"word?", 1, 1, 1, PREFIX_PRIORITY, lwordp},
354
{"wrap", 0, 0, 0, PREFIX_PRIORITY, lwrap},
355
{"writepos", 0, 0, 0, PREFIX_PRIORITY, lwritepos},
356
{"writer", 0, 0, 0, PREFIX_PRIORITY, lwriter},
359
{"setwindowtitle", 1, 1, 1, PREFIX_PRIORITY, lsetwindowtitle},
360
{"settextfont", 1, 1, 1, PREFIX_PRIORITY, lsettextfont},
361
{"settextsize", 1, 1, 1, PREFIX_PRIORITY, lsettextsize},
362
{"settextstyle", 1, 1, 1, PREFIX_PRIORITY, lsettextstyle},
363
{"setwindowsize", 1, 1, 1, PREFIX_PRIORITY, lsetwindowsize},
364
{"setwindowxy", 1, 1, 1, PREFIX_PRIORITY, lsetwindowxy},
365
{"newconsole", 0, 0, 0, PREFIX_PRIORITY, lnewconsole},
366
{"graphtext", 0, 0, 0, PREFIX_PRIORITY, lgraphtext},
367
{"regulartext", 0, 0, 0, PREFIX_PRIORITY, lregulartext},
368
{"caninverse", 1, 1, 1, PREFIX_PRIORITY, lcaninverse},
374
NODE *intern_p(NODE *caseobj) {
375
NODE *result = intern(caseobj);
376
setflag__caseobj(result, PERMANENT);
382
NODE *proc = NIL, *pname = NIL, *cnd = NIL;
387
writestream = stdout;
391
oldyoungs = Unbound = newnode(PUNBOUND);
394
srandom((int)time((time_t *)NULL));
396
srand((int)time((time_t *)NULL));
399
for (i=0; i<128; i++)
401
for (i=0; i<ecma_size; i++)
402
ecma_array[(int)special_chars[i]] = ecma_begin+i;
405
logolib = getenv("LOGOLIB");
406
if (logolib == NULL) logolib = libloc;
407
helpfiles = getenv("LOGOHELP");
408
if (helpfiles == NULL) helpfiles = helploc;
409
editor = getenv("EDITOR");
410
if (editor == NULL) editor = "jove";
411
editorname = strrchr(editor, (int)'/');
412
editorname = (editorname ? editorname+1 : editor);
413
tempdir = getenv("TEMP");
414
if (tempdir == NULL) tempdir = temploc;
415
while (prims[i].name) {
416
if (prims[i].priority == MACRO_PRIORITY)
417
proc = newnode(MACRO);
418
else if (prims[i].priority <= TAIL_PRIORITY)
419
proc = newnode(TAILFORM);
420
else if ((prims[i].priority & ~4) == (PREFIX_PRIORITY & ~4))
421
proc = newnode(PRIM); /* incl. -- */
423
proc = newnode(INFIX);
424
setprimpri(proc, prims[i].priority);
425
setprimfun(proc, prims[i].prim);
426
setprimdflt(proc, prims[i].defargs);
427
setprimmax(proc, prims[i].maxargs);
428
setprimmin(proc, prims[i].minargs);
429
pname = make_static_strnode(prims[i].name);
430
cnd = make_instance(pname, pname);
431
setprocnode__caseobj(cnd, proc);
432
if (nodetype(proc) == MACRO)
433
setflag__caseobj(cnd, PROC_MACRO);
434
setflag__caseobj(cnd, PERMANENT);
437
True = intern_p(make_static_strnode("true"));
438
False = intern_p(make_static_strnode("false"));
439
Left_Paren = intern_p(make_static_strnode("("));
440
Right_Paren = intern_p(make_static_strnode(")"));
441
Minus_Sign = intern_p(make_static_strnode("-"));
442
Minus_Tight = intern_p(make_static_strnode("--"));
443
Query = intern_p(make_static_strnode("?"));
444
Null_Word = intern_p(make_static_strnode("\0"));
445
To = intern_p(make_static_strnode("to"));
446
Macro = intern_p(make_static_strnode(".macro"));
447
Toplevel = intern_p(make_static_strnode("toplevel"));
448
System = intern_p(make_static_strnode("system"));
449
Error = intern_p(make_static_strnode("error"));
450
End = intern_p(make_static_strnode("end"));
451
If = intern_p(make_static_strnode("if"));
452
Ifelse = intern_p(make_static_strnode("ifelse"));
453
Redefp = intern_p(make_static_strnode("redefp"));
454
Caseignoredp = intern_p(make_static_strnode("caseignoredp"));
455
setvalnode__caseobj(Caseignoredp, True);
456
setflag__caseobj(Caseignoredp, VAL_BURIED);
457
Erract = intern_p(make_static_strnode("erract"));
458
Printdepthlimit = intern_p(make_static_strnode("printdepthlimit"));
459
Printwidthlimit = intern_p(make_static_strnode("printwidthlimit"));
460
LoadNoisily = intern_p(make_static_strnode("loadnoisily"));
461
AllowGetSet = intern_p(make_static_strnode("allowgetset"));
462
setvalnode__caseobj(AllowGetSet, True);
463
setflag__caseobj(AllowGetSet, VAL_BURIED);
464
Fullprintp = intern_p(make_static_strnode("fullprintp"));
465
setvalnode__caseobj(Fullprintp, False);
466
setflag__caseobj(Fullprintp, VAL_BURIED);
467
UnburyOnEdit = intern_p(make_static_strnode("unburyonedit"));
468
setvalnode__caseobj(UnburyOnEdit, True);
469
setflag__caseobj(UnburyOnEdit, VAL_BURIED);
470
Make = intern_p(make_static_strnode("make"));
471
Listvalue = cons(intern_p(make_static_strnode("value")),NIL);
472
Dotsvalue = make_colon(car(Listvalue));
473
Pause = intern_p(make_static_strnode("pause"));
474
Startup = intern_p(make_static_strnode("startup"));
475
Output = intern_p(make_static_strnode("output"));
476
Op = intern_p(make_static_strnode("op"));
477
Stop = intern_p(make_static_strnode("stop"));
478
Goto = intern_p(make_static_strnode("goto"));
479
Tag = intern_p(make_static_strnode("Tag"));
480
the_generation = cons(NIL, NIL);
481
Not_Enough_Node = cons(NIL, NIL);
483
sprintf(linebuf,"%s%sMessages", logolib, separator);
484
fp = fopen(linebuf, "r");
486
printf("Error -- Can't read Messages file.\n");
489
for (i=0; i<MAX_MESSAGE; i++) {
490
fgets(linebuf, 99, fp);
491
linebuf[strlen(linebuf)-1] = '\0';
492
message_texts[i] = (char *) malloc(1+strlen(linebuf));
493
strcpy(message_texts[i], linebuf);