/*
* init.c logo init module dvb
*
* Copyright (C) 1993 by the Regents of the University of California
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef WIN32
#include
#endif
//#ifdef HAVE_UNISTD_H
#ifndef WIN32
#include
#endif
#define WANT_EVAL_REGS 1
#include "logo.h"
#include "globals.h"
#include
#include
#include
#ifdef HAVE_WX
void getExecutableDir(char * path, int maxlen);
#endif
typedef struct priminfo {
char *name;
short minargs;
short defargs;
short maxargs;
short priority;
NODE *(*prim) ();
} PRIMTYPE;
NODE *Right_Paren, *Left_Paren, *Redefp, *Caseignoredp, *Erract, *Printdepthlimit,
*Printwidthlimit, *Pause, *LoadNoisily, *AllowGetSet,
*UnburyOnEdit, *Fullprintp, *Make, *Listvalue, *Dotsvalue,
*Unbound, *Not_Enough_Node, *Buttonact, *LogoVersion, *LogoPlatform,
*LogoLogo, *CommandLine, *Keyact,
#ifdef OBJECTS
*askexist,
#endif
*Minus_Sign, *Minus_Tight, *Startup, *Startuplg,
*Query, *UseAlternateNames;
NODE *Null_Word = NIL;
PRIMTYPE prims[] = {
{"*", 1, 1, 1, PREFIX_PRIORITY + 3, lmul},
{"+", 1, 1, 1, PREFIX_PRIORITY + 2, ladd},
{"-", 1, 1, 1, PREFIX_PRIORITY + 2, lsub},
{"--", 1, 1, 1, PREFIX_PRIORITY + 4, lsub},
{".defmacro", 2, 2, 2, PREFIX_PRIORITY, ldefmacro},
{".eq", 2, 2, 2, PREFIX_PRIORITY, l_eq},
{".macro", -1, -1, -1, PREFIX_PRIORITY, lmacro},
{".maybeoutput", 1, 1, 1, MAYBE_PRIORITY, loutput},
{".setbf", 2, 2, 2, PREFIX_PRIORITY, l_setbf},
{".setfirst", 2, 2, 2, PREFIX_PRIORITY, l_setfirst},
{".setitem", 3, 3, 3, PREFIX_PRIORITY, l_setitem},
{".setsegmentsize", 1, 1, 1, PREFIX_PRIORITY, lsetsegsz},
{"/", 1, 1, 1, PREFIX_PRIORITY + 3, ldivide},
{"<", 2, 2, 2, PREFIX_PRIORITY + 1, llessp},
{"=", 2, 2, 2, PREFIX_PRIORITY + 1, lequalp},
{">", 2, 2, 2, PREFIX_PRIORITY + 1, lgreaterp},
{"<=", 2, 2, 2, PREFIX_PRIORITY + 1, llessequalp},
{"<>", 2, 2, 2, PREFIX_PRIORITY + 1, lnotequalp},
{">=", 2, 2, 2, PREFIX_PRIORITY + 1, lgreaterequalp},
{"?", 0, 0, 1, PREFIX_PRIORITY, lqm},
{"allopen", 0, 0, 0, PREFIX_PRIORITY, lallopen},
{"and", 0, 2, -1, PREFIX_PRIORITY, land},
{"apply", 2, 2, 2, MACRO_PRIORITY, lapply},
{"arc", 2, 2, 2, PREFIX_PRIORITY, larc},
{"arctan", 1, 1, 2, PREFIX_PRIORITY, latan},
{"arity", 1, 1, 1, PREFIX_PRIORITY, larity},
{"array", 1, 1, 2, PREFIX_PRIORITY, larray},
{"arrayp", 1, 1, 1, PREFIX_PRIORITY, larrayp},
{"arraytolist", 1, 1, 1, PREFIX_PRIORITY, larraytolist},
{"array?", 1, 1, 1, PREFIX_PRIORITY, larrayp},
{"ascii", 1, 1, 1, PREFIX_PRIORITY, lascii},
{"ashift", 2, 2, 2, PREFIX_PRIORITY, lashift},
#ifdef OBJECTS
{"ask", 2, 2, 2, MACRO_PRIORITY, lask},
#endif
{"back", 1, 1, 1, PREFIX_PRIORITY, lback},
{"background", 0, 0, 0, PREFIX_PRIORITY, lbackground},
{"beforep", 2, 2, 2, PREFIX_PRIORITY, lbeforep},
{"before?", 2, 2, 2, PREFIX_PRIORITY, lbeforep},
{"bf", 1, 1, 1, PREFIX_PRIORITY, lbutfirst},
{"bfs", 1, 1, 1, PREFIX_PRIORITY, lbfs},
{"bg", 0, 0, 0, PREFIX_PRIORITY, lbackground},
{"bitand", 0, 2, -1, PREFIX_PRIORITY, lbitand},
{"bitnot", 1, 1, 1, PREFIX_PRIORITY, lbitnot},
{"bitor", 0, 2, -1, PREFIX_PRIORITY, lbitor},
{"bitxor", 0, 2, -1, PREFIX_PRIORITY, lbitxor},
{"bk", 1, 1, 1, PREFIX_PRIORITY, lback},
{"bl", 1, 1, 1, PREFIX_PRIORITY, lbutlast},
{"buried", 0, 0, 0, PREFIX_PRIORITY, lburied},
{"buriedp", 1, 1, 1, PREFIX_PRIORITY, lburiedp},
{"buried?", 1, 1, 1, PREFIX_PRIORITY, lburiedp},
{"bury", 1, 1, 1, PREFIX_PRIORITY, lbury},
{"butfirst", 1, 1, 1, PREFIX_PRIORITY, lbutfirst},
{"butfirsts", 1, 1, 1, PREFIX_PRIORITY, lbfs},
{"butlast", 1, 1, 1, PREFIX_PRIORITY, lbutlast},
{"button", 0, 0, 0, PREFIX_PRIORITY, lbutton},
{"buttonp", 0, 0, 0, PREFIX_PRIORITY, lbuttonp},
{"button?", 0, 0, 0, PREFIX_PRIORITY, lbuttonp},
{"bye", 0, 0, 0, PREFIX_PRIORITY, lbye},
{"catch", 2, 2, 2, MACRO_PRIORITY, lcatch},
{"char", 1, 1, 1, PREFIX_PRIORITY, lchar},
{"clean", 0, 0, 0, PREFIX_PRIORITY, lclean},
{"clearscreen", 0, 0, 0, PREFIX_PRIORITY, lclearscreen},
{"cleartext", 0, 0, 0, PREFIX_PRIORITY, lcleartext},
#ifdef HAVE_WX
{"clickpos", 0, 0, 0, PREFIX_PRIORITY, lclickpos},
#endif
{"close", 1, 1, 1, PREFIX_PRIORITY, lclose},
{"co", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lcontinue},
{"contents", 0, 0, 0, PREFIX_PRIORITY, lcontents},
{"continue", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lcontinue},
{"copydef", 2, 2, 2, PREFIX_PRIORITY, lcopydef},
{"cos", 1, 1, 1, PREFIX_PRIORITY, lcos},
{"count", 1, 1, 1, PREFIX_PRIORITY, lcount},
{"cs", 0, 0, 0, PREFIX_PRIORITY, lclearscreen},
{"cslsload", 1, 1, 1, PREFIX_PRIORITY, lcslsload},
{"ct", 0, 0, 0, PREFIX_PRIORITY, lcleartext},
{"cursor", 0, 0, 0, PREFIX_PRIORITY, lcursor},
#ifdef HAVE_WX
{"decreasefont", 0, 0, 0, PREFIX_PRIORITY, DecreaseFont},
#endif
{"define", 2, 2, 2, PREFIX_PRIORITY, ldefine},
{"definedp", 1, 1, 1, PREFIX_PRIORITY, ldefinedp},
{"defined?", 1, 1, 1, PREFIX_PRIORITY, ldefinedp},
{"difference", 2, 2, 2, PREFIX_PRIORITY, lsub},
{"dribble", 1, 1, 1, PREFIX_PRIORITY, ldribble},
{"ed", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, ledit},
{"edit", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, ledit},
{"editfile", 1, 1, 1, PREFIX_PRIORITY, leditfile},
{"emptyp", 1, 1, 1, PREFIX_PRIORITY, lemptyp},
{"empty?", 1, 1, 1, PREFIX_PRIORITY, lemptyp},
{"eofp", 0, 0, 0, PREFIX_PRIORITY, leofp},
{"eof?", 0, 0, 0, PREFIX_PRIORITY, leofp},
{"epspict", 1, 1, 1, PREFIX_PRIORITY, lepspict},
{"equalp", 2, 2, 2, PREFIX_PRIORITY, lequalp},
{"equal?", 2, 2, 2, PREFIX_PRIORITY, lequalp},
{"er", 1, 1, 1, PREFIX_PRIORITY, lerase},
{"erall", 0, 0, 0, PREFIX_PRIORITY, lerall},
{"erase", 1, 1, 1, PREFIX_PRIORITY, lerase},
{"erasefile", 1, 1, 1, PREFIX_PRIORITY, lerasefile},
{"erf", 1, 1, 1, PREFIX_PRIORITY, lerasefile},
{"erns", 0, 0, 0, PREFIX_PRIORITY, lerns},
{"erpls", 0, 0, 0, PREFIX_PRIORITY, lerpls},
{"erps", 0, 0, 0, PREFIX_PRIORITY, lerps},
{"error", 0, 0, 0, PREFIX_PRIORITY, lerror},
#ifdef OBJECTS
{"exist", 0, 0, 0, PREFIX_PRIORITY, lexist},
#endif
{"exp", 1, 1, 1, PREFIX_PRIORITY, lexp},
{"fd", 1, 1, 1, PREFIX_PRIORITY, lforward},
{"fence", 0, 0, 0, PREFIX_PRIORITY, lfence},
{"fill", 0, 0, 0, PREFIX_PRIORITY, lfill},
#ifdef HAVE_WX
{"filled", 2, 2, 2, PREFIX_PRIORITY, lfilled},
#endif
{"first", 1, 1, 1, PREFIX_PRIORITY, lfirst},
{"firsts", 1, 1, 1, PREFIX_PRIORITY, lfirsts},
#ifdef HAVE_WX
{"font", 0, 0, 0, PREFIX_PRIORITY, lfont},
#endif
{"forever", 1, 1, 1, MACRO_PRIORITY, lforever},
{"form", 3, 3, 3, PREFIX_PRIORITY, lform},
{"forward", 1, 1, 1, PREFIX_PRIORITY, lforward},
{"fput", 2, 2, 2, PREFIX_PRIORITY, lfput},
{"fs", 0, 0, 0, PREFIX_PRIORITY, lfullscreen},
{"fullscreen", 0, 0, 0, PREFIX_PRIORITY, lfullscreen},
{"fulltext", 1, 1, 1, PREFIX_PRIORITY, lfulltext},
{"gc", 0, 0, 1, PREFIX_PRIORITY, lgc},
{"global", 1, 1, -1, PREFIX_PRIORITY, lglobal},
{"goto", 1, 1, 1, MACRO_PRIORITY, lgoto},
{"gprop", 2, 2, 2, PREFIX_PRIORITY, lgprop},
{"greaterp", 2, 2, 2, PREFIX_PRIORITY, lgreaterp},
{"greater?", 2, 2, 2, PREFIX_PRIORITY, lgreaterp},
{"greaterequalp", 2, 2, 2, PREFIX_PRIORITY, lgreaterequalp},
{"greaterequal?", 2, 2, 2, PREFIX_PRIORITY, lgreaterequalp},
#ifdef OBJECTS
{"have", 1, 1, 1, PREFIX_PRIORITY, lhave},
#endif
{"heading", 0, 0, 0, PREFIX_PRIORITY, lheading},
{"help", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lhelp},
{"hideturtle", 0, 0, 0, PREFIX_PRIORITY, lhideturtle},
{"home", 0, 0, 0, PREFIX_PRIORITY, lhome},
{"ht", 0, 0, 0, PREFIX_PRIORITY, lhideturtle},
{"if", 2, 2, 3, MACRO_PRIORITY, lif},
{"ifelse", 3, 3, 3, MACRO_PRIORITY, lifelse},
{"iff", 1, 1, 1, MACRO_PRIORITY, liffalse},
{"iffalse", 1, 1, 1, MACRO_PRIORITY, liffalse},
{"ift", 1, 1, 1, MACRO_PRIORITY, liftrue},
{"iftrue", 1, 1, 1, MACRO_PRIORITY, liftrue},
#ifdef HAVE_WX
{"increasefont", 0, 0, 0, PREFIX_PRIORITY, IncreaseFont},
#endif
{"int", 1, 1, 1, PREFIX_PRIORITY, linteg},
{"item", 2, 2, 2, PREFIX_PRIORITY, litem},
{"keyp", 0, 0, 0, PREFIX_PRIORITY, lkeyp},
{"key?", 0, 0, 0, PREFIX_PRIORITY, lkeyp},
#ifdef OBJECTS
{"kindof", 1, 1, -1, PREFIX_PRIORITY, lkindof},
#endif
{"label", 1, 1, 1, PREFIX_PRIORITY, llabel},
#ifdef HAVE_WX
{"labelsize", 0, 0, 0, PREFIX_PRIORITY, llabelsize},
#endif
{"last", 1, 1, 1, PREFIX_PRIORITY, llast},
{"left", 1, 1, 1, PREFIX_PRIORITY, lleft},
{"lessp", 2, 2, 2, PREFIX_PRIORITY, llessp},
{"less?", 2, 2, 2, PREFIX_PRIORITY, llessp},
{"lessequalp", 2, 2, 2, PREFIX_PRIORITY, llessequalp},
{"lessequal?", 2, 2, 2, PREFIX_PRIORITY, llessequalp},
{"linep", 0, 0, 0, PREFIX_PRIORITY, llinep},
{"line?", 0, 0, 0, PREFIX_PRIORITY, llinep},
{"list", 0, 2, -1, PREFIX_PRIORITY, llist},
{"listp", 1, 1, 1, PREFIX_PRIORITY, llistp},
{"listtoarray", 1, 1, 2, PREFIX_PRIORITY, llisttoarray},
{"list?", 1, 1, 1, PREFIX_PRIORITY, llistp},
{"ln", 1, 1, 1, PREFIX_PRIORITY, lln},
{"load", 1, 1, 1, PREFIX_PRIORITY, lload},
{"loadpict", 1, 1, 1, PREFIX_PRIORITY, lloadpict},
{"local", 1, 1, -1, PREFIX_PRIORITY, llocal},
{"log10", 1, 1, 1, PREFIX_PRIORITY, llog10},
#ifdef OBJECTS
{"logo", 0, 0, 0, PREFIX_PRIORITY, llogo},
#endif
{"lowercase", 1, 1, 1, PREFIX_PRIORITY, llowercase},
{"lput", 2, 2, 2, PREFIX_PRIORITY, llput},
{"lshift", 2, 2, 2, PREFIX_PRIORITY, llshift},
{"lt", 1, 1, 1, PREFIX_PRIORITY, lleft},
{"macrop", 1, 1, 1, PREFIX_PRIORITY, lmacrop},
{"macro?", 1, 1, 1, PREFIX_PRIORITY, lmacrop},
{"make", 2, 2, 2, PREFIX_PRIORITY, lmake},
#ifndef HAVE_WX
#if defined(WIN32)
{"maximize.window", 1, 1, 1, PREFIX_PRIORITY, maximize},
#endif
#endif
{"member", 2, 2, 2, PREFIX_PRIORITY, lmember},
{"memberp", 2, 2, 2, PREFIX_PRIORITY, lmemberp},
{"member?", 2, 2, 2, PREFIX_PRIORITY, lmemberp},
{"minus", 1, 1, 1, PREFIX_PRIORITY, lsub},
{"modulo", 2, 2, 2, PREFIX_PRIORITY, lmodulo},
{"mousepos", 0, 0, 0, PREFIX_PRIORITY, lmousepos},
#ifdef OBJECTS
{"mynamep", 1, 1, 1, PREFIX_PRIORITY, lmynamep},
{"mynames", 0, 0, 0, PREFIX_PRIORITY, lmynames},
{"myprocp", 1, 1, 1, PREFIX_PRIORITY, lmyprocp},
{"myprocs", 0, 0, 0, PREFIX_PRIORITY, lmyprocs},
#endif
{"namep", 1, 1, 1, PREFIX_PRIORITY, lnamep},
{"name?", 1, 1, 1, PREFIX_PRIORITY, lnamep},
{"names", 0, 0, 0, PREFIX_PRIORITY, lnames},
{"nodes", 0, 0, 0, PREFIX_PRIORITY, lnodes},
{"nodribble", 0, 0, 0, PREFIX_PRIORITY, lnodribble},
{"norefresh", 0, 0, 0, PREFIX_PRIORITY, lnorefresh},
{"not", 1, 1, 1, PREFIX_PRIORITY, lnot},
{"notequalp", 2, 2, 2, PREFIX_PRIORITY, lnotequalp},
{"notequal?", 2, 2, 2, PREFIX_PRIORITY, lnotequalp},
{"numberp", 1, 1, 1, PREFIX_PRIORITY, lnumberp},
{"number?", 1, 1, 1, PREFIX_PRIORITY, lnumberp},
#ifdef OBJECTS
{"oneof", 1, 1, -1, MACRO_PRIORITY, loneof},
#endif
{"op", 1, 1, 1, OUTPUT_PRIORITY, loutput},
{"openappend", 1, 1, 1, PREFIX_PRIORITY, lopenappend},
{"openread", 1, 1, 1, PREFIX_PRIORITY, lopenread},
{"openupdate", 1, 1, 1, PREFIX_PRIORITY, lopenupdate},
{"openwrite", 1, 1, 1, PREFIX_PRIORITY, lopenwrite},
{"or", 0, 2, -1, PREFIX_PRIORITY, lor},
{"output", 1, 1, 1, OUTPUT_PRIORITY, loutput},
{"palette", 1, 1, 1, PREFIX_PRIORITY, lpalette},
#ifdef OBJECTS
{"parents", 0, 0, 0, PREFIX_PRIORITY, lparents},
#endif
{"parse", 1, 1, 1, PREFIX_PRIORITY, lparse},
{"pause", 0, 0, 0, PREFIX_PRIORITY, lpause},
{"pc", 0, 0, 0, PREFIX_PRIORITY, lpencolor},
{"pd", 0, 0, 0, PREFIX_PRIORITY, lpendown},
{"pe", 0, 0, 0, PREFIX_PRIORITY, lpenerase},
{"pencolor", 0, 0, 0, PREFIX_PRIORITY, lpencolor},
{"pendown", 0, 0, 0, PREFIX_PRIORITY, lpendown},
{"pendownp", 0, 0, 0, PREFIX_PRIORITY, lpendownp},
{"pendown?", 0, 0, 0, PREFIX_PRIORITY, lpendownp},
{"penerase", 0, 0, 0, PREFIX_PRIORITY, lpenerase},
{"penmode", 0, 0, 0, PREFIX_PRIORITY, lpenmode},
{"penpaint", 0, 0, 0, PREFIX_PRIORITY, lpenpaint},
{"penpattern", 0, 0, 0, PREFIX_PRIORITY, lpenpattern},
{"penreverse", 0, 0, 0, PREFIX_PRIORITY, lpenreverse},
{"pensize", 0, 0, 0, PREFIX_PRIORITY, lpensize},
{"penup", 0, 0, 0, PREFIX_PRIORITY, lpenup},
{"plist", 1, 1, 1, PREFIX_PRIORITY, lplist},
{"plistp", 1, 1, 1, PREFIX_PRIORITY, lplistp},
{"plist?", 1, 1, 1, PREFIX_PRIORITY, lplistp},
{"plists", 0, 0, 0, PREFIX_PRIORITY, lplists},
{"po", 1, 1, 1, PREFIX_PRIORITY, lpo},
{"pos", 0, 0, 0, PREFIX_PRIORITY, lpos},
{"pot", 1, 1, 1, PREFIX_PRIORITY, lpot},
{"power", 2, 2, 2, PREFIX_PRIORITY, lpower},
{"pprop", 3, 3, 3, PREFIX_PRIORITY, lpprop},
{"ppt", 0, 0, 0, PREFIX_PRIORITY, lpenpaint},
{"pr", 0, 1, -1, PREFIX_PRIORITY, lprint},
{"prefix", 0, 0, 0, PREFIX_PRIORITY, lprefix},
{"primitivep", 1, 1, 1, PREFIX_PRIORITY, lprimitivep},
{"primitive?", 1, 1, 1, PREFIX_PRIORITY, lprimitivep},
{"primitives", 0, 0, 0, PREFIX_PRIORITY, lprimitives},
{"print", 0, 1, -1, PREFIX_PRIORITY, lprint},
{"printout", 1, 1, 1, PREFIX_PRIORITY, lpo},
#ifdef HAVE_WX
{"printpict", 0, 0, 1, PREFIX_PRIORITY, lprintpict},
{"printtext", 0, 0, 1, PREFIX_PRIORITY, lprinttext},
#endif
{"procedurep", 1, 1, 1, PREFIX_PRIORITY, lprocedurep},
{"procedure?", 1, 1, 1, PREFIX_PRIORITY, lprocedurep},
{"procedures", 0, 0, 0, PREFIX_PRIORITY, lprocedures},
{"product", 0, 2, -1, PREFIX_PRIORITY, lmul},
{"pu", 0, 0, 0, PREFIX_PRIORITY, lpenup},
{"px", 0, 0, 0, PREFIX_PRIORITY, lpenreverse},
{"quotient", 1, 2, 2, PREFIX_PRIORITY, ldivide},
{"radarctan", 1, 1, 2, PREFIX_PRIORITY, lradatan},
{"radcos", 1, 1, 1, PREFIX_PRIORITY, lradcos},
{"radsin", 1, 1, 1, PREFIX_PRIORITY, lradsin},
{"random", 1, 1, 2, PREFIX_PRIORITY, lrandom},
{"rawascii", 1, 1, 1, PREFIX_PRIORITY, lrawascii},
{"rc", 0, 0, 0, PREFIX_PRIORITY, lreadchar},
{"rcs", 1, 1, 1, PREFIX_PRIORITY, lreadchars},
{"readchar", 0, 0, 0, PREFIX_PRIORITY, lreadchar},
{"readchars", 1, 1, 1, PREFIX_PRIORITY, lreadchars},
{"reader", 0, 0, 0, PREFIX_PRIORITY, lreader},
{"readlist", 0, 0, 0, PREFIX_PRIORITY, lreadlist},
{"readpos", 0, 0, 0, PREFIX_PRIORITY, lreadpos},
{"readrawline", 0, 0, 0, PREFIX_PRIORITY, lreadrawline},
{"readword", 0, 0, 0, PREFIX_PRIORITY, lreadword},
{"refresh", 0, 0, 0, PREFIX_PRIORITY, lrefresh},
{"remainder", 2, 2, 2, PREFIX_PRIORITY, lremainder},
{"remprop", 2, 2, 2, PREFIX_PRIORITY, lremprop},
{"repcount", 0, 0, 0, PREFIX_PRIORITY, lrepcount},
{"repeat", 2, 2, 2, MACRO_PRIORITY, lrepeat},
#ifdef OBJECTS
{"representation", 0, 0, 0, PREFIX_PRIORITY, lrepresentation},
#endif
{"rerandom", 0, 0, 1, PREFIX_PRIORITY, lrerandom},
{"right", 1, 1, 1, PREFIX_PRIORITY, lright},
{"rl", 0, 0, 0, PREFIX_PRIORITY, lreadlist},
{"round", 1, 1, 1, PREFIX_PRIORITY, lroundx},
{"rt", 1, 1, 1, PREFIX_PRIORITY, lright},
{"run", 1, 1, 1, MACRO_PRIORITY, lrun},
{"runparse", 1, 1, 1, PREFIX_PRIORITY, lrunparse},
{"runresult", 1, 1, 1, MACRO_PRIORITY, lrunresult},
{"rw", 0, 0, 0, PREFIX_PRIORITY, lreadword},
{"save", OK_NO_ARG, 1, 1, PREFIX_PRIORITY, lsave},
{"savepict", 1, 1, 1, PREFIX_PRIORITY, lsavepict},
{"screenmode", 0, 0, 0, PREFIX_PRIORITY, lscreenmode},
{"scrunch", 0, 0, 0, PREFIX_PRIORITY, lscrunch},
{"se", 0, 2, -1, PREFIX_PRIORITY, lsentence},
#ifdef OBJECTS
{"self", 0, 0, 0, PREFIX_PRIORITY, lself},
#endif
{"sentence", 0, 2, -1, PREFIX_PRIORITY, lsentence},
{"setbg", 1, 1, 1, PREFIX_PRIORITY, lsetbackground},
{"setbackground", 1, 1, 1, PREFIX_PRIORITY, lsetbackground},
{"setcursor", 1, 1, 1, PREFIX_PRIORITY, lsetcursor},
{"setcslsloc", 1, 1, 1, PREFIX_PRIORITY, lsetcslsloc},
#ifdef HAVE_WX
{"setfont", 1, 1, 1, PREFIX_PRIORITY, lsetfont},
#endif
{"seteditor", 1, 1, 1, PREFIX_PRIORITY, lseteditor},
{"seth", 1, 1, 1, PREFIX_PRIORITY, lsetheading},
{"setheading", 1, 1, 1, PREFIX_PRIORITY, lsetheading},
{"sethelploc", 1, 1, 1, PREFIX_PRIORITY, lsethelploc},
{"setitem", 3, 3, 3, PREFIX_PRIORITY, lsetitem},
#ifdef HAVE_WX
{"setlabelheight", 1, 1, 1, PREFIX_PRIORITY, lsetlabelheight},
#endif
{"setlibloc", 1, 1, 1, PREFIX_PRIORITY, lsetlibloc},
{"setmargins", 1, 1, 1, PREFIX_PRIORITY, lsetmargins},
{"setpalette", 2, 2, 2, PREFIX_PRIORITY, lsetpalette},
{"setpc", 1, 1, 1, PREFIX_PRIORITY, lsetpencolor},
{"setpencolor", 1, 1, 1, PREFIX_PRIORITY, lsetpencolor},
{"setpenpattern", 1, 1, 1, PREFIX_PRIORITY, lsetpenpattern},
{"setpensize", 1, 1, 1, PREFIX_PRIORITY, lsetpensize},
{"setpos", 1, 1, 1, PREFIX_PRIORITY, lsetpos},
{"setprefix", 1, 1, 1, PREFIX_PRIORITY, lsetprefix},
{"setread", 1, 1, 1, PREFIX_PRIORITY, lsetread},
{"setreadpos", 1, 1, 1, PREFIX_PRIORITY, lsetreadpos},
{"setscrunch", 2, 2, 2, PREFIX_PRIORITY, lsetscrunch},
#if defined(WIN32)|defined(ibm)|defined(HAVE_WX)
{"settc", 2, 2, 2, PREFIX_PRIORITY, set_text_color},
{"settextcolor", 2, 2, 2, PREFIX_PRIORITY, set_text_color},
#endif
#ifdef HAVE_WX
{"settextsize", 1, 1, 1, PREFIX_PRIORITY, lsettextsize},
#endif
{"settemploc", 1, 1, 1, PREFIX_PRIORITY, lsettemploc},
{"setwrite", 1, 1, 1, PREFIX_PRIORITY, lsetwrite},
{"setwritepos", 1, 1, 1, PREFIX_PRIORITY, lsetwritepos},
{"setx", 1, 1, 1, PREFIX_PRIORITY, lsetx},
{"setxy", 2, 2, 2, PREFIX_PRIORITY, lsetxy},
{"sety", 1, 1, 1, PREFIX_PRIORITY, lsety},
{"shell", 1, 1, 2, PREFIX_PRIORITY, lshell},
{"show", 0, 1, -1, PREFIX_PRIORITY, lshow},
{"shownp", 0, 0, 0, PREFIX_PRIORITY, lshownp},
{"shown?", 0, 0, 0, PREFIX_PRIORITY, lshownp},
{"showturtle", 0, 0, 0, PREFIX_PRIORITY, lshowturtle},
{"sin", 1, 1, 1, PREFIX_PRIORITY, lsin},
#ifdef OBJECTS
{"something", 0, 0, 0, PREFIX_PRIORITY, lsomething},
#endif
{"splitscreen", 0, 0, 0, PREFIX_PRIORITY, lsplitscreen},
{"sqrt", 1, 1, 1, PREFIX_PRIORITY, lsqrt},
{"ss", 0, 0, 0, PREFIX_PRIORITY, lsplitscreen},
{"st", 0, 0, 0, PREFIX_PRIORITY, lshowturtle},
{"standout", 1, 1, 1, PREFIX_PRIORITY, lstandout},
{"step", 1, 1, 1, PREFIX_PRIORITY, lstep},
{"stepped", 0, 0, 0, PREFIX_PRIORITY, lstepped},
{"steppedp", 1, 1, 1, PREFIX_PRIORITY, lsteppedp},
{"stepped?", 1, 1, 1, PREFIX_PRIORITY, lsteppedp},
{"stop", 0, 0, 0, STOP_PRIORITY, lstop},
{"substringp", 2, 2, 2, PREFIX_PRIORITY, lsubstringp},
{"substring?", 2, 2, 2, PREFIX_PRIORITY, lsubstringp},
{"sum", 0, 2, -1, PREFIX_PRIORITY, ladd},
{"tag", 1, 1, 1, PREFIX_PRIORITY, ltag},
#ifdef OBJECTS
{"talkto", 1, 1, 1, PREFIX_PRIORITY, ltalkto},
#endif
{"test", 1, 1, 1, PREFIX_PRIORITY, ltest},
{"text", 1, 1, 1, PREFIX_PRIORITY, ltext},
{"textscreen", 0, 0, 0, PREFIX_PRIORITY, ltextscreen},
#ifdef HAVE_WX
{"textsize", 0, 0, 0, PREFIX_PRIORITY, ltextsize},
#endif
{"thing", 1, 1, 1, PREFIX_PRIORITY, lthing},
{"throw", 1, 1, 2, PREFIX_PRIORITY, lthrow},
{"time", 0, 0, 0, PREFIX_PRIORITY, ltime},
{"to", -1, -1, -1, PREFIX_PRIORITY, lto},
{"tone", 2, 2, 2, PREFIX_PRIORITY, ltone},
{"towards", 1, 1, 1, PREFIX_PRIORITY, ltowards},
{"trace", 1, 1, 1, PREFIX_PRIORITY, ltrace},
{"traced", 0, 0, 0, PREFIX_PRIORITY, ltraced},
{"tracedp", 1, 1, 1, PREFIX_PRIORITY, ltracedp},
{"traced?", 1, 1, 1, PREFIX_PRIORITY, ltracedp},
{"ts", 0, 0, 0, PREFIX_PRIORITY, ltextscreen},
{"turtlemode", 0, 0, 0, PREFIX_PRIORITY, lturtlemode},
{"type", 0, 1, -1, PREFIX_PRIORITY, ltype},
{"unbury", 1, 1, 1, PREFIX_PRIORITY, lunbury},
{"unstep", 1, 1, 1, PREFIX_PRIORITY, lunstep},
{"untrace", 1, 1, 1, PREFIX_PRIORITY, luntrace},
{"uppercase", 1, 1, 1, PREFIX_PRIORITY, luppercase},
{"vbarredp", 1, 1, 1, PREFIX_PRIORITY, lvbarredp},
{"vbarred?", 1, 1, 1, PREFIX_PRIORITY, lvbarredp},
{"wait", 1, 1, 1, PREFIX_PRIORITY, lwait},
{"window", 0, 0, 0, PREFIX_PRIORITY, lwindow},
{"word", 0, 2, -1, PREFIX_PRIORITY, lword},
{"wordp", 1, 1, 1, PREFIX_PRIORITY, lwordp},
{"word?", 1, 1, 1, PREFIX_PRIORITY, lwordp},
{"wrap", 0, 0, 0, PREFIX_PRIORITY, lwrap},
{"writepos", 0, 0, 0, PREFIX_PRIORITY, lwritepos},
{"writer", 0, 0, 0, PREFIX_PRIORITY, lwriter},
#ifdef mac
{"setwindowtitle", 1, 1, 1, PREFIX_PRIORITY, lsetwindowtitle},
{"settextfont", 1, 1, 1, PREFIX_PRIORITY, lsettextfont},
{"settextsize", 1, 1, 1, PREFIX_PRIORITY, lsettextsize},
{"settextstyle", 1, 1, 1, PREFIX_PRIORITY, lsettextstyle},
{"setwindowsize", 1, 1, 1, PREFIX_PRIORITY, lsetwindowsize},
{"setwindowxy", 1, 1, 1, PREFIX_PRIORITY, lsetwindowxy},
{"newconsole", 0, 0, 0, PREFIX_PRIORITY, lnewconsole},
{"graphtext", 0, 0, 0, PREFIX_PRIORITY, lgraphtext},
{"regulartext", 0, 0, 0, PREFIX_PRIORITY, lregulartext},
{"caninverse", 1, 1, 1, PREFIX_PRIORITY, lcaninverse},
#endif
{0, 0, 0, 0, 0, 0}
};
struct wdtrans translations[NUM_WORDS];
NODE *intern_p(NODE *caseobj) {
NODE *result = intern(caseobj);
setflag__caseobj(result, PERMANENT);
return result;
}
void init(void) {
int i = 0;
NODE *iproc = NIL, *pname = NIL, *cnd = NIL;
FILE *fp;
char linebuf[256];
char *sugar;
static char sugarlib[100], sugarhelp[100], sugarcsls[100];
#ifdef WIN32
HKEY regKey1, regKey2, regKey3;
int got_hklm = 0;
char buf[200];
unsigned long int bufsiz;
char *envp;
#endif
readstream = stdin;
writestream = stdout;
loadstream = stdin;
fill_reserve_tank();
oldyoungs = Unbound = newnode(PUNBOUND);
#ifdef HAVE_SRANDOM
srandom((int)time((time_t *)NULL));
#else
srand((int)time((time_t *)NULL));
#endif
#ifdef ecma
for (i=0; i<128; i++)
ecma_array[i] = i;
for (i=0; in_car = (NODE *)®s;
//hist_inptr = hist_outptr = cmdHistory;
#ifdef OBJECTS
obj_init();
#endif
/* Uncomment these to print debugging messages right away! */
/*
setvalnode__caseobj(Redefp, True);
setflag__caseobj(Redefp, VAL_BURIED);
*/
}