[alt.sources] patch to make corewars run under XENIX 286

felix@netmbx.UUCP (Felix Gaehtgens) (02/09/89)

[ here is a patch you need for corewars to run under XENIX 286. it should
work on microport 286 as well, although i haven't tried it.
just feed this article to patch and don't forget to use the -n option for
patch! ]


Index: MakeInt
1c1
< CFLAGS = -DSMALL
---
> CFLAGS = -O -DSMALL -Ml -LARGE
4c4
< 	cc -o interp  main.o load.o output.o play.o inst.o -lcurses -ltermcap
---
> 	cc -g -Zi -Ml -LARGE -F 7000 -o interp  main.o load.o output.o play.o inst.o -lcurses -ltermlib -lx
10c10
< 	cc -c $(CFLAG) load.c -o load.o
---
> 	cc -c $(CFLAGS) load.c -o load.o
19c19
< 	cc -c $(FLAGS) inst.c -o inst.o
---
> 	cc -c $(CFLAGS) inst.c -o inst.o
Index: README
211a212,214
> Felix Gaehtgens ported this version to XENIX 286, making a[] a pointer
> array. He also fixed some bugs where the tty-settings were not reset
> after an exit().
Index: amain.c
10c10
< #include <strings.h>
---
> #include <string.h>
33c33
< 	if (!(dot = rindex(newstr,'.')))
---
> 	if (!(dot = strrchr(newstr,'.')))
Index: inst.c
8a9,10
> #include <sys/types.h>
> #include <ctype.h>
12c14
< extern	cell	a[];		/* core */
---
> extern	cell	*a[];		/* core */
52c54
< 	temp = getdirect(temp, a[temp].para2);	/* This time it's for real */
---
> 	temp = getdirect(temp, a[temp]->para2);	/* This time it's for real */
72c74
< 	exit(1);
---
> 	bye(1);
85c87
< 	if (a[ins].m1 == immed)
---
> 	if (a[ins]->m1 == immed)
89c91
< 		temp.para2 = a[ins].para1;
---
> 		temp.para2 = a[ins]->para1;
94,95c96,97
< 		realpos = getpara(ins, a[ins].m1, a[ins].para1);
< 		temp = a[realpos];
---
> 		realpos = getpara(ins, a[ins]->m1, a[ins]->para1);
> 		temp = *a[realpos];
98c100
< 	if (a[ins].m2 == immed)
---
> 	if (a[ins]->m2 == immed)
102c104
< 		exit(1);
---
> 		bye(1);
105c107
< 		realpos = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		realpos = getpara(ins, a[ins]->m2, a[ins]->para2);
107,108c109,110
< 	a[realpos] = temp;
< 	a[realpos].lastmod = pid;
---
> 	memcpy(a[realpos],&temp,sizeof(cell));
> 	a[realpos]->lastmod = pid;
122,123c124,125
< 	if (a[ins].m1 == immed)
< 		x = a[ins].para1;
---
> 	if (a[ins]->m1 == immed)
> 		x = a[ins]->para1;
125c127
< 		x = a[getpara(ins, a[ins].m1, a[ins].para1)].para2;
---
> 		x = a[getpara(ins, a[ins]->m1, a[ins]->para1)]->para2;
127c129
< 	if (a[ins].m2 == immed)
---
> 	if (a[ins]->m2 == immed)
131c133
< 		exit(1);
---
> 		bye(1);
134c136
< 		realpos = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		realpos = getpara(ins, a[ins]->m2, a[ins]->para2);
136,138c138,140
< 	a[realpos].para2 += x;
< 	a[realpos].lastmod = pid;
< 	correct(&(a[realpos].para2));
---
> 	a[realpos]->para2 += x;
> 	a[realpos]->lastmod = pid;
> 	correct(&(a[realpos]->para2));
152,153c154,155
< 	if (a[ins].m1 == immed)
< 		x = a[ins].para1;
---
> 	if (a[ins]->m1 == immed)
> 		x = a[ins]->para1;
155c157
< 		x = a[getpara(ins, a[ins].m1, a[ins].para1)].para2;
---
> 		x = a[getpara(ins, a[ins]->m1, a[ins]->para1)]->para2;
157c159
< 	if (a[ins].m2 == immed)
---
> 	if (a[ins]->m2 == immed)
161c163
< 		exit(1);
---
> 		bye(1);
164c166
< 		realpos = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		realpos = getpara(ins, a[ins]->m2, a[ins]->para2);
166,168c168,170
< 	a[realpos].para2 -= x;
< 	a[realpos].lastmod = pid;
< 	correct(&(a[realpos].para2));
---
> 	a[realpos]->para2 -= x;
> 	a[realpos]->lastmod = pid;
> 	correct(&(a[realpos]->para2));
177c179
< 	if (a[ins].m2 == immed)
---
> 	if (a[ins]->m2 == immed)
181c183
< 		exit(1);
---
> 		bye(1);
184c186
< 		*pc = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		*pc = getpara(ins, a[ins]->m2, a[ins]->para2);
195,196c197,198
< 	if (a[ins].m2 == immed)
< 		value = a[ins].para2;
---
> 	if (a[ins]->m2 == immed)
> 		value = a[ins]->para2;
199c201
< 		value = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		value = getpara(ins, a[ins]->m2, a[ins]->para2);
201c203
< 		value = a[value].para2;
---
> 		value = a[value]->para2;
209c211
< 		*pc = getpara(ins, a[ins].m1, a[ins].para1);
---
> 		*pc = getpara(ins, a[ins]->m1, a[ins]->para1);
220,221c222,223
< 	if (a[ins].m2 == immed)
< 		value = a[ins].para2;
---
> 	if (a[ins]->m2 == immed)
> 		value = a[ins]->para2;
224c226
< 		value = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		value = getpara(ins, a[ins]->m2, a[ins]->para2);
226c228
< 		value = a[value].para2;
---
> 		value = a[value]->para2;
230c232
< 		*pc = getpara(ins, a[ins].m1, a[ins].para1);
---
> 		*pc = getpara(ins, a[ins]->m1, a[ins]->para1);
242c244
< 	if (a[ins].m2 == immed)
---
> 	if (a[ins]->m2 == immed)
246c248
< 		exit(1);
---
> 		bye(1);
249c251
< 		temp = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		temp = getpara(ins, a[ins]->m2, a[ins]->para2);
251,253c253,255
< 	(a[temp].para2)--;
< 	correct(&(a[temp].para2));
< 	a[temp].lastmod = pid;
---
> 	(a[temp]->para2)--;
> 	correct(&(a[temp]->para2));
> 	a[temp]->lastmod = pid;
255c257
< 	if (!a[temp].para2)
---
> 	if (!a[temp]->para2)
258c260
< 		*pc = getpara(ins, a[ins].m1, a[ins].para1);
---
> 		*pc = getpara(ins, a[ins]->m1, a[ins]->para1);
269,270c271,272
< 	if (a[ins].m1 == immed)
< 		value1 = a[ins].para1;
---
> 	if (a[ins]->m1 == immed)
> 		value1 = a[ins]->para1;
272c274
< 		value1 = a[getpara(ins, a[ins].m1, a[ins].para1)].para2;
---
> 		value1 = a[getpara(ins, a[ins]->m1, a[ins]->para1)]->para2;
274,275c276,277
< 	if (a[ins].m2 == immed)
< 		value2 = a[ins].para2;
---
> 	if (a[ins]->m2 == immed)
> 		value2 = a[ins]->para2;
277c279
< 		value2 = a[getpara(ins, a[ins].m2, a[ins].para2)].para2;
---
> 		value2 = a[getpara(ins, a[ins]->m2, a[ins]->para2)]->para2;
297c299
< 	if (a[ins].m2 == immed)
---
> 	if (a[ins]->m2 == immed)
301c303
< 		exit(1);
---
> 		bye(1);
304c306
< 		newpc = getpara(ins, a[ins].m2, a[ins].para2);
---
> 		newpc = getpara(ins, a[ins]->m2, a[ins]->para2);
310c312
< 		exit(1);
---
> 		bye(1);
Index: load.c
4a5,6
> #include <sys/types.h>
> #include <ctype.h>
9,10c11,12
< #define IO(i,j) if((i) < (j)){printf("error reading file\n");exit(1);}
< extern	cell	a[];
---
> #define IO(i,j) if((i) < (j)){printf("error reading file\n");bye(1);}
> extern	cell	*a[];
66c68
< 		memcpy(&a[(counter+position)%SIZE],&ele[counter],sizeof(memory));
---
> 		memcpy(a[(counter+position)%SIZE],&ele[counter],sizeof(memory));
74c76
< 		a[(counter+position)%SIZE].lastmod = no;
---
> 		a[(counter+position)%SIZE]->lastmod = no;
77,82c79,84
< 			a[(counter+position)%SIZE].inst,
< 			a[(counter+position)%SIZE].para1,
< 			a[(counter+position)%SIZE].para2,
< 			a[(counter+position)%SIZE].m1,
< 			a[(counter+position)%SIZE].m2,
< 			a[(counter+position)%SIZE].lastmod);
---
> 			a[(counter+position)%SIZE]->inst,
> 			a[(counter+position)%SIZE]->para1,
> 			a[(counter+position)%SIZE]->para2,
> 			a[(counter+position)%SIZE]->m1,
> 			a[(counter+position)%SIZE]->m2,
> 			a[(counter+position)%SIZE]->lastmod);
87c89
< 		exit(1);
---
> 		bye(1);
113c115
< 		if (a[(counter+start)%SIZE].lastmod) {
---
> 		if (a[(counter+start)%SIZE]->lastmod) {
Index: lookup.c
17c17
< #include <strings.h>
---
> #include <string.h>
Index: main.c
8d7
< #include <ctype.h>
9a9,13
> #include <ctype.h>
> #include <sys/types.h>
> /* #include <time.h>
> #include <sys/times.h> */
> #include <malloc.h>
16c20
< cell	a[SIZE];
---
> cell	*a[SIZE];
48a53
> 	long	blafasel;
50c55,60
< 	counter = (int) time(0);
---
> 	for (counter=0; counter <= SIZE; counter++)
> 		if (!(a[counter] = (cell *) malloc (sizeof(cell)))) {
> 			printf ("PANIC: can't allocate mem --- initialize\n");
> 			bye(1);
> 		}
> 	counter = (int) time(&blafasel);
52a63
> 	savetty();		/* save tty flags for later */
60c71
< 	for (counter = 0; counter++; counter < SIZE)
---
> 	for (counter = 0; counter < SIZE; counter++)
63a75,83
> 
> bye(whatever)
> int whatever;
> {
> 	resetty();		/* restore tty flags */
> 	exit(whatever);
> }
> 
> 
76c96
< 		exit(1);
---
> 		bye(1);
82c102
< 		exit(1);
---
> 		bye(1);
88c108
< 		exit(1);
---
> 		bye(1);
95c115
< 		exit(1);
---
> 		bye(1);
102c122
< 		exit(1);
---
> 		bye(1);
109c129
< 		exit(1);
---
> 		bye(1);
128c148
< 	getch(errcode);
---
> 	getch();
Index: output.c
6a7,8
> #include <sys/types.h>
> #include <ctype.h>
8c10
< extern	cell	a[];
---
> extern	cell	*a[];
17c19
< 		if (a[i].lastmod == 0)
---
> 		if (a[i]->lastmod == 0)
19c21
< 		else if (a[i].lastmod == 1)
---
> 		else if (a[i]->lastmod == 1)
21c23
< 		else if (a[i].lastmod == 2)
---
> 		else if (a[i]->lastmod == 2)
25c27
< 			printf("\nerror lastmod == %d", a[i].lastmod);
---
> 			printf("\nerror lastmod == %d", a[i]->lastmod);
27c29
< 			exit(1);
---
> 			bye(1);
83c85
< 			if (a[i].lastmod == 0)
---
> 			if (a[i]->lastmod == 0)
85c87
< 			else if (a[i].lastmod == 1)
---
> 			else if (a[i]->lastmod == 1)
87c89
< 			else if (a[i].lastmod == 2)
---
> 			else if (a[i]->lastmod == 2)
93c95
< 				exit(1);
---
> 				bye(1); 
128c130
< 			if (a[i].lastmod == 0)
---
> 			if (*a[i]->lastmod == 0)
130c132
< 			if (a[i].lastmod == 1)
---
> 			if (*a[i]->lastmod == 1)
Index: parse.c
12c12
< #include <strings.h>
---
> #include <string.h>
Index: play.c
8a9,10
> #include <sys/types.h>
> #include <ctype.h>
13c15
< extern  cell	a[];
---
> extern  cell	*a[];
85c87
< 	temp = a[x].inst;
---
> 	temp = a[x]->inst;
117c119
< 		exit(1);
---
> 		bye(1);
Index: tokenize.c
15c15
< #include <strings.h>
---
> #include <string.h>
-- 
BANG: ..pyramid!tub!netmbx!xaos!felix	SMART: felix@xaos.sub
>In as much as a number of excellent hallucinogens already exist, I would not
>reccomend going to the trouble of extracting the adrenal gland from living
>humans.  I personally also have ethical problems with this procedure ....