diff --git a/log/include/log_action.h b/log/include/log_action.h
index d81b99cdf52a9a039527bb15b7e074b44cc40552..436c8166ce8a44a61981f88097176d5e3b24018f 100644
--- a/log/include/log_action.h
+++ b/log/include/log_action.h
@@ -355,8 +355,6 @@ typedef struct log_action_t
 	log_vwrec *probevwire;
 	long actx2;
 	long acty2;
-	na_quadword actq1;
-	na_quadword actq2;
 	char genfunc [17];
 } log_action_t;
 
diff --git a/log/include/logsimh.h b/log/include/logsimh.h
index cef3900f2554689950bb15b125af7cea2b1729f2..17024c1f555913485165731757db45fa1db97eba 100644
--- a/log/include/logsimh.h
+++ b/log/include/logsimh.h
@@ -9,7 +9,6 @@
 #include <p2c/newasm.h>
 #include <p2c/newci.h>
 #include <p2c/mylib.h>
-#include <p2c/citinfomod.h>
 
 extern void Log_16_inst (log_16_action *act);
 extern void Log_dig_inst (log_16_action *act);
diff --git a/log/src/log.c b/log/src/log.c
index c1bb38f032b44485f5ad631fc5bbfa7c9449ded8..ea56dfbacdb3f90c7201ca1940fac2e8f13739b3 100644
--- a/log/src/log.c
+++ b/log/src/log.c
@@ -51,7 +51,6 @@
 #include "help.h"
 #include <p2c/newci.h>
 #include <p2c/filepack.h>
-#include <p2c/citinfomod.h>
 #include <p2c/iodecl.h>
 #include <p2c/mylib.h>
 #include "logfont.h"
@@ -1345,7 +1344,6 @@ void tracemessage(char *msg)
 			do
 			{
 				sprintf(tracefname, "/tmp/%.10s%03ld",
-						/* P_citinfo->username, P_rand(&gg.rndseed, 1000L)); */
 					cuserid(NULL), P_rand(&gg.rndseed, 1000L));
 
 			} while (access(tracefname, F_OK) == 0);
diff --git a/log/src/logcom.c b/log/src/logcom.c
index 886453150bb329a560c703c2e8dd660bb7f32639..a99bb4e628b749d0e0b8fbfce9dabbcfdd8b2e88 100644
--- a/log/src/logcom.c
+++ b/log/src/logcom.c
@@ -41,7 +41,6 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 #include <p2c/misc.h>
 #include <p2c/newci.h>
 #include <p2c/filepack.h>
-#include <p2c/citinfomod.h>
 #include <p2c/iodecl.h>
 #include <p2c/mylib.h>
 #include "logfont.h"
diff --git a/psys/include/p2c/citinfomod.h b/psys/include/p2c/citinfomod.h
deleted file mode 100644
index ceeed4a381c15f7d88cb3e3fc5238baa21e4707b..0000000000000000000000000000000000000000
--- a/psys/include/p2c/citinfomod.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef CITINFOMOD_H
-#define CITINFOMOD_H
-
-#include <p2c/sysglobals.h>
-
-
-#ifdef CITINFOMOD_G
-# define vextern
-#else
-# define vextern extern
-#endif
-
-
-#define P_citStandAlone 0
-#define P_citCS10Land   1
-#define P_citCES        2
-#define P_citWatson     3
-
-
-typedef struct P_citinforec {
-    char username[31];
-    char homepath[fidleng + 1];
-    datetimerec loginat;
-    short node, userid, groupid;
-    char machine[20];
-    int novice;
-} P_citinforec;
-
-
-vextern P_citinforec *P_citinfo;
-vextern _PROCEDURE P_changeCitInfoHook;
-vextern long P_citSystem;
-
-#undef vextern
-
-#endif /*CITINFOMOD_H*/
-
-/* End. */
-
diff --git a/psys/include/p2c/newasm.h b/psys/include/p2c/newasm.h
index a3c3344eb14908002b459624dee1e6988127496d..9248edd43a18c75ddab5cb5569ce7303a46d8f22 100644
--- a/psys/include/p2c/newasm.h
+++ b/psys/include/p2c/newasm.h
@@ -1,177 +1,27 @@
 #ifndef NEWASM_H
 #define NEWASM_H
 
-/*32 bits*/
-
-typedef union na_word {
-  short i;
-  unsigned short u;
-  struct {
-    char c1, c2;
-  } U7;
-  struct {
-    uchar ub1, ub2;
-  } U8;
-  struct {
-    char sb1, sb2;
-  } U9;
-  unsigned short b4;
-  unsigned short b2;
-  unsigned short b;
-  char str[2];
-} na_word;
-
 typedef void* na_long;
 
