diff --git a/psys/include/p2c/p2c.h b/psys/include/p2c/p2c.h
index 51f72b2ba77627ebb57d7f70289320c8b5e822a6..d97ef6f0de9373438805fd8eb5b533ac4bcf9181 100644
--- a/psys/include/p2c/p2c.h
+++ b/psys/include/p2c/p2c.h
@@ -19,7 +19,21 @@
 #include <assert.h>
 #include <stdbool.h>
 
-# define log1p(X) log(1+(X))
+/* Funcition for compiler warnings*/
+#ifdef __GNUC__
+#define DEPRECATED __attribute__((deprecated))
+#else
+/**
+ * Deprecated functions
+ *
+ * Use this macro in front of a function declaration to say the function is deprecated.
+ * The compiler may emit a warning every time the function is used
+ */
+#define DEPRECATED
+#endif
+
+
+#define log1p(X) log(1+(X))
 
 typedef struct __p2c_jmp_buf {
     struct __p2c_jmp_buf *next;
@@ -78,35 +92,37 @@ extern int	_EscIO       (int);
 
 extern int      microsleep    (long);
 extern long     ipow         (long, long);
-extern char    *strsub       (char *, char *, int, int);
+
+extern char    *strsub       (char *, char *, size_t, size_t);
 extern char    *strltrim     (char *);
 extern char    *strrtrim     (char *);
-extern char    *strrpt       (char *, char *, int);
-extern char    *strpad       (char *, char *, int, int);
-extern int      strpos2      (char *, char *, int);
-extern void    strmove      (int len, char * s, int spos, char * d, int dpos);
+extern char    *strrpt       (char *, char *, size_t);
+extern char    *strpad       (char *, char *, size_t, size_t);
+extern int      strpos2      (char *, char *, size_t);
+extern void    strmove      (size_t len, char * s, size_t spos, char * d, size_t dpos);
 extern int     strcicmp     (char * s1, char * s2);
-extern long     memavail    ();
-extern int      P_peek       (FILE *);
+
+extern long     memavail    () DEPRECATED;
+extern char     P_peek       (FILE *);
 extern int      P_eof        (FILE *);
 extern int      P_eoln       (FILE *);
-extern void     P_readpaoc   (FILE *, char *, int);
-extern void     P_readlnpaoc  (FILE *, char *, int);
+extern void     P_readpaoc   (FILE *, char *, size_t);
+extern void     P_readlnpaoc  (FILE *, char *, size_t);
 extern long     P_maxpos     (FILE *);
-extern char    *P_trimname   (char *, int);
-extern long    *P_setunion   (long *, long *, long *);
-extern long    *P_setint     (long *, long *, long *);
-extern long    *P_setdiff    (long *, long *, long *);
-extern long    *P_setxor     (long *, long *, long *);
-extern int      P_inset      (unsigned, long *);
-extern int      P_setequal   (long *, long *);
-extern int      P_subset     (long *, long *);
-extern long    *P_addset     (long *, unsigned);
-extern long    *P_addsetr    (long *, unsigned, unsigned);
-extern long    *P_remset     (long *, unsigned);
-extern long    *P_setcpy     (long *, long *);
-extern long    *P_expset     (long *, long);
-extern long     P_packset    (long *);
+extern char    *P_trimname   (char *, size_t) DEPRECATED;
+extern long    *P_setunion   (long *, long *, long *) DEPRECATED;
+extern long    *P_setint     (long *, long *, long *) DEPRECATED;
+extern long    *P_setdiff    (long *, long *, long *) DEPRECATED;
+extern long    *P_setxor     (long *, long *, long *) DEPRECATED;
+extern int      P_inset      (unsigned, long *) DEPRECATED;
+extern int      P_setequal   (long *, long *) DEPRECATED;
+extern int      P_subset     (long *, long *) DEPRECATED;
+extern long    *P_addset     (long *, unsigned) DEPRECATED;
+extern long    *P_addsetr    (long *, unsigned, unsigned) DEPRECATED;
+extern long    *P_remset     (long *, unsigned) DEPRECATED;
+extern long    *P_setcpy     (long *, long *) DEPRECATED;
+extern long    *P_expset     (long *, long) DEPRECATED;
+extern long     P_packset    (long *) DEPRECATED;
 extern int      P_getcmdline  (int l, int h, char *line);
 extern void     TimeStamp    (int *Day, int *Month, int *Year,
 				 int *Hour, int *Min, int *Sec);
@@ -208,24 +224,8 @@ typedef struct {
 #define P_max(a,b)   ((a) > (b) ? (a) : (b))
 #define P_min(a,b)   ((a) < (b) ? (a) : (b))
 
-/* Funcition for compiler warnings*/
-#ifdef __GNUC__
-#define DEPRECATED __attribute__((deprecated))
-#else
-/**
- * Deprecated functions
- *
- * Use this macro in front of a function declaration to say the function is deprecated.
- * The compiler may emit a warning every time the function is used
- */
-#define DEPRECATED
-#endif
-
 #endif    /* P2C_H */
 
-/* ifdefs for microsleep here */
-
-#define BSDMICROSLEEP
 
 #if !defined(L_cuserid)
 #define L_cuserid 32
@@ -233,5 +233,3 @@ extern char * cuserid(char *);
 #endif
 
 /* End. */
-
-
diff --git a/psys/src/p2clib.c b/psys/src/p2clib.c
index a649a322c49afa38f2bc7a8c51e317ee38d8ed51..c2d0364ab1656b89ee0f3af5cd18ef35b5790757 100644
--- a/psys/src/p2clib.c
+++ b/psys/src/p2clib.c
@@ -1,4 +1,3 @@
-
 /* Run-time library for use with "p2c", the Pascal to C translator */
 
 /* "p2c"  Copyright (C) 1989 Dave Gillespie.
@@ -6,16 +5,14 @@
  * by the licence agreement accompanying p2c itself.
  */
 
-/* To allow to use selct */
+/* To allow to use select */
 #include <sys/select.h>
 
-# include <time.h>
+#include <time.h>
 
 #include <p2c/p2c.h>
 
 
-#define Isspace(c)  isspace(c)      /* or "((c) == ' ')" if preferred */
-
 int P_argc;
 char **P_argv;
 
@@ -35,48 +32,49 @@ __p2c_jmp_buf *__top_jb;
 
 int isbigendian()
 {
-        short   d = 0x1234;
-        char    *p = (char *)&d;
+	short d = 0x1234;
+	char *p = (char *)&d;
 
-        return *p == 0x12;
+	return *p == 0x12;
 }
 
 
 void PASCAL_MAIN(int argc, char **argv)
 {
-    P_argc = argc;
-    P_argv = argv;
-    __top_jb = NULL;
-    bigendian = isbigendian();
+	P_argc = argc;
+	P_argv = argv;
+	__top_jb = NULL;
+	bigendian = isbigendian();
 
 #ifdef LOCAL_INIT
-    LOCAL_INIT();
+	LOCAL_INIT();
 #endif
 }
 
 long ipow(long a, long b)
 {
-    long v;
+	long v;
 
-    if (a == 0 || a == 1)
+	if (a == 0 || a == 1)
 		return a;
 
-    if (a == -1)
+	if (a == -1)
 		return (b & 1) ? -1 : 1;
 
-    if (b < 0)
+	if (b < 0)
 		return 0;
 
-    if (a == 2)
+	if (a == 2)
 		return 1 << b;
-    
+
 	v = (b & 1) ? a : 1;
-	while ((b >>= 1) > 0) {
+	while ((b >>= 1) > 0)
+	{
 		a *= a;
 		if (b & 1)
-		    v *= a;
+			v *= a;
 	}
-    return v;
+	return v;
 }
 
 /* Common string functions: */
@@ -84,57 +82,61 @@ long ipow(long a, long b)
 /* Store in "ret" the substring of length "len" starting from "pos" (1-based).
    Store a shorter or null string if out-of-range.  Return "ret". */
 
-char *strsub(ret, s, pos, len)
-register char *ret, *s;
-register int pos, len;
+char *strsub(char *ret, char *s, size_t pos, size_t len)
 {
-    register char *s2;
+	char *s2;
 
-    if (--pos < 0 || len <= 0) {
-        *ret = 0;
-        return ret;
-    }
-    while (pos > 0) {
-        if (!*s++) {
-            *ret = 0;
-            return ret;
-        }
-        pos--;
-    }
-    s2 = ret;
-    while (--len >= 0) {
-        if (!(*s2++ = *s++))
-            return ret;
-    }
-    *s2 = 0;
-    return ret;
+	if (pos == 0 || len == 0)
+	{
+		*ret = '\0';
+		return ret;
+	}
+	--pos;
+    
+	while (pos-- > 0)
+	{
+		if (!*s++)
+		{
+			*ret = '\0';
+			return ret;
+		}
+	}
+	
+	s2 = ret;
+	while (len-- > 0)
+	{
+		if (!(*s2++ = *s++))
+			return ret;
+	}
+	
+	*s2 = '\0';
+	return ret;
 }
 
 
 /* Return the index of the first occurrence of "pat" as a substring of "s",
    starting at index "pos" (1-based).  Result is 1-based, 0 if not found. */
 
-int strpos2(s, pat, pos)
-char *s;
-register char *pat;
-register int pos;
-{
-    register char *cp, ch;
-    register int slen;
-
-    if (--pos < 0)
-        return 0;
-    slen = strlen(s) - pos;
-    cp = s + pos;
-    if (!(ch = *pat++))
-        return 0;
-    pos = strlen(pat);
-    slen -= pos;
-    while (--slen >= 0) {
-        if (*cp++ == ch && !strncmp(cp, pat, pos))
-            return cp - s;
-    }
-    return 0;
+int strpos2(char *s, char *pat, size_t pos)
+{
+	char *cp, ch;
+	ptrdiff_t slen;
+
+	if (pos == 0)
+		return 0;
+	pos--;
+	slen = strlen(s) - pos;
+	cp = s + pos;
+	if (!(ch = *pat++))
+		return 0;
+	pos = strlen(pat);
+	slen -= pos;
+	while (--slen >= 0)
+	{
+		if (*cp++ == ch && !strncmp(cp, pat, pos))
+			return cp - s;
+	}
+	return 0;
 }
 
 
@@ -142,65 +144,62 @@ register int pos;
 
 /* Trim blanks at left end of string. */
 
-char *strltrim(s)
-register char *s;
+char *strltrim(char *s)
 {
-    while (Isspace(*s++)) ;
-    return s - 1;
+	while (isspace(*s))
+		s++;
+	return s - 1;
 }
 
 /* Trim blanks at right end of string. */
 
-char *strrtrim(s)
-register char *s;
+char *strrtrim(char *s)
 {
-    register char *s2 = s;
+	char *s2 = s;
 
-    if (!*s)
+	if (!*s)
+		return s;
+	while (*++s2) ;
+	while (s2 > s && isspace(*--s2))
+		*s2 = '\0';
 	return s;
-    while (*++s2) ;
-    while (s2 > s && Isspace(*--s2))
-        *s2 = 0;
-    return s;
 }
 
-
 /* Store in "ret" "num" copies of string "s".  Return "ret". */
-char *strrpt(ret, s, num)
-char *ret;
-register char *s;
-register int num;
-{
-    register char *s2 = ret;
-    register char *s1;
-
-    while (--num >= 0) {
-        s1 = s;
-        while ((*s2++ = *s1++)) ;
-        s2--;
-    }
-    return ret;
+char *strrpt(char *ret, char *s, size_t num)
+{
+	char *s2 = ret;
+	char *s1;
+
+	while (num-- > 0)
+	{
+		s1 = s;
+		while ((*s2++ = *s1++)) ;
+		s2--;
+	}
+	return ret;
 }
 
 
 /* Store in "ret" string "s" with enough pad chars added to reach "size". */
-char *strpad(ret, s, padchar, num)
-char *ret;
-register char *s;
-register int padchar, num;
+char *strpad(char *ret, char *s, size_t padchar, size_t num)
 {
-    register char *d = ret;
+    char *d = ret;
 
-    if (s == d) {
-	while (*d++) ;
-    } else {
-	while ((*d++ = *s++)) ;
-    }
-    num -= (--d - ret);
-    while (--num >= 0)
-	*d++ = padchar;
-    *d = 0;
-    return ret;
+	if (s == d)
+	{
+		while (*d++) ;
+	}
+	else
+	{
+		while ((*d++ = *s++)) ;
+	}
+	
+	num -= (--d - ret);
+	while (num > 0)
+		*d++ = padchar;
+	*d = 0;
+	return ret;
 }
 
 
@@ -208,84 +207,84 @@ register int padchar, num;
    to index "dpos" of "d", lengthening "d" if necessary.  Length and
    indices must be in-range. */
 
-void strmove(int len, char * s, int spos, char * d, int dpos)
+void strmove(size_t len, char *s, size_t spos, char *d, size_t dpos)
 {
-    s += spos - 1;
-    d += dpos - 1;
-    while (*d && --len >= 0)
-	*d++ = *s++;
-    if (len > 0) {
-	while (--len >= 0)
-	    *d++ = *s++;
+	s += spos - 1;
+	d += dpos - 1;
+	while (*d && len-- > 0)
+		*d++ = *s++;
+	
+	while (len-- > 0)
+		*d++ = *s++;
 	*d = 0;
-    }
 }
 
 
 /* Delete the substring of length "len" at index "pos" from "s".
    Delete less if out-of-range. */
 
-void strdelete(s, pos, len)
-register char *s;
-register int pos, len;
-{
-    register int slen;
-
-    if (--pos < 0)
-        return;
-    slen = strlen(s) - pos;
-    if (slen <= 0)
-        return;
-    s += pos;
-    if (slen <= len) {
-        *s = 0;
-        return;
-    }
-    while ((*s = s[len])) s++;
+void strdelete(char *s, size_t pos, size_t len)
+{
+	ptrdiff_t slen;
+
+	if (pos == 0)
+		return;
+	--pos;
+	slen = strlen(s) - pos;
+	if (slen <= 0)
+		return;
+	s += pos;
+	if ((size_t)slen <= len)
+	{
+		*s = 0;
+		return;
+	}
+	while ((*s = s[len])) s++;
 }
 
 
 /* Insert string "src" at index "pos" of "dst". */
 
-void strinsert(src, dst, pos)
-register char *src, *dst;
-register int pos;
+void strinsert(char *src, char *dst, size_t pos)
 {
-    register int slen, dlen;
+	ptrdiff_t slen, dlen;
 
-    if (--pos < 0)
-        return;
-    dlen = strlen(dst);
-    dst += dlen;
-    dlen -= pos;
-    if (dlen <= 0) {
-        strcpy(dst, src);
-        return;
+	if (pos == 0)
+		return;
+	--pos;
+	dlen = strlen(dst);
+	dst += dlen;
+	dlen -= pos;
+	if (dlen <= 0)
+	{
+		strcpy(dst, src);
+		return;
     }
-    slen = strlen(src);
-    do {
-        dst[slen] = *dst;
-        --dst;
-    } while (--dlen >= 0);
-    dst++;
-    while (--slen >= 0)
-        *dst++ = *src++;
+	slen = strlen(src);
+    
+	do
+	{
+		dst[slen] = *dst;
+		--dst;
+	} while (--dlen >= 0);
+	dst++;
+	while (--slen >= 0)
+		*dst++ = *src++;
 }
 
 /* File functions */
 
 /* Peek at next character of input stream; return EOF at end-of-file. */
 
-int P_peek(f)
-FILE *f;
+char P_peek(FILE *f)
 {
-    int ch;
+	char ch;
 
-    ch = getc(f);
-    if (ch == EOF)
-	return EOF;
-    ungetc(ch, f);
-    return (ch == '\n') ? ' ' : ch;
+	ch = getc(f);
+	if (ch == EOF)
+		return EOF;
+	ungetc(ch, f);
+	return (ch == '\n') ? ' ' : ch;
 }
 
 
@@ -293,117 +292,114 @@ FILE *f;
    stdin is broken; remove the special case for it to be broken in a
    different way. */
 
-int P_eof(f)
-FILE *f;
+int P_eof(FILE *f)
 {
-    register int ch;
+    char ch;
 
-    if (feof(f))
-	return 1;
-    if (f == stdin)
-	return 0;    /* not safe to look-ahead on the keyboard! */
-    ch = getc(f);
-    if (ch == EOF)
-	return 1;
-    ungetc(ch, f);
-    return 0;
+	if (feof(f))
+		return 1;
+	if (f == stdin)
+		return 0;    /* not safe to look-ahead on the keyboard! */
+	ch = getc(f);
+	if (ch == EOF)
+		return 1;
+	ungetc(ch, f);
+		return 0;
 }
 
 
 /* Check if at end of line (or end of entire file). */
 
-int P_eoln(f)
-FILE *f;
+int P_eoln(FILE *f)
 {
-    register int ch;
+	char ch;
 
-    ch = getc(f);
-    if (ch == EOF)
-        return 1;
-    ungetc(ch, f);
-    return (ch == '\n');
+	ch = getc(f);
+	if (ch == EOF)
+		return 1;
+	ungetc(ch, f);
+	return (ch == '\n');
 }
 
 
 /* Read a packed array of characters from a file. */
 
-void P_readpaoc(f, s, len)
-FILE *f;
-char *s;
-int len;
+void P_readpaoc(FILE *f, char *s, size_t len)
 {
-    int ch;
+	char ch;
 
-    for (;;) {
-	if (len <= 0)
-	    return;
-	ch = getc(f);
-	if (ch == EOF || ch == '\n')
-	    break;
-	*s++ = ch;
-	--len;
-    }
-    while (--len >= 0)
-	*s++ = ' ';
-    if (ch != EOF)
-	ungetc(ch, f);
+	for (;;)
+	{
+		if (len <= 0)
+			return;
+		ch = getc(f);
+		if (ch == EOF || ch == '\n')
+			break;
+		*s++ = ch;
+		--len;
+	}
+	while (len > 0)
+	{
+		*s++ = ' ';
+		--len;
+	}
+	if (ch != EOF)
+		ungetc(ch, f);
 }
 
-void P_readlnpaoc(f, s, len)
-FILE *f;
-char *s;
-int len;
+void P_readlnpaoc(FILE *f, char *s, size_t len)
 {
-    int ch;
+	char ch;
 
-    for (;;) {
-	ch = getc(f);
-	if (ch == EOF || ch == '\n')
-	    break;
-	if (len > 0) {
-	    *s++ = ch;
-	    --len;
+	for (;;)
+	{
+		ch = getc(f);
+		if (ch == EOF || ch == '\n')
+			break;
+		if (len > 0)
+		{
+			*s++ = ch;
+			--len;
+		}
+	}
+	while (len > 0)
+	{
+		*s++ = ' ';
+		--len;
 	}
-    }
-    while (--len >= 0)
-	*s++ = ' ';
 }
 
 
 /* Compute maximum legal "seek" index in file (0-based). */
 
-long P_maxpos(f)
-FILE *f;
+long P_maxpos(FILE *f)
 {
-    long savepos = ftell(f);
-    long val;
+	long savepos = ftell(f);
+	long val;
 
-    if (fseek(f, 0L, SEEK_END))
-        return -1;
-    val = ftell(f);
-    if (fseek(f, savepos, SEEK_SET))
-        return -1;
-    return val;
+	if (fseek(f, 0L, SEEK_END))
+		return -1;
+	val = ftell(f);
+	if (fseek(f, savepos, SEEK_SET))
+		return -1;
+	return val;
 }
 
 
 /* Use packed array of char for a file name. */
 
-char *P_trimname(fn, len)
-register char *fn;
-register int len;
+char *P_trimname(char *fn, size_t len)
 {
-    static char fnbuf[256];
-    register char *cp = fnbuf;
+	char *fnbuf = malloc(sizeof(char) * 256);
+	char *cp = fnbuf;
     
-    while (--len >= 0 && *fn && !isspace(*fn))
-	*cp++ = *fn++;
-    *cp = 0;
-    return fnbuf;
+	while (len-- > 0 && *fn && !isspace(*fn))
+		*cp++ = *fn++;
+	
+	*cp = '\0';
+	return fnbuf;
 }
 
-
-
 /* Pascal's "memavail" doesn't make much sense in Unix with virtual memory.
    We fix memory size as 10Meg as a reasonable compromise. */
 
@@ -421,287 +417,310 @@ long memavail()
 
 /* (Sets with 32 or fewer elements are normally stored as plain longs.) */
 
-long *P_setunion(d, s1, s2)         /* d := s1 + s2 */
-register long *d, *s1, *s2;
-{
-    long *dbase = d++;
-    register int sz1 = *s1++, sz2 = *s2++;
-    while (sz1 > 0 && sz2 > 0) {
-        *d++ = *s1++ | *s2++;
-	sz1--, sz2--;
-    }
-    while (--sz1 >= 0)
-	*d++ = *s1++;
-    while (--sz2 >= 0)
-	*d++ = *s2++;
-    *dbase = d - dbase - 1;
-    return dbase;
+long *P_setunion(long *d, long *s1, long *s2)         /* d := s1 + s2 */
+{
+	long *dbase = d++;
+	long sz1 = *s1++;
+	long sz2 = *s2++;
+	
+	while (sz1 > 0 && sz2 > 0)
+	{
+		*d++ = *s1++ | *s2++;
+		--sz1;
+		--sz2;
+	}
+	
+	while (--sz1 >= 0)
+		*d++ = *s1++;
+	
+	while (--sz2 >= 0)
+		*d++ = *s2++;
+	
+	*dbase = d - dbase - 1;
+	return dbase;
 }
 
 
-long *P_setint(d, s1, s2)           /* d := s1 * s2 */
-register long *d, *s1, *s2;
+long *P_setint(long *d, long *s1, long *s2)           /* d := s1 * s2 */
 {
-    long *dbase = d++;
-    register int sz1 = *s1++, sz2 = *s2++;
-    while (--sz1 >= 0 && --sz2 >= 0)
-        *d++ = *s1++ & *s2++;
-    while (--d > dbase && !*d) ;
-    *dbase = d - dbase;
-    return dbase;
+	long *dbase = d++;
+	long sz1 = *s1++;
+	long sz2 = *s2++;
+
+	while (--sz1 >= 0 && --sz2 >= 0)
+		*d++ = *s1++ & *s2++;
+	
+	while (--d > dbase && !*d) ;
+	
+	*dbase = d - dbase;
+	return dbase;
 }
 
 
-long *P_setdiff(d, s1, s2)          /* d := s1 - s2 */
-register long *d, *s1, *s2;
+long *P_setdiff(long *d, long *s1, long *s2)          /* d := s1 - s2 */
 {
-    long *dbase = d++;
-    register int sz1 = *s1++, sz2 = *s2++;
-    while (--sz1 >= 0 && --sz2 >= 0)
-        *d++ = *s1++ & ~*s2++;
-    if (sz1 >= 0) {
-        while (sz1-- >= 0)
-            *d++ = *s1++;
-    }
-    while (--d > dbase && !*d) ;
-    *dbase = d - dbase;
-    return dbase;
+	long *dbase = d++;
+	long sz1 = *s1++;
+	long sz2 = *s2++;
+    
+	while (--sz1 >= 0 && --sz2 >= 0)
+		*d++ = *s1++ & ~*s2++;
+	
+	if (sz1 >= 0)
+	{
+		while (sz1-- >= 0)
+			*d++ = *s1++;
+	}
+	while (--d > dbase && !*d) ;
+	
+	*dbase = d - dbase;
+	return dbase;
 }
 
 
-long *P_setxor(d, s1, s2)         /* d := s1 / s2 */
-register long *d, *s1, *s2;
+long *P_setxor(long *d, long *s1, long *s2)         /* d := s1 / s2 */
 {
-    long *dbase = d++;
-    register int sz1 = *s1++, sz2 = *s2++;
-    while (sz1 > 0 && sz2 > 0) {
-        *d++ = *s1++ ^ *s2++;
-	sz1--, sz2--;
-    }
-    while (--sz1 >= 0)
-	*d++ = *s1++;
-    while (--sz2 >= 0)
-	*d++ = *s2++;
-    while (--d > dbase && !*d) ;
-    *dbase = d - dbase;
-    return dbase;
+	long *dbase = d++;
+	long sz1 = *s1++;
+	long sz2 = *s2++;
+	
+	while (sz1 > 0 && sz2 > 0)
+	{
+		*d++ = *s1++ ^ *s2++;
+		sz1--, sz2--;
+	}
+	
+	while (--sz1 >= 0)
+		*d++ = *s1++;
+	
+	while (--sz2 >= 0)
+		*d++ = *s2++;
+	
+	while (--d > dbase && !*d) ;
+	*dbase = d - dbase;
+	
+	return dbase;
 }
 
 
-int P_inset(val, s)                 /* val IN s */
-register unsigned val;
-register long *s;
+int P_inset(unsigned val, long *s)                 /* val IN s */
 {
-    register int bit;
-    bit = val % SETBITS;
-    val /= SETBITS;
-    if (val < *s++ && ((1<<bit) & s[val]))
-	return 1;
-    return 0;
+	long bit = val % SETBITS;
+    
+	val /= SETBITS;
+	return ((long)val < *s++ && ((1<<bit) & s[val]));
 }
 
 
-long *P_addset(s, val)              /* s := s + [val] */
-register long *s;
-register unsigned val;
+long *P_addset(long *s, unsigned val)              /* s := s + [val] */
 {
-    register long *sbase = s;
-    register int bit, size;
-    bit = val % SETBITS;
-    val /= SETBITS;
-    size = *s;
-    if (++val > size) {
-        s += size;
-        while (val > size)
-            *++s = 0, size++;
-        *sbase = size;
-    } else
-        s += val;
-    *s |= 1<<bit;
-    return sbase;
+	long *sbase = s;
+	long bit;
+	size_t size;
+    
+	bit = val % SETBITS;
+	val /= SETBITS;
+	
+	size = *s;
+	if (++val > size)
+	{
+		s += size;
+		while (val > size)
+			*++s = 0, size++;
+		*sbase = size;
+	}
+	else
+	{
+		s += val;
+	}
+
+	*s |= 1 << bit;
+	return sbase;
 }
 
 
-long *P_addsetr(s, v1, v2)              /* s := s + [v1..v2] */
-register long *s;
-register unsigned v1, v2;
+long *P_addsetr(long *s, unsigned v1, unsigned v2)              /* s := s + [v1..v2] */
 {
-    register long *sbase = s;
-    register int b1, b2, size;
-    if ((int)v1 > (int)v2)
-	return sbase;
-    b1 = v1 % SETBITS;
-    v1 /= SETBITS;
-    b2 = v2 % SETBITS;
-    v2 /= SETBITS;
-    size = *s;
-    v1++;
-    if (++v2 > size) {
-        while (v2 > size)
-            s[++size] = 0;
-        s[v2] = 0;
-        *s = v2;
+	long *sbase = s;
+	long b1, b2;
+	size_t size;
+    
+	if ((int)v1 > (int)v2)
+		return sbase;
+	
+	b1 = v1 % SETBITS;
+	v1 /= SETBITS;
+	b2 = v2 % SETBITS;
+	v2 /= SETBITS;
+	size = *s;
+	v1++;
+	if (++v2 > size)
+	{
+		while (v2 > size)
+			s[++size] = 0;
+		s[v2] = 0;
+		*s = v2;
+	}
+	s += v1;
+	if (v1 == v2)
+	{
+		*s |= (~((unsigned)(-2)<<(b2-b1))) << b1;
     }
-    s += v1;
-    if (v1 == v2) {
-        *s |= (~((-2)<<(b2-b1))) << b1;
-    } else {
-        *s++ |= (-1) << b1;
-        while (++v1 < v2)
-            *s++ = -1;
-        *s |= ~((-2) << b2);
+	else
+	{
+		*s++ |= (unsigned)(-1) << b1;
+		while (++v1 < v2)
+			*s++ = -1;
+		*s |= ~((unsigned)(-2) << b2);
     }
-    return sbase;
+
+	return sbase;
 }
 
 
-long *P_remset(s, val)              /* s := s - [val] */
-register long *s;
-register unsigned val;
+long *P_remset(long *s, unsigned val)              /* s := s - [val] */
 {
-    register int bit;
-    bit = val % SETBITS;
-    val /= SETBITS;
-    if ((long)++val <= *s) {
-	if (!(s[val] &= ~(1<<bit)))
-	    while (*s && !s[*s])
-		(*s)--;
-    }
-    return s;
+	long bit = val % SETBITS;
+	val /= SETBITS;
+	if ((long)++val <= *s)
+	{
+		if (!(s[val] &= ~(1<<bit)))
+			while (*s && !s[*s])
+				(*s)--;
+	}
+	
+	return s;
 }
 
-
-int P_setequal(s1, s2)              /* s1 = s2 */
-register long *s1, *s2;
+int P_setequal(long *s1, long *s2)              /* s1 = s2 */
 {
-    register int size = *s1++;
-    if (*s2++ != size)
-        return 0;
-    while (--size >= 0) {
-        if (*s1++ != *s2++)
-            return 0;
-    }
-    return 1;
+    long  size = *s1++;
+	if (*s2++ != size)
+		return 0;
+	while (--size >= 0)
+	{
+		if (*s1++ != *s2++)
+			 return 0;
+	}
+	return 1;
 }
 
 
-int P_subset(s1, s2)                /* s1 <= s2 */
-register long *s1, *s2;
+int P_subset(long *s1, long *s2)                /* s1 <= s2 */
 {
-    register int sz1 = *s1++, sz2 = *s2++;
-    if (sz1 > sz2)
-        return 0;
-    while (--sz1 >= 0) {
-        if (*s1++ & ~*s2++)
-            return 0;
-    }
-    return 1;
+	long sz1 = *s1++;
+	long sz2 = *s2++;
+	if (sz1 > sz2)
+		return 0;
+	
+	while (--sz1 >= 0)
+	{
+		if (*s1++ & ~*s2++)
+			return 0;
+	}
+	
+	return 1;
 }
 
 
-long *P_setcpy(d, s)                /* d := s */
-register long *d, *s;
+long *P_setcpy(long *d, long *s)                /* d := s */
 {
-    register long *save_d = d;
+	long *save_d = d;
 
-#ifdef SETCPY_MEMCPY
     memcpy(d, s, (*s + 1) * sizeof(long));
-#else
-    register int i = *s + 1;
-    while (--i >= 0)
-        *d++ = *s++;
-#endif
-    return save_d;
-}
 
+	return save_d;
+}
 
 /* s is a "smallset", i.e., a 32-bit or less set stored
    directly in a long. */
 
-long *P_expset(d, s)                /* d := s */
-register long *d;
-register long s;
+long *P_expset(long *d, long s)                /* d := s */
 {
-    if (s) {
-	d[1] = s;
-	*d = 1;
-    } else
-        *d = 0;
-    return d;
+	if (s)
+	{
+		d[1] = s;
+		*d = 1;
+    }
+	else
+	{
+		*d = 0;
+	}
+
+	return d;
 }
 
 
-long P_packset(s)                   /* convert s to a small-set */
-register long *s;
+long P_packset(long *s)                   /* convert s to a small-set */
 {
-    if (*s++)
-        return *s;
-    else
-        return 0;
+	if (*s++)
+		return *s;
+	else
+		return 0;
 }
 
 /* Oregon Software Pascal extensions, courtesy of William Bader */
 
-int P_getcmdline(l, h, line)
-int l, h;
-char *line;
+int P_getcmdline(int l, int h, char *line)
 {
-    int i, len;
-    char *s;
+	int i, len;
+	char *s;
+    
+	h = h - l + 1;
+	len = 0;
     
-    h = h - l + 1;
-    len = 0;
-    for(i = 1; i < P_argc; i++) {
-	s = P_argv[i];
-	while (*s) {
-	    if (len >= h) return len;
-	    line[len++] = *s++;
+	for(i = 1; i < P_argc; i++)
+	{
+		s = P_argv[i];
+		while (*s)
+		{
+			if (len >= h)
+				return len;
+			line[len++] = *s++;
+		}
+		if (len >= h)
+			return len;
+		line[len++] = ' ';
 	}
-	if (len >= h) return len;
-	line[len++] = ' ';
-    }
-    return len;
-}
-
-void TimeStamp(Day, Month, Year, Hour, Min, Sec)
-int *Day, *Month, *Year, *Hour, *Min, *Sec;
-{
-#ifndef NO_TIME
-    struct tm *tm;
-    time_t clock;
-
-    time(&clock);
-    tm = localtime(&clock);
-    *Day = tm->tm_mday;
-    *Month = tm->tm_mon + 1;		/* Jan = 0 */
-    *Year = tm->tm_year;
-    if (*Year < 1900)
-	*Year += 1900;     /* year since 1900 */
-    *Hour = tm->tm_hour;
-    *Min = tm->tm_min;
-    *Sec = tm->tm_sec;
-#endif
+    
+	return len;
+}
+
+void TimeStamp(int *Day, int *Month, int *Year, int *Hour, int *Min, int *Sec)
+{
+	struct tm *tm;
+	time_t clock;
+
+	time(&clock);
+	tm = localtime(&clock);
+	*Day = tm->tm_mday;
+	*Month = tm->tm_mon + 1;		/* Jan = 0 */
+	*Year = tm->tm_year;
+	if (*Year < 1900)
+		*Year += 1900;     /* year since 1900 */
+	*Hour = tm->tm_hour;
+	*Min = tm->tm_min;
+	*Sec = tm->tm_sec;
 }
 
 /* SUN Berkeley Pascal extensions */
 
-void P_sun_argv(s, len, n)
-register char *s;
-register int len, n;
+void P_sun_argv(char *s, int len, int n)
 {
-    register char *cp;
+	char *cp;
 
-    if (n < P_argc)
-	cp = P_argv[n];
-    else
-	cp = "";
-    while (*cp && --len >= 0)
-	*s++ = *cp++;
-    while (--len >= 0)
-	*s++ = ' ';
+	if (n < P_argc)
+		cp = P_argv[n];
+	else
+		cp = "";
+	
+	while (*cp && --len >= 0)
+		*s++ = *cp++;
+    
+	while (--len >= 0)
+		*s++ = ' ';
 }
 
-
 int _OutMem()
 {
     return _Escape(-2);
@@ -720,146 +739,143 @@ int _NilCheck()
 /* The following is suitable for the HP Pascal operating system.
    It might want to be revised when emulating another system. */
 
-char *_ShowEscape(buf, code, ior, prefix)
-char *buf, *prefix;
-int code, ior;
+char *_ShowEscape(char *buf, int code, int ior, char *prefix)
 {
-    char *bufp;
+	char *bufp;
 
-    if (prefix && *prefix) {
-        strcpy(buf, prefix);
-	strcat(buf, ": ");
-        bufp = buf + strlen(buf);
-    } else {
-        bufp = buf;
-    }
-    if (code == -10) {
-        sprintf(bufp, "Pascal system I/O error %d", ior);
-        switch (ior) {
-            case 3:
-                strcat(buf, " (illegal I/O request)");
-                break;
-            case 7:
-                strcat(buf, " (bad file name)");
-                break;
-            case FileNotFound:   /*10*/
-                strcat(buf, " (file not found)");
-                break;
-            case FileNotOpen:    /*13*/
-                strcat(buf, " (file not open)");
-                break;
-            case BadInputFormat: /*14*/
-                strcat(buf, " (bad input format)");
-                break;
-            case 24:
-                strcat(buf, " (not open for reading)");
-                break;
-            case 25:
-                strcat(buf, " (not open for writing)");
-                break;
-            case 26:
-                strcat(buf, " (not open for direct access)");
-                break;
-            case 28:
-                strcat(buf, " (string subscript out of range)");
-                break;
-            case EndOfFile:      /*30*/
-                strcat(buf, " (end-of-file)");
-                break;
-            case FileWriteError: /*38*/
-		strcat(buf, " (file write error)");
-		break;
-        }
-    } else {
-        sprintf(bufp, "Pascal system error %d", code);
-        switch (code) {
-            case -2:
-                strcat(buf, " (out of memory)");
-                break;
-            case -3:
-                strcat(buf, " (reference to NIL pointer)");
-                break;
-            case -4:
-                strcat(buf, " (integer overflow)");
-                break;
-            case -5:
-                strcat(buf, " (divide by zero)");
-                break;
-            case -6:
-                strcat(buf, " (real math overflow)");
-                break;
-            case -8:
-                strcat(buf, " (value range error)");
-                break;
-            case -9:
-                strcat(buf, " (CASE value range error)");
-                break;
-            case -12:
-                strcat(buf, " (bus error)");
-                break;
-            case -20:
-                strcat(buf, " (stopped by user)");
-                break;
-        }
-    }
-    return buf;
+	if (prefix && *prefix)
+	{
+		strcpy(buf, prefix);
+		strcat(buf, ": ");
+		bufp = buf + strlen(buf);
+	}
+	else
+	{
+		bufp = buf;
+	}
+    
+	if (code == -10)
+	{
+		sprintf(bufp, "Pascal system I/O error %d", ior);
+		switch (ior)
+		{
+			case 3:
+				strcat(buf, " (illegal I/O request)");
+				break;
+			case 7:
+				strcat(buf, " (bad file name)");
+				break;
+			case FileNotFound:   /*10*/
+				strcat(buf, " (file not found)");
+				break;
+			case FileNotOpen:    /*13*/
+				strcat(buf, " (file not open)");
+				break;
+			case BadInputFormat: /*14*/
+				strcat(buf, " (bad input format)");
+				break;
+			case 24:
+				strcat(buf, " (not open for reading)");
+				break;
+			case 25:
+				strcat(buf, " (not open for writing)");
+				break;
+			case 26:
+				strcat(buf, " (not open for direct access)");
+				break;
+			case 28:
+				strcat(buf, " (string subscript out of range)");
+				break;
+			case EndOfFile:      /*30*/
+				strcat(buf, " (end-of-file)");
+				break;
+			case FileWriteError: /*38*/
+				strcat(buf, " (file write error)");
+				break;
+		}
+	}
+	else
+	{
+		sprintf(bufp, "Pascal system error %d", code);
+		switch (code)
+		{
+			case -2:
+				strcat(buf, " (out of memory)");
+				break;
+			case -3:
+				strcat(buf, " (reference to NIL pointer)");
+				break;
+			case -4:
+				strcat(buf, " (integer overflow)");
+				break;
+			case -5:
+				strcat(buf, " (divide by zero)");
+				break;
+			case -6:
+				strcat(buf, " (real math overflow)");
+				break;
+			case -8:
+				strcat(buf, " (value range error)");
+				break;
+			case -9:
+				strcat(buf, " (CASE value range error)");
+				break;
+			case -12:
+				strcat(buf, " (bus error)");
+				break;
+			case -20:
+				strcat(buf, " (stopped by user)");
+				break;
+		}
+	}
+	return buf;
 }
 
-
 int _Escape(int code)
 {
-    char buf[100];
+	char buf[100];
 
-    P_escapecode = code;
-    if (__top_jb) {
-	__p2c_jmp_buf *jb = __top_jb;
-	__top_jb = jb->next;
-	longjmp(jb->jbuf, 1);
-    }
-    if (code == 0)
-        exit(0);
-    if (code == -1)
-        exit(1);
-    fprintf(stderr, "%s\n", _ShowEscape(buf, P_escapecode, P_ioresult, ""));
-    exit(1);
+	P_escapecode = code;
+	if (__top_jb)
+	{
+		__p2c_jmp_buf *jb = __top_jb;
+		__top_jb = jb->next;
+		longjmp(jb->jbuf, 1);
+	}
+    
+	if (code == 0)
+		exit(0);
+	if (code == -1)
+		exit(1);
+	
+	fprintf(stderr, "%s\n", _ShowEscape(buf, P_escapecode, P_ioresult, ""));
+	exit(1);
 }
 
-int _EscIO(code)
-int code;
+int _EscIO(int code)
 {
-    P_ioresult = code;
-    return _Escape(-10);
+	P_ioresult = code;
+	return _Escape(-10);
 }
 
-char *GetChipmunkPath(ev, deft)
-char *ev, *deft;
+char *GetChipmunkPath(char *ev, char *deft)
 {
-    char *s;
+	char *s;
 
-    if ((s= getenv(ev)) != (char *) NULL)
-        return(s);
-    else return(deft);
+	if ((s = getenv(ev)) != (char *) NULL)
+		return(s);
+    else
+		return(deft);
 }
 
-/* the following are two different ways to implement the microsleep    */
-/* function: one for BSD-compatibles, and one for pure SysV.           */
-/* both taken from the comp.unix FAQ                                   */
-
-
-#ifdef BSDMICROSLEEP
+/*
+    usleep -- support routine for 4.2BSD system call emulations
+    last edit:  29-Oct-1984     D A Gwyn
+*/ 
+//extern int select();
 
-
-      /*
-            usleep -- support routine for 4.2BSD system call emulations
-            last edit:  29-Oct-1984     D A Gwyn
-      */
- 
-extern int select();
-
-int microsleep( usec )         /* returns 0 if ok, else -1 */
-long usec;                     /* delay in microseconds */
+int microsleep(long usec)         /* returns 0 if ok, else -1 */
 {
-
     static struct              /* `timeval' */
       {
          long  tv_sec;         /* seconds */
@@ -878,57 +894,3 @@ long usec;                     /* delay in microseconds */
 
 }
 
-#endif
-
-
-#ifdef SYSVMICROSLEEP
-
-      /*
-      subseconds sleeps for System V - or anything that has poll()
-      Don Libes, 4/1/1991
-
-      The BSD analog to this function is defined in terms of
-      microseconds while poll() is defined in terms of milliseconds.
-      For compatibility, this function provides accuracy "over the long
-      run" by truncating actual requests to milliseconds and
-      accumulating microseconds across calls with the idea that you are
-      probably calling it in a tight loop, and that over the long run,
-      the error will even out.
-
-      If you aren't calling it in a tight loop, then you almost
-      certainly aren't making microsecond-resolution requests anyway,
-      in which case you don't care about microseconds.  And if you did,
-      you wouldn't be using UNIX anyway because random system
-      indigestion (i.e., scheduling) can make mincemeat out of any
-      timing code.
-
-      Returns 0 if successful timeout, -1 if unsuccessful.
-
-      */
-
-
-      #include <poll.h>
-
-int microsleep( usec )         /* returns 0 if ok, else -1 */
-long usec;                     /* delay in microseconds */
-{
-
-   static subtotal = 0;        /* microseconds */
-   int msec;                   /* milliseconds */
-   /* 'foo' is only here because some versions of 5.3 have
-    * a bug where the first argument to poll() is checked
-    * for a valid memory address even if the second argument is 0.
-   */
-   struct pollfd foo;
-
-   subtotal += usec;
-   /* if less then 1 msec request, do nothing but remember it */
-   if (subtotal < 1000) return(0);
-   msec = subtotal/1000;
-   subtotal = subtotal%1000;
-   return poll(&foo,(unsigned long)0,msec);
-}
-
-#endif
-
-/* End. */