summaryrefslogtreecommitdiff
path: root/systems/knuth/local/h00vars.h
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /systems/knuth/local/h00vars.h
Initial commit
Diffstat (limited to 'systems/knuth/local/h00vars.h')
-rw-r--r--systems/knuth/local/h00vars.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/systems/knuth/local/h00vars.h b/systems/knuth/local/h00vars.h
new file mode 100644
index 0000000000..288205b459
--- /dev/null
+++ b/systems/knuth/local/h00vars.h
@@ -0,0 +1,143 @@
+/* Header file for C programs that supplement the Pascal code */
+/* Copyright (c) 1979 Regents of the University of California */
+
+/* sccsid[] = "@(#)h00vars.h 1.11 5/8/84"; */
+/* THIS VERSION COMES BACK FROM SUN AND ALLEGEDLY MATCHES OUR CURRENT
+ COMPILER 8/4/84 */
+
+#include <stdio.h>
+/* #include "whoami.h" --- no, don't bother; it's empty --- don (8/7/89) */
+
+#define PXPFILE "pmon.out"
+#define BITSPERBYTE 8
+#define BITSPERLONG (BITSPERBYTE * sizeof(long))
+#define LG2BITSBYTE 03
+#define MSKBITSBYTE 07
+#define LG2BITSLONG 05
+#define MSKBITSLONG 037
+#define HZ 60
+#define MAXLVL 20
+#define MAXERRS 75
+#define NAMSIZ 76
+#define MAXFILES 32
+#define PREDEF 2
+#ifdef ADDR32
+#define STDLVL ((struct iorec *)(0x7ffffff1))
+#define GLVL ((struct iorec *)(0x7ffffff0))
+#endif ADDR32
+#ifdef ADDR16
+#define STDLVL ((struct iorec *)(0xfff1))
+#define GLVL ((struct iorec *)(0xfff0))
+#endif ADDR16
+#define FILNIL ((struct iorec *)(0))
+#define INPUT ((struct iorec *)(&input))
+#define OUTPUT ((struct iorec *)(&output))
+#define ERR ((struct iorec *)(&_err))
+typedef enum {FALSE, TRUE} bool;
+#define MAXINT 2147483647
+#define MININT -2147483648
+
+
+/*
+ * runtime display structure
+ */
+struct display {
+ char *ap;
+ char *fp;
+};
+
+/*
+ * formal routine structure
+ */
+struct formalrtn {
+ long (*fentryaddr)(); /* formal entry point */
+ long fbn; /* block number of function */
+ struct display fdisp[ MAXLVL ]; /* saved at first passing */
+};
+
+/*
+ * program variables
+ */
+extern struct display _disply[MAXLVL];/* runtime display */
+extern int _argc; /* number of passed args */
+extern char **_argv; /* values of passed args */
+extern long _stlim; /* statement limit */
+extern long _stcnt; /* statement count */
+extern long _seed; /* random number seed */
+extern char *_maxptr; /* maximum valid pointer */
+extern char *_minptr; /* minimum valid pointer */
+extern long _pcpcount[]; /* pxp buffer */
+
+/*
+ * file structures
+ */
+struct iorechd {
+ char *fileptr; /* ptr to file window */
+ long lcount; /* number of lines printed */
+ long llimit; /* maximum number of text lines */
+ FILE *fbuf; /* FILE ptr */
+ struct iorec *fchain; /* chain to next file */
+ struct iorec *flev; /* ptr to associated file variable */
+ char *pfname; /* ptr to name of file */
+ short funit; /* file status flags */
+ unsigned short fblk; /* index into active file table */
+ long fsize; /* size of elements in the file */
+ char fname[NAMSIZ]; /* name of associated UNIX file */
+};
+
+struct iorec {
+ char *fileptr; /* ptr to file window */
+ long lcount; /* number of lines printed */
+ long llimit; /* maximum number of text lines */
+ FILE *fbuf; /* FILE ptr */
+ struct iorec *fchain; /* chain to next file */
+ struct iorec *flev; /* ptr to associated file variable */
+ char *pfname; /* ptr to name of file */
+ short funit; /* file status flags */
+ unsigned short fblk; /* index into active file table */
+ long fsize; /* size of elements in the file */
+ char fname[NAMSIZ]; /* name of associated UNIX file */
+ char buf[BUFSIZ]; /* I/O buffer */
+ char window[1]; /* file window element */
+};
+
+/*
+ * unit flags
+ */
+#define SPEOLN 0x100 /* 1 => pseudo EOLN char read at EOF */
+#define FDEF 0x080 /* 1 => reserved file name */
+#define FTEXT 0x040 /* 1 => text file, process EOLN */
+#define FWRITE 0x020 /* 1 => open for writing */
+#define FREAD 0x010 /* 1 => open for reading */
+#define TEMP 0x008 /* 1 => temporary file */
+#define SYNC 0x004 /* 1 => window is out of sync */
+#define EOLN 0x002 /* 1 => at end of line */
+#define EOFF 0x001 /* 1 => at end of file */
+
+/*
+ * file routines
+ */
+extern struct iorec *GETNAME();
+extern char *MKTEMP();
+extern char *PALLOC();
+
+/*
+ * file record variables
+ */
+extern struct iorechd _fchain; /* head of active file chain */
+extern struct iorec *_actfile[]; /* table of active files */
+extern long _filefre; /* last used entry in _actfile */
+
+/*
+ * standard files
+ */
+extern struct iorechd input;
+extern struct iorechd output;
+extern struct iorechd _err;
+
+/*
+ * seek pointer struct for TELL, SEEK extensions
+ */
+struct seekptr {
+ long cnt;
+};