chris@umcp-cs.UUCP (02/04/84)
I've received enough requests that I might as well just post the diffs. A word of warning: my changes aren't guaranteed in any way; they will probably only work on 4.1BSD [nt]roff; and they will probably only work with VMUNIX defined. (They *do* work for us :->.) (To the curious: the diff listings are off the eneevax machine, where I have original sources; thus the "Installed CS version" log messages.) RCS file: RCS/Makenroff,v; Working file: Makenroff head: 1.2 locks: access list: symbolic names: comment leader: "# " total revisions: 2; selected revisions: 2 description: Makenroff from UCB ---------------------------- revision 1.2 date: 84/01/29 16:31:14; author: bin; state: Exp; lines added/del: 6/14 Installed CS version ---------------------------- revision 1.1 date: 84/01/29 16:09:29; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/Makenroff,v retrieving revision 1.1 diff -b -c1 -r1.1 Makenroff *** /tmp/,RCSt1025751 Fri Feb 3 20:47:13 1984 --- Makenroff Sun Jan 29 16:31:24 1984 *************** *** 1,2 ! CFLAGS = -O -DNROFF -DVMUNIX c = ni.o nii.o n1.o n2.o n3.o n4.o n5.o n6.o n7.o n8.o n9.o n10.o --- 1,2 ----- ! CFLAGS = -O -DNROFF -DVMUNIX -DBIG=1024 -DFAST c = ni.o nii.o n1.o n2.o n3.o n4.o n5.o n6.o n7.o n8.o n9.o n10.o *************** *** 4,6 nroff : $c $s ! $(CC) -z -o nroff $s $c hytab.o : hytab.c --- 4,7 ----- nroff : $c $s ! $(CC) $(CFLAGS) -o nroff $s $c -ltermlib ! $c: tdef.h hytab.o : hytab.c *************** *** 6,11 hytab.o : hytab.c ! cc -S hytab.c ! /usr/src/cmd/as/:rofix hytab.s ! as -o hytab.o hytab.s ! rm hytab.s ntab.o: ntab.c --- 7,9 ----- hytab.o : hytab.c ! cc -R -c hytab.c ntab.o: ntab.c *************** *** 11,16 ntab.o: ntab.c ! cc -S ntab.c ! /usr/src/cmd/as/:rofix ntab.s ! as -o ntab.o ntab.s ! rm ntab.s suftab.o: suftab.c --- 9,11 ----- ntab.o: ntab.c ! cc -R -c ntab.c suftab.o: suftab.c *************** *** 16,21 suftab.o: suftab.c ! cc -S suftab.c ! /usr/src/cmd/as/:rofix suftab.s ! as -o suftab.o suftab.s ! rm suftab.s --- 11,13 ----- suftab.o: suftab.c ! cc -R -c suftab.c RCS file: RCS/Maketroff,v; Working file: Maketroff head: 1.2 locks: access list: symbolic names: comment leader: "# " total revisions: 2; selected revisions: 2 description: Maketroff from UCB ---------------------------- revision 1.2 date: 84/01/29 16:31:25; author: bin; state: Exp; lines added/del: 5/10 Installed CS version ---------------------------- revision 1.1 date: 84/01/29 16:09:38; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/Maketroff,v retrieving revision 1.1 diff -b -c1 -r1.1 Maketroff *** /tmp/,RCSt1025757 Fri Feb 3 20:47:16 1984 --- Maketroff Sun Jan 29 19:17:10 1984 *************** *** 1,2 ! CFLAGS = -O -DVMUNIX c = ni.o nii.o n1.o n2.o n3.o n4.o n5.o t6.o n7.o n8.o n9.o t10.o --- 1,2 ----- ! CFLAGS = -O -DVMUNIX -DBIG=1024 -DFAST c = ni.o nii.o n1.o n2.o n3.o n4.o n5.o t6.o n7.o n8.o n9.o t10.o *************** *** 4,6 troff : $c $s ! $(CC) -z -o troff $s $c hytab.o : hytab.c --- 4,7 ----- troff : $c $s ! $(CC) $(CFLAGS) -o troff $s $c -ltermlib ! $c: tdef.h hytab.o : hytab.c *************** *** 6,11 hytab.o : hytab.c ! cc -S hytab.c ! /usr/src/cmd/as/:rofix hytab.s ! as -o hytab.o hytab.s ! rm hytab.s suftab.o: suftab.c --- 7,9 ----- hytab.o : hytab.c ! cc -R -c hytab.c suftab.o: suftab.c *************** *** 11,16 suftab.o: suftab.c ! cc -S suftab.c ! /usr/src/cmd/as/:rofix suftab.s ! as -o suftab.o suftab.s ! rm suftab.s # tab3.o: tab3.c --- 9,11 ----- suftab.o: suftab.c ! cc -R -c suftab.c # tab3.o: tab3.c RCS file: RCS/n1.c,v; Working file: n1.c head: 1.2 locks: access list: symbolic names: comment leader: " * " total revisions: 2; selected revisions: 2 description: n1.c from UCB ---------------------------- revision 1.2 date: 84/02/03 20:11:57; author: bin; state: Exp; lines added/del: 39/3 Installed CS version ---------------------------- revision 1.1 date: 84/02/03 20:11:46; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/n1.c,v retrieving revision 1.1 diff -b -c1 -r1.1 n1.c *** /tmp/,RCSt1025763 Fri Feb 3 20:47:22 1984 --- n1.c Fri Feb 3 20:12:11 1984 *************** *** 143,144 #endif --- 143,145 ----- #endif + char *getenv (); *************** *** 251,252 continue; #endif --- 252,259 ----- continue; + case 'F': + { + extern char *fontfile; + fontfile = &argv[0][2]; + } + continue; #endif *************** *** 419,420 static int mode; --- 426,429 ----- static int mode; + char *tbptr; + char tbuf[1024]; *************** *** 420,421 if (ttyp==0) --- 429,439 ----- + /* 11-3-83 EMA & BNI + Added following check so that messages are only turned off + if the output is going to the terminal, and the terminal + is a hard copy terminal or of unknown type */ + + tbptr = getenv ("TERM"); + if (!isatty (1) || (tgetent (tbuf, tbptr) > 0 && !tgetflag ("hc"))) + return; + if (ttyp==0) *************** *** 450,452 register i,j; ! extern filep boff(); --- 468,470 ----- register i,j; ! /* extern filep boff(); */ *************** *** 474,476 } ! getch(){ register int i, j, k; --- 492,496 ----- } ! ! #ifndef FAST ! getch () { register int i, j, k; *************** *** 478,479 level++; g0: --- 498,508 ----- level++; + #else FAST + _getch_ () { + register int i, j, k; + + level++; + /* when we get here we know ch and nlflag are both zero */ + goto gfast; + #endif FAST + g0: *************** *** 491,492 if((k = (i = getch0()) & CMASK) != ESC){ --- 520,522 ----- + gfast: if((k = (i = getch0()) & CMASK) != ESC){ *************** *** 703,705 char ifilt[32] = {0,001,002,003,0,005,006,007,010,011,012}; ! getch0(){ register int i, j; --- 733,737 ----- char ifilt[32] = {0,001,002,003,0,005,006,007,010,011,012}; ! ! #ifndef FAST ! getch0 () { register int i, j; *************** *** 708,709 if(nchar){nchar--; return(rchar);} --- 740,745 ----- if(nchar){nchar--; return(rchar);} + #else FAST + _getch0_ () { + register int i, j; + #endif FAST RCS file: RCS/n10.c,v; Working file: n10.c head: 1.2 locks: access list: symbolic names: comment leader: " * " total revisions: 2; selected revisions: 2 description: n10.c from UCB ---------------------------- revision 1.2 date: 84/01/29 18:49:45; author: bin; state: Exp; lines added/del: 16/3 Installed CS hacks (with #ifdef PRINTRONIX around the Printronix code) ---------------------------- revision 1.1 date: 84/01/29 18:49:27; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/n10.c,v retrieving revision 1.1 diff -b -c1 -r1.1 n10.c *** /tmp/,RCSt1025770 Fri Feb 3 20:47:31 1984 --- n10.c Sun Jan 29 18:50:06 1984 *************** *** 83,87 } ! ptout(i) ! int i; ! { *olinep++ = i; --- 83,87 ----- } ! ! #ifndef FAST ! ptout (i) int i; { *olinep++ = i; *************** *** 89,90 if((i&CMASK) != '\n')return; olinep--; --- 89,93 ----- if((i&CMASK) != '\n')return; + #else FAST + _ptout_ () { + #endif FAST olinep--; *************** *** 145,146 } if(xfont == ulfont){ --- 148,150 ----- } + #ifndef PRINTRONIX if(xfont == ulfont){ *************** *** 149,150 } while(*codep != 0){ --- 153,155 ----- } + #endif PRINTRONIX while(*codep != 0){ *************** *** 162,163 if(!w)for(k=phyw/t.Char;k>0;k--)oput('\b'); } --- 167,176 ----- if(!w)for(k=phyw/t.Char;k>0;k--)oput('\b'); + #ifdef PRINTRONIX + /* Do underlining here, after the characters are printed. This is + the way the Printronix likes them. */ + if (xfont == ulfont) { + for (k = w / t.Char; --k >= 0;) oput ('\b'); + for (k = w / t.Char; --k >= 0;) oput ('_'); + } + #endif PRINTRONIX } RCS file: RCS/n3.c,v; Working file: n3.c head: 1.2 locks: access list: symbolic names: comment leader: " * " total revisions: 2; selected revisions: 2 description: n3.c from UCB ---------------------------- revision 1.2 date: 84/01/29 18:36:27; author: bin; state: Exp; lines added/del: 25/24 Installed CS version -- much speed hacking ---------------------------- revision 1.1 date: 84/01/29 18:36:15; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/n3.c,v retrieving revision 1.1 diff -b -c1 -r1.1 n3.c *** /tmp/,RCSt1025776 Fri Feb 3 20:47:38 1984 --- n3.c Sun Jan 29 18:36:47 1984 *************** *** 17,18 unsigned blist[NBLIST]; --- 17,21 ----- + #define blisti(i) (((i)-NEV*EVS)/(BLK)) + #define boff(i) (((filep)i)*BLK + NEV*EVS) + unsigned blist[NBLIST]; *************** *** 135,137 findmn(i) ! int i; { --- 138,140 ----- findmn(i) ! register i; { *************** *** 138,139 register j; --- 141,143 ----- register j; + register struct contab *p; *************** *** 139,144 ! for(j=0;j<NM;j++){ ! if(i == (contab[j].rq & ~MMASK))break; ! } ! if(j==NM)j = -1; return(j); --- 143,150 ----- ! for (p = contab; p < &contab[NM]; p++) ! if (i == (p->rq & ~MMASK)) ! break; ! j = p - contab; ! if (j == NM) ! j = -1; return(j); *************** *** 148,150 { - extern filep boff(); if(i >= 0){ --- 154,155 ----- { if(i >= 0){ *************** *** 159,161 register i; - extern filep boff(); register filep savip; --- 164,165 ----- register i; register filep savip; *************** *** 275,277 register i; - extern filep boff(); filep j; --- 279,280 ----- register i; filep j; *************** *** 300,306 } ! filep boff(i) ! int i; ! { ! return(((filep)i)*BLK + NEV*EVS); ! } wbt(i) --- 303,305 ----- } ! #ifndef FAST wbt(i) *************** *** 311,312 } wbf(i) --- 310,312 ----- } + #endif FAST wbf(i) *************** *** 347,353 } ! blisti(i) ! filep i; ! { ! return((i-NEV*EVS)/(BLK)); ! } rbf(){ --- 347,350 ----- } ! ! #ifndef FAST rbf(){ *************** *** 363,364 } rbf0(p) --- 360,362 ----- } + rbf0(p) *************** *** 379,380 } filep incoff(p) --- 377,380 ----- } + #endif FAST + filep incoff(p) *************** *** 380,382 filep incoff(p) ! filep p; { --- 380,382 ----- filep incoff(p) ! register filep p; { *************** *** 383,387 register i; ! register filep j; ! if(!((j = (++p)) & (BLK-1))){ ! if((i = blist[blisti(--p)]) == -1){ prstr("Bad storage allocation.\n"); --- 383,387 ----- register i; ! ! if (!(++p & (BLK-1))) { ! if ((i = blist[blisti(--p)]) == -1) { prstr("Bad storage allocation.\n"); *************** *** 389,391 } ! j = ((filep)i)<<BLKBITS; } --- 389,391 ----- } ! p = ((filep) i) << BLKBITS; } *************** *** 391,393 } ! return(j); } --- 391,393 ----- } ! return p; } *************** *** 393,394 } popi(){ --- 393,395 ----- } + popi(){ RCS file: RCS/t10.c,v; Working file: t10.c head: 1.2 locks: access list: symbolic names: comment leader: " * " total revisions: 2; selected revisions: 2 description: t10.c from UCB ---------------------------- revision 1.2 date: 84/01/29 18:55:53; author: bin; state: Exp; lines added/del: 9/2 Installed CS speed hacks ---------------------------- revision 1.1 date: 84/01/29 18:53:14; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/t10.c,v retrieving revision 1.1 diff -b -c1 -r1.1 t10.c *** /tmp/,RCSt1025784 Fri Feb 3 20:47:46 1984 --- t10.c Sun Jan 29 18:56:03 1984 *************** *** 67,69 } ! ptout(i) int i; --- 67,71 ----- } ! ! #ifndef FAST ! ptout (i) int i; *************** *** 69,70 int i; { --- 71,75 ----- int i; + #else FAST + _ptout_ () + #endif FAST { *************** *** 74,75 if((i & CMASK) != '\n'){ --- 79,81 ----- + #ifndef FAST if((i & CMASK) != '\n'){ *************** *** 78,79 } if(olinep == oline){ --- 84,86 ----- } + #endif FAST if(olinep == oline){ *************** *** 150,152 ptout0(i) ! int i; { --- 157,159 ----- ptout0(i) ! register int i; { RCS file: RCS/t6.c,v; Working file: t6.c head: 1.2 locks: access list: symbolic names: comment leader: " * " total revisions: 2; selected revisions: 2 description: t6.c from UCB ---------------------------- revision 1.2 date: 84/01/29 18:52:54; author: bin; state: Exp; lines added/del: 6/3 Installed CS hacks ---------------------------- revision 1.1 date: 84/01/29 18:52:41; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/t6.c,v retrieving revision 1.1 diff -b -c1 -r1.1 t6.c *** /tmp/,RCSt1025790 Fri Feb 3 20:47:52 1984 --- t6.c Sun Jan 29 18:53:03 1984 *************** *** 50,53 extern int lg; ! char fontfile[] = "/usr/lib/font/ftXX"; ! int ffi = 16; extern int bd; --- 50,53 ----- extern int lg; ! char *fontfile = "/usr/lib/font/ftXX"; ! int ffi; extern int bd; *************** *** 111,113 getcw(i) ! int i; { --- 111,113 ----- getcw(i) ! register i; { *************** *** 507,508 if(skip() || !(j = getrq())){prstr("fp: no font name\n"); return;} fontfile[ffi] = j & BMASK; --- 507,511 ----- if(skip() || !(j = getrq())){prstr("fp: no font name\n"); return;} + if (ffi == 0) + while (fontfile[ffi] != 'X') + ffi++; fontfile[ffi] = j & BMASK; RCS file: RCS/tdef.h,v; Working file: tdef.h head: 1.2 locks: access list: symbolic names: comment leader: " * " total revisions: 2; selected revisions: 2 description: tdef.h from UCB ---------------------------- revision 1.2 date: 84/01/29 19:06:09; author: bin; state: Exp; lines added/del: 54/10 Installed CS version, including speed hacks ---------------------------- revision 1.1 date: 84/01/29 18:56:21; author: bin; state: Exp; Initial revision ============================================================================= RCS file: RCS/tdef.h,v retrieving revision 1.1 diff -b -c1 -r1.1 tdef.h *** /tmp/,RCSt1025797 Fri Feb 3 20:48:03 1984 --- tdef.h Sun Jan 29 19:06:45 1984 *************** *** 1,5 ! #include <pagsiz.h> ! #define BUFSIZ BSIZE ! #undef BMASK ! #define MAXPTR 0x7fffffff /* max value of any pointer variable */ #ifdef NROFF /*NROFF*/ --- 1,2 ----- ! #define MAXPTR (char *)0x7fffffff /* max value of any pointer variable */ #ifdef NROFF /*NROFF*/ *************** *** 13,15 #define UNPAD 0227 ! #define PO 0 /*page offset*/ #define ASCII 1 --- 10,12 ----- #define UNPAD 0227 ! #define PO INCH /*page offset*/ #define ASCII 1 *************** *** 46,49 #define VS INCH/6 /*vert space; 12points*/ ! /* #define NN 132 /*number registers*/ ! #define NN 528 #define NNAMES 14 /*predefined reg names*/ --- 43,50 ----- #define VS INCH/6 /*vert space; 12points*/ ! #ifdef VMUNIX ! #define NN 528 /*number registers*/ ! #else ! #define NN 132 /*number registers*/ ! #endif ! /* #define NN 200 */ #define NNAMES 14 /*predefined reg names*/ *************** *** 54,56 #define EVLSZ 10 /*size of ev stack*/ - #define EVS 3*256 /*environment size in words*/ /* #define EVS 4*256 */ --- 55,56 ----- #define EVLSZ 10 /*size of ev stack*/ /* #define EVS 4*256 */ *************** *** 56,57 /* #define EVS 4*256 */ #define NM 300 /*requests + macros*/ --- 56,61 ----- /* #define EVS 4*256 */ + #ifdef VMUNIX + #define NM 600 + #define EVS 6*256 /*environment size in words*/ + #else #define NM 300 /*requests + macros*/ *************** *** 57,58 #define NM 300 /*requests + macros*/ #define DELTA 512 /*delta core bytes*/ --- 61,64 ----- #define NM 300 /*requests + macros*/ + #define EVS 3*256 /*environment size in words*/ + #endif #define DELTA 512 /*delta core bytes*/ *************** *** 62,63 #define NSO 5 /*"so" depth*/ #define WDSIZE 170 /*word buffer size*/ --- 68,73 ----- #define NSO 5 /*"so" depth*/ + #ifdef VMUNIX + #define WDSIZE 340 /*word buffer size*/ + #define LNSIZE 960 /*line buffer size*/ + #else #define WDSIZE 170 /*word buffer size*/ *************** *** 64,65 #define LNSIZE 480 /*line buffer size*/ /* #define LNSIZE 680 */ --- 74,76 ----- #define LNSIZE 480 /*line buffer size*/ + #endif /* #define LNSIZE 680 */ *************** *** 95,96 #define NPP 10 /*pads per field*/ #define FBUFSZ 256 /*field buf size words*/ --- 106,112 ----- #define NPP 10 /*pads per field*/ + #ifdef VMUNIX + #define FBUFSZ 1024 + #define OBUFSZ 1024 /*bytes*/ + #define IBUFSZ 1024 /*bytes*/ + #else #define FBUFSZ 256 /*field buf size words*/ *************** *** 96,99 #define FBUFSZ 256 /*field buf size words*/ ! #define OBUFSZ BUFSIZ /*bytes*/ ! #define IBUFSZ BUFSIZ /*bytes*/ #define NC 256 /*cbuf size words*/ --- 112,116 ----- #define FBUFSZ 256 /*field buf size words*/ ! #define OBUFSZ 512 /*bytes*/ ! #define IBUFSZ 512 /*bytes*/ ! #endif #define NC 256 /*cbuf size words*/ *************** *** 126 --- 143,170 ----- + /* NOTE: THIS WON'T WORK UNDER NON-VMUNIX!! */ + /* Troff spends about 20% of its time in getch() and getch0(); this + is an attempt to speed that up. */ + /* Copyright (c) 1983 University of Maryland and all that stuff.... + Maybe I should start putting *my* name in these things. -ACT */ + #ifdef FAST + int _ch_, ch, nlflg, ch0, nchar, rchar, app; + int *rbuf, Buf[NBLIST*BLK + NEV*EVS], *olinep; + filep roff; + + #define getch() (ch?((((_ch_=ch)&CMASK)=='\n'?nlflg++:0),ch=0,_ch_):\ + nlflg?'\n':_getch_()) + #define getch0() (ch0?(_ch_=ch0,ch0=0,_ch_):nchar?(--nchar,rchar):_getch0_()) + #define rbf0(p) (((p)&~(BLK-1))==roff?rbuf[(p)&(BLK-1)]:\ + (roff=(p)&(~(BLK-1)),rbuf= &Buf[roff],rbuf[p&(BLK-1)])) + #define rbf() (((_ch_=rbf0(ip))==0?(app?0:(_ch_=popi()))\ + :(ip=incoff(ip))),_ch_) + #define wbt(i) (wbf(i),wbfl()) + + #ifdef NROFF + int oline[LNSIZE+1]; + + #define ptout(i) ((olinep>= &oline[LNSIZE]?0:(*olinep++=(i))),\ + ((i)&CMASK)=='\n'?_ptout_(i):0) + #else (TROFF) + #define ptout(i) (((i)&CMASK)!='\n'?*olinep++=(i):_ptout_()) + #endif NROFF + + #endif FAST -- In-Real-Life: Chris Torek, Univ of MD Comp Sci UUCP: {seismo,allegra,brl-bmd}!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris.umcp-cs@CSNet-Relay