|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T U
Length: 37767 (0x9387) Types: TextFile Notes: Uncompressed file
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦beba6c409⟧ »unix3.0/Unsupported.tar.Z« └─⟦25c524ae4⟧ └─⟦cdc4d4e87⟧ »Unsupported/Pas.shar.Z« └─⟦this⟧
# This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #-----cut here-----cut here-----cut here-----cut here----- #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # README.PYRAMID # README.SYS_V # Setup.PYR # Setup.SUN_V2 # Setup.SUN_V3 # Setup.SYS_V # Setup.VAX4_2 # Setup.VAX4_3 # pxp.diffs # sed.Sun_changes # ext.h # texpaths.h # whoami.h # This archive created: Fri Jul 8 12:24:31 1988 echo shar: extracting README.PYRAMID '(4455 characters)' cat << \SHAR_EOF > README.PYRAMID This is a version of TeX for the Pyramid 90x running OSx 2.5. It uses the new Pyramid PASCAL compiler, and invokes a (currently) non-standard version of the assembler by using the -T4/bin/nas flag for "pascal". Change the Makefile if the invocation to PASCAL needs to change. In order to simplify the porting task, all the VAX and SUN-related portions of the distribution have been swept clean, so theoretically, the steps for producing TeX and LaTeX are: Edit texpaths.h to correspond to your life-style. Edit Makefile to correspond to your PASCAL rituals. You may also want to look at the paths used by "make install". Make the directory /usr/lib/tex (or whatever you put in texpaths.h) as well as /usr/lib/tex/fonts and /usr/lib/tex/macros. Copy the appropriate rasters from ../pxl* into /usr/lib/tex/fonts Copy everything from =macros into /usr/lib/tex/macros. Type "make" (more like "make >& #make.errs"). Go have coffee, play "hack", or read The TeXbook while you wait. The whole operation takes maybe an hour on an unloaded system. Move or copy "initex.pool" to "tex.pool" in your TeX library directory (e.g. /usr/lib/tex) as per texpaths.h. Change directories to =macros. Type "../initex". Wait a minute. When you get the '**' prompt, type: \input plain\dump INITEX will read the plain TeX macros, print a whole bunch of information and eventually write "plain.fmt" in the current directory. If you think you'll install "virtex", copy plain.fmt into /usr/lib/tex/macros. Type "../virtex". When you get the "**" prompt, type &plain \read 0 to \blort After several seconds, you will get the prompt, \blort= Hit the QUIT character (usually ctrl-\), causing a core dump. It may take several seconds before you see the core dump message and return to the Shell, so be patient. Type "../../undump/undump tex ../virtex core". The "undump" program resurrects the core dump into a runnable binary (tex) that has everything preinitialized the way it was when the dump happened, so you can install "tex" as a pre-loaded plain TeX processor. Undump takes about a minute and produces a mighty 2.3 megabyte file as a result. If you are going to install LaTeX, go to =LaTeX and read the instructions there. You may also wish to look under =utils for miscellaneous utilities. Only "tgrind" and "s2latex" have been tested at TRW (and you probably won't have many Scribe files on a Pyramid). The only device driver that TRW has ported to the Pyramid is "ctex" for the Imagen (only one change was required). Good Luck. If you are a TeX wizard, the main change from the Vax version to the Pyramid version involves the way the compilers allocate storage. On the Vax, it's a little weird because you have to declare "eight-bits" as -128..127 to get one-byte storage. The Pyramid, which is far more fussy about word-alignment issues, has a compiler which evades the issue entirely and allocates 32-bit words for all integers regardless of range. Further, the only type of files that can be read eight bits at a time are "text" and "file of char". So a lot of the business with adding 256 to the -128..127 values goes away, and we read eight bits at a time by reading a char and taking its "ord". The external C routines think they know about the data types for the various externs that they manipulate (like "limit") when in fact they are all integers, so some changes were made there as well. Similar changes were needed to get the various components of the TeXware ensemble to work. By the way, because of the naive storage allocation of the Pascal compiler, the preloaded binaries for tex and latex are about 2.6 times the size of the corresponding binaries on the Vax. However, performance seems very good. A not-scientific benchmark (webman.tex) run several times on an unloaded Pyramid and a lightly-loaded Vax 11/780 showed the Pyramid version of TeX completing in slightly more than half the time of the Vax version. Your mileage may vary. Older files now replaced by those needed to get TeX to compile under on a Pyramid running OSx 4.0 (TeX 2.9). Corrections provided by: Scott Simpson TRW Space and Defense Sector ...{decvax,ihnp4,ucbvax}!trwrb!simpson (UUCP) trwrb!simpson@trwind.trw.com (ARPA) It is still advisable to see whether TeX-to-C will serve better. This is genuine TeX, and passes trip on all machines tested so far. SHAR_EOF if test 4455 -ne "`wc -c README.PYRAMID`" then echo shar: error transmitting README.PYRAMID '(should have been 4455 characters)' fi echo shar: extracting README.SYS_V '(9137 characters)' cat << \SHAR_EOF > README.SYS_V I have ported the complete UNIX TeX distribution to a AT&T 3B2 computer running: UNIX System V Release 3.0 AT&T 3B2 Version 2 cc: command -C-FP+ Release 1.0 12/2/85 ld : C-FP+ Release 1.0 12/2/85 : Version 1.8: 1/3/85 pc: System V Release 2.0 TeX Version 2.0 METAFONT Version 1.2 The change files given here should work on any AT&T 3B machine running System V UNIX. For a VAX computer running System V UNIX, the change files will require some modifications (as described below). Good luck! Lou Salkind New York University ----- To bring up TeX and METAFONT under System V + Run the script Setup.SYS_V to bring in the appropriate change files for this compilation. + Next, get a hold of the source for the 4.3 BSD pxp. You will need the src, pxp, and eyacc directories from the 4.3 BSD Pascal distribution. Apply the changes given in pxp.diffs. You can use the patch program for this purpose (use the -p option). + compile pxp and install it. + Bring up TeX and METAFONT as in the standard Berkeley distribution (see the README files in the tex82 and mf84 directories). + Watch out for a small value of ulimit when building the TeX system. In particular, when undumping TeX and METAFONT, you will need a ulimit greater than the default of 2048 blocks. You can set a larger ulimit by becoming superuser. ----- Notes for porting TeX and METAFONT to the 3B2: To interface to the run-time I/O library, I had to disassemble the header file h00vars.h by looking at the objects in /usr/lib/libpc.a. Fortunately, the run-time libraries for the Berkeley and System V Pascal compilers are similar, which made things a bit easier. To remove the others case in web code, I had to port the Berkeley pxp program. There was one major bug in pxp that had to be found before the program started working properly. I am not sure why the program works on other machines, except that their architectures are perhaps a bit more forgiving. Even after porting pxp, the output of "pxp -O -f" breaks the System V Pascal compiler. This is because in several cases, very long lines can be generated, and the System V Pascal compiler does not handle lines greater than a certain length (~200 characters). Therefore, I had to put some extra code in pxp (the -L option) that splits lines greater than a certain length. This is a generally useful change that should be put in the Berkeley pxp distribution. The System V Pascal compiler allocates two bytes for type eight-bits (0..255). Furthermore, there is no way to get an integer range with 256 values to occupy one byte. Therefore in order to read and write binary files a byte at a time, we declare them as character files. To write one byte to such a file, we need to use an external C routine, because otherwise the Pascal compiler will generate a range check that tests if the character is in the range 0..127. To read a byte from such a file, we can use the standard Pascal read or get routines and then take the ord of this value, since no range check is performed on input. NOTE: this solution may not work on a System V machine that sign extends characters (i.e., a VAX). There you would probably have check for negative values and then add 256 to the ord value, which is what is done in the VAX Berkeley UNIX change file. However, on 3b machines (which don't sign extend characters), this trick works fine. The TeX code needs a routine that flushes I/O buffers. Unlike Berkeley Pascal, however, there is no flush routine in the System V Pascal runtime library. Therefore we perform the flush function in an external C routine. All external C routines have to be declared with the syntax function extcfunction(...); external C; function extcprocedure(...); external C; This required modifying a few of the ext.h files. The close routines in the ext.c files (that place an iorec structure back on the free-list) have been replaced by a call to the System V Pascal run-time routine CLOSE. The System V Pascal compiler accepts only ANSII Standard Pascal, which introduces a few problems in several of the programs. Typical ones: a) the following is illegal in ANSII Pascal: var i: integer; { global } procedure nested; begin i := 3; end; for i:=1 to n do null; Even though i is never modified in the for loop, the standard states that this is an illegal construct. You will get an error message like "for loop index threatened." To work around this restriction, I introduced a dummy loop index whenever this consturct was used. b) individual elements of packed arrays can not be passed as parameters to subroutines. The easy fix here is to remove the packed modifier in these cases. If there is a non-local goto in the program, the optimizer will not be invoked (pc says: "Can not optimize program with non-local goto"). For most programs this is not a big deal, but for a few programs (tex, tangle) we want them to be optimized. Fortunately there is only one non-local goto in these programs, so they can easily be elminated by replacing the goto with a few statements in the change file. When compiling tex, the file is too big to compile. The optimizer runs out of stack space, the assembler runs out of symbol table space, the first pass botches things, etc. The fix is to break up the program into six separate modules, as has been done on the METAFONT distribution (System V Pascal does support separate compilation, although in a slightly different way from the Berkeley compiler). Even then, the optimizer doesn't work on the last of the modules, but we just turn off optimization for this part. The pascal compiler does not allow us to override the location of the temporary directory for intermediate directories. Therefore for the very large programs I have to use a shell script that runs the passes individually (/tmp is very small on my machine). For TeX this script is called maketex. For METAFONT it is called makemf. In the System V run-time library, the argc and argv routines are supplied, but the argv index runs from 1 to argc, not 0 to argc-1. This required changes to all the change files. undump had to be rewritten to support the Common Object File Format. It doesn't look much like the original, but it does work. There is a bug in the format of the ch format used by chtopx and pxtoch. It occurs when x_offset = y_offset = -1. I "fixed" it by modifying chtopx to understand this case. There is a bug in the standard change files distributed for chtopx. They call the external C routine getb, which computes the wrong number! Better to ditch the routine altogether and use the standard code here for picking out a given number of bytes in an integer. The pktype web file refers to amr9. This should probably be updated at some point. METAFONT uncovers a bug in the System V Pascal compiler with dense ranges. I worked around this bug by modifying the indices to the case statement in the change file. Several of the run-time support routines for METAFONT (in MFlib) have to be changed to work in a System V environment. ----- Hints on Porting TeX to other System V machines First, make sure your version of h00vars.h is correct. I suspect the version given here will also work on a VAX, but I am not positive, since I do not have source for the Pascal run-time system. One thing that may help when verifying the layout of h00vars.h is that the System V and Berkeley run-time systems are awfully similar. Therefore if you have the libpc source handy, it won't be an impossible job to disassemble the libpc binaries. Next, if the machine sign extends characters, you will have to modify the byte reading routines in several programs. For TeX, the routines fget and fbyte in the change file dist_initex should read: @d fget==get(tfm_file) @d fbyte==begin temp_int:= ord(tfm_file^); if temp_int<0 then temp_int:=temp_int+256; end where temp_int is defined as a global variable. See the Berkeley VAX UNIX change file for more information. Other routines needing changes will be dvitype and tftopl. Finally, verify that undump is working properly. ----- Device Driver for DMD 5620 display A DVI interpreter has been written for the DMD 5620 display. The program (named dvidmd) runs under the System V layers environment. dvidmd should also work equally well on a Blit, although it has only been tested on a DMD running Release 2.0 software. DMD applications consist of two parts: a host part and a terminal part. The host part of dvidmd was adapted from the Imagen device driver imagen1 written by Chris Torek of the University of Maryland. The terminal part of dvidmd was adapted from the proof driver supplied with the DMD software. When the host dvidmd starts up, it checks whether a dvi process is already running in the layer. If a dvidmd terminal process already exists, the host process find out what fonts and characters have already been loaded into the DMD layer. The net result is that a character glyph is never downloaded more than once to the DMD, and the dvi files wind up being displayed almost as fast as straight text. SHAR_EOF if test 9137 -ne "`wc -c README.SYS_V`" then echo shar: error transmitting README.SYS_V '(should have been 9137 characters)' fi echo shar: extracting Setup.PYR '(981 characters)' cat << \SHAR_EOF > Setup.PYR #!/bin/sh # set things up for compilation in this directory, in the TeXware # directory, and in the undump directory cp ./TeXconfig/tex82/Makefile.PYR Makefile cp ./TeXconfig/tex82/dist_initex.PYR.ch dist_initex.ch ln dist_initex.ch dist_initex.pyramid-ch cp ./TeXconfig/tex82/ini_to_trip.PYR ini_to_trip cp ./TeXconfig/tex82/ini_to_vir.PYR ini_to_vir cp ./TeXconfig/texlib/ext.PYR.c ext.c cp ./TeXconfig/texlib/h00vars.PYR.h h00vars.h # The following lines are a stopgap. These routines should really # be made part of a library, as in the case of METAFONT. They still # have to be checked for duplicate entry names, however. cp ./TeXconfig/texlib/dvityext.BSD4_n.c ./TeXware/dvityext.c cp ./TeXconfig/texlib/dvityext.BSD4_n.h ./TeXware/dvityext.h cp ./TeXconfig/texlib/tangext.BSD4_n.c ./TeXware/tangext.c cp ./TeXconfig/texlib/tangext.BSD4_n.h ./TeXware/tangext.h cp ./TeXconfig/texlib/weavext.BSD4_n.c ./TeXware/weavext.c (cd ./TeXware; Setup.PYR) (cd ../undump; Setup.PYR) SHAR_EOF if test 981 -ne "`wc -c Setup.PYR`" then echo shar: error transmitting Setup.PYR '(should have been 981 characters)' fi echo shar: extracting Setup.SUN_V2 '(961 characters)' cat << \SHAR_EOF > Setup.SUN_V2 #!/bin/sh # set things up for compilation in this directory, in the TeXware # directory, and in the undump directory cp ./TeXconfig/tex82/Makefile.SUN_V2 Makefile cp ./TeXconfig/tex82/dist_initex.BSD4_n.ch dist_initex.ch cp ./TeXconfig/tex82/ini_to_trip.BSD4_n ini_to_trip cp ./TeXconfig/tex82/ini_to_vir.BSD4_n ini_to_vir cp ./TeXconfig/texlib/h00vars.SUN.h h00vars.h cp ./TeXconfig/texlib/ext.VaxSun.c ext.c # The following lines are a stopgap. These routines should really # be made part of a library, as in the case of METAFONT. They still # have to be checked for duplicate entry names, however. cp ./TeXconfig/texlib/dvityext.BSD4_n.c ./TeXware/dvityext.c cp ./TeXconfig/texlib/dvityext.BSD4_n.h ./TeXware/dvityext.h cp ./TeXconfig/texlib/tangext.BSD4_n.c ./TeXware/tangext.c cp ./TeXconfig/texlib/tangext.BSD4_n.h ./TeXware/tangext.h cp ./TeXconfig/texlib/weavext.BSD4_n.c ./TeXware/weavext.c (cd ./TeXware; Setup.BSD4_n) (cd ../undump; Setup.SUN_V2) SHAR_EOF if test 961 -ne "`wc -c Setup.SUN_V2`" then echo shar: error transmitting Setup.SUN_V2 '(should have been 961 characters)' fi echo shar: extracting Setup.SUN_V3 '(961 characters)' cat << \SHAR_EOF > Setup.SUN_V3 #!/bin/sh # set things up for compilation in this directory, in the TeXware # directory, and in the undump directory cp ./TeXconfig/tex82/Makefile.SUN_V3 Makefile cp ./TeXconfig/tex82/dist_initex.BSD4_n.ch dist_initex.ch cp ./TeXconfig/tex82/ini_to_trip.BSD4_n ini_to_trip cp ./TeXconfig/tex82/ini_to_vir.BSD4_n ini_to_vir cp ./TeXconfig/texlib/h00vars.SUN.h h00vars.h cp ./TeXconfig/texlib/ext.VaxSun.c ext.c # The following lines are a stopgap. These routines should really # be made part of a library, as in the case of METAFONT. They still # have to be checked for duplicate entry names, however. cp ./TeXconfig/texlib/dvityext.BSD4_n.c ./TeXware/dvityext.c cp ./TeXconfig/texlib/dvityext.BSD4_n.h ./TeXware/dvityext.h cp ./TeXconfig/texlib/tangext.BSD4_n.c ./TeXware/tangext.c cp ./TeXconfig/texlib/tangext.BSD4_n.h ./TeXware/tangext.h cp ./TeXconfig/texlib/weavext.BSD4_n.c ./TeXware/weavext.c (cd ./TeXware; Setup.SUN_V3) (cd ../undump; Setup.SUN_V3) SHAR_EOF if test 961 -ne "`wc -c Setup.SUN_V3`" then echo shar: error transmitting Setup.SUN_V3 '(should have been 961 characters)' fi echo shar: extracting Setup.SYS_V '(1290 characters)' cat << \SHAR_EOF > Setup.SYS_V #!/bin/sh # set things up for compilation in this directory, in the TeXware # directory, and in the undump directory cp ./TeXconfig/tex82/Makefile.SYS_V Makefile cp ./TeXconfig/tex82/dist_initex.SYS_V.ch dist_initex.ch cp ./TeXconfig/tex82/ini_to_trip.SYS_V ini_to_trip cp ./TeXconfig/tex82/ini_to_vir.SYS_V ini_to_vir cp ./TeXconfig/texlib/h00vars.SYS_V.h h00vars.h cp ./TeXconfig/texlib/ext.SYS_V.c ext.c cp ./TeXconfig/tex82/maketex.SYS_V maketex cp ./TeXconfig/tex82/texsep.SYS_V.sed texsep.sed # The following lines are a stopgap. These routines should really # be made part of a library, as in the case of METAFONT. They still # have to be checked for duplicate entry names, however. cp ./TeXconfig/texlib/dvityext.SYS_V.c ./TeXware/dvityext.c cp ./TeXconfig/texlib/dvityext.SYS_V.h ./TeXware/dvityext.h cp ./TeXconfig/texlib/pltotfext.SYS_V.c ./TeXware/pltotfext.c cp ./TeXconfig/texlib/pltotfext.SYS_V.h ./TeXware/pltotfext.h cp ./TeXconfig/texlib/tangext.SYS_V.c ./TeXware/tangext.c cp ./TeXconfig/texlib/tangext.SYS_V.h ./TeXware/tangext.h cp ./TeXconfig/texlib/tftoplext.SYS_V.c ./TeXware/tftoplext.c cp ./TeXconfig/texlib/tftoplext.SYS_V.h ./TeXware/tftoplext.h cp ./TeXconfig/texlib/weavext.SYS_V.c ./TeXware/weavext.c (cd ./TeXware; Setup.SYS_V) (cd ../undump; Setup.SYS_V) SHAR_EOF if test 1290 -ne "`wc -c Setup.SYS_V`" then echo shar: error transmitting Setup.SYS_V '(should have been 1290 characters)' fi echo shar: extracting Setup.VAX4_2 '(768 characters)' cat << \SHAR_EOF > Setup.VAX4_2 #!/bin/sh # set things up for compilation in this directory, in the TeXware # directory, and in the undump directory cp ./TeXconfig/tex82/Makefile.VAX4_2 Makefile cp ./TeXconfig/tex82/dist_initex.BSD4_n.ch dist_initex.ch cp ./TeXconfig/tex82/ini_to_trip.BSD4_n ini_to_trip cp ./TeXconfig/tex82/ini_to_vir.BSD4_n ini_to_vir cp ./TeXconfig/texlib/h00vars.VAX.h h00vars.h cp ./TeXconfig/texlib/ext.VaxSun.c ext.c cp ./TeXconfig/texlib/dvityext.BSD4_n.c ./TeXware/dvityext.c cp ./TeXconfig/texlib/dvityext.BSD4_n.h ./TeXware/dvityext.h cp ./TeXconfig/texlib/tangext.BSD4_n.c ./TeXware/tangext.c cp ./TeXconfig/texlib/tangext.BSD4_n.h ./TeXware/tangext.h cp ./TeXconfig/texlib/weavext.BSD4_n.c ./TeXware/weavext.c (cd ./TeXware; Setup.BSD4_n) (cd ../undump; Setup.VAX4_2) SHAR_EOF if test 768 -ne "`wc -c Setup.VAX4_2`" then echo shar: error transmitting Setup.VAX4_2 '(should have been 768 characters)' fi echo shar: extracting Setup.VAX4_3 '(962 characters)' cat << \SHAR_EOF > Setup.VAX4_3 #!/bin/sh # set things up for compilation in this directory, in the TeXware # directory, and in the undump directory cp ./TeXconfig/tex82/Makefile.VAX4_3 Makefile cp ./TeXconfig/tex82/dist_initex.BSD4_n.ch dist_initex.ch cp ./TeXconfig/tex82/ini_to_trip.BSD4_n ini_to_trip cp ./TeXconfig/tex82/ini_to_vir.BSD4_n ini_to_vir cp ./TeXconfig/texlib/h00vars.VAX.h h00vars.h cp ./TeXconfig/texlib/ext.VaxSun.c ext.c # The following lines are a stopgap. These routines should really # be made part of a library, as in the case of METAFONT. They still # have to be checked for duplicate entry names, however. cp ./TeXconfig/texlib/dvityext.BSD4_n.c ./TeXware/dvityext.c cp ./TeXconfig/texlib/dvityext.BSD4_n.h ./TeXware/dvityext.h cp ./TeXconfig/texlib/tangext.BSD4_n.c ./TeXware/tangext.c cp ./TeXconfig/texlib/tangext.BSD4_n.h ./TeXware/tangext.h cp ./TeXconfig/texlib/weavext.BSD4_n.c ./TeXware/weavext.c (cd ./TeXware; Setup.BSD4_n) (cd ../undump; Setup.VAX4_3) SHAR_EOF if test 962 -ne "`wc -c Setup.VAX4_3`" then echo shar: error transmitting Setup.VAX4_3 '(should have been 962 characters)' fi echo shar: extracting pxp.diffs '(12667 characters)' cat << \SHAR_EOF > pxp.diffs diff -c1 /usr/src/ucb/pascal/pxp/0.h pxp/0.h *** /usr/src/ucb/pascal/pxp/0.h Wed Jun 5 18:58:18 1985 --- pxp/0.h Wed Mar 18 16:18:30 1987 *************** *** 80,82 **** #endif RMOTHERS ! char *firstname, *stdoutn; #ifdef DEBUG --- 80,83 ---- #endif RMOTHERS ! char *firstname; ! extern char *stdoutn; #ifdef DEBUG *************** *** 84,86 **** #endif ! int unit; --- 85,87 ---- #endif ! extern int unit; *************** *** 202,204 **** int eflg; ! char errpfx; --- 203,205 ---- int eflg; ! extern char errpfx; *************** *** 240,242 **** */ ! int line; --- 241,243 ---- */ ! extern int line; *************** *** 303,305 **** long ptvec; /* time profiled */ ! char printed; /* current file has been printed */ char hadsome; /* had some output */ --- 304,306 ---- long ptvec; /* time profiled */ ! extern char printed; /* current file has been printed */ char hadsome; /* had some output */ *************** *** 336,338 **** int gocnt; ! int cnts; --- 337,339 ---- int gocnt; ! extern int cnts; diff -c1 /usr/src/ucb/pascal/pxp/Makefile pxp/Makefile *** /usr/src/ucb/pascal/pxp/Makefile Sat Sep 7 18:52:17 1985 --- pxp/Makefile Wed Mar 18 16:18:29 1987 *************** *** 13,15 **** EYACC= ../eyacc/eyacc ! CFLAGS= -O -I. -I${SRCDIR} -w -DRMOTHERS SRCDIR= ../src --- 13,15 ---- EYACC= ../eyacc/eyacc ! CFLAGS= -g -I. -I${SRCDIR} -DRMOTHERS SRCDIR= ../src *************** *** 39,43 **** ${SRCOBJ}: ! -ln ${SRCDIR}/$*.c $*.c ! ${CC} ${CFLAGS} -c $*.c ! ${RM} $*.c --- 39,42 ---- ${SRCOBJ}: ! file=`basename $@ .o`.c; ln ${SRCDIR}/$$file $$file; \ ! ${CC} ${CFLAGS} -c $$file; ${RM} $$file diff -c1 /usr/src/ucb/pascal/pxp/const.c pxp/const.c *** /usr/src/ucb/pascal/pxp/const.c Wed Jun 5 18:45:43 1985 --- pxp/const.c Wed Mar 18 16:18:31 1987 *************** *** 25,29 **** */ ! constbeg(l, cline) ! int l, cline; { --- 25,30 ---- */ ! constbeg(l) ! int l; { + int *cline = (int *)lineof(l); Only in pxp: errs diff -c1 /usr/src/ucb/pascal/pxp/fdec.c pxp/fdec.c *** /usr/src/ucb/pascal/pxp/fdec.c Wed Jun 5 18:46:58 1985 --- pxp/fdec.c Wed Mar 18 16:18:32 1987 *************** *** 31,34 **** if (inpflist(r[2])) { ! optstk['z'-'a'] =<< 1; ! optstk['z'-'a'] =| opts['z'-'a']; opts['z'-'a'] = 1; --- 31,34 ---- if (inpflist(r[2])) { ! optstk['z'-'a'] <<= 1; ! optstk['z'-'a'] |= opts['z'-'a']; opts['z'-'a'] = 1; *************** *** 226,228 **** opts['z'-'a'] = optstk['z'-'a'] & 1; ! optstk['z'-'a'] =>> 1; } --- 226,228 ---- opts['z'-'a'] = optstk['z'-'a'] & 1; ! optstk['z'-'a'] >>= 1; } Only in pxp: how_pxp diff -c1 /usr/src/ucb/pascal/pxp/main.c pxp/main.c *** /usr/src/ucb/pascal/pxp/main.c Wed Jun 5 18:48:40 1985 --- pxp/main.c Wed Mar 18 16:18:32 1987 *************** *** 51,52 **** --- 51,53 ---- extern char errout; + extern int Maxcol; *************** *** 66,68 **** if (argv[0][0] == 'a') ! howfile =+ 9; argc--, argv++; --- 67,69 ---- if (argv[0][0] == 'a') ! howfile += 9; argc--, argv++; *************** *** 95,96 **** --- 96,102 ---- #endif + case 'L': + Maxcol = atoi(cp); + while (*cp) + cp++; + continue; case 'a': *************** *** 196,199 **** signal(2, onintr); ! for (c = getpid(); c; c =/ 10) ! *--cp =| (c % 10); if (freopen(stdoutn, "w", stdout) == NULL) --- 202,205 ---- signal(2, onintr); ! for (c = getpid(); c; c /= 10) ! *--cp |= (c % 10); if (freopen(stdoutn, "w", stdout) == NULL) Only in pxp: opcode.h diff -c1 /usr/src/ucb/pascal/pxp/pp.c pxp/pp.c *** /usr/src/ucb/pascal/pxp/pp.c Wed Jun 5 18:49:36 1985 --- pxp/pp.c Mon Mar 23 17:18:43 1987 *************** *** 74,76 **** } ! printf(s); } --- 74,76 ---- } ! printstring(s); } *************** *** 86,88 **** s = "{identifier}"; ! printf(s); } --- 86,88 ---- s = "{identifier}"; ! printstring(s); } *************** *** 96,98 **** if (s != NIL) ! printf(s); } --- 96,98 ---- if (s != NIL) ! printstring(s); } *************** *** 105,107 **** return; ! printf(s); } --- 105,107 ---- return; ! printstring(s); } *************** *** 115,117 **** if (s != NIL) ! printf(s); } --- 115,117 ---- if (s != NIL) ! printstring(s); } *************** *** 192,193 **** --- 192,194 ---- register i; + char buf[20]; *************** *** 203,205 **** case 1: ! printf("%7ld.", nowcnt()); dashes('-'); --- 204,207 ---- case 1: ! sprintf(buf, "%7ld.", nowcnt()); ! printstring(buf); dashes('-'); *************** *** 209,211 **** case -1: ! printf(" "); dashes(' '); --- 211,213 ---- case -1: ! printstring(" "); dashes(' '); *************** *** 237,239 **** putchar('\t'); ! i =- 8; } --- 239,241 ---- putchar('\t'); ! i -= 8; } *************** *** 247,248 **** --- 249,251 ---- { + char buf[20]; *************** *** 253,255 **** line = -line; ! printf("%6d ", line); } --- 256,259 ---- line = -line; ! sprintf(buf, "%6d ", line); ! printstring(buf); } *************** *** 269,271 **** return; ! printf(s); } --- 273,275 ---- return; ! printstring(s); } *************** *** 280,282 **** s = "{number}"; ! printf(s); } --- 284,286 ---- s = "{number}"; ! printstring(s); } *************** *** 286,288 **** ! pplev[lv] =+ unit; } --- 290,292 ---- ! pplev[lv] += unit; } *************** *** 292,294 **** ! pplev[lv] =- unit; if (pplev[lv] < 0) --- 296,298 ---- ! pplev[lv] -= unit; if (pplev[lv] < 0) *************** *** 297,298 **** --- 301,304 ---- + static int nobreak = 0; + ppstr(s) *************** *** 305,307 **** if (s == NIL) { ! printf("{string}"); return; --- 311,313 ---- if (s == NIL) { ! printstring("{string}"); return; *************** *** 308,309 **** --- 314,316 ---- } + nobreak = 1; putchar('\''); *************** *** 317,318 **** --- 324,326 ---- putchar('\''); + nobreak = 0; } *************** *** 327,329 **** s = "{integer label}"; ! printf(s); } --- 335,337 ---- s = "{integer label}"; ! printstring(s); } *************** *** 331,332 **** --- 339,341 ---- int outcol; + int Maxcol = 30000; /* i.e., very large */ *************** *** 336,338 **** { ! putc(c, stdout); --- 345,348 ---- { ! if (outcol >= Maxcol && nobreak==0 && (c == ' ' || c == '\t')) ! c = '\n'; putc(c, stdout); *************** *** 346,349 **** case '\t': ! outcol =+ 8; ! outcol =& ~07; break; --- 356,359 ---- case '\t': ! outcol += 8; ! outcol &= ~07; break; *************** *** 378,380 **** ppnl(); ! i =+ 8; } --- 388,390 ---- ppnl(); ! i += 8; } *************** *** 391,392 **** --- 401,413 ---- pexit(DIED); + } + + printstring(s) + char *s; + { + int i = strlen(s); + + if (outcol >= Maxcol && nobreak==0) + putchar('\n'); + outcol += i; + printf(s); } diff -c1 /usr/src/ucb/pascal/pxp/whoami.h pxp/whoami.h *** /usr/src/ucb/pascal/pxp/whoami.h Wed Jun 5 18:58:40 1985 --- pxp/whoami.h Wed Mar 18 16:18:31 1987 *************** *** 34,35 **** --- 34,40 ---- #endif pdp11 + #if defined(u3b) || defined(u3b2) || defined(u3b5) + #undef ADDR16 + #define ADDR32 + #undef DEC11 + #endif Only in pxp: y.tab.c Only in pxp: y.tab.h diff -c1 /usr/src/ucb/pascal/pxp/yycomm.c pxp/yycomm.c *** /usr/src/ucb/pascal/pxp/yycomm.c Wed Jun 5 18:55:53 1985 --- pxp/yycomm.c Wed Mar 18 16:18:31 1987 *************** *** 288,290 **** putone(cp); ! i =| 1 << cp->cmjust; if (cp->cmnext == cp) { --- 288,290 ---- putone(cp); ! i |= 1 << cp->cmjust; if (cp->cmnext == cp) { *************** *** 317,319 **** } ! printf("#include %c%s%c", cp->cml, cp->cmdelim, cp->cml); return; --- 317,319 ---- } ! printf("#include %c%s%c\n", cp->cml, cp->cmdelim, cp->cml); return; *************** *** 399,402 **** case '\t': ! i =+ 8; ! i =& ~7; if (i < margin) --- 399,402 ---- case '\t': ! i += 8; ! i &= ~7; if (i < margin) diff -c1 /usr/src/ucb/pascal/pxp/yyput.c pxp/yyput.c *** /usr/src/ucb/pascal/pxp/yyput.c Wed Jun 5 18:57:20 1985 --- pxp/yyput.c Wed Mar 18 16:18:32 1987 *************** *** 262,264 **** if (file == filename && opt('n') && (printed & 02) == 0) { ! printed =| 02; header(); --- 262,264 ---- if (file == filename && opt('n') && (printed & 02) == 0) { ! printed |= 02; header(); diff -c1 /usr/src/ucb/pascal/src/align.h src/align.h *** /usr/src/ucb/pascal/src/align.h Wed Jun 5 18:41:35 1985 --- src/align.h Wed Mar 18 16:18:21 1987 *************** *** 42 **** --- 42,57 ---- #endif mc68000 + #if defined(u3b) || defined(u3b2) || defined(u3b5) + # define A_CHAR 1 + # define A_INT 4 + # define A_FLOAT 4 + # define A_DOUBLE 4 + # define A_LONG 4 + # define A_SHORT 2 + # define A_POINT 4 + # define A_STRUCT 4 + # define A_STACK 4 + # define A_FILET 4 + # define A_SET 4 + # define A_MIN 1 + # define A_MAX 4 + #endif Only in src: obj diff -c1 /usr/src/ucb/pascal/src/objfmt.h src/objfmt.h *** /usr/src/ucb/pascal/src/objfmt.h Thu Apr 24 19:55:25 1986 --- src/objfmt.h Wed Mar 18 16:18:21 1987 *************** *** 151,152 **** --- 151,156 ---- #endif mc68000 + #if defined(u3b) || defined(u3b2) || defined(u3b5) + # define HEADER_BYTES 3072 /* the size of px_header */ + # define START 0x80800000 /* beginning of text */ + #endif # define INDX 1 /* amt to shift display index */ diff -c1 /usr/src/ucb/pascal/src/string.c src/string.c *** /usr/src/ucb/pascal/src/string.c Wed Jun 5 17:59:40 1985 --- src/string.c Wed Mar 18 16:18:12 1987 *************** *** 103,105 **** --- 103,109 ---- #endif + #if defined(u3b) || defined(u3b2) || defined(u3b5) + strngp = ( (char *) ( ( (int) (strngp + 3) ) &~ 3 ) ); + #else strngp = ( (char *) ( ( (int) (strngp + 1) ) &~ 1 ) ); + #endif return (savestr(cp)); Only in src: string.o diff -c1 /usr/src/ucb/pascal/src/tree.c src/tree.c *** /usr/src/ucb/pascal/src/tree.c Wed Jun 5 18:02:34 1985 --- src/tree.c Wed Mar 18 16:18:12 1987 *************** *** 19,21 **** int *tr_high; ! } ttab[MAXTREE], *tract; --- 19,23 ---- int *tr_high; ! }; ! struct tr ttab[MAXTREE]; ! struct tr *tract = ttab; *************** *** 34,36 **** */ ! int *space, *spacep; --- 36,38 ---- */ ! extern int *space, *spacep; *************** *** 47,49 **** int *spacep = trspace; - struct tr *tract = ttab; --- 49,50 ---- diff -c1 /usr/src/ucb/pascal/src/yy.h src/yy.h *** /usr/src/ucb/pascal/src/yy.h Fri Jun 21 15:49:18 1985 --- src/yy.h Wed Mar 18 16:18:14 1987 *************** *** 37,39 **** ! char charbuf[CBSIZE], *bufp, token[CBSIZE]; --- 37,40 ---- ! extern char charbuf[CBSIZE], *bufp; ! extern char token[CBSIZE]; *************** *** 77,79 **** */ ! int yycol; int yyline; --- 78,80 ---- */ ! extern int yycol; int yyline; *************** *** 139,141 **** int kw_val; ! } yykey[]; \f --- 140,143 ---- int kw_val; ! }; ! extern struct kwtab yykey[]; \f *************** *** 227,229 **** int yyshifts, yyOshifts; ! unsigned yytshifts; --- 229,231 ---- int yyshifts, yyOshifts; ! extern unsigned yytshifts; diff -c1 /usr/src/ucb/pascal/src/yylex.c src/yylex.c *** /usr/src/ucb/pascal/src/yylex.c Wed Jun 5 18:09:09 1985 --- src/yylex.c Wed Mar 18 16:18:14 1987 *************** *** 20,21 **** --- 20,23 ---- + char token[CBSIZE]; + #define YYLASIZ 10 diff -c1 /usr/src/ucb/pascal/src/yymain.c src/yymain.c *** /usr/src/ucb/pascal/src/yymain.c Wed Jun 5 18:11:10 1985 --- src/yymain.c Wed Mar 18 16:18:13 1987 *************** *** 130,131 **** --- 130,143 ---- + #if defined(u3b) || defined(u3b2) || defined(u3b5) + /* no executable header for now... */ + magic() + { + int i; + + for (i = 0; i < HEADER_BYTES / sizeof(short); i++) + word(0); + } + + #else + static *************** *** 155,156 **** --- 167,169 ---- } + #endif 3bs #endif OBJ *************** *** 163,164 **** --- 176,187 ---- + #if defined(u3b) || defined(u3b2) || defined(u3b5) + /* no executable header for now... */ + pflush(); + pxhd.objsize = ( ( unsigned ) lc) - HEADER_BYTES; + pxhd.symtabsize = nlhdrsize(); + (void) time((long *) (&pxhd.maketime)); + pxhd.magicnum = MAGICNUM; + (void) lseek(ofil, ( long ) ( HEADER_BYTES - sizeof ( pxhd ) ) , 0); + write(ofil, (char *) (&pxhd), sizeof (pxhd)); + #else if (magichdr.a_magic != 0407) *************** *** 177,178 **** --- 200,202 ---- write(ofil, (char *) (&pxhd), sizeof (pxhd)); + #endif } SHAR_EOF if test 12667 -ne "`wc -c pxp.diffs`" then echo shar: error transmitting pxp.diffs '(should have been 12667 characters)' fi echo shar: extracting sed.Sun_changes '(483 characters)' cat << \SHAR_EOF > sed.Sun_changes sed < dist_initex.ch > initex.tmp \ -e '/% othercases target for sed/a\ @x \ @d othercases == others\: \{default for cases not listed explicitly\}\ @y \ @d othercases == otherwise \{default for cases not listed explicitly\}\ @z' sed < initex.tmp > initex.ch \ -e 's/tofloat(#)/#/' \ -e 's/unfloat(0\.0)/0\.0/' \ -e 's/unfloat(1\.0)/1\.0/' \ -e '/@\!glue_ratio/s/integer/shortreal/' \ -e '/@d set_glue_ratio_one(#).*\{SUN sed target\}/a\ @d unfloat(#) == #' SHAR_EOF if test 483 -ne "`wc -c sed.Sun_changes`" then echo shar: error transmitting sed.Sun_changes '(should have been 483 characters)' fi echo shar: extracting ext.h '(734 characters)' cat << \SHAR_EOF > ext.h procedure exit(x : integer); external; procedure closea(var f:text); external; procedure closeb(var f:bytefile); external; procedure closew(var f:wordfile); external; function tofloat(g:glueratio):real; external; function unfloat(f:real):glueratio; external; procedure dateandtime(var minutes, day, month, year : integer); external; procedure setpaths; external; function testaccess(accessmode:integer; filepath:integer): boolean; external; function testeof(var f: text): boolean; external; procedure lineread(var f: text; lastlim: integer); external; procedure writedvi(a,b:integer); external; procedure calledit(var filename: ASCIIcode; fnlength, linenumber: integer); external; SHAR_EOF if test 734 -ne "`wc -c ext.h`" then echo shar: error transmitting ext.h '(should have been 734 characters)' fi echo shar: extracting texpaths.h '(1018 characters)' cat << \SHAR_EOF > texpaths.h /* * This file defines the default paths that will be used for TeX software. * (These paths are used if the user's environment doesn't specify paths.) * * Paths should be colon-separated and no longer than MAXINPATHCHARS-1 * (for defaultinputpath) or MAXOTHPATHCHARS (for other default paths). */ #define MAXINPATHCHARS 700 /* maximum number of chars in an input path */ #define defaultinputpath ".:/usr/lib/tex/inputs" /* this should always start with "." */ #define MAXOTHPATHCHARS 100 /* other paths should be much shorter */ #define defaultfontpath "/usr/lib/tex/fonts" /* it is probably best not to include "." here to prevent confusion by spooled device drivers that think they know where the fonts really are */ #define defaultformatpath ".:/usr/lib/tex/inputs" /* in a computing environment where several different versions of preloaded TeX are needed, it would be wise to make this a separate directory */ #define defaultpoolpath ".:/usr/lib/tex" SHAR_EOF if test 1018 -ne "`wc -c texpaths.h`" then echo shar: error transmitting texpaths.h '(should have been 1018 characters)' fi echo shar: extracting whoami.h '(0 characters)' cat << \SHAR_EOF > whoami.h SHAR_EOF if test 0 -ne "`wc -c whoami.h`" then echo shar: error transmitting whoami.h '(should have been 0 characters)' fi # End of shell archive exit 0