mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
167 lines
4.9 KiB
Plaintext
167 lines
4.9 KiB
Plaintext
1File: INIT.C Page 1
|
|
1 /*
|
|
2 Copyright 1982
|
|
3 Alcyon Corporation
|
|
4 8716 Production Ave.
|
|
5 San Diego, Ca. 92121
|
|
6 */
|
|
7
|
|
8 #include "icode.h"
|
|
9 #include "machine.h"
|
|
10 /*cexpr operators*/
|
|
11 #define EOF 0
|
|
12 #define SUB 1
|
|
13 #define ADD 2
|
|
14 #define NOT 3
|
|
15 #define NEG 4
|
|
16 #define LPAREN 5
|
|
17 #define RPAREN 6
|
|
18 #define QMARK 7
|
|
19 #define COLON 8
|
|
20 #define OR 9
|
|
21 #define AND 10
|
|
22 #define XOR 11
|
|
23 #define EQUAL 12
|
|
24 #define NEQUAL 13
|
|
25 #define LESS 14
|
|
26 #define LSEQUAL 15
|
|
27 #define GREAT 16
|
|
28 #define GREQUAL 17
|
|
29 #define LSHIFT 18
|
|
30 #define RSHIFT 19
|
|
31 #define MULT 20
|
|
32 #define DIV 21
|
|
33 #define MOD 22
|
|
34 #define COMPL 23
|
|
35 #define CONST 24
|
|
36 #define LASTOP COMPL /*up to here used by cexpr*/
|
|
37 #define SQUOTE 25
|
|
38 #define DQUOTE 26
|
|
39 #define ANYC 27
|
|
40 #define BADC 28
|
|
41 #define COMMA 29
|
|
42 #define NEWL 30
|
|
43 #define POUND 31
|
|
44 #define ALPHA 32
|
|
45 #define DIGIT 33
|
|
46 #define BSLASH 34
|
|
47 #define WHITE 35
|
|
48 #define BUFSIZE 512
|
|
49 #define LINESIZE 512
|
|
50 #define ARG -1
|
|
51 #define NEWLABEL -2
|
|
52 #define LABEL -3
|
|
53 #define NOARGS -4
|
|
54 #define MAXARGS 60
|
|
55 #define ARGBSIZE 1000
|
|
56 #define TOKSIZE 300 /*BUG 4/20/82 was 128*/
|
|
57 #define DEFSIZE 1024
|
|
58 #define PBSIZE 1000
|
|
59 #define DEFINE 1
|
|
1File: INIT.C Page 2
|
|
60 #define UNDEF 2
|
|
61 #define INCLUDE 3
|
|
62 #define IFDEF 4
|
|
63 #define IFNDEF 5
|
|
64 #define ELSE 6
|
|
65 #define ENDIF 7
|
|
66 #define IF 8
|
|
67 #define SKIP 0
|
|
68 #define NOSKIP 1
|
|
69 #define SOH '\01'
|
|
70 #define SSIZE 8
|
|
71 #define HSIZE 517 /* 3.4 made prime */
|
|
72 #define FSTACK 10
|
|
73
|
|
74 #define TRUE 1
|
|
75 #define FALSE 0
|
|
76 #define NDEFS 20
|
|
77
|
|
78 struct symbol {
|
|
79 char s_name[SSIZE];
|
|
80 char *s_def;
|
|
81 } symtab[HSIZE]=0;
|
|
82
|
|
83 /*buffered I/O structure*/
|
|
84 struct ibuf {
|
|
85 int fd;
|
|
86 int nc;
|
|
87 char *bp;
|
|
88 char buffer[BUFSIZE];
|
|
89 } outbuf=0;
|
|
90
|
|
91 /* command line define structure */
|
|
92 struct defstruc {
|
|
93 char *ptr;
|
|
94 char *value;
|
|
95 } defs[NDEFS]=0;
|
|
96
|
|
97 struct stackstruc { /* [vlh] */
|
|
98 int ifd;
|
|
99 char ifile[13];
|
|
100 int lineno;
|
|
101 struct ibuf inbuf;
|
|
102 } filestack[FSTACK]=0, *filep=0; /* stack of incl files, ptr to... */
|
|
103 #ifdef BULLSHIT /* Bullshit, bullshit, bullshit!!!*/
|
|
104 #ifdef VERSADOS
|
|
105 #define NONEST 1
|
|
106 #define NOFORKS 1
|
|
107 #endif
|
|
108
|
|
109 #ifdef VMS
|
|
110 #define NONEST 1
|
|
111 #endif
|
|
112
|
|
113 #ifdef NONEST
|
|
114 struct ibuf holdbuf=0; /* alternate buffer, hold main file info */
|
|
115 #endif
|
|
116 #endif
|
|
117 int mfail=0; /*macro error flag*/
|
|
118 int skip=0; /*skipping current line*/
|
|
1File: INIT.C Page 3
|
|
119 char *defap=0; /*pointer to available define area*/
|
|
120 char *defp=0; /*pointer to next avail define byte*/
|
|
121 int defcount=0; /*bytes left in define area*/
|
|
122 int defused=0; /*number of bytes used in define area*/
|
|
123 int defmax=0; /*maximum define area used*/
|
|
124 int pflag=0;
|
|
125 int asflag=0;
|
|
126
|
|
127 /*line to output after macro substitution*/
|
|
128 char line[LINESIZE+2]=0; /*line buffer*/
|
|
129 char *linep=0; /*current line pointer*/
|
|
130 int loverflow=0; /*line overflow flag*/
|
|
131 int lineno=0;
|
|
132
|
|
133 /*push back buffer*/
|
|
134 char pbbuf[PBSIZE]=0; /*push back buffer*/
|
|
135 char *pbp=0; /*push back pointer*/
|
|
136 int pbflag=0; /*checks for recursive definition*/
|
|
137
|
|
138
|
|
139 char *lookup();
|
|
140 char *setend();
|
|
141 char *makecopy();
|
|
142 char *makecopy();
|
|
143 char *maketemp();
|
|
144 char *sbrk();
|
|
145 struct symbol *getsp();
|
|
146 #define STKLEN 64
|
|
147 int oprstk[STKLEN]=0;
|
|
148 int opnstk[STKLEN]=0;
|
|
149 int pristk[STKLEN]=0;
|
|
150 int *oprptr=0;
|
|
151 int *opnptr=0;
|
|
152 int *priptr=0;
|
|
153
|
|
154 int nincl=0;
|
|
155 char *incl[10]=0;
|
|
156 char tmp[6]=0;
|
|
157 #define CSTKSIZE 20
|
|
158 char cstack[CSTKSIZE]=0;
|
|
159 char *cstkptr=0;
|
|
160 char inclname[TOKSIZE]=0;
|
|
161 int cvalue=0;
|
|
162 #define EXPSIZE 1024
|
|
163 int exprarea[EXPSIZE]=0;
|