-typedef union na_quadword {
-  struct {
-    long i1, i2;
-  } U1;
-  short si[4];
-  unsigned short su[4];
-  char c[8];
-  uchar ub[8];
-  short sb[4];
-  uchar b4[8];
-  uchar b2[8];
-  uchar b[8];
-  struct {
-    void* sr1;
-	void* sr2;
-  } U13;
-  double r;
-  char str[8];
-  struct {
-    char *sp1;
-	char *sp2;
-  } U16;
-  struct {
-    void* p1;
-	void* p2;
-  } U17;
-  struct {
-    double *rp1, *rp2;
-  } U18;
-  struct {
-    na_word *wp1, *wp2;
-  } U19;
-  struct {
-    na_long *lp1, *lp2;
-  } U20;
-  struct {
-    union na_quadword *qp1, *qp2;
-  } U21;
-  struct {
-    struct na_strlist_t *sl1, *sl2;
-  } U22;
-  struct {
-    char *cap1, *cap2;
-  } U23;
-  struct {
-    na_word *wap1, *wap2;
-  } U24;
-  struct {
-    na_long *lap1, *lap2;
-  } U25;
-  struct {
-    union na_quadword *qap1, *qap2;
-  } U26;
-  _PROCEDURE pr;
-  struct {
-    unsigned rsign : 1, rexp : 11, rmant1 : 20;
-    long rmant2;
-  } U28;
-  na_word w[4];
-  struct {
-    na_long l1, l2;
-  } U99;
-} na_quadword;
-
-extern void na_fillword (long *d, long w, long n);
-extern void na_fill (long *d, long w, long n);
 extern void na_exch (long *s, long *d, long size);
-extern long na_scaneq (long *s, long what, long size);
 
-extern void na_alloc (void* *p, long s);
-extern void na_outeralloc (void* *p, long s, long parframe);
-extern void na_free (void* *p);
-
-extern int na_test (long n, long x);
-extern void na_set (long n, long *x);
-extern void na_clear (long n, long *x);
 extern long na_log2 (long n);
 extern long na_po2 (long n);
-extern long na_lobits (long n);
-extern long na_hibits (long n);
-extern long na_asl (long n, long x);
-extern long na_lsl (long n, long x);
 
-extern long na_rol (long n, long x);
-extern void na_bfclr (long *v, long offset, long size);
-extern void na_bfset (long *v, long offset, long size);
-extern void na_bfchg (long *v, long offset, long size);
-extern int na_bftst (long *v, long offset, long size);
-extern void na_bffill (long *v, long offset, long size, int b);
-extern void na_bfmove (long *s, long soff, long *d, long doff, long size);
-extern void na_bfrev (long *v, long offset, long size);
-extern void na_bfins (long *v, long offset, long size, long val);
 extern long na_bfextu (long *v, long offset, long size);
-extern long na_bfexts (long *v, long offset, long size);
-extern long na_bfffo (long *v, long offset, long size);
-extern long na_bfffz (long *v, long offset, long size);
 
 extern long na_bfcount (long *v, long offset, long size);
 extern long na_setcard (long *s);
-extern long na_setlast (long *s);
-extern long na_setnext (long *s, long offset);
-
-extern long na_setnextnot (long *s, long offset);
-extern long P_imax (long a, long b);
-extern long P_imin (long a, long b);
-extern long P_isgn (long a);
-extern double P_rmax (double a, double b);
-extern double P_rmin (double a, double b);
 
-extern long P_rsgn (double a);
 extern long P_imax2 (long a, long b);
 extern long P_imin2 (long a, long b);
-extern long P_imax3 (long a, long b, long c);
-extern long P_imin3 (long a, long b, long c);
-extern long P_imax4 (long a, long b, long c, long d);
-extern long P_imin4 (long a, long b, long c, long d);
 extern void P_iswap2 (long *a, long *b);
-extern void P_isort2 (long *a, long *b);
-extern void P_isort3 (long *a, long *b, long *c);
-extern void P_isort4 (long *a, long *b, long *c, long *d);
 extern long P_ibound (long min, long i, long max);
 extern int P_ibetween (long min, long i, long max);
 extern int P_ibetweenm (long min, long i, long max, long margin);
-extern void P_iamin (long *min, long i);
-extern void P_iamax (long *max, long i);
-
-extern void P_iaminmax (long *min, long *max, long i);
-extern long P_isqrt (long n);
-
-extern long P_ipow (long y, long x);
-extern void na_addc (long *a, long b, int *c);
-extern void na_subc (long *a, long b, int *c);
-extern long na_smul (long a, long b);
-extern long na_umul (long a, long b);
-extern na_quadword na_smul64 (long a, long b);
-extern na_quadword na_umul64 (long a, long b);
 
 extern void* na_rtosr (double r);
-
 extern double na_srtor (void* sr);
