Knete aus der Mudlib entfernt

Das Tool macht mehr Probleme als es loest, und es wird quasi
nicht benutzt.

Change-Id: Ia13f36d9834a53da72f9cad73066c8bb8ab85af7
diff --git a/obj/tools/lisp/escape.c b/obj/tools/lisp/escape.c
deleted file mode 100644
index def5648..0000000
--- a/obj/tools/lisp/escape.c
+++ /dev/null
@@ -1,37 +0,0 @@
-// ESCAPE.C -- expanding escape characters
-// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
-// --
-// Copy, change and distribute this bit of software as much as you like,
-// but keep the name of the original author in the header.
-
-#pragma strong_types
-
-string escape(string str)
-{
-  switch(str) 
-  {
-    case "\b" : return "\\b";
-    case "\f" : return "\\f";
-    case "\n" : return "\\n";
-    case "\r" : return "\\r";
-    case "\t" : return "\\t";
-    case "\\" : return "\\\\";
-  }
-  return str;
-}
-
-string unescape(string str)
-{
-  switch(str) 
-  {
-    case "\\b" : return "\b";
-    case "\\f" : return "\f";
-    case "\\n" : return "\n";
-    case "\\r" : return "\r";
-    case "\\t" : return "\t";
-    case "\\\\": return "\\";
-    default   : if(str && sizeof(str)>1 && str[0]=='\\') 
-                return str[1..]; 
-  }
-  return str;
-}
diff --git a/obj/tools/lisp/knete.c b/obj/tools/lisp/knete.c
deleted file mode 100644
index 1dc1432..0000000
--- a/obj/tools/lisp/knete.c
+++ /dev/null
@@ -1,190 +0,0 @@
-// KNETE.C -- CommandLine Frontend to the Lisp2Closure compiler
-// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
-// --
-// Copy, change and distribute this bit of software as much as you like,
-// but keep the name of the original author in the header.
-
-#include "tweak.h"
-
-static inherit HOME("lisp");
-
-#ifdef ALATIA
-#  define TUBMUD
-#endif
-// TUBMUD is a COMPAT mode game! (well sort of, its a NATIVE/COMPAT mixture)
-// the following defines should be the only ones to change
-// define ENGLISH if you don't want german messages ;)
-#if (defined(TUBMUD) || defined(TAPPMUD) || defined(UNItopia) || \
-     defined(ADAMANT))
-# ifdef ADAMANT
-#   include <config.h>
-    inherit "/lib/obj";
-#   define WIZLOCAL "/wiz/"
-#   define ID(x)        set_name(x)
-#   define SHORT(x)     set_short(x)
-#   define LONG(x)      set_long(x)
-#   define ISWIZARD(pl) (LEVELMASTER->is_wizard(pl->query_real_name()))
-# endif
-# ifdef TUBMUD
-#   include <kernel.h>
-#   include <wizlevels.h>
-    inherit ACCESS;
-    inherit "/complex/item";
-    inherit "/basic/autoload";
-#   define WIZLOCAL "/players/"
-#   define ID(x)        add_id(x)
-#   define ISWIZARD(pl) (pl->query_level() >= WL_WIZARD)
-# endif
-# ifdef TAPPMUD
-#   include <levels.h>
-    inherit "/obj/thing";
-#   define WIZLOCAL "/w/"
-#   define ID(x)        set_alias(x)
-#   define ISWIZARD(pl) (pl->query_level() >= LVL_WIZARD)
-# endif
-# define ENGLISH
-# ifdef UNItopia
-#   undef ENGLISH
-#   ifdef FinalFrontier
-#     include <level.h>
-#   else
-#     include <levels.h>
-#   endif
-    inherit "/i/item";
-    inherit "/i/install";
-#   define WIZLOCAL "/w/"
-#   define ID(x)        add_id(x)
-#   define ISWIZARD(pl) wizp(pl)
-# endif
-# define WIZHOME        (WIZLOCAL+this_player()->query_real_name())
-# define LONG(x)        set_long(x)
-# define SHORT(x)       set_short(x)
-#else
-  inherit "/std/thing";
-# ifdef NIGHTFALL
-#   define ENGLISH
-# endif
-# include <properties.h>
-# include <wizlevels.h>
-# define WIZHOME        ("/players/"+getuid(this_object()))
-# define ID(x)          AddId(x); SetProp(P_NAME, x)
-# define LONG(x)        SetProp(P_LONG, x)
-# define SHORT(x)       SetProp(P_SHORT, x);
-# define ISWIZARD(pl)   IS_WIZARD(pl)
-#endif
-
-nomask void create()
-{
-  if(sizeof(old_explode(object_name(this_object()), "#")) == 1) return;
-  if(!interactive(this_player())) destruct(this_object());
-#ifndef MORGENGRAUEN
-  if((this_player() != find_player("hate") &&
-      interactive(find_player("hate"))) &&
-     old_explode(object_name(this_object()), "#")[0] == HOME("knete"))
-  {
-#ifdef TUBMUD
-    if(check_privilege("hate")) set_privilege("hate");
-    else set_privilege(0);
-#else
-    printf("*ERROR: do not clone this file!\n"
-          +"        create a file with the following line in you home:\n"
-          +"inherit \""+HOME("knete")+"\";\n");
-    destruct(this_object());
-    return;
-#endif
-  }
-#endif
-#if (defined(TUBMUD) || defined(UNItopia))
-  item::create();
-#elif (defined(ADAMANT))
-  obj::create();
-#else
-  thing::create();
-#endif
-#ifdef ENGLISH
-  ID("dough");
-  ID("lisp");
-  SHORT("A piece of dough\n");
-  LONG("This piece of dough can be formed to your own convenience.\n");
-#else
-# ifdef UNItopia
-    set_name("Knete");
-# endif
-  ID("knete");
-  ID("lisp");
-  SHORT("Ein Stueck Knete");
-  LONG( 
-  "Dieses Stueck Knete kann man sehr schoen an seinen persoenlichen Geschmack\n"
- +"anpassen.\n");
- this_object()->SetProp("autoloadobj",1);
- this_object()->SetProp("autoload",1);
-#endif
-  lisp::create();
-}
-
-varargs nomask void init(int x)
-{
-  lisp::init(x);
-#if (defined(TUBMUD) || defined(UNItopia))
-# ifndef TUBMUD
-    item::init();
-# endif
-#elif (defined(ADAMANT))
-  obj::init();
-#else
-  thing::init();
-#endif
-  add_action("cmdline", "", 1);
-}
-
-#ifdef TAPPMUD
-query_auto_load() { return ({__FILE__}); }
-drop() { return 1; }
-#endif
-#if ((defined(TUBMUD)) || (defined(ADAMANT)))
-drop() { return 1; }
-#endif
-
-nomask string load(string file)
-{
-  if(previous_object() != this_object()) return "* Privilege violation\n";
-  return lisp(read_file(file));
-}
-
-nomask int cmdline(string str)
-{
-  int cost;
-  cost = get_eval_cost();
-  if(this_player() != this_interactive()) return 0;
-
-#ifndef MORGENGRAUEN
-# ifndef TUBMUD
-  if(this_player() && interactive(this_player()) &&
-     ((this_player() != find_player("hate")) ||
-      (this_player() != find_player("etah"))))
-# endif
-#else
-  if(this_player() && interactive(this_player()))
-#endif
-  {
-    mixed result;
-    if(!ISWIZARD(this_player())) return 0;
-#ifdef TAPPMUD
-    notify_fail(lambda(({}), ({#'lisp/*'*/, 
-				  query_verb()+(str?(" "+str):""), 1})));
-#else
-# ifdef MORGENGRAUEN
-    str = this_player()->_unparsed_args();
-# endif 
-    result = lisp(query_verb()+(str?(" "+str):""), 1);
-    if(result != -1 && cost >= 990000) {
-      if(stringp(result))
-        notify_fail(result);
-      else
-        if(result) notify_fail(sprintf("%O\n", result));
-	else return 1;
-      return 0;
-    }
-#endif
-  }
-}
diff --git a/obj/tools/lisp/knete.l b/obj/tools/lisp/knete.l
deleted file mode 100644
index d8d548e..0000000
--- a/obj/tools/lisp/knete.l
+++ /dev/null
@@ -1,11 +0,0 @@
-(write "Loading /w/marcus/knete.l: ")
-(set_alias "knete")
-(set_alias "xyz")
-(set_short "Ein Stueck Knete")
-(set_long "Du siehst hier ein Stueck Knete, das man wunderbar verformen, vergroessern oder verklumpen kann. Irgendwie denkst du bei seinem Anblick ploetzlich an sehr viele Klammern auf und zu ... ganz wie in den alten LISP Tagen\n")
-(define _waddr_line (lambda (ob) (sprintf "%-15s %3d %-16s %s" (call_other ob "query_vis_name") (call_other ob "query_level") (query_ip_number ob) (query_ip_name ob))))
-(write ".")
-(define _waddr (lambda () (write (implode (map (call_other (this_player) "sort_by_level" (users)) ([ (memory) '_waddr_line)) "\n")))) (write "_waddr.")
-(define reload (lambda () (, (map (explode (read_file "/w/marcus/.knete.l") "\n") 'lisp) "Done.\n"))) (write "reload.")
-(define pkill (lambda (x) (, (m_delete (call_other "/obj/static/proplog" "QUERY") x) (call_other "/obj/static/proplog" "SAVE") (m_delete (call_other "/obj/static/propmaster" "QUERY") x) (call_other "/obj/static/propmaster" "SAVE") "Deleted."))) (write "pkill.")
-(write ".\n")
diff --git a/obj/tools/lisp/lex.c b/obj/tools/lisp/lex.c
deleted file mode 100644
index a725c86..0000000
--- a/obj/tools/lisp/lex.c
+++ /dev/null
@@ -1,73 +0,0 @@
-// LEX.C -- creating tolkens from input string
-// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
-// --
-// Copy, change and distribute this bit of software as much as you like,
-// but keep the name of the original author in the header.
-
-#pragma strong_types
-
-#include "tweak.h"
-
-private inherit HOME("microcode");
-private inherit HOME("escape");
-
-private nosave mixed *tokens;
-
-static void create() 
-{ 
-  microcode::create();
-  tokens = ({});
-}
-
-nomask private mixed make_symbol(string str)
-{
-  mixed sym;
-
-  if(!stringp(str)) return str;
-  if(sym = get_function(str))				// FUNCTIONS
-    return sym;
-  if(str == "list")
-    return #'({;
-  if(str[0] == '"')
-    return implode(map(regexplode(str, "\\\\."), #'unescape), "");
-  if((str[0] >= '0' && str[0] <= '9') ||                // NUMBERS
-    ((str[0] == '+' || str[0] == '-') &&
-     (str[1] >= '0' && str[1] <= '9')))
-    if(member(str, '.') != -1)                          // FLOATS
-      return to_float(str);
-    else
-      return to_int(str);                               // INTEGERS
-
-  if(str == "(" || str == ")" || str == "'") 
-    return str;
-
-  return quote(str);            			// SYMBOLS
-}
-
-nomask private void get_tokens()
-{
-  mixed input, tmp;
-
-  do {
-    if(!input = get_line()) return 0;
-    // splitting the input line in string tokens and removing comments
-    tmp = regexp(regexplode(input,
-                               "(\"(\\\\.|[^\\\\\"])*\")|[;].*|[() \t']"),
-                    "^[^;]")
-           - ({""," ","\t"});
-    tokens += map(tmp, #'make_symbol);
-  }
-  while(!sizeof(tokens));
-}
-
-nomask static int lex(mixed token)
-{
-  if(!sizeof(tokens)) get_tokens();
-  if(sizeof(tokens))
-  {
-    token = tokens[0];
-    tokens[0..0] = ({});
-    return 1;
-  }
-  return 0;
-}
diff --git a/obj/tools/lisp/lisp.c b/obj/tools/lisp/lisp.c
deleted file mode 100644
index 89a0088..0000000
--- a/obj/tools/lisp/lisp.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// LISP.C -- Lisp2Closure compiler
-// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
-// --
-// Copy, change and distribute this bit of software as much as you like,
-// but keep the name of the original author in the header.
-
-#pragma strong_types
- 
-#include "tweak.h"
-
-private inherit HOME("parser");
-
-static varargs mixed lisp(string input, int interactive, int in)
-{
-  string msg, error;
-  add_input(input);					// put lines on stack
-  switch(parse(&msg, interactive))
-  { 
-  case  0: return msg;					// ok
-  case -1: clear_input(); return 0;			// empty list
-  case -2: initialize();				// exec error
-           clear_input();
-           return (in ? (printf(msg), 0): (interactive ? msg : -1));
-  case -3: if(interactive) 				// missing )
-           {
-             printf("%s? ", msg);
-             input_to("lisp", 0, 1, 1);
-             return -1;
-           }
-           else return (in ? (printf(msg), 0): (interactive ? msg : -1));
-  default: if(!msg) msg ="*Unknown error occured\n";	// unknown error
-           clear_input();
-           return (in ? (printf(msg), 0): 
-	                (interactive ? msg : -1));
-  }
-  return 0;
-}
-
-static void create()
-{
-  parser::create();
-  lisp(read_file(__FILE__[0..<3]+".l"));
-}
-
-static void init(int arg) { }
-
diff --git a/obj/tools/lisp/lisp.help b/obj/tools/lisp/lisp.help
deleted file mode 100644
index e4d1f3e..0000000
--- a/obj/tools/lisp/lisp.help
+++ /dev/null
@@ -1,81 +0,0 @@
-NAME:
-		*** KNETE ***
-
-BESCHREIBUNG:
-	Die Knete ist ein in LPC geschriebener Lisp-Interpreter. Dieser hat
-	die besondere Eigenschaft, die Lisp-Quellen direkt in den vom 
-	Amylaar GameDriver angebotenen closures zu uebersetzen. Dadurch ist
-	mit der Knete alles das moeglich, was auch mit LPC moeglich ist.
-	Es ist ein generisches, frei programmierbares Hilfsmittel.
-
-	Die Knete befindet sich unter: "/obj/tools/lisp"
-
-FUNKTIONSBESCHREIBUNG:
-	Die Knete kann im Prinzip fast alles, was ein einfacher Lisp-
-	Interpreter kann. Ausnahmen sind Tupel (Bsp: (1 . 2)), welche nicht
-	implementiert sind. Die Grundlegenden Funktionen, wie define, setq,
-	cons, cdr, car etc werden beim Laden der Knete angezeigt. Je nach
-	Zeit, werden eventuelle auch weitere Standardfunktionen hinzu-
-	kommen, um die Knete moeglichst common-lisp kompatibel zu machen.
-
-BENUTZUNG:
-	Zu allererst sollte man wissen, dass dies hier keine Einfuehrung in
-	Lisp ist oder sein soll! Die wichtigsten Merkmal der Knete werden
-	aufgefuehrt an einigen kleinen Beispielen. Wer Lisp kennenlernen
-	moechte kann dies mit den handelsueblichen Buechern tun.
-
-	Wer dennoch basteln moechte: Lisp ist eine Sprache in Prefixnotation,
-	d.h. der Funktionsname steht immer als erstes und dann kommen die
-	Argumente. Ein Ausdruck ist mit den ihn umgebenden Klammern komplett.
-	  Beispiel: (+ 1 1) ;;; errechnet die Summe aus 1 und 1
-	Solche Klammerausdruecke koennen beliebig geschachtelt werden.
-	  Beispiel: (+ 1 (+ (+ 1 1) 1))
-
-	Es stehen alle efuns, sowie einige lfuns zur Verfuegung! Zu den efuns
-	gehoeren auch +,-,*,/,%,!,[,[<,[<.. etc, also alle Operatoren von LPC.
-
-	Die Knete hat zwei Modi:
-		a) Laden von Lisp aus einer Datei
-		b) Verarbeiten von Eingaben aus der Kommandozeile
-
-	Zu a)
-	  Mit der Funktion "load" koennen Dateien eingelesen und interpretiert
-	  werden. Die Funktion hat nur ein Argument, und das ist der Dateiname.
-
-	  Beispiel: (load "/players/hate/lisp.l")
-	
-	Zu b)
-	  Wenn die Knete gecloned wurde, koennen jederzeit Lispausdruecke
-	  eingegeben werden, welche dann interpretiert werden. Dabei sollte
-	  beachtet werden, dass die aeusserste Klammer nicht notwendig ist!
-
-	  Beispiel: (+ 1 (+ 1 1)) koennte man auch schreiben als:
-	            + 1 (+ 1 1)
-
-	  Dies ist vor allem dann interessant, wenn man die Moeglichkeiten
-	  der Knete als alias-Werkzeug in betracht zieht. Somit ist es
-	  moeglich, eine Funktion zu schreiben und diese dann wie ein alias
-	  zu benutzen.
-
-	  Beispiel: (defun who () (users)) ;;; gibt das users array aus
-	             Jetzt muss nur noch who eingegeben werden und das
-		     array wird ausgegeben.
-
-	  Da Lisp wesentlich komplexere Ausdruecke ermoeglicht, als der
-	  normale alias-Interpreter, liegen die Vorteile auf der Hand.
-
-KONFIGURATION:
-	Die Knete laesst sich fuer jeden Nutzer konfigurieren, indem sie eine
-	Datei "/players/<name>/lisp.l" aus dessen Heimatverzeichnis laedt.
-
-	Ein Beispiel, was man damit machen kann befindet sich unter:
-	  "/players/hate/lisp.l"
-	Die MUD Spezifischen Teile und Abfragen koennen ignoeriert werden.
-
-BUGS:
-	Es gibt momentan noch ein Problem, wenn auf der Kommandozeile
-	Klammern fehlen. Dann kommt eine Meldung: "*Missing 2 )"
-	In diesem Fall einfach zweimal hintereinander ) auf jeweils einer
-	einzelnen Zeile eingeben! Dieses Problem tritt vor allem dann auf,
-	wenn man zum Beispiel ein :( eingibt.
-
diff --git a/obj/tools/lisp/lisp.l b/obj/tools/lisp/lisp.l
deleted file mode 100644
index acd386f..0000000
--- a/obj/tools/lisp/lisp.l
+++ /dev/null
@@ -1,99 +0,0 @@
-(write "LPC closure parser ready...\n")
-(write "LLisp Version 0.6 [")
-;;;
-;;; automagic quoting of hardcoded functions:
-;;; each function has 2 entries in 'memory'
-;;; 0 -- the function name or equivalent
-;;; 1 -- bits regarding autoquoting
-;;;      each argument for the function has two bits 
-;;;      0 -- normal quoting
-;;;      1 -- program code quoting (lamda requires it)
-;;;      only bit 0 or bit 1 must be set, never both (no quoting at all)
-;;; lambda needs normal quote for the first argument and special quote for 2nd
-;;; 1 0 0 1
-;;; |1| |2| -> 9 (if i have calculated it right)
-;;;
-;;; the function lambda has autoquote, @ is a non-autoquote version
-(= ([ (memory) '@) lambda)
-(= ([ (memory) lambda 1) 9) 
-;;;
-;;; explicit quote of a symbol with quote
-(= ([ (memory) quote 1) 1) 
-;;;
-;;; one of the most important functions needed (microcoded):
-;;; now we define a set
-(= ([ (memory) 'set) (lambda (n v) (, (= ([ (memory) n) v) n))) 
-;;; and a autoquote version of set (setq)
-(set 'setq set) (= ([ (memory) 'setq 1) 1)
-;;;
-;;; some people prefer define, it quotomatically quotes its first argument
-(setq define (lambda (n v f) (, (= ([ (memory) n 1) f) (set n v) n)))
-(= ([ (memory) 'define 1) 1)
-;;;
-;;; defun for easier definition of functions
-(define defun (lambda (n a b f) (, (= ([ (memory) n 1) f) 
-                                   (set n (@ a b)) n)) 37)
-;;;
-;;; if we like to destroy a value use undef
-(defun undef (fun) (, (= memory (m_delete (memory) fun)) fun) 1)
-;;;
-;;; an error function (internal use), notify declares the function to use
-;;; when an error message has to be printed
-(setq error raise_error)
-;;;
-;;; other important functions and function aliases
-;;; standard lisp functionality (car, cdr, cons)
-(defun car (l) (? (pointerp l) 
-		  (? (sizeof l) ([ l 0) 
-		     (error "car: empty list\n")) 
-		  (error "car: not a list\n")))
-(defun cdr (l) (? (pointerp l) ([.. l 1) 
-		  (error "cdr: not a list\n")))
-(defun cons (_car _cdr) (+ (list _car) _cdr))
-;;;
-;;; some special functionality
-(defun addhistory (file) (write_file file (implode (history) "\n")))
-(defun savehistory (file) (, (rm file) (addhistory file)))
-(defun showhistory () (, (printf "%s\n" (implode (history) "\n"))
-			 "-- END OF HISTORY --"))
-;;;
-(defun showfunc () (m_indices (memory)))
-;;;
-;;; Try to autodetect mudtype
-;;;
-(set 'mudtype "")
-(defun add (var val) (+= ([ (memory) var) val))
-(add 'mudtype (? (symbol_function "getuid") "NATIVE" "COMPAT"))
-(add 'mudtype (? (function_exists "SetProp")
-                   (? (== (function_exists "Set") "/std/thing/properties") "|MG"
-                    "|NF")
-                 (&& (== (file_size "/basic") -2) 
-		     (== (file_size "/complex") -2))
-                   (? (== (file_size "/kernel") -2) "|TUBNEW" "|TUB")
-                 (== (function_exists "query_all_v_items") "/i/item/virtual")
-                   (? (function_exists "query_bodylocation_pic"
-		                       (, (call_other "/obj/player" "?")
-				          (find_object "/obj/player")))
-				       "|UNI/AVALON" "|UNI")
-	        (? (function_exists "RCSId" (find_object "/obj/simul_efun")))
-		 "|TAPP"
-                 "|UNKNOWN/2.4.5"
-               ))
-(setq mudtype (explode mudtype "|"))
-(defun mud? (str) (sizeof (regexp ([ (memory) 'mudtype) str)))
-(printf "%s,%s" ([ ([ (memory) 'mudtype) 0) ([ ([ (memory) 'mudtype) 1))
-(write "]\n")
-;;; 
-;;; load local user init
-;;;
-(? (mud? "NF|MG")
-   (setq owner (getuid (this_player)))
-   (setq owner (call_other (this_player) "query_real_name")))
-(? (mud? "MG|NF|TUB")
-   (define localinit (+ (+ "/players/" owner) "/lisp.l"))
-   (define localinit (+ (+ "/w/" owner) "/lisp.l")))
-(? (> (file_size localinit) 0)
-   (? (mud? "TUB|UNI|UNKNOWN") 
-      (call_out load 0 localinit)
-      (load localinit)))
-(printf "Welcome %s, today is %s!\n" (capitalize owner) (ctime (time)))
diff --git a/obj/tools/lisp/microcode.c b/obj/tools/lisp/microcode.c
deleted file mode 100644
index 7fadd46..0000000
--- a/obj/tools/lisp/microcode.c
+++ /dev/null
@@ -1,129 +0,0 @@
-// MICROCODE.C -- lisp microcode
-// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
-// --
-// Copy, change and distribute this bit of software as much as you like,
-// but keep the name of the original author in the header.
-
-#pragma strong_types
- 
-#include "tweak.h"
-#include "types.h"
-
-private nosave mapping memory;	// contains function information
-private nosave string *G_input;	// global input stack
-private nosave string *history;	// input history
-
-nomask static public string output(mixed res);
-
-#define CODE	0
-#define QUOTE	1
-
-static void create()
-{
-  memory = m_allocate(0, 2);
-  G_input = ({});
-}
-
-nomask static closure get_function(string str)
-{
-  closure sym;
-  if((sym = symbol_function(str, this_object())) ||     // FUNCTIONS
-     (sym = symbol_function(str)) ||
-     (sym = symbol_variable(str)))
-    return sym;
-#if defined(symbol_variable)
-  if(str == "memory") return #'memory;
-#endif
-  return 0;
-}
-
-// pre_parse() -- parse code before examination by a code generator
-nomask static public int pre_parse(mixed code)
-{
-  if(pointerp(code) && sizeof(code) &&
-     (closurep(code[0]) || symbolp(code[0])))
-  {
-    mixed idx, tmp;
-    if(sizeof(tmp = old_explode(sprintf("%O", code[0]), "->")) > 1)
-      idx = tmp[1];
-    else idx = code[0];
-    // warning only the setting of bit 0 or 1 is allowed, not 0 and 1
-    // thus 01 leads to normal quote, 10 for special, 11 not quote at all
-    return (memory[idx, QUOTE] & (3<<2*(sizeof(code)-1)))>>2*(sizeof(code)-1);
-  }
-}
-
-// prog_parse() -- examine a token and take actions
-//
-nomask varargs static public mixed prog_parse(mixed token, int func)
-{
-  if(symbolp(token))
-      if(!member(memory, token))
-        token = ({#'?, ({#'member, ({#'memory}), quote(token)}),
-                     ({#'[, ({#'memory}), quote(token)}),
-                     ({#'raise_error,
-		       sprintf("Symbol %O' not bound\n", token) }) });
-      else token = func ? token : memory[token];
-  return token;
-}
-
-// evaluate compiled code
-nomask static public mixed eval(mixed code)
-{
-  mapping sym;
-  sym = filter_indices(memory, #'symbolp);
-  return apply(lambda(m_indices(sym), code), m_values(sym));
-}
-
-// add new lines to input stack
-nomask static public void add_input(string input) 
-{ 
-  if(!stringp(input)) return;
-  G_input += old_explode(input, "\n"); 
-}
-
-// clear the input stack
-nomask static public void clear_input()
-{
-  G_input = ({});
-}
-
-// get a line from input stack
-// and save it into the history
-nomask varargs string get_line()
-{
-  if(sizeof(G_input))
-  {
-    if(!pointerp(history)) history = ({});
-    history += ({ G_input[0] });
-    G_input[0..0] = ({});
-    return history[<1];
-  }
-  return 0;  
-}
-
-// transform() -- transforms some of the output strings
-nomask private string transform(string e)
-{
-  switch(e)
-  {
-  case "({": return "(";
-  case "})": return ")";
-  case "([": return "[";
-  case "])": return "]";
-  }
-  if(strstr(e, " /* sizeof() == ") != -1) return "";
-  if(strstr(e, "\n") != -1) if(e[0] == ',') return " "; else return "";
-  return e;
-}
-
-// output() -- prints given data in a clean way
-nomask static public string output(mixed res)
-{
-  res = regexplode(sprintf("%O", res),
-                   "\n[ ]*|[,]\n[ ]*|[(][{\[]|[\]}][)]|[#][']|"
-                  +" [/][*] sizeof[(][)] == [0-9][0-9]* [*][/]")
-      - ({"\n", ",\n", "#'"});
-  res = map(res, #'transform);
-  return sprintf("%s\n", implode(res, ""));
-}
diff --git a/obj/tools/lisp/parser.c b/obj/tools/lisp/parser.c
deleted file mode 100644
index dc47d65..0000000
--- a/obj/tools/lisp/parser.c
+++ /dev/null
@@ -1,109 +0,0 @@
-// PARSER.C -- parser for parenthesis expressions
-// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
-// --
-// Copy, change and distribute this bit of software as much as you like,
-// but keep the name of the original author in the header.
-
-#pragma strong_types
-
-#include "tweak.h" 
-
-private inherit HOME("lex");
-
-#include "stack.h"
-#include "types.h"
-
-private nosave mixed code;
-private nosave mixed stack;
-private nosave int quot, assume;
-
-nomask static void initialize()
-{
-  INITSTACK(stack);
-  code = ({});
-  quot = 0;
-}
-
-static void create()
-{
-  lex::create();
-  initialize();
-}
-
-nomask private mixed CodeGen(mixed token)
-{
-  switch(pre_parse(&code)) 
-  {
-  case 1: PUSH(stack, "'");          // standard autoquote
-	  quot++;
-	  break;
-  case 2: PUSH(stack, "'CODE");          // special QUOTE for code generation
-          break;	
-  }
-  if(stringp(token))
-    switch(token)
-    {
-      case "'": PUSH(stack, token); quot++; return;
-      case "(": PUSH(stack, code); code = ({}); break;
-      case ")":
-      {
-        mixed tmp;
-	if(SP(stack) && pointerp(TOP(stack))) POP(stack, tmp);
-        else tmp = ({});
-        if(SP(stack) && TOP(stack) == "'")
-	  /* do nothing */ ;
-        else
-          if(sizeof(code))
-	  {
-	    code[0] = prog_parse(code[0]);
-	    if(CL_LAMBDA(code[0]) || symbolp(code[0]) || pointerp(code[0]))
-	      code = ({#'funcall}) + code;
-	  }
-        code = tmp + ({ code });
-        break;
-      }
-      default : code += ({ token[1..<2] }); break;
-    }
-  else
-    code += ({ quot ? token : prog_parse(token, !sizeof(code)) });
-
-  while(SP(stack) && (TOP(stack) == "'"  || TOP(stack) == "'CODE") && 
-        sizeof(code)) 
-  { 
-    int q;
-    if(stringp(code[<1]) || symbolp(code[<1]) || pointerp(code[<1]) || 
-       get_type_info(code[<1])[0] == 10) // quoted array
-        code[<1] = quote(code[<1]); 
-    POPX(stack); 
-  }
-}
-
-// parse() -- non-threaded parsing (continue on input)
-nomask static int parse(mixed msg, int interactive)
-{
-  mixed token, res;
-  int lexing, missing_par;
-  do {
-    if(lexing = lex(&token))	
-    {					// try to assume outer "("
-      if(!SP(stack) && token != "(") { CodeGen("("); assume = 1; }
-      CodeGen(token);
-    }
-    else 				// add ")" if "(" is assumed
-      if(sizeof(stack) == 1 && assume) { CodeGen(")"); assume = 0; lexing = 1; }
-    if(lexing && !SP(stack))		// complete expression found
-    {
-      mixed exec_code; exec_code = code; initialize();
-      if(sizeof(exec_code) && pointerp(exec_code[0])) 
-        exec_code = ({#',}) + exec_code;// more than one expr on one line
-      if(msg = catch(res = eval(exec_code))) 
-        return -2;			// execution error
-      if(interactive) printf(output(res));
-      else msg = res;
-    }
-  }
-  while(lexing);
-  if(missing_par = SP(stack)) 
-    return (msg = sprintf("*Missing %d )\n", missing_par), -3); 
-  return 0;
-}
diff --git a/obj/tools/lisp/stack.h b/obj/tools/lisp/stack.h
deleted file mode 100644
index f0578f4..0000000
--- a/obj/tools/lisp/stack.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// STACK.H -- stack macros
-
-#define INITSTACK(s)	(s = ({}))
-#define PUSH(s,x)	(s += ({ (x) }))
-#define POP(s,x)	(x = s[<1], s = s[0..<2])
-#define POPX(s)		(s = s[0..<2])
-#define TOP(s)		((s)[<1])
-#define SP(s)		(sizeof(s))
diff --git a/obj/tools/lisp/tweak.h b/obj/tools/lisp/tweak.h
deleted file mode 100644
index 8518b60..0000000
--- a/obj/tools/lisp/tweak.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// TWEAK.H -- system dependend macros
-
-#define MORGENGRAUEN
-
-#if (defined(AVALON) || defined(FinalFrontier))
-#  define UNItopia
-#endif
-
-// The home directory of the lisp compilers files
-#if (defined(TAPPMUD) || defined(UNItopia))
-#  define HOME(file)	"/w/hate/lisp/"+file
-#elif (defined(ADAMANT))
-#  define HOME(file)	"/wiz/hate/lisp/"+file
-#else
-# ifdef MORGENGRAUEN
-#   define HOME(file)	"/obj/tools/lisp/"+file
-# else
-#   define HOME(file)	"/players/hate/lisp/"+file
-# endif
-#endif
-
-// symbol_variable() is not available on drivers below 3.2.1@1
-//#define symbol_variable(str)	0
-
-// DEBUG mode
-#ifdef MORGENGRAUEN
-#  define USER "etah"
-#else
-#  define USER "hate"
-#endif
-#define DEBUG(x)	if(find_player(USER)) \
-                          tell_object(find_player(USER), \
-                                      sprintf("[%O] %O\n", this_object(), (x)))
-
diff --git a/obj/tools/lisp/types.h b/obj/tools/lisp/types.h
deleted file mode 100644
index baef5eb..0000000
--- a/obj/tools/lisp/types.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#define CL_LAMBDA(x)  (get_type_info(x)[0]==8 && get_type_info(x)[1]==5)
-#define CL_LFUN(x)    (get_type_info(x)[0]==8 && get_type_info(x)[1]==0)
-#define CL_EFUN(x)    (get_type_info(x)[0]==8 && get_type_info(x)[1]< 0)
-#define CL_VAR(x)     (get_type_info(x)[0]==8 && get_type_info(x)[1]==1)