Subject: 2.11BSD completely lacks ANSI C capability Index: cc, cpp, many others Description: The C preprocessor, C compiler lack ANSI C capability. Many sources in the system use old C constructs that are not compatible/allowed by ANSI C. Repeat-By: Observation. Fix: This patch (and a tremendous amount of work) were contributed by Anders Magnusson . I received, at the end of 2019, a very large mail item with the subject line "Subject: First big ANSI patch". In the (lightly edited) words of the person who did all of the work: ===== ccom: Patches to (mostly) c0. Adds about 3k to text and almost nothing to data One new file: ansi.c. Prototype parameter types are stored as first-level only, no dimensions or function pointer parameters. Implicit cast of parameters of different types. Checks old-style function declarations if preceeded by a prototype (as recommended). Also supports string concatenation. cpp: New version of cpp that supports ansi-style preprocessing. This version comes from pcc, it is quite a large rewrite of the old cpp since ANSI require a quite different internal handling (rescanning buffers, argument expansion etc...). src: Many small diffs to fix the source tree to be compilable with an ANSI C compiler, mostly cpp changes. About 111 files are affected. Most notable are changing of concatenation operators from a/**/b to a ## b and the avoidance of stray ' that are illegal in ANSI C. The latter causes some complaints of comments in .s files, solved by adding double slashed causing it to become C99 comments which get stripped in the preprocessor. I have not dealt with ' when used in the assembly code (as in doprnt.s). These .s files uses cpp -t (traditional) for preprocessing. What is NOT in this patch is: - updates to man pages.B Need to modernize the roff macros first. - changes to /usr/include.B That affects lint which I haven't decided how to deal with yet. ===== To apply this patch cut where indicated and save to a tmp file such as /tmp/460.shar. NOTE: 2.11's 'vi' can NOT be used to "cut" / edit because of the size. You will receive a "Tmp file too large" error. Cut and save on another system and transfer the shar archive to the 2.11 system. 'vi' can be rebuilt on 2.11 to allow larger (but NOT unlimited) files and this is being considered for a future patch. Then: cd /tmp # unpack the shar archive sh 460.shar # uudecode (uuencoded because the file is binary data) the CPP tar file uudecode cpp.tar.Z.uu # uncompress the CPP tar file uncompress cpp.tar.Z # Patch, build and install the C compiler backend cd / patch -p0 < /tmp/ccom.patch cd usr/src/lib/ccom make make install # build and install the C compiler frontend cd /usr/src/bin make cc mv /bin/cc /bin/cc.old install -m 755 -o root -g wheel -s cc /bin # Now save the old CPP, unpack thew CPP tar archive, build and install new CPP cd / mv usr/src/lib/cpp usr/src/lib/cpp.old tar xf /tmp/cpp.tar cd usr/src/lib/cpp make mv /lib/cpp /lib/cpp.old make install # Patch the sources which have been updated for ANSI processing rules cd / patch -p0 < /tmp/src.patch # Cleanup if desired. cd /tmp rm cpp.tar cpp.tar.Z.uu ccom.patch src.patch # More cleanup - not necessary but a tidy system is a happy system ;) The patching process creates an old / backup copy of each file as it is patched To see the names of by the old/backup files: find / -name '*~' -print > /tmp/tilde Review /editing of the names in /tmp/tilde. There are 112 files patched by src.patch but more *~ files can be present if previous patches have been applied without cleanup. rm `cat /tmp/tilde` Eventually the saved files /usr/src/lib/cpp.old and /bin/cc.old can also be removed. This and previous updates to 2.11BSD are available at the following locations: ftp://ftp.update.uu.se/pub/pdp11/2.11BSD https://www.tuhs.org/Archive/Distributions/UCB/2.11BSD/Patches/ ftp://ftp.2bsd.com/2.11BSD ---------------------------cut here-------------------- #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create: # ccom.patch # cpp.tar.Z.uu # src.patch # This archive created: Fri Jan 10 16:20:48 2020 export PATH; PATH=/bin:/usr/bin:$PATH if test -f 'ccom.patch' then echo shar: "will not over-write existing file 'ccom.patch'" else sed 's/^X//' << \SHAR_EOF > 'ccom.patch' X*** ./usr/src/bin/cc.c.old Sat Feb 21 09:43:15 1987 X--- ./usr/src/bin/cc.c Tue Jan 7 13:27:47 2020 X*************** X*** 1,4 **** X! static char sccsid[] = "@(#)cc.c 4.13 9/18/85"; X /* X * cc - front end for C compiler X */ X--- 1,7 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)cc.c 5.0 (2.11BSD) 2020/1/7"; X! #endif X! X /* X * cc - front end for C compiler X */ X*************** X*** 184,195 **** X assource = tmp3; X if (pflag) X tmp4 = setsuf(clist[i], 'i'); X! av[0] = "cpp"; av[1] = clist[i]; X! na = 2; X! if (!exflag) X! av[na++] = tmp4; X for (j = 0; j < np; j++) X av[na++] = plist[j]; X av[na++] = 0; X if (callsys(cpp, av)) { X exfail++; X--- 187,199 ---- X assource = tmp3; X if (pflag) X tmp4 = setsuf(clist[i], 'i'); X! av[0] = "cpp"; X! na = 1; X for (j = 0; j < np; j++) X av[na++] = plist[j]; X+ av[na++] = clist[i]; X+ if (!exflag) X+ av[na++] = tmp4; X av[na++] = 0; X if (callsys(cpp, av)) { X exfail++; X*** ./usr/src/lib/ccom/c0.h.old Sat Feb 5 22:14:22 1994 X--- ./usr/src/lib/ccom/c0.h Tue Jan 7 13:20:27 2020 X*************** X*** 2,7 **** X--- 2,10 ---- X * C compiler-- first pass header X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c0.h 2.0 (2.11BSD) 2020/1/7"; X+ #endif X #include X X /* X*************** X*** 364,369 **** X--- 367,376 ---- X #define ENUMTAG 22 X #define ENUMCON 24 X X+ #define SIGNED 5 X+ #define CONST 16 X+ #define VOLATIL 17 X+ X /* X keywords X */ X*************** X*** 385,390 **** X--- 392,398 ---- X /* X characters X */ X+ #define ELLIPS 116 X #define BSLASH 117 X #define SHARP 118 X #define INSERT 119 X*** ./usr/src/lib/ccom/c01.c.old Sat Jul 3 23:33:42 1993 X--- ./usr/src/lib/ccom/c01.c Tue Jan 7 13:21:55 2020 X*************** X*** 2,9 **** X--- 2,15 ---- X * C compiler X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c01.c 2.0 (2.11BSD) 2020/1/7"; X+ #endif X+ X #include "c0.h" X X+ union tree *protochk(); X+ X /* X * Called from tree, this routine takes the top 1, 2, or 3 X * operands on the expression stack, makes a new node with X*************** X*** 135,141 **** X } X if ((t1&XTYPE) != FUNC) X error("Call of non-function"); X! *cp++ = block(CALL,decref(t1),p1->t.subsp,p1->t.strp,p1,p2); X return; X X case STAR: X--- 141,148 ---- X } X if ((t1&XTYPE) != FUNC) X error("Call of non-function"); X! p2 = protochk(p1->t.subsp[0], p2); X! *cp++ = block(CALL,decref(t1),p1->t.subsp+1,p1->t.strp,p1,p2); X return; X X case STAR: X*************** X*** 238,243 **** X--- 245,251 ---- X t = t1; X if (op==ASSIGN) { X if (cvn==PTI) { X+ if (t1 != (PTR|VOID) && t2 != (PTR|VOID)) X if (t1!=t2 || ((t1&TYPE)==STRUCT && p1->t.strp!=p2->t.strp)) X werror("mixed pointer assignment"); X cvn = leftc = 0; X*** ./usr/src/lib/ccom/c02.c.old Sat Jul 3 23:33:45 1993 X--- ./usr/src/lib/ccom/c02.c Tue Jan 7 13:22:11 2020 X*************** X*** 1,6 **** X--- 1,9 ---- X /* X * C compiler X */ X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c02.c 2.0 (2.11BSD) 2020/1/7"; X+ #endif X X #include "c0.h" X X*************** X*** 52,57 **** X--- 55,65 ---- X outcode("BS", SYMDEF, sclass==EXTERN?ds->name:""); X cfunc(); X return; X+ } else if (peeksym == COMMA || peeksym == SEMI) { X+ /* clear potential named args */ X+ blklev++; X+ blkend(); X+ paraml = NULL; X } X if (paraml) X error("Inappropriate parameters"); X*************** X*** 687,692 **** X--- 695,701 ---- X register char *st; X X pl = STARG; X+ protokrchk(paraml); X while(paraml) { X parame->sparent = NULL; X cs = paraml; X*** ./usr/src/lib/ccom/c03.c.old Sat Jul 3 23:33:49 1993 X--- ./usr/src/lib/ccom/c03.c Tue Jan 7 13:22:29 2020 X*************** X*** 5,10 **** X--- 5,13 ---- X * externals. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c03.c 2.0 (2.11BSD) 2020/1/7"; X+ #endif X #include "c0.h" X X /* X*************** X*** 87,92 **** X--- 90,100 ---- X cval = INT; X goto types; X X+ case CONST: X+ case VOLATIL: X+ case SIGNED: X+ continue; X+ X case UNION: X case STRUCT: X tptr->hstrp = strdec(ismos, cval); X*************** X*** 338,344 **** X if (tptr->hsubsp) { X type = tptr->htype; X for (a=0; type&XTYPE;) { X! if ((type&XTYPE)==ARRAY) X dim.dimens[dim.rank++] = tptr->hsubsp[a++]; X type >>= TYLEN; X } X--- 346,352 ---- X if (tptr->hsubsp) { X type = tptr->htype; X for (a=0; type&XTYPE;) { X! if ((type&XTYPE)==ARRAY || ((type&XTYPE)==FUNC)) X dim.dimens[dim.rank++] = tptr->hsubsp[a++]; X type >>= TYLEN; X } X*************** X*** 384,390 **** X } else X defsym = dsym = pushdecl(dsym); X } X! if (dim.rank == 0) X dsym->hsubsp = NULL; X else { X /* X--- 392,400 ---- X } else X defsym = dsym = pushdecl(dsym); X } X! if ((dsym->htype&XTYPE)==FUNC) { X! declproto(dsym, &dim); /* for functions check prototype */ X! } else if (dim.rank == 0) X dsym->hsubsp = NULL; X else { X /* X*************** X*** 393,412 **** X * and .c file both declare a variable. X */ X if (dsym->hsubsp) { X! for (a=0, t1 = dsym->htype; X! a>= TYLEN) X! /* X! * If we haven't seen a declaration for this X! * dimension yet, take what's been given now. X! */ X! if (!dsym->hsubsp[a]) X! dsym->hsubsp[a] = dim.dimens[a]; X! else if (dim.dimens[a] X! && dim.dimens[a] != dsym->hsubsp[a]) X! redec(); X! if (ahsubsp) { X! for (a=0, t1 = dsym->htype; t1&XTYPE; t1 >>= TYLEN) { X! if ((t1 & XTYPE) == PTR) X! continue; X! if ((t1 & XTYPE) == FUNC) { X! /* protocheck() */ ; X! } else { /* (t1 & XTYPE) == ARRAY */ X! if (!dsym->hsubsp[a]) X! dsym->hsubsp[a] = dim.dimens[a]; X! else if (dim.dimens[a] X! && dim.dimens[a] != dsym->hsubsp[a]) X! redec(); X! } X! a++; X! } X! if (a != dim.rank) X! error("compiler array botch"); X } else { X dp = (int *)Dblock(dim.rank*sizeof(dim.rank)); X for (a=0; adimens[dimp->rank++] = ansidecl(); X! defsym = ds; X! blklev--; X! X! if ((o=symbol()) != RPARN) X! goto syntax; X if (type&BIGTYPE) { X typov(); X type = 0; X*** ./usr/src/lib/ccom/c04.c.old Sat Jul 3 23:33:51 1993 X--- ./usr/src/lib/ccom/c04.c Tue Jan 7 13:22:45 2020 X*************** X*** 2,7 **** X--- 2,10 ---- X * C compiler X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c04.c 2.0 (2.11BSD) 2020/1/7"; X+ #endif X #include "c0.h" X X /* X*************** X*** 163,168 **** X--- 166,173 ---- X X if (p==0 || ((t=p->t.type)&~TYPE) == 0) /* not a reference */ X return(1); X+ if ((t & TYPE) == VOID) X+ t = (t & ~TYPE) | CHAR; /* avoid void pointer errors */ X p->t.type = decref(t); X l = length(p); X p->t.type = t; X*** ./usr/src/lib/ccom/c12.c.old Sat Jul 3 23:34:19 1993 X--- ./usr/src/lib/ccom/c12.c Tue Jan 7 13:23:22 2020 X*************** X*** 2,7 **** X--- 2,11 ---- X * C compiler part 2 -- expression optimizer X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c12.c 2.0 (2.11BSD) 2020/1/7"; X+ #endif X+ X #include "c1.h" X #include /* for MAX */ X X*************** X*** 264,270 **** X X constant: X if (tree->t.tr1->t.op==CON && tree->t.tr2->t.op==CON) { X! const(op, &tree->t.tr1->c.value, tree->t.tr2->c.value, tree->t.type); X return(tree->t.tr1); X } X X--- 268,274 ---- X X constant: X if (tree->t.tr1->t.op==CON && tree->t.tr2->t.op==CON) { X! Xconst(op, &tree->t.tr1->c.value, tree->t.tr2->c.value, tree->t.type); X return(tree->t.tr1); X } X X*************** X*** 672,678 **** X if (t2[0]->t.op==CON && t2[-1]->t.op==CON) { X acl.nextl--; X t2--; X! const(op, &t2[0]->c.value, t2[1]->c.value, d); X t2[0]->t.type = d; X } else if (t = lconst(op, t2[-1], t2[0])) { X acl.nextl--; X--- 676,682 ---- X if (t2[0]->t.op==CON && t2[-1]->t.op==CON) { X acl.nextl--; X t2--; X! Xconst(op, &t2[0]->c.value, t2[1]->c.value, d); X t2[0]->t.type = d; X } else if (t = lconst(op, t2[-1], t2[0])) { X acl.nextl--; X*************** X*** 871,877 **** X *np = *(np+1); X } X X! const(op, vp, v, type) X register int *vp, v; X { X switch (op) { X--- 875,881 ---- X *np = *(np+1); X } X X! Xconst(op, vp, v, type) X register int *vp, v; X { X switch (op) { X*************** X*** 967,973 **** X *vp &= ~ v; X return; X } X! error("C error: const"); X } X X union tree * X--- 971,977 ---- X *vp &= ~ v; X return; X } X! error("C error: Xconst"); X } X X union tree * X*** ./usr/src/lib/ccom/c00.c.old Fri Jan 5 22:12:17 1996 X--- ./usr/src/lib/ccom/c00.c Tue Jan 7 13:21:32 2020 X*************** X*** 1,7 **** X /* C compiler X * X- * 2.1 (2.11BSD) 1996/01/04 X- * X * Called from cc: X * c0 source temp1 temp2 [ profileflag ] X * temp1 gets most of the intermediate code; X--- 1,5 ---- X*************** X*** 8,13 **** X--- 6,15 ---- X * strings are put on temp2, which c1 reads after temp1. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)c00.c 2.2 (2.11BSD) 2020/1/7"; X+ #endif X+ X #include "c0.h" X X int isn = 1; X*************** X*** 49,54 **** X--- 51,61 ---- X "typedef", TYPEDEF, X "enum", ENUM, X "asm", ASM, X+ X+ /* new keywords */ X+ "const", CONST, X+ "volatile", VOLATIL, X+ "signed", SIGNED, X 0, 0, X }; X X*************** X*** 63,69 **** X register unsigned i; X register struct kwtab *ip; X char buf1[BUFSIZ], X! buf2[BUFSIZ]; X X if (argc>1 && strcmp(argv[1], "-u")==0) { X argc--; X--- 70,77 ---- X register unsigned i; X register struct kwtab *ip; X char buf1[BUFSIZ], X! buf2[BUFSIZ], X! buf3[BUFSIZ]; X X if (argc>1 && strcmp(argv[1], "-u")==0) { X argc--; X*************** X*** 85,90 **** X--- 93,99 ---- X } X setbuf(stdout,buf2); /* stdio sbrk problems */ X setbuf(sbufp, sbuf); X+ protosetup(buf3); X /* X * Overlays: allow an extra word on the stack for X * each stack from to store the overlay number. X*************** X*** 235,241 **** X--- 244,252 ---- X peekc = getchar(); X } X if (peekc != '\n') { X+ #ifdef notdef X error("Illegal #"); X+ #endif X while (getchar()!='\n' && eof==0) X ; X } X*************** X*** 299,304 **** X--- 310,324 ---- X return(0); X X case PERIOD: X+ if ((c = getchar()) == '.') { X+ if ((c = getchar()) == '.') X+ return ELLIPS; X+ error("Too many '.'"); X+ } else { X+ ungetc(c, stdin); X+ c = '.'; X+ } X+ /* FALLTHROUGH */ X case DIGIT: X peekc = c; X return(getnum()); X*************** X*** 458,464 **** X max = 10000; X } else X outcode("B", BDATA); X! while ((c = mapch('"')) >= 0) { X if (nchstr < max) { X nchstr++; X if (nchstr%15 == 0) X--- 478,484 ---- X max = 10000; X } else X outcode("B", BDATA); X! more: while ((c = mapch('"')) >= 0) { X if (nchstr < max) { X nchstr++; X if (nchstr%15 == 0) X*************** X*** 466,471 **** X--- 486,495 ---- X outcode("1N", c & 0377); X } X } X+ if (nextchar() == '"') { X+ peekc = 0; X+ goto more; X+ } X if (nchstr < max) { X nchstr++; X outcode("10"); X*************** X*** 479,487 **** X register int c; X X nchstr = 1; X! while ((c = mapch('"')) >= 0) { X nchstr++; X } X } X X /* X--- 503,515 ---- X register int c; X X nchstr = 1; X! more: while ((c = mapch('"')) >= 0) { X nchstr++; X } X+ if (nextchar() == '"') { X+ peekc = 0; X+ goto more; X+ } X } X X /* X*************** X*** 615,623 **** X--- 643,653 ---- X } X if (cs->hclass==0 && cs->htype==0) X if(nextchar()=='(') { X+ static int pstore; X /* set function */ X cs->hclass = EXTERN; X cs->htype = FUNC; X+ cs->hsubsp = &pstore; /* no prototype */ X } else { X cs->hclass = STATIC; X error("%s undefined; func. %s", cs->name, X*** ./usr/src/lib/ccom/Makefile.old Sat Jul 3 23:33:33 1993 X--- ./usr/src/lib/ccom/Makefile Tue Jan 7 13:08:55 2020 X*************** X*** 6,15 **** X LIB=/lib X X all: c0 c1 cvopt X! c0: c00.o c01.o c02.o c03.o c04.o c05.o X! ${CC} ${LDC0FLAGS} ${CFLAGS} -o c0 c00.o c01.o c02.o c03.o c04.o c05.o X X! c00.o c01.o c02.o c03.o c04.o c05.o: c0.h X X c1: c10.o c11.o c12.o c13.o table.o X ${CC} ${LDC1FLAGS} ${CFLAGS} -o c1 c10.o c11.o c12.o c13.o table.o X--- 6,16 ---- X LIB=/lib X X all: c0 c1 cvopt X! c0: c00.o c01.o c02.o c03.o c04.o c05.o ansi.o X! ${CC} ${LDC0FLAGS} ${CFLAGS} -o c0 c00.o c01.o c02.o c03.o c04.o \ X! c05.o ansi.o X X! c00.o c01.o c02.o c03.o c04.o c05.o ansi.o: c0.h X X c1: c10.o c11.o c12.o c13.o table.o X ${CC} ${LDC1FLAGS} ${CFLAGS} -o c1 c10.o c11.o c12.o c13.o table.o X*** /dev/null Tue Jan 7 16:13:07 2020 X--- ./usr/src/lib/ccom/ansi.c Tue Jan 7 13:19:58 2020 X*************** X*** 0 **** X--- 1,355 ---- X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)ansi.c 1.0 (2.11BSD) 2020/1/7"; X+ #endif X+ X+ #include "c0.h" X+ X+ #define ANSIDEBUG X+ X+ /* Used in prototype storage */ X+ #define ELLIPSIS (PTR|AUTO) /* impossible type */ X+ #define PNULL (PTR|REG) /* impossible type */ X+ X+ #define ISPTR(t) (((t) & XTYPE) == PTR) X+ #define ISFTN(t) (((t) & XTYPE) == FUNC) X+ #define ISARY(t) (((t) & XTYPE) == ARRAY) X+ X+ static FILE *protofile; X+ #define protopos(poff) fseek(protofile, (long)poff, 0); X+ #define protoget() getw(protofile) X+ #define protobase() ftell(protofile) X+ #define pushproto(t) putw(t, protofile) X+ X+ #define NCPROT 20 /* max number of args checked */ X+ /* X+ * Check for (and declare) an ANSI-style function (or prototype). X+ */ X+ ansidecl() X+ { X+ static struct nmlist argtype; X+ register int s, pp; X+ struct nmlist nm, nm2; X+ struct tdim dim; X+ int skw, t, i, rv; X+ int prot[NCPROT]; X+ X+ if ((peeksym = s = symbol()) == RPARN) X+ return 0; X+ X+ /* identifier list? */ X+ if (s == NAME && csym->hclass != TYPEDEF) { X+ declare(ARG1, &argtype, 0); X+ peeksym = RPARN; X+ return 0; X+ } X+ pp = 0; X+ X+ /* special case: x(void); or x(void){ */ X+ if (s == KEYW && cval == VOID && nextchar() == ')') { X+ peeksym = -1; X+ fseek(protofile, (long)0, 2); X+ rv = (int)protobase(); X+ goto ret; X+ } X+ X+ do { X+ skw = ARG; X+ if ((s = symbol()) == ELLIPS) X+ break; X+ peeksym = s; X+ X+ memset(&nm, 0, sizeof(nm)); X+ memset(&nm2, 0, sizeof(nm2)); X+ if (getkeywords(&skw, &nm) == 0) X+ error("prototype error"); X+ dim.rank = 0; X+ X+ s = getype(&dim, &nm2); X+ t = nm.htype & ~TYPE; /* s = t1, t = type */ X+ while (s & XTYPE) { X+ t = t << TYLEN | (s & XTYPE); X+ s >>= TYLEN; X+ } X+ t |= (nm.htype & TYPE); X+ if (ISARY(t)) X+ t = t - ARRAY + PTR; X+ if (pp < NCPROT) X+ prot[pp++] = t; X+ /* X+ * Declaration of functions are only when blklev == 1, X+ * otherwise it's a prototype. X+ * For other declarations, fake an auto variable. X+ */ X+ if (blklev == 1 && defsym) { X+ if (paraml==NULL) X+ paraml = defsym; X+ else X+ parame->sparent = (union str *)defsym; X+ parame = defsym; X+ X+ defsym->hclass = skw; X+ defsym->htype = t; X+ if (dim.rank) X+ defsym->hsubsp = X+ (int *)Dblock(dim.rank * sizeof(int)); X+ for (i = 0; i < dim.rank; i++) X+ defsym->hsubsp[i] = dim.dimens[i]; X+ defsym->hstrp = nm.hstrp; X+ } else if (defsym) { /* && blklev > 1 */ X+ if (defsym->hblklev == blklev) X+ defsym->hclass = AUTO; X+ } X+ s = symbol(); X+ } while (s == COMMA); X+ X+ fseek(protofile, (long)0, 2); X+ rv = (int)protobase(); X+ for (t = 0; t < pp; t++) X+ pushproto(prot[t]); X+ X+ if (s == ELLIPS) { X+ pushproto(ELLIPSIS); X+ } else X+ peeksym = s; X+ X+ ret: pushproto(PNULL); X+ X+ /* X+ * Use the block end cleanup routines to remove unused variables. X+ */ X+ if (blklev > 1) { X+ blkend(); X+ blklev++; X+ } X+ return rv; X+ } X+ X+ protosetup(buf) X+ char *buf; X+ { X+ static char tbuf[] = "/tmp/proto.XXXXXX"; X+ X+ mktemp(tbuf); X+ protofile = fopen(tbuf, "w+"); X+ setbuf(protofile, buf); X+ unlink(tbuf); X+ pushproto(0); /* not first entry */ X+ } X+ X+ static int prv; X+ X+ /* X+ * check prototype against arguments. X+ * return -1 on error, 0 on OK, 1 if ... X+ */ X+ static union tree * X+ cktypep(p) X+ register union tree *p; X+ { X+ register t, u; X+ int e; X+ X+ if (prv) X+ return p; X+ X+ if ((t = protoget()) == ELLIPSIS) { X+ prv = 1; /* anything is accepted, check no more */ X+ return p; X+ } X+ if (t == (u = p->t.type)) X+ return p; /* same type, correct */ X+ X+ e = nerror; X+ *cp++ = block(ETYPE, t, 0, 0, 0, 0); X+ *cp++ = p; X+ build(CAST); X+ p = *--cp; X+ if (e == nerror) { X+ if ((t == (PTR|VOID) && ISPTR(u)) || X+ (ISPTR(t) && u == (PTR|VOID))) X+ ; X+ else if (ISPTR(t) && ISPTR(u)) X+ werror("mixed pointer assignment"); X+ else if (ISPTR(t) && u == INT && X+ p->t.op == CON && p->c.value == 0) X+ ; X+ else if (ISPTR(t) || ISPTR(u)) X+ werror("illegal combination of pointer and integer"); X+ } X+ return p; X+ } X+ X+ static union tree * X+ pcheck(p) X+ register union tree *p; X+ { X+ X+ if (p->t.op == COMMA) { X+ p->t.tr1 = pcheck(p->t.tr1); X+ p->t.tr2 = cktypep(p->t.tr2); X+ } else X+ p = cktypep(p); X+ return p; X+ } X+ X+ union tree * X+ protochk(poff, p) X+ register union tree *p; X+ { X+ register i; X+ X+ if (poff == 0) X+ return p; /* no prototype */ X+ protopos(poff); X+ if (p->t.op == NULLOP) { /* x(); */ X+ if (protoget() != PNULL) X+ goto perr; X+ return p; X+ } X+ prv = 0; X+ p = pcheck(p); X+ if (prv >= 0) { X+ if (prv == 0 && (i = protoget()) != PNULL && i != ELLIPSIS) X+ goto perr; X+ return p; X+ } X+ X+ perr: error("call do not match prototype"); X+ return p; X+ } X+ X+ /* X+ * Check correctness of a function redeclaration. X+ */ X+ declproto(sym, dim) X+ struct nmlist *sym; X+ struct tdim *dim; X+ { X+ register i; X+ int prot[NCPROT]; X+ X+ if (dim->rank == 0 || dim->dimens[0] == 0) X+ return; /* no new prototype */ X+ if (sym->hsubsp == NULL || sym->hsubsp[0] == 0) { X+ /* prototype declared */ X+ sym->hsubsp = (int *)Dblock(dim->rank*sizeof(dim->rank)); X+ for (i = 0; i < dim->rank; i++) X+ sym->hsubsp[i] = dim->dimens[i]; X+ return; X+ } X+ /* compare prototypes. Only the first 20 */ X+ protopos(dim->dimens[0]); X+ i = 0; X+ do { X+ prot[i++] = protoget(); X+ } while (i < NCPROT && prot[i-1] != PNULL); X+ protopos(sym->hsubsp[0]); X+ i = 0; X+ do { X+ if (prot[i++] != protoget()) { X+ error("%s redeclared", sym->name); X+ break; X+ } X+ } while (i < NCPROT && prot[i-1] != PNULL); X+ } X+ X+ /* X+ * verify that an old-style function matches a previous prototype. X+ */ X+ protokrchk(l) X+ register struct nmlist *l; X+ { X+ register i, j; X+ int prot[NCPROT]; X+ X+ if (l == NULL || funcsym->hsubsp == NULL || funcsym->hsubsp[0] == 0) X+ return; /* no prototype */ X+ i = 0; X+ while (l && i < NCPROT) { X+ prot[i] = l->htype; X+ if (ISARY(prot[i])) X+ prot[i] = prot[i] - ARRAY + PTR; X+ i++; X+ l = &l->sparent->P; X+ } X+ if (i < NCPROT) X+ prot[i] = PNULL; X+ X+ protopos(funcsym->hsubsp[0]); X+ i = 0; X+ do { X+ if ((j = protoget()) == ELLIPSIS) X+ continue; X+ if (prot[i++] != j) { X+ error("%s prototype error", funcsym->name); X+ break; X+ } X+ } while (i < NCPROT && prot[i-1] != PNULL); X+ } X+ X+ #ifdef ANSIDEBUG X+ /* X+ * output a nice description of the type of t X+ */ X+ tprint(t) X+ { X+ char *s; X+ static char * tnames[] = { X+ "int", X+ "char", X+ "float", X+ "double", X+ "struct", X+ "??? 5 ", X+ "long", X+ "unsigned", X+ "uchar", X+ "ulong", X+ "void", X+ "...", X+ "??? 12 ", X+ "??? 13 ", X+ "PNULL", X+ "??? 15 ", X+ }; X+ X+ for(;; t = decref(t)) { X+ if (ISPTR(t)) X+ s = "PTR "; X+ else if (ISFTN(t)) X+ s = "FTN "; X+ else if (ISARY(t)) X+ s = "ARY "; X+ else { X+ fprintf(stderr, "%s", tnames[t]); X+ return; X+ } X+ fprintf(stderr, "%s", s); X+ } X+ } X+ X+ prtp(p, t) X+ char *p; X+ { X+ fprintf(stderr, "%s: ", p); X+ tprint(t); X+ fprintf(stderr, "\n"); X+ } X+ X+ prsp(p, sp) X+ char *p; struct nmlist *sp; X+ { X+ fprintf(stderr, "%s: nmlist %p\n", p, sp); X+ if (sp == NULL) X+ return; X+ fprintf(stderr, "class %d flags %x type %x offset %d blklev %d name %s\n", sp->hclass, sp->hflag, sp->htype, sp->hoffset, sp->hblklev, sp->name); X+ } X+ X+ prpr(c, p) X+ char *c; X+ union tree *p; X+ { X+ fprintf(stderr, "%s %o) op %d type %x tr1 %o tr2 %o\n", X+ c, p, p->t.op, p->t.type, p->t.tr1, p->t.tr2); X+ } X+ #endif X*** ./VERSION.old Sat Jan 4 07:51:14 2020 X--- ./VERSION Tue Jan 7 13:55:41 2020 X*************** X*** 1,5 **** X! Current Patch Level: 459 X! Date: January 4, 2020 X X 2.11 BSD X ============ X--- 1,5 ---- X! Current Patch Level: 460 X! Date: January 7, 2020 X X 2.11 BSD X ============ SHAR_EOF fi if test -f 'cpp.tar.Z.uu' then echo shar: "will not over-write existing file 'cpp.tar.Z.uu'" else sed 's/^X//' << \SHAR_EOF > 'cpp.tar.Z.uu' Xbegin 644 cpp.tar.Z XM'YV,=>;(>2%PS`LV:<2\&`,'S@L`$"-*G$BQHL6+&#-JI`BBXXT:-4``Z$@2 XMADB2'4V.1,G29(P9-F#4B&$C!@P8-DC:V&ECY,:?0(,*'4JTJ-&C2),J73+BPX8LF8=:4,9.&31FG8(7JI$'C)$J5+;;F'X#,NWK]^_@`,+'DQX1`*L6KEZ32##!8P$*!K'B"%D"I$4(&3`T/PB XMQHL;"D8H"`TBC1D0;<*,09/&31D0:,+,`3&G#)PP9WD!1$%4XI`,<(D XMR)$>+=(HL-($RI$I('J`H$FZ#)O:I)D0(6X<>@_2S)U[!T&CNALRID_@W11^C,00'"#HD8*`+;X#`T!@,@D#' XM&UJYP:`""9"`PA!#8*;A>L4]YR$*P0T7(F8M-&B@@PU%^&"$$U8880MLV-&& XM&05Z%88;"&(H1QOPG::"BPV-UMH<=(3!!AL(L@@'ADBFG';JZ:>@*O6" XM"FN1D`09.K`8*`MV3.<"#IG!0-,+,.!`*ZPTZ3`##CK(D,.689QQQFM%X'$@ XM"6NI\,)H(YB60`AD;-5:&62@@)`;=&!F@@D@1,N5:]42\<04'$Z1@@)(ZI;& XM&`K&)D<"5(<=L6)WA1D!SO,$C XM"KD)6P80;-1!!ADNY$P'&B[4EH(+%I,:Q)0=?TS';'*449L<=E!+],5%@R`% XMM6D@V;$8=="1ALP@[$@&"`&]UAIM;]2QYVMB@R!&:[CE`8(9;_PX!PMBIO$S XM"'7G_7/:=%3=QAOH<36&NC+CC=MK<*CK2H!?1E XMTTF>O7G88KP1M8,:<^PQR%63Y(:7ZY:!]\]9@X`0DGR?-KK$IM\>]GF8<_Z& XMYZ"[$29Z\;(11AIMJ#PUJ8W%SCX=6]=^>FD\ONU&W'.K&Y#:(+PMV89+9*A# XM[\J'/.7YKGE)@][%4#(]K_7N>JR9S?:^E#OF@<]VLVG;\3K'AL^%KEM9&X/[ XMX*ATAPQO&4(?X80MQ/!+;"_KF)3+)`36Z45D:E#2;R2G/`(50#"?)B2!"HM XM#(Q;C.00JE`<.4*A"E*`PKC:R$40N(E`\CU%L$(1:`F"*?B2 XM"4Q8(Q+:^$8D.%,(79P/,)G0Q6;*T8]J=!,7AT`%2O+Q344@*`L.:]3A>`L=((JA>A'K2E&9%)A"EB]9U(9V[!,$0W!B XM14J%1RJTG95-`D%)>5'%GI*QSNRI%*A0-13`%).:/`(HBW"$^1QAG58%K!Q% XM.4\I7(&*1<#,%JDXTW(*MK%!..PG<=G*KG;QBH3]HA6QV,@B9%2=YDS"?8)` XM!#+V%;#W::4VIS`%^@CSL]AM9Q5ZZ; XME;60;C]LENZ2M!L;+@V]S&J-"G7V&A$L"`TB&$VZ+,B_+XTA1@]3`!WRT#AO XMT09_"OP2^?CX,*UE&`3DRT,>IA>M"-OA#?4"01Q*J#$4G#C%*%"!&>K@AA2@ XMX*\J2`'><.R&&."M-5\*`PQ^C*VP^;C!89,!D8,\@Q0\[,5CFP,:S$`'%Z.8 XM#$Y6`)!!(.+ZUL;*]9QWRNLY\#C>@^CZT,<7"-H!--:#L/J\J- XM5O2CV;"R23N:S'!@P^/TXS3V^ XM]9QED.710!E=4ZXRE,^U!PP]F$+Y$K%7\(""+!-(R]A20)=Q\^5A*Z#8"?AK XMCR,,KV`W^V$)*//D4&""02?`-`3K,8,.U`/IP.!<"0BW'+AT9A&@IW+T`IL8 XMY*8'E;U!!%D^]VE$%B,0A$`ZC70"O.5-;Q2(0`TT7D/8J-Q"<3=M#OEV`\#! XM33RUS0S(*5#W>;X@:S8\[-D5FV`92EZ'((:->6T(->L8US0C]@[C?=,OF`& XM<'>;RM_&$(%0OEZ5L]SE/TC5]TIG.R+^_,H*@#2*FNX"*;7)+K1 XMF`P;QY#BJ\QXIL>YW$V&_,![W`(?C+SDF"D\ZUU/!I(K*5]N:,SKE82WV6L, XM]XW1&+BM@YUXSW[W3)*.&V;@`N3W/@:M_[WRF2]\!3P;Z'@^<3V_+'&$6]#!D'ZWWUR7\-=_&1@-*[YS'WOM]C0(&0)FG;QX$LMH"7IG]%$`4[YESJAWX5"'271G<) XM^(+AQVEW$X)X(,`V'X6&'>A-FI0V(%E@&IVT(`K8(0M4()=B()?6(:I-H92Z&IMT(`J8(0O XM8(0E,($5F'*DP@3?)R$-LG)*TG*[$393HC$JHQMU@SL\(S)*'G,*`/. XMJ(S(QHQ-!@)*)WW4N`9>-WIA%V^B2&ZY%W#A5G(H8&M""`*.%W!CIV#\M2X@ XM\&LN4T.T5F1OH&M[AH`)X'OLQF4C1CAEL&[@=GRU5W+)]H_1TGP%J23@YHU] XM6':D@@3/XS1?4HF]$RUNL$"*F!L3LC(@L`(@5D-"-`82XCAP(LMU((^TI)(TD*UEB]2EWA*M!H$\P9)9VRR\1HGX`>5YY.U474A,)0*\I-5 XMEX:NDY1%>0)KV)1?1WI>-W.O]G2$&&?WF(XG&&]BT#19P6V'4Y1.4`5-@$]2 XMT)1C^1I54)9GN4M2.8]M<([/1XY?^6?<.!I."90H@)13^8WA9F:]2(Z1MXR4 XMEP)8AXV%]Y?DF`!W&9:%1R#Q-BK,%%%,($5B5`5'@`07LRP)X"UA4`=LT#J% XMEWEY)@)B$`9C0X6]NPV_^QC\G5B.7HRQZ29DT!D`:,QL."G5.)XT`VI/Q-@MY95)Y2I\J*W)QU^ XM@*,F5Z)X.:-*>0)'>:/01WLLFB\AP*-8]9^@9)9H&:,FZG62:7AT@'AB!P)Z XMZ7?O*5O.M"TA6)\+R08ARJ/YQZI512JLC2J1@>J0KH'R[RJ)0^J/& XMFJ+(:J0&V0+,FJPPZJ.0B:(/.*WVR0?72JT,J:VV2:,G(('>RJM>$*[(]ZS; XM:JXDF*Y':@+L&J;N6JY*>87R:I`\P`/UZJSD"FXT.H/[FJ-?*J[)]Z_9^JJ< XM>J\"JY3*5+`M2J941Y\(NZ3`VJ0-&["/:J'_&:RP&J(<^JD>&JJ':JYW*+$7 XMH[#C.JOQ9JYYJ+(OP+(]ZK(HNH\R@.ZBJTM6ZPO XM&Z1("+0':Y\^4+07R[%)6Y3\Q+1DZJ]0VZY2*Z*O9;5">Z0^L+-;2Z-:J+(^ XM$+99:Z];*YE]0&;7\1J42:G"VIF'.K)T`*H:$Z(HJZ)?6P<&J0+_ZK='"ZU3 XM"Y0QV[2U)[A,,K-I^P6*R[.%6W4XB[B.:Y`ZV[B/.[9!^K.4J[BXU[?\BKG9 XM:K/FNK2=:Y!!FZR>^[06.W*92[KY6@3RZKFI:Z2>B[6MF[BCB[1<*[NG:[`K XMNKJ!N[N$*Z)E^[M,IN`2B!]*K4T&K&4B[K5>WL5VZP+F['""KG/ XMYK'`"K*<*K(=^J%Z&Z0I>[U,`KB-2[S-"[-\:[2+*[:P^Y232Z:7F[L`6[]` XMR;FY>K7MR[PG6KI\FR=2T2=5X1`+$@.ATA2%LBAH<1:+,AV50A:0$A.2`@,T XM8`/2Z!$V4`,RH"D-/,(D7,(F?,)+X0)<(`(9#$8FB7'%.2%D4QMX,SH;@S>#4SAYH#CGL4,_U$2TVC>B##AS4R:E,1L^5`;[!@)GD!O8 XM0BUX8T25$RVKF3D,%`;)$S5];,C.HS0@1CT+)$(91(E_G''!;$%LTQ!_IITY XM-"6&G`9.0S1(W,>MM%Q9M$5=]$5A-$8.=48B8$=>-`5?+*>MY$9P]$]_%5*T XM)`7T\49Q!!W?=$E!@$A];)G`Y4B0)$G0<5M29#6LM45GU%/RI%Q7E,W==%HR XMM4DG`T^N!`6*]!M(G,^S5$M;E4N[U$N_Y%G$M'_,E$R$I!^2%4H@@%?LY$[X XMC,[VI,X2O<*3U<[O+%K0@4^[U5T,_03#=1_.)%GLK$R&;4[^S)G%%1RR!4:[Y$\LY=?895_!>#<$>!OD4^/=(BUNH#<@M%#LZN.^_27)$3-#T`(YD`/H XMTCAC8!KK@N='#`5/PN(.[@(:WAHBWAJ=_"4QGCU$U""EWG9L@#>BS#==<^U]#CD1(^7*'G]G XM7NWCWC6ED>I>LNJU+#67GNEDPC=P$#XAU#1A,QLD]#ESX#HN(`1,T@))$B8M XM`#IDL#=$T-M*;MXGHP!&T#>R41MM(`9>(0<)KS=HT`(K`NI=DRKX\V<:)C,M XM@!Y-\V#S]1K7XC07AAM>HSX*$.YA``(CT.\PI^;4_/#Y/00*0`0-HNIECAMH XM/N@Z?\0\?]X6KAKL[03N#=_M7>#U_03W/01@>8@U[^7>TAIRWC];43LSRQ,39A XMP,R+,S;&<^^[LS:H'NWT78@.GCVJ7AL<](CWGN9B0R/3@D'G7O/UW4$Q,.,[ XMOO-?DM]CH^']'2RHTP2$8QIR8^WNKAJC<^8G-"&*/S?^/1L+!8PZ>3A>_W(; XMU#T.XBZJ@8NE_]_/?N__GCYA,OS[[CMJTS384NAS4`<-43>1(_`$#Q\'#Q\* XMOS;J,P>@#_$$KN$2CN!!L#.S+^$(+LC'T_L=M/?'UC$N XM7QNXL1J7T^,M?MKW+V`Y$RT*L/#4G@09F3/`4_,<+@9?S^_H3R_J XMH_YFW_XXCVYK[P)M3]MP+V`Y`SQ18/?\'>M1<-\NT/8*L/J&3:"WS2$ XM+_FO$S^S438SQB1C$C$*P-IN$.;JPT`WWMPY#N(\$C/Q@SWJPS>;\^JQP2/* XM_3O(Z0))#^$:+N$('@0[,_L2CN""?#R]WT%SD`U@DQIR(P:O,0>23NF70T"CF08R)R$L XM%$+DDSTT1$#NT_?(Z0))+R$KGAML-^=,LB)S,&))@@=$`_3)_.7?\AJ(3@2M XM\@5?$$FZ]`5?``(+==JM\@5?$%9%\`5?``(+==JM\@5?P"9$,`1?\`4@L%!B XM0]NM\@5?P"9$,`1?H$Y:F.)?\`4*4.-S`/H07^$:7N,*4`4I\RUL`T1U[S9? XMS^_H3R_JH_YFW_XXCVYK[P)M3]MP_WE;0?<8[@)MKP![K_)^KYIA(_A-0_B2 XM_QJ'WSN@#_%6L!PJDSQ%&2U<(RPGQ/IT0,WY;04*H/MNXYRV0?*74W2O3/(M XM%"W%PXF7_@8K7LRD[@:%'@:R=N<8;S:G@>AZ;D2O+(EB(AMN4P==\26B3-NM XM`@4<\@5JXDE'H`!R+\MBPAHZF3U,M!6A.9J73I*@#_'D3019$VIA(#=1(U\R XM0\U%P`;UON(M[@+Y?48+Y0+YK1QB<\3Y7075GN\@%#;\COZU0?B2_QIU$RVO XMCLN;(S>!WSBXP3>2_T!MD!KGH0`M[_Y?S^]ES_XS[NMNT_H4]^J3;_1MT_+X XMKN\*$!O+(P9EPB/QLB/@0LV8+O%9;D!F<)P9>3D]WN*G??\"EC/1H@![K_++ XM(QM';.L@X`(NH!\+A XM\AH_HQLN+D,N+_3YK_Y3GC/`L_?'UC$NW\J@*9IT@%7H-CU'G-])4.W0[0+Y XMC=W=OC^J8XM1XP:8SR,R4^C'$U_._R5[?VRNG3=3(@;ZW\RK<3EMPWESD` XMWL4"K@1O!3Y,XD?X_LR/3`0.@ XM#P)?\`7(Q$]?\`4*4,1B,QN"7/-Q4`=>_*08J4^VG`8EILS;S/_??4SQAKCX,5..@#P)?\`5L XM0@1#\`5?H`!%+#:S(].:S XM(?N)#A]9\P;*#?H@\`5?P"9$,`1?H$Y:F.)?\`4*4,1B,QN"?#Q`5HLM]#W* XM'CBG?>LQ\.@Y("OQM%"M@1Z'$_-A\C.ZX>+?\^:S(?N)#A]9\P:-_N@@`/H@ XM\`5?$$FZ]`5?H`!%+#:S(<@U'P=UX"67,SOJ,_^N1NTNH.U@<\FS XM88M1XP:,G$2X$>;JP^?'F&MJB-5C0 XM[@)Z3OGD4^0N?^R#SD!UXS&M"074K\M>H5=@;.09?Z#1SB,B,`7ZP<9G_`9H XM<#LR\\6W[^>`[D+'XSZ'>`,P<`)S4/P/!#QUXS%PLQO^CNP,9`4Y<>/-G>,_ XM%.XQ,XFJR7:GHP#'/N@@8`4UO")MLR/TLA"/3AO2_\ER0`?4C.D*$`3:$^\= XM=#Q0P"',`SR7S#1E4.Y_?N[[%NT\$LXIXY$M\S(XIW$@0,V8ON+%;$0)]&!3 XMGC/10LFY0P>7S._1LHF*.#8\=`?0VE)%$$S\[ XM$ONX?#QU?N0>].:S(?N)#A]9\P;*#?H@\`5?P"9$,`1?H$Y:F.)?\`4*4,1B XM,QN"?#Q`5HLM]#W*'CBG?>LQ\.@Y("OQM%"M@1Z'$_-A\C.ZX>+?\^:S(?N) XM#A]9\P:-_N@@`/H@\`5?$$FZ]`5?H`!%+#:S(<@U'P=UX"67,SOJ,_^N1N70\M(A#FZP4#'?T)K XMU_6H,T&J$S^D.4&P;D]Y!U#%$).](9.@,!,GO;SM0-$%29-#, XMI;$9HI$;G7$_.1$?BC$=Z)*QY4RTM4NW XM%1RZYM5CA953D%=6O!6"Y.4&:KE?+?4!BCW-('D7%_#NO43<>`S>[X>_(SD!6 XMD!,WWMPY_D/A'C.3J)IL=SI5<^R##@)64,,&PLB`_R7NPST[0B\+\>BT(?V? XM+`=T`$43E``M``)K\"W5@AGB)C:S<3SL[S9U8`9FT$(R(\@[(NYT<.U<8P9F XM(#]%DP`ML'/U=0;-MG-I*0=GT&P[Q^6_ XM/C$S\N@`9['!H"EC/`8V`M XM@F#,(O=ED`#JI(5L(DH5=@;.09[RJ-`0.GC5?Q5#(Y``,S(`,- XM$V!FD#*G,05?0$4"%1IR_QI3\`54)%`HT`8I`!DH@`)MH"WM]`72U014@!G% XM.`5?(%T"=2XC$#&%,QI^B$9U8`9FH#*SL>.N=&1JF86%0P"%?H":>=`30]B5D,/P[D``%RLIU$":3`V2`0Z'+LF#P.&:3 XMT_(B8 XMX7=D,/R8,3E`=AIX`#%O&QIR_QI$$$9NA0)X<"XC$#&%$QIR7P8)<$T])03G XM*`:%C`:8<8YBT'H,@3_WR3=BT'IB,`=Z``(_``)<@"$H$.IO(`;G*`:%C`:E XMR&=-`/LQJX<3%-@`<-_C!;=LE<%SI!V`1XX!5N@#=SL`:??`=ST&'O2)(! XMH9-=PS5FL`6W#06>9`1=T&$8]F"E\09<WL4`),0="CLBJ,0="_C!;Q@9CL`;JS35FT&$8]F#Q6!MAH@+J XM;0>U<08/,P(14SBCX8=`Q!#X,^,[$C;S%@:K[SWN0HDH%LL>671(`O9C4^-S XM0$[J_]R\#!;Y@;JG>]R\#`C$#&% XMHP!M8`<3=B#J_]F!33J&N@0=T`&X! XMH9,J@/+@%BUV\`5?$BUV`'G3\P5+/CTG=S$"AO);(`-=$&$+!H\>]F"TD0=M XMD"1B<#&*44)CT&'O2)(>]F"TD0=MD"1B<#'74D)CT&'O2)(>]F"TD0=MD"1B XM<#&3$RPE-`8=]HXDZ6$/1AMYT`9)(@87XRTE-`8=]HXDZ6$/1AMYT`9)(@87 XM\V!R4$)C\#!`E@`85B,F!VUTD`#]/0N,T$MP$P\)`9JP/<&3V&O4>-!6'/N XMTSO^=6$=HS[+?V%@#_ASL.CDU`+,U#>BJ/(F/V&-`T1U'X1>CAO_'3;\'OUB XM@"1ZTS674W0^/D$=L1JX$?PME'`!A#Z7T^/WCAMG())%]IMB(#]5TP)K=._U XM;1W\7V2?#&2S(,P XM]!@DT0*GEN]R4U_]3R;T$H1T\P;-!D-%2A(M$)(7WT(=A!O$7S15DW">7QNH XM4C0)T`(NA"1@/S8UYSZ]XU_SCR2S(#MJ\QH_ XMHQOC@XB^+C?B)C:78SG80NDM=`3E[_V"%+@9?S^^:G)S&(C:78SG80NGR,YVCX8>@ XM]`8M4'/NTSO^%3;S%@9YH!]>I/9`5/]F!N4T(2AVU;%N9D@`<-B6$/1AMYT`9)(@87 XM,P=P<'(=AF$/YC8E)'$J@/$4@@=;P`0RP%)8T`4/@__?4@8)(`1,L`1R)04H XM@`9`0$D0;]ECLHX&$/YC8EM`8ID`(MP&?G@O_?4@8) XM(`1,L`2>9`0H@`8\0($<]M0X$E&0!!IT&^Y@P(>]F!N4T)KD`(I XM<"Y;AO%K4"]P$&$+!H\>]F"E\09<(R2^CAO_C0(>]F"E\09<(R1XXV$/1AMY XMT`9)(@874\BG\R4!H9,JD&,=]HXDZ6$/5AIOP#5"(FZX<0;UV/X7QMH/5AIO XMP#5"@C<>]F"E\09<(R1+EF4+!H\>]F"E\09<(R31GYIR<`8HX&$/1AMYT`9) XM(@87,P?C1A!VWJ0A`Z)- XMF#%SPMA!D:8CB),K+V;<&',F"#,$Y20=6/!@PH4-'T84PP)$4J<*&3J$R#!H XMRZ$@2IZ$>'*-F31LRJ`8\\8-P;`F4:IP$Z,J6[<)QH#X2$>K&11"G#R1TB0(DY4)Y)0YDX9@&3D<$YZ$K9RY XM<^AWWRHV0[>J;;ZP3W+V7%'!B#1FR)1Y2"5)DR1.CI0^G3`C8CMAV("@4W>_ XMC/()H%`4&2GP9E\9;Z071AXHF,!?54Y4P<1Q%8U0AAMDH*>`>>B!P$020EC1 XMA!&E=2A@&SVE00<*3H@(Q1%3I"!:`@D\)\<;2%"HF1Y!A`PB:DED6ZT:!-."D) XMH83'02DEE3;BJ..09=9TTY=AFG=AAF9LF,`=:*!5!@@HK(62;KP1N>)G2WYF XM1U4B!#$$$3J0H4,12>B0A@Y-0#&%#G14H8,5=N"A`Y!/AJ!;"S$\21J-<]RA XMXEB&NEI:`F.$,<>@)P1Q@@X@O*`""+KNVH88:4'7$QQU)*3""[X*P@E%E"OL?MTF=(=E/KIQAKVZ@A"G4O=&6P2_UV8; XM;<`#^QFNP2<0H?"PZIWEQJ!SO($8'8%*G'&^)J(01FY6%712CHI^5M4)/9P@ XM(PBJ,LDFE31ZAO,)!__K)1H"CW0;I".DW-.@)C-O.P?484A-U=CGN:$::X-R(4+6AK/= XM-1PM78;,@B(F[UXXV<\#G#D!(M[ XM,!F_1@NHH(2JX'7J(+R:;ZRSHH&"[8Q_9FN^(_/:1-WNPE%M'G:.<2,(5ON8 XM45OV/ALMC60TP3'.,?Q+H_;5GL&]]ZL++#GQ*8=1!QMT`+MP&F>LJQP([$*- XML?7$EQ\R\7UJ?VU@7-]>=(`FQHQ'E3C"%!-)H,!G*$,^"]S40F*`G XM8Y#@%L;2`]TQX[AO6$2[T'(P,2CUE XM4H_@TE`&>YD!1W9:PZ#P]SV.`7"`YG,AKZ!0MR2X(5"N\0@-Y>"2MM#O(6RX XMFKKJ<*SG5`]?-(*"$3V&Q)!-SH!T<&`"Z+`]W73O8P3D4'HT!X4A#.$+1"B" XM$*H@'P4:T`IJ),,8G49`"V%(0WXDF1W4:`8XR.$QOR&(>JP$J3H.`02.+(,C XMWS"&'K8,.G;PXD+<,#8K%$$*4Y@"%:1`-K.Q,(Z)Y!4>U&BBI(RA#2.Y':2: XMT`0B`"DWNIE2[J['2R(,,H`68X/!:JDS7*)`EV/KU"\[^*9A$J]3Q\Q7'Y*Y XMS(%@J"%>B&#=X3ZEG2@C.+XJQ;;&`#)U&@5$%51:@+5=U)@4@2G(*@ XMJFEQJ0HRZM*,SM2DWC-11HFF&["6@:8)&*M,'^K!IET/I81RJFY:^E*76G2F XMUB2>7+&%LYN2ST0>!:E(26I!$[Q4I#N%:US-2M>^7D^`^9(KSF#PKVV609EE XMN%Y)K*665R:Q@"3[@0/3M[[V16NT'T'!XP38O](P"@0MV"OC>D(&V#BJJ+K- XM"(8`M%2I;N2H;WC#&C):J.SD)2X028$(OO`%(R2!"46@+CJ+X`0JG!(Y672# XM<7$F5>4R=RW4>^Y85"!=ZG[("=G]PG:[^UW8.-):XT6N>4>"7KS`9;WMA0(5 XMSV"3^7I7"LA)67X)FMSE\M>Y_Y6+=*-7!C(8N+ZE08@<%EQ>!S50F"9SR,.QWJ!,$-AO XM4%5FUU%NU(:?C.%)^'N:YT`G@JJM1XO4%<(4B""#+^":NB!8FRMA(^V^?>YO XMU:8P"+3-;6_'(-QL0TZY_48U=5.WUK>.`;C%W;9YG[O>UUX9)FV-:WB/NS3^ XMIK:U538HS*4!#P8/D[E`@(6*[R9=87@8\_`'P9FD`4LO*(D<7H#!NY4!G1<4 XMG`9/F$(G#&&%8O(F&\/WSRG=*N'H7CBVOZ!*(MSQ"Q$_]"'[Q&2,A1>V+L*YOK5 XMHSZ^HB^EO]J!+GM%\.NVH2DG.TFZGY8^AJ:S.M4@L.Z$GC`$V(2W['_'V7N9 XM0'C[#ACQ(@$\%*00A",POO"E27O??9!XW>31")3B-4JNB=3$=M:`)Q,*0NM+5DZ6>_'$U.RX]Y;`S XMFUW&#GONPL]>(+1UZJ9)QXF6\AT5?6U]=E?:!ZKV:&?0,+,7@H9!3*$4DX)G XM:VOU8@P?TK!)_KS2/KKH/XQ:2"+W]B/?FVXU?\:',V[U?MZT%CB3%,R'!CDR XM?FGQ,RY0??^$?4C3>R+P>\%'$^MB,7A`!Q?"96V1-H\S!A_59P?S!B>@+20H XM`R;(6:516PF`>Y=Q7+K1%X&E&F^P*RC0*@9(*%MB)MP'4E7Q!%]P!5+P!$[` XM!%G`!T0X!%)0!$%@3E)B`S`@3%%B<_EB@4,0!FYP`M+1,*0S!^@4A##W@B5" XM$"&!,\V!$2&Q@XT1@]YT6R;@6+;D3-S'9Y#2`J@26-SQ;KK!'3*`,_P'8'?8 XM!;#A6:#%AW2!,]BG+8`HB!#&?B(@`H?H)XNF(FF0'UU61:1$85]4(MX$>_)W XM*W?P2!ZX@U5Q&TT7%:DH!DUG406!'*KH`U&Q!;,(BW+0@F16!F8&$@WB&DO" XM9G+F90F"`L`X9@BG$2[`'?J',\#H`CAR!MP!B2`FB3P@+S8A?.%5!CY`BA=*Y(BW/P:7\8C[@(CZ^(9<$4[6T!G#P!@&!-)5V:0ZQ!3&)B]AB@B=0 XM-BE(BJ:H%OT1DZR(29:&B\C1/[.F.>WQ'O%1&@(B$P1B(&F`&`E"!@O2('0@ XM`R1)(:5QE2Y`!W;P!;NR$;FU'S'0E5\9EK#!E5[Y!:@FEKK!'V;)EF@)BH2B XMEE_9EFXB3+ICEW)9!AMA5.%6A8+I@C3"EV&)6^28``+42(_4$9%$!Y,D!Y!B XM42O5&RVA'P<"+"7`!L!&.IP)%XH3=F*'`E(E,2E@F'Y9%:39%JG#EVTI='Q" XMERBP,30WAR#P,.#4$Q,#`C[P)K>B''10!^`$40`"G,))2BY86\*B`'%V!3U) XM+#]!>S?A@=#1&\'7:)#F$)(F!R[`G-8S(`KP:`R!`M71'-1)3UA!&U+!$%51 XMGM<1'=$I&J^"6/:HCWL5CYZFDCXQCRR%G_.H+;Q#![3"$'X7>;)'.<$Q',7! XM!#H0+01*BUL!95`%:`\:E/SY4*%6:"O`@]&R,`^*B_VYBEOQ4/^Y.17*G[IQ XMH:8W:+$&1Z<52^M6'$/0H/ER=T<'%/]BG."D@JXC!/!1:#1*(Q8HGF+0-L6S XM;E4`:Z,6I'!(**R'8REY/4TY$RE0BBKBDUV#GPY1%?.H.A^JCU)"2"^JF&:8 XM`!4ZDU]:$#?95&A0$;4E%"\Q4#["$'-0$7"Z$?21%9@6$73J'5#!!FX@.7>* XMGK/A&Q"A`,PQG@/%:NVY'.8Y:9$H=V)P4?"9GZ-1&NYYGGFJGA`!%2;I37\: XMJ"K)$&K($(`*-P)EJH$JB`,275`AHF9PB-PT*+IC(G/J)34G>S%(IS@39?D! XM:!DZ:JISJPX9K$;P`EQ&C+_!IQ.A+9@%%3AS072Z!2W0`L1JB&8HFY,Z@4=S XM5:GW"VCR5RHO0(`IZVKDWW/.ZZJ_%8>JQ& XM'2!QG'KJIAOB&#[A!E&!:KVE`,L99S.4$#>S,G<@K]KY'-V9,9MJJ"J`J"#A XM&^3IJ.^YJ`9ZJ<9J>NE$B";J9/VO+6!NZ5AMF:`MF2DME8+'&*[H%S* XMI61G)'5&40F%C/A:K^F2F$0P>?!!!84B`FT@O89:.NBD$LAAN_^:NQN2L,,R XM!$3"/#<3:9-FG5Q8/Y/FP-S)O"QA$(4*O5'1&]3+O=#AO5+1$XUJO=U+LGKZ XMO5VQO2([:0-E40!ROU*0O_N[P8;:$Z2S4F^`O"6P4CV1%&&H.!Q1%5`AQ&X` XMJ_)K(B=[?=T:NKN1L=3;M@LJBURE5V$:4V[2$_E8$'XU5U1"I#S!GAP!JQL$ XM!V48LL$YG+BKN]YI>@L,G4FAF_N!<.!2[+6(3%FL[+)!F.P!FB":44#SK*G8V_`)PP"M*FC XM+3R".43VS3:V'(^#SSBC8WW38R9P=T`FS]K"SNY\$YBF&^"LSVW0S_AG`C1]*SL-'8#YTI78I(6"2SB39V.<@RO$ XMK4YR*TZM&U`-SB8(KL!ZMW.K)T-WT6-<$"9X$E5Q93D(0&_Z%2_1JF+WUG#] XMUL.,$P7!Q^^)O7*AO:]2RB5-S#NQ&$5YFX$BRXM!6$6C=PF`UG.0RP;\RV#Q XM&'/-&W9]GFU@!ZQ&+(@\L^D\8\D\R'GZS^*C`J`]T/-2T,OA8VFR)-LLS6$@ XMOP0,VAIMM%NPS=TL!3:3`MBJ9*!+P%"]VJ-VVUTPV\91V\"=NF&MQKSKN]"I XM',K#M_22G5%4>6@H`GE&1D)-= XMPAA;H!R8R<`.)KL(S-U*_J`_8:I31B!F`^YU$1).;*JD[I XMJJJ*JJ&Z!J7JX(T]J.#9<1(4YM@QU!XGF2"@X)LJ.-6C`G=P!PE.X)..$Q!Q XM!["1IT*1,Y]**$+!$Q)4%29`$-:'6^_V3D0S!5^0!-N6!+9-$"Y`$%^@)>HA XM([_IXV[@4N\3/S@R1/AB(I;^L$5#@7S(50^K&\?N4G?0="O3@=".,]'N`].. XM4,-TE`]1A/`Q`S(0+N$!*TZEB8+[;KT:#+481B[O#]3[:.Z^IA XM!ZYW[3U1ORE*![=.!U^P[S35[F`=FS1BE.@Q.M[N!.!NXMY4A^7>=.?^Z.J. XM-`2OVZ$%[R@@[_A.3?4.\/>>[TVW[_3N[[@N\-%R\:I+BLUN0=>>[4M=,RV? XM*^$Z$'-6C)NN$CX]--1$@;=B@6RQ/H7AA<1"&)B$$2BQ-4*<[ADN\1\GB.SW XMZ$WO`R'?[__^!?<^]21O]2>_+K!Q[-;NR^"YC5-*("H\SG<\%=X!Y)W]GHJQ XM+&(RL%4!J%TS$W@@X7:OA@TY\F1P]Z4QX5:A$X`J6["AXYL%&V6`!W#P&:A( XM/W_3CA2NQ[_!YBFP9D'B!EXE$;`*(!I.*+)^!5.0A+^S++PN4)@/0.%[^*71 XM^2@@ZT20!$>0!/H;$9A?^FZ.,Z0T+#_]4+0_5[AU,#"PD[IF>EQ(/^+%/-Q] XMD44K95O41=!Q;/(*$G>@WJ04`RT@`S%``S=``S@P`S:@_3-CJV[2ZGR@+KP) XM4=F__=W__3?0YF?`+NERY`>[^H.-;)\?^DPP^K5/)J^;<,I@?U XM))2Q4N>M^1!J!K*8%$LA$5EZ^9FOI0_Q4)I_RTY6^%IJ!M0ZO.R:BX<_<^_W8-1 XM'CGK] XM3,V*<`BIWCS1K#V^R^4A_SI0)5>B(_(/`B.PC7E26]S^59*"!$\0!#YZP+L[ XM+$6`!X>A/&70H''&!!)!1?+]`D9`18AQ!SBR!G/P`E8P$PA"!`(VOP`D@@,),T!R]@!50P!9XT2BZ`!MZYQE,@,`MX%$"$Y_IW!SA" XMZ'PS24;L9O%0?127,P!_J](8,*V4BQ@+E^$SGX!7BN?W>`(T6& XMUQ#!'7;QQ^N5[B";]FRO&`Z)KM%E2PSX8?XU4>S%'=,G-+"A&)2J`G'@'586 XM]PE!5`GX^]PQZ@-!U6U.P"X8OLVF&_FG?DR_D3B3?^K'':7`E:FFA!F?BD`!PQ)*''`5HLL>RH0!ZI/(P2,%`N8ZS>1 XM@U^`Y_IW!SA29-S19FU0XWBNWB@`!V_H55965/2T4,TUU"E@94]RWF_T)_5? XM.SCE0=37Q7'.^BJP4D5S`M37Q7&.+1I5&G^?L_+:.>:&?9"2-2]@!%2$&'>` XM(VLP!R^0-)Y^K]3,TJFQR)!AYI9:GH!E7!6X84FPB[N\,R XM!0*S@$;L9O%0?127,P!_KMV'':$0J`%`L( XM=^HE%]Q!Q$_1]X+\GCG?Z9D^SHJA''7:X^.4#6C'`Y9%A[)'55A[A\W-,E^ XM-(%%(QR)!AZI''.0BFX@Q%7Q\HF/4-Y#P&^D3;="6QO"[5\E*4CP!$'@H[H6 XM=L/R!*34!#?Q!%-0%=-O)\RS&:'$WGS=,HCQ$VD1WSFCG6$W+-:I'"W#!J&T XM;/IW!SA"Z'PS27/0G0DP,[JSG#029T0`/]A)/Y=Q%(*2?H.R^#"3@0S#/-:I XM,N-]*WFC&)2J`A*$,_FG?I*;%HOM`]'('?]'*"C@5>@:70K8?.\;7>=^`M0W XM-,E^-(%EXR6H^C5%*$BQ@+E^$SGX!7BN?W>`(T7&'561[O^T>\1#P&]T\+>" XMY^J-`DPO,B:"%`N8ZS>1@U^`Y_IW!SA29-S!`K]Z$%`N8ZS>1@U^`Y_IW!SA29-S!`K`(VLP!R\P36YD\;X>;I5H2+'9X[O, XMXVL-S."926U0]L@\I,IA$V<\*$7P!$:0)VL-S&DOL&/`'66?Z6COWQ;+]J`N XM;"V!&W.!5#T^SHIA:W$O'0_>L3[Q!OL2/A*^+S2G&_L2/K"Q+S1WK[54)#NS XM00FX!FD`!P'!(D<34HYU1TE`!'IY*[;V5`(306OQ?X12907%8/N%`K96%=;E XM!$3`\TISNZXM\>P<(^&;!6U7&!CQOYS1"P(WX@K,:6(#OR)-_X5I)(S=N XM%X_#^@@(T<>[(D-CFQM1-#G9A2[.P<_T-^[G\'G%5@>CDQ;OZXNL@ICS:&M1 XMX_M"KR;BJ+$GR1@5:AW@KQ$-<=Z3W46@I!,:1T$YTT XM!UR&+'TK*.1-P#=3)'*0C1>2$/$-@J24(/L!-9'>0ZT%Q^DW*$"$?0KQ$.LR XM[>:IF_KMV"^A&`I0%AZIX'@-$2"IX'@-$7R1Z6COWQ;+]@JN&,KAD(VH>M[$ XM%VRUR+('^/Z&?9"2-2^@].J"E>K"H8HYJ[<"^)9,O2!)@3%'*#?127,@$.\; XM7:$,`BGV!$M0\;WND/FG?N9ZD'BNWL_4K#V^RY'>0[Z,P"#@1(.#-S=C?"X` XM`DXT.'B#(Y/4H'%VWD8`1#S@`B[@`KW9D*GX<6^Q*Y8Q%BV0!-#S<7[9&X_4 XM0U5QW:04;,[1;!+DE[WQ2#U$WN=M!$`D`B[@`BYP-@V9BA_W%KMB&6,A`F,@ XMG,K1$6=S[M=-2A7#`R[@`B[0FPVIWUTNS"5'.&6?Z6COWQ;+]@J^'6[@'5;& XMB&PRZI^C3&Q@!VQ`)00OF\^4LZG!';*UZLJ^,+QA-X1S%+23?H-BWWL*1A8H XM_R`0.(.C'GDBF^9:@B)%?;*G$`:`"!P XM4J0$T6A@%H+2(.9:@D*\]SX0C=RA.G/1;!Y$?)Y^K]3,TJFTBQ@!\YDJFA XM07QF^^]OG8Y$!P`"]%RX+@FA,C1Q`EES`NC$'<@AD58B)T_"U^N2$`1L/0J@ XM7,"I`P"#D.K]3,VZD26!!A[)':GH!B.YR"OA2.UCXW)`!V3/H;4%GB5'.%^0 XM[66?Z6COWQ;+]@J^';^N>MY$+7/`!G;`!E1"\++Y3#F;&MPA6ZNN[`O#&W9# XM.$=!.^DW*/:]IV!D@?(/`H$S..KQ!=F>)Z4QC;J1?^IG`N9:@@>)Y^K]3,TJ XMFTBQ@!\IQ'OO`W8OQ'OO`QBD$KGZ\U8B)R*0*VZP+@FA,C1Q`EES`BAGKB7X XMAHY$!V3/H0+LQ=+9WTW`1EGG-0%2VQ!O5-2C<1],SL,L]M XM+T6NWXX=IQVA`/;$W&Q@9`:.PR)2$'.P!FFP4D14O\TCV3+A!H]#2DT^!I(=,?_G@R)%?:XGX[XH XM$VZPH:M^`BH@-(%EICUA5!&5+ZPOX[XH$VZ0*AZD`DSCZC+NBS+A!AN:*AY$ XM?30E$VX`5&9JPX`940?O\(1"2CE%?:XGX[X8,1NZZB>@`D(36&[>$T854?G" XM^C+NBQ&3*AZD`DSCZC+NBQ&SH:GB0=1'4Q$#5&YNPX`940=/BO5/*,_4X6,@ XMV3+A!CQ?5TSCZOQ^,%R01D@C$VX`5*Q?91T^!I(=,3Q?5TSCZJ244UR01D@3 XM,6G;46RE+A;OZ^'6@\^4JRZZ/[7KZSR^UL`,V[(JGB01'H XM3N6_T8\F6VQU,!%()01,F`3\1FL-S)`]!VN0!G`0$+?4$=^4GB9KYJ^R,!6' XM!>T]+Q?B+/A"P'.P!FD`!P'!$\UZZ/P='0J@,E1Y&8P>8HLAR.^9]F'P^#[A XM&14DI\)S]A#N$VE`7%R5!H>O$&YB&)?A4FEP5AH/\QD\;ZN$+KLK^IXZ/P=S#.A`.J1%@%A9`:^4MR=.FH?#+NB]R=.A4?6%@>TKJ! XM+=5"$.OB!@&1H[[NK`Z?5_^DXBR.--S=,3V(`B%P_Z+_;$A3+02Q+FX0$,ZX XM')6(W,."&1N1^![H%J,T!PT:9SHG<&H1!B[@`B[P))$$-D_2=/)T,W>`(VM` XM,?9"7=#\!2L.(]2UQCHG<`K9!G10%2[@`B[P))&4BFV0$%4Q`B-`7=#\!2L. XM(]3U)$T7Z;SX!J$$`D+\$!OX&7-@P>!)866/S(E/G;?K$QC4!AWQX.^9]F%@ XMZ&T_LF-N%<+6$K@Q%QI5&H$Q!BLH?1"!'U1402I@:W'/L)>Q!<6!!2L.(QN* XMK6U_GBTLQ(V:,EVS+^%3%700]_41>6WV&7'O,+IR%V1FX"O%W6?0DG6J>MY$ XM+7/`!G;`!E1"\'^_+S2G&_L2/EO;1E6\,$D@[/.#C1="D,;V',0NFR$@ZTE` XM!#"`@"FZ!FD`!P&!=#)")>^_W8,!(+;V5`(306N!')A/7@W&7+:V8BC&D(2" XM^5;G=5$G>[ZF.8F)B`:C.Y@O[?KG5?FG?K;V.+ZF.?<*@Z6GRDIP>K!A&)>A XM^@D0!CG;Q)*/O@J*X:6!'U1T&8S()C%'*`@(T<>[(CSO02@@-(%5>D9P8A^R XM!$6@+0LSOH(S/46<14+4/#2$6?A17FC?'.P!FD`!P&! XM=(^#5RBP`SN@JP%**\\66$!$0``VMA^_GR_ML]&!N5`+;FC`XQ$VL!-LUZ/0MC$T)D%<(Y*-<]/\V! XMWI]Q18&/&.K2C$2D\2I#E9>!`K8&-G_C,^HB/+QIY\1C@42045F4*QYX]%3T XM,I-F.(@SB55A:UIEJY_Q3\6!!2L.(W!E@5207';B!LR3W1AW&6*H55X!,V&@I0_Q4)]!K=;Z&=B:/\HG-#N9/W3`CQ51JA*I@J4@&N0!G`0 XM$$@7V-\W*"PNC_ XM%K;__ML]&*/>LBCIFS2R+S2W5_L2/L`^+$5@&,@R*-AX(01)+&=`W;F/+]^7 XM\?K21N$&[,.R,NN-C1="D`KQ$"W@+-""<,O1D@ZIV#'G^5,`^FMA^\HW!VN0 XM!G`0$+?4$4CWA@NS^$HQ*,Q=+9WTW"V0103!I=Y-$"K2+'#\&5QT(00Y,P]C XM$E9TKZR_$463DUVHG[?4$4`U!B3(9TUE%R2H6!!]O"N"?.'4$7&^1E4+$B*Q XM%NXW.9CS:&M!@B#UAJ:ALK2B[;JS0`<3I`O$!6G$I#:Z$TPC-,"^93HQ*,3+ XM//=M%8O?29O#^@@(T<>[(CQ?5TSCZC1X,%R01C3U+W1*PE!))L3(`/2?L>[(A0Q<0*3$".P.0F@'FD1$,:X XM'"T9SM=CHSM18BZG528BZTE`!#"`@"FZ!FD`!P&!=$-CFVH>>"?V(4M0!'#U XM,"9A18E94WDE4CH)5^^_W8,![,-B`R[PTBXP`RXP`YCT;D2D0&TA7'50!ITE XM,DRMYB"@RDIP>KJ:``NS@8C!A?5-2@RA!GY)!RV0>-F=+D1$(S:Z$R!$0``VMA^S3R_ML]&/]B:T\E XM,!&T%JHC));Q&:X'\8!N[(6XQO:V#S-SZC+L+S)%=(4^^_ XMW8/Q+S:Z$RK.XJICHSN1!JICHSL1^J/VU65T/D[(JISXB)%?;J:`'P=4!K_!OLRBCUEHSOA?B:E?!O]:(1_68)-.PAH XMFQM1-#G9A5IUXKEJ4N^_W8/A/7[(EK%U&^P+Z/84S:Z$^ZG`$?>SCJ0/RC`CS54^^_W3>!JOQS XM60'DHF8$HQ'2!$)P2L`B[MY$@P<3@31EHSOQ;';15,>[(JJ#5RBP`SN@JUAN XM=#N1!DU5^3_15,>[(EIUXB+5`DSCZC1X,"L@-(%54X3"$Q8D)3,P`S>0*AZ4 XM,*Z7!FQU,$PD68++/[.J$`>X$45S`A'X)+99*$GBEPRX02'E6'>4!$10\7`E XMN-JD?6TA7'50!DID0JL$'T?`I"3?$UUO"O"\QZ$`T(36#7JUVNA5;C25,>[(EJ%661:4W49>X%%(S:Z$^Z' XM3-]'J]>3^-1YNS[1PUI\/0,E!K9W/2[(EK%U#1X,#C`4_ECHSOQ;';15,>[(EJ%6=NB?+9W/3W[(EI5 XM(XEXXB*EDY+U_ML]&.1CHSOQ;';15,>[(EJ%631BHSOA?M?3P^W*X]KDHF8$ XMHTF01]W%I+;V5`(306NA.B:BYB"@RDIP>KJ*Y72=([:F52TT<4*D2<9O;%&S XM.9C%U/A!19?A>A#?7$.=`K:FFN:7`OA!18Z3JX%%(S:Z$RK.XEIEHSOQ,"9A XM16)S!':TXD=00D.0`SFPXE'K/8*K32*3``MS$GY)Z!VB(A1#2I_!11?B+&#$ XMU#SACKS%^+8&-G_C,^HB/$]RA;J*Y72=([:F58*K3=%BHSNAXBRN.C:Z$VE@ XM6F8$HS#`I.^_W8/Q+[?BNJY5HWZ]%J:U/V1*(P]C$E9TK[C25,>[(C4^!ICS XM:&N!'`NC'%H22@Q#W>$E/K/C@7O;23.C'FD1$,:X'"T9SGZR+S2W5_L2/L`^ XM+$5@&,@R*-AX(01)+&=`W;D/+6YW=(@M))8A/+=2>M`L!4^_W8,![,-B`R[PTBXP`RXP`YCT;M8CF[ZF.;8IN6FQV#Z0]T7# XMN2$&40!W5@D43DYG!@=5['=KK!W6?0DG4J.Q"CFSJ2-9%>81A) XM$RB027:P$"51O!?)<#2!$2!@.(AS-MM(.@3"-?$T3Y@O[?I'J9C?=,;79G#0 XM=-LX6[,:3\W3D@[)W6?0DG4J3PN#4KRQ'X%B+WO;23.#B.^.^5;G=6RG&]Q] XM!BU9I^$+!P7::F\9>;"!^=+^&;C_&><\1P]A27BD1WPDFX(D?X'E2)"D(R&@ XM;EF3-FT&!]*N?W#P?W49>?^DRDIP>C#9F&RD(UO`$&K@EW30!4;Z?8-B(FH. XM`M`L!5$;+8X$23HBW%)P!"5`!EV`3H;A.-XWM33B2)"D(UM0`F30!>AD&(ZC XM+8\V42B0DR<@--KB2,Q=97!@=5X7=8_C2)"D(UR0DP='(XX$23J2-<`27H1> XM`C3Q=25`!D",^=*N?Y3JVT9097!@=5X7=94/`K3MS9AO=5X7=?)KE"L/,`BI XMWC;3K#V^R^4A_SI0)5>B(_(/`CJW,GE26^")FQ%S!G`G'4-M!FU`!U7A`B[@ XM`ID^SOCQ!5GT%GTSZCS1D&RUR%3"F)#$%)$)*5FC`R5@*;<),;J9-BQP*V(G XMN6FQV#[`C(@AQ'OO`^+X!F^('V#9.(MR46;0!@@E9(P)24P1F:G8!G0`-G"` XM'/CQ!7MB,W`@BX\FKCG9A>P;F6^(FQ$S,6J](>#9>Q!F?F;0!G10%2[@`BZ0 XMZ>.,'U^016_1-YS?DXT/E%LJE"Y`E#%'*)*;%O:2[$M\4HX$24P1F9"2-3I0 XM`I9B,5:"(VG#`KEILF;^*@J^J)Q?_X32LCAS7V<@*V8B$3Q?5TSCZ@F14UR01E2BR_Y* XM![Z,P.WM!O&=$%\@8-9B$[+%WB-P7P1V,WB5PW3P:.0]!7DPW1#7',0RY0)# XM!LS#%E;BE_YNP8@NS/?U_D62(Y+NWR9KYJ^BX(LZZ@.Q!FD`!P'!$Q/!5@># XM`DSCZH62$"FZ!FD`!P'!$Q.1*AYD.$QCFPE1-"?`!-5W*^]OG3823)[7%[2!@27BD1WSDV&TMS(Z$ XM+)PD1#EB?G-`Q$]A]J_B2)"D(UE#*,C"24(TRFG#IVL$`\1;&W0$KC1'!PAKT2616]QY+M"$U;$ XM6XE/4/KMV'':$0J0^"U99*`N;"V!&XM!J0H^4%1ZJ8E,$^Q$)03\1MP.`I:$ XM1WK$1[(I2*-((XZ$+)PD1%B2^"VY!NA$I<9M\'B%`BXU$RYE%+J!+,J%!UL@ XM!$RP!-),I<$M!$RP!,1-I5W@`C[2]RKI3.4RD*!Q;OZSQ.IF;LKV]46SJW,C6B^,IUM7/``FQPY8G?DD4V!RS` XM!J+AV'':$0J`+&L@V:`N;"V!&XM!J0-%I6-C-P.`I:$1WK$1[(I2#37FZT26(Z$+)PD1%B"&)RJAWX[]$FFO`)C#C.HW()F.]OYML8#OR)-_X5K9]M?[Q^NUK;HA XMN6FQV#[`C(@!(#?^,X8C-$K'56*EKO+*Q8%E[-N:4X;#-*ZN`MN:4UQP`DSC XMZBJPK3G%!5S`4S1RXS_#!5P@--IRX]XQJ35^XS]C.$*CR_X*Y,@]+%8@2E:4 XM($LS?N'7-0RPY/*&L1 XMB`:U&!8D)3,P`S?`\QZ4,.Y4_F,0B#G%1+I:2R7(5@?3`DQCFW-0@FQU,"O` XM4V6$JC1RX]XQ![5\*XC8380RRVQU,!'X)+99*$GBEPRX!8L14HYU1TE`!!6/ XM-()+IC'(KCM^4"DP$+^O^1!J!BN!W,/"&VY<$'`,1!,UG9":7ESH[VO,92A2 XM+=69+F8PD$FAWX[=UL*,%`6Q%&DO$8+\GFF?PJ^BX(KAD)H/H6:P`II_RT[V XMX!W+S&VJ>C;ECQ[$!$SCZHLA4I;C3N6_&")5!SQEXR]^M6!5`@/Q^YH/H6:P$L@]+%.@$RS3 XM$A@"+^T]+Q="D`KQ$#\D.OKMV&TMS&9P2QWQ3>EILG\CZ?YML2G\*@JN&`ZI XM^1!J!BN@^;?L9`!RX]XQ![4\<2]`:2]^M6!!$0``[,\-`2Y4_HLA4G4@-(TEFO(T$"4H4EQP`DSCZG-0@B)E.!)(P*H4P_$1?2)5 XM!TQCFW-0@B*%`TQCFW.P!2PH4H8C-)'NZR:T2O!Q!#%'ZM$G4EQP`DSCZG,0 XM?2)E.$(3Z;YN0JL$'T<0)#NS!8L14HYU1Z\?^U3P)`0<(4T@!*<4<[7C XMCQX4@:XW$$6R,ULP!R484HYU1Z\?^U0P-`0<(4T@!*<4<[7CCQY$?:XW$"4H XM4M3G3N4_!R4H4BH@@00\!$W07;KLKXL!&XV-P*8'->W<)1G8:P.5P_4!-58A XM;&)`;/9RW2$62 XM$6?Q'/$T+#9\W1RX^)E#$UE$$&`C?"JB$/;R:_$T+!5S,^,K.--3Q%DD1,US XM(U5QW:3$D2BA(O$T+$?>SL:_'U##$8]&3P+3;%Q($VF1$&8PD`493\.R&1C" XM5"I"+!23W@^;W6_0G?D29Z\&+!U"W_:2W<1G+\C"24)$$]=-2O0]!_&T96B0 XMPY^Y+I!V0_?=G?FR.7BU%J2D&YI_RT[V+V(GZTE`!#RAI6:P!9I_RTX&+N38G?DD66)'-? XM\8%%(PN#+)PD1#1!1#3R_M8Y!TG16;,:6!J?)`7::D6CRDIP>KJJ0*2D&YI_ XMRTY&/JQ__SRAI6:P!9I_RTZV0I*E^;>J-`GC0K"9EQOZ:).2#633#KCL^!K]^60K@L&BB`\13,W@`^'/@W6@R$)3: XM'Q)A^:NN[`$%*P4A^>O7?TDB[?I'J5WA/8AH,`$%*UY57BT9WRB`!V#<%>3S XMY>J-`GC0%8?U\"N5[$NJ-`GC0K*4QR=VUO^75DO$=Z;XN)?%FS;O,X\@]+$C`A63` XM5+_6/,\C1'EP!SA"!CZ4P\)G1<>;$$DA,&U`WE<`-:2D,LT!-33A2`.5P_4! XM$&C*@#!3APT;$&7PP`GCADP9,B#8I'%3QH4"$"I`)'$#IPX=$`'E"$PS9Z"< XM-VU`T`D8,2$(,77,F"DCQR)&$%+*T*DCQPV(&"#2F`$QI\Z8,67FS&$!`@:( XM-RMIWB%9\6+&*6,84H1()@R=,$%+SJ'S1B3$-SX#AH'C`@0()F'&$LWJ$XZ< XMB71*OO&HDB5,F31MJGBA8*P-E_%8)P#)X6" XM/0H2)*1#TR?>H!05RMD16N09DJ3E$*5S>$SBQ3$QIA'#5,7BWGOI\,881@SK XM!&/0RJTS9PP:XG+.A)&39TN3(%B"2#DR946,+L=/CV'JLT?3\&X^LF$=6@R; XM-6G(P`%A/L;QX)K-.ZG"A,EQ(E!(D8035*"`@@@ED*%#&>G1!,)CD:%0PAPI XM<.&&""S`P`)G+?C@1AAME-%9"L?-,14=SH%@8!UNS)'&&5NA1D<*'/I`1QYP XME)$""*`A%Y=`1B31WQ-#Z!!:`HO1!P*+9GP8(@HD'BG23CT]99P"H64UAT!, XM#,@$D48FD,"4//DDQAQJP8'"?OTQA2`9&`8%&1M)=2@116Z\$666/X(08!!' XM?%GDD7:%<<8;.H1-N9J`@A!-/2'%=H^SYN"4(1!1AA*!A XM:BG0$T(H,005829PD'GNK2$I'9/!P10,CB:PFY)MA#&&2'#\56N'=H3!QALR XMY9JD>;-2:BFFF@;!Z9'+(J30=&>@$`-3NS'U6T2Y_B52&2CL%JY(8:S1J:D@ XMK"H%J5+J5.9+:):QUJ)M@O!FG,FQ&-L**^R9@$-FA%$0':V^<)6]TIJ#RD;H.-3)]YIU@X0F> XMB2FF&P`?U[**)(<0\\0[]BBF4"I.E)!=,#=5L\TH&S:LAR"*F.O.*)1G'JXL XM)X"R;6:$P\\]1C XML(CRR%-#ZA,,<"L,@A%A:/Q0Q4?V@:68AL^$XG/8UA%B>B4-IH"AB;NAP]`N XMHU"4&-@*#X+KU#&U+;@ZBUL&N<4IFQ\(S0I[:::;6J_DTR8]^&+4T XM_"@I>S%Y%O>D);`CUDI)QT+4`6F2P^'@1V5!.Y+AIL`PAT%,8A33W,4RMC$4 XM=.QC(7N9>4S&$8]`:64V.R+)>A"SO64-9RO0F1Z3AL8PVDQZY%K,U`Y%EN5) XM9R(ZYN8%N2T,9#O'#%)FY@6;A<9D;_L*22`T0)A\I'3+6V<# XM!4,8RM@F*)1JS/'P.1G:5&8.E\G,9FPEHXC8@0U,<0UL'&35VS!&!>,[C?D^ XM8\3TO&0]K2G#:\;"5J]>53%O_98*BG..J* XMT+<]#D`"(I"!WJ2#K?I*!RJA3@E/,"%?QHD-9UU=**$6HA&5Z$0I6E&+7A0C XMO("R0S?*D2'9%:0A#4I,U6+2**$4/72YSU-<\A*8J'6],Z4I=6Y*4)Q62J=7 XMHBV6>BIN^PK;IS\%:KEW$^&A$J4^[S%K4MJ#5O>TFR[N?@I5JF+5D=SSN_<$ XMCW70.U+Q0(!/8`FK1L4Z5K)T5BTH5FI[T9J6F#`[H`(=*$&=K8,8\`G:K!BD XMA."+CH5.>U:5$?AZ&LP^]K+IT^Y"U[`;6Z][L4FU>E+NDSI5X/D`+`='Y=@!F,#PHXTAO($10P= XM&@,<:*,SC"F.8QX#FLR-)L9S6J6 XM0Q=`<,Q"\HAE>(YSR2QK,VH2KG%4MG*@:9,S.JM(=-?+W>G4I]K6,98ZL>.C XMTOYL,\,)(7%T.@M?)F+"-L2'#!M#UO*B$Q'8U-#-61;T'.5F.!]BX=5CDE>5 XM#BTF22:`OK"RKTZ49SY!7N]XR<,O\_*08Q(_+\710]_T(-V[`J,WB@A>[Y%> XM[&#.SA@%%3;6G1QXXPLUV\/,_=ZUHH."$9?XRMY"<;'G*VURM7C;`6KP9B'\ XM[1KKVB?EYK#YG'P<2>I2#%TG&>Z=8J:B[DFEL;BE320#"^%60,<[H`Z XM.[PA/I[ID5KY*AOQ',?+;90C".CXMTS'+&(@X`,?5DY(+M"!9D>:YK]7+G$% XM9#,C.0G#1*-C.0;E18#A'+5/*G>YCTQ'A'G8IQ'>8)`WW,&$9ZA#?,!F-)*> XM)"5&,`L_\^"07OVR)';1(E(/HNJTQ]PIXPP,V[\7I#5+S1P:=4]Y! XMXN&6&^;$+::H@2G<+(,=R(,MIH!-(G`HR=70X_1+5^GX;8*ZE&N16(IJT`V4YM?G'FH>[9=H.>.2E)^]:= XMR)R"630W+`W\'=HOX>6DN/"/7F-*:H%]L#0"H1#,3T,8PA=")80J',&(+D,& XM9M!-#N0#R,1I6B-W=%`I(I!\()`@-(4M#Z@@^L)ZT>%Z%Q9[N6(7P/(T`88L XM9K"!"LB`PE=P"C`"#")!9O`X\D-#&0%53&=T)0%.LU$6`A$5*8$6(&$O;`%! XM%C,ZYZ5)V*9>5%182H)&Q\%*Y:(DA!,4(,`#<2.!)F`"--=G*7`"<),&38:` XMRW9F>V8>Q1%K7$8H=&('3-@IR/%\&L=QQ'4D2K@#.V!(H*,BJ6>&FN844\@S XMA'2%,3=S>Q0S+$`S=O-KQJ4S5/.'$0,T(%"'C99'+H.(-$,SBUB&#L`>71+<$8;#@<"AA,'1X$&T]%3=V`L:Z`7^2,;:F0S XM+=-^Z7=L&/40AC@T5E9DO=@'"!$V99`UHB$'MG,@9:!JI-9?;R!-62,&A<@R XM["($3+`$24`$,N")U7B-V>B)-J1)D)9D4Q...)1Y[%==N5AF,7%FKK2.I2AG XM;-:+@Z1IUHB-VCB(YHAPZ(A^/F!G[>B/BR:/Y2B-VT6-?7("+W`"X&A%>[1R XM)V-'+A+"3`$8]`&Z2$#X[ARY0@VGR(T3'-#_#@<&EF. XMR.$W=G1)P1B-TV@S[.)+#)DU_I@48\`&@-2+#SD':X@ZY5B/,3,"DHB2=P,' XM$J0HY2B,)BD02ID`AH,6;&!11.-0`S%!W9,81B/ XM^KB/(TDQP&2,AD5";E`'93"3MFB0/&:3"ODI,G,"?FDS!3,63C,> XMR[,^O8B7QR4F4'8P#>DR'9.-,``XFR@F?Q$?(],ZBIDU4$F,QGAP(RF3-'F0 XM-N-K:3A'$9DRD?0X"8!R`B$ZMN>%3YB88B@;>?A&8@9I[&@&6Y"6#?<=;98` XMP!EGE7@W*MF67``#;UE_9G!_4)!_^U<$_?=_GRB`!+B)=H$7#`A\H'5]J^9` XM$'@"TS4U=I$VO.D#?[$"93F/++.=Z<&`II4KCH."#2$4[\."&8$$X+0QQ2)" XMIY-`0D=J:M2>2E*<8\B6Z+A#H8&@'/1,S5RB'=7B&5*:&&T>4 XM.O.&<2B*5I2A=P@"%+J'DGB1B#@[AU23GPB)BLB(<^:(>IB1%SJ)JG><+UIS XM?=F'&-E'@GF9A9D7M+&9B3DUG[DE62.:Z$B:-&H@#\ER$KDC&>E'MKB3S>&3 XM`)-D1Q@QK;FC=V@WRG0[_D(3IO8AI'%/OG(2J.%Q64%":`&-:_1ELBD=U$&; XM4.B@)DJ%NAE':6EF#BI_;&8W@=H".L.D++FAGB>1I.>Z]F>YHFI?5F"B&:?*IB?5".A%*)?C7A$ XM#EBB>0BKLK,T03F4;0B`>FB%%CES2WA,#GBK&2A[5[,C%[F$4%BL5(BKFA8# XM;3:F!W(')S%WX;ER>Y$>N;$" XMX=E8ZQI,N/B/NLAYW/*.__A^KX(:XY=75+)T5X)->G<3/+D6`B$"7(`:+N(0 XM4C5W&&055?45)$0R'A8/BJU&=F7F[BS(.`%]6&(42NRA(2U2YJ<36BU?72VVDFVPV&T7NLR(KL%W\&CDCBV3#NW-XMZ(>RA2%AR69X8(5XFJ$";H!6VGI82P*R XM*@!Y2U%6(R9ZZB%YNF)7;'`'GK=6)6MY696RO3$&;"!*4>-:H6%M XM0GA@1*A@^,LK:RHBPK*]Q&(L(.@HG:LD^-N;QU&K<7/!4!,=UC*_ XM0S%[)\BHCBJ=D6J=1U2I9^`#THJ`\+F`,19AR,-JD"41N>"(/"*[R%0 XMZ5Z`=3A!&@.8RG(&W7V@>0Y`#.0!9EPFV XM8&C#X3D'6Y!\DV6+G-%HSGE_1R"=MMP$4!`$5,`R23H2Q@P'R)PTW3P$SBR* XM5-E#/U1`6W1"4+$\,M448[D6!WHZU8PMU_RD:[$%,)#,2F.,_&P>(S/` XMW^M)*2`","`"BRG-:]&+V3QGK(J?ISF,2GJ7%$W1_@R*,Z("`,,9D[7-C8I_ XMD$J=DOJD1&S$*:"42"PWV`+%'U'%9C5OMBBJ%($"B+ND XM8:RJI]G&][F"-BD#2C(L4`V%*TQ$3O&=Z-P",N">3SH&4'U,MHS+>\IG0O6MYS+[MR"-G,317`MD"N[6==T<&,#+A`#,.`",Y#7X'@3(A`$BS@= XM40-4I.9.@YRZ1M=J8\$"67,3P)O8BR,&%N5.R8&,2?&Y]XFM,9@>CYT1/@54 XMXI:Y^502<=DYBQ,5(D%JK)@_G^T6&L4@CRM$+B`",_36M2@FZXM%($!$.K4& XM>+`%]]A_1M!N*=`%PGV-4$`%4F#<7>`";A`?>``"H,5K-C-,O+(&)R$L1VV+ XMOK?$:7P&X79AV!IPYU:.'>7.R'$]P]2+ZWV;&LJ1$N00<@T1/,R1V!V$SI)M XM16B,^1U4[.9NST._Y#$"12P`'X& XM.!;4PV0LP]2;\5:0]58UG;G1L:R41U36K*R/&END(COBO1B5QOCAW$U6 XMBF2(OE;.O3R91%"9G1P[*'E$6;0&=:`F^!4D3D`$1SL6-A@K[2;C+#.T/N[+ XM(\*WNS2W%STU'&*HCP6/)SH+(V8+'0F&T;.R+)0^43J@86SZ0_0T$6 XM*M0B^T0$7G%3)0%5*V:[[K2:+\'*-)%627$P8,D_?/'H->&X<;U0BWY7.P4? XMV'I26FDLL;$X(2$0+%)=)4%0/B'I##*#(N&XAO6F#.(5#R%Z#&YQS\$N[E3& XML.Y`)R7/G%=W)AN_&;MNV2)7J95`+;M.E7&RNC$<).OM?Q6_WR)7Z#L:I5%6 XM1J,:)0*_;Y4GFKE#J`A@("!GC$0C/3RHCM")$>U`%: XM!/%2CL9QQB:VR"&;V",]O@C_:0LX(CZB/Q XM%+\CQX0K"'B)F0@X?T9E?3($34`@GF@&'YD>E&8E4\.8.L,N^]$$0E`$4E#U XMAC&7;9#U.D\$GI@2 XMV?=F9@8P`QG0AY@T?R\#@RCX*I(2/`"%.*"L5]:;6V#X,:]G7IOY2OO.AR,M XM3$`%2"`%3^!_2/!J[)*-14#UQ5RCYJ'Z!-+X\2TFPO%$U^;!4Z1@DR3-+@_S XMMVF(;Z@14Y"-/ZMERCIS*J!EBN^-1%"URF^/S!_`*Z>XEQFUSV\>?^_\-HS] XMT7^9GF]K^`P1C>3LC/T1N;W[G?^B69VWT(^/C&^,R*&XP0CFH9F^N(8B&GA\$;F!1O3(Y1)3;5K2]6&0_ XM1JXF_O\73*'D3$ZE2]0?SQP3'8P"]Z_U.@[FO=SN2).'7!Q]21,JHT(DEVDX XM5;`E$$%JSCD;F)$Y%C.*'\%(;"#-AY8USU_Y[OKR`]F+5%ZTQK\C6I;^UK_] XMB;B1MLA(;*"X22;_64/E16O\.Z)EZ9^S/@[DQN_BR+A,(H`\7-&H1@,GY8C* XM!FX_1JXF6L842L[DO1TQ,4`Q5,R]Y;,CMZH0;[`&5<.];;`C4\@R;N$655,MW[:]S?9NXS-PE_G@]:TD XM\W>EPK08EE_0A-0"P1HWBV'Y!4U(*["10QVX,(>V'DX;'5PUBR'B6D^/+K,8 XM\&V`>&@"C^T6*K(8EK\8MRFHA-0"P?K8;N$6BV'YBW&;@DI(*R"(]3_F,(>V XMAU3B\HZD8.[.3BX24!XBT6$O,A7E_)4"4GZ7,='!*'#_6J_C:E_BPK'UTW@D XMCREEG@@%54`%J))P)+GYM]GY:]]KKHK*:NXHBW&;QQGG"A)B%UXFH)4D=O[P XM>+X8>AXE%J_2TYGQ5$/$'G^`(8^J!X_M*%\0!R%P(HB>BZ'G8TSS"GLA(HCS XMMZ/SY$5%?;P#)!+J#HA%>CJP)W<2T#Q-/5Q9*``'"@B*-`&=I!;BRCS*WL:<]`I0SL9(CP&P1-G32;D1\+TL44A XM",@NP2P%3N")LD?:P1-GA-OZDY$TR]S,V[$C(B\"/+#,S;P=/K#RHL'+*Z[. XM^=?.(B\"/+#.D.4#*R\:O"SR(L`#D"4A$>X#<4(AAKCVDQ3U:PU:(B\"/!#6 XM0^`#TO02+LHNHUS*H"7R(L`#HUS*/B!-+^&BW8B/H!4K28P"^!0\<=9D)/(2 XM+MJ-[@]:L9+$*(!/P1-G.Q+Y((`#,4?:P1-GWN%ABQBS;0,"TK_VCMFH488P XMBXBJ)3`&<4(A<+/VO9:?\$-Q%4M3'T<&"D#4Y.*Q`;\9Z,O)%++TL/4C^H!4K23P9Z1SY((`#,4<46[#5)$(4LP0"TK_V XMD]0GP2P%3@!:(B\"/!#,4N`$/B!-+^&B[!+61;*(J,H#83T$/B!-+^&B[#+* XMI0Q:(B\"/##*I>P#TO02+GJ3,P-:(B\"/!`R/B!-+^&BCREEH-7ZONSQ38$' XM-Q""2$WS(L`#,(`')8`'/A`GBO%QOA*[OB&F=U)0&%>KTTP2^4G\MQ'G\>1*%Q5O=*=?.>R6D" XMP=)+>[-\H!E>=(">TEHB&F=ULO?F\'.Q9*``>(,"XRX>:("^*ZYQ5DT1]2G(N,Z'E*8-[+*5*EOS36"TB`N;KT&F=U XMLO?*\1*P:'Y$P>(">98TP>("9Z('N92<)A`L288&CD+C=R,&+F!FP>(">08P XM[.H3;["@`_%TL&"M`T1>JQ`;\9Z+OB&F=UL3I)Z8&>CF+C432^)A`L XM4=*X-V%8L^AT;]<&<2>Z`J14)I,&#TMW&D06RHN)8.E.:4+M%&MQ-/5Q9*`` XM9B\#3E/M@27N>N6^967VZ$MQ%1OPG^Z;,;#5_PY4B16ROQ,3_V[8=N7XAZ;Q XM9E^;+&KV\6?V_:XD\SN6^W=N5K$B+9H`93%$L7^#3R],9*QO\*F`&F`$W9H`96R@T46L& XMF$%()9"4+&,&F-'Y3!];*F`&F+&)-SG!X&CC450L7Y`\"1SP&)$"4GZ7+LJ) XM)T`&@WDSEB,#3O,MQ?(%R9/`,M+AF.FBG'@"8S"82YOE3%$L7Y`\"2PC'8Z9 XM+CHPC1IE4V:+U"H"R`,10P8'*Y\`.T[_8I[EO6$&F,'&::YP&YSYE0@_U?Y6 XM"N!Q-/5Q9*``S&$HY'*Q$;ZRU"H"58!4DE)A<#`?6]`"0T`&=+!G6]`" XM1/"?/1!@>[8%+5`%_[EG6]`"2;`0*[%G6]`"4[`0*]$%T`@_%A\W4)$'.N%S XM!7L5ER$&5*<2Q;$Q8\'*1<42``06;<43N+XE$'%28+$0M&%Q-A5:TQ,4;9!Z XM35=Q.L@<)625>>"XE$T:)=%(3JZ\(+@E>5%4+"%^9=$K<.H33BYV)]5N5N<@ XM0D<&O5L2C90Q9Q`2*6`DC8$1"<`B+@(CB^.5LB$&F)@G6[#5<",&F/AV;1!W XMJ&%"AE'(&)$`+.(B,+(X7BD;=/)36S`#X($D,K$E'['I*8$\G])(=/)3P^C' XMGHT1"<`B+@(CB^.5LG$79X`&=+`%,P`>2"(36_(1FYX2R/,IC7079X`&'P$V XM?NS9C-/S@5ZP&=%/)[40M&%Q-A44;9!Z35=Q.GA2R5L&+5`6EIL4)>%.2!4B XM2N6XQ001I'84MLM*AE%"O3(YS)`"8F(@>+`C5.@'*,`$HD(%7]`Q7\`$11`$ XM1L`'`G($2$`%7]`Q7\`$11`$INP9%K^(\A$#,7""!&,T;R$J5/`%'?,%3%`$ XM06`$8@(#>(`#,``#,'""!&,T.)$$1X`$5/`%'?,%3%`$06`$8@(#>$`#,``# XM,-#&H#D"!&,T;R$J5/`%'?,%3%`$06`$8@(#>(`#,``#,``#,``#,'""!&,T XM.)$$1X`$5/`%'?,%3%`$06`$8@(#>$`#,``#,``#,``#,,#4K3H"!&,TPO\% XM3"`J5/`%3%`$05#<>)`"8F(@*(`'.T*%3"`J5/`%'?,%3%`$06#*?):L)T@P XM1B/\7R`@1X`$5/`%3%`$05#<>)`""6`@*(`'.T*%`G($2$`%7]`Q7\`$11`$ XMILQGR7J"!&,T?O(%0I`$!:)"S/82F)@"8H("*E0=8H")'F^`,[!G/F"`1HV) XM)@H"-Q`[5!@#)T@P1M,N2%`$0[`$0I`$5#`%8H(#$T>Q%D?N'T$;T[,9E_&Y XM=,(:%%>Q967VUSL'[$%Q%4ON'T$;T],89T`;TW:Q$;ZR%%>Q967RTS,'[UYQ XM)!-XM#$]&$$'"_PXM$H;TX.LFR8T="#->-`K53<&*#`$4``%Q)TK)C\]LM#3JZ\[F08SQY/Y0895X"C`KUYL9"^V]B;49,K^R%%>Q9=4BES$' XM[UYQ)!-XUXOOG+'`D^>^Y/Y0895XG-$IM'J]R+II0L,9THP'O5)U8X`"0P`% XM4$#K",E1+D:$[+)LH96=T"+7(9)VV>=*O9V.9Y,VLE3=.H?AG-%S@DX$:W.]8D!U$6$_1CX?I`86"T$;%F=3 XMH34]^_0$VVM1Z9WR!V$8)=0KD]-`]KR(H`M4B$)"IH94<$KISAMXUXOO"E#D XM1XX"X^ZQ`8\1*L1L965T-!&"*QMXUXOOG/'OE6?OM#$]&'$'O4$1=]`;W306 XMM-<2;I!D:8`'3"$&F,@49B`&F+@Z^(N)W(('3"$&F)@G`NR]B841:]`;_JZ? XM[;*M'Y'R!V$8)40G<[<2-:2$YV0>*L1L+6%E35CE*K`&.T*%^I>-<+,&6]H2 XM@+0TU@=;SU$UEG.]%,)I[`(#H&4XLG2]8D!U)9$'.O%J$;ID0W%,JT\%8F\W XMU`2,1W*]G[LQ"AUXM#$]&)$"LW*]F8$"*@0[.F/VUSL'2DM-767OUXOO-'(9 XMGTLGZ](G,=`J5V<\E_&Y=&+F^(N)X%IK/W0&1_%J:Q\:CREEK7)UQG,9GTLG XMT8.)LF0>=.(3&3$$2%`$0[`$0I`$5#`%'PHQ*`"'FR@&F*@D0I`$5(`I*'`' XM98:)>3(U9B`&F/@[F.CQL(*)LF35U.TG7R`$25`@*L1L+X&)7(Z_F*@D9B`& XMF-C;PO\%`G($2$`%7\`$11`$Q7T'98:)>;(CGN@6;M$Q7\`$HD(%7\`$11`$ XMQ7T'98:)>3(U5V<>=V`G]^)X" XM[/LXCE\CH[3`H7%.YJ%">=`IAC,$`1%0K'39%/10M%%"-$A-:J2$)C/=LX<1 XM*9&;PT\$/[L&.]*V@F\>*J`N_+6E#[*E$#G=;=,N2%`$0[`$0I`$5#`%2T-^ XM/ROX5S/65:X":T"ER?K)+F-T-#$4Q[3Z5"#V9[U:7KS#R*I`2 XM7H`1QS6TY3+=5'C$8:I?T^T#/E`?298&>-!H<-PNZ$(:0'1U>>*P:D015\.`H%'$'98:)LJ2:TRVL8H")O8T327`$ XM2$`%7]`Q7\`$11`$1D#=;R$J5/`%'?,%3%`$06#*+UP&=V`G""FR+A,(B`&F"A+FF8R>+#R1R0&F"A+!F@R>&`W XM:R\F['LD5V<>=V`G?C`9^(N)O8T3 XM27`$2$`%7]`Q7\`$11`$1D#=;R$J5/`%'?,%3%`$06#*:'Y$8H")L@2%)H,' XM2T,1=U!FF"A+?*#08H")O?T6HD(%7]`Q7\`$11`$1D#=.)$$1X`$5/`%'?,% XM3%`$06#*.H?A767OUXOO*4`1=V`GH<'O5)U8R#21*$' XMZ#ONB841C"1199,R+A,(H`'O5)U-%9- XM'Z%J(=(&Q$*%W>(`N53<&*'"Q$*$"9'4:C"1199,R+A,(H`'Z%)U-%9-'Z%J(=(& XMQ`8\1P_0C[UYQ%V=7+:(' XM_V[8ZBO;QD,;=.(&4,J*M$@C,L\VK_PXM#H'>E";=!**0C-,?6(>>-`K53<& XM*#`$4``%Q)TK+:('2C($4``%Q(WF(=(&6I8')OXCA2<'Y<,@CF(82C),/_+" XM9(KW207 XMYL&^1W)UYG$'=B('6S`'^(N)`7U$9B`&F&BB*C('^(N)O8T327`$2$`%7]`Q XM7\`$11`$1D#=;R$J5/`%'?,%3%`$06#*=K/V"0`_Q%<&=V`GS"$'+S`'#?," XM$B$&+Z!E1T#0C`%3`X",@`#,@`#+Q`#+W`#$LW4K>IS!9L10X`H>7`79X`&'^'T XM,@`#,$`#+"`#,*#7(!`$DRP')=$$AC*72J&#*"!>D@($;%`',N4";.`1:.`" XM6Y("^Q0$+W479X`&1]>[-#'M5N&X.2%!AK$;'J$82S=`Q80:1+$7#?--3341 XMKV/';3"^'_04LO%!P>&X!J2"%E=Q:&%I`I$HID8':;J()U%3,[427F%"#U-U XM4X&MAB5!<-HBCCL=CZP31G(3,=`6.2%!AK$;'J$8+5*Z1+$7#2,0R>&P;<`< XM3Z43G6-"Q3'/R0$'>7`79X`&=."X;A$W4&%Q9<`4)E42/EVZW2M!<-HB2&=" XM#U-U4X&M$I2EB1,BJ7X3,M`6.2%!AK$;'J$8+8(:+S$1KV/'*=$&S/%4(G(2 XM9&`4-\@2Q3'/R0$'>7`79X`&=."X;A$W4&%Q9<`4)E42/EVZW2M!<-HB2&=" XM#U-U4X&M$I2EB1,B+NL_CNL6(-!1?0,0+NL_CNL6;39M`89+$*HBD4J2PI=)W XM"HNF3H8PJ4(DB9,CAX5\!>'D"140?)LDH>*7RI/#0)DFT$A59@H?5I%"I0G4[HN!=%X XMBN(@HZWFW(F8\A,01:P424UT-A,F6[M^13)<"%.^M9DP%2[V+?4D2X=0.>RX XM#DV!%7C41$$$X=-`441`QYX6%Q%D*94%H<--\033D07114%)G$@=4$T XM$<01=(&`@H"+-?989%_A5=EEF6W6V6=/187<4J^1U]H450@Q!6%4?,74$4\\ XM081=8D4GQ51#T+4#9M#9900(543'`EY$!&%@A6)!9=1F4SS97I6.`8<89X%5 XM`05A&*8``GM7A`<;"$-X%9U;;8&`X5I.9(%7:&%IU1I\MN%&X5]9AH9L=.IQG4E"!UXF)I>C8$905<01?)";&U'"6<27%%4(5 XMX:920HW:G7U)"3I9:Z%1&9V>1OP9U%!%'058$0^*YT134P9!Q%1W`IO>4U$F XM@6ENTO(H&X@BDKB="B\HH,`(:;@Q!AMUD`0"#S&]](8+:/B0P`L^F?&02V74 XM=,8+'Y5+AQD[A4LNP'P)8443P9)K+KKJ\F!'&V;`Z\.X`KUDAKATY`%'264` XM7(<;I=[KEEV-&TRPK0JY`<9W1D+T1LO/'&&G7` XM@8*;X(YK>;DM]98G"+C#('O'M(.7VIRXQR"NZ#69849%(*Q$8%5]``4(//8`@`PA\\&&IP0CO?CG)=$*QEPP)X*!`QAM; XMGL#'(8]<\AQH/$0'"&VP`_U<-H*JE4%]O1N"^Y@`OQC08'X:XY@9[@$B!"G'H)A.8J(0G;$$,4A##$/)NA@0<`X-YQ!)6\`V!!RD`,0C$0@!KE<19Y4`Q?(P`4T<`$+ XM8\?&!)C0C7.$02C;4"Z/K`P-8C#D&HIW/(B$3`\MX:4E:9<`(U3!"7Q90A$2 XMH+MICE`_4F#"$X8PQU!^X0L7NB::SEE)*B:@*D80)SGA)SHJFB1VWJPB5$8D XMSP2`4G3=DX/7+M+.(U:1+]@<9P)H8,XO(+0([,2G.WMS'H76H*$4A>@7"GI) XM/0E!"?KQ)!M!0$,I'"$!-P@ERCIBAY0!LB.\%!T5*`(">[$A=2@Q)0!7]C]' XM.M$UF83C4$)FKI:P!'HI:XE-<9JYORAE61(U*)U8"<<$R*`&__3)*EO94H&2 XMCJ.].\(0ZF12J]:`H:([PQC&`(*N`G(E*/O?1:#G4SF4`0YD&T/)4*(2&$1O XMI(!Q0CE%5Q0D',8-$B%E&B%$F/54/X("X=-+.,8RP;'I@RL XM[)N"$ZI@!!1F%3Q4P"P($/N_S3;6<)`5F#N%P(0E4&6AH<3>?E:KV<6^]K&@ XMK2)M;4L$^%U4=..)0F9;Z]O.PO:OHJO"'):7D(L<:S64V`YJ-H.B7 XM$2XA*SL9".:PL9/)80M=`%T^FS*%(V-SB2A@=8/1\&H\N-F'*-"PK9E0X%D+ XMY"*$^9?.;CX??"Y^0I2K561$AVKEO-ZRWX&@0^A+.U.XIM&.!: XMUZ[V]J]A3!48C)N:0G'T9L[-[5ZO6\/RIL*[1RB4(41!V^CN]K?#_84HK)%X XM=3`>\D28DH,DA,\)$$)EI""B)`M3=#%9"!E2ULB$-].[0A`1.4.,<1_;M9#7 XMQ=?Z&HX0#.3P4$F.PCE XM&.H@![L.Q"-O8%YLO9Y!,&85 XMP/F1@*!X=BU#Z*T^>JV77@627SW2@/9TVD?>]@"#@QAD[]HL'PNF=[V#!VGU"'H]U XM.[#:D"VA":O'IX`]=RX-J`(D$S-D-P8M]S^I%G9FX`9A$!!YYQ/&YW;_TX%E8(Q2'=OUX(D@UAD XMET'T=2YND':AM(1A4#^K509W8(3T=7CLU1(V1Q)#6';EJ1H$?>%=D%T#TTU8;D4IF$(!("!0=S$'@Z:%W-B'11V!'% XME'US1T'Y?B#R(9R*CU03N XM(06'<4U5H)&P$4,[$9$@`$W-B`+NYDH`\Q(BP86O!STF^2X(J``0R!"NF$%O XM``=D]S$.YXH)D#HZ!90NUE)A*(X65#)"24H(X6)U0)1DUP>KQ7B34XE89Y,Y XMAE@D07Q2Q1!?0)2KY0)$.5)1A,8!@@(`5Z603*52J2(@6C%Q9A839M XML1N'`4]E0@1XB2P@0"(@4(\O-P7BI#U','%%<&0>)HFJR(IA(`8[D3JKTSHH XM`(LU.(L>&!!P@'K_`TL580:K!X'M]0;O-4LTF8]DN!-S4`=B8%VS9XFKV`:M XM2('[U7-T9X_ XMQS]@*'NR"8P[T8&UR$5RN($1^H/2Z4IJ>!CGB7OF,@<$ZGER0`<&FD'DN7H9 XME&,[=J`ANH,^9Q.8-Q`H^G8YIEW]F)_TN9^N]WDG$Z-TT**?5W6Q6:%T"*(N XM8Z$JP#]E$(5#^HO/58?.>1@N,*79Z7M9-WEV1Q%,6IV31Z%."EQ0.IT@,*4N XM4*666)Q)*A.6EW!-&HM(6G74J9V3EWN.)Z>W5SQK:@;@^7MSBJ%<>GMT^IZN XM=P:1T6#PCX:..%:=6BJ:KAZ32]ZH9I'IU.JO;66(G XM)A.P*@;T1Y5\>GN86E,F1@=KV0:P>C*R>J;;V:(J@`:`[<9L9>G?2 XMB@<78:UC`*O<^JC(>F)CD&+Z*:HF,Q`&FJZI:IQAL#-N$*IRL*O0.GG'F9R& XMM*>KIIJL"9VX^:RUUZ72::8#>WO=B5[\*IZKN1,G2JYPD)YIL)[MN3)R\`)S XM(`=C\`(M*`8OX'QP\`(^!E]F.08`<+(HF[(JN[(LV[(N^[(P"[/2:`,T0`,@ XM``#3J(@WF[-^A;,Y:P,V@%4V&P,S8`,P4`,Q8+0SD+3!`P,S\&$X&[-2.[54 XM6[56>[58F[5:N[5^[5@&[952R\)0`))0`8Z($@DZP+T9P>1J$LY,`/B XM`V(Y\`)T9+?C$P,WH'A[*P.M)%!G,%_@@0<)20*($RYWF``A8$_ZE7G@YD., XM2P30,593$$,99Q!C\(J/)89K%3)D`&MQ*0)`@`(CD`(C*Q!L.T41'$ XM1``1I@AY9TBTE`BJ*P XMPAW0'"/3_!,TXB4W$B$%DBT]\B.;(22;621'$LQ$`1M,XB10`LRM427(@B5: XM$@1<4B-?0@5A@M22\8AFLCVP(05JPB9.X"9P(B&4M6<4M,^`=.B\ABE<<8@H5=S$&%7_">6 XMK(4G-Q$`>1'%!!+G2S+7")$2Z:O9>Z[SZB:N:8T1X3G`35.:"G15MZ0\-UTI XM"JUL4@<&B1S,3!6XUH8.,GEUT:5Q)&GCSFDN1N XMLJ`4T1')M&!-!UL[;I,/C_3_E_8$@[A-)\*+_@W-GOA"OUQ+2U^,\5P:? XMC#SMOYW&(K+U+2@:#]S\H4;TTSGO8,R5W0!$)43$E`\B8 XM#@)J0)$)6>9K@!<^YN`?T3D'L3*)KG#)/9(2.5T&<7E(BGPID$A"H.C`/4A[ XMSN`2=A@?8Q"=-5KG<1B3GA"5_M\)<`6=7NDQ7.!`4Q*'`0K-U.6P#GPH XM,.LR4>NX<^NL[G1(EQ)&]0:FS!TS51',O<8`B5?PUQ%VKI`Q;',N3I+8C6+; XM?1)YK&HK14AS\*V=U=T3?A*+TUGV_MV(3.=+1Q!=/C3VKF*7CNX!"=YY,!%- XM1<1SL`9I$+$E`S-Z=78NH=_\[3D=@0(,7S0B^>)'_N4]%E<17Q$3K^`N9D#Z XMZ-_E[A.U%,(A/#Y4(%`@0S;_YQ$K15_S/D1T@A#@_3]5,`3+4NI?800M@`/X XMKF"41,27'L%PL%8S+YW-M'?X'_\Y.IS[;Y_^ XMG_\Y.IS[O_P:WW8/H?[SG_SG";*$"C2'JO_T#Y\PV#'PK_[SG_P*"K@7`?_J XM/__)S_\MZ/_YGZ/'/__)?YXFGN2YZIXO=TVR@7E;Y%@Z1!/5EW!;T`(M0!/, XMYWPRX6;A XMNC"=\SD*X*GF8JIB6BY5-Y49=/'2?@=P>/S$V9^9V*!P>/SSG_SG>77S:J+; XMG_SG.?JF2@>@FGGCS_VY^O5[#ZJYVE^-MFG!MF$?S0=PQ@?XMMB;P0<:IFG[UF?: XMHT(:QF%#P`=PQ@=PYFX9ICV;%FP;]M%\`&=\`&'`0/*"`/*"`/*J&$<-@3*J&$<-@3*"`/*"`-7PDW**&Q( XMIHP:ADW*"`/*"`/**&Q(Q@=^=A@PH(PP<"7)VQ(IHP:)@/*J&$<-@3* XM"`/*"`/*"`/*J&$RH(P:QF%#<"7 XMAV^814*-AEG'`0/*"`/*V&57XG4PH(Q=AEDDI#V814+:@UDDI#V814+:@UDD XMI#V814+:UV7*V&7*V&7*V&7*V&7*V&7*V&7*V&570D+:HXQ= XMIHQ=IHQ=IHQ=IHQ=IHQ=IHQ==B4DI#W*V&7*V&7*V&7*V&7*V&7*V&7*V&57 XM0D+:HXQ=IHQ=IHQ=IHQ=IHQ=IHQ=IHQ==B5>UV7*V&7*V&7*V&7*V&7*V&7* XMV&7*V&570D+:HXQ=IHQ=IHQ=IHQ=IHQ=IHQ=IHQ==B4DI#W*V&7*V&7*V&7* XMV&7*V&7*V&7*V&570D+:HXQ=IHQ=IHQ=IHQ=IHQ=IHQ=IHQ==B5>UV7*V&7* XMV&7*V&7*V&7*V&7*V&7*V&570D+:HXQ=IHQ=IHQ=IHQ=IHQ=IHQ=IHQ==B4D XMI#W*V&7*V&7*V&7*V&7*V&7*V&7*V&570D+:HXQ=IHQ=IHQ=IHQ=IHQ=IHQ= XMIHQ==B7UJ-O<`8:=U3H.WN;47A%XD1`R/,E:R$[U?, XMEG$,P7$'Z5?F5^F'$0+AXU?FA^`R#/,LS$A!5[VML^JX/9SD[R\*H*F79Z(Q XMU'4)8%?N'1.`;J=E2!-QJ8F,,P?,1Q-D9U?N'1,'SUQ^J@=Q"0.@4S,`@P() XM`44IV74I9'Z8MWS<=W<_11/,YWPR<4:K%4,IE`#%'HE/(CJ0)$E3GQ#@"(UB XMJ`=Q21/5=W<@<.3+UWS(1W8)$!!MX'QY@'G+QWT)YWTAETD@\.IZ,'C+QWVE XMAT8TP7S.)Q/4J0>KEP!]("XU`S#M*'3,]X6+,VT@($0QE$+%KH@$9'X%HX<_ XM*1!QJ?W2UXY"QWQ?N#B#MWS%W*9%!E9P!DFT@+?AP6K5T`<<4`_ XM*1!QJ?W2UXY"QWQ?N#B#MWS%W*9I#;N$T3?AP6K5T"$2'<`HU\",6T@ XM($0QE$*1^A`H(`)['JGWTET-"@(E,`UP=>5^R*E1!H='>, XMQ[O<(;[.'LD@D-_OU0(8^&,F@>;SW>IR#C#@&)!M<'9Y\"3%KHBX/9SD[R\* XM$`=K]5@LJ@!=EP!VY=XQ`>AV6H8T$9>:R#ASP'PT079VY=XQ>D%^$6J%CZ:>GGNYB90 XMY&Z@(X9\I6I>[R9=]XHFUA(P\)`I5.R*^"2B4S$HW*!_]8HFUA)5=@(/F4)G XM(!#)WP)"@\XHFUA)1Q@4G\)`I9'Z8MWS-AWS3YDK+QWW'Y`)5<`)I XMZW4I9'XQ2OH_"@)>ET()4.S-=F@G0'8I1!/,YWPRL0(K0'8I='7SJFK,=@)U XMH!8_``(VF[8$1G8I)`8UMP9D]XHFUA)5=@(/F4+;YWPRL0(K0'8I9'Z8MWS- XMAWS3YDK+QWWET+% XMWFR'=@)DEP!]X'4)<`82,4@DGE^3W8U`S"8 XMMWS@2A/5EW!;0!/, XMYWPRL0(QT`5$-&V*&$,IE$+%WFP_<`)DET(T47T)MP4KL`(TP7S.)Q-N%CXM XMXW4I=`82,4@DEP#%WFP_<`*@\XHFUA(G\`(G\)`I9'[!AC;0 XM%H&F^C_ETW-5%T,IE`#%WFPO<`)DIS2D3P/VW-]@)J43Z.-6W-I@(GX"9=ET)EEQ#AHXF,,P?,9X5(Z'4I XM-/JF2@>@JJM>ET+FAP()P6R:R#ASP'Q6B%@QE$(I5.S-UFQDEP!0*?-=ET+C XMEW!;T`(M0!/,YWPRX6;ATS)>ET+%WFPO<`)DEP!]X'4)<`82,4@D XM%ZD/@0+#3TF1^A`BL'H)4.R*^"2B@P58@`71TP>\RQUB3DAH/M\0(>I.Q^8( XM_^9M,)/K7_YDH``FGN2Y&D-=5S,`$YO3!@)"%$,I5.R@4S,-.@?,1Q/,YWPR XMT0(MD(0`TXY"QWPTP7S.)Q/KHH@QE$*1^A`H(`)B+NK4CCPE?E,BL'HUTZ!S XMP'PT47T)MP6:R#ASP'PTP7S.)Q-N%C[@WU]CP'B\RQWBZ^P)4;YG8.6%%+%- XM]5SW`@.X/9SD[R\*D/=[#ZIVY=XQJYO5NTG6O:&(M<0(] XM<`)IV^P&WFPC<`(7:&(M<0(H<`)IV^P&WFQ;<`(7:&(M<0(I<`)IV^P&WFQ= XM<`(7:&(M<0(\<`)IV^P&WFQ[<`(7:&(M<0(^<`)IV^P&WFQ]<`(7:&(M<0(O XM<`)IV^P&WFR'=@(7:&(M$65ID;;%WFQ><`(7:&(M<0(A<`)IV^P&WFQ\<`(7 XM:&(M<0(M<`)IV^P&WFQ^<`)/Z77%KHB,Q[O]MZ2=E;\LW`8!,1#>F!!-G*RK XMIMTDT^I4-__)WX8*,/JF2@>@:E?N'1,'GZC]I0!=YW5VY=XQ: XMR#ASP'Q6B(3BHC2D_S_A$P-)"#!>/VW-]@(GX"9[``*B,P0K@$88V`8!\7:Q XMDT*77H!?I&KA$P=K]5BOXR8A0&U8=@(QE$()0'84U*.ZZG50*?/FY_73UFPJ XM<`)NTG4I=&,HL`,[X"9=ET(U`S!?I&KA$P=K]5BOLVSAXVY>ET()(`8UMP9D XMET+FY_73UFPJ<`)NTG4IE$+F]T6J%CYQL%:/]3K+1FTO<`)NTG4IE$()(`8U XMMP9DET()`)4&Y'4IE$(FGN2ZZG4I!)4R;WY>/VW-AF4GX"9=ET(IQ*-)'F59 XMMGHIE$*:R#ASP'Q6B%@KL`)DET)]X'4)T`=>!Y4&Y'5,TW8/@0(B,/JF2@:R#ASP'PT07;; XMYWPRT0(M\"1V5@=54&HI1!/5EW!;T`(M0!/,YWPRX6;4=F@G0'8)4.Q/*2ZO XMF)#A`P-D=^D%B`)NT`(2"44IV74I9'Y?I&KA$P=K]5BOLVSAXU?E8R(!]VHG XM_)=\\7IME(`*KET*AA`58 XM@`6KMDAL8!([3I!<[^407L.P9>,V6>PZ&SLI1$$]JJL@(#I8@`58$)#J&#LI XME`!B4'-K0'8)T`=>]XH)&3[.!\(V<$8??P;83Y%>OWH)T`?B4C,`\T7.MRZ* XMB`=AX%!]KAF!P(A$#XP@`=& XM&T-PCSOEDT8)Z0/A`P-X0`8X\&&/:W;K$CXP@`=<8SQ$%$HV@$LN,`.V!(U, XMTW8/@0(BP)/@/0>_)=\\7IMOO!"LE>?Z2`8BX)XU`S"QF9!0!`-X<`/&8SS& XMPYM>QS1M]Q`H(`(\"=YS\%ORS>.UV9!`IXX\/U\BX)X)D!#A`P.W&)=^D%&)L)"45MX"9=ET(FGN0P@`\VW]+VEGYR\)M$!`#T1$/GQ`M(-Q$O.-IX#D'.07Q^OEM$!`#X8V9 XM3KA;;A+:^`9S\`,_\`,SV88*0*JF2@>@:E?N'1.`;J=E>'HQ[-XQ/VW-]@(GX"9[``*B,P0K@$88V`8! XM\7:QDT*?IW4H<'J.M7HI%'4^F0"?IW4H<'J.M7HI!)677H!?I&KA$P=K]5BO XMTT,^I&HA0&U8=@*KET(FGN2ZZG50*?/FY_73UFPJ<`)NTG4I5'5Y^D5(F@(B XM0"\BET(I9.))KJM>ET)0*?/FY_73UFQ8=@)N XMTG4IE$*:R#ASP'Q6B%@KL`)DET)]X'4)T`=>UP<*T`>\:^X"!=[^Z,;.I%W& XMO<0F@8%M$!`#83H-SN8(_^9M@-$^(;[.KL27TX__@UANT`+OM\)H/M^M3G7S XMG_S^H@#U?O4LJ@!=EP!VY=XQ,V&1,/$7\)43R)=`6%:L-2)TB#E)2U25^X XMK0!(J@"N^IVYB@;$OECD"^AV6H9:%T-=EP!VY=XQQS0<<4`IE`"?IW4H<'J.M7H)`)677H#;MFNOIFKA$P=K]5BO XM5^P1L7SEP!PL`(K\)11O^'; XMMFNOIFKA$P=K]5BODQ!B`#W?.Y/ORA/U#JQU XM-ZQVY=XQ`>AV6H9:%T-=EP!VY=XQ`>AV6H8T$9>:R#ASP'PT079VY=XQ1XQE$):%Y>5A^T2%Q85YYY*4W5Q&0-D]WE:AP*G]WI= XM1'8WA@([L`-NTG4I9'Z8MWS<=W?3YDK+UWRT[G4II&KA$P=K]5BO0W9,PQ'Q XM!S`G8AW_IFKA0Q/5EW!;0!/,YWPRT04%ED*:&Y=QL%:/]3IDQS0<<4`IM'W. XM)Q,KL`)D)X9\I6I>[R9=ET+GZH]1Q@4G\)`IE`"?IW4H<'J.M7HI5#,`@WG+ XMUWS(-VVNM'SET)*(WQLZFYDET*;8ZK_$SXQ0'8I]'E:AP*G!P)QL%:/ XM]3JKET)*0_K_$SXP0'8I-(,&L9:2XW6O:&(M$659]I`IE`"$"C2'*@*_CL#R XMN\!%_#,;(0*KET)*4W5Q"0-DET(FGN2ZZG4I5.P1<88IU`=>EP"?IW4H<'J. XMM7HI9'Y>/VVOUT5>ET)B4'-K\)1>]WE:AP*GIXBKEP!:QWS.)Q,MT`+#6'5Q XM"0-D5^P1<89]P+O<47F$=.IH;-PM-I$52>@V.0?Q&G__8V(@X-Z>DQ!B`#U: XM=Y#%;CH3&XN(Y08M$+$ML*R.!!&P=9!7T!)K@%@Y#L'_0_'>:..ZV((FL:R. XM1.AL('UY$.<)$+$ML*R.)`$OGD(1VP++ZD@0T1+C"-\)$+$ML*R. XM!!%,,8[PG0`1VP++ZD@0D9#C"-\)$+$ML*R.!!'>,X[PG0`1VP++ZD@0@=L* XMX"\*@-W9;U?N'1,'GZAH0.R+1;Z`;J=EJ'4QU'4)8%?N'1,'GZ@R`#HU`S!> XM/VW-Y@(GX"9[``*BPUH?[]YB&G53YW<)\'E:AP*GYUBKET*J%CYQL%:/]3I/ XMZ74WA@([L`-NTG4I]'E:AP*GYUBKET+F]T6J%CYQL%:/]3K+%C[NYG4I)`8U XMMP9D5S,`\T4!]VHG XM/VW-5@9J43Z.-6W-5@1J43Z.-6W-!@=J43Z.-6W-!@4GX"9=ET(U`S!?-`;C XM$SYQL%:/]3K+1FTMH!;E8S+CPVPGL`(GX"9=ET(I]'E:AP*GYUBKET(II&KA XM,P8R0'8I](H(81!K*3E>ET)]X'4I9.))/@9^3W8)T`=>UP=>5^R.Q7B\RQU3 XMH-T@D-_O]3P.WN9!M^'HK;$P_]OS+I$G,`)JH9X-9A`B;]T@`%]Y<`_DN-R'U3G(LQ#0L[W:3?,C.5-ZK#H) XM2<0;0:AY8./_@S-%@]NBJ@#UKMTLJ@!=EP!VY=XQ`>AV6H:G9[UVYSARP)KA XM8P)R8'=DIW[$>J6E)WQD9U?N'1.`;J=E2!-QJ8F,,P?,1Q-DEYK.V;#0.8R) XMB@9<)`,[28=DH),@Y$Z;9#W;1$?RDP!RL'S<5WKAXZW.;9#U%`#H)<`82H>L?`SH)<&,HL`,[X"9=)V(K XMP<.MI3H)6>K>N6JMIA'.]5@8)F*KMDAL8!+*`P*5!UO\8A//M=S0F``WA@([ XML`-NTG4I5#,`@WG+UWS(MRZNM'SET*:&YET*:&Y=QL%:/]3HN@P?=K0,I5#,`X_7KHHANHFKA`P-/(CI8@`58 XM`(TI9'Y?%'"O=C+WMF$?[28A$#[NYG4IE`!B4'-K0'8IQ*-)KJM>EP!]("XI XM-`=\I6I>[R9=ET+GZH\P\)`IE``,;O@H(`?+QWT)MWHIE`#%#CHI=*[^&%@/ XMF4+GZH^3-00/F4),TW8/@0(BD$PF\5S:==PE(0*KET()(`8UMP:@DT+GZH\G XM\`(GD+:BX[MM$!`#@6$II#2D3PCSO,=@(OH!;EXUC3UFPJ<`)NTG4IE$+F%VQH,VV*Z"9=ET(I5'8) XM$3Z:R#ASP'Q6B(1>ET(I-/JF2@>@JJM>ET(I9'XHD!#,IHF,,P?,9X6(%4,I XM!!`)`B:`4X?.�H3H`XD6('B!*%`H$)^H`HPV9. XMF8\@AXQIXX:.#!0FX(AA`>)@0Y0A1Y8L`V(/SH$%#R9\P7#'SS-OZ+P!@8?- XMFS=PC`KL@U.,G#)AUAA%.2:,R85FF3=R,L(!02;- XMU3%TTM@I,X>C1X$00=#)RK/K51!OS(!@4\:,TKUQP_K%>0=-&L8@4*0QOXD:!#AB;!%?V[N/.=SZ-$M6D@5.)MQ;1]JS[IYLV+% XM[I`X60M]+?8F;\Z^/P.&QT"*W?.C*)[ XM#Q!QQAS!A)123#D%U7%68:65`EQYQ=,)/XR%TX1IB/'9&'#0(<<* XM,93V7I6?B3&''CCRYH9,=9B!@HD**J:9E3Z(D>868/J`I99=U+A0E*GY)"&< XM=VYIG&QNM@?@>P>M0<<9+]4IIQET`IJEH%W85Z9`0R[5U%-1R2:IEB"T\)X, XM,"9W8$)\(GE55M^ XMAM(4DQ@^/KMDD["Z,"NMW\G5@AMUM"&&M?X*B\(<<)1QD!Q;E!@@?/*A05\* XM>9H`PA!?$)'$$4E0<=][J$4HD'*N:=QLID5R6JI`(R+()L9/PC#KO`O%,+63 XM"\EP-:PS;/TD#5(&1/4)-7B]D`UFGW!#VCBDG4/8`4T8\,`%'SQ&PFN5L3!. XM+#;L*\AM1`S"Q#XBO>F13(J-]0E,P#UV%8XO7@?<"5#YZ988^?`EG&*2*=N9 XMCZ[IXX05ONSHG'4&6JF>K]D+0G\U69@?%[(FF^.I"?YD,8PZ?36ARP*>T/;@ XM-C>XT.3$XP3"\B"<#FGJDW*99_#U0N@G;Y=;IRS$*-0Q1W"D`$DH`0+2$$.D[<`"8P@ADL1`BC@\*:Y:PT XM*25T7Y283!@Y(3C::5*E.4WR^LB\S%CR45NP9*!:$(/IY8>.K^-#B#KYR3F) XMW&$5&Z@AZ>7O89V;6(/BS`DLQYAL9E\Q%12-&6D3@WM5-?,94#0-ZZ/4(4J XM"H"(`C@"@BDHY3`TW,P+2+*@Z2"&-&C`REPZ!H?MS&%?-"F#'<+`ACJ$H5H@ XM:,.M,-@7;85KGA'I"AN6F(<\%%0.)JF/"S#JD6SE90P@\![X.KJ63JV%#LT[ XM"Q[@(`>CF#0-*'VI`LHP4SDHS`YO(&*!_,33:LF!-"\%@1L>Y;TRD$$J5SE# XM&GQEK7S5`2_-^Z(<[T@3%>Q0*E;%ZASRT(;!@%$%2I1*4M\PA&(=ZV5M-=89 XMI*)2`*D`B%`M@U2I&I>DCH$F9*")_QISG1V^[`QE>&2:4"`$)SQ!"DU`EW.6 XMFJ:FDB$W4HGK6[]DAO_U\#H=0\$.=M!%E%XH9C,SRN'@@)[*NIE'`1<>VARQ.,8KIR[(=?O6$>[.M:$O?;J8@(X"+&_ XM@J"\?.-57D!6AO2B9+W!:UPJWQL\Y,$.M@N!G'R;%L7CHM:;P@T7]6JW/KI, XMU3#AN@,1>5*_@WKKH7`1E]CTNY8Z]!80Y4NQ:@HT>2DFR$::@9.JTHXS!`PJ`*E0%^"FJ4S5J3&%Z$)J4B"9TN(YZ,$,A%JE@UW`H#@5Q XM.6#CZ2><4H'I>ZZ;W9XQ"P1AUF(3A%`$*8"`+`=1ZVL!Q`,0Q$`&."!>9HC+ XMP):A0;E?,%&9@,<1?#\;2%RQ4*T3-P<-MR8S=+`=U6!`%FQKFS17"((4G`#L XMQ?4`;K^3W4)^GAJ;;[L(4=@-.\<6`J"_5N@G(/I]$WMS-19!Z;3M.:SXX'0& XM09WK1:?ZMA_[6*PK2>M/,D'72Q<\M8<]V]L.@A7E3@2SL^HC8^/!VH&7'[V_ XMO>I,F,)N@LXZJ1N=-$RX.DJ6OC@?[!WJCO_[MJ4@^/\^O?`0.CP(CJ#X=68= XM[XO;XS/'1L=GNG9&>BK1I2Z801&L9:%J"1=-RT#3-XR!+W,(,51R!>*XE&`, XMOQ>!N]'@[J=Y_NR)&UM[3=_1X=3/!5!YF<(9+H7=-/\-SR?C%V#_L@SMR@TP XMP?>)-#_]AE^':N67@NG'8`1'G3A\Q@+IQ;?7W']W&)/)$3T&@5&CA'>NQ%J)1!_5#!B-% XM3TF@&+W!%WH29_!F&=S2%W004#8(4C`%'3QA42#`4#*6!XB1,F<1+B?C?FN1 XM`CWH+^1&!@I`$'.`!D[8'M@"4W7%$4[H;F>84M]C5V;@!H(%+$2$!S3QA1R! XM@X?D)V$%4SC84.%2)6F25WNE;GT84SD8+BJ`4X28;M:R5EJ"/RMT'3CU,B8@ XMB+_V$3CU&3(E<&U&&Y3H)DZ(1A7(1M=#.IOH`VL!'=-FA?76AAG"$2FPAB#P XM!%\@!43P!$[`!%EP1A7W7"CB0JTGAF38&63!>G&Q>Z11`G,@?#;(&">2BG!Q XM!G%H.F/P&7$8!FV09,]X8M55''^H4"2129&%!1'D!$.0>%90!'*&$\BH06K1 XM!FG0A"'&%M42B+<&B$+(4[?G5$Z50SDA3*=XC:KH!JSX@95#D--8C5]"D-FX XMC2]CAKV"AF\HBR+``[Y2%V[@`R(@%531/XK!!$D@!%;0!$:@B6X2A`8C-';0 XM!FV`?9N1!YKAA+]A!R:!++O1DN;A%&.P!C-)&Y]ADWK5:II(D$(I;>_1DA(% XM!S<)$U6",O85CGO!0E+1DCSIDZEXE#56%JE)D)0 XM109D!,Z1BM,Q''8FEK;Q/:/A:0GY&1*%!S)FC5>B;9,BEZI(!GA@.H()F'IH XM.KA&7I)F0PI')U*8?G$($!ERE*!RLZ/^.)GV^Y%`+2)4.& XM$IV$`DW0!$10;7H"`P/&GW5(FE.0!5-014\F7WHF1&,H4"@``S0A`LQ(%LP8 XM%LXXI)TA6#2)C;&YC4#&I5``IEDJ$)V4+RL!11+I*[42%P':IS[PD&5`$X:R XM';+8!(/:&0TH$&(24.L9:5Y&IW.@`WC*IT`9J7]:!CYR!_I2+9-)$XJ&&)=3 XM,16*;*!Z(C%":;[C)B$PJ$DJ-'-C2';I+&_ZJ1,SIV$Q'B40+O5RIR+@C/Q9 XMI::*GY(:C2D)J64J(&>:INAX*8=VEA0"H.(#`C/@C(0S>&[&0B#PK:'3/149 XM/B)0JH,S21Z):GY4$+QUK'"^H`"\*HF=2$#3*;D/%/V@&`@$T0`5T0!!Q XM>E%$I#3U4FHB`F3V>R>``LN:`O**4J8Q`UT29BA%9@OA;@TQ&5Q)0A_!8#76 XMKS>54RVA`.\G`^*%;GRU;JQVHP[+L?D1!N$4;"C5`@O!LR"P`A;G0Q]A9:_E XM)0L1!#W;?:&RM`I!M#%@M#]2:6+CM$!;9B_"@G!'&F/0KQMZ,[P"&3"5+_NB XM5"$S,B`E&$MA'AYVA8O!*]+F%&X@;5!X$"JS!H@!&<5","VJ`"T+`O_:?N_G XMKN"C@,B$LV[;+7!+MW,KM_=E!W:YN-XRFXX;MW4;N2I'M32K;@!*A>^!N(U8 XMLTDE!V'P5(F3!P28`*8K825'FEJ+<$7[<,*V!:7$.GC@7K5[N\&#!0H19C%@ XM`[2+`Q*7&:VK)\%;)E2X`J,B%?/&$\.5,L5U;R"'!$6`!7]6@I+['G(@N1%Q XMO$0;L^)U;R+"FOK[*W[8OP7QO_$KP`")N"^3!RP[&">U;@K@?;QBN':%N`7+NGKEB'T% XM++#G;J/KN>_JP**;.#Q,M1.B`OE&M-1#.UW48H#*V9PRTX\.[^\R\C7RT\B%JX<3NL\.]C4S+P,SD^2NZ8GP08(O2;O0+! XMP]P7$<$[M!;&*.*ULJOQ;-1U?-;,SZ66-E8#<8NC-1[--6D#-NNW.&43TD^" XM-BB]$&OSSW"PN@$QP=&[0`WT,@<].!!4<#X#90SMQ!&1<43;'D^KMX7\4)7XKVBP!DHTL,WC+7"AJCC;N=:"APEH!BFPJ.S631Q!$RXP XMV,Z!UY,,4_&6.&DVU]_"$V%V!]OA!F=[C/CKP\,"7C($GQNRU1%GDS$C.E,O=(P!7&N'4]=8R:&(NQVO,#T.M!(9Z(7-Z4 XM26**Q#"51LP13@&17E0]7QH$EZGM3P\U$F3DQTX(D#'"8#&WUH?\HD#B*V4U XM;D%%!H\\(:FY0D6:&211+*-I&J+)0CBQ&TB;&;DQWFS0(<`8$/)MT2@G$.NM XMP*#69C!GFNIZ/?<-@0FPWJNKJZ'&FB+$9FOAG6[0`M]7%R;JQ":!%STZUCZ< XM(C>$'_LMWUW]0AIDQA&E+52XX"8!D!J^0CW0X38TB7CWUG']-/`4N"^*9MQ- XM!]Y=;N<6R34+H&*`UCRN;GZ%!D&*`B'@?RW6-YD]!AORX:T'UN$"DO\#D#\> XM8U@Q8\Q2Y$WT1"CPXU-411,TA%O4CO;=XFQP>X^!]UT%N+3X.Y#EZV"Z8.!-RY&GZ?X:"V;X"E4V.$JP)Y>)!YU-N XM;`XL8T24Y5B\Y5#DY3T&YM\49V4RX%*1WVHNB6<.@6W.!G%Z$S-NR'%.1#O5 XME69PYU\8WJ)HYI]NYJO[WL,"X&5BX"M8M2H2$`K.H$!(&L/QX!$^CQ=.X:Y] XMX0`IWF8>IJO)!NB]S52;XM8.;#".ZC+.)#0NYYLAZ]_]R#Q%4XLDN_M-M&0! XMZAGJ[:R.4MJM%K%.!]T]ZS@+[2DTF@)2W^>-F>^QWC[LX9[M)OV>WJ5)ZI?B XMW@SN)O%MYO1]*>PN[`MOWCVU2)>2[@H?[&6>[Z5>K[J^WET4\:-^0P=.U<,N XM[S'EX!#.*Q*^[$M4X2::0QJ:'6&P%[=]%NNV%#WZ*)-QB#N_58!;\Z.!YX]L XMV.NZHW[HHW=4EHC&6(X%69)UR8_XH?(6T-KD8!FRV6D4-*>8M-33V=ZELA6S XMSREV6Q/F7@C6.L9-7\9D7Y+&Z&E.3+P52:RFH`D0:*%T.=.SU+T2OYXCO\XP/1N\Q!X^_-Q(.PZ+`KSV'IC>Y7#PY3_6Z6->)F<2E`R5&(M-M:>>ZH`O XMN.!>/]M"[SAN^!]A^CR_]*7(!&"%].MZ_&%P5BA#5^_ZX[_YUT6.Y-3O'4O> XMY$)3Y=PK_C2&!M::0`Z<_IKN8U=T*8TO1FM11"ACK9[D:UL``WE"W-5S*4@# XMY>CJ2113%;6:^:W6W[]S*+,37T)S;'K#]AK2;@_,125C0AIGW``A^Q!R`@`M/AC--!$V+:!RSP$7L` XM`B)`4\OFH@V7P!9T(K?FH@V7P!9U($V+:!RRPH+">H2'T/WF3`$X`!5!` XM!`DPL'U]4'I0!HF!`CH"WO![4'I0!HF!`CI"!EL``Y52((#[[OKOZG,S](8O XM_*3[H42>.(&A!M[CAZ/-$TG($U=1VXJ1A#SA3R4CT]0/,UE_1EM?WM0?6R+, XM-+?F&KFF*L6,',@Q\QA%%TM!0^)(&AQ451XD&#)#&O3E02`PP<\MWUT(`FK@ XM/66+%=P!(!T3'JEM87>1%WOQM]_NZBCDF88O_*3[H42NV"$F6J0E--OT8'MS XM+&&P%JUERB]W<-2'RI@W//E,"O1$B]!_@&!-,<2!FOA7YW42>_$)/&D`A@%`DA@ XM49@1'K-7>[+1/!7%!E.XQK[_MR^J(SPR^H<__$,N6+#* XM!F0P!'3UKC]^'6_`!F0P!'!5;48!+F^`'M%FEZ2CY(E^_?N6:SU!*V70!EE" XMA3S2[#8_/RJ+!B<2;=/&!F0P!+NQI"@(;6#Z'F_`!F0P!);-<0WT<3B-,RSF XM7&6"-$\J%57.O>)/8VAP$Q\1&$.RKF\`D6M0!GEP!W"AB'\16FGP6VK7.\=(^3*F\(W32!2[0;&[0UV=6ZQPO[2&RI)\FD'B& XM`CI"!G32!2Y0;7UA,SHC!5_`9%/`!%8@9\.4`*F\(W32!2[0;&[0UY14ZQPO XM[8BTI#^!X/Z-`CI"!G32!2Y0;7UA,SHC!5_`9-SZ9"$B\L@A$"CDF8437>"2 XMH"B&@@XKW](^\)D1!$2*$W,S]/37M7:/0I[I'$@#+@G*)$_Z3/CN[T"C<4$` XMIOONY##T>@Q%1!EQ%;5W>W.0>W'!(\V^%[DI(K>&(&C@'',S]*JN`*>5]8'J XM;T31;X>2'RI@W//E,"O1$B]!_@&!-,<2!FOA7YW42>_$)/&D`A@%`DA@49@1 XM'K-7>[+1/!7%!E.XQK[_M^0&```````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XJ```````````````````````````````````````````````````````` X` Xend SHAR_EOF fi if test -f 'src.patch' then echo shar: "will not over-write existing file 'src.patch'" else sed 's/^X//' << \SHAR_EOF > 'src.patch' X*** ./usr/src/bin/csh/Makefile.orig Sun Dec 1 16:45:34 1996 X--- ./usr/src/bin/csh/Makefile Tue Jan 7 20:17:28 2020 X*************** X*** 3,9 **** X # All rights reserved. The Berkeley Software License Agreement X # specifies the terms and conditions for redistribution. X # X! # @(#)Makefile 5.3.3 (2.11BSD GTE) 1996/12/1 X # X # C Shell with process control; VM/UNIX VAX Makefile X # Bill Joy UC Berkeley; Jim Kulp IIASA, Austria X--- 3,9 ---- X # All rights reserved. The Berkeley Software License Agreement X # specifies the terms and conditions for redistribution. X # X! # @(#)Makefile 5.4 (2.11BSD) 2020/1/7 X # X # C Shell with process control; VM/UNIX VAX Makefile X # Bill Joy UC Berkeley; Jim Kulp IIASA, Austria X*************** X*** 21,27 **** X CTAGS= /usr/ucb/ctags X LIBES= -lc X SCCS= sccs X! CPP= /lib/cpp X SED= sed X X BASE= alloc11.o doprnt11.o printf.o sh.char.o sh.dir.o sh.dol.o \ X--- 21,27 ---- X CTAGS= /usr/ucb/ctags X LIBES= -lc X SCCS= sccs X! CPP= /lib/cpp -t X SED= sed X X BASE= alloc11.o doprnt11.o printf.o sh.char.o sh.dir.o sh.dol.o \ X*** ./usr/src/bin/stty/stty.c.orig Wed May 7 22:53:52 1997 X--- ./usr/src/bin/stty/stty.c Tue Jan 7 20:18:27 2020 X*************** X*** 9,15 **** X "@(#) Copyright (c) 1980 Regents of the University of California.\n\ X All rights reserved.\n"; X X! static char sccsid[] = "@(#)stty.c 5.4.3 (2.11BSD GTE) 1997/5/7"; X #endif X X /* X--- 9,15 ---- X "@(#) Copyright (c) 1980 Regents of the University of California.\n\ X All rights reserved.\n"; X X! static char sccsid[] = "@(#)stty.c 5.5 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 257,264 **** X } X if (eq("dec")){ X mode.sg_erase = 0177; X! mode.sg_kill = CTRL(u); X! tc.t_intrc = CTRL(c); X ldisc = NTTYDISC; X lmode &= ~LPRTERA; X lmode |= LCRTBS|LCTLECH|LDECCTQ; X--- 257,264 ---- X } X if (eq("dec")){ X mode.sg_erase = 0177; X! mode.sg_kill = CTRL('u'); X! tc.t_intrc = CTRL('c'); X ldisc = NTTYDISC; X lmode &= ~LPRTERA; X lmode |= LCRTBS|LCTLECH|LDECCTQ; X*** ./usr/src/bin/tcsh/sh.decls.h.orig Fri Oct 11 12:40:56 2019 X--- ./usr/src/bin/tcsh/sh.decls.h Tue Jan 7 20:18:52 2020 X*************** X*** 1,5 **** X /* X! * @(#)sh.decls.h 2.0 (2.11BSD) 2019/10/11 X */ X /* X * sh.decls External declarations from sh*.c X--- 1,5 ---- X /* X! * @(#)sh.decls.h 2.1 (2.11BSD) 2020/1/7 X */ X /* X * sh.decls External declarations from sh*.c X*************** X*** 202,208 **** X extern void prlex __P((struct wordent *)); X extern int readc __P((bool)); X extern void settell __P((void)); X! extern void unreadc __P((int)); X X X /* X--- 202,208 ---- X extern void prlex __P((struct wordent *)); X extern int readc __P((bool)); X extern void settell __P((void)); X! extern void unreadc __P((Char)); X X X /* X*** ./usr/src/bin/tcsh/sh.func.c.orig Wed Aug 21 12:53:49 1991 X--- ./usr/src/bin/tcsh/sh.func.c Tue Jan 7 20:23:56 2020 X*************** X*** 1,4 **** X- /* $Header: /home/hyperion/mu/christos/src/sys/tcsh-6.00/RCS/sh.func.c,v 3.1 1991/07/05 19:07:02 christos Exp $ */ X /* X * sh.func.c: csh builtin functions X */ X--- 1,3 ---- X*************** X*** 36,44 **** X */ X #include "config.h" X X! #if !defined(lint) && !defined(pdp11) X! static char *rcsid() X! { return "$Id: sh.func.c,v 3.1 1991/07/05 19:07:02 christos Exp $"; } X #endif X X #include "sh.h" X--- 35,42 ---- X */ X #include "config.h" X X! #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)sh.func.c 3.2 (2.11BSD) 2020/1/7"; X #endif X X #include "sh.h" X*************** X*** 66,72 **** X static int keyword __P((Char *)); X static void Unsetenv __P((Char *)); X static void toend __P((void)); X! static void xecho __P((int, Char **)); X X struct biltins * X isbfunc(t) X--- 64,70 ---- X static int keyword __P((Char *)); X static void Unsetenv __P((Char *)); X static void toend __P((void)); X! static void xecho __P((Char, Char **)); X X struct biltins * X isbfunc(t) X*** ./usr/src/bin/tcsh/sh.glob.c.orig Fri Oct 11 13:07:08 2019 X--- ./usr/src/bin/tcsh/sh.glob.c Tue Jan 7 20:25:04 2020 X*************** X*** 1,6 **** X- /* X- * sh.glob.c: Regular expression expansion X- */ X /*- X * Copyright (c) 1980, 1991 The Regents of the University of California. X * All rights reserved. X--- 1,3 ---- X*************** X*** 34,42 **** X * SUCH DAMAGE. X */ X #include "config.h" X! #if !defined(lint) && !defined(pdp11) X! static char *rcsid() X! { return "$Id: sh.glob.c,v 3.1 2019/10/11 13:06:28 sms Exp $"; } X #endif X X #include "sh.h" X--- 31,39 ---- X * SUCH DAMAGE. X */ X #include "config.h" X! X! #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)sh.glob.c 3.2 (2.11BSD) 2020/1/7"; X #endif X X #include "sh.h" X*************** X*** 85,91 **** X static Char **globexpand __P((Char **)); X static int globbrace __P((Char *, Char *, Char ***)); X static void pword __P((void)); X! static void psave __P((int)); X static void backeval __P((Char *, bool)); X X static Char * X--- 82,88 ---- X static Char **globexpand __P((Char **)); X static int globbrace __P((Char *, Char *, Char ***)); X static void pword __P((void)); X! static void psave __P((Char)); X static void backeval __P((Char *, bool)); X X static Char * X*** ./usr/src/bin/tcsh/sh.lex.c.orig Tue Aug 20 16:19:07 1991 X--- ./usr/src/bin/tcsh/sh.lex.c Tue Jan 7 20:25:47 2020 X*************** X*** 1,7 **** X- /* $Header: /home/hyperion/mu/christos/src/sys/tcsh-6.00/RCS/sh.lex.c,v 3.0 1991/07/04 21:49:28 christos Exp $ */ X- /* X- * sh.lex.c: Lexical analysis into tokens X- */ X /*- X * Copyright (c) 1980, 1991 The Regents of the University of California. X * All rights reserved. X--- 1,3 ---- X*************** X*** 35,43 **** X * SUCH DAMAGE. X */ X #include "config.h" X! #if !defined(lint) && !defined(pdp11) X! static char *rcsid() X! { return "$Id: sh.lex.c,v 3.0 1991/07/04 21:49:28 christos Exp $"; } X #endif X X #include "sh.h" X--- 31,39 ---- X * SUCH DAMAGE. X */ X #include "config.h" X! X! #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)sh.lex.c 3.1 (2.11BSD) 2020/1/7"; X #endif X X #include "sh.h" X*************** X*** 44,53 **** X #include "ed.h" X X /* X- * C shell X- */ X- X- /* X * These lexical routines read input and form lists of words. X * There is some involved processing here, because of the complications X * of input buffering, and especially because of history substitution. X--- 40,45 ---- X*************** X*** 55,61 **** X static Char *word __P((void)); X static int getC1 __P((int)); X static void getdol __P((void)); X! static void getexcl __P((int)); X static struct Hist *findev __P((Char *, bool)); X static void setexclp __P((Char *)); X static int bgetc __P((void)); X--- 47,53 ---- X static Char *word __P((void)); X static int getC1 __P((int)); X static void getdol __P((void)); X! static void getexcl __P((Char)); X static struct Hist *findev __P((Char *, bool)); X static void setexclp __P((Char *)); X static int bgetc __P((void)); X*** ./usr/src/bin/tcsh/sh.set.c.orig Tue Aug 20 14:13:06 1991 X--- ./usr/src/bin/tcsh/sh.set.c Tue Jan 7 20:26:44 2020 X*************** X*** 1,7 **** X- /* $Header: /home/hyperion/mu/christos/src/sys/tcsh-6.00/RCS/sh.set.c,v 3.0 1991/07/04 21:49:28 christos Exp $ */ X- /* X- * sh.set.c: Setting and Clearing of variables X- */ X /*- X * Copyright (c) 1980, 1991 The Regents of the University of California. X * All rights reserved. X--- 1,3 ---- X*************** X*** 35,43 **** X * SUCH DAMAGE. X */ X #include "config.h" X! #if !defined(lint) && !defined(pdp11) X! static char *rcsid() X! { return "$Id: sh.set.c,v 3.0 1991/07/04 21:49:28 christos Exp $"; } X #endif X X #include "sh.h" X--- 31,39 ---- X * SUCH DAMAGE. X */ X #include "config.h" X! X! #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)sh.set.c 3.1 (2.11BSD) 2020/1/7"; X #endif X X #include "sh.h" X*************** X*** 51,66 **** X static void asx __P((Char *, int, Char *)); X static struct varent *getvx __P((Char *, int)); X static Char *xset __P((Char *, Char ***)); X! static Char *operate __P((int, Char *, Char *)); X static void putn1 __P((int)); X static struct varent *madrof __P((Char *, struct varent *)); X static void unsetv1 __P((struct varent *)); X static void exportpath __P((Char **)); X static void balance __P((struct varent *, int, int)); X- X- /* X- * C Shell X- */ X X void X doset(v) X--- 47,58 ---- X static void asx __P((Char *, int, Char *)); X static struct varent *getvx __P((Char *, int)); X static Char *xset __P((Char *, Char ***)); X! static Char *operate __P((Char, Char *, Char *)); X static void putn1 __P((int)); X static struct varent *madrof __P((Char *, struct varent *)); X static void unsetv1 __P((struct varent *)); X static void exportpath __P((Char **)); X static void balance __P((struct varent *, int, int)); X X void X doset(v) X*** ./usr/src/bin/tcsh/tc.decls.h.orig Wed Aug 21 13:18:32 1991 X--- ./usr/src/bin/tcsh/tc.decls.h Tue Jan 7 20:29:40 2020 X*************** X*** 1,7 **** X- /* $Header: /home/hyperion/mu/christos/src/sys/tcsh-6.00/RCS/tc.decls.h,v 3.0 1991/07/04 23:34:26 christos Exp $ */ X /* X! * tc.decls.h: Function declarations from all the tcsh modules X */ X /*- X * Copyright (c) 1980, 1991 The Regents of the University of California. X * All rights reserved. X--- 1,7 ---- X /* X! * tw.decls.h: Tenex external declarations X */ X+ X /*- X * Copyright (c) 1980, 1991 The Regents of the University of California. X * All rights reserved. X*************** X*** 34,39 **** X--- 34,44 ---- X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF X * SUCH DAMAGE. X */ X+ X+ #if !defined(lint) && defined(DOSCCS) X+ static char *sccsid = "@(#)tw.decls.h 3.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X #ifndef _h_tc_decls X #define _h_tc_decls X X*************** X*** 155,161 **** X--- 160,168 ---- X * tc.printf.h X */ X extern void xprintf __P((char *, ...)); X+ #if 0 X extern void mkprintf __P((long, ...)); X+ #endif X extern void xsprintf __P((char *, char *, ...)); X extern void xvprintf __P((char *, va_list)); X extern void xvsprintf __P((char *, char *, va_list)); X*** ./usr/src/games/cribbage/io.c.orig Mon Jan 18 10:56:05 1993 X--- ./usr/src/games/cribbage/io.c Tue Jan 7 20:30:34 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)io.c 5.1 (Berkeley) 5/30/85"; X! #endif not lint X X # include X # include X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)io.c 5.2 (2.11BSD) 2020/1/7"; X! #endif X X # include X # include X*************** X*** 20,34 **** X # ifdef CTRL X # undef CTRL X # endif X! # define CTRL(X) ('X' - 'A' + 1) X X! # ifndef erasechar() X # define erasechar() _tty.sg_erase X! # endif erasechar() X X! # ifndef killchar() X # define killchar() _tty.sg_kill X! # endif killchar() X X char linebuf[ LINESIZE ]; X X--- 20,34 ---- X # ifdef CTRL X # undef CTRL X # endif X! # define CTRL(X) (X - 'A' + 1) X X! # ifndef erasechar X # define erasechar() _tty.sg_erase X! # endif /* erasechar() */ X X! # ifndef killchar X # define killchar() _tty.sg_kill X! # endif /* killchar() */ X X char linebuf[ LINESIZE ]; X X*************** X*** 496,502 **** X while (read(0, &c, 1) <= 0) X if (cnt++ > 100) /* if we are getting infinite EOFs */ X bye(); /* quit the game */ X! if (c == CTRL(L)) { X wrefresh(curscr); X goto over; X } X--- 496,502 ---- X while (read(0, &c, 1) <= 0) X if (cnt++ > 100) /* if we are getting infinite EOFs */ X bye(); /* quit the game */ X! if (c == CTRL('L')) { X wrefresh(curscr); X goto over; X } X*************** X*** 546,552 **** X else if (sp == linebuf && c == ' ') X continue; X if (sp >= &linebuf[LINESIZE-1] || !(isprint(c) || c == ' ')) X! putchar(CTRL(G)); X else { X if (islower(c)) X c = toupper(c); X--- 546,552 ---- X else if (sp == linebuf && c == ' ') X continue; X if (sp >= &linebuf[LINESIZE-1] || !(isprint(c) || c == ' ')) X! putchar(CTRL('G')); X else { X if (islower(c)) X c = toupper(c); X*** ./usr/src/games/hack/hack.mon.c.orig Mon Oct 14 11:03:51 1985 X--- ./usr/src/games/hack/hack.mon.c Tue Jan 7 20:32:06 2020 X*************** X*** 1,9 **** X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ X- /* hack.mon.c - version 1.0.3 */ X X #include "hack.h" X #include "hack.mfndpos.h" X #define NULL (char *) 0 X extern struct monst *makemon(); X extern struct obj *mkobj_at(); X X--- 1,14 ---- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)hack.mon.c 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X #include "hack.h" X #include "hack.mfndpos.h" X+ #ifndef NULL X #define NULL (char *) 0 X+ #endif X extern struct monst *makemon(); X extern struct obj *mkobj_at(); X X*** ./usr/src/games/hangman/getguess.c.orig Fri Jan 7 13:01:31 1983 X--- ./usr/src/games/hangman/getguess.c Tue Jan 7 20:32:58 2020 X*************** X*** 1,3 **** X--- 1,7 ---- X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)getguess.c 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X # include "hangman.h" X X /* X*************** X*** 23,29 **** X else X break; X } X! else if (ch == CTRL(D)) X die(); X else X mvprintw(MESGY, MESGX, "Not a valid guess: '%s'", X--- 27,33 ---- X else X break; X } X! else if (ch == CTRL('D')) X die(); X else X mvprintw(MESGY, MESGX, "Not a valid guess: '%s'", X*************** X*** 60,66 **** X if (++cnt > 100) X die(); X } X! else if (ch == CTRL(L)) { X wrefresh(curscr); X mvcur(0, 0, curscr->_cury, curscr->_curx); X } X--- 64,70 ---- X if (++cnt > 100) X die(); X } X! else if (ch == CTRL('L')) { X wrefresh(curscr); X mvcur(0, 0, curscr->_cury, curscr->_curx); X } X*** ./usr/src/games/hunt/execute.c.orig Fri Nov 15 13:49:11 1985 X--- ./usr/src/games/hunt/execute.c Tue Jan 7 20:43:29 2020 X*************** X*** 8,17 **** X * specifies the terms and conditions for redistribution. X */ X X # include "hunt.h" X X # undef CTRL X! # define CTRL(x) ('x' & 037) X X # ifdef MONITOR X /* X--- 8,21 ---- X * specifies the terms and conditions for redistribution. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)execute.c 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X # include "hunt.h" X X # undef CTRL X! # define CTRL(x) (x & 037) X X # ifdef MONITOR X /* X*************** X*** 25,31 **** X X ch = pp->p_cbuf[pp->p_ncount++]; X switch (ch) { X! case CTRL(L): X sendcom(pp, REDRAW); X break; X case 'q': X--- 29,35 ---- X X ch = pp->p_cbuf[pp->p_ncount++]; X switch (ch) { X! case CTRL('L'): X sendcom(pp, REDRAW); X break; X case 'q': X*************** X*** 49,55 **** X # ifdef FLY X if (pp->p_flying >= 0) { X switch (ch) { X! case CTRL(L): X sendcom(pp, REDRAW); X break; X case 'q': X--- 53,59 ---- X # ifdef FLY X if (pp->p_flying >= 0) { X switch (ch) { X! case CTRL('L'): X sendcom(pp, REDRAW); X break; X case 'q': X*************** X*** 61,67 **** X # endif FLY X X switch (ch) { X! case CTRL(L): X sendcom(pp, REDRAW); X break; X case 'h': X--- 65,71 ---- X # endif FLY X X switch (ch) { X! case CTRL('L'): X sendcom(pp, REDRAW); X break; X case 'h': X*** ./usr/src/games/hunt/hunt.c.orig Sat Jan 11 13:47:21 1986 X--- ./usr/src/games/hunt/hunt.c Tue Jan 7 20:44:01 2020 X*************** X*** 8,13 **** X--- 8,17 ---- X * specifies the terms and conditions for redistribution. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)hunt.c 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X # include X # include X # include "hunt.h" X*************** X*** 598,604 **** X fflush(stdout); X explained = TRUE; X } X! (void) putchar(CTRL(G)); X (void) fflush(stdout); X } X } X--- 602,608 ---- X fflush(stdout); X explained = TRUE; X } X! (void) putchar(CTRL('G')); X (void) fflush(stdout); X } X } X*** ./usr/src/games/hunt/hunt.h.orig Sat Jan 11 13:47:22 1986 X--- ./usr/src/games/hunt/hunt.h Tue Jan 7 20:44:27 2020 X*************** X*** 8,13 **** X--- 8,17 ---- X * specifies the terms and conditions for redistribution. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)hunt.h 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X # include X # ifndef OLDIPC X # include X*************** X*** 140,147 **** X # define FALSE 0 X # endif TRUE X # ifndef CTRL X! # define CTRL(x) ('x' & 037) X! # endif CTRL X X # define BULSPD 5 /* bullets movement speed */ X # define ISHOTS 15 X--- 144,151 ---- X # define FALSE 0 X # endif TRUE X # ifndef CTRL X! # define CTRL(x) (x & 037) X! # endif /* CTRL */ X X # define BULSPD 5 /* bullets movement speed */ X # define ISHOTS 15 X*** ./usr/src/games/hunt/playit.c.orig Sun Aug 30 18:35:04 1987 X--- ./usr/src/games/hunt/playit.c Tue Jan 7 20:45:08 2020 X*************** X*** 8,13 **** X--- 8,17 ---- X * specifies the terms and conditions for redistribution. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)playit.c 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X # include X # include X # include X*************** X*** 16,22 **** X # include X X # undef CTRL X! # define CTRL(x) ('x' & 037) X X int input(); X static int nchar_send; X--- 20,26 ---- X # include X X # undef CTRL X! # define CTRL(x) (x & 037) X X int input(); X static int nchar_send; X*************** X*** 121,127 **** X ch = EOF; X goto out; X case BELL: X! putchar(CTRL(G)); X break; X case READY: X (void) fflush(stdout); X--- 125,131 ---- X ch = EOF; X goto out; X case BELL: X! putchar(CTRL('G')); X break; X case READY: X (void) fflush(stdout); X*************** X*** 232,238 **** X if ((*nsp = map_key[*sp]) == 'q') X intr(); X # ifdef OTTO X! else if (*nsp == CTRL(O)) X Otto_mode = !Otto_mode; X # endif OTTO X else X--- 236,242 ---- X if ((*nsp = map_key[*sp]) == 'q') X intr(); X # ifdef OTTO X! else if (*nsp == CTRL('O')) X Otto_mode = !Otto_mode; X # endif OTTO X else X*************** X*** 279,285 **** X } X else if (ch == 'n') X return TRUE; X! (void) putchar(CTRL(G)); X if (!explain) { X put_str("(Y or N) "); X explain = TRUE; X--- 283,289 ---- X } X else if (ch == 'n') X return TRUE; X! (void) putchar(CTRL('G')); X if (!explain) { X put_str("(Y or N) "); X explain = TRUE; X*** ./usr/src/games/pdp/zork/Makefile.orig Sat Apr 9 02:35:48 1994 X--- ./usr/src/games/pdp/zork/Makefile Tue Jan 7 20:46:16 2020 X*************** X*** 1,3 **** X--- 1,7 ---- X+ # X+ # @(#)Makefile 1.1 (2.11BSD) 2020/1/7 X+ # X+ X BINDIR = /usr/games X LIBDIR = /usr/games/lib X DESTDIR= X*************** X*** 35,38 **** X o.o: o.s X X .s.o: X! /lib/cpp -E $< | sed -e 's;^#;/;' | as -o $@ X--- 39,42 ---- X o.o: o.s X X .s.o: X! /lib/cpp -t -E $< | sed -e 's;^#;/;' | as -o $@ X*** ./usr/src/games/phantasia/Makefile.orig Tue Sep 23 00:50:51 1997 X--- ./usr/src/games/phantasia/Makefile Tue Jan 7 20:47:07 2020 X*************** X*** 1,7 **** X! # Makefile for Phantasia 3.2 (1.2 2.11BSD - 1997/9/22) X! # X # MODIFIED TO COMPILE WITHOUT 'XSTR'. X! # X # To create game: X # X # 1) Set up a directory where the game and its support files will live. X--- 1,7 ---- X! # Makefile for Phantasia 3.3 (1.3 2.11BSD - 2020/1/7) X! X # MODIFIED TO COMPILE WITHOUT 'XSTR'. X! X # To create game: X # X # 1) Set up a directory where the game and its support files will live. X*************** X*** 44,50 **** X # define BSD42 for 4.2bsd X # define USG3 for System III, or similar X # define USG5 for System V X! FLAGS = -DPATH=\"${DEST} \ X -DWIZARD=\"daemon\" \ X -DUID=1 \ X -DRAND=32768.0 \ X--- 44,50 ---- X # define BSD42 for 4.2bsd X # define USG3 for System III, or similar X # define USG5 for System V X! FLAGS = -DPATH=\"${DEST}\" \ X -DWIZARD=\"daemon\" \ X -DUID=1 \ X -DRAND=32768.0 \ X*** ./usr/src/games/phantasia/phant.h.orig Mon May 19 20:12:35 1986 X--- ./usr/src/games/phantasia/phant.h Tue Jan 7 20:47:42 2020 X*************** X*** 2,7 **** X--- 2,11 ---- X * phant.h Include file for Phantasia X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)phant.h 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X #include X #include X #include X*************** X*** 132,147 **** X }; X X /* files */ X! #define monsterfile PATH/monsters" X! #define peoplefile PATH/characs" X! #define gameprog PATH/phantasia" X! #define messfile PATH/mess" X! #define lastdead PATH/lastdead" X! #define helpfile PATH/phant.help" X! #define motd PATH/motd" X! #define goldfile PATH/gold" X! #define voidfile PATH/void" X! #define enemyfile PATH/enemy" X X /* library functions and system calls */ X unsigned sleep(); X--- 136,151 ---- X }; X X /* files */ X! #define monsterfile PATH"/monsters" X! #define peoplefile PATH"/characs" X! #define gameprog PATH"/phantasia" X! #define messfile PATH"/mess" X! #define lastdead PATH"/lastdead" X! #define helpfile PATH"/phant.help" X! #define motd PATH"/motd" X! #define goldfile PATH"/gold" X! #define voidfile PATH"/void" X! #define enemyfile PATH"/enemy" X X /* library functions and system calls */ X unsigned sleep(); X*** ./usr/src/games/phantasia/setfiles.c.orig Mon May 19 20:12:51 1986 X--- ./usr/src/games/phantasia/setfiles.c Tue Jan 7 20:48:24 2020 X*************** X*** 8,13 **** X--- 8,17 ---- X * This program tries to check against this. X */ X X+ #if !defined(lint) && defined(DOSCCS) X+ static char sccsid[] = "@(#)setfiles.c 1.1 (2.11BSD) 2020/1/7"; X+ #endif X+ X #include "phant.h" X #include X #include X*************** X*** 38,51 **** X #endif X umask(077); X /* check where Phantasia lives */ X! if (stat(PATH",&fbuf) < 0) X { X! perror(PATH"); X exit(1); X /*NOTREACHED*/ X } X if (fbuf.st_mode & S_IFDIR == 0) X! Error("%s is not a directory.\n",PATH"); X /* try to create data files */ X if ((fp = fopen(goldfile,"w")) == NULL) X Error("cannot create %s.\n",goldfile); X--- 42,55 ---- X #endif X umask(077); X /* check where Phantasia lives */ X! if (stat(PATH,&fbuf) < 0) X { X! perror(PATH); X exit(1); X /*NOTREACHED*/ X } X if (fbuf.st_mode & S_IFDIR == 0) X! Error("%s is not a directory.\n",PATH); X /* try to create data files */ X if ((fp = fopen(goldfile,"w")) == NULL) X Error("cannot create %s.\n",goldfile); X*** ./usr/src/games/sail/pl_7.c.orig Mon Jan 18 10:56:22 1993 X--- ./usr/src/games/sail/pl_7.c Tue Jan 7 20:49:06 2020 X*************** X*** 4,11 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)pl_7.c 5.1 (Berkeley) 5/29/85"; X #endif not lint X X #include "player.h" X--- 4,11 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)pl_7.c 5.2 (2.11BSD) 2020/1/7"; X #endif not lint X X #include "player.h" X*************** X*** 205,211 **** X *p++ = c; X (void) waddch(scroll_w, c); X } else X! (void) putchar(CTRL(g)); X } X } X } X--- 205,211 ---- X *p++ = c; X (void) waddch(scroll_w, c); X } else X! (void) putchar(CTRL('g')); X } X } X } X*** ./usr/src/games/snake/move.c.orig Fri Mar 28 16:41:02 1997 X--- ./usr/src/games/snake/move.c Tue Jan 7 20:49:48 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)move.c 5.1.1 (2.11BSD) 1997/3/28"; X #endif X X /************************************************************************* X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)move.c 5.2 (2.11BSD) 2020/1/7"; X #endif X X /************************************************************************* X*************** X*** 403,410 **** X case '\b': X bs(); X break; X! case CTRL(g): X! outch(CTRL(g)); X break; X default: X if (s[0] < ' ')break; X--- 403,410 ---- X case '\b': X bs(); X break; X! case CTRL('g'): X! outch(CTRL('g')); X break; X default: X if (s[0] < ' ')break; X*** ./usr/src/games/snake/snake.c.orig Tue Jul 29 21:51:18 1997 X--- ./usr/src/games/snake/snake.c Tue Jan 7 20:50:13 2020 X*************** X*** 5,15 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! char copyright[] = X! "@(#) Copyright (c) 1980 Regents of the University of California.\n\ X! All rights reserved.\n"; X! X! static char sccsid[] = "@(#)snake.c 5.1.1 (2.11BSD) 1997/7/29"; X #endif X X /* X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)snake.c 5.2 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 232,239 **** X if (!fast) flushi(); X lastc = c; X switch (c){ X! case CTRL(z): X! case CTRL(c): X suspend(); X continue; X case EOT: X--- 228,235 ---- X if (!fast) flushi(); X lastc = c; X switch (c){ X! case CTRL('z'): X! case CTRL('c'): X suspend(); X continue; X case EOT: X*************** X*** 263,269 **** X putpad(KS); X putpad(TI); X point(&cursor,0,lcnt-1); X! case CTRL(l): X setup(); X winnings(cashvalue); X continue; X--- 259,265 ---- X putpad(KS); X putpad(TI); X point(&cursor,0,lcnt-1); X! case CTRL('l'): X setup(); X winnings(cashvalue); X continue; X*************** X*** 338,344 **** X pchar(&you,ME); X } X break; X! case CTRL(p): X case 'e': X case 'k': X case 'i': X--- 334,340 ---- X pchar(&you,ME); X } X break; X! case CTRL('p'): X case 'e': X case 'k': X case 'i': X*************** X*** 351,357 **** X pchar(&you,ME); X } X break; X! case CTRL(n): X case 'c': X case 'j': X case LF: X--- 347,353 ---- X pchar(&you,ME); X } X break; X! case CTRL('n'): X case 'c': X case 'j': X case LF: X*** ./usr/src/games/worm.c.orig Tue Jun 25 15:44:58 1985 X--- ./usr/src/games/worm.c Tue Jan 7 20:51:37 2020 X*************** X*** 4,19 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! char copyright[] = X! "@(#) Copyright (c) 1980 Regents of the University of California.\n\ X! All rights reserved.\n"; X! #endif not lint X X- #ifndef lint X- static char sccsid[] = "@(#)worm.c 5.2 (Berkeley) 6/25/85"; X- #endif not lint X- X /* X * Worm. Written by Michael Toy X * UCSC X--- 4,13 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)worm.c 5.3 (2.11BSD) 2020/1/7"; X! #endif X X /* X * Worm. Written by Michael Toy X * UCSC X*************** X*** 30,36 **** X #define RUNLEN 8 X #define when break;case X #define otherwise break;default X! #define CNTRL(p) ('p'-'A'+1) X #ifndef baudrate X # define baudrate() _tty.sg_ospeed X #endif X--- 24,30 ---- X #define RUNLEN 8 X #define when break;case X #define otherwise break;default X! #define CNTRL(p) (p-'A'+1) X #ifndef baudrate X # define baudrate() _tty.sg_ospeed X #endif X*************** X*** 190,198 **** X when 'K': y--; running = RUNLEN/2; ch = tolower(ch); X when 'L': x++; running = RUNLEN; ch = tolower(ch); X when '\f': setup(); return; X! when CNTRL(Z): suspend(); return; X! when CNTRL(C): crash(); return; X! when CNTRL(D): crash(); return; X otherwise: if (! running) alarm(1); X return; X } X--- 184,192 ---- X when 'K': y--; running = RUNLEN/2; ch = tolower(ch); X when 'L': x++; running = RUNLEN; ch = tolower(ch); X when '\f': setup(); return; X! when CNTRL('Z'): suspend(); return; X! when CNTRL('C'): crash(); return; X! when CNTRL('D'): crash(); return; X otherwise: if (! running) alarm(1); X return; X } X*** ./usr/src/lib/libc/pdp/crt/almul.s.orig Wed Jan 28 09:24:07 1987 X--- ./usr/src/lib/libc/pdp/crt/almul.s Tue Jan 7 20:52:46 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)almul.s 2.3 (Berkeley) 1/28/87\0> X .even X! #endif LIBC_SCCS X X /* X * almul(lhs, rhs) X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)almul.s 2.4 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * almul(lhs, rhs) X*************** X*** 31,38 **** X mov 12.(sp),r0 / r0 = loint(rhs) X sxt r3 / r3 = sxt(loint(rhs)) - hiint(rhs) X sub 10.(sp),r3 X! mul r0,r1 / MAGIC = loint(rhs) * hiint(*lhs)' X! mul r2,r3 / + loint(*lhs) * hiint(rhs)' X add r1,r3 X mul r2,r0 / prod (r0:r1) = loint(lhs)*loint(rhs) X sub r3,r0 / hiint(prod) -= MAGIC X--- 31,38 ---- X mov 12.(sp),r0 / r0 = loint(rhs) X sxt r3 / r3 = sxt(loint(rhs)) - hiint(rhs) X sub 10.(sp),r3 X! mul r0,r1 / MAGIC = loint(rhs) * hiint(*lhs) X! mul r2,r3 / + loint(*lhs) * hiint(rhs) X add r1,r3 X mul r2,r0 / prod (r0:r1) = loint(lhs)*loint(rhs) X sub r3,r0 / hiint(prod) -= MAGIC X*** ./usr/src/lib/libc/pdp/crt/csv.s.orig Thu Dec 24 19:13:31 1992 X--- ./usr/src/lib/libc/pdp/crt/csv.s Tue Jan 7 20:53:14 2020 X*************** X*** 5,11 **** X */ X X #if defined(LIBC_SCCS) && !defined(KERNEL) && !defined(SUPERVISOR) X! <@(#)csv.s 2.4 (2.11BSD GTE) 12/24/92\0> X .even X #endif X X--- 5,11 ---- X */ X X #if defined(LIBC_SCCS) && !defined(KERNEL) && !defined(SUPERVISOR) X! <@(#)csv.s 2.5 (2.11BSD) 2020/1/7\0> X .even X #endif X X*************** X*** 104,111 **** X * branch to ovhndlr which sets the overlay, simulates a csv and transfers to X * (r1) (~foo+4). Thus, the function's call to csv is bypassed. X */ X! #define ovh(x, n) .globl ovhndlr/**/x; \ X! ovhndlr/**/x: \ X mov $n,r0; \ X br ovhndlr; X X--- 104,111 ---- X * branch to ovhndlr which sets the overlay, simulates a csv and transfers to X * (r1) (~foo+4). Thus, the function's call to csv is bypassed. X */ X! #define ovh(x, n) .globl __CONC(ovhndlr,x); \ X! __CONC(ovhndlr,x): \ X mov $n,r0; \ X br ovhndlr; X X*************** X*** 117,123 **** X #ifndef KERNEL X emt = 0104000 / overlays switched by emulator trap X / overlay number is placed in r0 X! #endif KERNEL X X /* X * ovhndlr(ov::r0, ~foo+4::r1, _foo+8::r5) X--- 117,123 ---- X #ifndef KERNEL X emt = 0104000 / overlays switched by emulator trap X / overlay number is placed in r0 X! #endif /* KERNEL */ X X /* X * ovhndlr(ov::r0, ~foo+4::r1, _foo+8::r5) X*************** X*** 255,264 **** X #ifdef SUPERVISOR X tst -(r2) / skip over overlay slot X #else X! mov -(r2),r4 / r4 = old __ovno - if non-zero we've started X! bne 2f / using overlays so we'll have to make X! / sure the old overlay is mapped if we're X! / returning to the overlay area X 1: X #endif X mov -(r2),r4 / restore registers, reset stack, pop frame X--- 255,264 ---- X #ifdef SUPERVISOR X tst -(r2) / skip over overlay slot X #else X! mov -(r2),r4 // r4 = old __ovno - if non-zero we've started X! bne 2f // using overlays so we'll have to make X! // sure the old overlay is mapped if we're X! // returning to the overlay area X 1: X #endif X mov -(r2),r4 / restore registers, reset stack, pop frame X*************** X*** 292,302 **** X mov (sp)+,PS / restore PS, unmask interrupts X br 1b X #else X! mov r0,r3 / (sigh) returning to a different overlay - X! mov r4,r0 / have to save r0 because we can't trash X! emt / a function result and ask UNIX to switch X! mov r4,__ovno / the old overlay in X! mov r3,r0 / note that as with ovhndlr the pair "emt" X! br 1b / "mov r4,__ovno" can be interrupted X #endif X #endif /* !SUPERVISOR */ X--- 292,302 ---- X mov (sp)+,PS / restore PS, unmask interrupts X br 1b X #else X! mov r0,r3 // (sigh) returning to a different overlay - X! mov r4,r0 // have to save r0 because we can't trash X! emt // a function result and ask UNIX to switch X! mov r4,__ovno // the old overlay in X! mov r3,r0 // note that as with ovhndlr the pair "emt" X! br 1b // "mov r4,__ovno" can be interrupted X #endif X #endif /* !SUPERVISOR */ X*** ./usr/src/lib/libc/pdp/crt/lmul.s.orig Wed Jan 28 09:24:08 1987 X--- ./usr/src/lib/libc/pdp/crt/lmul.s Tue Jan 7 20:53:40 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)lmul.s 2.3 (Berkeley) 1/28/87\0> X .even X! #endif LIBC_SCCS X X /* X * lmul(lhs, rhs) X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)lmul.s 2.4 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * lmul(lhs, rhs) X*************** X*** 29,36 **** X mov 12.(sp),r0 / r0 = loint(rhs) X sxt r3 / r3 = sxt(loint(rhs)) - hiint(rhs) X sub 10.(sp),r3 X! mul r0,r1 / MAGIC = loint(rhs) * hiint(lhs)' X! mul r2,r3 / + loint(lhs) * hiint(rhs)' X add r1,r3 X mul r2,r0 / prod (r0:r1) = loint(lhs)*loint(rhs) X sub r3,r0 / hiint(prod) -= MAGIC X--- 29,36 ---- X mov 12.(sp),r0 / r0 = loint(rhs) X sxt r3 / r3 = sxt(loint(rhs)) - hiint(rhs) X sub 10.(sp),r3 X! mul r0,r1 / MAGIC = loint(rhs) * hiint(lhs) X! mul r2,r3 / + loint(lhs) * hiint(rhs) X add r1,r3 X mul r2,r0 / prod (r0:r1) = loint(lhs)*loint(rhs) X sub r3,r0 / hiint(prod) -= MAGIC X*** ./usr/src/lib/libc/pdp/crt/uldiv.s.orig Sun Jun 6 22:47:00 1993 X--- ./usr/src/lib/libc/pdp/crt/uldiv.s Tue Jan 7 20:56:08 2020 X*************** X*** 6,11 **** X--- 6,12 ---- X * Version Date Modification X * 0.0 02Feb91 1. Initial inspiration struck. X * 1.0 05Jun93 2. Released into the Public Domain. X+ * 1.1 07Jan20 3. ANSI style comments to avoid syntax errors X */ X X #include "DEFS.h" X*************** X*** 33,44 **** X .globl uldiv X uldiv: X ENTRY(uldiv) X! jsr pc,l2f / 2(sp) -> fr0 X! jsr pc,l6f / 6(sp) -> fr3 X! tstf fr3 / check for zero divisor X! cfcc / don't want to have an FP fault X! beq 1f / in integer arithmetic X! divf fr3,fr0 / fr0 /= rhs X 1: X movfi fr0,-(sp) X mov (sp)+,r0 / return result X--- 34,45 ---- X .globl uldiv X uldiv: X ENTRY(uldiv) X! jsr pc,l2f // 2(sp) -> fr0 X! jsr pc,l6f // 6(sp) -> fr3 X! tstf fr3 // check for zero divisor X! cfcc // don't want to have an FP fault X! beq 1f // in integer arithmetic X! divf fr3,fr0 // fr0 /= rhs X 1: X movfi fr0,-(sp) X mov (sp)+,r0 / return result X*************** X*** 163,169 **** X mov r4,r1 / quo lo X cmp (sp)+,(sp)+ / remove quot adder X br 9b X! #endif KERNEL X X /* X * u_long ualdiv(lhs, rhs) X--- 164,170 ---- X mov r4,r1 / quo lo X cmp (sp)+,(sp)+ / remove quot adder X br 9b X! #endif /* KERNEL */ X X /* X * u_long ualdiv(lhs, rhs) X*************** X*** 176,190 **** X .globl ualdiv X ualdiv: X ENTRY(ualdiv) X! mov r2,-(sp) / need a register to point at the lhs X! mov 8.(sp),-(sp) / The divide algorithm is long X! mov 8.(sp),-(sp) / enough that it just doesn't make sense X! mov 8.(sp),r2 / to bother repeating it. We just translate X! mov 2(r2),-(sp) / the call for uldiv and let it do the work X! mov (r2),-(sp) / and return its results (also stuffing it X! jsr pc,uldiv / into *lhs) X! add $8.,sp / clean up stack X! mov r0,(r2)+ / store high word, X! mov r1,(r2) / and low X! mov (sp)+,r2 / restore r2 X! rts pc / and return X--- 177,191 ---- X .globl ualdiv X ualdiv: X ENTRY(ualdiv) X! mov r2,-(sp) // need a register to point at the lhs X! mov 8.(sp),-(sp) // The divide algorithm is long X! mov 8.(sp),-(sp) // enough that it just doesn't make sense X! mov 8.(sp),r2 // to bother repeating it. We just translate X! mov 2(r2),-(sp) // the call for uldiv and let it do the work X! mov (r2),-(sp) // and return its results (also stuffing it X! jsr pc,uldiv // into *lhs) X! add $8.,sp // clean up stack X! mov r0,(r2)+ // store high word, X! mov r1,(r2) // and low X! mov (sp)+,r2 // restore r2 X! rts pc // and return X*** ./usr/src/lib/libc/pdp/crt/ulrem.s.orig Sat Dec 27 19:30:34 2008 X--- ./usr/src/lib/libc/pdp/crt/ulrem.s Tue Jan 7 20:56:46 2020 X*************** X*** 6,12 **** X * Version Date Modification X * 0.0 02Feb91 1. Initial inspiration struck. X * 1.0 05Jun93 2. Released into the Public Domain. X! * 1.1 23Dec08 Revised, corrected KERNEL (no-FPP) code wfjm X */ X X #include "DEFS.h" X--- 6,13 ---- X * Version Date Modification X * 0.0 02Feb91 1. Initial inspiration struck. X * 1.0 05Jun93 2. Released into the Public Domain. X! * 1.1 23Dec08 3. Revised, corrected KERNEL (no-FPP) code wfjm X! * 1.2 07Jan20 4. ANSI style comments to avoid errors X */ X X #include "DEFS.h" X*************** X*** 38,55 **** X X ulrem: X ENTRY(ulrem) X! jsr pc,l2f / 2(sp) -> fr0 X! movf fr0,fr2 / put in right place (fr2) X! jsr pc,l6f / 6(sp) -> fr3 X! tstf fr3 / check for division by zero X! cfcc / don't want FP trap during X! beq 1f / integer arithmetic X! divf fr3,fr0 / fr0 = lhs/rhs X! modf $one,fr0 / fr0 = integer((lhs/rhs) * 1.0) X! mulf fr3,fr1 / fr0 = integer(lhs/rhs) * rhs X! subf fr1,fr2 / fr2 = lhs - (integer(*lhs/rhs) * rhs) X 1: X! movfi fr2,-(sp) / (result) X mov (sp)+,r0 X mov (sp)+,r1 X seti X--- 39,56 ---- X X ulrem: X ENTRY(ulrem) X! jsr pc,l2f // 2(sp) -> fr0 X! movf fr0,fr2 // put in right place (fr2) X! jsr pc,l6f // 6(sp) -> fr3 X! tstf fr3 // check for division by zero X! cfcc // don't want FP trap during X! beq 1f // integer arithmetic X! divf fr3,fr0 // fr0 = lhs/rhs X! modf $one,fr0 // fr0 = integer((lhs/rhs) * 1.0) X! mulf fr3,fr1 // fr0 = integer(lhs/rhs) * rhs X! subf fr1,fr2 // fr2 = lhs - (integer(*lhs/rhs) * rhs) X 1: X! movfi fr2,-(sp) // (result) X mov (sp)+,r0 X mov (sp)+,r1 X seti X*************** X*** 174,181 **** X mov (sp)+,r3 X mov (sp)+,r2 X rts pc X! #endif NEVER X! #endif KERNEL X X /* X * u_long ualrem(lhs, rhs) X--- 175,182 ---- X mov (sp)+,r3 X mov (sp)+,r2 X rts pc X! #endif /* NEVER */ X! #endif /* KERNEL */ X X /* X * u_long ualrem(lhs, rhs) X*************** X*** 188,202 **** X .globl ualrem X ualrem: X ENTRY(ualrem) X! mov r2,-(sp) / need a register to point at the lhs X! mov 8.(sp),-(sp) / The rem algorithm is long X! mov 8.(sp),-(sp) / enough that it just doesn't make sense X! mov 8.(sp),r2 / to bother repeating it. We just translate X! mov 2(r2),-(sp) / the call for ulrem and let it do the work X! mov (r2),-(sp) / and return its results (also stuffing it X! jsr pc,ulrem / into *lhs) X! add $8.,sp / clean up stack X! mov r0,(r2)+ / store high word, X! mov r1,(r2) / and low X! mov (sp)+,r2 / restore r2 X! rts pc / and return X--- 189,203 ---- X .globl ualrem X ualrem: X ENTRY(ualrem) X! mov r2,-(sp) // need a register to point at the lhs X! mov 8.(sp),-(sp) // The rem algorithm is long X! mov 8.(sp),-(sp) // enough that it just doesn't make sense X! mov 8.(sp),r2 // to bother repeating it. We just translate X! mov 2(r2),-(sp) // the call for ulrem and let it do the work X! mov (r2),-(sp) // and return its results (also stuffing it X! jsr pc,ulrem // into *lhs) X! add $8.,sp // clean up stack X! mov r0,(r2)+ // store high word, X! mov r1,(r2) // and low X! mov (sp)+,r2 // restore r2 X! rts pc // and return X*** ./usr/src/lib/libc/pdp/csu/Makefile.orig Fri Nov 3 22:50:45 2000 X--- ./usr/src/lib/libc/pdp/csu/Makefile Tue Jan 7 20:57:35 2020 X*************** X*** 3,9 **** X # All rights reserved. The Berkeley software License Agreement X # specifies the terms and conditions for redistribution. X # X! # @(#)Makefile 5.6.2 (2.11BSD) 2000/10/24 X # X # crt0 Normal C run time startoff X # mcrt0 C run time start off for profiling, ``prof'' conventions X--- 3,9 ---- X # All rights reserved. The Berkeley software License Agreement X # specifies the terms and conditions for redistribution. X # X! # @(#)Makefile 5.6.3 (2.11BSD) 2020/1/7 X # X # crt0 Normal C run time startoff X # mcrt0 C run time start off for profiling, ``prof'' conventions X*************** X*** 21,32 **** X install -c -m 0644 mcrt0.o ${DESTDIR}/lib/mcrt0.o X X crt0.o: crt0.s X! /lib/cpp ${DEFS} ${DFLAGS} crt0.s | sed 's;^#;/;' | as -o x.o X ld -x -r -o crt0.o x.o X rm -f x.o X X moncrt0.o: crt0.s X! /lib/cpp ${DEFS} ${DFLAGS} -DMCRT0 crt0.s | sed 's;^#;/;' | as -o x.o X ld -x -r -o moncrt0.o x.o X rm -f x.o X X--- 21,32 ---- X install -c -m 0644 mcrt0.o ${DESTDIR}/lib/mcrt0.o X X crt0.o: crt0.s X! /lib/cpp -t ${DEFS} ${DFLAGS} crt0.s | sed 's;^#;/;' | as -o x.o X ld -x -r -o crt0.o x.o X rm -f x.o X X moncrt0.o: crt0.s X! /lib/cpp -t ${DEFS} ${DFLAGS} -DMCRT0 crt0.s | sed 's;^#;/;' | as -o x.o X ld -x -r -o moncrt0.o x.o X rm -f x.o X X*************** X*** 37,43 **** X cc ${CFLAGS} -S ${DFLAGS} mon.c X ex - mon.s < mon.ex X cat mon.s mcount.s > x.s X! /lib/cpp ${DEFS} ${DFLAGS} x.s | sed 's;^#;/;' > xx.s X as - -o x.o xx.s X ld -x -r -o mon.o x.o X rm -f x.o x.s xx.s mon.s X--- 37,43 ---- X cc ${CFLAGS} -S ${DFLAGS} mon.c X ex - mon.s < mon.ex X cat mon.s mcount.s > x.s X! /lib/cpp -t ${DEFS} ${DFLAGS} x.s | sed 's;^#;/;' > xx.s X as - -o x.o xx.s X ld -x -r -o mon.o x.o X rm -f x.o x.s xx.s mon.s X*** ./usr/src/lib/libc/pdp/gen/DEFS.h.orig Thu May 7 02:48:42 1987 X--- ./usr/src/lib/libc/pdp/gen/DEFS.h Tue Jan 7 20:57:51 2020 X*************** X*** 3,16 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)DEFS.h 1.1 (Berkeley) 1/25/87 X */ X X! #define ENTRY(x) .globl _/**/x; \ X! _/**/x: \ X! PROFCODE(_/**/x); X X! #define ASENTRY(x) .globl x; \ X x: \ X PROFCODE(x); X X--- 3,22 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)DEFS.h 1.2 (2.11BSD) 2020/1/7 X */ X X! #ifdef __STDC__ X! #define __CONC(x,y) x ## y X! #else X! #define __CONC(x,y) x/**/y X! #endif X X! #define ENTRY(x) .globl __CONC(_,x); \ X! __CONC(_,x): \ X! PROFCODE(__CONC(_,x)); X! X! #define ASENTRY(x) .globl x; \ X x: \ X PROFCODE(x); X X*************** X*** 21,26 **** X .globl mcount; \ X mov $1b, r0; \ X jsr pc,mcount; X! #else !PROF X #define PROFCODE(x) ; X! #endif PROF X--- 27,32 ---- X .globl mcount; \ X mov $1b, r0; \ X jsr pc,mcount; X! #else /* !PROF */ X #define PROFCODE(x) ; X! #endif /* PROF */ X*** ./usr/src/lib/libc/pdp/gen/_setjmp.s.orig Sun Jan 25 07:03:30 1987 X--- ./usr/src/lib/libc/pdp/gen/_setjmp.s Tue Jan 7 20:58:14 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)_setjmp.s 1.2 (Berkeley) 1/5/87\0> X .even X! #endif LIBC_SCCS X X /* X * val = _setjmp(env) X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)_setjmp.s 1.3 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * val = _setjmp(env) X*************** X*** 43,55 **** X .globl __ovno X X ENTRY(_setjmp) X! mov 2(sp),r0 / r0 = env X! mov __ovno,(r0)+ / save caller's current overlay X! mov r5,(r0)+ / and frame pointer X! mov sp,(r0) / calculate caller's pre jsr pc, X! add $2,(r0)+ / _setjmp sp as (sp + ret addr) X! mov (sp),(r0) / save return pc X! clr r0 / and return a zero X rts pc X X /* X--- 43,55 ---- X .globl __ovno X X ENTRY(_setjmp) X! mov 2(sp),r0 // r0 = env X! mov __ovno,(r0)+ // save caller's current overlay X! mov r5,(r0)+ // and frame pointer X! mov sp,(r0) // calculate caller's pre jsr pc, X! add $2,(r0)+ // _setjmp sp as (sp + ret addr) X! mov (sp),(r0) // save return pc X! clr r0 // and return a zero X rts pc X X /* X*** ./usr/src/lib/libc/pdp/gen/index.s.orig Fri Jan 12 02:23:54 1996 X--- ./usr/src/lib/libc/pdp/gen/index.s Tue Jan 7 20:58:30 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)index.s 1.2 (2.11BSD) 1996/1/12\0> X .even X! #endif LIBC_SCCS X X /* X * Find the first occurence of c in the string cp. X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)index.s 1.3 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * Find the first occurence of c in the string cp. X*************** X*** 23,42 **** X _strchr = _index ^ . X X ENTRY(index) X! mov 2(sp),r0 / r0 = cp X! mov 4(sp),r1 / r1 = c X! beq 3f / check for special case of c == '\0' X 1: X! cmpb (r0),r1 / look for c ... X beq 2f X! tstb (r0)+ / but don't pass end of string ... X bne 1b X! clr r0 / fell off the end of the string - return 0 X 2: X! rts pc / return pointer X 3: X! tstb (r0)+ / just find end of string X bne 3b X! dec r0 / back up to '\0' X! rts pc / and return pointer X X--- 23,42 ---- X _strchr = _index ^ . X X ENTRY(index) X! mov 2(sp),r0 // r0 = cp X! mov 4(sp),r1 // r1 = c X! beq 3f // check for special case of c == '\0' X 1: X! cmpb (r0),r1 // look for c ... X beq 2f X! tstb (r0)+ // but don't pass end of string ... X bne 1b X! clr r0 // fell off the end of the string - return 0 X 2: X! rts pc // return pointer X 3: X! tstb (r0)+ // just find end of string X bne 3b X! dec r0 // back up to '\0' X! rts pc // and return pointer X X*** ./usr/src/lib/libc/pdp/gen/ldexp.s.orig Sun Jul 3 23:55:50 1988 X--- ./usr/src/lib/libc/pdp/gen/ldexp.s Tue Jan 7 20:58:51 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)ldexp.s 2.3 (Berkeley) 6/12/88\0> X .even X! #endif LIBC_SCCS X X /* X * double X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)ldexp.s 2.4 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * double X*************** X*** 28,35 **** X X #include "DEFS.h" X X! ERANGE = 34. / can't include because of the X! .comm _errno,2 / comments on each line ... (sigh) X X .data X huge: 077777; 0177777; 0177777; 0177777 X--- 28,35 ---- X X #include "DEFS.h" X X! ERANGE = 34. // can't include because of the X! .comm _errno,2 // comments on each line ... (sigh) X X .data X huge: 077777; 0177777; 0177777; 0177777 X*** ./usr/src/lib/libc/pdp/gen/rindex.s.orig Fri Jan 12 02:26:15 1996 X--- ./usr/src/lib/libc/pdp/gen/rindex.s Tue Jan 7 21:38:36 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)rindex.s 1.2 (2.11BSD) 1996/1/12\0> X .even X! #endif LIBC_SCCS X X /* X * Find the last occurence of c in the string cp. X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)rindex.s 1.3 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * Find the last occurence of c in the string cp. X*************** X*** 23,47 **** X _strrchr = _rindex ^ . X X ENTRY(rindex) X! mov 2(sp),r0 / r0 = cp X! mov 4(sp),r1 / r1 = c X! beq 3f / check for special case of c == '\0' X! mov r2,-(sp) / need an extra register to keep track of X! clr r2 / last occurance of c (not found == 0) X 1: X! cmpb (r0),r1 / look for c ... X beq 2f X! tstb (r0)+ / but don't pass end of string ... X bne 1b X! mov r2,r0 / fell off the end of the string - return X! mov (sp)+,r2 / last occurance of c X rts pc X 2: X! mov r0,r2 / remember position of c and bounce back into X! inc r0 / loop one position further X br 1b X 3: X! tstb (r0)+ / just find end of string X bne 3b X! dec r0 / back up to '\0' X! rts pc / and return pointer X--- 23,47 ---- X _strrchr = _rindex ^ . X X ENTRY(rindex) X! mov 2(sp),r0 // r0 = cp X! mov 4(sp),r1 // r1 = c X! beq 3f // check for special case of c == '\0' X! mov r2,-(sp) // need an extra register to keep track of X! clr r2 // last occurance of c (not found == 0) X 1: X! cmpb (r0),r1 // look for c ... X beq 2f X! tstb (r0)+ // but don't pass end of string ... X bne 1b X! mov r2,r0 // fell off the end of the string - return X! mov (sp)+,r2 // last occurance of c X rts pc X 2: X! mov r0,r2 // remember position of c and bounce back into X! inc r0 // loop one position further X br 1b X 3: X! tstb (r0)+ // just find end of string X bne 3b X! dec r0 // back up to '\0' X! rts pc // and return pointer X*** ./usr/src/lib/libc/pdp/gen/setjmp.s.orig Tue Sep 9 22:55:18 1997 X--- ./usr/src/lib/libc/pdp/gen/setjmp.s Tue Jan 7 21:38:54 2020 X*************** X*** 5,11 **** X */ X X #if defined(LIBC_SCCS) && !defined(lint) X! <@(#)setjmp.s 1.5 (2.11BSD GTE) 1997/9/7\0> X .even X #endif X X--- 5,11 ---- X */ X X #if defined(LIBC_SCCS) && !defined(lint) X! <@(#)setjmp.s 1.6 (2.11BSD) 2020/1/7\0> X .even X #endif X X*************** X*** 33,83 **** X .globl __ovno X X ENTRY(setjmp) X! mov r2,-(sp) / save r2 X! mov 4(sp),r2 / r2 = env X! sub $6.,sp / allocate sizeof(struct sigaltstack) X! mov sp,r0 / and get current sigaltstack via X! mov r0,-(sp) / sigaltstack(0, sp) (cant use "mov sp,-(sp)") X clr -(sp) X jsr pc,_sigaltstack X! add $8.,sp / toss 0, &oss, ss_sp, ss_size, X! mov (sp)+,(r2)+ / save ss_flags of caller X X! sub $4,sp / sizeof (sigset_t) - oset X! mov sp,r0 / can't use mov sp,-(sp) X! mov r0,-(sp) / 'oset' X! clr -(sp) / 'set' X! mov $SIG_SETMASK,-(sp) / 'how' X! jsr pc,_sigprocmask / sigprocmask(SIG_SETMASK, NULL, &oset) X! add $6,sp / toss how, set, &oset X! mov (sp)+,(r2)+ / oset(hi) to env X! mov (sp)+,(r2)+ / oset(lo) to env X X! mov sp,(r2) / calculate caller's pre jsr pc,setjmp X! add $4,(r2)+ / sp as (sp + saved r2 + ret addr) X! mov r5,(r2)+ / save caller's frame pointer X! cmp (r2)+,(r2)+ / fake r0 & r1 X! mov 2(sp),(r2)+ / return pc, X! mov $0170000,(r2)+ / fake (but appropriate) ps, and X! mov __ovno,(r2) / current overlay X! mov (sp)+,r2 / restore r2 X! clr r0 / and return a zero X rts pc X X! SC_FP = 8. / offset of sc_fp in sigcontext X! SC_R0 = 12. / offset of sc_r0 in sigcontext X X .globl rollback, _sigreturn, _longjmperror X ENTRY(longjmp) X! mov 2(sp),r1 / r1 = env X! mov SC_FP(r1),r0 / r0 = env->sc_fp X! jsr pc,rollback / attempt stack frame rollback X! mov 4(sp),r0 / r0 = val X! bne 1f / if (val == 0) X! inc r0 / r0 = 1 X 1: X! mov r0,SC_R0(r1) / env->sc_r0 = r0 (`return' val) X! mov 2(sp),-(sp) / push env X! jsr pc,_sigreturn / perform sigreturn(env) X! jsr pc,_longjmperror / if sigreturn returns, it's an error X! iot / and die if longjmperror returns X--- 33,83 ---- X .globl __ovno X X ENTRY(setjmp) X! mov r2,-(sp) // save r2 X! mov 4(sp),r2 // r2 = env X! sub $6.,sp // allocate sizeof(struct sigaltstack) X! mov sp,r0 // and get current sigaltstack via X! mov r0,-(sp) // sigaltstack(0, sp) (cant use "mov sp,-(sp)") X clr -(sp) X jsr pc,_sigaltstack X! add $8.,sp // toss 0, &oss, ss_sp, ss_size, X! mov (sp)+,(r2)+ // save ss_flags of caller X X! sub $4,sp // sizeof (sigset_t) - oset X! mov sp,r0 // can't use mov sp,-(sp) X! mov r0,-(sp) // 'oset' X! clr -(sp) // 'set' X! mov $SIG_SETMASK,-(sp) // 'how' X! jsr pc,_sigprocmask // sigprocmask(SIG_SETMASK, NULL, &oset) X! add $6,sp // toss how, set, &oset X! mov (sp)+,(r2)+ // oset(hi) to env X! mov (sp)+,(r2)+ // oset(lo) to env X X! mov sp,(r2) // calculate caller's pre jsr pc,setjmp X! add $4,(r2)+ // sp as (sp + saved r2 + ret addr) X! mov r5,(r2)+ // save caller's frame pointer X! cmp (r2)+,(r2)+ // fake r0 & r1 X! mov 2(sp),(r2)+ // return pc, X! mov $0170000,(r2)+ // fake (but appropriate) ps, and X! mov __ovno,(r2) // current overlay X! mov (sp)+,r2 // restore r2 X! clr r0 // and return a zero X rts pc X X! SC_FP = 8. // offset of sc_fp in sigcontext X! SC_R0 = 12. // offset of sc_r0 in sigcontext X X .globl rollback, _sigreturn, _longjmperror X ENTRY(longjmp) X! mov 2(sp),r1 // r1 = env X! mov SC_FP(r1),r0 // r0 = env->sc_fp X! jsr pc,rollback // attempt stack frame rollback X! mov 4(sp),r0 // r0 = val X! bne 1f // if (val == 0) X! inc r0 // r0 = 1 X 1: X! mov r0,SC_R0(r1) // env->sc_r0 = r0 (`return' val) X! mov 2(sp),-(sp) // push env X! jsr pc,_sigreturn // perform sigreturn(env) X! jsr pc,_longjmperror // if sigreturn returns, it's an error X! iot // and die if longjmperror returns X*** ./usr/src/lib/libc/pdp/gen/strcmp.s.orig Sun Jan 25 07:03:32 1987 X--- ./usr/src/lib/libc/pdp/gen/strcmp.s Tue Jan 7 21:39:12 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)strcmp.s 1.1 (Berkeley) 1/21/87\0> X .even X! #endif LIBC_SCCS X X /* X * Compare string s1 lexicographically to string s2. X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)strcmp.s 1.2 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * Compare string s1 lexicographically to string s2. X*************** X*** 22,38 **** X #include "DEFS.h" X X ENTRY(strcmp) X! mov 2(sp),r0 / r0 = s1 X! mov 4(sp),r1 / r1 = s2 X 1: X! cmpb (r0)+,(r1) / compare the two strings X! bne 2f / stop on first mismatch X! tstb (r1)+ / but don't pass end of either string X bne 1b X! clr r0 / fell off end of strings with '\0' == '\0` X! rts pc / - success! return zero X 2: X! movb -(r0),r0 / mismatch, return *s1 - *s2 ... X! movb (r1),r1 / (no subb instruction ...) X sub r1,r0 X rts pc X--- 22,38 ---- X #include "DEFS.h" X X ENTRY(strcmp) X! mov 2(sp),r0 // r0 = s1 X! mov 4(sp),r1 // r1 = s2 X 1: X! cmpb (r0)+,(r1) // compare the two strings X! bne 2f // stop on first mismatch X! tstb (r1)+ // but don't pass end of either string X bne 1b X! clr r0 // fell off end of strings with '\0' == '\0` X! rts pc // - success! return zero X 2: X! movb -(r0),r0 // mismatch, return *s1 - *s2 ... X! movb (r1),r1 // (no subb instruction ...) X sub r1,r0 X rts pc X*** ./usr/src/lib/libc/pdp/gen/strcpy.s.orig Sun Jan 25 07:03:32 1987 X--- ./usr/src/lib/libc/pdp/gen/strcpy.s Tue Jan 7 21:39:49 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)strcpy.s 1.1 (Berkeley) 1/20/87\0> X .even X! #endif LIBC_SCCS X X /* X * Copy string s2 over top of s1. X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)strcpy.s 1.2 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * Copy string s2 over top of s1. X*************** X*** 20,29 **** X #include "DEFS.h" X X ENTRY(strcpy) X! mov 2(sp),r0 / r0 = s1 X! mov 4(sp),r1 / r1 = s2 X 1: X! movb (r1)+,(r0)+ / copy s2 over s1 X! bne 1b / but don't pass end of s2 X! mov 2(sp),r0 / and return s1 X rts pc X--- 20,29 ---- X #include "DEFS.h" X X ENTRY(strcpy) X! mov 2(sp),r0 // r0 = s1 X! mov 4(sp),r1 // r1 = s2 X 1: X! movb (r1)+,(r0)+ // copy s2 over s1 X! bne 1b // but don't pass end of s2 X! mov 2(sp),r0 // and return s1 X rts pc X*** ./usr/src/lib/libc/pdp/gen/strlen.s.orig Sun Jan 25 07:03:32 1987 X--- ./usr/src/lib/libc/pdp/gen/strlen.s Tue Jan 7 21:40:12 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)strlen.s 1.1 (Berkeley) 1/20/87\0> X .even X! #endif LIBC_SCCS X X /* X * Return the length of cp (not counting '\0'). X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)strlen.s 1.2 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * Return the length of cp (not counting '\0'). X*************** X*** 18,27 **** X #include "DEFS.h" X X ENTRY(strlen) X! mov 2(sp),r0 / r0 = cp X 1: X! tstb (r0)+ / find end os string X bne 1b X! sub 2(sp),r0 / length = location('\0')+1 - cp - 1 X dec r0 X rts pc X--- 18,27 ---- X #include "DEFS.h" X X ENTRY(strlen) X! mov 2(sp),r0 // r0 = cp X 1: X! tstb (r0)+ // find end os string X bne 1b X! sub 2(sp),r0 // length = location('\0')+1 - cp - 1 X dec r0 X rts pc X*** ./usr/src/lib/libc/pdp/gen/strncmp.s.orig Sun Jan 25 07:03:32 1987 X--- ./usr/src/lib/libc/pdp/gen/strncmp.s Tue Jan 7 21:40:45 2020 X*************** X*** 5,13 **** X */ X X #ifdef LIBC_SCCS X! <@(#)strncmp.s 1.1 (Berkeley) 1/21/87\0> X .even X! #endif LIBC_SCCS X X /* X * Compare at most n characters of string X--- 5,13 ---- X */ X X #ifdef LIBC_SCCS X! <@(#)strncmp.s 1.2 (2.11BSD) 2020/1/7\0> X .even X! #endif /* LIBC_SCCS */ X X /* X * Compare at most n characters of string X*************** X*** 24,48 **** X #include "DEFS.h" X X ENTRY(strncmp) X! mov 6(sp),r0 / r0 = n X! beq 4f / (all done if n == 0 - return 0) X! mov 2(sp),r1 / r1 = s1 X! mov r2,-(sp) / need an extra register for s2 ... X! mov 6(sp),r2 / r2 = s2 X 1: X! cmpb (r1)+,(r2) / compare the two strings X! bne 5f / stop on first mismatch X! tstb (r2)+ / but don't pass end of either string X beq 2f X! sob r0,1b / and n running out will stop us too ... X 2: X! clr r0 / fell off end of strings while still matching X 3: X! mov (sp)+,r2 / restore r2 X 4: X! rts pc / and return X 5: X! movb -(r1),r0 / mismatch, return *s1 - *s2 ... X! movb (r2),r1 / (no subb instruction ...) X sub r1,r0 X br 3b X--- 24,48 ---- X #include "DEFS.h" X X ENTRY(strncmp) X! mov 6(sp),r0 // r0 = n X! beq 4f // (all done if n == 0 - return 0) X! mov 2(sp),r1 // r1 = s1 X! mov r2,-(sp) // need an extra register for s2 ... X! mov 6(sp),r2 // r2 = s2 X 1: X! cmpb (r1)+,(r2) // compare the two strings X! bne 5f // stop on first mismatch X! tstb (r2)+ // but don't pass end of either string X beq 2f X! sob r0,1b // and n running out will stop us too ... X 2: X! clr r0 // fell off end of strings while still matching X 3: X! mov (sp)+,r2 // restore r2 X 4: X! rts pc // and return X 5: X! movb -(r1),r0 // mismatch, return *s1 - *s2 ... X! movb (r2),r1 // (no subb instruction ...) X sub r1,r0 X br 3b X*** ./usr/src/lib/libc/pdp/stdio/Makefile.orig Sat Apr 9 03:23:12 1994 X--- ./usr/src/lib/libc/pdp/stdio/Makefile Tue Jan 7 21:41:11 2020 X*************** X*** 3,9 **** X # All rights reserved. The Berkeley software License Agreement X # specifies the terms and conditions for redistribution. X # X! # @(#)Makefile 5.6.1 (2.11BSD GTE) 4/9/94 X # X # SRCS= doprnt.s ffltpr.s fgetc.s fgets.s fltpr.s fputc.s puts.s gets.s X # OBJS= doprnt.o ffltpr.o fgetc.o fgets.o fltpr.o fputc.o puts.o gets.o X--- 3,9 ---- X # All rights reserved. The Berkeley software License Agreement X # specifies the terms and conditions for redistribution. X # X! # @(#)Makefile 5.6.2 (2.11BSD) 2020/1/7 X # X # SRCS= doprnt.s ffltpr.s fgetc.s fgets.s fltpr.s fputc.s puts.s gets.s X # OBJS= doprnt.o ffltpr.o fgetc.o fgets.o fltpr.o fputc.o puts.o gets.o X*************** X*** 13,22 **** X TAGSFILE=tags X X .s.o: X! /lib/cpp -E -DPROF ${DEFS} $< | sed -e 's;^#;/;' | as -V -o $@ X -ld -X -r $*.o X mv a.out profiled/$*.o X! /lib/cpp -E ${DEFS} $< | sed -e 's;^#;/;' | as -V -o $@ X -ld -x -r $*.o X mv a.out $*.o X X--- 13,22 ---- X TAGSFILE=tags X X .s.o: X! /lib/cpp -t -E -DPROF ${DEFS} $< | sed -e 's;^#;/;' | as -V -o $@ X -ld -X -r $*.o X mv a.out profiled/$*.o X! /lib/cpp -t -E ${DEFS} $< | sed -e 's;^#;/;' | as -V -o $@ X -ld -x -r $*.o X mv a.out $*.o X X*** ./usr/src/lib/libc/pdp/sys/SYS.h.orig Tue May 9 01:25:11 1995 X--- ./usr/src/lib/libc/pdp/sys/SYS.h Tue Jan 7 21:41:30 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)SYS.h 1.5 (2.11BSD GTE) 1995/05/08 X */ X X #include X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)SYS.h 1.6 (2.11BSD) 2020/1/7 X */ X X #include X*************** X*** 10,20 **** X X .comm _errno,2 X X! #define ENTRY(x) .globl _/**/x; \ X! _/**/x: \ X! PROFCODE(_/**/x); X! X! #define ASENTRY(x) .globl x; \ X x: \ X PROFCODE(x); X X--- 10,25 ---- X X .comm _errno,2 X X! #ifdef __STDC__ X! #define __CONC(x,y) x ## y X! #else X! #define __CONC(x,y) x/**/y X! #endif X! X! #define ENTRY(x) .globl __CONC(_,x); \ X! __CONC(_,x): \ X! PROFCODE(__CONC(_,x)); X! #define ASENTRY(x) .globl x; \ X x: \ X PROFCODE(x); X X*************** X*** 25,39 **** X .globl mcount; \ X mov $1b, r0; \ X jsr pc,mcount; X! #else !PROF X #define PROFCODE(x) ; X! #endif PROF X X! #define SYS(s) sys SYS_/**/s. X X #define SYSCALL(s, r) ENTRY(s); \ X SYS(s); \ X! EXIT_/**/r X X .globl x_norm, x_error X X--- 30,44 ---- X .globl mcount; \ X mov $1b, r0; \ X jsr pc,mcount; X! #else /* !PROF */ X #define PROFCODE(x) ; X! #endif /* PROF */ X X! #define SYS(s) sys __CONC(SYS_,s). X X #define SYSCALL(s, r) ENTRY(s); \ X SYS(s); \ X! __CONC(EXIT_,r) X X .globl x_norm, x_error X X*** ./usr/src/lib/libc/pdp/sys/execl.s.orig Tue May 9 01:14:03 1995 X--- ./usr/src/lib/libc/pdp/sys/execl.s Tue Jan 7 21:42:35 2020 X*************** X*** 5,13 **** X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)execl.s 2.6 (2.11BSD GTE) 1995/05/08\0> X .even X! #endif SYSLIBC_SCCS X X /* X * XXX - this routine can't use SYSCALL!!! X--- 5,13 ---- X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)execl.s 2.7 (2.11BSD) 2020/1/7\0> X .even X! #endif X X /* X * XXX - this routine can't use SYSCALL!!! X*************** X*** 17,28 **** X .globl _environ X X ENTRY(execl) X! mov _environ,-(sp) / pass default environment X! mov sp,r0 / calculate and pass address of first argv X! add $6.,r0 / element (can't use "mov sp,-(sp)") X mov r0,-(sp) X! mov 6(sp),-(sp) / pass the name X! tst -(sp) / simulate return address stack spacing X! SYS(execve) / and go for it ... X! add $8.,sp / if we get back it's an error X jmp x_error X--- 17,28 ---- X .globl _environ X X ENTRY(execl) X! mov _environ,-(sp) // pass default environment X! mov sp,r0 // calculate and pass address of first argv X! add $6.,r0 // element (can't use "mov sp,-(sp)") X mov r0,-(sp) X! mov 6(sp),-(sp) // pass the name X! tst -(sp) // simulate return address stack spacing X! SYS(execve) // and go for it ... X! add $8.,sp // if we get back it's an error X jmp x_error X*** ./usr/src/lib/libc/pdp/sys/execle.s.orig Tue May 9 01:14:37 1995 X--- ./usr/src/lib/libc/pdp/sys/execle.s Tue Jan 7 21:43:11 2020 X*************** X*** 5,13 **** X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)execle.s 2.6 (2.11BSD GTE) 1995/05/08\0> X .even X! #endif SYSLIBC_SCCS X X /* X * XXX - this routine can't use SYSCALL!!! X--- 5,13 ---- X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)execle.s 2.7 (2.11BSD) 2020/1/7\0> X .even X! #endif X X /* X * XXX - this routine can't use SYSCALL!!! X*************** X*** 15,30 **** X #include "SYS.h" X X ENTRY(execle) X! tst -(sp) / leave space for environment pointer X! mov sp,r0 / calculate address of first argv element X add $6.,r0 X! mov r0,-(sp) / (pass it) X 1: X! tst (r0)+ / found the end of the argv list yet? X! bne 1b / nope - keep looping X! mov (r0),2(sp) / yeah, pass the user environment pointer X! mov 6(sp),-(sp) / pass the name X! tst -(sp) / simulate return address stack spacing X! SYS(execve) / and go for it ... X! add $8.,sp / if we get back it's an error X jmp x_error X--- 15,30 ---- X #include "SYS.h" X X ENTRY(execle) X! tst -(sp) // leave space for environment pointer X! mov sp,r0 // calculate address of first argv element X add $6.,r0 X! mov r0,-(sp) // (pass it) X 1: X! tst (r0)+ // found the end of the argv list yet? X! bne 1b // nope - keep looping X! mov (r0),2(sp) // yeah, pass the user environment pointer X! mov 6(sp),-(sp) // pass the name X! tst -(sp) // simulate return address stack spacing X! SYS(execve) // and go for it ... X! add $8.,sp // if we get back it's an error X jmp x_error X*** ./usr/src/lib/libc/pdp/sys/execv.s.orig Tue May 9 01:15:13 1995 X--- ./usr/src/lib/libc/pdp/sys/execv.s Tue Jan 7 21:43:32 2020 X*************** X*** 5,13 **** X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)execv.s 2.6 (2.11BSD GTE) 1995/05/08\0> X .even X! #endif SYSLIBC_SCCS X X /* X * XXX - this routine can't use SYSCALL!!! X--- 5,13 ---- X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)execv.s 2.7 (2.11BSD) 2020/1/7\0> X .even X! #endif X X /* X * XXX - this routine can't use SYSCALL!!! X*************** X*** 17,26 **** X .globl _environ X X ENTRY(execv) X! mov _environ,-(sp) / pass default environment, X! mov 6(sp),-(sp) / argv list pointer, X! mov 6(sp),-(sp) / name X! tst -(sp) / simulate return address stack spacing X! SYS(execve) / and go for it ... X! add $8.,sp / if we get back it's an error X jmp x_error X--- 17,26 ---- X .globl _environ X X ENTRY(execv) X! mov _environ,-(sp) // pass default environment, X! mov 6(sp),-(sp) // argv list pointer, X! mov 6(sp),-(sp) // name X! tst -(sp) // simulate return address stack spacing X! SYS(execve) // and go for it ... X! add $8.,sp // if we get back it's an error X jmp x_error X*** ./usr/src/lib/libc/pdp/sys/sigaction.s.orig Thu Aug 28 16:09:08 1997 X--- ./usr/src/lib/libc/pdp/sys/sigaction.s Tue Jan 7 21:48:57 2020 X*************** X*** 5,13 **** X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)sigaction.s 1.0 (2.11BSD) 1997/8/23\0> X .even X! #endif SYSLIBC_SCCS X X /* X * error = sigaction(sig, vec, ovec) X--- 5,13 ---- X */ X X #ifdef SYSLIBC_SCCS X! _sccsid: <@(#)sigaction.s 1.1 (2.11BSD) 2020/1/7\0> X .even X! #endif /* SYSLIBC_SCCS */ X X /* X * error = sigaction(sig, vec, ovec) X*************** X*** 85,91 **** X sigtramp: X jsr pc,(r0) / transfer to signal action routine X mov sp,r0 / compute address of sigcontext X! add $SIG_SC,r0 / (can't use "mov sp,-(sp)") X mov r0,-(sp) X jsr pc,_sigreturn / and perform a sigreturn X iot / die if the sigreturn fails ... X--- 85,91 ---- X sigtramp: X jsr pc,(r0) / transfer to signal action routine X mov sp,r0 / compute address of sigcontext X! add $SIG_SC,r0 // (can't use "mov sp,-(sp)") X mov r0,-(sp) X jsr pc,_sigreturn / and perform a sigreturn X iot / die if the sigreturn fails ... X*** ./usr/src/sys/conf/boot/NONEboot.s.orig Thu Feb 19 20:47:12 1987 X--- ./usr/src/sys/conf/boot/NONEboot.s Tue Jan 7 21:49:15 2020 X*************** X*** 1,9 **** X /* X! * SCCS id @(#)NONEboot.s 1.2 (Berkeley) 2/19/87 X */ X! / The intention is for this file to be used if a boot program isn't X! / available for a particulare drive/controller, or the autoboot X! / feature isn't desired. X X halt = 0 X X--- 1,9 ---- X /* X! * SCCS id @(#)NONEboot.s 1.3 (2.11BSD) 2020/1/7 X */ X! // The intention is for this file to be used if a boot program isn't X! // available for a particulare drive/controller, or the autoboot X! // feature isn't desired. X X halt = 0 X X*** ./usr/src/sys/h/disklabel.h.orig Wed May 3 23:45:24 1995 X--- ./usr/src/sys/h/disklabel.h Tue Jan 7 21:49:41 2020 X*************** X*** 30,36 **** X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF X * SUCH DAMAGE. X * X! * @(#)disklabel.h 8.1.1 (2.11BSD) 1995/04/13 X */ X X #ifndef _SYS_DISKLABEL_H_ X--- 30,36 ---- X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF X * SUCH DAMAGE. X * X! * @(#)disklabel.h 8.2 (2.11BSD) 2020/1/7 X */ X X #ifndef _SYS_DISKLABEL_H_ X*************** X*** 267,286 **** X * Disk-specific ioctls. X */ X /* get and set disklabel; DIOCGPART used internally */ X! #define DIOCGDINFO _IOR(d, 101, struct disklabel) /* get */ X! #define DIOCSDINFO _IOW(d, 102, struct disklabel) /* set */ X! #define DIOCWDINFO _IOW(d, 103, struct disklabel) /* set, update disk */ X! #define DIOCGPART _IOW(d, 104, struct partinfo) /* get partition */ X X /* do format operation, read or write */ X! #define DIOCRFORMAT _IOWR(d, 105, struct format_op) X! #define DIOCWFORMAT _IOWR(d, 106, struct format_op) X X! #define DIOCSSTEP _IOW(d, 107, int) /* set step rate */ X! #define DIOCSRETRIES _IOW(d, 108, int) /* set # of retries */ X! #define DIOCWLABEL _IOW(d, 109, int) /* write en/disable label */ X X! #define DIOCSBAD _IOW(d, 110, struct dkbad) /* set kernel dkbad */ X X #ifndef KERNEL X struct disklabel *getdiskbyname(); X--- 267,286 ---- X * Disk-specific ioctls. X */ X /* get and set disklabel; DIOCGPART used internally */ X! #define DIOCGDINFO _IOR('d', 101, struct disklabel) /* get */ X! #define DIOCSDINFO _IOW('d', 102, struct disklabel) /* set */ X! #define DIOCWDINFO _IOW('d', 103, struct disklabel) /* set, update disk */ X! #define DIOCGPART _IOW('d', 104, struct partinfo) /* get partition */ X X /* do format operation, read or write */ X! #define DIOCRFORMAT _IOWR('d', 105, struct format_op) X! #define DIOCWFORMAT _IOWR('d', 106, struct format_op) X X! #define DIOCSSTEP _IOW('d', 107, int) /* set step rate */ X! #define DIOCSRETRIES _IOW('d', 108, int) /* set # of retries */ X! #define DIOCWLABEL _IOW('d', 109, int) /* write en/disable label */ X X! #define DIOCSBAD _IOW('d', 110, struct dkbad) /* set kernel dkbad */ X X #ifndef KERNEL X struct disklabel *getdiskbyname(); X*** ./usr/src/sys/h/ioctl.h.orig Fri Mar 28 18:04:34 1997 X--- ./usr/src/sys/h/ioctl.h Tue Jan 7 21:50:32 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ioctl.h 1.4 (2.11BSD GTE) 1997/3/28 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ioctl.h 1.5 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 93,109 **** X #define IOC_INOUT (IOC_IN|IOC_OUT) X /* the 0x20000000 is so we can distinguish new ioctl's from old */ X #ifdef KERNEL X! #define _IO(x,y) (('x'<<8)|y) X! #define _IOR(x,y,t) (('x'<<8)|y) X! #define _IOW(x,y,t) (('x'<<8)|y) X /* this should be _IORW, but stdio got there first */ X! #define _IOWR(x,y,t) (('x'<<8)|y) X #else X! #define _IO(x,y) (IOC_VOID|('x'<<8)|y) X! #define _IOR(x,y,t) (IOC_OUT|((long)(sizeof(t)&IOCPARM_MASK)<<16)|('x'<<8)|y) X! #define _IOW(x,y,t) (IOC_IN|((long)(sizeof(t)&IOCPARM_MASK)<<16)|('x'<<8)|y) X /* this should be _IORW, but stdio got there first */ X! #define _IOWR(x,y,t) (IOC_INOUT|((long)(sizeof(t)&IOCPARM_MASK)<<16)|('x'<<8)|y) X #endif X #endif X X--- 93,109 ---- X #define IOC_INOUT (IOC_IN|IOC_OUT) X /* the 0x20000000 is so we can distinguish new ioctl's from old */ X #ifdef KERNEL X! #define _IO(x,y) ((x<<8)|y) X! #define _IOR(x,y,t) ((x<<8)|y) X! #define _IOW(x,y,t) ((x<<8)|y) X /* this should be _IORW, but stdio got there first */ X! #define _IOWR(x,y,t) ((x<<8)|y) X #else X! #define _IO(x,y) (IOC_VOID|(x<<8)|y) X! #define _IOR(x,y,t) (IOC_OUT|((long)(sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) X! #define _IOW(x,y,t) (IOC_IN|((long)(sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) X /* this should be _IORW, but stdio got there first */ X! #define _IOWR(x,y,t) (IOC_INOUT|((long)(sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) X #endif X #endif X X*************** X*** 110,120 **** X /* X * tty ioctl commands X */ X! #define TIOCGETD _IOR(t, 0, int) /* get line discipline */ X! #define TIOCSETD _IOW(t, 1, int) /* set line discipline */ X! #define TIOCHPCL _IO(t, 2) /* hang up on last close */ X! #define TIOCMODG _IOR(t, 3, int) /* get modem control state */ X! #define TIOCMODS _IOW(t, 4, int) /* set modem control state */ X #define TIOCM_LE 0001 /* line enable */ X #define TIOCM_DTR 0002 /* data terminal ready */ X #define TIOCM_RTS 0004 /* request to send */ X--- 110,120 ---- X /* X * tty ioctl commands X */ X! #define TIOCGETD _IOR('t', 0, int) /* get line discipline */ X! #define TIOCSETD _IOW('t', 1, int) /* set line discipline */ X! #define TIOCHPCL _IO('t', 2) /* hang up on last close */ X! #define TIOCMODG _IOR('t', 3, int) /* get modem control state */ X! #define TIOCMODS _IOW('t', 4, int) /* set modem control state */ X #define TIOCM_LE 0001 /* line enable */ X #define TIOCM_DTR 0002 /* data terminal ready */ X #define TIOCM_RTS 0004 /* request to send */ X*************** X*** 126,139 **** X #define TIOCM_RNG 0200 /* ring */ X #define TIOCM_RI TIOCM_RNG X #define TIOCM_DSR 0400 /* data set ready */ X! #define TIOCGETP _IOR(t, 8,struct sgttyb)/* get parameters -- gtty */ X! #define TIOCSETP _IOW(t, 9,struct sgttyb)/* set parameters -- stty */ X! #define TIOCSETN _IOW(t,10,struct sgttyb)/* as above, but no flushtty */ X! #define TIOCEXCL _IO(t, 13) /* set exclusive use of tty */ X! #define TIOCNXCL _IO(t, 14) /* reset exclusive use of tty */ X! #define TIOCFLUSH _IOW(t, 16, int) /* flush buffers */ X! #define TIOCSETC _IOW(t,17,struct tchars)/* set special characters */ X! #define TIOCGETC _IOR(t,18,struct tchars)/* get special characters */ X #define TANDEM 0x00000001 /* send stopc on out q full */ X #define CBREAK 0x00000002 /* half-cooked mode */ X /* 0x4 (old LCASE) */ X--- 126,139 ---- X #define TIOCM_RNG 0200 /* ring */ X #define TIOCM_RI TIOCM_RNG X #define TIOCM_DSR 0400 /* data set ready */ X! #define TIOCGETP _IOR('t', 8,struct sgttyb)/* get parameters -- gtty */ X! #define TIOCSETP _IOW('t', 9,struct sgttyb)/* set parameters -- stty */ X! #define TIOCSETN _IOW('t',10,struct sgttyb)/* as above, but no flushtty */ X! #define TIOCEXCL _IO('t', 13) /* set exclusive use of tty */ X! #define TIOCNXCL _IO('t', 14) /* reset exclusive use of tty */ X! #define TIOCFLUSH _IOW('t', 16, int) /* flush buffers */ X! #define TIOCSETC _IOW('t',17,struct tchars)/* set special characters */ X! #define TIOCGETC _IOR('t',18,struct tchars)/* get special characters */ X #define TANDEM 0x00000001 /* send stopc on out q full */ X #define CBREAK 0x00000002 /* half-cooked mode */ X /* 0x4 (old LCASE) */ X*************** X*** 168,177 **** X #define DECCTQ 0x40000000 /* only ^Q starts after ^S */ X #define NOFLSH 0x80000000 /* no output flush on signal */ X /* locals, from 127 down */ X! #define TIOCLBIS _IOW(t, 127, int) /* bis local mode bits */ X! #define TIOCLBIC _IOW(t, 126, int) /* bic local mode bits */ X! #define TIOCLSET _IOW(t, 125, int) /* set entire local mode word */ X! #define TIOCLGET _IOR(t, 124, int) /* get local modes */ X #define LCRTBS ((int)(CRTBS>>16)) X #define LPRTERA ((int)(PRTERA>>16)) X #define LCRTERA ((int)(CRTERA>>16)) X--- 168,177 ---- X #define DECCTQ 0x40000000 /* only ^Q starts after ^S */ X #define NOFLSH 0x80000000 /* no output flush on signal */ X /* locals, from 127 down */ X! #define TIOCLBIS _IOW('t', 127, int) /* bis local mode bits */ X! #define TIOCLBIC _IOW('t', 126, int) /* bic local mode bits */ X! #define TIOCLSET _IOW('t', 125, int) /* set entire local mode word */ X! #define TIOCLGET _IOR('t', 124, int) /* get local modes */ X #define LCRTBS ((int)(CRTBS>>16)) X #define LPRTERA ((int)(PRTERA>>16)) X #define LCRTERA ((int)(CRTERA>>16)) X*************** X*** 187,204 **** X #define LPENDIN ((int)(PENDIN>>16)) X #define LDECCTQ ((int)(DECCTQ>>16)) X #define LNOFLSH ((int)(NOFLSH>>16)) X! #define TIOCSBRK _IO(t, 123) /* set break bit */ X! #define TIOCCBRK _IO(t, 122) /* clear break bit */ X! #define TIOCSDTR _IO(t, 121) /* set data terminal ready */ X! #define TIOCCDTR _IO(t, 120) /* clear data terminal ready */ X! #define TIOCGPGRP _IOR(t, 119, int) /* get pgrp of tty */ X! #define TIOCSPGRP _IOW(t, 118, int) /* set pgrp of tty */ X! #define TIOCSLTC _IOW(t,117,struct ltchars)/* set local special chars */ X! #define TIOCGLTC _IOR(t,116,struct ltchars)/* get local special chars */ X! #define TIOCOUTQ _IOR(t, 115, int) /* output queue size */ X! #define TIOCSTI _IOW(t, 114, char) /* simulate terminal input */ X! #define TIOCNOTTY _IO(t, 113) /* void tty association */ X! #define TIOCPKT _IOW(t, 112, int) /* pty: set/clear packet mode */ X #define TIOCPKT_DATA 0x00 /* data packet */ X #define TIOCPKT_FLUSHREAD 0x01 /* flush packet */ X #define TIOCPKT_FLUSHWRITE 0x02 /* flush packet */ X--- 187,204 ---- X #define LPENDIN ((int)(PENDIN>>16)) X #define LDECCTQ ((int)(DECCTQ>>16)) X #define LNOFLSH ((int)(NOFLSH>>16)) X! #define TIOCSBRK _IO('t', 123) /* set break bit */ X! #define TIOCCBRK _IO('t', 122) /* clear break bit */ X! #define TIOCSDTR _IO('t', 121) /* set data terminal ready */ X! #define TIOCCDTR _IO('t', 120) /* clear data terminal ready */ X! #define TIOCGPGRP _IOR('t', 119, int) /* get pgrp of tty */ X! #define TIOCSPGRP _IOW('t', 118, int) /* set pgrp of tty */ X! #define TIOCSLTC _IOW('t',117,struct ltchars)/* set local special chars */ X! #define TIOCGLTC _IOR('t',116,struct ltchars)/* get local special chars */ X! #define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ X! #define TIOCSTI _IOW('t', 114, char) /* simulate terminal input */ X! #define TIOCNOTTY _IO('t', 113) /* void tty association */ X! #define TIOCPKT _IOW('t', 112, int) /* pty: set/clear packet mode */ X #define TIOCPKT_DATA 0x00 /* data packet */ X #define TIOCPKT_FLUSHREAD 0x01 /* flush packet */ X #define TIOCPKT_FLUSHWRITE 0x02 /* flush packet */ X*************** X*** 206,222 **** X #define TIOCPKT_START 0x08 /* start output */ X #define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */ X #define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */ X! #define TIOCSTOP _IO(t, 111) /* stop output, like ^S */ X! #define TIOCSTART _IO(t, 110) /* start output, like ^Q */ X! #define TIOCMSET _IOW(t, 109, int) /* set all modem bits */ X! #define TIOCMBIS _IOW(t, 108, int) /* bis modem bits */ X! #define TIOCMBIC _IOW(t, 107, int) /* bic modem bits */ X! #define TIOCMGET _IOR(t, 106, int) /* get all modem bits */ X! #define TIOCREMOTE _IOW(t, 105, int) /* remote input editing */ X! #define TIOCGWINSZ _IOR(t, 104, struct winsize) /* get window size */ X! #define TIOCSWINSZ _IOW(t, 103, struct winsize) /* set window size */ X! #define TIOCUCNTL _IOW(t, 102, int) /* pty: set/clr usr cntl mode */ X! #define UIOCCMD(n) _IO(u, n) /* usr cntl op "n" */ X X #define OTTYDISC 0 /* old, v7 std tty driver */ X #define NETLDISC 1 /* line discip for berk net */ X--- 206,222 ---- X #define TIOCPKT_START 0x08 /* start output */ X #define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */ X #define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */ X! #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ X! #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ X! #define TIOCMSET _IOW('t', 109, int) /* set all modem bits */ X! #define TIOCMBIS _IOW('t', 108, int) /* bis modem bits */ X! #define TIOCMBIC _IOW('t', 107, int) /* bic modem bits */ X! #define TIOCMGET _IOR('t', 106, int) /* get all modem bits */ X! #define TIOCREMOTE _IOW('t', 105, int) /* remote input editing */ X! #define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */ X! #define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */ X! #define TIOCUCNTL _IOW('t', 102, int) /* pty: set/clr usr cntl mode */ X! #define UIOCCMD(n) _IO('u', n) /* usr cntl op "n" */ X X #define OTTYDISC 0 /* old, v7 std tty driver */ X #define NETLDISC 1 /* line discip for berk net */ X*************** X*** 224,267 **** X #define TABLDISC 3 /* tablet discipline */ X #define SLIPDISC 4 /* serial IP discipline */ X X! #define FIOCLEX _IO(f, 1) /* set exclusive use on fd */ X! #define FIONCLEX _IO(f, 2) /* remove exclusive use */ X /* another local */ X /* should use off_t for FIONREAD but that would require types.h */ X! #define FIONREAD _IOR(f, 127, long) /* get # bytes to read */ X! #define FIONBIO _IOW(f, 126, int) /* set/clear non-blocking i/o */ X! #define FIOASYNC _IOW(f, 125, int) /* set/clear async i/o */ X! #define FIOSETOWN _IOW(f, 124, int) /* set owner */ X! #define FIOGETOWN _IOR(f, 123, int) /* get owner */ X X /* socket i/o controls */ X! #define SIOCSHIWAT _IOW(s, 0, int) /* set high watermark */ X! #define SIOCGHIWAT _IOR(s, 1, int) /* get high watermark */ X! #define SIOCSLOWAT _IOW(s, 2, int) /* set low watermark */ X! #define SIOCGLOWAT _IOR(s, 3, int) /* get low watermark */ X! #define SIOCATMARK _IOR(s, 7, int) /* at oob mark? */ X! #define SIOCSPGRP _IOW(s, 8, int) /* set process group */ X! #define SIOCGPGRP _IOR(s, 9, int) /* get process group */ X X! #define SIOCADDRT _IOW(r, 10, struct rtentry) /* add route */ X! #define SIOCDELRT _IOW(r, 11, struct rtentry) /* delete route */ X X! #define SIOCSIFADDR _IOW(i, 12, struct ifreq) /* set ifnet address */ X! #define SIOCGIFADDR _IOWR(i,13, struct ifreq) /* get ifnet address */ X! #define SIOCSIFDSTADDR _IOW(i, 14, struct ifreq) /* set p-p address */ X! #define SIOCGIFDSTADDR _IOWR(i,15, struct ifreq) /* get p-p address */ X! #define SIOCSIFFLAGS _IOW(i, 16, struct ifreq) /* set ifnet flags */ X! #define SIOCGIFFLAGS _IOWR(i,17, struct ifreq) /* get ifnet flags */ X! #define SIOCGIFBRDADDR _IOWR(i,18, struct ifreq) /* get broadcast addr */ X! #define SIOCSIFBRDADDR _IOW(i,19, struct ifreq) /* set broadcast addr */ X! #define SIOCGIFCONF _IOWR(i,20, struct ifconf) /* get ifnet list */ X! #define SIOCGIFNETMASK _IOWR(i,21, struct ifreq) /* get net addr mask */ X! #define SIOCSIFNETMASK _IOW(i,22, struct ifreq) /* set net addr mask */ X! #define SIOCGIFMETRIC _IOWR(i,23, struct ifreq) /* get IF metric */ X! #define SIOCSIFMETRIC _IOW(i,24, struct ifreq) /* set IF metric */ X X! #define SIOCSARP _IOW(i, 30, struct arpreq) /* set arp entry */ X! #define SIOCGARP _IOWR(i,31, struct arpreq) /* get arp entry */ X! #define SIOCDARP _IOW(i, 32, struct arpreq) /* delete arp entry */ X X #endif X--- 224,267 ---- X #define TABLDISC 3 /* tablet discipline */ X #define SLIPDISC 4 /* serial IP discipline */ X X! #define FIOCLEX _IO('f', 1) /* set exclusive use on fd */ X! #define FIONCLEX _IO('f', 2) /* remove exclusive use */ X /* another local */ X /* should use off_t for FIONREAD but that would require types.h */ X! #define FIONREAD _IOR('f', 127, long) /* get # bytes to read */ X! #define FIONBIO _IOW('f', 126, int) /* set/clear non-blocking i/o */ X! #define FIOASYNC _IOW('f', 125, int) /* set/clear async i/o */ X! #define FIOSETOWN _IOW('f', 124, int) /* set owner */ X! #define FIOGETOWN _IOR('f', 123, int) /* get owner */ X X /* socket i/o controls */ X! #define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */ X! #define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */ X! #define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */ X! #define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */ X! #define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */ X! #define SIOCSPGRP _IOW('s', 8, int) /* set process group */ X! #define SIOCGPGRP _IOR('s', 9, int) /* get process group */ X X! #define SIOCADDRT _IOW('r', 10, struct rtentry) /* add route */ X! #define SIOCDELRT _IOW('r', 11, struct rtentry) /* delete route */ X X! #define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */ X! #define SIOCGIFADDR _IOWR('i',13, struct ifreq) /* get ifnet address */ X! #define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */ X! #define SIOCGIFDSTADDR _IOWR('i',15, struct ifreq) /* get p-p address */ X! #define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */ X! #define SIOCGIFFLAGS _IOWR('i',17, struct ifreq) /* get ifnet flags */ X! #define SIOCGIFBRDADDR _IOWR('i',18, struct ifreq) /* get broadcast addr */ X! #define SIOCSIFBRDADDR _IOW('i',19, struct ifreq) /* set broadcast addr */ X! #define SIOCGIFCONF _IOWR('i',20, struct ifconf) /* get ifnet list */ X! #define SIOCGIFNETMASK _IOWR('i',21, struct ifreq) /* get net addr mask */ X! #define SIOCSIFNETMASK _IOW('i',22, struct ifreq) /* set net addr mask */ X! #define SIOCGIFMETRIC _IOWR('i',23, struct ifreq) /* get IF metric */ X! #define SIOCSIFMETRIC _IOW('i',24, struct ifreq) /* set IF metric */ X X! #define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */ X! #define SIOCGARP _IOWR('i',31, struct arpreq) /* get arp entry */ X! #define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */ X X #endif X*** ./usr/src/sys/h/mtio.h.orig Sat Mar 7 20:11:41 1998 X--- ./usr/src/sys/h/mtio.h Tue Jan 7 21:50:57 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mtio.h 7.1.2 (2.11BSD) 1998/3/7 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mtio.h 7.2 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 69,78 **** X #define MTF_WRITTEN 0x10 /* Tape has been written */ X X /* mag tape io control commands */ X! #define MTIOCTOP _IOW(m, 1, struct mtop) /* do a mag tape op */ X! #define MTIOCGET _IOR(m, 2, struct mtget) /* get tape status */ X! #define MTIOCIEOT _IO(m, 3) /* ignore EOT error */ X! #define MTIOCEEOT _IO(m, 4) /* enable EOT error */ X X #ifndef KERNEL X #define DEFTAPE "/dev/rmt8" X--- 69,78 ---- X #define MTF_WRITTEN 0x10 /* Tape has been written */ X X /* mag tape io control commands */ X! #define MTIOCTOP _IOW('m', 1, struct mtop) /* do a mag tape op */ X! #define MTIOCGET _IOR('m', 2, struct mtget) /* get tape status */ X! #define MTIOCIEOT _IO('m', 3) /* ignore EOT error */ X! #define MTIOCEEOT _IO('m', 4) /* enable EOT error */ X X #ifndef KERNEL X #define DEFTAPE "/dev/rmt8" X*** ./usr/src/sys/h/tablet.h.orig Sat May 16 13:29:27 1987 X--- ./usr/src/sys/h/tablet.h Tue Jan 7 21:51:13 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)tablet.h 7.1 (Berkeley) 6/4/86 X */ X X #ifndef _TABLET_ X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)tablet.h 7.2 (2.11BSD) 2020/1/7 X */ X X #ifndef _TABLET_ X*************** X*** 47,54 **** X char p_key; /* calculator input keyboard */ X }; X X! #define BIOSMODE _IOW(b, 1, int) /* set mode bit(s) */ X! #define BIOGMODE _IOR(b, 2, int) /* get mode bit(s) */ X #define TBMODE 0xfff0 /* mode bits: */ X #define TBPOINT 0x0010 /* single point */ X #define TBRUN 0x0000 /* runs contin. */ X--- 47,54 ---- X char p_key; /* calculator input keyboard */ X }; X X! #define BIOSMODE _IOW('b', 1, int) /* set mode bit(s) */ X! #define BIOGMODE _IOR('b', 2, int) /* get mode bit(s) */ X #define TBMODE 0xfff0 /* mode bits: */ X #define TBPOINT 0x0010 /* single point */ X #define TBRUN 0x0000 /* runs contin. */ X*************** X*** 62,67 **** X #define TBPOL 0x0004 /* polhemus 3space */ X #define TBHDG 0x0005 /* hdg-1111b, low res */ X #define TBHDGHIRES 0x0006 /* hdg-1111b, high res */ X! #define BIOSTYPE _IOW(b, 3, int) /* set tablet type */ X! #define BIOGTYPE _IOR(b, 4, int) /* get tablet type*/ X #endif X--- 62,67 ---- X #define TBPOL 0x0004 /* polhemus 3space */ X #define TBHDG 0x0005 /* hdg-1111b, low res */ X #define TBHDGHIRES 0x0006 /* hdg-1111b, high res */ X! #define BIOSTYPE _IOW('b', 3, int) /* set tablet type */ X! #define BIOGTYPE _IOR('b', 4, int) /* get tablet type*/ X #endif X*** ./usr/src/sys/h/ttychars.h.orig Mon Apr 21 22:21:57 1997 X--- ./usr/src/sys/h/ttychars.h Tue Jan 7 21:51:24 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ttychars.h 7.2 (2.11BSD) 1997/4/15 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ttychars.h 7.3 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 29,52 **** X char tc_lnextc; /* literal next character */ X }; X X! #define CTRL(c) ('c'&037) X #define _POSIX_VDISABLE ((unsigned char)'\377') X #define CCEQ(val,c) (c == val ? val != _POSIX_VDISABLE : 0) X X /* default special characters */ X #define CERASE 0177 X! #define CKILL CTRL(u) X! #define CINTR CTRL(c) X #define CQUIT 034 /* FS, ^\ */ X! #define CSTART CTRL(q) X! #define CSTOP CTRL(s) X! #define CEOF CTRL(d) X #define CEOT CEOF X #define CBRK _POSIX_VDISABLE X! #define CSUSP CTRL(z) X! #define CDSUSP CTRL(y) X! #define CRPRNT CTRL(r) X! #define CFLUSH CTRL(o) X! #define CWERASE CTRL(w) X! #define CLNEXT CTRL(v) X #endif /* _TTYCHARS_ */ X--- 29,52 ---- X char tc_lnextc; /* literal next character */ X }; X X! #define CTRL(c) (c&037) X #define _POSIX_VDISABLE ((unsigned char)'\377') X #define CCEQ(val,c) (c == val ? val != _POSIX_VDISABLE : 0) X X /* default special characters */ X #define CERASE 0177 X! #define CKILL CTRL('u') X! #define CINTR CTRL('c') X #define CQUIT 034 /* FS, ^\ */ X! #define CSTART CTRL('q') X! #define CSTOP CTRL('s') X! #define CEOF CTRL('d') X #define CEOT CEOF X #define CBRK _POSIX_VDISABLE X! #define CSUSP CTRL('z') X! #define CDSUSP CTRL('y') X! #define CRPRNT CTRL('r') X! #define CFLUSH CTRL('o') X! #define CWERASE CTRL('w') X! #define CLNEXT CTRL('v') X #endif /* _TTYCHARS_ */ X*** ./usr/src/sys/h/ttydefaults.h.orig Tue Apr 15 22:54:18 1997 X--- ./usr/src/sys/h/ttydefaults.h Tue Jan 7 21:51:45 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ttydefaults.h 1.2 (2.11BSD) 1997/4/15 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ttydefaults.h 1.3 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 12,37 **** X #ifndef _TTYDEFAULTS_ X #define _TTYDEFAULTS_ X X! #define CTRL(x) ('x'&037) X /* X * Control Character Defaults X */ X! #define CEOF CTRL(d) X #define CEOL _POSIX_VDISABLE X! #define CERASE CTRL(h) X! #define CINTR CTRL(c) X! #define CKILL CTRL(u) X #define CMIN 1 X #define CQUIT 034 /* FS, ^\ */ X! #define CSUSP CTRL(z) X #define CTIME 1 X! #define CDSUSP CTRL(y) X! #define CSTART CTRL(q) X! #define CSTOP CTRL(s) X! #define CLNEXT CTRL(v) X! #define CFLUSHO CTRL(o) X! #define CWERASE CTRL(w) X! #define CREPRINT CTRL(r) X #define CQUOTE '\\' X #define CEOT CEOF X X--- 12,37 ---- X #ifndef _TTYDEFAULTS_ X #define _TTYDEFAULTS_ X X! #define CTRL(x) (x&037) X /* X * Control Character Defaults X */ X! #define CEOF CTRL('d') X #define CEOL _POSIX_VDISABLE X! #define CERASE CTRL('h') X! #define CINTR CTRL('c') X! #define CKILL CTRL('u') X #define CMIN 1 X #define CQUIT 034 /* FS, ^\ */ X! #define CSUSP CTRL('z') X #define CTIME 1 X! #define CDSUSP CTRL('y') X! #define CSTART CTRL('q') X! #define CSTOP CTRL('s') X! #define CLNEXT CTRL('v') X! #define CFLUSHO CTRL('o') X! #define CWERASE CTRL('w') X! #define CREPRINT CTRL('r') X #define CQUOTE '\\' X #define CEOT CEOF X X*** ./usr/src/sys/h/vcmd.h.orig Tue Aug 11 13:28:42 1987 X--- ./usr/src/sys/h/vcmd.h Tue Jan 7 21:52:03 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)vcmd.h 7.1 (Berkeley) 6/4/86 X */ X X #ifndef _IOCTL_ X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)vcmd.h 7.2 (2.11BSD) 2020/1/7 X */ X X #ifndef _IOCTL_ X*************** X*** 18,22 **** X #define VPLOT 0200 X #define VPRINTPLOT 0400 X X! #define VGETSTATE _IOR(v, 0, int) X! #define VSETSTATE _IOW(v, 1, int) X--- 18,22 ---- X #define VPLOT 0200 X #define VPRINTPLOT 0400 X X! #define VGETSTATE _IOR('v', 0, int) X! #define VSETSTATE _IOW('v', 1, int) X*** ./usr/src/sys/netinet/tcp_debug.c.orig Wed Oct 11 21:47:26 1995 X--- ./usr/src/sys/netinet/tcp_debug.c Tue Jan 7 21:52:17 2020 X*************** X*** 9,15 **** X * software without specific prior written permission. This software X * is provided ``as is'' without express or implied warranty. X * X! * @(#)tcp_debug.c 7.2.1 (2.11BSD) 1995/10/11 X */ X X #ifdef TCPDEBUG X--- 9,15 ---- X * software without specific prior written permission. This software X * is provided ``as is'' without express or implied warranty. X * X! * @(#)tcp_debug.c 7.3 (2.11BSD) 2020/1/7 X */ X X #ifdef TCPDEBUG X*************** X*** 110,116 **** X if (flags) { X #ifndef lint X char *cp = "<"; X! #define pf(f) { if (ti->ti_flags&TH_/**/f) { printf("%s%s", cp, "f"); cp = ","; } } X pf(SYN); pf(ACK); pf(FIN); pf(RST); pf(PUSH); pf(URG); X #endif X printf(">"); X--- 110,116 ---- X if (flags) { X #ifndef lint X char *cp = "<"; X! #define pf(f) { if (ti->ti_flags&TH_ ## f) { printf("%s%s", cp, "f"); cp = ","; } } X pf(SYN); pf(ACK); pf(FIN); pf(RST); pf(PUSH); pf(URG); X #endif X printf(">"); X*** ./usr/src/sys/netns/spp_debug.c.orig Thu Apr 28 18:33:54 1988 X--- ./usr/src/sys/netns/spp_debug.c Tue Jan 7 21:52:44 2020 X*************** X*** 9,15 **** X * software without specific prior written permission. This software X * is provided ``as is'' without express or implied warranty. X * X! * @(#)spp_debug.c 7.4 (Berkeley) 3/12/88 X */ X X #include "param.h" X--- 9,15 ---- X * software without specific prior written permission. This software X * is provided ``as is'' without express or implied warranty. X * X! * @(#)spp_debug.c 7.5 (2.11BSD) 2020/1/7 X */ X X #include "param.h" X*************** X*** 108,114 **** X if (flags) { X char *cp = "<"; X #ifndef lint X! #define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } } X pf(SP); pf(SA); pf(OB); pf(EM); X #else X cp = cp; X--- 108,114 ---- X if (flags) { X char *cp = "<"; X #ifndef lint X! #define pf(f) { if (flags&SP_ ## f) { printf("%s%s", cp, "f"); cp = ","; } } X pf(SP); pf(SA); pf(OB); pf(EM); X #else X cp = cp; X*************** X*** 116,122 **** X printf(">"); X } X #ifndef lint X! #define p2(f) { printf("%s = %x, ", "f", si->si_/**/f); } X p2(sid);p2(did);p2(dt);p2(pt); X #endif X ns_printhost(&si->si_sna); X--- 116,122 ---- X printf(">"); X } X #ifndef lint X! #define p2(f) { printf("%s = %x, ", "f", si->si_ ## f); } X p2(sid);p2(did);p2(dt);p2(pt); X #endif X ns_printhost(&si->si_sna); X*************** X*** 141,147 **** X if (sp == 0) X return; X #ifndef lint X! #define p3(f) { printf("%s = %x, ", "f", sp->s_/**/f); } X printf("\t"); p3(rack);p3(ralo);p3(smax);p3(flags); printf("\n"); X #endif X #endif X--- 141,147 ---- X if (sp == 0) X return; X #ifndef lint X! #define p3(f) { printf("%s = %x, ", "f", sp->s_ ## f); } X printf("\t"); p3(rack);p3(ralo);p3(smax);p3(flags); printf("\n"); X #endif X #endif X*** ./usr/src/sys/pdp/DEFS.h.orig Sat Dec 26 19:30:48 1992 X--- ./usr/src/sys/pdp/DEFS.h Tue Jan 7 22:01:59 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)DEFS.h 1.2 (2.11BSD GTE) 12/24/92 X */ X X #ifndef _DEFS_ X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)DEFS.h 1.3 (2.11BSD) 2020/1/7 X */ X X #ifndef _DEFS_ X*************** X*** 59,69 **** X #endif X X X! #define CONST(s, x, v) DEC_/**/s(x); x=v; X! #define INT(s, x, v) .data; .even; DEC_/**/s(x); x:; v; .text; X! #define CHAR(s, x, v) .data; DEC_/**/s(x); x:; .byte v; .text; X! #define STRING(s, x, v) .data; DEC_/**/s(x); x:; v; .text; X! #define SPACE(s, x, n) .bss; .even; DEC_/**/s(x); x:; .=.+[n]; .text; X X #define DEC_GLOBAL(x) .globl x; X #define DEC_LOCAL(x) X--- 59,69 ---- X #endif X X X! #define CONST(s, x, v) DEC_ ## s(x); x=v; X! #define INT(s, x, v) .data; .even; DEC_ ## s(x); x:; v; .text; X! #define CHAR(s, x, v) .data; DEC_ ## s(x); x:; .byte v; .text; X! #define STRING(s, x, v) .data; DEC_ ## s(x); x:; v; .text; X! #define SPACE(s, x, n) .bss; .even; DEC_ ## s(x); x:; .=.+[n]; .text; X X #define DEC_GLOBAL(x) .globl x; X #define DEC_LOCAL(x) X*************** X*** 72,81 **** X * Macros for compatibility with standard library routines that we have X * copies of ... X */ X! #define ENTRY(x) .globl _/**/x; _/**/x:; X #define ASENTRY(x) .globl x; x:; X X! #define P_ENTRY(x) .globl _/**/x; _/**/x:; PROFCODE; X #define P_ASENTRY(x) .globl x; x:; PROFCODE; X X /* X--- 72,81 ---- X * Macros for compatibility with standard library routines that we have X * copies of ... X */ X! #define ENTRY(x) .globl _ ## x; _ ## x:; X #define ASENTRY(x) .globl x; x:; X X! #define P_ENTRY(x) .globl _ ## x; _ ## x:; PROFCODE; X #define P_ASENTRY(x) .globl x; x:; PROFCODE; X X /* X*** ./usr/src/sys/pdp/mch_copy.s.orig Sun Jan 9 16:01:39 1994 X--- ./usr/src/sys/pdp/mch_copy.s Tue Jan 7 22:02:14 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_copy.s 1.3 (2.11BSD GTE) 1/9/94 X */ X X #include "DEFS.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_copy.s 1.4 (2.11BSD) 2020/1/7 X */ X X #include "DEFS.h" X*************** X*** 468,474 **** X tst 16(sp) / does the caller want the copy length? X beq 6f X sub 12(sp),r2 / yes, figure out how much we copied: X! mov r2,*16(sp) / *lencopied = r2 {toaddr'} - toaddr X 6: X mov (sp)+,nofault / restore error trap X mov (sp)+,r3 / restore registers X--- 468,474 ---- X tst 16(sp) / does the caller want the copy length? X beq 6f X sub 12(sp),r2 / yes, figure out how much we copied: X! mov r2,*16(sp) // *lencopied = r2 {toaddr'} - toaddr X 6: X mov (sp)+,nofault / restore error trap X mov (sp)+,r3 / restore registers X*** ./usr/src/sys/pdp/mch_csv.s.orig Thu Dec 24 19:13:31 1992 X--- ./usr/src/sys/pdp/mch_csv.s Tue Jan 7 22:03:12 2020 X*************** X*** 5,11 **** X */ X X #if defined(LIBC_SCCS) && !defined(KERNEL) && !defined(SUPERVISOR) X! <@(#)csv.s 2.4 (2.11BSD GTE) 12/24/92\0> X .even X #endif X X--- 5,11 ---- X */ X X #if defined(LIBC_SCCS) && !defined(KERNEL) && !defined(SUPERVISOR) X! <@(#)csv.s 2.5 (2.11BSD) 2020/1/7\0> X .even X #endif X X*************** X*** 104,111 **** X * branch to ovhndlr which sets the overlay, simulates a csv and transfers to X * (r1) (~foo+4). Thus, the function's call to csv is bypassed. X */ X! #define ovh(x, n) .globl ovhndlr/**/x; \ X! ovhndlr/**/x: \ X mov $n,r0; \ X br ovhndlr; X X--- 104,111 ---- X * branch to ovhndlr which sets the overlay, simulates a csv and transfers to X * (r1) (~foo+4). Thus, the function's call to csv is bypassed. X */ X! #define ovh(x, n) .globl ovhndlr ## x; \ X! ovhndlr ## x: \ X mov $n,r0; \ X br ovhndlr; X X*************** X*** 255,264 **** X #ifdef SUPERVISOR X tst -(r2) / skip over overlay slot X #else X! mov -(r2),r4 / r4 = old __ovno - if non-zero we've started X! bne 2f / using overlays so we'll have to make X! / sure the old overlay is mapped if we're X! / returning to the overlay area X 1: X #endif X mov -(r2),r4 / restore registers, reset stack, pop frame X--- 255,264 ---- X #ifdef SUPERVISOR X tst -(r2) / skip over overlay slot X #else X! mov -(r2),r4 // r4 = old __ovno - if non-zero we've started X! bne 2f // using overlays so we'll have to make X! // sure the old overlay is mapped if we're X! // returning to the overlay area X 1: X #endif X mov -(r2),r4 / restore registers, reset stack, pop frame X*** ./usr/src/sys/pdp/mch_dump.s.orig Thu Dec 24 19:14:48 1992 X--- ./usr/src/sys/pdp/mch_dump.s Tue Jan 7 22:03:27 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_dump.s 1.3 (2.11BSD GTE) 12/24/92 X */ X #include "DEFS.h" X #include "../machine/mch_iopage.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_dump.s 1.4 (2.11BSD) 2020/1/7 X */ X #include "DEFS.h" X #include "../machine/mch_iopage.h" X*************** X*** 88,94 **** X * starting at location 4 (physical) X */ X inc $-1 / check for first time X! bne 1f / if not, don't save registers again X mov r0,300 X mov $302,r0 X mov r1,(r0)+ X--- 88,94 ---- X * starting at location 4 (physical) X */ X inc $-1 / check for first time X! bne 1f // if not, don't save registers again X mov r0,300 X mov $302,r0 X mov r1,(r0)+ X*** ./usr/src/sys/pdp/mch_fpsim.s.orig Fri Oct 11 12:32:49 2019 X--- ./usr/src/sys/pdp/mch_fpsim.s Tue Jan 7 22:04:13 2020 X*************** X*** 17,23 **** X * RIGHTS, APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE X * DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE. X * X! * @(#)mch_fpsim.s 1.4 (2.11BSD) 2019/10/11 X */ X #include "DEFS.h" X X--- 17,23 ---- X * RIGHTS, APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE X * DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE. X * X! * @(#)mch_fpsim.s 1.5 (2.11BSD) 2020/1/7 X */ X #include "DEFS.h" X X*************** X*** 252,258 **** X mov $SIGILL,r0 X br 2b X segfault: / Segmentation Violation X! mov uar0,r0 / Don't update any registers, but X sub $2,2.(r0) / back up the pc to point to the instruction. X mov $SIGSEGV,r0 X br 2b X--- 252,258 ---- X mov $SIGILL,r0 X br 2b X segfault: / Segmentation Violation X! mov uar0,r0 // Don't update any registers, but X sub $2,2.(r0) / back up the pc to point to the instruction. X mov $SIGSEGV,r0 X br 2b X*************** X*** 571,577 **** X mov PS,-(sp) X SPLHIGH X mov nofault,-(sp) X! mov $ferr2,nofault /stack isn't in I space, so just bomb out. X mfpi (r1) X mov (sp)+,r0 X br 2f X--- 571,577 ---- X mov PS,-(sp) X SPLHIGH X mov nofault,-(sp) X! mov $ferr2,nofault //stack isn't in I space, so just bomb out. X mfpi (r1) X mov (sp)+,r0 X br 2f X*************** X*** 696,702 **** X rts pc X /this could be real easy, except that the lousy tstx instruction X / does the fiuv trap AFTER execution, not before. So, since X! / normally this instruction doesn't get done until after the rts pc, X / we explicitly do it here. X 2: X bit $2,local(r5) X--- 696,702 ---- X rts pc X /this could be real easy, except that the lousy tstx instruction X / does the fiuv trap AFTER execution, not before. So, since X! // normally this instruction doesn't get done until after the rts pc, X / we explicitly do it here. X 2: X bit $2,local(r5) X*************** X*** 823,829 **** X mov (r2)+,(r3)+ X mov (r2)+,(r3)+ X 2: X! jmp ret / does not set cc's X X i.cmpx: X mov $areg,r4; add r5,r4 X--- 823,829 ---- X mov (r2)+,(r3)+ X mov (r2)+,(r3)+ X 2: X! jmp ret // does not set cc's X X i.cmpx: X mov $areg,r4; add r5,r4 X*** ./usr/src/sys/pdp/mch_start.s.orig Mon Aug 23 21:16:05 1993 X--- ./usr/src/sys/pdp/mch_start.s Tue Jan 7 22:04:30 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_start.s 1.4 (2.11BSD GTE) 8/23/93 X */ X X #include "DEFS.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_start.s 1.5 (2.11BSD) 2020/1/7 X */ X X #include "DEFS.h" X*************** X*** 73,79 **** X 1: X clr r0 / r0:r1 = (long)r1 X div $10.,r0 / r0 = r0:r1 / 10; r1 = r0:r1 % 10 X! add $'0,r1 / bias by ASCII '0' X movb r1,-(r2) / and stuff into _initflags X mov r0,r1 / shift quotient and continue X bne 1b / if non-zero X--- 73,79 ---- X 1: X clr r0 / r0:r1 = (long)r1 X div $10.,r0 / r0 = r0:r1 / 10; r1 = r0:r1 % 10 X! add $060,r1 / bias by ASCII '0' X movb r1,-(r2) / and stuff into _initflags X mov r0,r1 / shift quotient and continue X bne 1b / if non-zero X*** ./usr/src/sys/pdp/mch_trap.s.orig Sun Jan 9 16:02:02 1994 X--- ./usr/src/sys/pdp/mch_trap.s Tue Jan 7 22:05:04 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_trap.s 2.2 (2.11BSD GTE) 1/9/94 X */ X #include "DEFS.h" X #include "../machine/mch_iopage.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_trap.s 2.3 (2.11BSD) 2020/1/7 X */ X #include "DEFS.h" X #include "../machine/mch_iopage.h" X*************** X*** 77,89 **** X * _knetisr to schedule network activity at a later time when the X * system IPL is low and things are ``less hectic'' ... X */ X! mov PS,-(sp) / set SPL7 so _knetisr doesn't get X! SPL7 / changed while we're looking at it X! tst _knetisr / if (_knetisr != 0 X beq 2f X! bit $340,20(sp) / && interrupted IPL == 0 X! bne 2f / [shouldn't we check against SPLNET?] X! cmp sp,$_u / && sp > _u (not on interrupt stack)) X blos 2f X #ifdef UCB_METER X inc _cnt+V_SOFT / increment soft interrupt counter, X--- 77,89 ---- X * _knetisr to schedule network activity at a later time when the X * system IPL is low and things are ``less hectic'' ... X */ X! mov PS,-(sp) // set SPL7 so _knetisr doesn't get X! SPL7 // changed while we're looking at it X! tst _knetisr // if (_knetisr != 0 X beq 2f X! bit $340,20(sp) // && interrupted IPL == 0 X! bne 2f // [shouldn't we check against SPLNET?] X! cmp sp,$_u // && sp > _u (not on interrupt stack)) X blos 2f X #ifdef UCB_METER X inc _cnt+V_SOFT / increment soft interrupt counter, X*************** X*** 104,110 **** X */ X bit $20000,10(sp) / previous mode = user?? X beq 4f X! tstb _runrun / yep, is the user's time up? X beq 3f X mov $T_SWITCHTRAP,(sp) / yep, set code to T_SWITCHTRAP X jsr pc,_trap / and give up cpu X--- 104,110 ---- X */ X bit $20000,10(sp) / previous mode = user?? X beq 4f X! tstb _runrun // yep, is the user's time up? X beq 3f X mov $T_SWITCHTRAP,(sp) / yep, set code to T_SWITCHTRAP X jsr pc,_trap / and give up cpu X*************** X*** 112,118 **** X /* X * Trap from user space: toss code and reset user's stack pointer. X */ X! tst (sp)+ / toss code, reset user's sp X mtpd sp / and enter common cleanup code X br 5f X 4: X--- 112,118 ---- X /* X * Trap from user space: toss code and reset user's stack pointer. X */ X! tst (sp)+ // toss code, reset user's sp X mtpd sp / and enter common cleanup code X br 5f X 4: X*************** X*** 181,187 **** X mov r0,-(sp) X cmp -(sp),-(sp) / fake __ovno and nps - not needed X mov r1,-(sp) X! mfpd sp / grab user's sp for argument addresses X tst -(sp) / fake code - not needed X jsr pc,_syscall / call syscall and start cleaning up X tst (sp)+ X--- 181,187 ---- X mov r0,-(sp) X cmp -(sp),-(sp) / fake __ovno and nps - not needed X mov r1,-(sp) X! mfpd sp // grab user's sp for argument addresses X tst -(sp) / fake code - not needed X jsr pc,_syscall / call syscall and start cleaning up X tst (sp)+ X*************** X*** 200,213 **** X */ X ASENTRY(emt) X mov PS,saveps / save PS just in case we need to trap X! bit $20000,PS / if the emt isn't from user mode, X! beq trap2 / or, the process isn't overlaid, X! tst _u+U_OVBASE / or the requested overlay number X! beq trap2 / isn't valid, enter _trap X cmp r0,$NOVL X bhi trap2 X! mov r0,-(sp) / everything's cool, save r0 and r1 X! mov r1,-(sp) / so they don't get trashed X mov r0,_u+U_CUROV / u.u_curov = r0 X mov $RO,-(sp) / map the overlay in read only X #ifdef UCB_METER X--- 200,213 ---- X */ X ASENTRY(emt) X mov PS,saveps / save PS just in case we need to trap X! bit $20000,PS // if the emt isn't from user mode, X! beq trap2 // or, the process isn't overlaid, X! tst _u+U_OVBASE // or the requested overlay number X! beq trap2 // isn't valid, enter _trap X cmp r0,$NOVL X bhi trap2 X! mov r0,-(sp) // everything's cool, save r0 and r1 X! mov r1,-(sp) // so they don't get trashed X mov r0,_u+U_CUROV / u.u_curov = r0 X mov $RO,-(sp) / map the overlay in read only X #ifdef UCB_METER X*************** X*** 216,222 **** X add $1,_u+U_RU+RU_OVLY+2 / u.u_ru.ru_ovly++ X adc _u+U_RU+RU_OVLY X jsr pc,_choverlay / and get choverlay to bring the overlay in X! tst (sp)+ / toss choverlay's paramter, X mov (sp)+,r1 / restore r0 and r1, X mov (sp)+,r0 X rtt / and return from the trap X--- 216,222 ---- X add $1,_u+U_RU+RU_OVLY+2 / u.u_ru.ru_ovly++ X adc _u+U_RU+RU_OVLY X jsr pc,_choverlay / and get choverlay to bring the overlay in X! tst (sp)+ // toss choverlay's paramter, X mov (sp)+,r1 / restore r0 and r1, X mov (sp)+,r0 X rtt / and return from the trap X*************** X*** 231,238 **** X ASENTRY(trap) X mov PS,saveps / save PS for call1 X trap1: X! tst nofault / if someone's already got this trap X! bne catchfault / scoped out, give it to them X /* X * save current values of memory management registers in case we X * want to back up the instruction that failed X--- 231,238 ---- X ASENTRY(trap) X mov PS,saveps / save PS for call1 X trap1: X! tst nofault // if someone's already got this trap X! bne catchfault // scoped out, give it to them X /* X * save current values of memory management registers in case we X * want to back up the instruction that failed X*** ./usr/src/sys/pdp/mch_xxx.s.orig Sun Dec 3 19:01:24 2000 X--- ./usr/src/sys/pdp/mch_xxx.s Tue Jan 7 22:06:33 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_xxx.s 1.6 (2.11BSD) 2000/11/20 X */ X #include "DEFS.h" X #include "../machine/mch_iopage.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)mch_xxx.s 1.7 (2.11BSD) 2020/1/7 X */ X #include "DEFS.h" X #include "../machine/mch_iopage.h" X*************** X*** 27,33 **** X ENTRY(delay) X mov 2(sp),r0 / r0 = hiint(usec) X mov 4(sp),r1 / r1 = loint(usec) X! ashc $1,r0 / sob's ~= 1/2 micro second, X beq 2f / oops, got passed a delay of 0L-leave X tst r1 X /* X--- 27,33 ---- X ENTRY(delay) X mov 2(sp),r0 / r0 = hiint(usec) X mov 4(sp),r1 / r1 = loint(usec) X! ashc $1,r0 // sob's ~= 1/2 micro second, X beq 2f / oops, got passed a delay of 0L-leave X tst r1 X /* X*************** X*** 144,152 **** X ENTRY(resume) X mov 2(sp),r0 / r0 = u X mov 4(sp),r1 / r1 = env X! SPL7 / can't let anything in till we X! / (at least) get a valid stack ... X! mov r0,KDSA6 / map new process' u structure in X #ifdef INET X mov r0,SDSA6 / map supervisor stack area to same X #endif X--- 144,152 ---- X ENTRY(resume) X mov 2(sp),r0 / r0 = u X mov 4(sp),r1 / r1 = env X! SPL7 // can't let anything in till we X! // (at least) get a valid stack ... X! mov r0,KDSA6 // map new process' u structure in X #ifdef INET X mov r0,SDSA6 / map supervisor stack area to same X #endif X*************** X*** 272,278 **** X 1: X movb (r0)+,(r1)+ / move a byte X beq 3f / (done when we cross the null) X! sob r2,1b / and loop as long as there's room X 2: X mov $ENOENT,r0 / ran out of room - indicate failure X br 4f / and exit ... X--- 272,278 ---- X 1: X movb (r0)+,(r1)+ / move a byte X beq 3f / (done when we cross the null) X! sob r2,1b // and loop as long as there's room X 2: X mov $ENOENT,r0 / ran out of room - indicate failure X br 4f / and exit ... X*************** X*** 282,288 **** X tst 10.(sp) / does the caller want the copy length? X beq 5f X sub 6.(sp),r1 / yes, figure out how much we copied: X! mov r1,*10.(sp) / *lencopied = r1 {toaddr'} - toaddr X 5: X mov (sp)+,r2 / restore registers X rts pc / and return X--- 282,288 ---- X tst 10.(sp) / does the caller want the copy length? X beq 5f X sub 6.(sp),r1 / yes, figure out how much we copied: X! mov r1,*10.(sp) // *lencopied = r1 {toaddr'} - toaddr X 5: X mov (sp)+,r2 / restore registers X rts pc / and return X*** ./usr/src/sys/pdp/net_csv.s.orig Thu Dec 24 19:13:31 1992 X--- ./usr/src/sys/pdp/net_csv.s Tue Jan 7 22:06:59 2020 X*************** X*** 5,11 **** X */ X X #if defined(LIBC_SCCS) && !defined(KERNEL) && !defined(SUPERVISOR) X! <@(#)csv.s 2.4 (2.11BSD GTE) 12/24/92\0> X .even X #endif X X--- 5,11 ---- X */ X X #if defined(LIBC_SCCS) && !defined(KERNEL) && !defined(SUPERVISOR) X! <@(#)csv.s 2.5 (2.11BSD) 2020/1/7\0> X .even X #endif X X*************** X*** 104,111 **** X * branch to ovhndlr which sets the overlay, simulates a csv and transfers to X * (r1) (~foo+4). Thus, the function's call to csv is bypassed. X */ X! #define ovh(x, n) .globl ovhndlr/**/x; \ X! ovhndlr/**/x: \ X mov $n,r0; \ X br ovhndlr; X X--- 104,111 ---- X * branch to ovhndlr which sets the overlay, simulates a csv and transfers to X * (r1) (~foo+4). Thus, the function's call to csv is bypassed. X */ X! #define ovh(x, n) .globl ovhndlr ## x; \ X! ovhndlr ## x: \ X mov $n,r0; \ X br ovhndlr; X X*** ./usr/src/sys/pdp/net_scb.s.orig Tue Oct 13 23:03:26 1992 X--- ./usr/src/sys/pdp/net_scb.s Tue Jan 7 22:08:03 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)net_scb.s 1.2 (2.11BSD GTE) 10/13/92 X */ X X #include "acc.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)net_scb.s 1.3 (2.11BSD) 2020/1/7 X */ X X #include "acc.h" X*************** X*** 20,27 **** X * Entry points for interrupt vectors from kernel low-core X */ X X! #define HANDLER(handler) .globl handler, _/**/handler; \ X! handler: jsr r0,call; jmp _/**/handler X X #if NACC > 0 X HANDLER(accrint) X--- 20,27 ---- X * Entry points for interrupt vectors from kernel low-core X */ X X! #define HANDLER(handler) .globl handler, _ ## handler; \ X! handler: jsr r0,call; jmp _ ## handler X X #if NACC > 0 X HANDLER(accrint) X*** ./usr/src/sys/pdp/net_xxx.s.orig Thu Jan 12 22:32:37 1995 X--- ./usr/src/sys/pdp/net_xxx.s Tue Jan 7 22:08:25 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)net_xxx.s 1.3 (2.11BSD GTE) 1/12/95 X */ X X #include "DEFS.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)net_xxx.s 1.4 (2.11BSD) 2020/1/7 X */ X X #include "DEFS.h" X*************** X*** 23,29 **** X ENTRY(delay) X mov 2(sp),r0 / r0 = hiint(usec) X mov 4(sp),r1 / r1 = loint(usec) X! ashc $1,r0 / sob's ~= 1/2 micro second, X beq 2f / oops, got passed a delay of 0L-leave X tst r1 X /* X--- 23,29 ---- X ENTRY(delay) X mov 2(sp),r0 / r0 = hiint(usec) X mov 4(sp),r1 / r1 = loint(usec) X! ashc $1,r0 // sob's ~= 1/2 micro second, X beq 2f / oops, got passed a delay of 0L-leave X tst r1 X /* X*** ./usr/src/sys/pdp/scb.s.orig Fri Jan 1 18:19:56 1993 X--- ./usr/src/sys/pdp/scb.s Tue Jan 7 22:09:38 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)scb.s 1.3 (2.11BSD GTE) 1/1/93 X */ X X #include "DEFS.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)scb.s 1.4 (2.11BSD) 2020/1/7 X */ X X #include "DEFS.h" X*************** X*** 316,323 **** X /* X * Start of locore interrupt entry thunks. X */ X! #define HANDLER(handler) .globl _/**/handler; \ X! handler: jsr r0,call; jmp _/**/handler X X HANDLER(cnrint) /* KL-11, DL-11 */ X HANDLER(cnxint) X--- 316,323 ---- X /* X * Start of locore interrupt entry thunks. X */ X! #define HANDLER(handler) .globl _ ## handler; \ X! handler: jsr r0,call; jmp _ ## handler X X HANDLER(cnrint) /* KL-11, DL-11 */ X HANDLER(cnxint) X*** ./usr/src/sys/pdp/toy.s.orig Fri Apr 21 22:24:58 2000 X--- ./usr/src/sys/pdp/toy.s Tue Jan 7 22:11:16 2020 X*************** X*** 1,5 **** X! / April 9, 2000 - modified to probe for the TOY clock rather than checking X! / the cpu type for 93 or 94. X X / the notes say that the TOY clock uses 24 hour time, but then later on X / mention flags dealing with AM/PM... So, code is present but disabled X--- 1,6 ---- X! // January 7, 2020 - ANSI style comments to go with new cpp X! // April 9, 2000 - modified to probe for the TOY clock rather than checking X! // the cpu type for 93 or 94. X X / the notes say that the TOY clock uses 24 hour time, but then later on X / mention flags dealing with AM/PM... So, code is present but disabled X*************** X*** 8,15 **** X X toy24=0 X X! / extraneous flag bit possible in the day field. this "should never X! / happen", but if it does change the 0 to a 1 below. X X dayflags=0 X X--- 9,16 ---- X X toy24=0 X X! // extraneous flag bit possible in the day field. this "should never X! // happen", but if it does change the 0 to a 1 below. X X dayflags=0 X X*** ./usr/src/sys/pdpif/if_il.c.orig Fri Jan 6 23:40:23 1995 X--- ./usr/src/sys/pdpif/if_il.c Tue Jan 7 22:13:35 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)if_il.c 2.2 (2.11BSD GTE) 1/6/95 X * X * 1/6/95 - sms: start of network data was already computed in sys_net.c, X * it should no longer be done in this driver. Using 'startnet' X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)if_il.c 2.3 (2.11BSD) 2020/1/7 X * X * 1/6/95 - sms: start of network data was already computed in sys_net.c, X * it should no longer be done in this driver. Using 'startnet' X*************** X*** 704,710 **** X register struct il_softc *is = &il_softc[ifp->if_unit]; X int s = splimp(), error = 0; X X! /* printf("\tilioctl new:%X\n", ntohl(IA_SIN(ifa)->sin_addr.s_addr));/**/ X switch (cmd) { X X case SIOCSIFADDR: X--- 704,710 ---- X register struct il_softc *is = &il_softc[ifp->if_unit]; X int s = splimp(), error = 0; X X! /* printf("\tilioctl new:%X\n", ntohl(IA_SIN(ifa)->sin_addr.s_addr));*/ X switch (cmd) { X X case SIOCSIFADDR: X*** ./usr/src/sys/pdpuba/drreg.h.orig Fri Jan 9 03:56:39 1987 X--- ./usr/src/sys/pdpuba/drreg.h Tue Jan 7 22:13:57 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)drreg.h 1.1 (2.10BSD Berkeley) 12/1/86 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)drreg.h 1.2 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 61,78 **** X /* X * Definitions for ioctl calls for DR11-W interface X */ X! #define DRGTTY _IOR(d, 1, struct sg2) /* get dr11 status */ X! #define DRSTTY _IOW(d, 2, struct sg2) /* set flags & function */ X! #define DRSFUN _IOW(d, 3, struct sg1) /* set function */ X! #define DRSFLAG _IOW(d, 4, struct sg1) /* set flags */ X! #define DRGCSR _IOR(d, 5, struct sg2) /* get csr and wcr */ X! #define DRSSIG _IOW(d, 6, struct sg1) /* set sig for ATTN interrupt */ X! #define DRESET _IO(d, 7) /* reset DR11-W interface */ X! #define DRSTIME _IOW(d, 8, struct sg1) /* set timeout */ X! #define DRCTIME _IO(d, 9) /* set timeout inactive */ X! #define DROUTPUT _IOW(d, 10, struct sg1) /* word to output data reg */ X! #define DRINPUT _IOR(d, 11, struct sg1) /* word from input data reg */ X! #define DRITIME _IO(d, 12) /* no set error on timeout */ X X /* X * i_flags definition X--- 61,78 ---- X /* X * Definitions for ioctl calls for DR11-W interface X */ X! #define DRGTTY _IOR('d', 1, struct sg2) /* get dr11 status */ X! #define DRSTTY _IOW('d', 2, struct sg2) /* set flags & function */ X! #define DRSFUN _IOW('d', 3, struct sg1) /* set function */ X! #define DRSFLAG _IOW('d', 4, struct sg1) /* set flags */ X! #define DRGCSR _IOR('d', 5, struct sg2) /* get csr and wcr */ X! #define DRSSIG _IOW('d', 6, struct sg1) /* set sig for ATTN interrupt */ X! #define DRESET _IO('d', 7) /* reset DR11-W interface */ X! #define DRSTIME _IOW('d', 8, struct sg1) /* set timeout */ X! #define DRCTIME _IO('d', 9) /* set timeout inactive */ X! #define DROUTPUT _IOW('d', 10, struct sg1) /* word to output data reg */ X! #define DRINPUT _IOR('d', 11, struct sg1) /* word from input data reg */ X! #define DRITIME _IO('d', 12) /* no set error on timeout */ X X /* X * i_flags definition X*** ./usr/src/sys/pdpuba/hk.c.orig Sat Oct 13 20:20:02 2001 X--- ./usr/src/sys/pdpuba/hk.c Tue Jan 7 22:14:12 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)hk.c 2.4 (2.11BSD) 2001/8/13 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)hk.c 2.5 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 430,436 **** X disk->dk_flags &= ~DKF_ONLINE; X goto done; X } X! #ifdef NHK > 1 X if (bp->b_cylin == hk_cyl[unit]) X goto done; X hkaddr->hkcyl = bp->b_cylin; X--- 430,436 ---- X disk->dk_flags &= ~DKF_ONLINE; X goto done; X } X! #if NHK > 1 X if (bp->b_cylin == hk_cyl[unit]) X goto done; X hkaddr->hkcyl = bp->b_cylin; X*************** X*** 446,452 **** X } X #endif X return (didie); X! #endif NHK > 1 X X done: X if (dp->b_active != 2) { X--- 446,452 ---- X } X #endif X return (didie); X! #endif /* NHK > 1 */ X X done: X if (dp->b_active != 2) { X*************** X*** 965,968 **** X pi = &disk->dk_parts[dkpart(bp->b_dev)]; X return(bp->b_blkno + pi->p_offset); X } X! #endif NHK > 0 X--- 965,968 ---- X pi = &disk->dk_parts[dkpart(bp->b_dev)]; X return(bp->b_blkno + pi->p_offset); X } X! #endif /* NHK > 0 */ X*** ./usr/src/sys/pdpuba/rxreg.h.orig Tue Nov 21 23:56:29 1995 X--- ./usr/src/sys/pdpuba/rxreg.h Tue Jan 7 22:14:31 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)rxreg.h 1.2 (2.11BSD GTE) 1995/11/21 X */ X X struct rxdevice { X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)rxreg.h 1.3 (2.11BSD) 2020/1/7 X */ X X struct rxdevice { X*************** X*** 46,52 **** X #define RX_RDEC 0000016 /* read error code */ X X /* ioctls */ X! #define RXIOC_FORMAT _IO(r, 1) /* format media */ X X #define RX_BITS \ X "\10\20ERR\17INIT\14RX02\13QBUS\12HD\11DD\10XREQ\7IE\6DONE\5UNIT1\1GO" X--- 46,52 ---- X #define RX_RDEC 0000016 /* read error code */ X X /* ioctls */ X! #define RXIOC_FORMAT _IO('r', 1) /* format media */ X X #define RX_BITS \ X "\10\20ERR\17INIT\14RX02\13QBUS\12HD\11DD\10XREQ\7IE\6DONE\5UNIT1\1GO" X*** ./usr/src/sys/sys/tty.c.orig Sun May 4 23:10:15 1997 X--- ./usr/src/sys/sys/tty.c Tue Jan 7 22:14:50 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)tty.c 1.5 (2.11BSD GTE) 1997/5/4 X */ X X #include "param.h" X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)tty.c 1.6 (2.11BSD) 2020/1/7 X */ X X #include "param.h" X*************** X*** 924,930 **** X if (tp->t_rawq.c_cc > TTYHOG) { X if (tp->t_outq.c_cc < TTHIWAT(tp) && X tp->t_line == NTTYDISC) X! (void) ttyoutput(CTRL(g), tp); X } else if (putc(c, &tp->t_rawq) == 0) { X ttwakeup(tp); X ttyecho(c, tp); X--- 924,930 ---- X if (tp->t_rawq.c_cc > TTYHOG) { X if (tp->t_outq.c_cc < TTHIWAT(tp) && X tp->t_line == NTTYDISC) X! (void) ttyoutput(CTRL('g'), tp); X } else if (putc(c, &tp->t_rawq) == 0) { X ttwakeup(tp); X ttyecho(c, tp); X*************** X*** 993,999 **** X */ X if (tp->t_rawq.c_cc+tp->t_canq.c_cc >= TTYHOG) { X if (tp->t_line == NTTYDISC) X! (void) ttyoutput(CTRL(g), tp); X goto endcase; X } X X--- 993,999 ---- X */ X if (tp->t_rawq.c_cc+tp->t_canq.c_cc >= TTYHOG) { X if (tp->t_line == NTTYDISC) X! (void) ttyoutput(CTRL('g'), tp); X goto endcase; X } X X*** ./usr/src/sys/sys/tty_pty.c.orig Fri May 2 19:00:27 1997 X--- ./usr/src/sys/sys/tty_pty.c Tue Jan 7 22:15:05 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)tty_pty.c 1.3 (2.11BSD GTE) 1997/5/2 X */ X X /* X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)tty_pty.c 1.4 (2.11BSD) 2020/1/7 X */ X X /* X*************** X*** 549,555 **** X error = ENOTTY; X } X stop = (tp->t_flags & RAW) == 0 && X! tp->t_stopc == CTRL(s) && tp->t_startc == CTRL(q); X if (pti->pt_flags & PF_NOSTOP) { X if (stop) { X pti->pt_send &= ~TIOCPKT_NOSTOP; X--- 549,555 ---- X error = ENOTTY; X } X stop = (tp->t_flags & RAW) == 0 && X! tp->t_stopc == CTRL('s') && tp->t_startc == CTRL('q'); X if (pti->pt_flags & PF_NOSTOP) { X if (stop) { X pti->pt_send &= ~TIOCPKT_NOSTOP; X*** ./usr/src/sys/sys/uipc_domain.c.orig Tue Oct 10 01:19:00 1995 X--- ./usr/src/sys/sys/uipc_domain.c Tue Jan 7 22:15:35 2020 X*************** X*** 9,15 **** X * software without specific prior written permission. This software X * is provided ``as is'' without express or implied warranty. X * X! * @(#)uipc_domain.c 7.2.1 (2.11BSD) 1995/10/09 X */ X X #include "param.h" X--- 9,15 ---- X * software without specific prior written permission. This software X * is provided ``as is'' without express or implied warranty. X * X! * @(#)uipc_domain.c 7.3 (2.11BSD) 2020/1/7 X */ X X #include "param.h" X*************** X*** 22,30 **** X #include "errno.h" X X #define ADDDOMAIN(x) { \ X! extern struct domain x/**/domain; \ X! x/**/domain.dom_next = domains; \ X! domains = &x/**/domain; \ X } X X domaininit() X--- 22,30 ---- X #include "errno.h" X X #define ADDDOMAIN(x) { \ X! extern struct domain x ## domain; \ X! x ## domain.dom_next = domains; \ X! domains = &x ## domain; \ X } X X domaininit() X*** ./usr/src/ucb/ex/ex.h.orig Tue Feb 24 08:10:37 1987 X--- ./usr/src/ucb/ex/ex.h Tue Jan 7 22:16:04 2020 X*************** X*** 3,9 **** X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ex.h 7.7.1.1 (Berkeley) 8/12/86 X */ X X #ifdef V6 X--- 3,9 ---- X * All rights reserved. The Berkeley software License Agreement X * specifies the terms and conditions for redistribution. X * X! * @(#)ex.h 7.8 (2.11BSD) 2020/1/7 X */ X X #ifdef V6 X*************** X*** 157,165 **** X #define QUOTE 0200 X #define TRIM 0177 X #undef CTRL X! #define CTRL(c) ('c' & 037) X! #define NL CTRL(j) X! #define CR CTRL(m) X #define DELETE 0177 /* See also ATTN, QUIT in ex_tune.h */ X #define ESCAPE 033 X X--- 157,165 ---- X #define QUOTE 0200 X #define TRIM 0177 X #undef CTRL X! #define CTRL(c) (c & 037) X! #define NL CTRL('j') X! #define CR CTRL('m') X #define DELETE 0177 /* See also ATTN, QUIT in ex_tune.h */ X #define ESCAPE 033 X X*** ./usr/src/ucb/ex/ex_cmds.c.orig Tue Nov 19 23:04:23 1996 X--- ./usr/src/ucb/ex/ex_cmds.c Tue Jan 7 22:16:32 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_cmds.c 7.10.1 (2.11BSD) 1996/11/19"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_cmds.c 7.11 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 131,137 **** X * the set of available commands here to save work below. X */ X if (inopen) { X! if (c=='\n' || c=='\r' || c==CTRL(d) || c==EOF) { X if (addr2) X dot = addr2; X if (c == EOF) X--- 131,137 ---- X * the set of available commands here to save work below. X */ X if (inopen) { X! if (c=='\n' || c=='\r' || c==CTRL('d') || c==EOF) { X if (addr2) X dot = addr2; X if (c == EOF) X*************** X*** 771,777 **** X notempty(); X if (addr2 == 0) { X if (UP != NOSTR && c == '\n' && !inglobal) X! c = CTRL(k); X if (inglobal) X addr1 = addr2 = dot; X else { X--- 771,777 ---- X notempty(); X if (addr2 == 0) { X if (UP != NOSTR && c == '\n' && !inglobal) X! c = CTRL('k'); X if (inglobal) X addr1 = addr2 = dot; X else { X*************** X*** 785,791 **** X if (seensemi) X addr1 = addr2; X getline(*addr1); X! if (c == CTRL(k)) { X flush1(); X destline--; X if (hadpr) X--- 785,791 ---- X if (seensemi) X addr1 = addr2; X getline(*addr1); X! if (c == CTRL('k')) { X flush1(); X destline--; X if (hadpr) X*************** X*** 848,854 **** X X /* ^D */ X /* EOF */ X! case CTRL(d): X case EOF: X if (exitoneof) { X if (addr2 != 0) X--- 848,854 ---- X X /* ^D */ X /* EOF */ X! case CTRL('d'): X case EOF: X if (exitoneof) { X if (addr2 != 0) X*** ./usr/src/ucb/ex/ex_cmds2.c.orig Sun Sep 8 13:58:20 1991 X--- ./usr/src/ucb/ex/ex_cmds2.c Tue Jan 7 22:18:18 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_cmds2.c 7.4 (Berkeley) 6/7/85"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_cmds2.c 7.5 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 511,517 **** X * Gobble ^Q/^S since the tty driver should be eating X * them (as far as the user can see) X */ X! while (peekkey() == CTRL(Q) || peekkey() == CTRL(S)) X ignore(getkey()); X #endif X if(getkey() == ':') { X--- 511,517 ---- X * Gobble ^Q/^S since the tty driver should be eating X * them (as far as the user can see) X */ X! while (peekkey() == CTRL('Q') || peekkey() == CTRL('S')) X ignore(getkey()); X #endif X if(getkey() == ':') { X*** ./usr/src/ucb/ex/ex_cmdsub.c.orig Sun Sep 8 13:58:39 1991 X--- ./usr/src/ucb/ex/ex_cmdsub.c Tue Jan 7 22:18:39 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_cmdsub.c 7.7 (Berkeley) 6/7/85"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_cmdsub.c 7.8 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 1108,1114 **** X ignore(skipwh()); X for (p=lhs; ; ) { X c = getchar(); X! if (c == CTRL(v)) { X c = getchar(); X } else if (!un && any(c, " \t")) { X /* End of lhs */ X--- 1108,1114 ---- X ignore(skipwh()); X for (p=lhs; ; ) { X c = getchar(); X! if (c == CTRL('v')) { X c = getchar(); X } else if (!un && any(c, " \t")) { X /* End of lhs */ X*************** X*** 1131,1137 **** X error("Missing rhs"); X for (p=rhs; ; ) { X c = getchar(); X! if (c == CTRL(v)) { X c = getchar(); X } else if (endcmd(c) && c!='"') { X ungetchar(c); X--- 1131,1137 ---- X error("Missing rhs"); X for (p=rhs; ; ) { X c = getchar(); X! if (c == CTRL('v')) { X c = getchar(); X } else if (endcmd(c) && c!='"') { X ungetchar(c); X*** ./usr/src/ucb/ex/ex_get.c.orig Sun Sep 8 13:59:26 1991 X--- ./usr/src/ucb/ex/ex_get.c Tue Jan 7 22:18:57 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_get.c 7.6 (Berkeley) 6/7/85"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_get.c 7.7 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 30,36 **** X X do X c = getcd(); X! while (!globp && c == CTRL(d)); X return (c); X } X X--- 30,36 ---- X X do X c = getcd(); X! while (!globp && c == CTRL('d')); X return (c); X } X X*************** X*** 44,50 **** X return (c); X c &= TRIM; X if (!inopen) X! if (!globp && c == CTRL(d)) X setlastchar('\n'); X else if (junk(c)) { X checkjunk(c); X--- 44,50 ---- X return (c); X c &= TRIM; X if (!inopen) X! if (!globp && c == CTRL('d')) X setlastchar('\n'); X else if (junk(c)) { X checkjunk(c); X*************** X*** 71,77 **** X getach() X { X register int c; X! static char inline[BUFSIZ]; X struct stat statb; X X c = peekc; X--- 71,77 ---- X getach() X { X register int c; X! static char xinline[BUFSIZ]; X struct stat statb; X X c = peekc; X*************** X*** 96,120 **** X } X flush(); X if (intty) { X! c = read(0, inline, sizeof inline - 4); X if (c < 0) X return (lastc = EOF); X! if (c == 0 || inline[c-1] != '\n') X! inline[c++] = CTRL(d); X! if (inline[c-1] == '\n') X noteinp(); X! inline[c] = 0; X for (c--; c >= 0; c--) X! if (inline[c] == 0) X! inline[c] = QUOTE; X! input = inline; X goto top; X } X! c = read(0, inline, sizeof inline - 1); X if(c <= 0) X return(lastc = EOF); X! inline[c] = '\0'; X! input = inline; X goto top; X } X X--- 96,120 ---- X } X flush(); X if (intty) { X! c = read(0, xinline, sizeof xinline - 4); X if (c < 0) X return (lastc = EOF); X! if (c == 0 || xinline[c-1] != '\n') X! xinline[c++] = CTRL('d'); X! if (xinline[c-1] == '\n') X noteinp(); X! xinline[c] = 0; X for (c--; c >= 0; c--) X! if (xinline[c] == 0) X! xinline[c] = QUOTE; X! input = xinline; X goto top; X } X! c = read(0, xinline, sizeof xinline - 1); X if(c <= 0) X return(lastc = EOF); X! xinline[c] = '\0'; X! input = xinline; X goto top; X } X X*************** X*** 148,154 **** X lastin = lindent(dot + 1); X #endif X tab(lastin + offset); X! while ((c = getcd()) == CTRL(d)) { X if (lastin == 0 && isatty(0) == -1) { X holdcm = 0; X return (EOF); X--- 148,154 ---- X lastin = lindent(dot + 1); X #endif X tab(lastin + offset); X! while ((c = getcd()) == CTRL('d')) { X if (lastin == 0 && isatty(0) == -1) { X holdcm = 0; X return (EOF); X*************** X*** 161,167 **** X case '^': X case '0': X ch = getcd(); X! if (ch == CTRL(d)) { X if (c == '0') X lastin = 0; X if (!OS) { X--- 161,167 ---- X case '^': X case '0': X ch = getcd(); X! if (ch == CTRL('d')) { X if (c == '0') X lastin = 0; X if (!OS) { X*** ./usr/src/ucb/ex/ex_put.c.orig Fri Dec 9 22:48:24 1994 X--- ./usr/src/ucb/ex/ex_put.c Tue Jan 7 22:20:56 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_put.c 7.9.1 (2.11BSD GTE) 12/9/94"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_put.c 7.10 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 432,438 **** X plod(cnt) X { X register int i, j, k; X! register int soutcol, soutline; X X plodcnt = plodflg = cnt; X soutcol = outcol; X--- 432,438 ---- X plod(cnt) X { X register int i, j, k; X! int soutcol, soutline; X X plodcnt = plodflg = cnt; X soutcol = outcol; X*************** X*** 960,968 **** X ttcharoff() X { X nttyc.t_quitc = '\377'; X! if (nttyc.t_startc != CTRL(q)) X nttyc.t_startc = '\377'; X! if (nttyc.t_stopc != CTRL(s)) X nttyc.t_stopc = '\377'; X # ifdef TIOCLGET X nlttyc.t_suspc = '\377'; /* ^Z */ X--- 960,968 ---- X ttcharoff() X { X nttyc.t_quitc = '\377'; X! if (nttyc.t_startc != CTRL('q')) X nttyc.t_startc = '\377'; X! if (nttyc.t_stopc != CTRL('s')) X nttyc.t_stopc = '\377'; X # ifdef TIOCLGET X nlttyc.t_suspc = '\377'; /* ^Z */ X*************** X*** 983,991 **** X * their start/stop chars. As long as they can't we can't get X * into trouble so we just leave them alone. X */ X! if (tty.c_cc[VSTART] != CTRL(q)) X tty.c_cc[VSTART] = '\377'; X! if (tty.c_cc[VSTOP] != CTRL(s)) X tty.c_cc[VSTOP] = '\377'; X # endif X } X--- 983,991 ---- X * their start/stop chars. As long as they can't we can't get X * into trouble so we just leave them alone. X */ X! if (tty.c_cc[VSTART] != CTRL('q')) X tty.c_cc[VSTART] = '\377'; X! if (tty.c_cc[VSTOP] != CTRL('s')) X tty.c_cc[VSTOP] = '\377'; X # endif X } X*** ./usr/src/ucb/ex/ex_tty.c.orig Fri Dec 9 22:55:58 1994 X--- ./usr/src/ucb/ex/ex_tty.c Tue Jan 7 22:21:54 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_tty.c 7.10.1 (2.11BSD GTE) 12/9/94"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_tty.c 7.11 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 110,119 **** X if (ldisc == NTTYDISC) { X sc[0] = olttyc.t_suspc; X sc[1] = 0; X! if (olttyc.t_suspc == CTRL(z)) { X for (i=0; i<=4; i++) X if (arrows[i].cap && X! arrows[i].cap[0] == CTRL(z)) X addmac(sc, NULL, NULL, arrows); X } else X addmac(sc, "\32", "susp", arrows); X--- 110,119 ---- X if (ldisc == NTTYDISC) { X sc[0] = olttyc.t_suspc; X sc[1] = 0; X! if (olttyc.t_suspc == CTRL('z')) { X for (i=0; i<=4; i++) X if (arrows[i].cap && X! arrows[i].cap[0] == CTRL('z')) X addmac(sc, NULL, NULL, arrows); X } else X addmac(sc, "\32", "susp", arrows); X*** ./usr/src/ucb/ex/ex_vget.c.orig Fri Dec 9 22:41:56 1994 X--- ./usr/src/ucb/ex/ex_vget.c Tue Jan 7 22:22:17 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_vget.c 6.8.1 (2.11BSD GTE) 12/9/94"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_vget.c 6.9 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 130,136 **** X Peek2key = 0; X break; X case 'q': /* f2 -> ^C */ X! c = CTRL(c); X Peek2key = 0; X break; X case 'p': /* f1 -> esc */ X--- 130,136 ---- X Peek2key = 0; X break; X case 'q': /* f2 -> ^C */ X! c = CTRL('c'); X Peek2key = 0; X break; X case 'p': /* f1 -> esc */ X*************** X*** 165,172 **** X c = getkey(); X switch (c) { X X! case CTRL(v): X! case CTRL(q): X c = getkey(); X return (c); X X--- 165,172 ---- X c = getkey(); X switch (c) { X X! case CTRL('v'): X! case CTRL('q'): X c = getkey(); X return (c); X X*************** X*** 224,236 **** X putchar('\n'); X vscrap(); X Pline = OP; X! if (Peekkey != ATTN && Peekkey != QUIT && Peekkey != CTRL(h)) { X cursor = sc; X vclreol(); X return (0); X } X blewit: X! OPeek = Peekkey==CTRL(h) ? 0 : Peekkey; Peekkey = 0; X splitw = 0; X vclean(); X vshow(dot, NOLINE); X--- 224,236 ---- X putchar('\n'); X vscrap(); X Pline = OP; X! if (Peekkey != ATTN && Peekkey != QUIT && Peekkey != CTRL('h')) { X cursor = sc; X vclreol(); X return (0); X } X blewit: X! OPeek = Peekkey==CTRL('h') ? 0 : Peekkey; Peekkey = 0; X splitw = 0; X vclean(); X vshow(dot, NOLINE); X*************** X*** 354,360 **** X if (VB) X vputp(VB, 0); X else X! vputc(CTRL(g)); X } X X /* X--- 354,360 ---- X if (VB) X vputp(VB, 0); X else X! vputc(CTRL('g')); X } X X /* X*** ./usr/src/ucb/ex/ex_vmain.c.orig Sun Sep 8 14:03:35 1991 X--- ./usr/src/ucb/ex/ex_vmain.c Tue Jan 7 22:23:15 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_vmain.c 7.7 (Berkeley) 6/7/85"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_vmain.c 7.8 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 192,200 **** X * will probably foul this up, but nobody has X * one of them. X */ X! case CTRL(l): X! case CTRL(r): X! if (c == CTRL(l) || (KR && *KR==CTRL(l))) { X vclear(); X vdirty(0, vcnt); X } X--- 192,200 ---- X * will probably foul this up, but nobody has X * one of them. X */ X! case CTRL('l'): X! case CTRL('r'): X! if (c == CTRL('l') || (KR && *KR==CTRL('l'))) { X vclear(); X vdirty(0, vcnt); X } X*************** X*** 300,306 **** X * redrawn almost as it was. In this case X * one should simply move the cursor. X */ X! case CTRL(u): X if (hadcnt) X vSCROLL = cnt; X cnt = vSCROLL; X--- 300,306 ---- X * redrawn almost as it was. In this case X * one should simply move the cursor. X */ X! case CTRL('u'): X if (hadcnt) X vSCROLL = cnt; X cnt = vSCROLL; X*************** X*** 316,322 **** X /* X * ^D Scroll down. Like scroll up. X */ X! case CTRL(d): X #ifdef TRACE X if (trace) X fprintf(trace, "before vdown in ^D, dot=%d, wdot=%d, dol=%d\n", lineno(dot), lineno(wdot), lineno(dol)); X--- 316,322 ---- X /* X * ^D Scroll down. Like scroll up. X */ X! case CTRL('d'): X #ifdef TRACE X if (trace) X fprintf(trace, "before vdown in ^D, dot=%d, wdot=%d, dol=%d\n", lineno(dot), lineno(wdot), lineno(dol)); X*************** X*** 345,351 **** X * ^E Glitch the screen down (one) line. X * Cursor left on same line in file. X */ X! case CTRL(e): X if (state != VISUAL) X continue; X if (!hadcnt) X--- 345,351 ---- X * ^E Glitch the screen down (one) line. X * Cursor left on same line in file. X */ X! case CTRL('e'): X if (state != VISUAL) X continue; X if (!hadcnt) X*************** X*** 360,366 **** X /* X * ^Y Like ^E but up X */ X! case CTRL(y): X if (state != VISUAL) X continue; X if (!hadcnt) X--- 360,366 ---- X /* X * ^Y Like ^E but up X */ X! case CTRL('y'): X if (state != VISUAL) X continue; X if (!hadcnt) X*************** X*** 409,415 **** X * ^F Window forwards, with 2 lines of continuity. X * Count repeats. X */ X! case CTRL(f): X vsave(); X if (vcnt > 2) { X addr = dot + (vcnt - vcline) - 2 + (cnt-1)*basWLINES; X--- 409,415 ---- X * ^F Window forwards, with 2 lines of continuity. X * Count repeats. X */ X! case CTRL('f'): X vsave(); X if (vcnt > 2) { X addr = dot + (vcnt - vcline) - 2 + (cnt-1)*basWLINES; X*************** X*** 424,430 **** X * ^B Window backwards, with 2 lines of continuity. X * Inverse of ^F. X */ X! case CTRL(b): X vsave(); X if (one + vcline != dot && vcnt > 2) { X addr = dot - vcline + 2 - (cnt-1)*basWLINES; X--- 424,430 ---- X * ^B Window backwards, with 2 lines of continuity. X * Inverse of ^F. X */ X! case CTRL('b'): X vsave(); X if (one + vcline != dot && vcnt > 2) { X addr = dot - vcline + 2 - (cnt-1)*basWLINES; X*************** X*** 833,839 **** X * Like a :e #, and thus can be used after a X * "No Write" diagnostic. X */ X! case CTRL(^): X forbid (hadcnt); X vsave(); X ckaw(); X--- 833,839 ---- X * Like a :e #, and thus can be used after a X * "No Write" diagnostic. X */ X! case CTRL('^'): X forbid (hadcnt); X vsave(); X ckaw(); X*************** X*** 848,854 **** X * ^] Takes word after cursor as tag, and then does X * tag command. Read ``go right to''. X */ X! case CTRL(]): X grabtag(); X oglobp = globp; X globp = "tag"; X--- 848,854 ---- X * ^] Takes word after cursor as tag, and then does X * tag command. Read ``go right to''. X */ X! case CTRL(']'): X grabtag(); X oglobp = globp; X globp = "tag"; X*************** X*** 868,874 **** X * X * BUG: Was ^S but doesn't work in cbreak mode X */ X! case CTRL(g): X oglobp = globp; X globp = "file"; X gogo: X--- 868,874 ---- X * X * BUG: Was ^S but doesn't work in cbreak mode X */ X! case CTRL('g'): X oglobp = globp; X globp = "file"; X gogo: X*************** X*** 882,888 **** X * to shell. Only works with Berkeley/IIASA process X * control in kernel. X */ X! case CTRL(z): X forbid(dosusp == 0 || !ldisc); X vsave(); X oglobp = globp; X--- 882,888 ---- X * to shell. Only works with Berkeley/IIASA process X * control in kernel. X */ X! case CTRL('z'): X forbid(dosusp == 0 || !ldisc); X vsave(); X oglobp = globp; X*** ./usr/src/ucb/ex/ex_voper.c.orig Sun Sep 8 14:03:53 1991 X--- ./usr/src/ucb/ex/ex_voper.c Tue Jan 7 22:24:27 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_voper.c 7.4 (Berkeley) 6/7/85"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_voper.c 7.5 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 390,396 **** X * ^H Back a character. X */ X case 'h': X! case CTRL(h): X dir = -1; X /* fall into ... */ X X--- 390,396 ---- X * ^H Back a character. X */ X case 'h': X! case CTRL('h'): X dir = -1; X /* fall into ... */ X X*************** X*** 484,490 **** X * console of the VAX since it puts console in LSI mode. X */ X case 'k': X! case CTRL(p): X wdot = dot - cnt; X if (vmoving == 0) X vmoving = 1, vmovcol = column(cursor); X--- 484,490 ---- X * console of the VAX since it puts console in LSI mode. X */ X case 'k': X! case CTRL('p'): X wdot = dot - cnt; X if (vmoving == 0) X vmoving = 1, vmovcol = column(cursor); X*************** X*** 531,537 **** X * X * LF Linefeed is a convenient synonym for ^N. X */ X! case CTRL(n): X case 'j': X case NL: X wdot = dot + cnt; X--- 531,537 ---- X * X * LF Linefeed is a convenient synonym for ^N. X */ X! case CTRL('n'): X case 'j': X case NL: X wdot = dot + cnt; X*** ./usr/src/ucb/ex/ex_vops2.c.orig Sun Sep 8 14:04:27 1991 X--- ./usr/src/ucb/ex/ex_vops2.c Tue Jan 7 22:24:51 2020 X*************** X*** 5,11 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_vops2.c 6.8 (Berkeley) 6/7/85"; X #endif X X #include "ex.h" X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char *sccsid = "@(#)ex_vops2.c 6.9 (2.11BSD) 2020/1/7"; X #endif X X #include "ex.h" X*************** X*** 488,499 **** X */ X #ifndef USG3TTY X if (c == tty.sg_erase) X! c = CTRL(h); X else if (c == tty.sg_kill) X c = -1; X #else X if (c == tty.c_cc[VERASE]) X! c = CTRL(h); X else if (c == tty.c_cc[VKILL]) X c = -1; X #endif X--- 488,499 ---- X */ X #ifndef USG3TTY X if (c == tty.sg_erase) X! c = CTRL('h'); X else if (c == tty.sg_kill) X c = -1; X #else X if (c == tty.c_cc[VERASE]) X! c = CTRL('h'); X else if (c == tty.c_cc[VKILL]) X c = -1; X #endif X*************** X*** 521,527 **** X * This is hard because stuff has X * already been saved for repeat. X */ X! case CTRL(h): X bakchar: X cp = gcursor - 1; X if (cp < ogcursor) { X--- 521,527 ---- X * This is hard because stuff has X * already been saved for repeat. X */ X! case CTRL('h'): X bakchar: X cp = gcursor - 1; X if (cp < ogcursor) { X*************** X*** 542,548 **** X /* X * ^W Back up a white/non-white word. X */ X! case CTRL(w): X wdkind = 1; X for (cp = gcursor; cp > ogcursor && isspace(cp[-1]); cp--) X continue; X--- 542,548 ---- X /* X * ^W Back up a white/non-white word. X */ X! case CTRL('w'): X wdkind = 1; X for (cp = gcursor; cp > ogcursor && isspace(cp[-1]); cp--) X continue; X*************** X*** 604,611 **** X * X * ^V Synonym for ^Q X */ X! case CTRL(q): X! case CTRL(v): X x = destcol, y = destline; X putchar('^'); X vgoto(y, x); X--- 604,611 ---- X * X * ^V Synonym for ^Q X */ X! case CTRL('q'): X! case CTRL('v'): X x = destcol, y = destline; X putchar('^'); X vgoto(y, x); X*************** X*** 743,750 **** X * Unless in repeat where this means these X * were superquoted in. X */ X! case CTRL(d): X! case CTRL(t): X if (vglobp) X goto def; X /* fall into ... */ X--- 743,750 ---- X * Unless in repeat where this means these X * were superquoted in. X */ X! case CTRL('d'): X! case CTRL('t'): X if (vglobp) X goto def; X /* fall into ... */ X*************** X*** 752,762 **** X /* X * ^D|QUOTE Is a backtab (in a repeated command). X */ X! case CTRL(d) | QUOTE: X *gcursor = 0; X cp = vpastwh(genbuf); X c = whitecnt(genbuf); X! if (ch == CTRL(t)) { X /* X * ^t just generates new indent replacing X * current white space rounded up to soft X--- 752,762 ---- X /* X * ^D|QUOTE Is a backtab (in a repeated command). X */ X! case CTRL('d') | QUOTE: X *gcursor = 0; X cp = vpastwh(genbuf); X c = whitecnt(genbuf); X! if (ch == CTRL('t')) { X /* X * ^t just generates new indent replacing X * current white space rounded up to soft X*** ./usr/src/ucb/indent/indent.c.orig Tue Feb 17 00:08:23 1987 X--- ./usr/src/ucb/indent/indent.c Tue Jan 7 22:25:57 2020 X*************** X*** 4,19 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! char copyright[] = X! "@(#) Copyright (c) 1980 Regents of the University of California.\n\ X! All rights reserved.\n"; X! #endif not lint X X- #ifndef lint X- static char sccsid[] = "@(#)indent.c 5.4 (Berkeley) 9/10/85"; X- #endif not lint X- X /*- X X Copyright (C) 1976 X--- 4,13 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)indent.c 5.5 (2.11BSD) 2020/1/7"; X! #endif X X /*- X X Copyright (C) 1976 X*************** X*** 44,51 **** X the following line should be changed, set the variable ps.i_l_follow. X X */ X! #include "indent_globs.h"; X! #include "indent_codes.h"; X X char *in_name = "Standard Input"; /* will always point to name of X * input file */ X--- 38,45 ---- X the following line should be changed, set the variable ps.i_l_follow. X X */ X! #include "indent_globs.h" X! #include "indent_codes.h" X X char *in_name = "Standard Input"; /* will always point to name of X * input file */ X*** ./usr/src/ucb/indent/io.c.orig Tue Feb 17 00:08:24 1987 X--- ./usr/src/ucb/indent/io.c Tue Jan 7 22:26:36 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)io.c 5.3 (Berkeley) 9/8/85"; X! #endif not lint X X /*- X * Copyright (C) 1976 X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)io.c 5.4 (2.11BSD) 2020/1/7"; X! #endif X X /*- X * Copyright (C) 1976 X*************** X*** 65,71 **** X * initial coding November 1976 D A Willcox of CAC X * X */ X! #include "indent_globs.h"; X X X X--- 65,71 ---- X * initial coding November 1976 D A Willcox of CAC X * X */ X! #include "indent_globs.h" X X X X*************** X*** 311,317 **** X * buffer from temporary buffer X * X */ X- int X fill_buffer() X { /* this routine reads stuff from the input */ X int count; X--- 311,316 ---- X*** ./usr/src/ucb/indent/lexi.c.orig Tue Feb 17 00:08:24 1987 X--- ./usr/src/ucb/indent/lexi.c Tue Jan 7 22:30:14 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)lexi.c 5.4 (Berkeley) 9/10/85"; X! #endif not lint X X /*- X * X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)lexi.c 5.5 (2.11BSD) 2020/1/7"; X! #endif /* not lint */ X X /*- X * X*************** X*** 71,78 **** X * the type of token scanned. X */ X X! #include "indent_globs.h"; X! #include "indent_codes.h"; X #include "ctype.h" X X #define alphanum 1 X--- 71,78 ---- X * the type of token scanned. X */ X X! #include "indent_globs.h" X! #include "indent_codes.h" X #include "ctype.h" X X #define alphanum 1 X*** ./usr/src/ucb/indent/parse.c.orig Tue Feb 17 00:08:24 1987 X--- ./usr/src/ucb/indent/parse.c Tue Jan 7 22:30:49 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)parse.c 5.3 (Berkeley) 9/8/85"; X! #endif not lint X X /*- X * X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)parse.c 5.4 (2.11BSD) 2020/1/7"; X! #endif /* not lint */ X X /*- X * X*************** X*** 53,60 **** X * X */ X X! #include "./indent_globs.h"; X! #include "./indent_codes.h"; X X X X--- 53,60 ---- X * X */ X X! #include "./indent_globs.h" X! #include "./indent_codes.h" X X X X*************** X*** 188,194 **** X case_ind = ps.i_l_follow + ps.case_indent; /* cases should be one X * level down from X * switch */ X! ps.i_l_follow + = ps.case_indent + 1; /* statements should be X * two levels in */ X ps.search_brace = btype_2; X break; X--- 188,194 ---- X case_ind = ps.i_l_follow + ps.case_indent; /* cases should be one X * level down from X * switch */ X! ps.i_l_follow += ps.case_indent + 1; /* statements should be X * two levels in */ X ps.search_brace = btype_2; X break; X*** ./usr/src/ucb/indent/pr_comment.c.orig Tue Feb 17 00:08:25 1987 X--- ./usr/src/ucb/indent/pr_comment.c Tue Jan 7 22:31:18 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)pr_comment.c 5.3 (Berkeley) 9/8/85"; X! #endif not lint X X /*- X * X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)pr_comment.c 5.4 (2.11BSD) 2020/1/7"; X! #endif /* not lint */ X X /*- X * X*************** X*** 49,55 **** X * tabs from the beginning of the input line are removed X */ X X! #include "indent_globs.h"; X X X pr_comment() X--- 49,55 ---- X * tabs from the beginning of the input line are removed X */ X X! #include "indent_globs.h" X X X pr_comment() X*** ./usr/src/ucb/more/more.c.orig Sat Oct 18 18:47:43 1997 X--- ./usr/src/ucb/more/more.c Tue Jan 7 22:31:41 2020 X*************** X*** 5,15 **** X */ X X #if !defined(lint) && defined(DOSCCS) X! char copyright[] = X! "@(#) Copyright (c) 1980 Regents of the University of California.\n\ X! All rights reserved.\n"; X! X! static char sccsid[] = "@(#)more.c 5.4.2 (2.11BSD) 1997/10/18"; X #endif X X /* X--- 5,11 ---- X */ X X #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)more.c 5.5 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 48,54 **** X X #define TBUFSIZ 1024 X #define LINSIZ 256 X! #define ctrl(letter) ('letter' & 077) X #define RUBOUT '\177' X #define ESC '\033' X #define QUIT '\034' X--- 44,50 ---- X X #define TBUFSIZ 1024 X #define LINSIZ 256 X! #define ctrl(letter) (letter & 077) X #define RUBOUT '\177' X #define ESC '\033' X #define QUIT '\034' X*************** X*** 627,633 **** X *sptr++ = n % 10 + '0'; X } X X! static char bell = ctrl(G); X X /* See whether the last component of the path name "path" is equal to the X ** string "string" X--- 623,629 ---- X *sptr++ = n % 10 + '0'; X } X X! static char bell = ctrl('G'); X X /* See whether the last component of the path name "path" is equal to the X ** string "string" X*************** X*** 954,960 **** X done++; X break; X case 'b': X! case ctrl(B): X { X register int initline; X X--- 950,956 ---- X done++; X break; X case 'b': X! case ctrl('B'): X { X register int initline; X X*************** X*** 1000,1006 **** X else if (comchar == 'z') dlines = nlines; X ret (nlines); X case 'd': X! case ctrl(D): X if (nlines != 0) nscroll = nlines; X ret (nscroll); X case 'q': X--- 996,1002 ---- X else if (comchar == 'z') dlines = nlines; X ret (nlines); X case 'd': X! case ctrl('D'): X if (nlines != 0) nscroll = nlines; X ret (nscroll); X case 'q': X*** ./usr/src/ucb/telnet.c.orig Tue Jan 11 00:32:48 1994 X--- ./usr/src/ucb/telnet.c Tue Jan 7 22:32:30 2020 X*************** X*** 5,15 **** X */ X X #if defined(DOSCCS) && !defined(lint) X! char copyright[] = X! "@(#) Copyright (c) 1983 Regents of the University of California.\n\ X! All rights reserved.\n"; X! X! static char sccsid[] = "@(#)telnet.c 5.16.1 (2.11BSD GTE) 1/1/94"; X #endif X X /* X--- 5,11 ---- X */ X X #if defined(DOSCCS) && !defined(lint) X! static char sccsid[] = "@(#)telnet.c 5.17 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 38,45 **** X #include X #include X X- X- X #ifndef FD_SETSIZE X /* X * The following is defined just in case someone should want to run X--- 34,39 ---- X*************** X*** 108,115 **** X X X char *prompt; X! char escape = CTRL(]); X! char echoc = CTRL(E); X X int SYNCHing = 0; /* we are in TELNET SYNCH mode */ X int flushout = 0; /* flush output */ X--- 102,109 ---- X X X char *prompt; X! char escape = CTRL(']'); X! char echoc = CTRL('E'); X X int SYNCHing = 0; /* we are in TELNET SYNCH mode */ X int flushout = 0; /* flush output */ X*************** X*** 1899,1906 **** X } X } X return 1; X! #undef doset(sl) X! #undef dotog(tl) X } X X /* X--- 1893,1900 ---- X } X } X return 1; X! #undef doset X! #undef dotog X } X X /* X*** ./usr/src/ucb/tn3270/pdpbsubs.s.orig Sat Jul 30 21:56:26 1988 X--- ./usr/src/ucb/tn3270/pdpbsubs.s Tue Jan 7 22:33:51 2020 X*************** X*** 4,16 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifdef LIBC_SCCS X! <@(#)bunequal.s 1.2 (Berkeley) 1/8/87\0> X .even X! #endif LIBC_SCCS X X #define ENTRY(x) .globl _/**/x; \ X _/**/x: X X /* X * This is taken from bcmp.s from 2.10. X--- 4,21 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(def LIBC_SCCS) X! <@(#)bunequal.s 1.3 (2.11BSD) 2020/1/7\0> X .even X! #endif X X+ #ifdef __STDC__ X+ #define ENTRY(x) .globl _ ## x; \ X+ _ ## x: X+ #else X #define ENTRY(x) .globl _/**/x; \ X _/**/x: X+ #endif X X /* X * This is taken from bcmp.s from 2.10. X*** ./usr/src/ucb/tn3270/tn3270.c.orig Sat Jan 1 04:02:47 1994 X--- ./usr/src/ucb/tn3270/tn3270.c Tue Jan 7 22:34:26 2020 X*************** X*** 21,27 **** X X X #if defined(DOSCCS) && !defined(lint) X! static char sccsid[] = "@(#)tn3270.c 2.8\t1/1/94"; X #endif X X /* X--- 21,27 ---- X X X #if defined(DOSCCS) && !defined(lint) X! static char sccsid[] = "@(#)tn3270.c 2.9 2020/1/7"; X #endif X X /* X*************** X*** 97,103 **** X static int printnet = 0; X static FILE *NetTrace; X static char *prompt; X! static char escape = CTRL(]); X X static char line[200]; X static int margc; X--- 97,103 ---- X static int printnet = 0; X static FILE *NetTrace; X static char *prompt; X! static char escape = CTRL(']'); X X static char line[200]; X static int margc; X*** ./usr/src/ucb/window/char.h.orig Tue Feb 17 00:10:59 1987 X--- ./usr/src/ucb/window/char.h Tue Jan 7 22:34:41 2020 X*************** X*** 1,5 **** X /* X! * @(#)char.h 3.3 4/24/85 X */ X X /* X--- 1,5 ---- X /* X! * @(#)char.h 3.4 2020/1/7 X */ X X /* X*************** X*** 23,29 **** X X char *_unctrl[]; X char _cmap[]; X! #define ctrl(c) ('c' & 0x1f) X #define unctrl(c) (_unctrl[(unsigned char) (c)]) X #define _C 0x01 X #define _P 0x02 X--- 23,29 ---- X X char *_unctrl[]; X char _cmap[]; X! #define ctrl(c) (c & 0x1f) X #define unctrl(c) (_unctrl[(unsigned char) (c)]) X #define _C 0x01 X #define _P 0x02 X*** ./usr/src/ucb/window/cmd.c.orig Tue Feb 17 00:10:49 1987 X--- ./usr/src/ucb/window/cmd.c Tue Jan 7 22:35:54 2020 X*************** X*** 1,5 **** X! #ifndef lint X! static char sccsid[] = "@(#)cmd.c 3.33 4/24/85"; X #endif X X /* X--- 1,5 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)cmd.c 3.34 2020/1/7"; X #endif X X /* X*************** X*** 27,41 **** X goto foo; X break; X case 'h': case 'j': case 'k': case 'l': X! case ctrl(y): X! case ctrl(e): X! case ctrl(u): X! case ctrl(d): X! case ctrl(b): X! case ctrl(f): X! case ctrl(s): X! case ctrl(q): X! case ctrl([): X foo: X if (selwin == 0) { X error("No window."); X--- 27,41 ---- X goto foo; X break; X case 'h': case 'j': case 'k': case 'l': X! case ctrl('y'): X! case ctrl('e'): X! case ctrl('u'): X! case ctrl('d'): X! case ctrl('b'): X! case ctrl('f'): X! case ctrl('s'): X! case ctrl('q'): X! case ctrl('['): X foo: X if (selwin == 0) { X error("No window."); X*************** X*** 57,63 **** X if ((w = getwin()) != 0) X setselwin(w); X break; X! case ctrl(^): X if (lastselwin != 0) { X setselwin(lastselwin); X if (checkproc(selwin) >= 0) X--- 57,63 ---- X if ((w = getwin()) != 0) X setselwin(w); X break; X! case ctrl('^'): X if (lastselwin != 0) { X setselwin(lastselwin); X if (checkproc(selwin) >= 0) X*************** X*** 103,143 **** X case 'l': X (void) wwwrite(selwin, "\033C", 2); X break; X! case ctrl(e): X wwscroll(selwin, 1); X break; X! case ctrl(y): X wwscroll(selwin, -1); X break; X! case ctrl(d): X wwscroll(selwin, selwin->ww_w.nr / 2); X break; X! case ctrl(u): X wwscroll(selwin, - selwin->ww_w.nr / 2); X break; X! case ctrl(f): X wwscroll(selwin, selwin->ww_w.nr); X break; X! case ctrl(b): X wwscroll(selwin, - selwin->ww_w.nr); X break; X! case ctrl(s): X stopwin(selwin); X break; X! case ctrl(q): X startwin(selwin); X break; X! case ctrl(l): X wwredraw(); X break; X case '?': X c_help(); X break; X! case ctrl([): X if (checkproc(selwin) >= 0) X out = 1; X break; X! case ctrl(z): X wwsuspend(); X break; X case 'q': X--- 103,143 ---- X case 'l': X (void) wwwrite(selwin, "\033C", 2); X break; X! case ctrl('e'): X wwscroll(selwin, 1); X break; X! case ctrl('y'): X wwscroll(selwin, -1); X break; X! case ctrl('d'): X wwscroll(selwin, selwin->ww_w.nr / 2); X break; X! case ctrl('u'): X wwscroll(selwin, - selwin->ww_w.nr / 2); X break; X! case ctrl('f'): X wwscroll(selwin, selwin->ww_w.nr); X break; X! case ctrl('b'): X wwscroll(selwin, - selwin->ww_w.nr); X break; X! case ctrl('s'): X stopwin(selwin); X break; X! case ctrl('q'): X startwin(selwin); X break; X! case ctrl('l'): X wwredraw(); X break; X case '?': X c_help(); X break; X! case ctrl('['): X if (checkproc(selwin) >= 0) X out = 1; X break; X! case ctrl('z'): X wwsuspend(); X break; X case 'q': X*************** X*** 182,188 **** X getwin() X { X register int c; X! struct ww *w = 0; X X if (!terse) X wwputs("Which window? ", cmdwin); X--- 182,188 ---- X getwin() X { X register int c; X! register struct ww *w = 0; X X if (!terse) X wwputs("Which window? ", cmdwin); X*** ./usr/src/ucb/window/cmd1.c.orig Tue Feb 17 00:10:49 1987 X--- ./usr/src/ucb/window/cmd1.c Tue Jan 7 22:37:02 2020 X*************** X*** 1,5 **** X! #ifndef lint X! static char sccsid[] = "@(#)cmd1.c 3.29 4/24/85"; X #endif X X /* X--- 1,5 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)cmd1.c 3.30 2020/1/7"; X #endif X X /* X*************** X*** 127,133 **** X case 'K': X *row = minrow; X break; X! case ctrl([): X if (!terse) X wwputs("\nCanceled. ", cmdwin); X return 3; X--- 127,133 ---- X case 'K': X *row = minrow; X break; X! case ctrl('['): X if (!terse) X wwputs("\nCanceled. ", cmdwin); X return 3; X*** ./usr/src/ucb/window/local.h.orig Sat Jan 1 03:59:22 1994 X--- ./usr/src/ucb/window/local.h Tue Jan 7 22:37:17 2020 X*************** X*** 1,5 **** X /* X! * @(#)local.h 3.5 1/1/94 X */ X X /* X--- 1,5 ---- X /* X! * @(#)local.h 3.6 2020/1/7 X */ X X /* X*************** X*** 13,19 **** X */ X X #define RUNCOM ".windowrc" X! #define ESCAPEC ctrl(p) X #ifdef pdp11 X #define NLINE 3 /* default text buffer size */ X #else X--- 13,19 ---- X */ X X #define RUNCOM ".windowrc" X! #define ESCAPEC ctrl('p') X #ifdef pdp11 X #define NLINE 3 /* default text buffer size */ X #else X*** ./usr/src/ucb/window/win.c.orig Tue Jun 14 11:43:39 1988 X--- ./usr/src/ucb/window/win.c Tue Jan 7 22:40:54 2020 X*************** X*** 1,5 **** X! #ifndef lint X! static char sccsid[] = "@(#)win.c 3.14 4/24/85"; X #endif X X /* X--- 1,5 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)win.c 3.15 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 277,283 **** X w->ww_unctrl = 0; X wwputs("\033E", w); X w->ww_unctrl = uc; X! return c == ctrl([) ? 2 : 1; X } X X waitnl1(w, prompt) X--- 277,283 ---- X w->ww_unctrl = 0; X wwputs("\033E", w); X w->ww_unctrl = uc; X! return c == ctrl('[') ? 2 : 1; X } X X waitnl1(w, prompt) X*** ./usr/src/ucb/window/wwgets.c.orig Tue Feb 17 00:10:49 1987 X--- ./usr/src/ucb/window/wwgets.c Tue Jan 7 22:41:32 2020 X*************** X*** 1,5 **** X! #ifndef lint X! static char sccsid[] = "@(#)wwgets.c 3.9 4/24/85"; X #endif X X /* X--- 1,5 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)wwgets.c 3.10 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 41,47 **** X break; X } else { X if (p >= buf + n - 1) X! wwputc(ctrl(g), w); X else X wwputs(unctrl(*p++ = c), w); X } X--- 41,47 ---- X break; X } else { X if (p >= buf + n - 1) X! wwputc(ctrl('g'), w); X else X wwputs(unctrl(*p++ = c), w); X } X*** ./usr/src/ucb/window/wwmisc.c.orig Tue Feb 17 00:10:48 1987 X--- ./usr/src/ucb/window/wwmisc.c Tue Jan 7 22:42:03 2020 X*************** X*** 1,5 **** X! #ifndef lint X! static char sccsid[] = "@(#)wwmisc.c 3.9 4/24/85"; X #endif X X /* X--- 1,5 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)wwmisc.c 3.10 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 33,37 **** X X wwbell() X { X! ttputc(ctrl(g)); X } X--- 33,37 ---- X X wwbell() X { X! ttputc(ctrl('g')); X } X*** ./usr/src/ucb/window/wwwrite.c.orig Tue Feb 17 00:10:49 1987 X--- ./usr/src/ucb/window/wwwrite.c Tue Jan 7 22:42:33 2020 X*************** X*** 1,5 **** X! #ifndef lint X! static char sccsid[] = "@(#)wwwrite.c 3.23 5/2/86"; X #endif X X /* X--- 1,5 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)wwwrite.c 3.24 (2.11BSD) 2020/1/7"; X #endif X X /* X*************** X*** 148,157 **** X case '\r': X w->ww_cur.c = w->ww_w.l; X break; X! case ctrl(g): X! ttputc(ctrl(g)); X break; X! case ctrl([): X w->ww_wstate = 1; X break; X } X--- 148,157 ---- X case '\r': X w->ww_cur.c = w->ww_w.l; X break; X! case ctrl('g'): X! ttputc(ctrl('g')); X break; X! case ctrl('['): X w->ww_wstate = 1; X break; X } X*** ./usr/src/usr.bin/deroff.c.orig Mon Feb 16 18:22:26 1987 X--- ./usr/src/usr.bin/deroff.c Tue Jan 7 22:44:06 2020 X*************** X*** 1,6 **** X! #ifndef lint X! static char sccsid[] = "@(#)deroff.c 4.5 (Berkeley) 84/12/18"; X! #endif not lint X X #include X X--- 1,6 ---- X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)deroff.c 4.6 (2.11BSD) 2020/1/7"; X! #endif X X #include X X*************** X*** 288,296 **** X } X X /*ARGSUSED*/ X! textline(str, const) X char *str; X! int const; X { X if (wordflag) { X msputwords(0); X--- 288,296 ---- X } X X /*ARGSUSED*/ X! textline(str, xconst) X char *str; X! int xconst; X { X if (wordflag) { X msputwords(0); X*************** X*** 314,322 **** X } X } X X! regline(pfunc, const) X int (*pfunc)(); X! int const; X { X line[0] = c; X lp = line; X--- 314,322 ---- X } X } X X! regline(pfunc, xconst) X int (*pfunc)(); X! int xconst; X { X line[0] = c; X lp = line; X*************** X*** 342,348 **** X *lp = '\0'; X X if(line[0] != '\0') X! (*pfunc)(line, const); X } X X macro() X--- 342,348 ---- X *lp = '\0'; X X if(line[0] != '\0') X! (*pfunc)(line, xconst); X } X X macro() X*************** X*** 659,667 **** X /* X * Put out a macro line, using ms and mm conventions. X */ X! msputmac(s, const) X register char *s; X! int const; X { X register char *t; X register found; X--- 659,667 ---- X /* X * Put out a macro line, using ms and mm conventions. X */ X! msputmac(s, xconst) X register char *s; X! int xconst; X { X register char *t; X register found; X*************** X*** 679,685 **** X for(t = s ; *t!=' ' && *t!='\t' && *t!='\0' ; ++t) X ; X if(*s == '\"')s++; X! if(t>s+const && chars[ s[0] ]==LETTER && chars[ s[1] ]==LETTER){ X while(s < t) X if(*s == '\"')s++; X else X--- 679,685 ---- X for(t = s ; *t!=' ' && *t!='\t' && *t!='\0' ; ++t) X ; X if(*s == '\"')s++; X! if(t>s+xconst && chars[ s[0] ]==LETTER && chars[ s[1] ]==LETTER){ X while(s < t) X if(*s == '\"')s++; X else X*************** X*** 739,747 **** X #define SKIPBLANK(cp) while(*cp == ' ' || *cp == '\t') { cp++; } X #define SKIPNONBLANK(cp) while(*cp !=' ' && *cp !='\cp' && *cp !='\0') { cp++; } X X! meputmac(cp, const) X reg char *cp; X! int const; X { X reg char *np; X int found; X--- 739,747 ---- X #define SKIPBLANK(cp) while(*cp == ' ' || *cp == '\t') { cp++; } X #define SKIPNONBLANK(cp) while(*cp !=' ' && *cp !='\cp' && *cp !='\0') { cp++; } X X! meputmac(cp, xconst) X reg char *cp; X! int xconst; X { X reg char *np; X int found; X*************** X*** 800,809 **** X /* X * Determine if the argument merits being printed X * X! * const is the cut off point below which something X * is not a word. X */ X! if ( ( (np - cp) > const) X && ( inquote X || (chars[cp[0]] == LETTER)) ){ X for (cp = cp; cp < np; cp++){ X--- 800,809 ---- X /* X * Determine if the argument merits being printed X * X! * xconst is the cut off point below which something X * is not a word. X */ X! if ( ( (np - cp) > xconst) X && ( inquote X || (chars[cp[0]] == LETTER)) ){ X for (cp = cp; cp < np; cp++){ X*** ./usr/src/usr.bin/f77/putdmr.c.orig Wed Jan 30 22:39:39 2002 X--- ./usr/src/usr.bin/f77/putdmr.c Tue Jan 7 22:49:11 2020 X*************** X*** 1,17 **** X /* INTERMEDIATE CODE GENERATION FOR D. M. RITCHIE C COMPILERS */ X- #if FAMILY != DMR X- WRONG put FILE !!!! X- #endif X X #include "defs" X #include "string_defs" X #include "dmrdefs" X X X extern int ops2[]; X extern int types2[]; X X- X puthead(s, class) X char *s; X int class; X--- 1,16 ---- X /* INTERMEDIATE CODE GENERATION FOR D. M. RITCHIE C COMPILERS */ X X #include "defs" X #include "string_defs" X #include "dmrdefs" X X+ #if FAMILY != DMR X+ WRONG put FILE !!!! X+ #endif X X extern int ops2[]; X extern int types2[]; X X puthead(s, class) X char *s; X int class; X*************** X*** 22,28 **** X p2op2(P2SETREG, ARGREG-maxregvar); X p2op(P2PROG); /* .text */ X /* X! * 11/12/92, sms@192.26.147.1 X * The optimizer (/lib/c2) works on blocks of code delimited by .globl X * statements. Without the addition below the fortran program ends up X * being one huge block which was causing the optimizer to blow up. Large X--- 21,28 ---- X p2op2(P2SETREG, ARGREG-maxregvar); X p2op(P2PROG); /* .text */ X /* X! * 2020/1/7 - changes for ANSI cpp X! * 11/12/92, sms X * The optimizer (/lib/c2) works on blocks of code delimited by .globl X * statements. Without the addition below the fortran program ends up X * being one huge block which was causing the optimizer to blow up. Large X*************** X*** 44,77 **** X } X } X X- X- X- X putnreg() X { X p2op2(P2SETREG, ARGREG-nregvar); X } X X- X- X- X- X- X puteof() X { X p2op(P2EOF); X } X X- X- X putstmt() X { X p2op2(P2EXPR, lineno); X } X X- X- X- X /* put out code for if( ! p) goto l */ X putif(p,l) X register expptr p; X--- 44,64 ---- X*************** X*** 93,102 **** X } X } X X- X- X- X- X /* put out code for goto l */ X putgoto(label) X int label; X--- 80,85 ---- X*************** X*** 104,110 **** X p2op2(P2GOTO, label); X } X X- X /* branch to address constant or integer variable */ X putbranch(p) X register struct addrblock *p; X--- 87,92 ---- X*************** X*** 122,129 **** X putstmt(); X } X X- X- X /* put out label l: */ X putlabel(label) X int label; X--- 104,109 ---- X*************** X*** 131,139 **** X p2op2(P2LABEL, label); X } X X- X- X- X putexpr(p) X expptr p; X { X--- 111,116 ---- X*************** X*** 141,150 **** X putstmt(); X } X X- X- X- X- X prarif(p, neg, zero, pos) X expptr p; X int neg ,zero, pos; X--- 118,123 ---- X*************** X*** 157,164 **** X p2i(lineno); X } X X- X- X putcmgo(index, nlab, labs) X expptr index; X int nlab; X--- 130,135 ---- X*************** X*** 343,350 **** X } X } X X- X- X LOCAL putop(p) X register expptr p; X { X--- 314,319 ---- X*************** X*** 483,490 **** X putstmt(); X } X X- X- X LOCAL putpower(p) X expptr p; X { X--- 452,457 ---- X*************** X*** 537,545 **** X frexpr(p); X } X X- X- X- X LOCAL struct addrblock *intdouble(p, ncommap) X struct addrblock *p; X int *ncommap; X--- 504,509 ---- X*************** X*** 552,561 **** X return(t); X } X X- X- X- X- X LOCAL putcxeq(p) X register struct exprblock *p; X { X--- 516,521 ---- X*************** X*** 577,584 **** X return(lp); X } X X- X- X LOCAL putcxop(p) X expptr p; X { X--- 537,542 ---- X*************** X*** 590,597 **** X putcomma(ncomma, TYINT, NO); X } X X- X- X LOCAL struct addrblock *putcx1(p, ncommap) X register expptr p; X int *ncommap; X--- 548,553 ---- X*************** X*** 740,748 **** X return(resp); X } X X- X- X- X LOCAL putcxcmp(p) X register struct exprblock *p; X { X--- 696,701 ---- X*************** X*** 815,823 **** X /* NOTREACHED */ X } X X- X- X- X LOCAL putchop(p) X expptr p; X { X--- 768,773 ---- X*************** X*** 828,836 **** X putcomma(ncomma, TYCHAR, YES); X } X X- X- X- X LOCAL putcheq(p) X register struct exprblock *p; X { X--- 778,783 ---- X*************** X*** 855,863 **** X free(p); X } X X- X- X- X LOCAL putchcmp(p) X register struct exprblock *p; X { X--- 802,807 ---- X*************** X*** 880,889 **** X } X } X X- X- X- X- X LOCAL putcat(lhs, rhs) X register struct addrblock *lhs; X register expptr rhs; X--- 824,829 ---- X*************** X*** 903,912 **** X putcomma(ncomma, TYINT, NO); X } X X- X- X- X- X LOCAL ncat(p) X register expptr p; X { X--- 843,848 ---- X*************** X*** 915,923 **** X else return(1); X } X X- X- X- X LOCAL putct1(q, lp, cp, ip, ncommap) X register expptr q; X register struct addrblock *lp, *cp; X--- 851,856 ---- X*************** X*** 1027,1035 **** X frexpr(p); X } X X- X- X- X X LOCAL struct addrblock *putcall(p) X register struct exprblock *p; X--- 960,965 ---- X*************** X*** 1144,1151 **** X return(fval); X } X X- X- X LOCAL putmnmx(p) X register struct exprblock *p; X { X--- 1074,1079 ---- X*************** X*** 1182,1188 **** X else X putx(qp); X } X- X putcomma(ncomma, type, NO); X frtemp(sp); X frtemp(tp); X--- 1110,1115 ---- X*************** X*** 1189,1197 **** X frchain( &p0 ); X } X X- X- X- X LOCAL putcomma(n, type, indir) X int n, type, indir; X { X--- 1116,1121 ---- X*************** X*** 1206,1212 **** X * routines that put bytes on the pass2 input stream X */ X X- X p2i(k) X int k; X { X--- 1130,1135 ---- X*************** X*** 1217,1225 **** X fputc(*s, textfile); X } X X- X- X- X p2op(op) X int op; X { X--- 1140,1145 ---- X*************** X*** 1227,1235 **** X fputc(0376, textfile); /* MAGIC NUMBER */ X } X X- X- X- X p2str(s) X register char *s; X { X--- 1147,1152 ---- X*************** X*** 1238,1245 **** X while(*s++); X } X X- X- X p2op2(op, i) X int op, i; X { X--- 1155,1160 ---- X*************** X*** 1247,1254 **** X p2i(i); X } X X- X- X p2reg(k, type) X int k; X { X--- 1162,1167 ---- X*************** X*** 1257,1264 **** X p2i(k); X } X X- X- X LOCAL p2li(n) X long int n; X { X--- 1170,1175 ---- X*************** X*** 1269,1276 **** X p2i(*p++); X } X X- X- X LOCAL p2offset(type, offp) X int type; X register expptr offp; X--- 1180,1185 ---- X*************** X*** 1300,1303 **** X putx( offp ); X p2op2(P2PLUS, type); X } X- } X--- 1209,1211 ---- X*** ./usr/src/usr.bin/roff/nroff_term/tabnec-t.c.orig Thu Apr 24 02:20:32 1986 X--- ./usr/src/usr.bin/roff/nroff_term/tabnec-t.c Tue Jan 7 22:49:31 2020 X*************** X*** 1,4 **** X! /* tabnec-t.c 4.2 85/02/14 */ X #define INCH 240 X /* X * NEC Spinwriter 5500 or 7700 12 Pitch X--- 1,4 ---- X! /* tabnec-t.c 4.3 2020/1/7 */ X #define INCH 240 X /* X * NEC Spinwriter 5500 or 7700 12 Pitch X*************** X*** 233,239 **** X "\001+\b_", /*plus-minus*/ X "\001U", /*cup (union)*/ X "\001\200\140\203\136\245", /*cap (intersection)*/ X! #ifdef 0 X "\001\200(\341\206_\345\241_\306\250", /*subset of*/ X "\001\341_\345\241_\306\207)\251", /*superset of*/ X "\001\200(\341\206_\345\241_\307\241_\341\250", /*improper subset*/ X--- 233,239 ---- X "\001+\b_", /*plus-minus*/ X "\001U", /*cup (union)*/ X "\001\200\140\203\136\245", /*cap (intersection)*/ X! #if 0 X "\001\200(\341\206_\345\241_\306\250", /*subset of*/ X "\001\341_\345\241_\306\207)\251", /*superset of*/ X "\001\200(\341\206_\345\241_\307\241_\341\250", /*improper subset*/ X*** ./usr/src/usr.bin/tip/cmds.c.orig Fri Jul 24 01:53:55 1992 X--- ./usr/src/usr.bin/tip/cmds.c Tue Jan 7 22:50:35 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)cmds.c 5.6 (Berkeley) 12/22/87"; X! #endif not lint X X #include "tip.h" X /* X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)cmds.c 5.7 (2.11BSD) 2020/1/7"; X! #endif X X #include "tip.h" X /* X*************** X*** 767,773 **** X { X X unraw(); X! kill(c == CTRL(y) ? getpid() : 0, SIGTSTP); X raw(); X } X X--- 767,773 ---- X { X X unraw(); X! kill(c == CTRL('y') ? getpid() : 0, SIGTSTP); X raw(); X } X X*** ./usr/src/usr.bin/tip/cmdtab.c.orig Tue Sep 20 17:15:54 1988 X--- ./usr/src/usr.bin/tip/cmdtab.c Tue Jan 7 22:51:11 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)cmdtab.c 5.4 (Berkeley) 12/22/87"; X! #endif not lint X X #include "tip.h" X X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)cmdtab.c 5.5 (2.11BSD) 2020/1/7"; X! #endif X X #include "tip.h" X X*************** X*** 27,35 **** X #endif X { 'c', NORM, "change directory", chdirectory }, X { '.', NORM, "exit from tip", finish }, X! {CTRL(d),NORM,"exit from tip", finish }, X! {CTRL(y),NORM,"suspend tip (local+remote)", suspend }, X! {CTRL(z),NORM,"suspend tip (local only)", suspend }, X { 's', NORM, "set variable", variable }, X { '?', NORM, "get this summary", help }, X { '#', NORM, "send break", genbrk }, X--- 27,35 ---- X #endif X { 'c', NORM, "change directory", chdirectory }, X { '.', NORM, "exit from tip", finish }, X! {CTRL('d'),NORM,"exit from tip", finish }, X! {CTRL('y'),NORM,"suspend tip (local+remote)", suspend }, X! {CTRL('z'),NORM,"suspend tip (local only)", suspend }, X { 's', NORM, "set variable", variable }, X { '?', NORM, "get this summary", help }, X { '#', NORM, "send break", genbrk }, X*** ./usr/src/usr.bin/tip/vars.c.orig Tue Sep 20 17:15:54 1988 X--- ./usr/src/usr.bin/tip/vars.c Tue Jan 7 22:51:45 2020 X*************** X*** 4,12 **** X * specifies the terms and conditions for redistribution. X */ X X! #ifndef lint X! static char sccsid[] = "@(#)vars.c 5.2 (Berkeley) 12/22/87"; X! #endif not lint X X #include "tip.h" X X--- 4,12 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)vars.c 5.3 (2.11BSD) 2020/1/7"; X! #endif X X #include "tip.h" X X*************** X*** 31,37 **** X { "exceptions", STRING|INIT|IREMOTE, (READ|WRITE)< X #include X #include X--- 4,13 ---- X * specifies the terms and conditions for redistribution. X */ X X! #if !defined(lint) && defined(DOSCCS) X! static char sccsid[] = "@(#)trpt.c 5.3 (2.11BSD) 2020/1/7"; X #endif not lint X X #include X #include X #include X*************** X*** 277,283 **** X flags = ti->ti_flags; X if (flags) { X char *cp = "<"; X! #define pf(f) { if (ti->ti_flags&TH_/**/f) { printf("%s%s", cp, "f"); cp = ","; } } X pf(SYN); pf(ACK); pf(FIN); pf(RST); pf(PUSH); pf(URG); X printf(">"); X } X--- 271,277 ---- X flags = ti->ti_flags; X if (flags) { X char *cp = "<"; X! #define pf(f) { if (ti->ti_flags&TH_ ## f) { printf("%s%s", cp, "f"); cp = ","; } } X pf(SYN); pf(ACK); pf(FIN); pf(RST); pf(PUSH); pf(URG); X printf(">"); X } X*** ./usr/src/lib/libc/pdp/sys/Makefile.orig Sat Jan 4 21:40:01 2020 X--- ./usr/src/lib/libc/pdp/sys/Makefile Fri Jan 10 16:10:39 2020 X*************** X*** 1,6 **** X # Placed in the public domain - 1995/05/06 X # X! # @(#)Makefile 1.9.1 (2.11BSD) 2020/1/4 X X CPP= /lib/cpp X LD= /bin/ld X--- 1,6 ---- X # Placed in the public domain - 1995/05/06 X # X! # @(#)Makefile 1.9.2 (2.11BSD) 2020/1/10 X X CPP= /lib/cpp X LD= /bin/ld X*************** X*** 54,61 **** X X OBJS= ${PDPOBJS} ${NORM1} ${NORM2} ${LONG} ${ERROR} ${NOERROR} X X- tags: X- X .s.o: X /lib/cpp -DPROF ${DEFS} $< | sed -e 's;^#;/;' | as -V -o $@ X -ld -X -r $*.o X--- 54,59 ---- X*************** X*** 127,129 **** X--- 125,129 ---- X X clean: X rm -f *.o profiled/*.o a.out syslib syslib_p X+ X+ tags: SHAR_EOF fi exit 0 # End of shell archive