-extern double na_stor (long s);
-extern long na_rtos (double r);
-
-extern void na_qsort (na_long *a, long n, _PROCEDURE comp);
-
-extern void na_bfand (long *s, long soff, long *d, long doff, long size);
-extern void na_bfbic (long *s, long soff, long *d, long doff, long size);
-extern void na_bfor (long *s, long soff, long *d, long doff, long size);
-extern void na_bfxor (long *s, long soff, long *d, long doff, long size);
 
 #endif /*NEWASM_H*/
 
diff --git a/psys/src/Makefile b/psys/src/Makefile
index 095488b64d10dcf45da8a3e249e89d9fd0369770..870a91c82994391699553c973153c381edba4158 100644
--- a/psys/src/Makefile
+++ b/psys/src/Makefile
@@ -104,7 +104,6 @@ OBJS = sysdevs.o \
        rnd.o \
        regex.o \
        p2clib.o \
-       loc.p2clib.o
 
 LIBSTUFF = texstuff.ps untilstuff.ps plot.font
 
@@ -160,7 +159,7 @@ OPTIONS = -Wall -Wextra
 
 CFLAGS = $(CHIPMUNKFLAGS) $(OPTIONS) $(FONTS) -I$(LOCINC) -I$(XINCLUDEDIR) -DCHIPLIB="\"`$(CD) $(LIBDIR); pwd`\""
 
-P2CFLAGS = -DLOCAL_INIT=_local_p2c_init
+P2CFLAGS =
 
 
 ##
@@ -247,7 +246,6 @@ psyssrc:
 	cp asm.c psys/src
 	cp filepack.c psys/src
 	cp iodecl.c psys/src
-	cp loc.p2clib.c psys/src
 	cp mamplot.c psys/src
 	cp misc.c psys/src
 	cp mylib.c psys/src
diff --git a/psys/src/loc.p2clib.c b/psys/src/loc.p2clib.c
deleted file mode 100644
index 36d76ba27f3d500e245b16b40ed9db25eb457839..0000000000000000000000000000000000000000
--- a/psys/src/loc.p2clib.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* "p2c"  Copyright 1989  Dave Gillespie */
-
-
-/* Library for use with p2c, the Pascal to C translator */
-/* CIT-local portion */
-
-
-
-#include <p2c/p2c.h>
-
-#include <p2c/citinfomod.h>
-
-
-
-P_citinforec *P_citinfo;
-long P_citSystem;
-static P_citinforec citinfo;
-
-
-void _local_p2c_init()
-{
-    char *getlogin();
-    P_citinfo = &citinfo;
-    cuserid(P_citinfo->username);
-
-    strcpy(P_citinfo->homepath, getenv("HOME"));
-
-    /* should initialize loginat somehow */
-    P_citinfo->node = 0;
-    P_citinfo->userid = getuid();
-    P_citinfo->groupid = getgid();
-    *P_citinfo->machine = 0;
-    P_citinfo->novice = 0;
-}
-
-/* End. */
diff --git a/psys/src/newasmlib.c b/psys/src/newasmlib.c
index 05addee0540c74eca84fa9d5ee1efeaba6349a1a..727502c730bf2c15d27b0acc0ea5bdf790241eba 100644
--- a/psys/src/newasmlib.c
+++ b/psys/src/newasmlib.c
@@ -27,58 +27,6 @@
 #endif
 #define VASR_L(v,n)   ((v) = ASR_L(v,n))
 
-
-/* Fill a block of memory with a repeating 4-byte pattern */
-
-void na_fill(long *d, long w, long n)
-{
-    if (n <= 0)
-        return;
-    if (w == 0 || w == -1) {
-        memset(d, (int)w, (size_t)n);
-        return;
-    }
-    if ((long)d & 1) {
-        VROL_L(w, 8);
-        *((uchar *)d) = w;
-        d = (long *)(1 + (long)d);    /* yuck! */
-        if (--n <= 0)
-            return;
-    }
-    if (n == 1) {
-        *((uchar *)d) = (w >> 24);
-        return;
-    }
-    if ((long)d & 2) {
-        VROL_L(w, 16);
-        *((short *)d) = w;
-        d = (long *)(2 + (long)d);
-        n -= 2;
-        if (n <= 0)
-            return;
-    }
-    n -= 4;
-    while (n >= 0) {
-        *d++ = w;
-        n -= 4;
-    }
-    if (n >= -2) {
-        VROL_L(w, 16);
-        *((short *)d) = w;
-        d = (long *)(2 + (long)d);
-        n -= 2;
-    }
-    if (n >= -3)
-        *((uchar *)d) = (w >> 24);
-}
-
-
-/* Fill a block of memory with a word pattern */
-void na_fillword(long *d, long w, long n)
-{
-    na_fill(d, ((unsigned short)w) | (w << 16), n * 2);
-}
-
 /* Exchange two blocks of memory */
 void na_exch(long *s, long *d, long size)
 {
@@ -125,78 +73,6 @@ void na_exch(long *s, long *d, long size)
 }
 
 
