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)