|
|
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: P T
Length: 8006 (0x1f46)
Types: TextFile
Names: »PROBLEMS.W2C«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦c6be2784f⟧ »web2c-5.84b.tar.Z«
└─⟦5800b1b62⟧
└─⟦this⟧ »src-5.84b/PROBLEMS.W2C«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z«
└─⟦c58930e5c⟧
└─⟦this⟧ »TeX3.14/PROBLEMS.W2C«
Some problems you might encounter:
* GNU sed 1.06 cannot handle the sed script in mf/convert; neither can
1.07. The default is to use /bin/sed.
* GNU Make 3.57 does not pass arguments to shell scripts (like convert),
under system V. 3.56 does not have this problem, and neither do later
versions.
* On an i386 machine, GNU C 1.36 does not compile tex5.c correctly when
making a 32-bit TeX. 1.37 fixes this bug.
* On the AT&T 3b2, under System V release 3.2, cc thinks that
eject_penalty (which is -1000, defined at line 3216), is a very large
positive number. oc@vmp.com is developing a port for the 3b2; he has
contributed some (incomplete) patches; they are below.
* On a Sun 3 running 3.x, cc cannot compile mf2.c or mf4.c, because the
preprocessor puts a # directive at the end of line 1811 (or
thereabouts), instead of at the beginning. You have to manually move
it.
* On a Sun 386i running 4.0.1, cc cannot compile Metafont with -O, because it
can't compile x = x + y correctly. Don't use -O, or don't use cc.
(From morgan@ics.uci.edu.)
* Some parts of this work on an Amiga, other parts don't.
bsuggs@hac2arpa.hac.com is working on this, but would be happy
to have help.
* Ditto for a Stardent. beebe@science.utah.edu is working on this one.
* gcc 1.37.1 cannot compile mf/MFwindow/sun.c without -traditional,
because Sun uses nonstandard token pasting in <pixrect/memvar.h> in the
definition of mpr_static. The fixincludes script distributed with gcc
fixes this; alternatively, you caninstall a correct version of
<pixrect/memvar.h> in the directory where gcc looks, e.g.,
/usr/local/gnu/lib/gcc-include/pixrect/memvar.h. The line that defines
CAT should be:
#define CAT a##b
* flex 2.3.6 will not work unmodified under POSIX. karl@cs.umb.edu will
send you changes if you like.
\f
* On a 386 machine running 386/ix, cc cannot compile itex.c, according
to Reiner Petersen <reiner@db0tui62.bitnet>. Here is an ed script to
get around the problem (alternatively, you can get gcc, and compile with
that):
:
# Reiner Petersen (reiner@coma.uucp)
# Technical University of Berlin
#
ed - $1 << end-of-edscript
!echo change:
/ register integer for_end; i = 1 ; for_end = 31 ; if ( i <= for_end) do
+1,.+2p
-2,.c
register integer for_end;
register char j; /* 386/ix cc bug workaround rp */
i = 1 ;
for_end = 31 ;
if ( i <= for_end) do
j = i;
xchr [ j ] = chr ( i ) ;
while ( i++ < for_end ) ;
.
!echo to:
-8,.p
w $1
end-of-edscript
If you want, you can put this into the pipeline in ./tex/convert.
* undump doesn't work under 386/ix. Here is a diff to undump.SYS_V.c to
fix this, again contributed by reiner:
*** undump.SYS_V.c Mon Apr 20 00:57:23 1987
--- undump.c Fri Aug 19 17:55:27 1988
***************
*** 1,7 ****
/*
* undump - resurrect a core file into a running program.
*
! * for UNIX System V on a 3Bx
* that uses the Common Object File Format
*
* Author:
--- 1,7 ----
/*
* undump - resurrect a core file into a running program.
*
! * for UNIX System V on a 3Bx or Interactive 386/ix
* that uses the Common Object File Format
*
* Author:
***************
*** 9,14 ****
--- 9,19 ----
* New York University
* Tue Mar 3 13:18:25 EST 1987
*
+ * Additions for 386/ix:
+ * Reiner Petersen (reiner@coma.uucp)
+ * Technical University of Berlin
+ * Thu Aug 18 13:40:20 MET DST 1988
+ *
* Adapted from:
* Spencer Thomas's undump and the file unexec.c in GNU emacs
*/
***************
*** 15,22 ****
--- 20,33 ----
#include <sys/param.h>
#include <sys/types.h>
+
+ #ifndef ISC_386ix /* not availible in ISC 386/ix */
+
#include <sys/psw.h>
#include <sys/pcb.h>
+
+ #endif /* ISC_386ix */
+
#include <sys/signal.h>
#include <sys/fs/s5dir.h>
#include <sys/user.h>
***************
*** 37,46 ****
--- 48,66 ----
struct scnhdr dsc;
struct scnhdr bsc;
+ #ifdef ISC_386ix
+ struct scnhdr csc; /* Comment section used by ISC 386/ix */
+ #endif /* ISC_386ix */
+
long bias;
long lnnoptr;
long text_scnptr;
long data_scnptr;
+
+ #ifdef ISC_386ix
+ long comment_scnptr;
+ #endif /* ISC_386ix */
+
long symlocptr;
main(argc, argv)
***************
*** 89,94 ****
--- 109,118 ----
dsc = sc;
else if (strcmp(sc.s_name, ".bss") == 0)
bsc = sc;
+ #ifdef ISC_386ix
+ else if (strcmp(sc.s_name, ".comment") == 0)
+ csc = sc;
+ #endif /* ISC_386ix */
***************
*** 97,103 ****
if (u.u_exdata.ux_tsize != aout.tsize ||
u.u_exdata.ux_dsize != aout.dsize ||
u.u_exdata.ux_bsize != aout.bsize)
! fprintf("mismatch between %s and %s sizes\n", a_out_name,
core_name);
exit(1);
--- 121,128 ----
if (u.u_exdata.ux_tsize != aout.tsize ||
u.u_exdata.ux_dsize != aout.dsize ||
u.u_exdata.ux_bsize != aout.bsize)
! fprintf( stderr, "mismatch between %s and %s sizes\n",
! a_out_name, core_name);
exit(1);
***************
*** 122,128 ****
--- 147,159 ----
bsc.s_paddr = bsc.s_vaddr = aout.data_start + aout.dsize;
bsc.s_size = aout.bsize;
bsc.s_scnptr = 0L;
+ #ifndef ISC_386ix
bias = dsc.s_scnptr + dsc.s_size - lnnoptr;
+ #else
+ comment_scnptr = csc.s_scnptr;
+ csc.s_scnptr = dsc.s_scnptr + dsc.s_size;
+ bias = csc.s_scnptr + csc.s_size - lnnoptr;
+ #endif /* ISC_386ix */
if (fh.f_symptr > 0L)
fh.f_symptr += bias;
***************
*** 139,149 ****
--- 170,186 ----
Perror("ds write");
if (fwrite(&bsc, sizeof(bsc), 1, nfp) != 1)
Perror("bs write");
+ if (fwrite(&csc, sizeof(csc), 1, nfp) != 1)
+ Perror("cs write");
fseek(nfp, (long)text_scnptr, 0);
copy(afp, nfp, aout.tsize);
fseek(cfp, off, 0);
fseek(nfp, (long)data_scnptr, 0);
copy(cfp, nfp, size);
+ #ifdef ISC_386ix
+ fseek(afp, (long)comment_scnptr, 0);
+ copy(afp, nfp, csc.s_size);
+ #endif /* ISC_386ix */
copy_syms(afp, nfp);
fclose(nfp);
fclose(afp);
\f
These patches for the 3b2 machine are meant to serve as a starting point
only, as they are for pre-2.992 TeX. If you work on this, contact oc@vmp.com.
#
# 3b2patch.sh, to fix web2c for 3B2s
# for TeX 2.9*
#
# First, make sure we have EXTRA.c and ITEX.c that are the
# same as the distribution versions of extra.c and itex.c
# since we're going to modify those files.
#
if [ -f EXTRA.c ]
then
cp EXTRA.c extra.c
else
cp extra.c EXTRA.c
fi
if [ -f ITEX.c ]
then
cp ITEX.c itex.c
else
cp itex.c ITEX.c
fi
#
# Then use a "sed" script to fix the "too may case statements"
# in tex8.c
#
sed '/maincontrol/a\
int fallthrough;
/switch/i\
fallthrough = 0;
/case 71/i\
default : fallthgrough = 1 ; break ;\
}\
if ( fallthrough )\
switch ( abs ( curlist .modefield ) + curcmd ) {' <tex8.c >$$t8 &&
mv $$t8 tex8.c
#
# Then find those screwy negative array pointers in texd.h
# and fix them throughout all the files
#
# first find the base numbers we're looking for
#
XEQL=`sed -n 's/^#define xeqlevel (.*-\([0-9][0-9]*\).*/\1/p' <texd.h`
HASH=`sed -n 's/^#define hash (.*-\([0-9][0-9]*\).*/\1/p' <texd.h`
#
# then get rid of the negatives in texd.h
#
sed 's/\(#define xeqlevel (.*\)-[0-9][0-9]*/\1/
s/\(#define hash (.*\)-[0-9][0-9]*/\1/' <texd.h >$$td &&
mv $$td texd.h
#
# finally fix all the *.c files to do the subtraction
# at array addressing time
#
for i in tex[0-8].c extra.c itex.c
do
sed 's/\([^a-z]xeqlevel \[\)/\1 -'${XEQL}' +/g
s/\([^a-z]hash \[\)/\1 -'${HASH}' +/g' < $i > tkshl$$ &&
mv tkshl$$ $i
done