-/* Scan for a byte equal to the target */
-long na_scaneq(long *s, long what, long size)
-{
-    register uchar *cp = (uchar *)s;
-    register uchar ch = what;
-
-    while (--size >= 0) {
-        if (*cp++ == ch) {
-            return cp - (uchar *)s - 1;
-        }
-    }
-    return cp - (uchar *)s;
-}
-
-
-/* Scan for a byte unequal to the target */
-long na_scanne(long *s, long what, long size)
-{
-    register uchar *cp = (uchar *)s;
-    register uchar ch = what;
-
-    while (--size >= 0) {
-        if (*cp++ != ch) {
-            return cp - (uchar *)s - 1;
-        }
-    }
-    return cp - (uchar *)s;
-}
-
-
-/* Stack-based allocation; approximate with malloc */
-void na_alloc(void **p, long s)
-{
-    *p = malloc(s);
-}
-
-void na_outeralloc(void **p, long s, long parframe)
-{
-    *p = malloc(s);
-}
-
-void na_free(void **p)
-{
-    free(*p);
-    *p = NULL;
-}
-
-/* Bit operations */
-int na_test(long n, long x)
-{
-    if ((unsigned long)n > 31)
-        return 0;
-    return ((x & (1<<n)) != 0);
-}
-
-
-void na_set(long n, long *x)
-{
-    if ((unsigned long)n > 31)
-        return;
-    *x |= (1<<n);
-}
-
-
-void na_clear(long n, long *x)
-{
-    if ((unsigned long)n > 31)
-        return;
-    *x &= ~(1<<n);
-}
-
-
 long na_po2(long n)
 {
     if ((unsigned long)n > 31)
@@ -215,64 +91,6 @@ long na_log2(long n)
     return v;
 }
 
-
-long na_lobits(long n)
-{
-    if (n <= 0)
-        return 0;
-    if (n >= 32)
-        return -1;
-    return (1<<n) - 1;
-}
-
-
-long na_hibits(long n)
-{
-    if (n <= 0)
-        return 0;
-    if (n >= 32)
-        return -1;
-    return ~(((unsigned long)-1) >> n);
-}
-
-
-long na_asl(long n, long x)
-{
-    if (n > 0) {
-        if (n > 31)
-            return 0;
-        return x << n;
-    } else if (n < 0) {
-        if (n < -31)
-            return 0;
-        VASR_L(x, -n);
-        return x;
-    }
-    return x;
-}
-
-
-long na_lsl(long n, long x)
-{
-    if (n > 0) {
-        if (n > 31)
-            return 0;
-        return x << n;
-    } else if (n < 0) {
-        if (n < -31)
-            return 0;
-        return (unsigned long)x >> (-n);
-    }
-    return x;
-}
-
-
-long na_rol(long n, long x)
-{
-    return ROL_L(x, n & 31);
-}
-
-
 /* Bit fields */
 
 /* Bits are numbered with the MSB the longword at *v at zero. */
@@ -290,297 +108,6 @@ long na_rol(long n, long x)
 }
 
 
