From 320e5f181a2e402194cce3d301611728f2c853d4 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Mon, 26 May 1980 05:59:41 -0800 Subject: [PATCH] BSD 4 development Work on file usr/src/cmd/apl/apl.h Synthesized-from: CSRG//cd1/4.0 --- usr/src/cmd/apl/apl.h | 334 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 usr/src/cmd/apl/apl.h diff --git a/usr/src/cmd/apl/apl.h b/usr/src/cmd/apl/apl.h new file mode 100644 index 0000000000..49ca562072 --- /dev/null +++ b/usr/src/cmd/apl/apl.h @@ -0,0 +1,334 @@ +#include + +double *test1; +double gamma(); +/* + * A P L + */ + +/* + * Magic numbers + */ + +#define OPERBOXSIZE 76 + +#define MRANK 8 /* Size of dimension buffer */ +#define CANBS 300 /* Size of input buffer */ +#define STKS 50 /* Size of stack increment */ +#define NLS 100 /* Size of namelist */ +#define NAMS 24 /* Size of name buffer */ +#define OBJS 500 /* Size of compiled expr buffer */ +#define MAGIC 0100554 /* Magic word for WS file */ + +/* + * Magic words + */ + +#define EDIT_ED "/usr/bin/ed" +#define EDIT_EX "/usr/ucb/ex" +#define EDIT_VI "/usr/ucb/vi" + +/* + * Debug modes + */ +#define FULLD 1 + +#ifdef FULLD +#define SOMED SOMED +#endif + +#ifdef SHORTD +#define SOMED SOMED +#endif + +/* + * Derived constants + */ + +#define SDAT sizeof datum +#define SINT sizeof integ + +/* + * Interpreter Op Codes + */ + +#define EOF (-1) +#define EOL 0 + +#define ADD 1 +#define PLUS 2 +#define SUB 3 +#define MINUS 4 +#define MUL 5 +#define SGN 6 +#define DIV 7 +#define RECIP 8 +#define MOD 9 +#define ABS 10 +#define MIN 11 +#define FLOOR 12 +#define MAX 13 +#define CEIL 14 +#define PWR 15 +#define EXP 16 +#define LOG 17 +#define LOGE 18 +#define CIR 19 +#define PI 20 +#define COMB 21 +#define FAC 22 + +#define DEAL 23 +#define RAND 24 +#define DRHO 25 +#define MRHO 26 +#define DIOT 27 +#define MIOT 28 +#define ROT0 29 +#define REV0 30 +#define DTRN 31 +#define MTRN 32 +#define DIBM 33 +#define MIBM 34 + +#define GDU 35 +#define GDUK 36 +#define GDD 37 +#define GDDK 38 +#define EXD 39 +#define SCAN 40 +#define EXDK 41 +#define SCANK 42 +#define IPROD 43 +#define OPROD 44 +#define QUAD 45 +#define QQUAD 46 +#define BRAN0 47 +#define BRAN 48 +#define DDOM 49 +#define MDOM 50 + +#define COM 51 +#define RED 52 +#define COMK 53 +#define REDK 54 +#define ROT 55 +#define REV 56 +#define ROTK 57 +#define REVK 58 +#define CAT 59 +#define RAV 60 +#define CATK 61 +#define RAVK 62 + +#define PRINT 63 +#define QUOT 64 +#define ELID 65 +#define CQUAD 66 +#define COMNT 67 +#define INDEX 68 +#define HPRINT 69 + +#define LT 71 +#define LE 72 +#define GT 73 +#define GE 74 +#define EQ 75 +#define NE 76 +#define AND 77 +#define OR 78 +#define NAND 79 +#define NOR 80 +#define NOT 81 +#define EPS 82 +#define MEPS 83 +#define REP 84 +#define TAKE 85 +#define DROP 86 +#define ASGN 88 +#define IMMED 89 + + +#define NAME 90 +#define CONST 91 +#define FUN 92 +#define ARG1 93 +#define ARG2 94 +#define AUTO 95 +#define REST 96 + +#define COM0 97 +#define RED0 98 +#define EXD0 99 +#define SCAN0 100 +#define BASE 101 +#define MENC 102 /* monadic encode */ + +/* + * Immediate sub-op codes + */ + +#define CLEAR 1 +#define DIGITS 2 +#define ED_IT 3 +#define ERASE 4 +#define FNS 5 +#define FUZZ 6 +#define READ 7 +#define ORIGIN 8 +#define VARS 9 +#define WIDTH 10 +#define DEBUG 11 +#define OFF 12 +#define LOAD 13 +#define SAVE 14 +#define COPY 15 +#define CONTIN 16 +#define LIB 17 +#define DROPC 18 +#ifdef SOMED +#define SYMBOLS 19 +#endif +#define EX_IT 20 +#define EX_VI 21 +#define ASCII 22 +#define APL 23 +#define CSH 24 + +/* + * Types + */ + +#define DA 1 /* Numeric data (?) */ +#define CH 2 /* Character data (?) */ +#define LV 3 /* Used for most data items */ +#define QD 4 /* Quad (assignment to (?)) */ +#define QQ 5 /* Quote-quad */ +#define IN 6 /* ??? */ +#define EL 7 /* Literal data (??) */ +#define NF 8 /* Name of function with no args */ +#define MF 9 /* Monadic function */ +#define DF 10 /* Dyadic function */ +#define QC 11 + +/* + * Idiosyncracies + */ + +#define data double +#define unsignd unsigned + +/* + * Structures + */ + +struct { + char c[8]; +}; + +struct env { + double fuzz; + int iorg; + int digits; + int width; +} thread; + +struct item { + char rank; + char type; + int size; + int index; + data *datap; + int dim[MRANK]; +}; + +struct nlist { + char use; + char type; /* == LV */ + int *itemp; + char *namep; + int label; +} nlist[NLS]; + +struct lablist { + char *lname; + int lno; + struct lablist *nextll; +} labldefs; + +struct { + char rank; + char type; + int size; + int dimk; + int delk; + int dim[MRANK]; + int del[MRANK]; + int idx[MRANK]; +} idx; + +struct { + char *name; + int line; +} now_xeq; + +struct item **sp, **stack, **staktop; /* Internal run-time stack */ + +/* + * Externals + */ + +data zero; +data one; +data pi; +data maxexp; +data datum; +data getdat(); + +int cs_size; /* Current stack size */ + +int (*exop[])(); + +double floor(); +double ceil(); +double log(); +double sin(); +double cos(); +double atan(); +double atan2(); +double sqrt(); +double exp(); +double gamma(); +double ltod(); + +int integ; +int signgam; +int column; +int intflg; +int echoflg; +int ifile; +int wfile; +int ofile; +int funlc; +int debug; +int ttystat[3]; +int stime[2]; +char *pcp; +int rowsz; +int mencflg; +char *mencptr; +char *memstart; +int pt; +int syze; +int pas1; + +char *continu; + +struct charbox { + char a1,a2; +}; + +struct asoperbox { + unsigned char letters[2]; + int returnchar +}; -- 2.20.1