DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T U

⟦d1c836ac1⟧ TextFile

    Length: 37767 (0x9387)
    Types: TextFile
    Notes: Uncompressed file

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦beba6c409⟧ »unix3.0/Unsupported.tar.Z« 
        └─⟦25c524ae4⟧ 
            └─⟦cdc4d4e87⟧ »Unsupported/Pas.shar.Z« 
                └─⟦this⟧ 

TextFile

#	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