-/* Clear a bit-field to zeros */
-void na_bfclr(long *v, long offset, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(v, offset);
-    offset = 32 - offset;
-    if (size <= offset) {
-        *v &= ~(((1 << size) - 1) << (offset-size));
-        return;
-    }
-    *v++ &= (-1) << offset;
-    size -= offset;
-    while (size >= 32) {
-        *v++ = 0;
-        size -= 32;
-    }
-    if (size)
-        *v &= (1 << (32-size)) - 1;
-}
-
-
-/* Set a bit-field to ones */
-void na_bfset(long *v, long offset, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(v, offset);
-    offset = 32 - offset;
-    if (size <= offset) {
-        *v |= (((1 << size) - 1) << (offset-size));
-        return;
-    }
-    *v++ |= (1 << offset) - 1;
-    size -= offset;
-    while (size >= 32) {
-        *v++ = -1;
-        size -= 32;
-    }
-    if (size)
-        *v |= (-1) << (32-size);
-}
-
-
-/* Toggle the bits in a bit-field */
-void na_bfchg(long *v, long offset, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(v, offset);
-    offset = 32 - offset;
-    if (size <= offset) {
-        *v ^= (((1 << size) - 1) << (offset-size));
-        return;
-    }
-    *v++ ^= (1 << offset) - 1;
-    size -= offset;
-    while (size >= 32) {
-        *v++ ^= -1;
-        size -= 32;
-    }
-    if (size)
-        *v ^= (-1) << (32-size);
-}
-
-
-/* Test if a bit-field contains any ones */
-int na_bftst(long *v, long offset, long size)
-{
-    if (size <= 0) return 0;
-    BFCHECK(v, offset);
-    offset = 32 - offset;
-    if (size <= offset)
-        return (*v & (((1 << size) - 1) << (offset-size))) != 0;
-    if (*v++ & ((1 << offset) - 1))
-        return 1;
-    size -= offset;
-    while (size >= 32) {
-        if (*v++)
-            return 1;
-        size -= 32;
-    }
-    return (size && (*v & ((-1) << (32-size))));
-}
-
-
-/* Set or clear a bit-field according to a int value */
-void na_bffill(long *v, long offset, long size, int b)
-{
-    if (b)
-        na_bfset(v, offset, size);
-    else
-        na_bfclr(v, offset, size);
-}
-
-/* Move a bit-field into another bit-field */
-void na_bfmove(long *s, long soff, long *d, long doff, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(d, doff);
-    doff = 32 - doff;
-    if (size <= doff) {
-        doff -= size;
-        *d &= ~(((1 << size) - 1) << doff);
-        *d |= na_bfextu(s, soff, size) << doff;
-        return;
-    }
-    *d &= (-1) << doff;
-    *d++ |= na_bfextu(s, soff, doff);
-    soff += doff;
-    size -= doff;
-    while (size >= 32) {
-        *d++ = na_bfextu(s, soff, 32);
-        soff += 32;
-        size -= 32;
-    }
-    if (size) {
-        *d &= (1 << (32-size)) - 1;
-        *d |= na_bfextu(s, soff, size) << (32-size);
-    }
-}
-
-
-/* Bitwise AND two bit fields */
-void na_bfand(long *s, long soff, long *d, long doff, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(d, doff);
-    doff = 32 - doff;
-    if (size <= doff) {
-        doff -= size;
-        *d &= (~(((1 << size) - 1) << doff)) |
-              (na_bfextu(s, soff, size) << doff);
-        return;
-    }
-    *d++ &= ((-1) << doff) | na_bfextu(s, soff, doff);
-    soff += doff;
-    size -= doff;
-    while (size >= 32) {
-        *d++ &= na_bfextu(s, soff, 32);
-        soff += 32;
-        size -= 32;
-    }
-    if (size)
-        *d &= ((1 << (32-size)) - 1) |
-              (na_bfextu(s, soff, size) << (32-size));
-}
-
-
-/* Bitwise AND-NOT two bit fields */
-void na_bfbic(long *s, long soff, long *d, long doff, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(d, doff);
-    doff = 32 - doff;
-    if (size <= doff) {
-        doff -= size;
-        *d &= ~(na_bfextu(s, soff, size) << doff);
-        return;
-    }
-    *d++ &= ~na_bfextu(s, soff, doff);
-    soff += doff;
-    size -= doff;
-    while (size >= 32) {
-        *d++ &= ~na_bfextu(s, soff, 32);
-        soff += 32;
-        size -= 32;
-    }
-    if (size)
-        *d &= ~(na_bfextu(s, soff, size) << (32-size));
-}
-
-
-/* Bitwise OR two bit fields */
-void na_bfor(long *s, long soff, long *d, long doff, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(d, doff);
-    doff = 32 - doff;
-    if (size <= doff) {
-        doff -= size;
-        *d |= (na_bfextu(s, soff, size) << doff);
-        return;
-    }
-    *d++ |= na_bfextu(s, soff, doff);
-    soff += doff;
-    size -= doff;
-    while (size >= 32) {
-        *d++ |= na_bfextu(s, soff, 32);
-        soff += 32;
-        size -= 32;
-    }
-    if (size)
-        *d |= (na_bfextu(s, soff, size) << (32-size));
-}
-
-
-/* Bitwise XOR two bit fields */
-void na_bfxor(long *s, long soff, long *d, long doff, long size)
-{
-    if (size <= 0) return;
-    BFCHECK(d, doff);
-    doff = 32 - doff;
-    if (size <= doff) {
-        doff -= size;
-        *d ^= (na_bfextu(s, soff, size) << doff);
-        return;
-    }
-    *d++ ^= na_bfextu(s, soff, doff);
-    soff += doff;
-    size -= doff;
-    while (size >= 32) {
-        *d++ ^= na_bfextu(s, soff, 32);
-        soff += 32;
-        size -= 32;
-    }
-    if (size)
-        *d ^= (na_bfextu(s, soff, size) << (32-size));
-}
-
-
-/* Reverse a bit field LSB-for-MSB */
-void na_bfrev(long *v, long offset, long size)
-{
-    if (size <= 1) return;
-    if (size <= 32) {
-        register long val, val2 = 0;
-        val = na_bfextu(v, offset, size);
-        while (--size >= 0) {
-            val2 <<= 1;
-            val2 += (val & 1);
-            val >>= 1;
-        }
-        na_bfins(v, offset, size, val2);
-        return;
-    }
-    BFCHECK(v, offset);
-    {   register long *v2, mask1, mask2;
-        mask1 = 1 << (31-offset);
-        offset += size - 1;
-        v2 = v + ASR_L(offset, 5);
-        mask2 = 1 << ((~offset) & 31);
-        size >>= 1;
-        while (--size >= 0) {
-            if (*v & mask1) {
-                if (!(*v2 & mask2)) {
-                    *v ^= mask1;
-                    *v2 ^= mask2;
-                }
-            } else {
-                if (*v2 & mask2) {
-                    *v ^= mask1;
-                    *v2 ^= mask2;
-                }
-            }
-            if (mask1 == 1) {
-                mask1 = 0x80000000;
-                v++;
-            } else
-                mask1 >>= 1;
-            if (mask2 < 0) {
-                mask2 = 1;
-                v2--;
-            } else
-                mask2 <<= 1;
-        }
-    }
-}
-
-/* Insert a value (up to 32 bits) into a bit-field */
-void na_bfins(long *v, long offset, long size, long val)
-{
-    register long mask;
-
-    if (size <= 0) return;
-    BFCHECK(v, offset);
-    offset = 32 - offset;
-    if (size <= offset) {
-        offset -= size;
-        mask = (((1 << size) - 1) << offset);
-        *v &= ~mask;
-        *v |= (val << offset) & mask;
-        return;
-    }
-    mask = (1 << offset) - 1;
-    *v &= ~mask;
-    size -= offset;
-    *v++ |= ((unsigned long)val >> (size)) & mask;
-    mask = (-1) << (32-size);
-    *v &= ~mask;
-    *v |= val << (32-size);
-}
-
-
 /* Extract an unsigned value (up to 32 bits) from a bit-field */
 long na_bfextu(long *v, long offset, long size)
 {
@@ -597,91 +124,6 @@ long na_bfextu(long *v, long offset, long size)
     return val | ((unsigned long)(*v)) >> (32-size);
 }
 
-/* Extract a signed value (up to 32 bits) from a bit-field */
-long na_bfexts(long *v, long offset, long size)
-{
-    register long val;
-
-    if (size <= 0) return 0;
-    BFCHECK(v, offset);
-    if (size <= 32 - offset)
-        return ASR_L((*v) << offset, 32-size);
-    val = (*v++) << offset;
-    val = ASR_L(val, 32-size);
-    return val | ((unsigned long)(*v)) >> (64-size-offset);
-}
-
-
-/* Find first (left-most) 'one' bit in a bit-field */
-long na_bfffo(long *v, long offset, long size)
-{
-    register long val;
-
-    if (size <= 0) return offset;
-    while (size >= 32) {
-        val = na_bfextu(v, offset, 32);
-        if (val) {
-            if (val < 0x10000) {
-                offset += 16;
-                val <<= 16;
-            }
-            while (val >= 0) {
-                offset++;
-                val <<= 1;
-            }
-            return offset;
-        }
-        offset += 32;
-        size -= 32;
-    }
-    val = na_bfextu(v, offset, size);
-    if (val) {
-        val <<= 32-size;
-        while (val >= 0) {
-            offset++;
-            val <<= 1;
-        }
-        return offset;
-    }
-    return offset + size;
-}
-
-
-/* Find first (left-most) 'zero' bit in a bit-field */
-long na_bfffz(long *v, long offset, long size)
-{
-    register long val;
-
-    if (size <= 0) return offset;
-    while (size >= 32) {
-        val = na_bfextu(v, offset, 32);
-        if (~val) {
-            if ((unsigned long)val >= 0xffff0000) {
-                offset += 16;
-                val <<= 16;
-            }
-            while (val < 0) {
-                offset++;
-                val <<= 1;
-            }
-            return offset;
-        }
-        offset += 32;
-        size -= 32;
-    }
-    val = na_bfextu(v, offset, size);
-    if (~val) {
-        val <<= 32-size;
-        while (val < 0) {
-            offset++;
-            val <<= 1;
-        }
-        return offset;
-    }
-    return offset + size;
-}
-
-
 /* Count the number of 'one' bits in a bit-field */
 long na_bfcount(long *v, long offset, long size)
 {
@@ -717,71 +159,8 @@ long na_setcard(long *s)
     return na_bfcount(s+1, 0, *s << 5);
 }
 
-
-/* Highest ordinal value in set */
-long na_setlast(long *s)
-{
-    register long count, val;
-
-    if (!*s)
-        return -1;
-    count = *s - 1;
-    val = s[count];
-    while (!val) {    /* should not happen */
-        if (--count < 0)
-            return -1;
-        val = s[count];
-    }
-    count <<= 5;
-    while (val >= 0) {
-        count++;
-        val <<= 1;
-    }
-    return count;
-}
-
-
-/* Next value in set after a certain value */
-long na_setnext(long *s, long offset)
-{
-    long val;
-
-    if (offset < 0) offset = 0;
-    val = na_bfffo(s+1, offset, (*s << 5) - offset);
-    if (val < (*s << 5))
-        return val;
-    else
-        return -1;
-}
-
-
-/* Next value not in set after a certain value */
-long na_setnextnot(long *s, long offset)
-{
-    long val;
-
-    if (offset < 0) return offset;
-    val = na_bfffz(s+1, offset, (*s << 5) - offset);
-    if (val < (*s << 5))
-        return val;
-    else
-        return offset;
-}
-
-
 /* Miscellaneous functions */
-
-double P_rmin(double a, double b)
-{
-    if (a < b)
-        return a;
-    else
-        return b;
-}
-
-
-
-double P_rmax(double a, double b)
+long P_imax2(long a, long b)
 {
     if (a > b)
         return a;
@@ -789,28 +168,6 @@ double P_rmax(double a, double b)
         return b;
 }
 
-long P_rsgn(double a)
-{
-    if (a < 0)
-        return -1;
-    else if (a > 0)
-        return 1;
-    else
-        return 0;
-}
-
-
-long P_isgn(long a)
-{
-    if (a < 0)
-        return -1;
-    else if (a > 0)
-        return 1;
-    else
-        return 0;
-}
-
-
 long P_imin2(long a, long b)
 {
     if (a < b)
@@ -819,62 +176,6 @@ long P_imin2(long a, long b)
         return b;
 }
 
-long P_imax2(long a, long b)
-{
-    if (a > b)
-        return a;
-    else
-        return b;
-}
-
-
-long P_imin3(long a, long b, long c)
-{
-    if (a < b)
-        return (a < c) ? c : a;
-    else
-        return (b < c) ? c : b;
-}
-
-
-long P_imax3(long a, long b, long c)
-{
-    if (a > b)
-        return (a > c) ? c : a;
-    else
-        return (b > c) ? c : b;
-}
-
-long P_imin4(long a, long b, long c, long d)
-{
-    if (a < b)
-        if (a < c)
-            return (a < d) ? d : a;
-        else
-            return (c < d) ? d : c;
-    else
-        if (b < c)
-            return (b < d) ? d : b;
-        else
-            return (c < d) ? d : c;
-}
-
-
-long P_imax4(long a, long b, long c, long d)
-{
-    if (a > b)
-        if (a > c)
-            return (a > d) ? d : a;
-        else
-            return (c > d) ? d : c;
-    else
-        if (b > c)
-            return (b > d) ? d : b;
-        else
-            return (c > d) ? d : c;
-}
-
-
 void P_iswap2(long *a, long *b)
 {
     long t = *a;
@@ -882,68 +183,6 @@ void P_iswap2(long *a, long *b)
     *b = t;
 }
 
-
-void P_isort2(long *a, long *b)
-{
-    if (*a > *b) {
-		P_iswap2(a, b);
-    }
-}
-
-
-void P_isort3(long *a, long *b, long *c)
-{
-    register long t;
-
-    t = *a;
-    if (t < *b) {                   /* a < b */
-        if (*c < t) {               /* c < a < b */
-            *a = *c;
-            *c = *b;
-            *b = t;
-        } else if (*c < *b) {       /* a <= c < b */
-            t = *b;
-            *b = *c;
-            *c = t;
-        }
-    } else {                        /* b <= a */
-        if (*c < *b) {              /* c < b <= a */
-            *a = *c;
-            *c = t;
-        } else if (*c < t) {        /* b <= c < a */
-            *a = *b;
-            *b = *c;
-            *c = t;
-        } else {                    /* b <= a <= c */
-            *a = *b;
-            *b = t;
-        }
-    }
-}
-
-
-
-void P_isort4(long *a, long *b, long *c, long *d)
-{
-    register long t;
-
-    P_isort3(a, b, c);
-    t = *d;
-    if (t < *a) {               /* d < a <= b <= c */
-        *d = *c;
-        *c = *b;
-        *b = *a;
-        *a = t;
-    } else if (t < *b) {        /* a <= d < b <= c */
-        *d = *c;
-        *c = *b;
-        *b = t;
-    } else if (t < *c) {        /* a <= b <= d < c */
-        *d = *c;
-        *c = t;
-    }
-}
-
 long P_ibound(long min, long i, long max)
 {
     if (max > min)
@@ -968,186 +207,11 @@ int P_ibetweenm(long min, long i, long max, long margin)
            ((max-margin <= i) && (i <= min+margin));
 }
 
-void P_iamin(long *min, long i)
-{
-    if (i < *min)
-        *min = i;
-}
-
-void P_iamax(long *max, long i)
-{
-    if (i > *max)
-        *max = i;
-}
-
-void P_iaminmax(long *min, long *max, long i)
-{
-    if (i < *min)
-        *min = i;
-    if (i > *max)
-        *max = i;
-}
-
-long P_isqrt(long n)
-{
-    return (long)sqrt((double)n);      /* ought to use a better algorithm for this! */
-}
-
-
-long P_ipow(long y, long x)
-{
-    register long n;
-
-    switch (y) {
-
-        case 0:
-        case 1:
-            return y;
-
-        case 2:
-            return (x >= 0) ? 1 << x : 0;
-
-        case -1:
-            return (x & 1) ? -1 : 1;
-
-        case -2:
-            return (x & 1) ? -(1 << x) : (1 << x);
-
-    }
-    switch (x) {
-
-        case 0:
-            return 1;
-
-        case 1:
-            return y;
-
-    }
-    if (x < 0)
-        return 0;
-    if (y < 0) {
-        y = - y;
-        if (x & 1)
-            return -P_ipow(y, x);
-    }
-    n = (x & 1) ? y : 1;
-    for (;;) {
-        x >>= 1;
-        if (!x)
-            return n;
-        y *= y;
-        if (x & 1)
-            n *= y;
-    }
-}
-
-
-void na_addc(long *a, long b, int *c)
-{
-    *a += b + *c;
-    *c = ((unsigned long)*a < (unsigned long)b);
-}
-
-void na_subc(long *a, long b, int *c)
-{
-    int newc = ((unsigned long)*a < (unsigned long)b);
-
-    *a -= b - *c;
-    *c = newc;
-}
-
-
-long na_smul(long a, long b)
-{
-    return (unsigned long)a * (unsigned long)b;
-}
-
-long na_umul(long a, long b)
-{
-    return (unsigned long)a * (unsigned long)b;
-}
-
-na_quadword na_smul64(long a, long b)
-{
-    na_quadword q;
-
-    if ((a ^ b) < 0) {
-        if (a < 0)
-            a = -a;
-        else
-            b = -b;
-        q = na_umul64(a, b);
-        q.U1.i2 = - q.U1.i2;
-        q.U1.i1 = - q.U1.i1 - (q.U1.i2 != 0);
-    }
-    if (a < 0) {
-        a = -a;
-        b = -b;
-    }
-    return na_umul64(a, b);
-}
-
-na_quadword na_umul64(long a, long b)
-{
-    na_quadword q;
-    unsigned short ah = a >> 16, al = a;
-    unsigned short bh = b >> 16, bl = b;
-    int c;
-    unsigned long t;
-
-    q.U1.i1 = al * bl;
-    t = bh * al;
-    c = 0;
-    na_addc(&q.U1.i1, t << 16, &c);
-    q.U1.i2 = ah * bh + (t >> 16) + c;
-    t = ah * bl;
-    c = 0;
-    na_addc(&q.U1.i1, t << 16, &c);
-    q.U1.i2 += (t >> 16) + c;
-    return q;
-}
-
-/* Quick-sort */
-
-static int (*userqsortfunc)();
-static void* userqsortlink;
-
-static int qsortfunc(long *a, long *b)
-{
-    return (*userqsortfunc)(*a, *b);
-}
-
-static int qsortfunc2(long *a, long *b)
-{
-    return (*userqsortfunc)(*a, *b, userqsortlink);
-}
-
-void na_qsort(na_long *a, long n, _PROCEDURE comp)
-{
-    if (comp.link) 
-      {
-        userqsortfunc = (int (*)())comp.proc;
-        userqsortlink = comp.link;
-
-	qsort(a, n, 4, (int (*)())qsortfunc2);
-
-      }
-     else 
-       {
-	 userqsortfunc = (int (*)())comp.proc;
-
-	 qsort(a, n, 4, (int (*)())qsortfunc);
-	 
-       }
-}
-
-
 double na_srtor(void *x)
 {
   return(*((double *) &x));
 }
 
-
 void* na_rtosr(double x)
 {
   return(*((void* *) &x));
diff --git a/psys/src/p2clib.c b/psys/src/p2clib.c
index 3bf85f19422c1ea9c1ed61b0bed980a1d9b5ed07..0e2ba7554283a8d138e6e9162c67b00a5b1c57f5 100644
--- a/psys/src/p2clib.c
+++ b/psys/src/p2clib.c
@@ -45,10 +45,6 @@ void PASCAL_MAIN(int argc, char **argv)
 	P_argv = argv;
 	__top_jb = NULL;
 	bigendian = isbigendian();
-
-#ifdef LOCAL_INIT
-	LOCAL_INIT();
-#endif
 }
 
 long ipow(long a, long b)