summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2009-03-30 11:13:40 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2009-03-30 11:13:40 +0000
commitcebdda463446a4efc44c356c0e8c85d4a8932373 (patch)
tree991922e9198a0245e34ee54e7362a19828666d68 /Build/source/texk/web2c
parentf6449e724e0cf3a3559dd53daf9ba5e23ce783e5 (diff)
remove Omega and references to the defunct eOmega and pdfeTeX
git-svn-id: svn://tug.org/texlive/trunk@12570 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c')
-rw-r--r--Build/source/texk/web2c/ChangeLog7
-rw-r--r--Build/source/texk/web2c/Makefile.am5
-rw-r--r--Build/source/texk/web2c/Makefile.in500
-rw-r--r--Build/source/texk/web2c/ac/web2c.ac1
-rw-r--r--Build/source/texk/web2c/c-auto.in3
-rwxr-xr-xBuild/source/texk/web2c/configure503
-rw-r--r--Build/source/texk/web2c/configure.ac5
-rw-r--r--Build/source/texk/web2c/lib/ChangeLog4
-rw-r--r--Build/source/texk/web2c/lib/texmfmp.c60
-rw-r--r--Build/source/texk/web2c/man/ChangeLog5
-rw-r--r--Build/source/texk/web2c/man/Makefile.am8
-rw-r--r--Build/source/texk/web2c/man/Makefile.in8
-rw-r--r--Build/source/texk/web2c/man/omega.man292
-rw-r--r--Build/source/texk/web2c/mpdir/am/mp.am14
-rw-r--r--Build/source/texk/web2c/omegadir/ChangeLog23
-rw-r--r--Build/source/texk/web2c/omegadir/README12
-rw-r--r--Build/source/texk/web2c/omegadir/am/omega.am88
-rw-r--r--Build/source/texk/web2c/omegadir/com16bit.ch2818
-rw-r--r--Build/source/texk/web2c/omegadir/comchar.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comdir.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comfi.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comfilter.ch123
-rw-r--r--Build/source/texk/web2c/omegadir/comfont.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comnode.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comocp.ch141
-rw-r--r--Build/source/texk/web2c/omegadir/compar.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comsrcspec.ch353
-rw-r--r--Build/source/texk/web2c/omegadir/comstr.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comtrans.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/comxml.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/om16bit.ch2826
-rw-r--r--Build/source/texk/web2c/omegadir/omchar.ch84
-rw-r--r--Build/source/texk/web2c/omegadir/omcprt.ch11
-rw-r--r--Build/source/texk/web2c/omegadir/omdir.ch4172
-rw-r--r--Build/source/texk/web2c/omegadir/omega-pool.h9
-rw-r--r--Build/source/texk/web2c/omegadir/omega.c624
-rw-r--r--Build/source/texk/web2c/omegadir/omega.defines74
-rw-r--r--Build/source/texk/web2c/omegadir/omega.mk225
-rw-r--r--Build/source/texk/web2c/omegadir/omega.version1
-rw-r--r--Build/source/texk/web2c/omegadir/omegabis.c339
-rw-r--r--Build/source/texk/web2c/omegadir/omegaextra.h38
-rw-r--r--Build/source/texk/web2c/omegadir/omegamem.h145
-rw-r--r--Build/source/texk/web2c/omegadir/omfi.ch246
-rw-r--r--Build/source/texk/web2c/omegadir/omfilter.ch925
-rw-r--r--Build/source/texk/web2c/omegadir/omfont.ch2377
-rw-r--r--Build/source/texk/web2c/omegadir/omnode.ch20
-rw-r--r--Build/source/texk/web2c/omegadir/omocp.ch1068
-rw-r--r--Build/source/texk/web2c/omegadir/ompar.ch1629
-rw-r--r--Build/source/texk/web2c/omegadir/omstr.ch875
-rw-r--r--Build/source/texk/web2c/omegadir/omtrans.ch822
-rw-r--r--Build/source/texk/web2c/omegadir/omxml.ch2099
-rw-r--r--Build/source/texk/web2c/synctexdir/am/synctex.am2
-rw-r--r--Build/source/texk/web2c/synctexdir/am/synctex.mk42
-rw-r--r--Build/source/texk/web2c/tex.ch4
-rw-r--r--Build/source/texk/web2c/texmfmem.h10
-rw-r--r--Build/source/texk/web2c/texmfmp-help.h170
-rw-r--r--Build/source/texk/web2c/texmfmp.h8
-rw-r--r--Build/source/texk/web2c/web2c/ChangeLog5
-rw-r--r--Build/source/texk/web2c/web2c/README2
-rw-r--r--Build/source/texk/web2c/web2c/common.defines3
-rwxr-xr-xBuild/source/texk/web2c/web2c/convert4
-rw-r--r--Build/source/texk/web2c/web2c/fixwrites.c2
-rw-r--r--Build/source/texk/web2c/web2c/splitup.c11
63 files changed, 671 insertions, 23354 deletions
diff --git a/Build/source/texk/web2c/ChangeLog b/Build/source/texk/web2c/ChangeLog
index 259b4dfdbea..511d02e2324 100644
--- a/Build/source/texk/web2c/ChangeLog
+++ b/Build/source/texk/web2c/ChangeLog
@@ -1,3 +1,10 @@
+2009-03-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am, configure.ac: remove Omega.
+
+ * tex.ch, texmfmem.h, texmfmp-help.h, texmfmp.h: remove all
+ references to Omega, eOmega, and pdfeTeX.
+
2009-03-28 Karl Berry <karl@tug.org>
* texmfmp.h: shell escape declarations.
diff --git a/Build/source/texk/web2c/Makefile.am b/Build/source/texk/web2c/Makefile.am
index a753f0a9045..2fe531852a5 100644
--- a/Build/source/texk/web2c/Makefile.am
+++ b/Build/source/texk/web2c/Makefile.am
@@ -123,9 +123,6 @@ include $(srcdir)/xetexdir/am/xetex.am
## omegaware web programs
include $(srcdir)/omegaware/am/omegaware.am
-## Omega
-include $(srcdir)/omegadir/am/omega.am
-
## Aleph
include $(srcdir)/alephdir/am/aleph.am
@@ -135,7 +132,7 @@ include $(srcdir)/synctexdir/am/synctex.am
## libmd5
include $(srcdir)/libmd5/am/md5.am
-## Not yet used
+## Not used
##
EXTRA_DIST += fmtutil.in
diff --git a/Build/source/texk/web2c/Makefile.in b/Build/source/texk/web2c/Makefile.in
index 9c81117a69b..4940916f4de 100644
--- a/Build/source/texk/web2c/Makefile.in
+++ b/Build/source/texk/web2c/Makefile.in
@@ -38,8 +38,7 @@ bin_PROGRAMS = tangle$(EXEEXT) ctangle$(EXEEXT) $(am__EXEEXT_2) \
$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
$(am__EXEEXT_7) $(am__EXEEXT_8) ttf2afm$(EXEEXT) \
pdftosrc$(EXEEXT) $(am__EXEEXT_9) $(am__EXEEXT_11) \
- $(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15) \
- synctex$(EXEEXT)
+ $(am__EXEEXT_13) $(am__EXEEXT_14) synctex$(EXEEXT)
noinst_PROGRAMS = tangleboot$(EXEEXT) ctangleboot$(EXEEXT)
check_PROGRAMS = md5main$(EXEEXT)
DIST_COMMON = README $(am__configure_deps) $(dist_check_SCRIPTS) \
@@ -54,7 +53,6 @@ DIST_COMMON = README $(am__configure_deps) $(dist_check_SCRIPTS) \
$(srcdir)/am/texmf.am $(srcdir)/am/web.am $(srcdir)/c-auto.in \
$(srcdir)/etexdir/am/etex.am $(srcdir)/libmd5/am/md5.am \
$(srcdir)/luatexdir/am/luatex.am $(srcdir)/mpdir/am/mp.am \
- $(srcdir)/omegadir/am/omega.am \
$(srcdir)/omegaware/am/omegaware.am \
$(srcdir)/pdftexdir/am/pdftex.am \
$(srcdir)/synctexdir/am/synctex.am \
@@ -78,20 +76,19 @@ DIST_COMMON = README $(am__configure_deps) $(dist_check_SCRIPTS) \
@OTANGLE_TRUE@am__append_12 = $(omegaware_tools)
@OMFONTS_FALSE@@OTANGLE_TRUE@am__append_13 = $(omegaware_font_tools)
@OTANGLE_TRUE@am__append_14 = omegaware/otangle.test
-@OMEGA_TRUE@am__append_15 = omega
-@ALEPH_TRUE@am__append_16 = aleph
-@TEX_SYNCTEX_TRUE@am__append_17 = -I$(srcdir)/synctexdir $(ZLIB_INCLUDES)
-@TEX_SYNCTEX_TRUE@am__append_18 = $(ZLIB_LIBS)
-@TEX_SYNCTEX_TRUE@am__append_19 = \
+@ALEPH_TRUE@am__append_15 = aleph
+@TEX_SYNCTEX_TRUE@am__append_16 = -I$(srcdir)/synctexdir $(ZLIB_INCLUDES)
+@TEX_SYNCTEX_TRUE@am__append_17 = $(ZLIB_LIBS)
+@TEX_SYNCTEX_TRUE@am__append_18 = \
@TEX_SYNCTEX_TRUE@ synctex.c
-@ETEX_SYNCTEX_TRUE@am__append_20 = -I$(srcdir)/synctexdir $(ZLIB_INCLUDES)
-@ETEX_SYNCTEX_TRUE@am__append_21 = $(ZLIB_LIBS)
-@ETEX_SYNCTEX_TRUE@am__append_22 = \
+@ETEX_SYNCTEX_TRUE@am__append_19 = -I$(srcdir)/synctexdir $(ZLIB_INCLUDES)
+@ETEX_SYNCTEX_TRUE@am__append_20 = $(ZLIB_LIBS)
+@ETEX_SYNCTEX_TRUE@am__append_21 = \
@ETEX_SYNCTEX_TRUE@ synctex-e.c
-@PDFTEX_SYNCTEX_TRUE@am__append_23 = -I$(srcdir)/synctexdir
-@PDFTEX_SYNCTEX_TRUE@am__append_24 = \
+@PDFTEX_SYNCTEX_TRUE@am__append_22 = -I$(srcdir)/synctexdir
+@PDFTEX_SYNCTEX_TRUE@am__append_23 = \
@PDFTEX_SYNCTEX_TRUE@ synctex-pdf.c
subdir = .
@@ -257,14 +254,13 @@ am__objects_2 = libmf_a-mfini.$(OBJEXT) libmf_a-mf0.$(OBJEXT) \
libmf_a-mf1.$(OBJEXT)
nodist_libmf_a_OBJECTS = $(am__objects_2) libmf_a-mf-pool.$(OBJEXT)
libmf_a_OBJECTS = $(nodist_libmf_a_OBJECTS)
-libmpost_a_AR = $(AR) $(ARFLAGS)
-libmpost_a_LIBADD =
-am_libmpost_a_OBJECTS = libmpost_a-avl.$(OBJEXT) \
- libmpost_a-avlstuff.$(OBJEXT) libmpost_a-mapfile.$(OBJEXT) \
- libmpost_a-turningnumber.$(OBJEXT) libmpost_a-utils.$(OBJEXT) \
- libmpost_a-writeenc.$(OBJEXT) libmpost_a-writefont.$(OBJEXT) \
- libmpost_a-writet1.$(OBJEXT)
-libmpost_a_OBJECTS = $(am_libmpost_a_OBJECTS)
+libmp_a_AR = $(AR) $(ARFLAGS)
+libmp_a_LIBADD =
+am_libmp_a_OBJECTS = libmp_a-avl.$(OBJEXT) libmp_a-avlstuff.$(OBJEXT) \
+ libmp_a-mapfile.$(OBJEXT) libmp_a-turningnumber.$(OBJEXT) \
+ libmp_a-utils.$(OBJEXT) libmp_a-writeenc.$(OBJEXT) \
+ libmp_a-writefont.$(OBJEXT) libmp_a-writet1.$(OBJEXT)
+libmp_a_OBJECTS = $(am_libmp_a_OBJECTS)
libpdftex_a_AR = $(AR) $(ARFLAGS)
libpdftex_a_LIBADD =
am_libpdftex_a_OBJECTS = libpdftex_a-avl.$(OBJEXT) \
@@ -306,8 +302,7 @@ am__EXEEXT_10 = odvicopy$(EXEEXT) odvitype$(EXEEXT) otangle$(EXEEXT)
am__EXEEXT_12 = ofm2opl$(EXEEXT) opl2ofm$(EXEEXT) ovf2ovp$(EXEEXT) \
ovp2ovf$(EXEEXT)
@OMFONTS_FALSE@@OTANGLE_TRUE@am__EXEEXT_13 = $(am__EXEEXT_12)
-@OMEGA_TRUE@am__EXEEXT_14 = omega$(EXEEXT)
-@ALEPH_TRUE@am__EXEEXT_15 = aleph$(EXEEXT)
+@ALEPH_TRUE@am__EXEEXT_14 = aleph$(EXEEXT)
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
"$(DESTDIR)$(man5dir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
@@ -414,7 +409,7 @@ am__objects_7 = mpost-mpini.$(OBJEXT) mpost-mp0.$(OBJEXT) \
nodist_mpost_OBJECTS = $(am__objects_7) mpost-mp-pool.$(OBJEXT) \
mpost-mpextra.$(OBJEXT)
mpost_OBJECTS = $(nodist_mpost_OBJECTS)
-mpost_DEPENDENCIES = libmpost.a $(am__DEPENDENCIES_2)
+mpost_DEPENDENCIES = libmp.a $(am__DEPENDENCIES_2)
nodist_odvicopy_OBJECTS = odvicopy.$(OBJEXT)
odvicopy_OBJECTS = $(nodist_odvicopy_OBJECTS)
odvicopy_LDADD = $(LDADD)
@@ -427,14 +422,6 @@ nodist_ofm2opl_OBJECTS = ofm2opl.$(OBJEXT)
ofm2opl_OBJECTS = $(nodist_ofm2opl_OBJECTS)
ofm2opl_LDADD = $(LDADD)
ofm2opl_DEPENDENCIES = $(proglib) $(am__DEPENDENCIES_1)
-am_omega_OBJECTS = omega-omega.$(OBJEXT) omega-omegabis.$(OBJEXT)
-am__objects_8 = omega-omegaini.$(OBJEXT) omega-omega0.$(OBJEXT) \
- omega-omega1.$(OBJEXT) omega-omega2.$(OBJEXT) \
- omega-omega3.$(OBJEXT)
-nodist_omega_OBJECTS = $(am__objects_8) omega-omega-pool.$(OBJEXT) \
- omega-omegaextra.$(OBJEXT)
-omega_OBJECTS = $(am_omega_OBJECTS) $(nodist_omega_OBJECTS)
-omega_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
nodist_opl2ofm_OBJECTS = opl2ofm.$(OBJEXT)
opl2ofm_OBJECTS = $(nodist_opl2ofm_OBJECTS)
opl2ofm_LDADD = $(LDADD)
@@ -458,12 +445,12 @@ patgen_DEPENDENCIES = $(proglib) $(am__DEPENDENCIES_1)
am__dist_pdftex_SOURCES_DIST = synctexdir/synctex.h \
synctexdir/synctex-common.h synctexdir/synctex-pdftex.h
dist_pdftex_OBJECTS =
-am__objects_9 = pdftex-pdftexini.$(OBJEXT) pdftex-pdftex0.$(OBJEXT) \
+am__objects_8 = pdftex-pdftexini.$(OBJEXT) pdftex-pdftex0.$(OBJEXT) \
pdftex-pdftex1.$(OBJEXT) pdftex-pdftex2.$(OBJEXT) \
pdftex-pdftex3.$(OBJEXT)
-@PDFTEX_SYNCTEX_TRUE@am__objects_10 = pdftex-synctex-pdf.$(OBJEXT)
-nodist_pdftex_OBJECTS = $(am__objects_9) pdftex-pdftex-pool.$(OBJEXT) \
- pdftex-pdftexextra.$(OBJEXT) $(am__objects_10)
+@PDFTEX_SYNCTEX_TRUE@am__objects_9 = pdftex-synctex-pdf.$(OBJEXT)
+nodist_pdftex_OBJECTS = $(am__objects_8) pdftex-pdftex-pool.$(OBJEXT) \
+ pdftex-pdftexextra.$(OBJEXT) $(am__objects_9)
pdftex_OBJECTS = $(dist_pdftex_OBJECTS) $(nodist_pdftex_OBJECTS)
am__DEPENDENCIES_6 = libpdftex.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -500,11 +487,11 @@ tangleboot_DEPENDENCIES = $(proglib) $(am__DEPENDENCIES_1)
am__dist_tex_SOURCES_DIST = synctexdir/synctex.h \
synctexdir/synctex-common.h synctexdir/synctex-tex.h
dist_tex_OBJECTS =
-am__objects_11 = tex-texini.$(OBJEXT) tex-tex0.$(OBJEXT) \
+am__objects_10 = tex-texini.$(OBJEXT) tex-tex0.$(OBJEXT) \
tex-tex1.$(OBJEXT) tex-tex2.$(OBJEXT)
-@TEX_SYNCTEX_TRUE@am__objects_12 = tex-synctex.$(OBJEXT)
-nodist_tex_OBJECTS = $(am__objects_11) tex-tex-pool.$(OBJEXT) \
- tex-texextra.$(OBJEXT) $(am__objects_12)
+@TEX_SYNCTEX_TRUE@am__objects_11 = tex-synctex.$(OBJEXT)
+nodist_tex_OBJECTS = $(am__objects_10) tex-tex-pool.$(OBJEXT) \
+ tex-texextra.$(OBJEXT) $(am__objects_11)
tex_OBJECTS = $(dist_tex_OBJECTS) $(nodist_tex_OBJECTS)
@TEX_SYNCTEX_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1)
tex_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
@@ -558,7 +545,7 @@ SOURCES = $(libff_a_SOURCES) $(liblua51_a_SOURCES) \
$(libluasocket_a_SOURCES) $(libluatex_a_SOURCES) \
$(EXTRA_libluatex_a_SOURCES) $(nodist_libluatex_a_SOURCES) \
$(libmd5_a_SOURCES) $(nodist_libmf_a_SOURCES) \
- $(libmpost_a_SOURCES) $(libpdftex_a_SOURCES) \
+ $(libmp_a_SOURCES) $(libpdftex_a_SOURCES) \
$(EXTRA_libpdftex_a_SOURCES) $(libzzip_a_SOURCES) \
$(aleph_SOURCES) $(nodist_aleph_SOURCES) \
$(nodist_bibtex_SOURCES) $(nodist_ctangle_SOURCES) \
@@ -573,7 +560,6 @@ SOURCES = $(libff_a_SOURCES) $(liblua51_a_SOURCES) \
$(nodist_mf_nowin_SOURCES) $(nodist_mft_SOURCES) \
$(nodist_mpost_SOURCES) $(nodist_odvicopy_SOURCES) \
$(nodist_odvitype_SOURCES) $(nodist_ofm2opl_SOURCES) \
- $(omega_SOURCES) $(nodist_omega_SOURCES) \
$(nodist_opl2ofm_SOURCES) $(nodist_otangle_SOURCES) \
$(nodist_ovf2ovp_SOURCES) $(nodist_ovp2ovf_SOURCES) \
$(nodist_patgen_SOURCES) $(dist_pdftex_SOURCES) \
@@ -591,10 +577,10 @@ DIST_SOURCES = $(libff_a_SOURCES) $(liblua51_a_SOURCES) \
$(libluamisc_a_SOURCES) $(EXTRA_libluamisc_a_SOURCES) \
$(libluasocket_a_SOURCES) $(libluatex_a_SOURCES) \
$(EXTRA_libluatex_a_SOURCES) $(libmd5_a_SOURCES) \
- $(libmpost_a_SOURCES) $(libpdftex_a_SOURCES) \
+ $(libmp_a_SOURCES) $(libpdftex_a_SOURCES) \
$(EXTRA_libpdftex_a_SOURCES) $(libzzip_a_SOURCES) \
$(aleph_SOURCES) $(am__dist_etex_SOURCES_DIST) \
- $(gftodvi_SOURCES) $(md5main_SOURCES) $(omega_SOURCES) \
+ $(gftodvi_SOURCES) $(md5main_SOURCES) \
$(am__dist_pdftex_SOURCES_DIST) $(pdftosrc_SOURCES) \
$(synctex_SOURCES) $(am__dist_tex_SOURCES_DIST) \
$(ttf2afm_SOURCES) $(EXTRA_ttf2afm_SOURCES)
@@ -794,7 +780,7 @@ dist_check_SCRIPTS = tangle.test luatexdir/luatangle.test \
omegaware/otangle.test libmd5/md5.test
TESTS = tangle.test tiedir/tie.test $(am__append_11) $(am__append_14) \
libmd5/md5.test
-EXTRA_LIBRARIES = libmf.a libmpost.a libpdftex.a liblua51.a libzzip.a \
+EXTRA_LIBRARIES = libmf.a libmp.a libpdftex.a liblua51.a libzzip.a \
libluasocket.a libluamisc.a libff.a libluatex.a libmd5.a
EXTRA_DIST = PROJECTS cftests config.h cpascal.h help.h tangle.web \
tangle.ch tangleboot.p cwebdir ctangleboot.c cwebboot.c \
@@ -960,10 +946,7 @@ EXTRA_DIST = PROJECTS cftests config.h cpascal.h help.h tangle.web \
xetexdir/withenable.ac xetexdir/xetex.mk omegaware/ChangeLog \
$(odvicopy_sources) $(odvitype_sources) $(ofm2opl_sources) \
$(opl2ofm_sources) $(otangle_sources) $(ovf2ovp_sources) \
- $(ovp2ovf_sources) $(omega_web_srcs) $(omega_ch_srcs) \
- lib/texmfmp.c omegadir/ChangeLog omegadir/README \
- omegadir/omega.defines omegadir/omega.version \
- omegadir/omega.mk $(aleph_web_srcs) $(aleph_ch_srcs) \
+ $(ovp2ovf_sources) $(aleph_web_srcs) $(aleph_ch_srcs) \
lib/texmfmp.c alephdir/ChangeLog alephdir/Makefile \
alephdir/aleph.defines alephdir/aleph.version \
alephdir/eomega.ech alephdir/etex.ch alephdir/omega.ch0 \
@@ -980,8 +963,8 @@ EXTRA_DIST = PROJECTS cftests config.h cpascal.h help.h tangle.web \
synctexdir/synctex-e-rec.ch1 synctexdir/synctex-pdf-rec.ch2 \
synctexdir/synctex-xe-mem.ch2 synctexdir/synctex-xe-rec.ch2 \
synctexdir/synctex-xe-rec.ch3 synctexdir/synctex-xetex.h \
- synctexdir/am/synctex.mk synctexdir/synctex.mk fmtutil.in \
- Makefile.in.orig configure.in.orig
+ synctexdir/synctex.mk fmtutil.in Makefile.in.orig \
+ configure.in.orig
DISTCLEANFILES = $(EXTRA_LIBRARIES) tangle.c tangle.h tangle.p \
tangle-web2c stamp-tangle tangleboot.c tangleboot.h ctangle.c \
cweb.c stamp-ctangle cftest.p $(web_programs:=.c) \
@@ -1000,10 +983,8 @@ DISTCLEANFILES = $(EXTRA_LIBRARIES) tangle.c tangle.h tangle.p \
luatangle.p $(lua_mp_c_h) mp-ctangle cftest.p \
$(omegaware_programs:=.c) $(omegaware_programs:=.h) \
$(omegaware_programs:=.p) $(omegaware_programs:=-web2c) \
- cftest.p $(nodist_omega_SOURCES) omega.web omega.ch \
- omega-web2c omega.p omega.pool omega-tangle \
- $(nodist_aleph_SOURCES) aleph.web aleph.ch aleph-web2c aleph.p \
- aleph.pool aleph-tangle
+ cftest.p $(nodist_aleph_SOURCES) aleph.web aleph.ch \
+ aleph-web2c aleph.p aleph.pool aleph-tangle
CLEANFILES =
web2c = srcdir=$(srcdir) $(SHELL) $(srcdir)/web2c/convert
makecpool = ./web2c/makecpool
@@ -1049,10 +1030,10 @@ nodist_weave_SOURCES = weave.c weave.h
nodist_ctie_SOURCES = ctie.c
nodist_cweave_SOURCES = cweave.c cweb.c
nodist_tie_SOURCES = tie.c
-tex_CPPFLAGS = $(am__append_17)
-tex_LDADD = $(LDADD) $(socketlibs) $(am__append_18)
+tex_CPPFLAGS = $(am__append_16)
+tex_LDADD = $(LDADD) $(socketlibs) $(am__append_17)
tex_c_h = texini.c tex0.c tex1.c tex2.c texcoerce.h texd.h
-nodist_tex_SOURCES = $(tex_c_h) tex-pool.c texextra.c $(am__append_19)
+nodist_tex_SOURCES = $(tex_c_h) tex-pool.c texextra.c $(am__append_18)
tex_ch_srcs = \
tex.web \
tex.ch \
@@ -1071,11 +1052,11 @@ mf_c_h = mfini.c mf0.c mf1.c mfcoerce.h mfd.h
nodist_libmf_a_SOURCES = $(mf_c_h) mf-pool.c
libmf_a_CPPFLAGS = -DMETA_FONT
mpost_CPPFLAGS = -I$(srcdir)/mpdir
-mpost_LDADD = libmpost.a $(LDADD)
+mpost_LDADD = libmp.a $(LDADD)
mpost_c_h = mpini.c mp0.c mp1.c mp2.c mpcoerce.h mpd.h
nodist_mpost_SOURCES = $(mpost_c_h) mp-pool.c mpextra.c
-libmpost_a_CPPFLAGS = -I$(srcdir)/mpdir
-libmpost_a_SOURCES = \
+libmp_a_CPPFLAGS = -I$(srcdir)/mpdir
+libmp_a_SOURCES = \
mpdir/avl.c \
mpdir/avl.h \
mpdir/avlstuff.c \
@@ -1088,11 +1069,11 @@ libmpost_a_SOURCES = \
mpdir/writefont.c \
mpdir/writet1.c
-etex_CPPFLAGS = $(am__append_20)
-etex_LDADD = $(LDADD) $(socketlibs) $(am__append_21)
+etex_CPPFLAGS = $(am__append_19)
+etex_LDADD = $(LDADD) $(socketlibs) $(am__append_20)
etex_c_h = etexini.c etex0.c etex1.c etex2.c etexcoerce.h etexd.h
nodist_etex_SOURCES = $(etex_c_h) etex-pool.c etexextra.c \
- etexdir/etexextra.h $(am__append_22)
+ etexdir/etexextra.h $(am__append_21)
etex_web_srcs = \
tex.web \
etexdir/etex.ch \
@@ -1115,12 +1096,12 @@ pdftex_dependencies = $(proglib) $(LIBPNG_DEPEND) $(ZLIB_DEPEND) \
$(XPDF_DEPEND) $(OBSDCOMPAT_DEPEND) libmd5.a
nodist_EXTRA_pdftex_SOURCES = dummy.cxx
pdf_tangle = WEBINPUTS=.:$(srcdir)/pdftexdir $(buildenv) $(TANGLE)
-pdftex_CPPFLAGS = $(pdftex_cppflags) $(am__append_23)
+pdftex_CPPFLAGS = $(pdftex_cppflags) $(am__append_22)
pdftex_LDADD = $(pdftex_ldadd) $(LDADD) $(socketlibs)
pdftex_DEPENDENCIES = $(pdftex_dependencies) libpdftex.a
pdftex_c_h = pdftexini.c pdftex0.c pdftex1.c pdftex2.c pdftex3.c pdftexcoerce.h pdftexd.h
nodist_pdftex_SOURCES = $(pdftex_c_h) pdftex-pool.c pdftexextra.c \
- pdftexdir/pdftexextra.h $(am__append_24)
+ pdftexdir/pdftexextra.h $(am__append_23)
pdftex_ch_srcs = \
pdftexdir/pdftex.web \
pdftexdir/tex.ch0 \
@@ -1584,48 +1565,6 @@ nodist_ovf2ovp_SOURCES = ovf2ovp.c ovf2ovp.h
ovf2ovp_sources = omegaware/ovf2ovp.web omegaware/ovf2ovp.ch
nodist_ovp2ovf_SOURCES = ovp2ovf.c ovp2ovf.h
ovp2ovf_sources = omegaware/ovp2ovf.web omegaware/ovp2ovf.ch
-omega_LDADD = $(LDADD) $(socketlibs)
-omega_CPPFLAGS = -I$(srcdir)/omegadir $(AM_CPPFLAGS)
-omega_c_h = omegaini.c omega0.c omega1.c omega2.c omega3.c omegacoerce.h omegad.h
-nodist_omega_SOURCES = $(omega_c_h) omega-pool.c omegaextra.c
-omega_SOURCES = \
- omegadir/omega.c \
- omegadir/omegabis.c \
- omegadir/omegaextra.h \
- omegadir/omegamem.h \
- omegadir/omega-pool.h
-
-omega_web_srcs = \
- tex.web \
- omegadir/omnode.ch \
- omegadir/om16bit.ch \
- omegadir/omstr.ch \
- omegadir/omfont.ch \
- omegadir/omchar.ch \
- omegadir/omfi.ch \
- omegadir/ompar.ch \
- omegadir/omocp.ch \
- omegadir/omfilter.ch \
- omegadir/omtrans.ch \
- omegadir/omdir.ch \
- omegadir/omcprt.ch \
- omegadir/omxml.ch
-
-omega_ch_srcs = \
- omegadir/comnode.ch \
- omegadir/com16bit.ch \
- omegadir/comstr.ch \
- omegadir/comfont.ch \
- omegadir/comchar.ch \
- omegadir/comfi.ch \
- omegadir/compar.ch \
- omegadir/comocp.ch \
- omegadir/comfilter.ch \
- omegadir/comtrans.ch \
- omegadir/comdir.ch \
- omegadir/comxml.ch \
- omegadir/comsrcspec.ch
-
aleph_LDADD = $(LDADD) $(socketlibs)
aleph_CPPFLAGS = -I$(srcdir)/alephdir $(AM_CPPFLAGS)
aleph_c_h = alephini.c aleph0.c aleph1.c aleph2.c aleph3.c alephcoerce.h alephd.h
@@ -1747,7 +1686,7 @@ all: c-auto.h ff-config.h
.SUFFIXES: .c .cc .cxx .lo .o .obj
am--refresh:
@:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/am/bootstrap.am $(srcdir)/am/web.am $(srcdir)/am/cweb.am $(srcdir)/am/texmf.am $(srcdir)/mpdir/am/mp.am $(srcdir)/etexdir/am/etex.am $(srcdir)/pdftexdir/am/pdftex.am $(srcdir)/luatexdir/am/luatex.am $(srcdir)/xetexdir/am/xetex.am $(srcdir)/omegaware/am/omegaware.am $(srcdir)/omegadir/am/omega.am $(srcdir)/alephdir/am/aleph.am $(srcdir)/synctexdir/am/synctex.am $(srcdir)/libmd5/am/md5.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/am/bootstrap.am $(srcdir)/am/web.am $(srcdir)/am/cweb.am $(srcdir)/am/texmf.am $(srcdir)/mpdir/am/mp.am $(srcdir)/etexdir/am/etex.am $(srcdir)/pdftexdir/am/pdftex.am $(srcdir)/luatexdir/am/luatex.am $(srcdir)/xetexdir/am/xetex.am $(srcdir)/omegaware/am/omegaware.am $(srcdir)/alephdir/am/aleph.am $(srcdir)/synctexdir/am/synctex.am $(srcdir)/libmd5/am/md5.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -1832,10 +1771,10 @@ libmf.a: $(libmf_a_OBJECTS) $(libmf_a_DEPENDENCIES)
-rm -f libmf.a
$(libmf_a_AR) libmf.a $(libmf_a_OBJECTS) $(libmf_a_LIBADD)
$(RANLIB) libmf.a
-libmpost.a: $(libmpost_a_OBJECTS) $(libmpost_a_DEPENDENCIES)
- -rm -f libmpost.a
- $(libmpost_a_AR) libmpost.a $(libmpost_a_OBJECTS) $(libmpost_a_LIBADD)
- $(RANLIB) libmpost.a
+libmp.a: $(libmp_a_OBJECTS) $(libmp_a_DEPENDENCIES)
+ -rm -f libmp.a
+ $(libmp_a_AR) libmp.a $(libmp_a_OBJECTS) $(libmp_a_LIBADD)
+ $(RANLIB) libmp.a
libpdftex.a: $(libpdftex_a_OBJECTS) $(libpdftex_a_DEPENDENCIES)
-rm -f libpdftex.a
$(libpdftex_a_AR) libpdftex.a $(libpdftex_a_OBJECTS) $(libpdftex_a_LIBADD)
@@ -1955,9 +1894,6 @@ odvitype$(EXEEXT): $(odvitype_OBJECTS) $(odvitype_DEPENDENCIES)
ofm2opl$(EXEEXT): $(ofm2opl_OBJECTS) $(ofm2opl_DEPENDENCIES)
@rm -f ofm2opl$(EXEEXT)
$(LINK) $(ofm2opl_OBJECTS) $(ofm2opl_LDADD) $(LIBS)
-omega$(EXEEXT): $(omega_OBJECTS) $(omega_DEPENDENCIES)
- @rm -f omega$(EXEEXT)
- $(LINK) $(omega_OBJECTS) $(omega_LDADD) $(LIBS)
opl2ofm$(EXEEXT): $(opl2ofm_OBJECTS) $(opl2ofm_DEPENDENCIES)
@rm -f opl2ofm$(EXEEXT)
$(LINK) $(opl2ofm_OBJECTS) $(opl2ofm_LDADD) $(LIBS)
@@ -2254,14 +2190,14 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmf_a-mf0.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmf_a-mf1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmf_a-mfini.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-avl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-avlstuff.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-mapfile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-turningnumber.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-utils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-writeenc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-writefont.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpost_a-writet1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-avl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-avlstuff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-mapfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-turningnumber.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-writeenc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-writefont.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmp_a-writet1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpdftex_a-avl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpdftex_a-avlstuff.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpdftex_a-epdf.Po@am__quote@
@@ -2313,15 +2249,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/odvicopy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/odvitype.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ofm2opl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omega-pool.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omega.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omega0.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omega1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omega2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omega3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omegabis.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omegaextra.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/omega-omegaini.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opl2ofm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otangle.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ovf2ovp.Po@am__quote@
@@ -5126,117 +5053,117 @@ libmf_a-mf-pool.obj: mf-pool.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmf_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmf_a-mf-pool.obj `if test -f 'mf-pool.c'; then $(CYGPATH_W) 'mf-pool.c'; else $(CYGPATH_W) '$(srcdir)/mf-pool.c'; fi`
-libmpost_a-avl.o: mpdir/avl.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-avl.o -MD -MP -MF $(DEPDIR)/libmpost_a-avl.Tpo -c -o libmpost_a-avl.o `test -f 'mpdir/avl.c' || echo '$(srcdir)/'`mpdir/avl.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-avl.Tpo $(DEPDIR)/libmpost_a-avl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avl.c' object='libmpost_a-avl.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-avl.o: mpdir/avl.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-avl.o -MD -MP -MF $(DEPDIR)/libmp_a-avl.Tpo -c -o libmp_a-avl.o `test -f 'mpdir/avl.c' || echo '$(srcdir)/'`mpdir/avl.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-avl.Tpo $(DEPDIR)/libmp_a-avl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avl.c' object='libmp_a-avl.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-avl.o `test -f 'mpdir/avl.c' || echo '$(srcdir)/'`mpdir/avl.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-avl.o `test -f 'mpdir/avl.c' || echo '$(srcdir)/'`mpdir/avl.c
-libmpost_a-avl.obj: mpdir/avl.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-avl.obj -MD -MP -MF $(DEPDIR)/libmpost_a-avl.Tpo -c -o libmpost_a-avl.obj `if test -f 'mpdir/avl.c'; then $(CYGPATH_W) 'mpdir/avl.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avl.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-avl.Tpo $(DEPDIR)/libmpost_a-avl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avl.c' object='libmpost_a-avl.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-avl.obj: mpdir/avl.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-avl.obj -MD -MP -MF $(DEPDIR)/libmp_a-avl.Tpo -c -o libmp_a-avl.obj `if test -f 'mpdir/avl.c'; then $(CYGPATH_W) 'mpdir/avl.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avl.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-avl.Tpo $(DEPDIR)/libmp_a-avl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avl.c' object='libmp_a-avl.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-avl.obj `if test -f 'mpdir/avl.c'; then $(CYGPATH_W) 'mpdir/avl.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avl.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-avl.obj `if test -f 'mpdir/avl.c'; then $(CYGPATH_W) 'mpdir/avl.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avl.c'; fi`
-libmpost_a-avlstuff.o: mpdir/avlstuff.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-avlstuff.o -MD -MP -MF $(DEPDIR)/libmpost_a-avlstuff.Tpo -c -o libmpost_a-avlstuff.o `test -f 'mpdir/avlstuff.c' || echo '$(srcdir)/'`mpdir/avlstuff.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-avlstuff.Tpo $(DEPDIR)/libmpost_a-avlstuff.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avlstuff.c' object='libmpost_a-avlstuff.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-avlstuff.o: mpdir/avlstuff.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-avlstuff.o -MD -MP -MF $(DEPDIR)/libmp_a-avlstuff.Tpo -c -o libmp_a-avlstuff.o `test -f 'mpdir/avlstuff.c' || echo '$(srcdir)/'`mpdir/avlstuff.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-avlstuff.Tpo $(DEPDIR)/libmp_a-avlstuff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avlstuff.c' object='libmp_a-avlstuff.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-avlstuff.o `test -f 'mpdir/avlstuff.c' || echo '$(srcdir)/'`mpdir/avlstuff.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-avlstuff.o `test -f 'mpdir/avlstuff.c' || echo '$(srcdir)/'`mpdir/avlstuff.c
-libmpost_a-avlstuff.obj: mpdir/avlstuff.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-avlstuff.obj -MD -MP -MF $(DEPDIR)/libmpost_a-avlstuff.Tpo -c -o libmpost_a-avlstuff.obj `if test -f 'mpdir/avlstuff.c'; then $(CYGPATH_W) 'mpdir/avlstuff.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avlstuff.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-avlstuff.Tpo $(DEPDIR)/libmpost_a-avlstuff.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avlstuff.c' object='libmpost_a-avlstuff.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-avlstuff.obj: mpdir/avlstuff.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-avlstuff.obj -MD -MP -MF $(DEPDIR)/libmp_a-avlstuff.Tpo -c -o libmp_a-avlstuff.obj `if test -f 'mpdir/avlstuff.c'; then $(CYGPATH_W) 'mpdir/avlstuff.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avlstuff.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-avlstuff.Tpo $(DEPDIR)/libmp_a-avlstuff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/avlstuff.c' object='libmp_a-avlstuff.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-avlstuff.obj `if test -f 'mpdir/avlstuff.c'; then $(CYGPATH_W) 'mpdir/avlstuff.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avlstuff.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-avlstuff.obj `if test -f 'mpdir/avlstuff.c'; then $(CYGPATH_W) 'mpdir/avlstuff.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/avlstuff.c'; fi`
-libmpost_a-mapfile.o: mpdir/mapfile.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-mapfile.o -MD -MP -MF $(DEPDIR)/libmpost_a-mapfile.Tpo -c -o libmpost_a-mapfile.o `test -f 'mpdir/mapfile.c' || echo '$(srcdir)/'`mpdir/mapfile.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-mapfile.Tpo $(DEPDIR)/libmpost_a-mapfile.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/mapfile.c' object='libmpost_a-mapfile.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-mapfile.o: mpdir/mapfile.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-mapfile.o -MD -MP -MF $(DEPDIR)/libmp_a-mapfile.Tpo -c -o libmp_a-mapfile.o `test -f 'mpdir/mapfile.c' || echo '$(srcdir)/'`mpdir/mapfile.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-mapfile.Tpo $(DEPDIR)/libmp_a-mapfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/mapfile.c' object='libmp_a-mapfile.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-mapfile.o `test -f 'mpdir/mapfile.c' || echo '$(srcdir)/'`mpdir/mapfile.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-mapfile.o `test -f 'mpdir/mapfile.c' || echo '$(srcdir)/'`mpdir/mapfile.c
-libmpost_a-mapfile.obj: mpdir/mapfile.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-mapfile.obj -MD -MP -MF $(DEPDIR)/libmpost_a-mapfile.Tpo -c -o libmpost_a-mapfile.obj `if test -f 'mpdir/mapfile.c'; then $(CYGPATH_W) 'mpdir/mapfile.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/mapfile.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-mapfile.Tpo $(DEPDIR)/libmpost_a-mapfile.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/mapfile.c' object='libmpost_a-mapfile.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-mapfile.obj: mpdir/mapfile.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-mapfile.obj -MD -MP -MF $(DEPDIR)/libmp_a-mapfile.Tpo -c -o libmp_a-mapfile.obj `if test -f 'mpdir/mapfile.c'; then $(CYGPATH_W) 'mpdir/mapfile.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/mapfile.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-mapfile.Tpo $(DEPDIR)/libmp_a-mapfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/mapfile.c' object='libmp_a-mapfile.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-mapfile.obj `if test -f 'mpdir/mapfile.c'; then $(CYGPATH_W) 'mpdir/mapfile.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/mapfile.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-mapfile.obj `if test -f 'mpdir/mapfile.c'; then $(CYGPATH_W) 'mpdir/mapfile.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/mapfile.c'; fi`
-libmpost_a-turningnumber.o: mpdir/turningnumber.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-turningnumber.o -MD -MP -MF $(DEPDIR)/libmpost_a-turningnumber.Tpo -c -o libmpost_a-turningnumber.o `test -f 'mpdir/turningnumber.c' || echo '$(srcdir)/'`mpdir/turningnumber.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-turningnumber.Tpo $(DEPDIR)/libmpost_a-turningnumber.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/turningnumber.c' object='libmpost_a-turningnumber.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-turningnumber.o: mpdir/turningnumber.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-turningnumber.o -MD -MP -MF $(DEPDIR)/libmp_a-turningnumber.Tpo -c -o libmp_a-turningnumber.o `test -f 'mpdir/turningnumber.c' || echo '$(srcdir)/'`mpdir/turningnumber.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-turningnumber.Tpo $(DEPDIR)/libmp_a-turningnumber.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/turningnumber.c' object='libmp_a-turningnumber.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-turningnumber.o `test -f 'mpdir/turningnumber.c' || echo '$(srcdir)/'`mpdir/turningnumber.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-turningnumber.o `test -f 'mpdir/turningnumber.c' || echo '$(srcdir)/'`mpdir/turningnumber.c
-libmpost_a-turningnumber.obj: mpdir/turningnumber.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-turningnumber.obj -MD -MP -MF $(DEPDIR)/libmpost_a-turningnumber.Tpo -c -o libmpost_a-turningnumber.obj `if test -f 'mpdir/turningnumber.c'; then $(CYGPATH_W) 'mpdir/turningnumber.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/turningnumber.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-turningnumber.Tpo $(DEPDIR)/libmpost_a-turningnumber.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/turningnumber.c' object='libmpost_a-turningnumber.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-turningnumber.obj: mpdir/turningnumber.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-turningnumber.obj -MD -MP -MF $(DEPDIR)/libmp_a-turningnumber.Tpo -c -o libmp_a-turningnumber.obj `if test -f 'mpdir/turningnumber.c'; then $(CYGPATH_W) 'mpdir/turningnumber.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/turningnumber.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-turningnumber.Tpo $(DEPDIR)/libmp_a-turningnumber.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/turningnumber.c' object='libmp_a-turningnumber.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-turningnumber.obj `if test -f 'mpdir/turningnumber.c'; then $(CYGPATH_W) 'mpdir/turningnumber.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/turningnumber.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-turningnumber.obj `if test -f 'mpdir/turningnumber.c'; then $(CYGPATH_W) 'mpdir/turningnumber.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/turningnumber.c'; fi`
-libmpost_a-utils.o: mpdir/utils.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-utils.o -MD -MP -MF $(DEPDIR)/libmpost_a-utils.Tpo -c -o libmpost_a-utils.o `test -f 'mpdir/utils.c' || echo '$(srcdir)/'`mpdir/utils.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-utils.Tpo $(DEPDIR)/libmpost_a-utils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/utils.c' object='libmpost_a-utils.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-utils.o: mpdir/utils.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-utils.o -MD -MP -MF $(DEPDIR)/libmp_a-utils.Tpo -c -o libmp_a-utils.o `test -f 'mpdir/utils.c' || echo '$(srcdir)/'`mpdir/utils.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-utils.Tpo $(DEPDIR)/libmp_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/utils.c' object='libmp_a-utils.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-utils.o `test -f 'mpdir/utils.c' || echo '$(srcdir)/'`mpdir/utils.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-utils.o `test -f 'mpdir/utils.c' || echo '$(srcdir)/'`mpdir/utils.c
-libmpost_a-utils.obj: mpdir/utils.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-utils.obj -MD -MP -MF $(DEPDIR)/libmpost_a-utils.Tpo -c -o libmpost_a-utils.obj `if test -f 'mpdir/utils.c'; then $(CYGPATH_W) 'mpdir/utils.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/utils.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-utils.Tpo $(DEPDIR)/libmpost_a-utils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/utils.c' object='libmpost_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-utils.obj: mpdir/utils.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-utils.obj -MD -MP -MF $(DEPDIR)/libmp_a-utils.Tpo -c -o libmp_a-utils.obj `if test -f 'mpdir/utils.c'; then $(CYGPATH_W) 'mpdir/utils.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/utils.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-utils.Tpo $(DEPDIR)/libmp_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/utils.c' object='libmp_a-utils.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-utils.obj `if test -f 'mpdir/utils.c'; then $(CYGPATH_W) 'mpdir/utils.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/utils.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-utils.obj `if test -f 'mpdir/utils.c'; then $(CYGPATH_W) 'mpdir/utils.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/utils.c'; fi`
-libmpost_a-writeenc.o: mpdir/writeenc.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-writeenc.o -MD -MP -MF $(DEPDIR)/libmpost_a-writeenc.Tpo -c -o libmpost_a-writeenc.o `test -f 'mpdir/writeenc.c' || echo '$(srcdir)/'`mpdir/writeenc.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-writeenc.Tpo $(DEPDIR)/libmpost_a-writeenc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writeenc.c' object='libmpost_a-writeenc.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-writeenc.o: mpdir/writeenc.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-writeenc.o -MD -MP -MF $(DEPDIR)/libmp_a-writeenc.Tpo -c -o libmp_a-writeenc.o `test -f 'mpdir/writeenc.c' || echo '$(srcdir)/'`mpdir/writeenc.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-writeenc.Tpo $(DEPDIR)/libmp_a-writeenc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writeenc.c' object='libmp_a-writeenc.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-writeenc.o `test -f 'mpdir/writeenc.c' || echo '$(srcdir)/'`mpdir/writeenc.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-writeenc.o `test -f 'mpdir/writeenc.c' || echo '$(srcdir)/'`mpdir/writeenc.c
-libmpost_a-writeenc.obj: mpdir/writeenc.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-writeenc.obj -MD -MP -MF $(DEPDIR)/libmpost_a-writeenc.Tpo -c -o libmpost_a-writeenc.obj `if test -f 'mpdir/writeenc.c'; then $(CYGPATH_W) 'mpdir/writeenc.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writeenc.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-writeenc.Tpo $(DEPDIR)/libmpost_a-writeenc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writeenc.c' object='libmpost_a-writeenc.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-writeenc.obj: mpdir/writeenc.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-writeenc.obj -MD -MP -MF $(DEPDIR)/libmp_a-writeenc.Tpo -c -o libmp_a-writeenc.obj `if test -f 'mpdir/writeenc.c'; then $(CYGPATH_W) 'mpdir/writeenc.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writeenc.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-writeenc.Tpo $(DEPDIR)/libmp_a-writeenc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writeenc.c' object='libmp_a-writeenc.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-writeenc.obj `if test -f 'mpdir/writeenc.c'; then $(CYGPATH_W) 'mpdir/writeenc.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writeenc.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-writeenc.obj `if test -f 'mpdir/writeenc.c'; then $(CYGPATH_W) 'mpdir/writeenc.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writeenc.c'; fi`
-libmpost_a-writefont.o: mpdir/writefont.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-writefont.o -MD -MP -MF $(DEPDIR)/libmpost_a-writefont.Tpo -c -o libmpost_a-writefont.o `test -f 'mpdir/writefont.c' || echo '$(srcdir)/'`mpdir/writefont.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-writefont.Tpo $(DEPDIR)/libmpost_a-writefont.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writefont.c' object='libmpost_a-writefont.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-writefont.o: mpdir/writefont.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-writefont.o -MD -MP -MF $(DEPDIR)/libmp_a-writefont.Tpo -c -o libmp_a-writefont.o `test -f 'mpdir/writefont.c' || echo '$(srcdir)/'`mpdir/writefont.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-writefont.Tpo $(DEPDIR)/libmp_a-writefont.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writefont.c' object='libmp_a-writefont.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-writefont.o `test -f 'mpdir/writefont.c' || echo '$(srcdir)/'`mpdir/writefont.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-writefont.o `test -f 'mpdir/writefont.c' || echo '$(srcdir)/'`mpdir/writefont.c
-libmpost_a-writefont.obj: mpdir/writefont.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-writefont.obj -MD -MP -MF $(DEPDIR)/libmpost_a-writefont.Tpo -c -o libmpost_a-writefont.obj `if test -f 'mpdir/writefont.c'; then $(CYGPATH_W) 'mpdir/writefont.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writefont.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-writefont.Tpo $(DEPDIR)/libmpost_a-writefont.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writefont.c' object='libmpost_a-writefont.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-writefont.obj: mpdir/writefont.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-writefont.obj -MD -MP -MF $(DEPDIR)/libmp_a-writefont.Tpo -c -o libmp_a-writefont.obj `if test -f 'mpdir/writefont.c'; then $(CYGPATH_W) 'mpdir/writefont.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writefont.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-writefont.Tpo $(DEPDIR)/libmp_a-writefont.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writefont.c' object='libmp_a-writefont.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-writefont.obj `if test -f 'mpdir/writefont.c'; then $(CYGPATH_W) 'mpdir/writefont.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writefont.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-writefont.obj `if test -f 'mpdir/writefont.c'; then $(CYGPATH_W) 'mpdir/writefont.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writefont.c'; fi`
-libmpost_a-writet1.o: mpdir/writet1.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-writet1.o -MD -MP -MF $(DEPDIR)/libmpost_a-writet1.Tpo -c -o libmpost_a-writet1.o `test -f 'mpdir/writet1.c' || echo '$(srcdir)/'`mpdir/writet1.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-writet1.Tpo $(DEPDIR)/libmpost_a-writet1.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writet1.c' object='libmpost_a-writet1.o' libtool=no @AMDEPBACKSLASH@
+libmp_a-writet1.o: mpdir/writet1.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-writet1.o -MD -MP -MF $(DEPDIR)/libmp_a-writet1.Tpo -c -o libmp_a-writet1.o `test -f 'mpdir/writet1.c' || echo '$(srcdir)/'`mpdir/writet1.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-writet1.Tpo $(DEPDIR)/libmp_a-writet1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writet1.c' object='libmp_a-writet1.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-writet1.o `test -f 'mpdir/writet1.c' || echo '$(srcdir)/'`mpdir/writet1.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-writet1.o `test -f 'mpdir/writet1.c' || echo '$(srcdir)/'`mpdir/writet1.c
-libmpost_a-writet1.obj: mpdir/writet1.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmpost_a-writet1.obj -MD -MP -MF $(DEPDIR)/libmpost_a-writet1.Tpo -c -o libmpost_a-writet1.obj `if test -f 'mpdir/writet1.c'; then $(CYGPATH_W) 'mpdir/writet1.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writet1.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmpost_a-writet1.Tpo $(DEPDIR)/libmpost_a-writet1.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writet1.c' object='libmpost_a-writet1.obj' libtool=no @AMDEPBACKSLASH@
+libmp_a-writet1.obj: mpdir/writet1.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmp_a-writet1.obj -MD -MP -MF $(DEPDIR)/libmp_a-writet1.Tpo -c -o libmp_a-writet1.obj `if test -f 'mpdir/writet1.c'; then $(CYGPATH_W) 'mpdir/writet1.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writet1.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libmp_a-writet1.Tpo $(DEPDIR)/libmp_a-writet1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mpdir/writet1.c' object='libmp_a-writet1.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmpost_a-writet1.obj `if test -f 'mpdir/writet1.c'; then $(CYGPATH_W) 'mpdir/writet1.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writet1.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmp_a-writet1.obj `if test -f 'mpdir/writet1.c'; then $(CYGPATH_W) 'mpdir/writet1.c'; else $(CYGPATH_W) '$(srcdir)/mpdir/writet1.c'; fi`
libpdftex_a-avl.o: pdftexdir/avl.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpdftex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpdftex_a-avl.o -MD -MP -MF $(DEPDIR)/libpdftex_a-avl.Tpo -c -o libpdftex_a-avl.o `test -f 'pdftexdir/avl.c' || echo '$(srcdir)/'`pdftexdir/avl.c
@@ -6078,132 +6005,6 @@ mpost-mpextra.obj: mpextra.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mpost_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpost-mpextra.obj `if test -f 'mpextra.c'; then $(CYGPATH_W) 'mpextra.c'; else $(CYGPATH_W) '$(srcdir)/mpextra.c'; fi`
-omega-omega.o: omegadir/omega.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega.o -MD -MP -MF $(DEPDIR)/omega-omega.Tpo -c -o omega-omega.o `test -f 'omegadir/omega.c' || echo '$(srcdir)/'`omegadir/omega.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega.Tpo $(DEPDIR)/omega-omega.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegadir/omega.c' object='omega-omega.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega.o `test -f 'omegadir/omega.c' || echo '$(srcdir)/'`omegadir/omega.c
-
-omega-omega.obj: omegadir/omega.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega.obj -MD -MP -MF $(DEPDIR)/omega-omega.Tpo -c -o omega-omega.obj `if test -f 'omegadir/omega.c'; then $(CYGPATH_W) 'omegadir/omega.c'; else $(CYGPATH_W) '$(srcdir)/omegadir/omega.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega.Tpo $(DEPDIR)/omega-omega.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegadir/omega.c' object='omega-omega.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega.obj `if test -f 'omegadir/omega.c'; then $(CYGPATH_W) 'omegadir/omega.c'; else $(CYGPATH_W) '$(srcdir)/omegadir/omega.c'; fi`
-
-omega-omegabis.o: omegadir/omegabis.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omegabis.o -MD -MP -MF $(DEPDIR)/omega-omegabis.Tpo -c -o omega-omegabis.o `test -f 'omegadir/omegabis.c' || echo '$(srcdir)/'`omegadir/omegabis.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omegabis.Tpo $(DEPDIR)/omega-omegabis.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegadir/omegabis.c' object='omega-omegabis.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omegabis.o `test -f 'omegadir/omegabis.c' || echo '$(srcdir)/'`omegadir/omegabis.c
-
-omega-omegabis.obj: omegadir/omegabis.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omegabis.obj -MD -MP -MF $(DEPDIR)/omega-omegabis.Tpo -c -o omega-omegabis.obj `if test -f 'omegadir/omegabis.c'; then $(CYGPATH_W) 'omegadir/omegabis.c'; else $(CYGPATH_W) '$(srcdir)/omegadir/omegabis.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omegabis.Tpo $(DEPDIR)/omega-omegabis.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegadir/omegabis.c' object='omega-omegabis.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omegabis.obj `if test -f 'omegadir/omegabis.c'; then $(CYGPATH_W) 'omegadir/omegabis.c'; else $(CYGPATH_W) '$(srcdir)/omegadir/omegabis.c'; fi`
-
-omega-omegaini.o: omegaini.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omegaini.o -MD -MP -MF $(DEPDIR)/omega-omegaini.Tpo -c -o omega-omegaini.o `test -f 'omegaini.c' || echo '$(srcdir)/'`omegaini.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omegaini.Tpo $(DEPDIR)/omega-omegaini.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegaini.c' object='omega-omegaini.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omegaini.o `test -f 'omegaini.c' || echo '$(srcdir)/'`omegaini.c
-
-omega-omegaini.obj: omegaini.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omegaini.obj -MD -MP -MF $(DEPDIR)/omega-omegaini.Tpo -c -o omega-omegaini.obj `if test -f 'omegaini.c'; then $(CYGPATH_W) 'omegaini.c'; else $(CYGPATH_W) '$(srcdir)/omegaini.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omegaini.Tpo $(DEPDIR)/omega-omegaini.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegaini.c' object='omega-omegaini.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omegaini.obj `if test -f 'omegaini.c'; then $(CYGPATH_W) 'omegaini.c'; else $(CYGPATH_W) '$(srcdir)/omegaini.c'; fi`
-
-omega-omega0.o: omega0.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega0.o -MD -MP -MF $(DEPDIR)/omega-omega0.Tpo -c -o omega-omega0.o `test -f 'omega0.c' || echo '$(srcdir)/'`omega0.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega0.Tpo $(DEPDIR)/omega-omega0.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega0.c' object='omega-omega0.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega0.o `test -f 'omega0.c' || echo '$(srcdir)/'`omega0.c
-
-omega-omega0.obj: omega0.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega0.obj -MD -MP -MF $(DEPDIR)/omega-omega0.Tpo -c -o omega-omega0.obj `if test -f 'omega0.c'; then $(CYGPATH_W) 'omega0.c'; else $(CYGPATH_W) '$(srcdir)/omega0.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega0.Tpo $(DEPDIR)/omega-omega0.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega0.c' object='omega-omega0.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega0.obj `if test -f 'omega0.c'; then $(CYGPATH_W) 'omega0.c'; else $(CYGPATH_W) '$(srcdir)/omega0.c'; fi`
-
-omega-omega1.o: omega1.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega1.o -MD -MP -MF $(DEPDIR)/omega-omega1.Tpo -c -o omega-omega1.o `test -f 'omega1.c' || echo '$(srcdir)/'`omega1.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega1.Tpo $(DEPDIR)/omega-omega1.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega1.c' object='omega-omega1.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega1.o `test -f 'omega1.c' || echo '$(srcdir)/'`omega1.c
-
-omega-omega1.obj: omega1.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega1.obj -MD -MP -MF $(DEPDIR)/omega-omega1.Tpo -c -o omega-omega1.obj `if test -f 'omega1.c'; then $(CYGPATH_W) 'omega1.c'; else $(CYGPATH_W) '$(srcdir)/omega1.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega1.Tpo $(DEPDIR)/omega-omega1.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega1.c' object='omega-omega1.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega1.obj `if test -f 'omega1.c'; then $(CYGPATH_W) 'omega1.c'; else $(CYGPATH_W) '$(srcdir)/omega1.c'; fi`
-
-omega-omega2.o: omega2.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega2.o -MD -MP -MF $(DEPDIR)/omega-omega2.Tpo -c -o omega-omega2.o `test -f 'omega2.c' || echo '$(srcdir)/'`omega2.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega2.Tpo $(DEPDIR)/omega-omega2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega2.c' object='omega-omega2.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega2.o `test -f 'omega2.c' || echo '$(srcdir)/'`omega2.c
-
-omega-omega2.obj: omega2.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega2.obj -MD -MP -MF $(DEPDIR)/omega-omega2.Tpo -c -o omega-omega2.obj `if test -f 'omega2.c'; then $(CYGPATH_W) 'omega2.c'; else $(CYGPATH_W) '$(srcdir)/omega2.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega2.Tpo $(DEPDIR)/omega-omega2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega2.c' object='omega-omega2.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega2.obj `if test -f 'omega2.c'; then $(CYGPATH_W) 'omega2.c'; else $(CYGPATH_W) '$(srcdir)/omega2.c'; fi`
-
-omega-omega3.o: omega3.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega3.o -MD -MP -MF $(DEPDIR)/omega-omega3.Tpo -c -o omega-omega3.o `test -f 'omega3.c' || echo '$(srcdir)/'`omega3.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega3.Tpo $(DEPDIR)/omega-omega3.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega3.c' object='omega-omega3.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega3.o `test -f 'omega3.c' || echo '$(srcdir)/'`omega3.c
-
-omega-omega3.obj: omega3.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega3.obj -MD -MP -MF $(DEPDIR)/omega-omega3.Tpo -c -o omega-omega3.obj `if test -f 'omega3.c'; then $(CYGPATH_W) 'omega3.c'; else $(CYGPATH_W) '$(srcdir)/omega3.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega3.Tpo $(DEPDIR)/omega-omega3.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega3.c' object='omega-omega3.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega3.obj `if test -f 'omega3.c'; then $(CYGPATH_W) 'omega3.c'; else $(CYGPATH_W) '$(srcdir)/omega3.c'; fi`
-
-omega-omega-pool.o: omega-pool.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega-pool.o -MD -MP -MF $(DEPDIR)/omega-omega-pool.Tpo -c -o omega-omega-pool.o `test -f 'omega-pool.c' || echo '$(srcdir)/'`omega-pool.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega-pool.Tpo $(DEPDIR)/omega-omega-pool.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega-pool.c' object='omega-omega-pool.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega-pool.o `test -f 'omega-pool.c' || echo '$(srcdir)/'`omega-pool.c
-
-omega-omega-pool.obj: omega-pool.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omega-pool.obj -MD -MP -MF $(DEPDIR)/omega-omega-pool.Tpo -c -o omega-omega-pool.obj `if test -f 'omega-pool.c'; then $(CYGPATH_W) 'omega-pool.c'; else $(CYGPATH_W) '$(srcdir)/omega-pool.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omega-pool.Tpo $(DEPDIR)/omega-omega-pool.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omega-pool.c' object='omega-omega-pool.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omega-pool.obj `if test -f 'omega-pool.c'; then $(CYGPATH_W) 'omega-pool.c'; else $(CYGPATH_W) '$(srcdir)/omega-pool.c'; fi`
-
-omega-omegaextra.o: omegaextra.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omegaextra.o -MD -MP -MF $(DEPDIR)/omega-omegaextra.Tpo -c -o omega-omegaextra.o `test -f 'omegaextra.c' || echo '$(srcdir)/'`omegaextra.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omegaextra.Tpo $(DEPDIR)/omega-omegaextra.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegaextra.c' object='omega-omegaextra.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omegaextra.o `test -f 'omegaextra.c' || echo '$(srcdir)/'`omegaextra.c
-
-omega-omegaextra.obj: omegaextra.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT omega-omegaextra.obj -MD -MP -MF $(DEPDIR)/omega-omegaextra.Tpo -c -o omega-omegaextra.obj `if test -f 'omegaextra.c'; then $(CYGPATH_W) 'omegaextra.c'; else $(CYGPATH_W) '$(srcdir)/omegaextra.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/omega-omegaextra.Tpo $(DEPDIR)/omega-omegaextra.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='omegaextra.c' object='omega-omegaextra.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(omega_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o omega-omegaextra.obj `if test -f 'omegaextra.c'; then $(CYGPATH_W) 'omegaextra.c'; else $(CYGPATH_W) '$(srcdir)/omegaextra.c'; fi`
-
pdftex-pdftexini.o: pdftexini.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pdftex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pdftex-pdftexini.o -MD -MP -MF $(DEPDIR)/pdftex-pdftexini.Tpo -c -o pdftex-pdftexini.o `test -f 'pdftexini.c' || echo '$(srcdir)/'`pdftexini.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/pdftex-pdftexini.Tpo $(DEPDIR)/pdftex-pdftexini.Po
@@ -7439,7 +7240,7 @@ mp-tangle: tangle mp.web mp.ch
mp-pool.c: mp.pool $(makecpool) mpdir/mplib.h
$(makecpool) mp.pool $(srcdir)/mpdir/mplib.h >$@ || rm -f $@
-$(libmpost_a_SOURCES): mpd.h
+$(libmp_a_SOURCES): mpd.h
$(etex_c_h): etex-web2c
etex-web2c: etex.p $(web2c_texmf)
$(web2c) etex
@@ -7580,25 +7381,6 @@ ovp2ovf-web2c: $(web2c_common) $(web2c_programs) ovp2ovf.p
touch ovp2ovf.c ovp2ovf.h
ovp2ovf.p: tangle $(ovp2ovf_sources)
$(ow_tangle) ovp2ovf ovp2ovf
-@OMEGA_TRUE@$(omega_SOURCES): omegad.h
-$(omega_c_h): omega-web2c
-omega-web2c: omega.p $(web2c_texmf) omegadir/omega.defines
- $(web2c) omega
- echo timestamp >$@
- touch $(omega_c_h)
-omegaextra.c: lib/texmfmp.c omegad.h
- sed s/TEX-OR-MF-OR-MP/omega/ $(srcdir)/lib/texmfmp.c >$@
-omega.p omega.pool: omega-tangle
-omega-tangle: otangle omega.web omega.ch
- $(otangle) omega omega
- echo timestamp >$@
- touch omega.p omega.pool
-omega-pool.c: omega.pool $(makecpool) omegadir/omega-pool.h
- $(makecpool) omega.pool $(srcdir)/omegadir/omega-pool.h >$@ || rm -f $@
-omega.web: $(TIE) $(omega_web_srcs)
- $(tie) -m omega.web $(omega_web_srcs)
-omega.ch: $(TIE) omega.web $(omega_ch_srcs)
- $(tie) -c omega.ch omega.web $(omega_ch_srcs)
@ALEPH_TRUE@$(aleph_SOURCES): alephd.h
$(aleph_c_h): aleph-web2c
aleph-web2c: aleph.p $(web2c_texmf) alephdir/aleph.defines
diff --git a/Build/source/texk/web2c/ac/web2c.ac b/Build/source/texk/web2c/ac/web2c.ac
index 01c2f6ffbfb..73f72cb3825 100644
--- a/Build/source/texk/web2c/ac/web2c.ac
+++ b/Build/source/texk/web2c/ac/web2c.ac
@@ -25,7 +25,6 @@ AC_ARG_ENABLE([ipc],
m4_define([kpse_tex_progs], [dnl
[[tex], [yes], [no], [TeX], []],
[[etex], [no], [yes], [e-TeX], []],
-[[omega], [no], [no], [Omega], []],
[[aleph], [yes], [no], [Aleph], []],
[[pdftex], [yes], [yes], [pdfTeX], [xpdf libpng obsdcompat]],
[[luatex], [yes], [no], [luaTeX], [xpdf libpng obsdcompat]],
diff --git a/Build/source/texk/web2c/c-auto.in b/Build/source/texk/web2c/c-auto.in
index 6f3bb2a94e1..0990d54a279 100644
--- a/Build/source/texk/web2c/c-auto.in
+++ b/Build/source/texk/web2c/c-auto.in
@@ -229,6 +229,9 @@
/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
diff --git a/Build/source/texk/web2c/configure b/Build/source/texk/web2c/configure
index 1cc486ab0cf..bd87cb57a84 100755
--- a/Build/source/texk/web2c/configure
+++ b/Build/source/texk/web2c/configure
@@ -865,10 +865,6 @@ ALEPH_SYNCTEX_FALSE
ALEPH_SYNCTEX_TRUE
ALEPH_FALSE
ALEPH_TRUE
-OMEGA_SYNCTEX_FALSE
-OMEGA_SYNCTEX_TRUE
-OMEGA_FALSE
-OMEGA_TRUE
ETEX_SYNCTEX_FALSE
ETEX_SYNCTEX_TRUE
ETEX_FALSE
@@ -1018,7 +1014,6 @@ enable_fmtutil
enable_ipc
enable_tex
enable_etex
-enable_omega
enable_aleph
enable_pdftex
enable_luatex
@@ -1714,7 +1709,6 @@ Optional Features:
--enable-ipc enable TeX's --ipc option, i.e., pipe to a program
--disable-tex do not compile and install TeX
--enable-etex compile and install e-TeX
- --enable-omega compile and install Omega
--disable-aleph do not compile and install Aleph
--disable-pdftex do not compile and install pdfTeX
--disable-luatex do not compile and install luaTeX
@@ -4363,13 +4357,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:4366: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:4360: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:4369: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:4363: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:4372: output\"" >&5)
+ (eval echo "\"\$as_me:4366: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5575,7 +5569,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5578 "configure"' > conftest.$ac_ext
+ echo '#line 5572 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7622,11 +7616,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7625: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7619: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7629: \$? = $ac_status" >&5
+ echo "$as_me:7623: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7961,11 +7955,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7964: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7958: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7968: \$? = $ac_status" >&5
+ echo "$as_me:7962: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8066,11 +8060,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8069: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8063: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8073: \$? = $ac_status" >&5
+ echo "$as_me:8067: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -8121,11 +8115,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8124: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8118: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8128: \$? = $ac_status" >&5
+ echo "$as_me:8122: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10921,7 +10915,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10924 "configure"
+#line 10918 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11017,7 +11011,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11020 "configure"
+#line 11014 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -16033,11 +16027,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16036: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16030: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16040: \$? = $ac_status" >&5
+ echo "$as_me:16034: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16132,11 +16126,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16135: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16129: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16139: \$? = $ac_status" >&5
+ echo "$as_me:16133: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -16184,11 +16178,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16187: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16181: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16191: \$? = $ac_status" >&5
+ echo "$as_me:16185: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17156,7 +17150,7 @@ fi
cpp_link_hack=false
-if test "x$GXX" = xyes && test "x$enable_cxx_runtime_hack" = xyes; then
+if test "x$GXX:$enable_cxx_runtime_hack" = xyes:yes; then
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
@@ -17317,7 +17311,10 @@ done
{ $as_echo "$as_me:$LINENO: checking for statically linking C++ runtime library" >&5
$as_echo_n "checking for statically linking C++ runtime library... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
+if test "${kpse_cv_cxx_hack+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -17337,13 +17334,14 @@ cout <<"worksok\n";
return 0;
}
_ACEOF
-flags_try0='-nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -lm'
-flags_try1='-lgcc_eh -lgcc -lc -lgcc_eh -lgcc'
-flags_try2='-lgcc -lc -lgcc'
-kpse_save_LIBS=$LIBS
-for flags in "$flags_try1" "$flags_try2"; do
- LIBS="$kpse_save_LIBS $flags_try0 $flags"
- rm -f conftest.$ac_objext conftest$ac_exeext
+ flags_try0='-nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -lm'
+ flags_try1='-lgcc_eh -lgcc -lc -lgcc_eh -lgcc'
+ flags_try2='-lgcc -lc -lgcc'
+ kpse_save_LIBS=$LIBS
+ cpp_link_hack=false
+ for flags in "$flags_try1" "$flags_try2"; do
+ LIBS="$kpse_save_LIBS $flags_try0 $flags"
+ rm -f conftest.$ac_objext conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -17364,10 +17362,15 @@ $as_echo "$ac_try_echo") >&5
test "$cross_compiling" = yes ||
$as_test_x conftest$ac_exeext
}; then
+ if test "x$cross_compiling" = xyes; then
+ cpp_link_hack=true; break
+else
case `(./conftest$ac_exeext; exit) 2>/dev/null` in
- worksok)
- cpp_link_hack=true; break;;
- esac
+ worksok) cpp_link_hack=true; break ;;
+esac
+
+fi
+
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -17378,16 +17381,20 @@ fi
rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext
-done
-LIBS=$kpse_save_LIBS
-
-if $cpp_link_hack; then
- CXX_HACK_LIBS="$flags_try0 $flags"
- { $as_echo "$as_me:$LINENO: result: ok using $CXX_HACK_LIBS" >&5
-$as_echo "ok using $CXX_HACK_LIBS" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: not supported" >&5
-$as_echo "not supported" >&6; }
+ done
+ LIBS=$kpse_save_LIBS
+ if $cpp_link_hack; then
+ kpse_cv_cxx_hack=ok
+ kpse_cv_cxx_flags="$flags_try0 $flags"
+ else
+ kpse_cv_cxx_hack="not supported"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $kpse_cv_cxx_hack" >&5
+$as_echo "$kpse_cv_cxx_hack" >&6; }
+if test "x$kpse_cv_cxx_hack" = xok; then
+ { $as_echo "$as_me:$LINENO: using $kpse_cv_cxx_flags" >&5
+$as_echo "$as_me: using $kpse_cv_cxx_flags" >&6;}
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -17397,9 +17404,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-if $cpp_link_hack; then
+if test "x$kpse_cv_cxx_flags" = xok; then
CXXLD='$(top_builddir)/CXXLD.sh'
CXX_HACK_DEPS=$CXXLD
+ CXX_HACK_LIBS=$kpse_cv_cxx_flags
cxxld_sh="#! ${CONFIG_SHELL-/bin/sh}
# CXXLD.sh. Generated by configure.
set -- $CXX \"\$@\" $CXX_HACK_LIBS
@@ -17456,14 +17464,6 @@ case $enable_etex in
yes|no) : ;;
*) enable_etex=no ;;
esac
-# Check whether --enable-omega was given.
-if test "${enable_omega+set}" = set; then
- enableval=$enable_omega;
-fi
-case $enable_omega in
- yes|no) : ;;
- *) enable_omega=no ;;
-esac
# Check whether --enable-aleph was given.
if test "${enable_aleph+set}" = set; then
enableval=$enable_aleph;
@@ -17837,20 +17837,6 @@ else
ETEX_SYNCTEX_TRUE='#'
ETEX_SYNCTEX_FALSE=
fi
- if test "x$enable_omega" = xyes; then
- OMEGA_TRUE=
- OMEGA_FALSE='#'
-else
- OMEGA_TRUE='#'
- OMEGA_FALSE=
-fi
- if false; then
- OMEGA_SYNCTEX_TRUE=
- OMEGA_SYNCTEX_FALSE='#'
-else
- OMEGA_SYNCTEX_TRUE='#'
- OMEGA_SYNCTEX_FALSE=
-fi
if test "x$enable_aleph" = xyes; then
ALEPH_TRUE=
ALEPH_FALSE='#'
@@ -17914,7 +17900,7 @@ else
TEX_SYNCTEX_TRUE='#'
TEX_SYNCTEX_FALSE=
fi
-if test "x$enable_omega:$enable_aleph:$enable_xetex" = xno:no:no; then
+if test "x$enable_aleph:$enable_xetex" = xno:no; then
enable_otangle=no
else
enable_otangle=yes
@@ -20252,6 +20238,365 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') if test "$ac_cv_type_long" = yes; then
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+ else
+ ac_cv_sizeof_long=0
+ fi ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (long)); }
+static unsigned long int ulongval () { return (long int) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (((long int) (sizeof (long))) < 0)
+ {
+ long int i = longval ();
+ if (i != ((long int) (sizeof (long))))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ((long int) (sizeof (long))))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_long" = yes; then
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+ else
+ ac_cv_sizeof_long=0
+ fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
for ac_func in strerror
do
@@ -23629,20 +23974,6 @@ $as_echo "$as_me: error: conditional \"ETEX_SYNCTEX\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
-if test -z "${OMEGA_TRUE}" && test -z "${OMEGA_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"OMEGA\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"OMEGA\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${OMEGA_SYNCTEX_TRUE}" && test -z "${OMEGA_SYNCTEX_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"OMEGA_SYNCTEX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"OMEGA_SYNCTEX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
if test -z "${ALEPH_TRUE}" && test -z "${ALEPH_FALSE}"; then
{ { $as_echo "$as_me:$LINENO: error: conditional \"ALEPH\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
diff --git a/Build/source/texk/web2c/configure.ac b/Build/source/texk/web2c/configure.ac
index 5b68f07f6f0..c79ce23e452 100644
--- a/Build/source/texk/web2c/configure.ac
+++ b/Build/source/texk/web2c/configure.ac
@@ -79,13 +79,13 @@ AS_IF([test "x$enable_ipc" = xyes],
])
AC_SUBST([socketlibs])
-dnl Generate *TEX, OMEGA, and ALEPH conditionals.
+dnl Generate *TEX and ALEPH conditionals.
m4_foreach([Kpse_Prog], [kpse_tex_progs],
[m4_ifset([Kpse_Prog],
[KPSE_XTEX_COND(Kpse_Prog)])])[]dnl
dnl Disable SyncTeX support for TeX.
AM_CONDITIONAL([TEX_SYNCTEX], [false])[]dnl
-AS_IF([test "x$enable_omega:$enable_aleph:$enable_xetex" = xno:no:no],
+AS_IF([test "x$enable_aleph:$enable_xetex" = xno:no],
[enable_otangle=no],
[enable_otangle=yes])
AM_CONDITIONAL([OTANGLE],
@@ -173,6 +173,7 @@ if test `(uname) 2>/dev/null` = aux; then
fi
AC_CHECK_SIZEOF([int])
+AC_CHECK_SIZEOF([long])
AC_CHECK_FUNCS([strerror])
AC_CHECK_HEADERS([errno.h])
diff --git a/Build/source/texk/web2c/lib/ChangeLog b/Build/source/texk/web2c/lib/ChangeLog
index be183bf4ddd..2756349bd56 100644
--- a/Build/source/texk/web2c/lib/ChangeLog
+++ b/Build/source/texk/web2c/lib/ChangeLog
@@ -1,3 +1,7 @@
+2009-03-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * texmfmp.c: remove all references to Omega, eOmega, and pdfeTeX.
+
2009-03-28 Karl Berry <karl@tug.org>
* texmfmp.c (mk_shellcmdlist, shell_cmd_is_allowed): not static,
diff --git a/Build/source/texk/web2c/lib/texmfmp.c b/Build/source/texk/web2c/lib/texmfmp.c
index 22afe6fc4a5..8735ad48e5c 100644
--- a/Build/source/texk/web2c/lib/texmfmp.c
+++ b/Build/source/texk/web2c/lib/texmfmp.c
@@ -48,10 +48,6 @@
#include <pdftexdir/ptexlib.h>
#elif defined (luaTeX)
#include <luatexdir/luatexextra.h>
-#elif defined (Omega)
-#include <omegadir/omegaextra.h>
-#elif defined (eOmega)
-#include <eomegadir/eomegaextra.h>
#elif defined (Aleph)
#include <alephdir/alephextra.h>
#else
@@ -553,14 +549,14 @@ static void parse_options P2H(int, string *);
/* Try to figure out if we have been given a filename. */
static string get_input_file_name P1H(void);
-#if defined(Omega) || defined(eOmega) || defined(Aleph)
+#if defined(Aleph)
/* Declare this for Omega family, so they can parse the -8bit option,
* even though it is a no-op for them.
*/
static int eightbitp;
-#endif /* Omega || eOmega || Aleph */
+#endif /* Aleph */
-#if defined(pdfTeX) || defined(pdfeTeX) || defined(luaTeX)
+#if defined(pdfTeX) || defined(luaTeX)
char *ptexbanner;
#endif
@@ -631,8 +627,8 @@ maininit P2C(int, ac, string *, av)
# define SYNCTEX_NO_OPTION INT_MAX
synctexoption = SYNCTEX_NO_OPTION;
#else
-# /* Omit warning for Omega and non-TeX. */
-# if defined(TeX) && !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+# /* Omit warning for Aleph and non-TeX. */
+# if defined(TeX) && !defined(Aleph)
# warning SyncTeX: -synctex command line option NOT available
# endif
#endif
@@ -700,10 +696,10 @@ maininit P2C(int, ac, string *, av)
iniversion = true;
} else if (FILESTRCASEEQ (kpse_program_name, "virtex")) {
virversion = true;
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(luaTeX)
+#if !defined(Aleph) && !defined(luaTeX)
} else if (FILESTRCASEEQ (kpse_program_name, "mltex")) {
mltexp = true;
-#endif /* !Omega && !eOmega && !Aleph && !luaTeX */
+#endif /* !Aleph && !luaTeX */
#endif /* TeX */
}
@@ -717,7 +713,7 @@ maininit P2C(int, ac, string *, av)
#ifdef TeX
/* Sanity check: -mltex, -enc, -etex only work in combination with -ini. */
if (!iniversion) {
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(luaTeX)
+#if !defined(Aleph) && !defined(luaTeX)
if (mltexp) {
fprintf(stderr, "-mltex only works with -ini\n");
}
@@ -770,16 +766,16 @@ maininit P2C(int, ac, string *, av)
kpse_src_compile);
#endif /* MP */
#ifdef TeX
-#if defined(Omega) || defined (eOmega) || defined (Aleph)
+#if defined (Aleph)
kpse_set_program_enabled (kpse_ocp_format, MAKE_OMEGA_OCP_BY_DEFAULT,
kpse_src_compile);
kpse_set_program_enabled (kpse_ofm_format, MAKE_OMEGA_OFM_BY_DEFAULT,
kpse_src_compile);
kpse_set_program_enabled (kpse_tfm_format, false, kpse_src_compile);
-#else /* !Omega && !eOmega && !Aleph */
+#else /* !Aleph */
kpse_set_program_enabled (kpse_tfm_format, MAKE_TEX_TFM_BY_DEFAULT,
kpse_src_compile);
-#endif /* !Omega && !eOmega && !Aleph */
+#endif /* !Aleph */
kpse_set_program_enabled (kpse_tex_format, MAKE_TEX_TEX_BY_DEFAULT,
kpse_src_compile);
kpse_set_program_enabled (kpse_fmt_format, MAKE_TEX_FMT_BY_DEFAULT,
@@ -871,7 +867,7 @@ topenin P1H(void)
}
#else
char *ptr = &(argv[i][0]);
- /* Don't use strcat, since in Omega the buffer elements aren't
+ /* Don't use strcat, since in Aleph the buffer elements aren't
single bytes. */
while (*ptr) {
buffer[k++] = *(ptr++);
@@ -896,7 +892,7 @@ topenin P1H(void)
/* One more time, this time converting to TeX's internal character
representation. */
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(XeTeX) && !defined(luaTeX)
+#if !defined(Aleph) && !defined(XeTeX) && !defined(luaTeX)
for (i = first; i < last; i++)
buffer[i] = xord[buffer[i]];
#endif
@@ -1046,7 +1042,7 @@ ipc_snd P3C(int, n, int, is_eof, char *, data)
/* This routine notifies the server if there is an eof, or the filename
if a new DVI file is starting. This is the routine called by TeX.
- Omega defines str_start(#) as str_start_ar[# - too_big_char], with
+ Aleph defines str_start(#) as str_start_ar[# - too_big_char], with
too_big_char = biggest_char + 1 = 65536 (omstr.ch).*/
void
@@ -1061,14 +1057,14 @@ ipcpage P1C(int, is_eof)
string cwd = xgetcwd ();
ipc_open_out ();
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+#if !defined(Aleph)
len = strstart[outputfilename + 1] - strstart[outputfilename];
#else
len = strstartar[outputfilename + 1 - 65536L] -
strstartar[outputfilename - 65536L];
#endif
name = (string)xmalloc (len + 1);
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+#if !defined(Aleph)
strncpy (name, (string)&strpool[strstart[outputfilename]], len);
#else
{
@@ -1096,8 +1092,8 @@ ipcpage P1C(int, is_eof)
#endif /* TeX && IPC */
#if defined (TeX) || defined (MF) || defined (MP)
- /* TCX and Omega get along like sparks and gunpowder. */
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(XeTeX) && !defined(luaTeX)
+ /* TCX and Aleph&Co get along like sparks and gunpowder. */
+#if !defined(Aleph) && !defined(XeTeX) && !defined(luaTeX)
/* Return the next number following START, setting POST to the following
character, as in strtol. Issue a warning and return -1 if no number
@@ -1198,7 +1194,7 @@ readtcxfile P1H(void)
WARNING1 ("Could not open char translation file `%s'", orig_filename);
}
}
-#endif /* !Omega && !eOmega && !Aleph && !XeTeX */
+#endif /* !Aleph && !XeTeX && !luaTeX */
#endif /* TeX || MF || MP [character translation] */
#ifdef XeTeX /* XeTeX handles this differently, and allows odd quotes within names */
@@ -1337,12 +1333,12 @@ static struct option long_options[]
{ "ipc", 0, &ipcon, 1 },
{ "ipc-start", 0, &ipcon, 2 },
#endif /* IPC */
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(luaTeX)
+#if !defined(Aleph) && !defined(luaTeX)
{ "mltex", 0, &mltexp, 1 },
#if !defined(XeTeX)
{ "enc", 0, &enctexp, 1 },
#endif /* !XeTeX */
-#endif /* !Omega && !eOmega && !Aleph */
+#endif /* !Aleph && !luaTeX */
#if defined (eTeX) || defined(pdfTeX) || defined(Aleph) || defined(XeTeX) || defined(luaTeX)
{ "etex", 0, &etexp, 1 },
#endif /* eTeX || pdfTeX || Aleph */
@@ -1519,10 +1515,10 @@ parse_options P2C(int, argc, string *, argv)
translate_filename = optarg;
} else if (ARGUMENT_IS ("default-translate-file")) {
default_translate_filename = optarg;
-#if defined(Omega) || defined(eOmega) || defined(Aleph)
+#if defined(Aleph)
} else if (ARGUMENT_IS ("8bit")) {
/* FIXME: print snippy message? Possibly also for above? */
-#endif /* !Omega && !eOmega && !Aleph */
+#endif /* !Aleph */
#endif /* TeX || MF || MP */
#if defined (TeX) || defined (MF)
@@ -1822,7 +1818,7 @@ boolean openoutnameok P1C(const_string, fname)
closed using pclose().
*/
-#if defined(pdfTeX) || defined(pdfeTeX) || defined(luaTeX)
+#if defined(pdfTeX) || defined(luaTeX)
static FILE *pipes [] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
@@ -1842,7 +1838,7 @@ open_in_or_pipe P3C(FILE **, f_ptr, int, filefmt, const_string, fopen_mode)
*f_ptr = NULL;
fname = (string)xmalloc(strlen((const_string)(nameoffile+1))+1);
strcpy(fname,(const_string)(nameoffile+1));
-#if !defined(pdfTeX) && !defined(pdfeTeX)
+#if !defined(pdfTeX)
if (fullnameoffile)
free (fullnameoffile);
fullnameoffile = xstrdup (fname);
@@ -2099,7 +2095,7 @@ input_line P1C(FILE *, f)
--last;
/* Don't bother using xord if we don't need to. */
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(luaTeX)
+#if !defined(Aleph) && !defined(luaTeX)
for (i = first; i <= last; i++)
buffer[i] = xord[buffer[i]];
#endif
@@ -2517,13 +2513,13 @@ gettexstring P1C(strnumber, s)
{
poolpointer len;
string name;
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+#if !defined(Aleph)
len = strstart[s + 1] - strstart[s];
#else
len = strstartar[s + 1 - 65536L] - strstartar[s - 65536L];
#endif
name = (string)xmalloc (len + 1);
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+#if !defined(Aleph)
strncpy (name, (string)&strpool[strstart[s]], len);
#else
{
diff --git a/Build/source/texk/web2c/man/ChangeLog b/Build/source/texk/web2c/man/ChangeLog
index cefa01af10e..68f0b6b46c9 100644
--- a/Build/source/texk/web2c/man/ChangeLog
+++ b/Build/source/texk/web2c/man/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-30 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * omega.man (removed): Omega has been removed. Copied to ...
+ * aleph.man (new): ... here and changed "Omega" => "Aleph".
+
2009-03-22 Karl Berry <karl@tug.org>
* etex.man: missed WB definition, no such thing as elatex,
diff --git a/Build/source/texk/web2c/man/Makefile.am b/Build/source/texk/web2c/man/Makefile.am
index df3e78671e7..129f41b6c55 100644
--- a/Build/source/texk/web2c/man/Makefile.am
+++ b/Build/source/texk/web2c/man/Makefile.am
@@ -56,14 +56,10 @@ if OTANGLE
man_sources +=
endif OTANGLE
-if OMEGA
-man_sources += omega.man
-endif OMEGA
-EXTRA_DIST += omega.man
-
if ALEPH
-man_sources +=
+man_sources += aleph.man
endif ALEPH
+EXTRA_DIST += aleph.man
man_sources += $(misc_man_sources)
EXTRA_DIST += $(misc_man_sources)
diff --git a/Build/source/texk/web2c/man/Makefile.in b/Build/source/texk/web2c/man/Makefile.in
index 6d90996ce1c..ef20c5baf84 100644
--- a/Build/source/texk/web2c/man/Makefile.in
+++ b/Build/source/texk/web2c/man/Makefile.in
@@ -41,8 +41,7 @@ host_triplet = @host@
@LUATEX_TRUE@am__append_8 =
@XETEX_TRUE@am__append_9 =
@OTANGLE_TRUE@am__append_10 =
-@OMEGA_TRUE@am__append_11 = omega.man
-@ALEPH_TRUE@am__append_12 =
+@ALEPH_TRUE@am__append_11 = aleph.man
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(top_srcdir)/../am/man.am ChangeLog
subdir = man
@@ -239,11 +238,10 @@ man_sources = $(bootstrap_man_sources) $(am__append_1) \
$(mpware_man_sources) $(am__append_2) $(am__append_3) \
$(am__append_4) $(am__append_5) $(am__append_6) \
$(am__append_7) $(am__append_8) $(am__append_9) \
- $(am__append_10) $(am__append_11) $(am__append_12) \
- $(misc_man_sources)
+ $(am__append_10) $(am__append_11) $(misc_man_sources)
EXTRA_DIST = $(bootstrap_man_sources) $(web_man_sources) \
$(mpware_man_sources) tex.man mf.man mpost.man etex.man \
- $(pdeftex_man_sources) omega.man $(misc_man_sources) \
+ $(pdeftex_man_sources) aleph.man $(misc_man_sources) \
amslatex.min initex.min lamstex.min pdftexman.m4 slitex.min \
spell.add virtex.min
bootstrap_man_sources = cweb.man tangle.man
diff --git a/Build/source/texk/web2c/man/omega.man b/Build/source/texk/web2c/man/omega.man
deleted file mode 100644
index e48e22a9a9f..00000000000
--- a/Build/source/texk/web2c/man/omega.man
+++ /dev/null
@@ -1,292 +0,0 @@
-.TH OMEGA 1 "27 December 1997" "Web2C @VERSION@"
-.\"=====================================================================
-.if n .ds MF Metafont
-.if t .ds MF M\s-2ETAFONT\s0
-.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
-.if n .ds TX TeX
-.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP for troff
-.el .ds OX TeX for nroff
-.\" the same but obliqued
-.\" BX definition must follow TX so BX can use TX
-.if t .ds BX \fRB\s-2IB\s0\fP\*(TX
-.if n .ds BX BibTeX
-.\" LX definition must follow TX so LX can use TX
-.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX
-.if n .ds LX LaTeX
-.if t .ds AX \fRA\\h'-0.1667m'\\v'0.20v'M\\v'-0.20v'\\h'-0.125m'S\fP\*(TX
-.if n .ds AX AmSTeX
-.if t .ds AY \fRA\\h'-0.1667m'\\v'0.20v'M\\v'-0.20v'\\h'-0.125m'S\fP\*(LX
-.if n .ds AY AmSLaTeX
-.\"=====================================================================
-.SH NAME
-omega, iniomega, viromega \- extended unicode TeX
-.SH SYNOPSIS
-.B omega
-.RI [ options ]
-[\fB&\fR \fIformat\fR ]
-[ \fIfile\fR | \fB\e\fR \fIcommands\fR ]
-.\"=====================================================================
-.SH DESCRIPTION
-Run the Omega typesetter on
-.IR file ,
-usually creating
-.IR file.dvi .
-If the file argument has no extension, ".tex" will be appended to it.
-Instead of a filename, a set of Omega commands can be given, the first
-of which must start with a backslash.
-With a
-.BI & format
-argument Omega uses a different set of precompiled commands,
-contained in
-.IR format.fmt ;
-it is usually better to use the
-.B -fmt
-.I format
-option instead.
-.PP
-Omega is a version of the \*(TX program modified for multilingual
-typesetting. It uses unicode, and has additional primitives for
-(among other things) bidirectional typesetting.
-.PP
-The
-.B iniomega
-and
-.B viromega
-commands are Omega's analogues to the
-.B initex
-and
-.B virtex
-commands. In this installation, they are symlinks to the
-.B omega
-executable.
-.PP
-Omega's command line options are similar to those of \*(TX.
-.PP
-Omega is experimental software.
-.\"=====================================================================
-.SH OPTIONS
-This version of Omega understands the following command line options.
-.TP
-.BI --oft \ format
-.rb
-Use
-.I format
-as the name of the format to be used, instead of the name by which
-Omega was called or a
-.I %&
-line.
-.TP
-.B -halt-on-error
-.rb
-Exit with an error code when an error is encountered during processing.
-.TP
-.B --help
-.rb
-Print help message and exit.
-.TP
-.B --ini
-.rb
-Be
-.BR iniomega ,
-for dumping formats; this is implicitly true if the program is called
-as
-.BR iniomega .
-.TP
-.BI --interaction \ mode
-.rb
-Sets the interaction mode. The mode can be one of
-.IR batchmode ,
-.IR nonstopmode ,
-.IR scrollmode ,
-and
-.IR errorstopmode .
-The meaning of these modes is the same as that of the corresponding
-\ecommands.
-.TP
-.B --ipc
-.rb
-Send DVI output to a socket as well as the usual output file. Whether
-this option is available is the choice of the installer.
-.TP
-.B --ipc-start
-.rb
-As
-.BR --ipc ,
-and starts the server at the other end as well. Whether this option
-is available is the choice of the installer.
-.TP
-.BI --kpathsea-debug \ bitmask
-.rb
-Sets path searching debugging flags according to the bitmask. See the
-.I Kpathsea
-manual for details.
-.TP
-.BI --maketex \ fmt
-.rb
-Enable
-.RI mktex fmt ,
-where
-.I fmt
-must be one of
-.I tex
-or
-.IR tfm .
-.TP
-.BI --no-maketex \ fmt
-.rb
-Disable
-.RI mktex fmt ,
-where
-.I fmt
-must be one of
-.I tex
-or
-.IR tfm .
-.TP
-.BI --output-comment \ string
-.rb
-Use
-.I string
-for the DVI file comment instead of the date.
-.TP
-.BI -output-directory \ directory
-.rb Write output files in
-.I directory
-instead of the current directory. Look up input files in
-.I directory
-first, the along the normal search path.
-.TP
-.B --parse-first-line
-.rb
-If the first line of the main input file begins with
-.I %&
-parse it to look for a dump name.
-.TP
-.BI --progname \ name
-.rb
-Pretend to be program
-.IR name .
-This affects both the format used and the search paths.
-.TP
-.B --recorder
-.rb
-Enable the filename recorder. This leaves a trace of the files opened
-for input and output in a file with extension
-.IR .ofl .
-(This option is always on.)
-.TP
-.B --shell-escape
-.rb
-Enable the
-.BI \ewrite18{ command }
-construct. The
-.I command
-can be any Bourne shell command. This construct is normally
-disallowed for security reasons.
-.TP
-.B --version
-.rb
-Print version information and exit.
-.\"=====================================================================
-.SH ENVIRONMENT
-See the Kpathsearch library documentation (the `Path specifications'
-node) for precise details of how the environment variables are used.
-The
-.B kpsewhich
-utility can be used to query the values of the variables.
-.PP
-One caveat: In most Omega formats, you cannot use ~ in a filename you
-give directly to Omega, because ~ is an active character, and hence is
-expanded, not taken as part of the filename. Other programs, such as
-\*(MF, do not have this problem.
-.PP
-.TP
-TEXMFOUTPUT
-Normally, Omega puts its output files in the current directory. If
-any output file cannot be opened there, it tries to open it in the
-directory specified in the environment variable TEXMFOUTPUT.
-There is no default value for that variable. For example, if you say
-.I tex paper
-and the current directory is not writable, if TEXMFOUTPUT has
-the value
-.IR /tmp ,
-Omega attempts to create
-.I /tmp/paper.log
-(and
-.IR /tmp/paper.dvi ,
-if any output is produced.)
-.TP
-TEXINPUTS
-Search path for
-.I \einput
-and
-.I \eopenin
-files.
-This should probably start with ``.'', so
-that user files are found before system files. An empty path
-component will be replaced with the paths defined in the
-.I texmf.cnf
-file. For example, set TEXINPUTS to ".:/home/usr/tex:" to prepend the
-current direcory and ``/home/user/tex'' to the standard search path.
-.TP
-TEXEDIT
-Command template for switching to editor. The default, usually
-.BR vi ,
-is set when Omega is compiled.
-.\"=====================================================================
-.SH FILES
-The location of the files mentioned below varies from system to
-system. Use the
-.B kpsewhich
-utility to find their locations.
-.TP
-.I omega.pool
-Encoded text of Omega's messages.
-.TP
-.I *.oft
-Predigested Omega format (.\|oft) files.
-.br
-.\"=====================================================================
-.SH NOTES
-This manual page is not meant to be exhaustive. The complete
-documentation for this version of Omega can be found in the info
-manual
-.IR "Web2C: A TeX implementation" .
-.\"=====================================================================
-.SH BUGS
-This version of Omega implements a number of optional extensions.
-In fact, many of these extensions conflict to a greater or lesser
-extent with the definition of Omega. When such extensions are
-enabled, the banner printed when Omega starts is changed to print
-.B Omegak
-instead of
-.BR Omega .
-.PP
-This version of Omega fails to trap arithmetic overflow when
-dimensions are added or subtracted. Cases where this occurs are rare,
-but when it does the generated
-.I DVI
-file will be invalid.
-.PP
-The
-.I DVI
-files produced by Omega may use extensions which make them incompatible
-with most software designed to handle
-.I DVI
-files. In order to print or preview them, you should use
-.B odvips
-to generate a PostScript file.
-.PP
-Omega is experimental software, and if you are an active user it is
-strongly recommended that you subscribe to the Omega mailing list.
-Visit the Omega website
-.B http://omega.cse.unsw.edu.au
-for information on how to subscribe.
-.\"=====================================================================
-.SH "SEE ALSO"
-.BR tex (1),
-.BR mf (1),
-.RB odvips (1),
-.\"=====================================================================
-.SH AUTHORS
-The primary authors of Omega are John Plaice and Yannis Haralambous.
diff --git a/Build/source/texk/web2c/mpdir/am/mp.am b/Build/source/texk/web2c/mpdir/am/mp.am
index eb89d5b0e96..0b7d39ffe97 100644
--- a/Build/source/texk/web2c/mpdir/am/mp.am
+++ b/Build/source/texk/web2c/mpdir/am/mp.am
@@ -7,7 +7,7 @@ bin_PROGRAMS += mpost
endif MP
mpost_CPPFLAGS = -I$(srcdir)/mpdir
-mpost_LDADD = libmpost.a $(LDADD)
+mpost_LDADD = libmp.a $(LDADD)
mpost_c_h = mpini.c mp0.c mp1.c mp2.c mpcoerce.h mpd.h
nodist_mpost_SOURCES = $(mpost_c_h) mp-pool.c mpextra.c
$(mpost_c_h): mp-web2c
@@ -28,13 +28,13 @@ mp-pool.c: mp.pool $(makecpool) mpdir/mplib.h
DISTCLEANFILES += $(nodist_mpost_SOURCES) mp-web2c \
mp.p mp.pool mp-tangle
-## libmpost
+## libmp
##
-EXTRA_LIBRARIES += libmpost.a
+EXTRA_LIBRARIES += libmp.a
-libmpost_a_CPPFLAGS = -I$(srcdir)/mpdir
+libmp_a_CPPFLAGS = -I$(srcdir)/mpdir
-libmpost_a_SOURCES = \
+libmp_a_SOURCES = \
mpdir/avl.c \
mpdir/avl.h \
mpdir/avlstuff.c \
@@ -47,8 +47,8 @@ libmpost_a_SOURCES = \
mpdir/writefont.c \
mpdir/writet1.c
-## We must create mpd.h before compiling the libmpost_a_SOURCES.
-$(libmpost_a_SOURCES): mpd.h
+## We must create mpd.h before compiling the libmp_a_SOURCES.
+$(libmp_a_SOURCES): mpd.h
## Eventually delete these files
##
diff --git a/Build/source/texk/web2c/omegadir/ChangeLog b/Build/source/texk/web2c/omegadir/ChangeLog
deleted file mode 100644
index c0d6577f5bf..00000000000
--- a/Build/source/texk/web2c/omegadir/ChangeLog
+++ /dev/null
@@ -1,23 +0,0 @@
-2009-02-27 Peter Breitenlohner <peb@mppmu.mpg.de>
-
- Backport of changes for Aleph
-
- * omegaextra.h (BUG_ADDRESS): make consistent.
- * omcprt.ch (new): do not announce copyright on the terminal.
- * omage.mk: include omcprt.ch in sources for omega.web.
- * com16bit.ch (banner_k): just make equivalent to banner,
- since Web2C announces itself.
-
- * comsrcspec.ch, com16bit.ch:
- Use runsystem() instead of system(), etc. See tex.ch entry in
- ../ChangeLog
-
-2008-07-04 Karl Berry <karl@tug.org>
-
- * omega.mk (otps): use @OMEGA@ for otps_programs and otps.
- Report from Francois Charrette, tldistro 03 Jul 2008 16:07:38.
-
-2008-03-23 Karl Berry <karl@freefriends.org>
-
- * Update to TeX 3.1415926; compile in pool files.
- From Akira.
diff --git a/Build/source/texk/web2c/omegadir/README b/Build/source/texk/web2c/omegadir/README
deleted file mode 100644
index c8b8d0d048f..00000000000
--- a/Build/source/texk/web2c/omegadir/README
+++ /dev/null
@@ -1,12 +0,0 @@
-This directory contains part of the Omega distribution, other parts
-are found in ../otps, and several files in the parent directory. You
-will also need odvips, the sources of which might be present in
-../../odvips.
-
-Omega is very much experimental software, and may prove hard or
-impossible to build on your system. At present, you need to install
-bison (the GNU version of yacc) and lex or flex to build otp2ocp from
-scratch. If you do not have these programs, you can try to use the
-y_tab.c-dist, y_tab.h-dist, and lex.yy.c-dist files to complete the
-build.
-
diff --git a/Build/source/texk/web2c/omegadir/am/omega.am b/Build/source/texk/web2c/omegadir/am/omega.am
deleted file mode 100644
index 77d97ab50ed..00000000000
--- a/Build/source/texk/web2c/omegadir/am/omega.am
+++ /dev/null
@@ -1,88 +0,0 @@
-## texk/web2c/omegadir/am/omega.am: Makefile fragment for Omega.
-
-## Omega
-##
-if OMEGA
-bin_PROGRAMS += omega
-endif OMEGA
-
-## With --enable-ipc, Omega may need to link with -lsocket.
-omega_LDADD = $(LDADD) $(socketlibs)
-
-omega_CPPFLAGS = -I$(srcdir)/omegadir $(AM_CPPFLAGS)
-omega_c_h = omegaini.c omega0.c omega1.c omega2.c omega3.c omegacoerce.h omegad.h
-nodist_omega_SOURCES = $(omega_c_h) omega-pool.c omegaextra.c
-omega_SOURCES = \
- omegadir/omega.c \
- omegadir/omegabis.c \
- omegadir/omegaextra.h \
- omegadir/omegamem.h \
- omegadir/omega-pool.h
-## We must create omegad.h before compiling the omega_SOURCES,
-## but certainly don't want to create omegad.h if Omega is not built.
-if OMEGA
-$(omega_SOURCES): omegad.h
-endif OMEGA
-$(omega_c_h): omega-web2c
-omega-web2c: omega.p $(web2c_texmf) omegadir/omega.defines
- $(web2c) omega
- echo timestamp >$@
- touch $(omega_c_h)
-omegaextra.c: lib/texmfmp.c omegad.h
- sed s/TEX-OR-MF-OR-MP/omega/ $(srcdir)/lib/texmfmp.c >$@
-omega.p omega.pool: omega-tangle
-omega-tangle: otangle omega.web omega.ch
- $(otangle) omega omega
- echo timestamp >$@
- touch omega.p omega.pool
-omega-pool.c: omega.pool $(makecpool) omegadir/omega-pool.h
- $(makecpool) omega.pool $(srcdir)/omegadir/omega-pool.h >$@ || rm -f $@
-## Generate omega.web
-omega_web_srcs = \
- tex.web \
- omegadir/omnode.ch \
- omegadir/om16bit.ch \
- omegadir/omstr.ch \
- omegadir/omfont.ch \
- omegadir/omchar.ch \
- omegadir/omfi.ch \
- omegadir/ompar.ch \
- omegadir/omocp.ch \
- omegadir/omfilter.ch \
- omegadir/omtrans.ch \
- omegadir/omdir.ch \
- omegadir/omcprt.ch \
- omegadir/omxml.ch
-omega.web: $(TIE) $(omega_web_srcs)
- $(tie) -m omega.web $(omega_web_srcs)
-## Generate omega.ch
-omega_ch_srcs = \
- omegadir/comnode.ch \
- omegadir/com16bit.ch \
- omegadir/comstr.ch \
- omegadir/comfont.ch \
- omegadir/comchar.ch \
- omegadir/comfi.ch \
- omegadir/compar.ch \
- omegadir/comocp.ch \
- omegadir/comfilter.ch \
- omegadir/comtrans.ch \
- omegadir/comdir.ch \
- omegadir/comxml.ch \
- omegadir/comsrcspec.ch
-omega.ch: $(TIE) omega.web $(omega_ch_srcs)
- $(tie) -c omega.ch omega.web $(omega_ch_srcs)
-EXTRA_DIST += $(omega_web_srcs) $(omega_ch_srcs) lib/texmfmp.c
-DISTCLEANFILES += $(nodist_omega_SOURCES) omega.web omega.ch omega-web2c \
- omega.p omega.pool omega-tangle
-
-EXTRA_DIST += \
- omegadir/ChangeLog \
- omegadir/README \
- omegadir/omega.defines \
- omegadir/omega.version
-
-## Eventually delete these files
-##
-EXTRA_DIST += omegadir/omega.mk
-
diff --git a/Build/source/texk/web2c/omegadir/com16bit.ch b/Build/source/texk/web2c/omegadir/com16bit.ch
deleted file mode 100644
index 72aa14e3149..00000000000
--- a/Build/source/texk/web2c/omegadir/com16bit.ch
+++ /dev/null
@@ -1,2818 +0,0 @@
-% com16bit.ch: Omega version of file tex.ch
-%
-% tex.ch for C compilation with web2c, derived from various other change files.
-% By Tim Morgan, UC Irvine ICS Department, and many others.
-%
-% (05/28/86) ETM Started with TeX 2.0
-% (06/03/87) ETM Brought up to TeX 2.2
-% (09/26/87) ETM Brought up to TeX 2.3
-% (10/01/87) ETM Brought up to TeX 2.5
-% (12/21/87) ETM Brought up to TeX 2.7
-% (01/14/88) ETM Brought up to TeX 2.9
-% (02/20/88) PAM Revised format and module numbers
-% (03/01/88) ETM Eliminated some unused variables and unnecesary tests
-% (05/09/88) ETM Added yet another casting bug fix
-% (06/21/88) ETM Brought up to TeX version 2.93
-% (12/11/88) ETM Brought up to TeX version 2.94
-% (01/12/89) PAM Brought up to TeX version 2.95
-% (02/14/89) ETM Brought up to TeX version 2.96
-% (03/10/89) ETM Brought up to TeX version 2.98
-% (07/06/89) ETM Brought up to TeX version 2.991
-% (11/30/89) KB To version 2.992 (8-bit).
-% (01/10/90) SR To version 2.993.
-% (03/27/90) KY To version 3.0.
-% (more recent changes in ChangeLog)
-%
-% The TeX program is copyright (C) 1982 by D. E. Knuth.
-% TeX is a trademark of the American Mathematical Society.
-%
-% The module numbers in this change file refer to TEX.WEB 3.141592 as
-% of March, 1995 (published as Donald E. Knuth, TeX: The Program,
-% Volume B of Computers & Typesetting).
-
-@x [0.0] l.83 - WEAVE: print changes only.
- \def\?##1]{\hbox to 1in{\hfil##1.\ }}
- }
-@y 83
- \def\?##1]{\hbox{Changes to \hbox to 1em{\hfil##1}.\ }}
- }
-\let\maybe=\iffalse
-@z
-
-@x
-@d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
-@y
-@d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
-@d banner_k==banner {Web2C announces itself}
-@z
-
-@x [1.4] l.233 - program header
-Actually the heading shown here is not quite normal: The |program| line
-does not mention any |output| file, because \ph\ would ask the \TeX\ user
-to specify a file name if |output| were specified here.
-@:PASCAL H}{\ph@>
-@^system dependencies@>
-@y
-@z
-
-@x [1.4] l.243 - labels in outer block not needed
-program OMEGA; {all file names are defined dynamically}
-label @<Labels in the outer block@>@/
-@y
-program OMEGA; {all file names are defined dynamically}
-@z
-
-@x [1.6] l.267 - labels in outer block not needed
-@ Three labels must be declared in the main program, so we give them
-symbolic names.
-
-@d start_of_TEX=1 {go here when \TeX's variables are initialized}
-@d end_of_TEX=9998 {go here to close files and terminate gracefully}
-@d final_end=9999 {this label marks the ending of the program}
-
-@<Labels in the out...@>=
-start_of_TEX@t\hskip-2pt@>, end_of_TEX@t\hskip-2pt@>,@,final_end;
- {key control points}
-@y
-@ For Web2c, labels are not declared in the main program, but
-we still have to declare the symbolic names.
-
-@d start_of_TEX=1 {go here when \TeX's variables are initialized}
-@d final_end=9999 {this label marks the ending of the program}
-@z
-
-% Here we change these WEB symbols, which are used much as #ifdef's
-% are in C, into something which will get translated into actual #ifdef's.
-@x [1.7] l.292 - debug..gubed, stat..tats
-@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
-@d gubed==@t@>@} {change this to `$\\{gubed}\equiv\null$' when debugging}
-@y
-@d debug==ifdef('TEXMF_DEBUG')
-@d gubed==endif('TEXMF_DEBUG')
-@z
-@x [1.7] l.297 - debug..gubed, stat..tats
-@d stat==@{ {change this to `$\\{stat}\equiv\null$' when gathering
- usage statistics}
-@d tats==@t@>@} {change this to `$\\{tats}\equiv\null$' when gathering
- usage statistics}
-@y
-@d stat==ifdef('STAT')
-@d tats==endif('STAT')
-@z
-
-@x [1.8] l.312 - Same, for `init...tini'.
-@d init== {change this to `$\\{init}\equiv\.{@@\{}$' in the production version}
-@d tini== {change this to `$\\{tini}\equiv\.{@@\}}$' in the production version}
-@y 312
-@d init==ifdef('INITEX')
-@d tini==endif('INITEX')
-@z
-
-@x [1.8] l.319 - init...tini is dynamic
-@!init @<Initialize table entries (done by \.{INITEX} only)@>@;@+tini
-@y 318
-@!init
-if ini_version then
- begin @<Initialize table entries (done by \.{INITEX} only)@>@;
- end;
-@+tini
-@z
-
-@x [1.11] l.375 - Compile-time constants: most removed for dynamic allocation.
-@<Constants...@>=
-@!mem_max=30000; {greatest index in \TeX's internal |mem| array;
- must be strictly less than |max_halfword|;
- must be equal to |mem_top| in \.{INITEX}, otherwise |>=mem_top|}
-@!mem_min=0; {smallest index in \TeX's internal |mem| array;
- must be |min_halfword| or more;
- must be equal to |mem_bot| in \.{INITEX}, otherwise |<=mem_bot|}
-@!buf_size=500; {maximum number of characters simultaneously present in
- current lines of open files and in control sequences between
- \.{\\csname} and \.{\\endcsname}; must not exceed |max_halfword|}
-@!error_line=72; {width of context lines on terminal error messages}
-@!half_error_line=42; {width of first lines of contexts in terminal
- error messages; should be between 30 and |error_line-15|}
-@!max_print_line=79; {width of longest text lines output; should be at least 60}
-@!stack_size=200; {maximum number of simultaneous input sources}
-@!max_in_open=6; {maximum number of input files and error insertions that
- can be going on simultaneously}
-@y
-@d file_name_size == maxint
-@d ssup_error_line = 255
-@d ssup_max_strings == 2097151
-{Larger values may be used, but then the arrays consume much more memory.}
-@d ssup_trie_opcode == 65535
-@d ssup_trie_size == @"3FFFFF
-
-@d ssup_hyph_size == 65535 {Changing this requires changing (un)dumping!}
-@d iinf_hyphen_size == 610 {Must be not less than |hyph_prime|!}
-
-@<Constants...@>=
-@!mem_bot=0; {smallest index in the |mem| array dumped by \.{INITEX};
- must not be less than |mem_min|}
- {Use |mem_bot=0| for compilers which cannot decrement pointers.}
-@z
-
-@x
-@!font_max=65535; {maximum internal font number; must be at most |font_biggest|}
-@!param_size=60; {maximum number of simultaneous macro parameters}
-@!nest_size=40; {maximum number of semantic levels simultaneously active}
-@!max_strings=3000; {maximum number of strings; must not exceed |max_halfword|}
-@!string_vacancies=8000; {the minimum number of characters that should be
- available for the user's control sequences and font names,
- after \TeX's own error messages are stored}
-@!pool_size=32000; {maximum number of characters in strings, including all
- error messages and help texts, and the names of all fonts and
- control sequences; must exceed |string_vacancies| by the total
- length of \TeX's own strings, which is currently about 23000}
-@!save_size=600; {space for saving values outside of current group; must be
- at most |max_halfword|}
-@!trie_size=8000; {space for hyphenation patterns; should be larger for
- \.{INITEX} than it is in production versions of \TeX}
-@!trie_op_size=500; {space for ``opcodes'' in the hyphenation patterns}
-@!dvi_buf_size=800; {size of the output buffer; must be a multiple of 8}
-@!file_name_size=40; {file names shouldn't be longer than this}
-@!pool_name='TeXformats:OMEGA.POOL ';
- {string of length |file_name_size|; tells where the string pool appears}
-@y
-@!font_max=65535; {maximum internal font number; must be at most |font_biggest|}
-@!hash_offset=514; {smallest index in hash array, i.e., |hash_base| }
- {Use |hash_offset=0| for compilers which cannot decrement pointers.}
-@!trie_op_size=15011; {space for ``opcodes'' in the hyphenation patterns;
- best if relatively prime to 313, 361, and 1009.}
-@!neg_trie_op_size=-15011; {for lower |trie_op_hash| array bound;
- must be equal to |-trie_op_size|.}
-@!min_trie_op=0; {first possible trie op code for any language}
-@!max_trie_op=ssup_trie_opcode; {largest possible trie opcode for any language}
-@!pool_name=TEXMF_POOL_NAME; {this is configurable, for the sake of ML-\TeX}
- {string of length |file_name_size|; tells where the string pool appears}
-@!engine_name=TEXMF_ENGINE_NAME; {the name of this engine}
-@#
-@!inf_main_memory = 2000000;
-@!sup_main_memory = 256000000;
-
-@!inf_trie_size = 80000;
-@!sup_trie_size = ssup_trie_size;
-
-@!inf_max_strings = 100000;
-@!sup_max_strings = ssup_max_strings;
-
-@!inf_strings_free = 100;
-@!sup_strings_free = sup_max_strings;
-
-@!inf_buf_size = 500;
-@!sup_buf_size = 30000000;
-
-@!inf_nest_size = 40;
-@!sup_nest_size = 4000;
-
-@!inf_max_in_open = 6;
-@!sup_max_in_open = 127;
-
-@!inf_param_size = 60;
-@!sup_param_size = 6000;
-
-@!inf_save_size = 600;
-@!sup_save_size = 80000;
-
-@!inf_stack_size = 200;
-@!sup_stack_size = 30000;
-
-@!inf_dvi_buf_size = 800;
-@!sup_dvi_buf_size = 65536;
-
-@!inf_pool_size = 32000;
-@!sup_pool_size = 40000000;
-@!inf_pool_free = 1000;
-@!sup_pool_free = sup_pool_size;
-@!inf_string_vacancies = 8000;
-@!sup_string_vacancies = sup_pool_size - 23000;
-
-@!sup_hyph_size = ssup_hyph_size;
-@!inf_hyph_size = iinf_hyphen_size; {Must be not less than |hyph_prime|!}
-@z
-
-@x [1.12] l.427 - Constants that are WEB numeric macros.
-@d mem_bot=0 {smallest index in the |mem| array dumped by \.{INITEX};
- must not be less than |mem_min|}
-@d mem_top==30000 {largest index in the |mem| array dumped by \.{INITEX};
- must be substantially larger than |mem_bot|
- and not greater than |mem_max|}
-@d font_base=0 {smallest internal font number; must not be less
- than |min_quarterword|}
-@d hash_size=65536 {maximum number of control sequences; it should be at most
- about |(mem_max-mem_min)/10|}
-@d hash_prime=55711 {a prime number equal to about 85\pct! of |hash_size|}
-@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
-@y
-@d font_base=0 {smallest internal font number; must not be less
- than |min_quarterword|}
-@d hash_size=65536 {maximum number of control sequences; it should be at most
- about |(mem_max-mem_min)/10|}
-@d hash_prime=55711 {a prime number equal to about 85\pct! of |hash_size|}
-@d hyph_prime=607 {another prime for hashing \.{\\hyphenation} exceptions;
- if you change this, you should also change |iinf_hyphen_size|.}
-@z
-
-@x [1.16] l.498 - Use C macros for `incr' and `decr'.
-@d incr(#) == #:=#+1 {increase a variable by unity}
-@d decr(#) == #:=#-1 {decrease a variable by unity}
-@y
-@z
-
-% The text_char type is used as an array index into xord. The
-% default type `char' produces signed integers, which are bad array
-% indices in C.
-@x [2.19] l.565 - data type text_char is 8-bit ASCII_code
-@d text_char == char {the data type of characters in text files}
-@y
-@d text_char == ASCII_code {the data type of characters in text files}
-@z
-
-% [3.26] name_of_file is no longer an array. And change the destination
-% type to text_char, which fixes:
-%
-% Date: 19 Sep 1994 10:38:24 +0200
-% From: thorinn@diku.dk (Lars Mathiesen)
-% When echoed to the screen and in the log, character codes
-% above '177 in file names are shown wrongly (typically as ^@).
-%
-@x [3.26] l.789 - name_of_file is no longer an array
-@!name_of_file:packed array[1..file_name_size] of char;@;@/
- {on some systems this may be a \&{record} variable}
-@y
-@!name_of_file:^char;
-@z
-
-@x [3.27] l.794 - Do file opening in C.
-@ The \ph\ compiler with which the present version of \TeX\ was prepared has
-extended the rules of \PASCAL\ in a very convenient way. To open file~|f|,
-we can write
-$$\vbox{\halign{#\hfil\qquad&#\hfil\cr
-|reset(f,@t\\{name}@>,'/O')|&for input;\cr
-|rewrite(f,@t\\{name}@>,'/O')|&for output.\cr}}$$
-The `\\{name}' parameter, which is of type `{\bf packed array
-$[\langle\\{any}\rangle]$ of \\{char}}', stands for the name of
-the external file that is being opened for input or output.
-Blank spaces that might appear in \\{name} are ignored.
-
-The `\.{/O}' parameter tells the operating system not to issue its own
-error messages if something goes wrong. If a file of the specified name
-cannot be found, or if such a file cannot be opened for some other reason
-(e.g., someone may already be trying to write the same file), we will have
-|@!erstat(f)<>0| after an unsuccessful |reset| or |rewrite|. This allows
-\TeX\ to undertake appropriate corrective action.
-@:PASCAL H}{\ph@>
-@^system dependencies@>
-
-\TeX's file-opening procedures return |false| if no file identified by
-|name_of_file| could be opened.
-
-@d reset_OK(#)==erstat(#)=0
-@d rewrite_OK(#)==erstat(#)=0
-
-@p function a_open_in(var f:alpha_file):boolean;
- {open a text file for input}
-begin reset(f,name_of_file,'/O'); a_open_in:=reset_OK(f);
-end;
-@#
-function a_open_out(var f:alpha_file):boolean;
- {open a text file for output}
-begin rewrite(f,name_of_file,'/O'); a_open_out:=rewrite_OK(f);
-end;
-@#
-function b_open_in(var f:byte_file):boolean;
- {open a binary file for input}
-begin reset(f,name_of_file,'/O'); b_open_in:=reset_OK(f);
-end;
-@#
-function b_open_out(var f:byte_file):boolean;
- {open a binary file for output}
-begin rewrite(f,name_of_file,'/O'); b_open_out:=rewrite_OK(f);
-end;
-@#
-function w_open_in(var f:word_file):boolean;
- {open a word file for input}
-begin reset(f,name_of_file,'/O'); w_open_in:=reset_OK(f);
-end;
-@#
-function w_open_out(var f:word_file):boolean;
- {open a word file for output}
-begin rewrite(f,name_of_file,'/O'); w_open_out:=rewrite_OK(f);
-end;
-@y
-@ All of the file opening functions are defined in C.
-@z
-
-@x [3.28] l.850 - Do file closing in C.
-@ Files can be closed with the \ph\ routine `|close(f)|', which
-@:PASCAL H}{\ph@>
-@^system dependencies@>
-should be used when all input or output with respect to |f| has been completed.
-This makes |f| available to be opened again, if desired; and if |f| was used for
-output, the |close| operation makes the corresponding external file appear
-on the user's area, ready to be read.
-
-These procedures should not generate error messages if a file is
-being closed before it has been successfully opened.
-
-@p procedure a_close(var f:alpha_file); {close a text file}
-begin close(f);
-end;
-@#
-procedure b_close(var f:byte_file); {close a binary file}
-begin close(f);
-end;
-@#
-procedure w_close(var f:word_file); {close a word file}
-begin close(f);
-end;
-@y
-@ And all the file closing routines as well.
-@z
-
-@x [3.30] l.888 - Array size of input buffer is determined at runtime.
-@!buffer:array[0..buf_size] of ASCII_code; {lines of characters being read}
-@y
-@!buffer:^ASCII_code; {lines of characters being read}
-@z
-
-@x [3.31] l.933 - Do `input_ln' in C.
-@p function input_ln(var f:alpha_file;@!bypass_eoln:boolean):boolean;
- {inputs the next line or returns |false|}
-var last_nonblank:0..buf_size; {|last| with trailing blanks removed}
-begin if bypass_eoln then if not eof(f) then get(f);
- {input the first character of the line into |f^|}
-last:=first; {cf.\ Matthew 19\thinspace:\thinspace30}
-if eof(f) then input_ln:=false
-else begin last_nonblank:=first;
- while not eoln(f) do
- begin if last>=max_buf_stack then
- begin max_buf_stack:=last+1;
- if max_buf_stack=buf_size then
- @<Report overflow of the input buffer, and abort@>;
- end;
- buffer[last]:=f^; get(f); incr(last);
- if buffer[last-1]<>" " then last_nonblank:=last;
- end;
- last:=last_nonblank; input_ln:=true;
- end;
-end;
-@y
-We define |input_ln| in C, for efficiency.
-@z
-
-% [3.32] `term_in' and `term_out' are standard input and output.
-% Declare the variables that used to be constants.
-@x [3.32] l.961 - `term_in' and `term_out' are standard input and output.
-@<Glob...@>=
-@!term_in:alpha_file; {the terminal as an input file}
-@!term_out:alpha_file; {the terminal as an output file}
-@y
-@d term_in==stdin {the terminal as an input file}
-@d term_out==stdout {the terminal as an output file}
-
-@<Glob...@>=
-@!init
-@!ini_version:boolean; {are we \.{INITEX}?}
-@!dump_option:boolean; {was the dump name option used?}
-@!dump_line:boolean; {was a \.{\%\AM format} line seen?}
-tini@/
-@#
-@!bound_default:integer; {temporary for setup}
-@!bound_name:^char; {temporary for setup}
-@#
-@!main_memory:integer; {total memory words allocated in initex}
-@!extra_mem_bot:integer; {|mem_min:=mem_bot-extra_mem_bot| except in \.{INITEX}}
-@!mem_min:integer; {smallest index in \TeX's internal |mem| array;
- must be |min_halfword| or more;
- must be equal to |mem_bot| in \.{INITEX}, otherwise |<=mem_bot|}
-@!mem_top:integer; {largest index in the |mem| array dumped by \.{INITEX};
- must be substantially larger than |mem_bot|,
- equal to |mem_max| in \.{INITEX}, else not greater than |mem_max|}
-@!extra_mem_top:integer; {|mem_max:=mem_top+extra_mem_top| except in \.{INITEX}}
-@!mem_max:integer; {greatest index in \TeX's internal |mem| array;
- must be strictly less than |max_halfword|;
- must be equal to |mem_top| in \.{INITEX}, otherwise |>=mem_top|}
-@!error_line:integer; {width of context lines on terminal error messages}
-@!half_error_line:integer; {width of first lines of contexts in terminal
- error messages; should be between 30 and |error_line-15|}
-@!max_print_line:integer;
- {width of longest text lines output; should be at least 60}
-@!max_strings:integer; {maximum number of strings; must not exceed |max_halfword|}
-@!strings_free:integer; {strings available after format loaded}
-@!string_vacancies:integer; {the minimum number of characters that should be
- available for the user's control sequences and font names,
- after \TeX's own error messages are stored}
-@!pool_size:integer; {maximum number of characters in strings, including all
- error messages and help texts, and the names of all fonts and
- control sequences; must exceed |string_vacancies| by the total
- length of \TeX's own strings, which is currently about 23000}
-@!pool_free:integer;{pool space free after format loaded}
-@!hyph_size:integer; {maximun number of hyphen exceptions}
-@!trie_size:integer; {space for hyphenation patterns; should be larger for
- \.{INITEX} than it is in production versions of \TeX. 50000 is
- needed for English, German, and Portuguese.}
-@!buf_size:integer; {maximum number of characters simultaneously present in
- current lines of open files and in control sequences between
- \.{\\csname} and \.{\\endcsname}; must not exceed |max_halfword|}
-@!stack_size:integer; {maximum number of simultaneous input sources}
-@!max_in_open:integer; {maximum number of input files and error insertions that
- can be going on simultaneously}
-@!param_size:integer; {maximum number of simultaneous macro parameters}
-@!nest_size:integer; {maximum number of semantic levels simultaneously active}
-@!save_size:integer; {space for saving values outside of current group; must be
- at most |max_halfword|}
-@!dvi_buf_size:integer; {size of the output buffer; must be a multiple of 8}
-@!quoted_filename:boolean; {current filename is quoted}
-@z
-
-@x [3.33] l.964 - We don't need to open terminal files.
-@ Here is how to open the terminal files
-in \ph. The `\.{/I}' switch suppresses the first |get|.
-@:PASCAL H}{\ph@>
-@^system dependencies@>
-
-@d t_open_in==reset(term_in,'TTY:','/O/I') {open the terminal for text input}
-@d t_open_out==rewrite(term_out,'TTY:','/O') {open the terminal for text output}
-@y
-@ Here is how to open the terminal files. |t_open_out| does nothing.
-|t_open_in|, on the other hand, does the work of ``rescanning,'' or getting
-any command line arguments the user has provided. It's defined in C.
-
-@d t_open_out == {output already open for text output}
-@z
-
-@x [3.34] l.982 - Flushing output to terminal files.
-these operations can be specified in \ph:
-@:PASCAL H}{\ph@>
-@^system dependencies@>
-
-@d update_terminal == break(term_out) {empty the terminal output buffer}
-@d clear_terminal == break_in(term_in,true) {clear the terminal input buffer}
-@y
-these operations can be specified with {\mc UNIX}. |update_terminal|
-does an |fflush|. |clear_terminal| is redefined
-to do nothing, since the user should control the terminal.
-@^system dependencies@>
-
-@d update_terminal == fflush (term_out)
-@d clear_terminal == do_nothing
-@z
-
-@x [3.35] l.1017 - Do `input_ln' in C => section not needed.
-@<Report overflow of the input buffer, and abort@>=
-if format_ident=0 then
- begin write_ln(term_out,'Buffer size exceeded!'); goto final_end;
-@.Buffer size exceeded@>
- end
-else begin cur_input.loc_field:=first; cur_input.limit_field:=last-1;
- overflow("buffer size",buf_size);
-@:TeX capacity exceeded buffer size}{\quad buffer size@>
- end
-@y
-Routine is implemented in C, module is not needed.
-@z
-
-@x [3.37] l.1055 - |init_terminal|, reading the command line.
-@ The following program does the required initialization
-without retrieving a possible command line.
-It should be clear how to modify this routine to deal with command lines,
-if the system permits them.
-@^system dependencies@>
-
-@p function init_terminal:boolean; {gets the terminal input started}
-label exit;
-begin t_open_in;
-@y
-@ The following program does the required initialization.
-Iff anything has been specified on the command line, then |t_open_in|
-will return with |last > first|.
-@^system dependencies@>
-
-@p function init_terminal:boolean; {gets the terminal input started}
-label exit;
-begin t_open_in;
-if last > first then
- begin loc := first;
- while (loc < last) and (buffer[loc]=' ') do incr(loc);
- if loc < last then
- begin init_terminal := true; goto exit;
- end;
- end;
-@z
-
-@x [3.37] l.1068 - |init_terminal|, output missing newline.
- write(term_out,'! End of file on the terminal... why?');
-@y
- write_ln(term_out,'! End of file on the terminal... why?');
-@z
-
-@x [4.38] l.1126 - Array size for string pool is determined at runtime.
-@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
-@!str_number = 0..max_strings; {for variables that point into |str_start|}
-@y
-@!pool_pointer = integer; {for variables that point into |str_pool|}
-@!str_number = 0..ssup_max_strings; {for variables that point into |str_start|}
-@z
-
-@x [4.39] l.1131 - Dynamically size pool arrays.
-@!str_pool:packed array[pool_pointer] of packed_ASCII_code; {the characters}
-@!str_start_ar : array[str_number] of pool_pointer; {the starting pointers}
-@y
-@!str_pool: ^packed_ASCII_code; {the characters}
-@!str_start_ar : ^pool_pointer; {the starting pointers}
-@z
-
-@x [4.47] l.1237 - string recycling
-@p @!init function get_strings_started:boolean; {initializes the string pool,
-@y
-@p @t\4@>@<Declare additional routines for string recycling@>@/
-
-@!init function get_strings_started:boolean; {initializes the string pool,
-@z
-
-@x
-@ @d bad_pool(#)==begin wake_up_terminal; write_ln(term_out,#);
- a_close(pool_file); get_strings_started:=false; return;
- end
-@<Read the other strings...@>=
-name_of_file:=pool_name; {we needn't set |name_length|}
-if a_open_in(pool_file) then
- begin c:=false;
- repeat @<Read one string, but return |false| if the
- string memory space is getting too tight for comfort@>;
- until c;
- a_close(pool_file); get_strings_started:=true;
- end
-else bad_pool('! I can''t read OMEGA.POOL.')
-@.I can't read OMEGA.POOL@>
-
-@ @<Read one string...@>=
-begin if eof(pool_file) then bad_pool('! OMEGA.POOL has no check sum.');
-@.OMEGA.POOL has no check sum@>
-read(pool_file,m,n); {read two digits of string length}
-if m='*' then @<Check the pool check sum@>
-else begin if (m<"0")or(m>"9")or@|
- (n<"0")or(n>"9") then
- bad_pool('! OMEGA.POOL line doesn''t begin with two digits.');
-@.OMEGA.POOL line doesn't...@>
- l:=m*10+n-"0"*11; {compute the length}
- if pool_ptr+l+string_vacancies>pool_size then
- bad_pool('! You have to increase POOLSIZE.');
-@.You have to increase POOLSIZE@>
- for k:=1 to l do
- begin if eoln(pool_file) then m:=' '@+else read(pool_file,m);
- append_char(m);
- end;
- read_ln(pool_file); g:=make_string;
- end;
-end
-
-@ The \.{WEB} operation \.{@@\$} denotes the value that should be at the
-end of this \.{OMEGA.POOL} file; any other value means that the wrong pool
-file has been loaded.
-@^check sum@>
-
-@<Check the pool check sum@>=
-begin a:=0; k:=1;
-loop@+ begin if (n<"0")or(n>"9") then
- bad_pool('! OMEGA.POOL check sum doesn''t have nine digits.');
-@.OMEGA.POOL check sum...@>
- a:=10*a+n-"0";
- if k=9 then goto done;
- incr(k); read(pool_file,n);
- end;
-done: if a<>@$ then bad_pool('! OMEGA.POOL doesn''t match; OTANGLE me again.');
-@.OMEGA.POOL doesn't match@>
-c:=true;
-end
-@y
-@ @<Read the other strings...@>=
- g := loadpoolstrings((pool_size-string_vacancies));
- if g=0 then begin
- wake_up_terminal; write_ln(term_out,'! You have to increase POOLSIZE.');
- get_strings_started:=false;
- return;
- end;
- get_strings_started:=true;
-
-@ Empty module
-
-@ Empty module
-@z
-
-@x [5.54] l.1422 - error_line
-@!trick_buf:array[0..error_line] of ASCII_code; {circular buffer for
-@y
-@!trick_buf:array[0..ssup_error_line] of ASCII_code; {circular buffer for
-@z
-
-@x [5.61] l.1556 - Print rest of banner, eliminate misleading `(no format preloaded)'.
-wterm(banner);
-if format_ident=0 then wterm_ln(' (no format preloaded)')
-else begin slow_print(format_ident); print_ln;
- end;
-@y
-wterm(banner);
-wterm(version_string);
-if format_ident>0 then slow_print(format_ident);
-print_ln;
-@z
-
-@x [6.73] l.1732 - Add unspecified_mode.
-@d error_stop_mode=3 {stops at every opportunity to interact}
-@y
-@d error_stop_mode=3 {stops at every opportunity to interact}
-@d unspecified_mode=4 {extra value for command-line switch}
-@z
-
-@x [6.73] l.1738 - Add interaction_option.
-@!interaction:batch_mode..error_stop_mode; {current level of interaction}
-@y
-@!interaction:batch_mode..error_stop_mode; {current level of interaction}
-@!interaction_option:batch_mode..unspecified_mode; {set from command line}
-@z
-
-@x [6.74] l.1740 - Allow override by command line switch.
-@ @<Set init...@>=interaction:=error_stop_mode;
-@y
-@ @<Set init...@>=if interaction_option=unspecified_mode then
- interaction:=error_stop_mode
-else
- interaction:=interaction_option;
-@z
-
-% [6.81] Eliminate nonlocal goto, since C doesn't have them.
-% Plus, it's nicer just to do an exit with the appropriate status code
-% under Unix. We call it `uexit' because there's a WEB symbol called
-% `exit' already. We use a C macro to change `uexit' back to `exit'.
-@x [6.81] l.1852 - Eliminate nonlocal goto, since C doesn't have them.
-@<Error hand...@>=
-procedure jump_out;
-begin goto end_of_TEX;
-end;
-@y
-@d do_final_end==begin
- update_terminal;
- ready_already:=0;
- if (history <> spotless) and (history <> warning_issued) then
- uexit(1)
- else
- uexit(0);
- end
-
-@<Error hand...@>=
-procedure jump_out;
-begin
-close_files_and_terminate;
-do_final_end;
-end;
-@z
-
-@x [6.84] l.1888 - Implement the switch-to-editor option.
-line ready to be edited. But such an extension requires some system
-wizardry, so the present implementation simply types out the name of the
-file that should be
-edited and the relevant line number.
-@^system dependencies@>
-
-There is a secret `\.D' option available when the debugging routines haven't
-been commented~out.
-@^debugging@>
-@y
-line ready to be edited.
-We do this by calling the external procedure |call_edit| with a pointer to
-the filename, its length, and the line number.
-However, here we just set up the variables that will be used as arguments,
-since we don't want to do the switch-to-editor until after TeX has closed
-its files.
-@^system dependencies@>
-
-There is a secret `\.D' option available when the debugging routines haven't
-been commented~out.
-@^debugging@>
-@d edit_file==input_stack[base_ptr]
-@z
-
-@x [6.84] l.1903 - Implement the switch-to-editor option.
-"E": if base_ptr>0 then
- begin print_nl("You want to edit file ");
-@.You want to edit file x@>
- slow_print(input_stack[base_ptr].name_field);
- print(" at line "); print_int(line);
- interaction:=scroll_mode; jump_out;
-@y
-"E": if base_ptr>0 then
- begin edit_name_start:=str_start(edit_file.name_field);
- edit_name_length:=str_start(edit_file.name_field+1) -
- str_start(edit_file.name_field);
- edit_line:=line;
- jump_out;
-@z
-
-% [7.104] `remainder' is a library routine on some systems, so change
-% its name to avoid conflicts.
-@x [7.104] l.2227 - avoid name conflicts with lib routine remainder()
-|remainder|, holds the remainder after a division.
-
-@<Glob...@>=
-@y
-|remainder|, holds the remainder after a division.
-
-@d remainder==tex_remainder
-
-@<Glob...@>=
-@z
-
-@x [7.109] l.2352 - Define glue_ratio in C.
-@!glue_ratio=real; {one-word representation of a glue expansion factor}
-@y
-@z
-
-@x [8.112] l.2435 - Efficiency.
-macros are simplified in the obvious way when |min_quarterword=0|.
-@^inner loop@>@^system dependencies@>
-
-@d qi(#)==#+min_quarterword
- {to put an |eight_bits| item into a quarterword}
-@d qo(#)==#-min_quarterword
- {to take an |eight_bits| item out of a quarterword}
-@d hi(#)==#+min_halfword
- {to put a sixteen-bit item into a halfword}
-@d ho(#)==#-min_halfword
- {to take a sixteen-bit item from a halfword}
-@y
-macros are simplified in the obvious way when |min_quarterword=0|.
-So they have been simplified here in the obvious way.
-@^inner loop@>@^system dependencies@>
-
-@d qi(#)==# {to put an |eight_bits| item into a quarterword}
-@d qo(#)==# {to take an |eight_bits| item from a quarterword}
-@d hi(#)==# {to put a sixteen-bit item into a halfword}
-@d ho(#)==# {to take a sixteen-bit item from a halfword}
-@z
-
-% [8.113] We've put the memory structure into the include file
-% `texmf.h', since it's too hard to translate automatically.
-@x [8.113] l.2453 - data structures for main memory
-@!quarterword = min_quarterword..max_quarterword; {1/4 of a word}
-@!halfword=min_halfword..max_halfword; {1/2 of a word}
-@!two_choices = 1..2; {used when there are two variants in a record}
-@!four_choices = 1..4; {used when there are four variants in a record}
-@!two_halves = packed record@;@/
- @!rh:halfword;
- case two_choices of
- 1: (@!lh:halfword);
- 2: (@!b0:quarterword; @!b1:quarterword);
- end;
-@!four_quarters = packed record@;@/
- @!b0:quarterword;
- @!b1:quarterword;
- @!b2:quarterword;
- @!b3:quarterword;
- end;
-@!memory_word = record@;@/
- case four_choices of
- 1: (@!int:integer);
- 2: (@!gr:glue_ratio);
- 3: (@!hh:two_halves);
- 4: (@!qqqq:four_quarters);
- end;
-@y
-@!quarterword = min_quarterword..max_quarterword;
-@!halfword = min_halfword..max_halfword;
-@!two_choices = 1..2; {used when there are two variants in a record}
-@!four_choices = 1..4; {used when there are four variants in a record}
-@=#include "texmfmem.h";@>
-@=#include "omegamem.h";@>
-@z
-
-% [9.116] Change `mem' to `zmem', so we can define mem to be a register
-% pointer to the memory array for speed.
-@x [9.116] l.2545 - definition of main memory array
-@!mem : array[mem_min..mem_max] of memory_word; {the big dynamic storage area}
-@y
-@!yzmem : ^memory_word; {the big dynamic storage area}
-@!zmem : ^memory_word; {the big dynamic storage area}
-@z
-
-% [9.127] Fix casting problem in C.
-% There are several of these. They come from the rules C uses for
-% comparing signed and unsigned quantities. Just doing the comparison
-% can result in incorrect evaluation wrt the way Pascal would do it.
-@x [9.127] l.2739 - Fix casting problem in C.
-if r>p+1 then @<Allocate from the top of node |p| and |goto found|@>;
-@y 2738
-if r>intcast(p+1) then @<Allocate from the top of node |p| and |goto found|@>;
-@z
-
-% [11.165] Fix the word `free' so that it doesn't conflict with the
-% standard C library routine of the same name.
-@x [11.165] l.3364 - avoid conflict with lib function free()
-are debugging.)
-@y
-are debugging.)
-
-@d free==free_arr
-@z
-
-@x [11.165] l.3367 - dummy |free| and |was_free| arrays
-@!debug @!free: packed array [mem_min..mem_max] of boolean; {free cells}
-@t\hskip10pt@>@!was_free: packed array [mem_min..mem_max] of boolean;
-@y
- {The debug memory arrays have not been mallocated yet.}
-@!debug @!free: packed array [0..9] of boolean; {free cells}
-@t\hskip10pt@>@!was_free: packed array [0..9] of boolean;
-@z
-
-@x [12.174] l.3526 - Eliminate unsigned comparisons to zero.
- begin if (font(p)<font_base)or(font(p)>font_max) then
- print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
-@y
- begin @<Print the font identifier for |font(p)|@>;
-@z
-
-@x [12.176] l.3563 - Eliminate unsigned comparisons to zero.
-begin if p>mem_end then print_esc("CLOBBERED.")
-else begin if (font(p)<font_base)or(font(p)>font_max) then print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
-@y
-begin if p>mem_end then print_esc("CLOBBERED.")
-else begin @<Print the font identifier for |font(p)|@>;
-@z
-
-@x [12.186] l.3747 - Don't worry about strange floating point values.
- if abs(mem[p+glue_offset].int)<@'4000000 then print("?.?")
- else if abs(g)>float_constant(20000) then
-@y 3747
- { The Unix |pc| folks removed this restriction with a remark that
- invalid bit patterns were vanishingly improbable, so we follow
- their example without really understanding it.
- |if abs(mem[p+glue_offset].int)<@'4000000 then print('?.?')|
- |else| }
- if fabs(g)>float_constant(20000) then
-@z
-
-
-@x [16.213] l.4321 - texarray
-@!nest:array[0..nest_size] of list_state_record;
-@y
-@!nest:^list_state_record;
-@z
-
-@x [16.215] l.4344 - remove mem[] reference from initialize.
-@<Start a new current page@>;
-@y
-@/{The following piece of code is a copy of module 991:}
-page_contents:=empty; page_tail:=page_head; {|link(page_head):=null;|}@/
-last_glue:=max_halfword; last_penalty:=0; last_kern:=0;
-page_depth:=0; page_max_depth:=0;
-@z
-
-@x [17.241] l.5219 - Do `fix_date_and_time' in C.
-@ The following procedure, which is called just before \TeX\ initializes its
-input and output, establishes the initial values of the date and time.
-@^system dependencies@>
-Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
-
-@p procedure fix_date_and_time;
-begin time:=12*60; {minutes since midnight}
-day:=4; {fourth day of the month}
-month:=7; {seventh month of the year}
-year:=1776; {Anno Domini}
-end;
-@y
-@ The following procedure, which is called just before \TeX\ initializes its
-input and output, establishes the initial values of the date and time.
-It calls a macro-defined |date_and_time| routine. |date_and_time|
-in turn is a C macro, which calls |get_date_and_time|, passing
-it the addresses of the day, month, etc., so they can be set by the
-routine. |get_date_and_time| also sets up interrupt catching if that
-is conditionally compiled in the C code.
-@^system dependencies@>
-
-@d fix_date_and_time==o_date_and_time(int_base+time_code,
- int_base+day_code,
- int_base+month_code,
- int_base+year_code)
-@z
-
-@x [18.262] l.5584 - Remove more unsigned comparisons to zero.
-else if (newtext(p)<0)or(newtext(p)>=str_ptr) then print_esc("NONEXISTENT.")
-@y
-else if (newtext(p)>=str_ptr) then print_esc("NONEXISTENT.")
-@z
-
-@x [19.271] l.5872 - texarray
-@!save_stack : array[0..save_size] of memory_word;
-@y
-@!save_stack : ^memory_word;
-@z
-
-@x [22.301] l.6432 - texarray
-@!input_stack : array[0..stack_size] of in_state_record;
-@y
-@!input_stack : ^in_state_record;
-@z
-
-@x [22.304] l.6536 - texarray
-@!input_file : array[1..max_in_open] of alpha_file;
-@!input_file_mode : array[1..max_in_open] of halfword;
-@!input_file_translation : array[1..max_in_open] of halfword;
-@!line : integer; {current line number in the current source file}
-@!line_stack : array[1..max_in_open] of integer;
-@!line_numbers : array[1..max_in_open] of integer;
-@!file_names : array[1..max_in_open] of integer;
-@y
-@!input_file : ^alpha_file;
-@!input_file_mode : ^halfword;
-@!input_file_translation : ^halfword;
-@!line : integer; {current line number in the current source file}
-@!line_stack : ^integer;
-@!line_numbers : ^integer;
-@!file_names : ^integer;
-@z
-
-@x [22.308] l.6701 - texarray
-@!param_stack:array [0..param_size] of pointer;
- {token list pointers for parameters}
-@y
-@!param_stack: ^pointer;
- {token list pointers for parameters}
-@z
-
-@x [23.328] l.7043 - keep top of source_filename_stack initialized
-incr(in_open); push_input; index:=in_open;
-@y
-incr(in_open); push_input; index:=in_open;
-source_filename_stack[index]:=0;full_source_filename_stack[index]:=0;
-@z
-
-@x [23.331] l.7071 - init source file name stacks
-begin input_ptr:=0; max_in_stack:=0;
-@y
-begin input_ptr:=0; max_in_stack:=0;
-source_filename_stack[0]:=0;full_source_filename_stack[0]:=0;
-@z
-
-@x [28.501] l.9747 - \eof18
-if_eof_code: begin scan_four_bit_int; b:=(read_open[cur_val]=closed);
- end;
-@y
-if_eof_code: begin scan_four_bit_int_or_18;
- if cur_val=18 then b:=not shellenabledp
- else b:=(read_open[cur_val]=closed);
- end;
-@z
-
-@x [29.513] l.9951 - Area and extension rules for filenames.
-@ The file names we shall deal with for illustrative purposes have the
-following structure: If the name contains `\.>' or `\.:', the file area
-consists of all characters up to and including the final such character;
-otherwise the file area is null. If the remaining file name contains
-`\..', the file extension consists of all such characters from the first
-remaining `\..' to the end, otherwise the file extension is null.
-@y
-@ The file names we shall deal with have the
-following structure: If the name contains `\./' or `\.:'
-(for Amiga only), the file area
-consists of all characters up to and including the final such character;
-otherwise the file area is null. If the remaining file name contains
-`\..', the file extension consists of all such characters from the last
-`\..' to the end, otherwise the file extension is null.
-@z
-
-@x [29.513] l.9963 - Area and extension rules for filenames.
-@!area_delimiter:pool_pointer; {the most recent `\.>' or `\.:', if any}
-@!ext_delimiter:pool_pointer; {the relevant `\..', if any}
-@y
-@!area_delimiter:pool_pointer; {the most recent `\./', if any}
-@!ext_delimiter:pool_pointer; {the most recent `\..', if any}
-@z
-
-@x [29.514] l.9973 - TeX area directories.
-@d TEX_area=="TeXinputs:"
-@.TeXinputs@>
-@d TEX_font_area=="TeXfonts:"
-@.TeXfonts@>
-@y
-In C, the default paths are specified separately.
-@z
-
-@x [29.515] l.9995 - filenames: quoted
-begin area_delimiter:=0; ext_delimiter:=0;
-@y
-begin area_delimiter:=0; ext_delimiter:=0; quoted_filename:=false;
-@z
-
-@x [29.516] l.9992 - filenames: more_name
-begin if c=" " then more_name:=false
-@y
-begin if (c=" ") and stop_at_space and (not quoted_filename) then
- more_name:=false
-else if c="""" then begin
- quoted_filename:=not quoted_filename;
- more_name:=true;
- end
-@z
-
-@x [29.516] l.9994 - filenames: more_name
- if (c=">")or(c=":") then
-@y
- if IS_DIR_SEP(c) then
-@z
-
-@x [29.516] l.9997 - filenames: more_name
- else if (c=".")and(ext_delimiter=0) then ext_delimiter:=cur_length;
-@y
- else if c="." then ext_delimiter:=cur_length;
-@z
-
-@x [29.517] l.10002 - end_name: string recycling
-@ The third.
-@^system dependencies@>
-
-@p procedure end_name;
-@y
-@ The third.
-@^system dependencies@>
-If a string is already in the string pool, the function
-|slow_make_string| does not create a new string but returns this string
-number, thus saving string space. Because of this new property of the
-returned string number it is not possible to apply |flush_string| to
-these strings.
-
-@p procedure end_name;
-var temp_str: str_number; {result of file name cache lookups}
-@!j,@!s,@!t: pool_pointer; {running indices}
-@!must_quote:boolean; {whether we need to quote a string}
-@z
-
-@x [29.517] l.10022 - end_name: spaces in filenames
-@:TeX capacity exceeded number of strings}{\quad number of strings@>
-@y
-@:TeX capacity exceeded number of strings}{\quad number of strings@>
-str_room(6); {Room for quotes, if needed.}
-{add quotes if needed}
-if area_delimiter<>0 then begin
- {maybe quote |cur_area|}
- must_quote:=false;
- s:=str_start(str_ptr);
- t:=str_start(str_ptr)+area_delimiter;
- j:=s;
- while (not must_quote) and (j<t) do begin
- must_quote:=str_pool[j]=" "; incr(j);
- end;
- if must_quote then begin
- for j:=pool_ptr-1 downto t do str_pool[j+2]:=str_pool[j];
- str_pool[t+1]:="""";
- for j:=t-1 downto s do str_pool[j+1]:=str_pool[j];
- str_pool[s]:="""";
- if ext_delimiter<>0 then ext_delimiter:=ext_delimiter+2;
- area_delimiter:=area_delimiter+2;
- pool_ptr:=pool_ptr+2;
- end;
- end;
-{maybe quote |cur_name|}
-s:=str_start(str_ptr)+area_delimiter;
-if ext_delimiter=0 then t:=pool_ptr else t:=str_start(str_ptr)+ext_delimiter-1;
-must_quote:=false;
-j:=s;
-while (not must_quote) and (j<t) do begin
- must_quote:=str_pool[j]=" "; incr(j);
- end;
-if must_quote then begin
- for j:=pool_ptr-1 downto t do str_pool[j+2]:=str_pool[j];
- str_pool[t+1]:="""";
- for j:=t-1 downto s do str_pool[j+1]:=str_pool[j];
- str_pool[s]:="""";
- if ext_delimiter<>0 then ext_delimiter:=ext_delimiter+2;
- pool_ptr:=pool_ptr+2;
- end;
-if ext_delimiter<>0 then begin
- {maybe quote |cur_ext|}
- s:=str_start(str_ptr)+ext_delimiter-1;
- t:=pool_ptr;
- must_quote:=false;
- j:=s;
- while (not must_quote) and (j<t) do begin
- must_quote:=str_pool[j]=" "; incr(j);
- end;
- if must_quote then begin
- str_pool[t+1]:="""";
- for j:=t-1 downto s do str_pool[j+1]:=str_pool[j];
- str_pool[s]:="""";
- pool_ptr:=pool_ptr+2;
- end;
- end;
-@z
-
-@x [29.517] l.10011 - end_name: string recycling
- str_start(str_ptr+1):=str_start(str_ptr)+area_delimiter; incr(str_ptr);
- end;
-if ext_delimiter=0 then
- begin cur_ext:=""; cur_name:=make_string;
-@y
- str_start(str_ptr+1):=str_start(str_ptr)+area_delimiter; incr(str_ptr);
- temp_str:=search_string(cur_area);
- if temp_str>0 then
- begin cur_area:=temp_str;
- decr(str_ptr); {no |flush_string|, |pool_ptr| will be wrong!}
- for j:=str_start(str_ptr+1) to pool_ptr-1 do
- begin str_pool[j-area_delimiter]:=str_pool[j];
- end;
- pool_ptr:=pool_ptr-area_delimiter; {update |pool_ptr|}
- end;
- end;
-if ext_delimiter=0 then
- begin cur_ext:=""; cur_name:=slow_make_string;
-@z
-
-@x [29.517] l.10016 - end_name: string recycling
-else begin cur_name:=str_ptr;
- str_start(str_ptr+1):=str_start(str_ptr)+ext_delimiter-area_delimiter-1;
- incr(str_ptr); cur_ext:=make_string;
-@y
-else begin cur_name:=str_ptr;
- str_start(str_ptr+1):=str_start(str_ptr)+ext_delimiter-area_delimiter-1;
- incr(str_ptr); cur_ext:=make_string;
- decr(str_ptr); {undo extension string to look at name part}
- temp_str:=search_string(cur_name);
- if temp_str>0 then
- begin cur_name:=temp_str;
- decr(str_ptr); {no |flush_string|, |pool_ptr| will be wrong!}
- for j:=str_start(str_ptr+1) to pool_ptr-1 do
- begin str_pool[j-ext_delimiter+area_delimiter+1]:=str_pool[j];
- end;
- pool_ptr:=pool_ptr-ext_delimiter+area_delimiter+1; {update |pool_ptr|}
- end;
- cur_ext:=slow_make_string; {remake extension string}
-@z
-
-@x [29.518] l.10042 - print_file_name: quote if spaces in names.
-begin slow_print(a); slow_print(n); slow_print(e);
-@y
-var must_quote: boolean; {whether to quote the filename}
-@!j:pool_pointer; {index into |str_pool|}
-begin
-must_quote:=false;
-if a<>0 then begin
- j:=str_start(a);
- while (not must_quote) and (j<str_start(a+1)) do begin
- must_quote:=str_pool[j]=" "; incr(j);
- end;
-end;
-if n<>0 then begin
- j:=str_start(n);
- while (not must_quote) and (j<str_start(n+1)) do begin
- must_quote:=str_pool[j]=" "; incr(j);
- end;
-end;
-if e<>0 then begin
- j:=str_start(e);
- while (not must_quote) and (j<str_start(e+1)) do begin
- must_quote:=str_pool[j]=" "; incr(j);
- end;
-end;
-{FIXME: Alternative is to assume that any filename that has to be quoted has
- at least one quoted component...if we pick this, a number of insertions
- of |print_file_name| should go away.
-|must_quote|:=((|a|<>0)and(|str_pool|[|str_start|(|a|)]=""""))or
- ((|n|<>0)and(|str_pool|[|str_start|(|n|)]=""""))or
- ((|e|<>0)and(|str_pool|[|str_start|(|e|)]=""""));}
-if must_quote then print_char("""");
-if a<>0 then
- for j:=str_start(a) to str_start(a+1)-1 do
- if so(str_pool[j])<>"""" then
- print_char(so(str_pool[j]));
-if n<>0 then
- for j:=str_start(n) to str_start(n+1)-1 do
- if so(str_pool[j])<>"""" then
- print_char(so(str_pool[j]));
-if e<>0 then
- for j:=str_start(e) to str_start(e+1)-1 do
- if so(str_pool[j])<>"""" then
- print_char(so(str_pool[j]));
-if must_quote then print_char("""");
-@z
-
-@x [29.519] l.10051 - have append_to_name skip quotes.
-@d append_to_name(#)==begin c:=#; incr(k);
- if k<=file_name_size then name_of_file[k]:=xchr[c];
- end
-@y
-@d append_to_name(#)==begin c:=#; if not (c="""") then begin incr(k);
- if k<=file_name_size then name_of_file[k]:=xchr[c];
- end end
-@z
-
-% [29.519] In pack_file_name, leave room for the extra null we append at
-% the end of a filename.
-@x [29.519] l.10047 - pack_file_name, leave room for the extra null
-for j:=str_start(a) to str_start(a+1)-1 do append_to_name(so(str_pool[j]));
-@y
-if name_of_file then libc_free (name_of_file);
-name_of_file:= xmalloc_array(char, 1 + length(a) + length(n) + length(e));
-for j:=str_start(a) to str_start(a+1)-1 do append_to_name(so(str_pool[j]));
-@z
-
-@x [29.519] l.10051 - pack_file_name, append the extra null
-for k:=name_length+1 to file_name_size do name_of_file[k]:=' ';
-@y
-name_of_file[name_length+1]:=0;
-@z
-
-@x [29.520] l.10060 - filenames: default format.
-@d format_default_length=20 {length of the |TEX_format_default| string}
-@d format_area_length=11 {length of its area part}
-@d format_ext_length=4 {length of its `\.{.fmt}' part}
-@d format_extension=".fmt" {the extension, as a \.{WEB} constant}
-@y
-Under {\mc UNIX} we don't give the area part, instead depending
-on the path searching that will happen during file opening. Also, the
-length will be set in the main program.
-
-@d format_area_length=0 {length of its area part}
-@d format_ext_length=4 {length of its `\.{.fmt}' part}
-@d format_extension=".fmt" {the extension, as a \.{WEB} constant}
-@z
-
-@x [29.521] l.10066 - filenames: default format, where `plain.fmt' is.
-@!TEX_format_default:packed array[1..format_default_length] of char;
-
-@ @<Set init...@>=
-TEX_format_default:='TeXformats:plain.fmt';
-@y
-@!format_default_length: integer;
-@!TEX_format_default: ^char;
-
-@ We set the name of the default format file and the length of that name
-in C, instead of Pascal, since we want them to depend on the name of the
-program.
-@z
-
-@x [29.523] l.10095 - Change to pack_buffered_name as with pack_file_name.
-for j:=1 to n do append_to_name(TEX_format_default[j]);
-@y
-if name_of_file then libc_free (name_of_file);
-name_of_file := xmalloc_array (char, 1 + n + (b - a + 1) + format_ext_length);
-for j:=1 to n do append_to_name(TEX_format_default[j]);
-@z
-
-@x [29.523] l.10100 - Change to pack_buffered_name as with pack_file_name.
-for k:=name_length+1 to file_name_size do name_of_file[k]:=' ';
-@y
-name_of_file[name_length+1]:=0;
-@z
-
-@x [29.524] l.10118 - Format file opening: only try once, with path searching.
- pack_buffered_name(0,loc,j-1); {try first without the system file area}
- if w_open_in(fmt_file) then goto found;
- pack_buffered_name(format_area_length,loc,j-1);
- {now try the system format file area}
- if w_open_in(fmt_file) then goto found;
-@y
- pack_buffered_name(0,loc,j-1); {Kpathsea does everything}
- if w_open_in(fmt_file) then goto found;
-@z
-
-@x [29.524] l.10124 - replace `PLAIN' in error messages with `default'.
- wterm_ln('Sorry, I can''t find that format;',' will try PLAIN.');
-@y
- wterm ('Sorry, I can''t find the format `');
- fputs (name_of_file + 1, stdout);
- wterm ('''; will try `');
- fputs (TEX_format_default + 1, stdout);
- wterm_ln ('''.');
-@z
-
-@x [29.524] l.10132 - replace `PLAIN' in error messages with `default'.
- wterm_ln('I can''t find the PLAIN format file!');
-@.I can't find PLAIN...@>
-@y
- wterm ('I can''t find the format file `');
- fputs (TEX_format_default + 1, stdout);
- wterm_ln ('''!');
-@.I can't find the format...@>
-@z
-
-@x [29.525] l.10163 - make_name_string
-@p function make_name_string:str_number;
-var k:1..file_name_size; {index into |name_of_file|}
-begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
- (cur_length>0) then
- make_name_string:="?"
-else begin for k:=1 to name_length do append_char(name_of_file[k]);
- make_name_string:=make_string;
- end;
-@y
-@p function make_name_string:str_number;
-var k:1..file_name_size; {index into |name_of_file|}
-save_area_delimiter, save_ext_delimiter: pool_pointer;
-save_name_in_progress, save_stop_at_space: boolean;
-begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
- (cur_length>0) then
- make_name_string:="?"
-else begin for k:=1 to name_length do append_char(name_of_file[k]);
- make_name_string:=make_string;
- {At this point we also set |cur_name|, |cur_ext|, and |cur_area| to
- match the contents of |name_of_file|.}
- save_area_delimiter:=area_delimiter; save_ext_delimiter:=ext_delimiter;
- save_name_in_progress:=name_in_progress; save_stop_at_space:=stop_at_space;
- name_in_progress:=true;
- begin_name;
- stop_at_space:=false;
- k:=1;
- while (k<=name_length)and(more_name(name_of_file[k])) do
- incr(k);
- stop_at_space:=save_stop_at_space;
- end_name;
- name_in_progress:=save_name_in_progress;
- area_delimiter:=save_area_delimiter; ext_delimiter:=save_ext_delimiter;
- end;
-@z
-
-@x [29.526] l.10194 - stop scanning file name if we're at end-of-line.
- if not more_name(cur_chr) then goto done;
-@y
- {If |cur_chr| is a space and we're not scanning a token list, check
- whether we're at the end of the buffer. Otherwise we end up adding
- spurious spaces to file names in some cases.}
- if (cur_chr=" ") and (state<>token_list) and (loc>limit) then goto done;
- if not more_name(cur_chr) then goto done;
-@z
-
-@x [29.530] l.10245 - prompt_file_name: prevent empty filenames.
-var k:0..buf_size; {index into |buffer|}
-@y
-var k:0..buf_size; {index into |buffer|}
-@!saved_cur_name:str_number; {to catch empty terminal input}
-@!saved_cur_ext:str_number; {to catch empty terminal input}
-@!saved_cur_area:str_number; {to catch empty terminal input}
-@z
-
-@x [29.530] l.10252 - prompt_file_name: No default extension is TeX input file.
-if e=".tex" then show_context;
-@y
-if (e=".tex") or (e="") then show_context;
-print_ln; print("(Type <return> to retry, or <eof> to exit");
-if (e<>"") then
- begin
- print(" Default file extension is `"); print(e); print("'");
- end;
-print(")"); print_ln;
-@z
-
-@x [29.530] l.10258 - prompt_file_name: prevent empty filenames.
-clear_terminal; prompt_input(": "); @<Scan file name in the buffer@>;
-if cur_ext="" then cur_ext:=e;
-@y
-saved_cur_name:=cur_name;
-saved_cur_ext:=cur_ext;
-saved_cur_area:=cur_area;
-clear_terminal; prompt_input(": "); @<Scan file name in the buffer@>;
-if (length(cur_name)=0) and (cur_ext="") and (cur_area="") then
- begin
- cur_name:=saved_cur_name;
- cur_ext:=saved_cur_ext;
- cur_area:=saved_cur_area;
- end
-else
- if cur_ext="" then cur_ext:=e;
-@z
-
-@x [29.532] l.10263 - avoid conflict, `logname' in <unistd.h> on some systems.
-@ Here's an example of how these conventions are used. Whenever it is time to
-ship out a box of stuff, we shall use the macro |ensure_dvi_open|.
-
-@y
-@ Here's an example of how these conventions are used. Whenever it is time to
-ship out a box of stuff, we shall use the macro |ensure_dvi_open|.
-
-@d log_name == texmf_log_name
-@z
-
-@x [29.534] l.10285 - Adjust for C string conventions.
-@!months:packed array [1..36] of char; {abbreviations of month names}
-@y
-@!months:^char;
-j:integer;
-@z
-
-@x [29.534] l. - Send the job_name to the file recorder.
-begin old_setting:=selector;
-if job_name=0 then job_name:="texput";
-@y
-begin old_setting:=selector;
-if job_name=0 then job_name:=get_job_name("texput");
-pack_job_name(".ofl");
-recorder_change_filename(stringcast(name_of_file+1));
-@z
-
-@x [29.536] l.10324 - Print rest of banner.
-begin wlog(banner);
-@y
-begin wlog(banner);
-wlog(version_string);
-@z
-
-@x [29.536] l.10327 - Adjust for C string conventions.
-months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-@y
-months := ' JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-@z
-
-% [29.537] Use a path when calling a_open_in to do a \input; also, try
-% to open the file with and without the `.tex' extension, regardless of
-% whether the file already has an extension. This allows filenames like
-% `foo' and `foo.bar.tex', as well as `foo.tex' and `foo.bar'.
-@x [29.537] l.10338 - start_input
-begin scan_file_name; {set |cur_name| to desired file name}
-if cur_ext="" then cur_ext:=".tex";
-pack_cur_name;
-loop@+ begin begin_file_reading; {set up |cur_file| and new level of input}
- if a_open_in(cur_file) then goto done;
- if cur_area="" then
- begin pack_file_name(cur_name,TEX_area,cur_ext);
- if a_open_in(cur_file) then goto done;
- end;
-@y
-var temp_str: str_number;
-begin scan_file_name; {set |cur_name| to desired file name}
-pack_cur_name;
-loop@+begin
- begin_file_reading; {set up |cur_file| and new level of input}
- tex_input_type := 1; {Tell |open_input| we are \.{\\input}.}
- {Kpathsea tries all the various ways to get the file.}
- if open_in_name_ok(name_of_file+1)
- and a_open_in(cur_file, kpse_tex_format) then
- goto done;
-@z
-
-@x [29.537] l.10348 - start_input: don't force ".tex" extension.
- prompt_file_name("input file name",".tex");
-@y
- prompt_file_name("input file name","");
-@z
-
-@x [29.537] l.10350 - start_input: string recycling
-done: name:=a_make_name_string(cur_file);
-@y
-done: name:=a_make_name_string(cur_file);
-if name=str_ptr-1 then {we can try to conserve string pool space now}
- begin temp_str:=search_string(name);
- if temp_str>0 then
- begin name:=temp_str; flush_string;
- end;
- end;
-@z
-
-@x [29.537] l.10352 - start_input: use different heuristic for initex.
- begin job_name:=cur_name; open_log_file;
-@y
- begin job_name:=get_job_name(cur_name); open_log_file;
-@z
-
-@x [29.537] l.10359 - start_input: don't return filename to string pool.
-if name=str_ptr-1 then {we can conserve string pool space now}
- begin flush_string; name:=cur_name;
- end;
-@y
-@z
-
-@x [30.563] l.10943 - Don't use TEX_font_area.
-if aire="" then pack_file_name(nom,TEX_font_area,".ofm")
-else pack_file_name(nom,aire,".ofm");
-if not b_open_in(tfm_file) then abort;
-@y
-{|kpse_find_file| will append the |".ofm"| or |".tfm"|,
- and avoid searching the disk before the font alias files as well.}
-pack_file_name(nom,aire,"");
-if not ofm_open_in(tfm_file) then abort;
-@z
-
-% [30.564] Reading the tfm file. As a special case, whenever we open a
-% tfm file, we read its first byte into `tfm_temp' right away. TeX
-% looks at `fbyte' before calling `fget', so it ends up seeing every
-% byte. This is Pascal-like I/O.
-@x [30.564] l.10956 - reading the tfm file, define fget & fbyte
-@d fget==get(tfm_file)
-@d fbyte==tfm_file^
-@y
-@d fget==tfm_temp:=getc(tfm_file)
-@d fbyte==tfm_temp
-@z
-
-% [32.575] We only want `eof' on the TFM file to be true if we
-% previously had EOF, not if we're at EOF now. This is like `feof', and
-% unlike our implementation of `eof' elsewhere.
-@x [32.575] l.11161 - Reading the tfm file, replace eof() by feof().
-if eof(tfm_file) then abort;
-@y
-if feof(tfm_file) then abort;
-@z
-
-@x [32.595] l.11860 - texarray
-@!dvi_buf:array[dvi_index] of real_eight_bits; {buffer for \.{DVI} output}
-@!half_buf:dvi_index; {half of |dvi_buf_size|}
-@!dvi_limit:dvi_index; {end of the current half buffer}
-@!dvi_ptr:dvi_index; {the next available buffer address}
-@y
-@!dvi_buf:^real_eight_bits; {buffer for \.{DVI} output}
-@!half_buf:integer; {half of |dvi_buf_size|}
-@!dvi_limit:integer; {end of the current half buffer}
-@!dvi_ptr:integer; {the next available buffer address}
-@z
-
-@x [32.597] l.11886 - write_dvi done in C.
-@p procedure write_dvi(@!a,@!b:dvi_index);
-var k:dvi_index;
-begin for k:=a to b do write(dvi_file,dvi_buf[k]);
-end;
-@y
-In C, we use a macro to call |fwrite| or |write| directly, writing all
-the bytes in one shot. Much better even than writing four
-bytes at a time.
-@z
-
-@x [32.617] l.12261 - Use output_comment if the user set it. Assume it's short enough.
- old_setting:=selector; selector:=new_string;
-@y
-if output_comment then
- begin l:=strlen(output_comment); dvi_out(l);
- for s:=0 to l-1 do dvi_out(output_comment[s]);
- end
-else begin {the default code is unchanged}
- old_setting:=selector; selector:=new_string;
-@z
-
-@x [32.617] l.12268 - Use output_comment if the user set it.
- pool_ptr:=str_start(str_ptr); {flush the current string}
-@y
- pool_ptr:=str_start(str_ptr); {flush the current string}
-end;
-@z
-
-% We output each portion of the page as we get to it, if we are using
-% IPC, so that the previewer (TeXView) can display it immediately. [SPM]
-@x [32.640] l.12690 - IPC
-dvi_out(eop); incr(total_pages); cur_s:=-1;
-@y
-dvi_out(eop); incr(total_pages); cur_s:=-1;
-ifdef ('IPC')
-if ipc_on>0 then
- begin if dvi_limit=half_buf then
- begin write_dvi(half_buf, dvi_buf_size-1);
- flush_dvi;
- dvi_gone:=dvi_gone+half_buf;
- end;
- if dvi_ptr>0 then
- begin write_dvi(0, dvi_ptr-1);
- flush_dvi;
- dvi_offset:=dvi_offset+dvi_ptr; dvi_gone:=dvi_gone+dvi_ptr;
- end;
- dvi_ptr:=0; dvi_limit:=dvi_buf_size;
- ipc_page(dvi_gone);
- end;
-endif ('IPC');
-@z
-
-@x [32.642] l.12742 - Use dvi_offset instead of dvi_buf_size with IPC stuff.
- k:=4+((dvi_buf_size-dvi_ptr) mod 4); {the number of 223's}
-@y
-ifdef ('IPC')
- k:=7-((3+dvi_offset+dvi_ptr) mod 4); {the number of 223's}
-endif ('IPC')
-ifndef ('IPC')
- k:=4+((dvi_buf_size-dvi_ptr) mod 4); {the number of 223's}
-endifn ('IPC')
-@z
-
-@x [32.642] l.12773 - use print_file_name
- print_nl("Output written on "); slow_print(output_file_name);
-@y
- print_nl("Output written on "); print_file_name(0, output_file_name, 0);
-@z
-
-@x [38.859] l.16855 - Fix a casting/expression evaluation problem.
-if abs(fit_class-fitness(r))>1 then d:=d+adj_demerits;
-@y
-if abs(intcast(fit_class)-intcast(fitness(r)))>1 then d:=d+adj_demerits;
-@z
-
-@x [39.875] l.17170 - Another casting problem.
- begin line_diff:=line_number(r)-best_line;
-@y
- begin line_diff:=intcast(line_number(r))-intcast(best_line);
-@z
-
-@x [42.920] l.18068 - bigtrie: allow larger hyphenation tries.
-@!trie_pointer=0..trie_size; {an index into |trie|}
-@y
-@!trie_pointer=0..ssup_trie_size; {an index into |trie|}
-@z
-
-@x [42.921] l.18075 - bigtrie: allow larger hyphenation tries.
-@!trie:array[trie_pointer] of two_halves; {|trie_link|, |trie_char|, |trie_op|}
-@y
-{We will dynamically allocate this arrays.}
-@!trie:^two_halves; {|trie_link|}
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18126 m.925
-different from $\alpha$, we can conclude that $\alpha$ is not in the table.
-@y 18126
-different from $\alpha$, we can conclude that $\alpha$ is not in the table.
-This is a clever scheme which saves the need for a hash link array.
-However, it is difficult to increase the size of the hyphen exception
-arrays. To make this easier, the ordered hash has been replaced by
-a simple hash, using an additional array |hyph_link|. The value
-|0| in |hyph_link[k]| means that there are no more entries corresponding
-to the specific hash chain. When |hyph_link[k]>0|, the next entry in
-the hash chain is |hyph_link[k]-1|. This value is used because the
-arrays start at |0|.
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18134 m.925
-@!hyph_pointer=0..hyph_size; {an index into the ordered hash table}
-@y 18134
-@!hyph_pointer=0..ssup_hyph_size; {index into hyphen exceptions hash table;
- enlarging this requires changing (un)dump code}
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18137 m.926
-@!hyph_word:array[hyph_pointer] of str_number; {exception words}
-@!hyph_list:array[hyph_pointer] of pointer; {lists of hyphen positions}
-@!hyph_count:hyph_pointer; {the number of words in the exception dictionary}
-@y 18139
-@!hyph_word: ^str_number; {exception words}
-@!hyph_list: ^pointer; {list of hyphen positions}
-@!hyph_link: ^hyph_pointer; {link array for hyphen exceptions hash table}
-@!hyph_count:integer; {the number of words in the exception dictionary}
-@!hyph_next:integer; {next free slot in hyphen exceptions hash table}
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18145 m.928
-for z:=0 to hyph_size do
- begin hyph_word[z]:=0; hyph_list[z]:=null;
- end;
-hyph_count:=0;
-@y 18148
-for z:=0 to hyph_size do
- begin hyph_word[z]:=0; hyph_list[z]:=null; hyph_link[z]:=0;
- end;
-hyph_count:=0;
-hyph_next:=hyph_prime+1; if hyph_next>hyph_size then hyph_next:=hyph_prime;
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18163 m.930
-h:=hc[1]; incr(hn); hc[hn]:=cur_lang;
-for j:=2 to hn do h:=(h+h+hc[j]) mod hyph_size;
-loop@+ begin @<If the string |hyph_word[h]| is less than \(hc)|hc[1..hn]|,
- |goto not_found|; but if the two strings are equal,
- set |hyf| to the hyphen positions and |goto found|@>;
- if h>0 then decr(h)@+else h:=hyph_size;
- end;
-not_found: decr(hn)
-@y 18170
-h:=hc[1]; incr(hn); hc[hn]:=cur_lang;
-for j:=2 to hn do h:=(h+h+hc[j]) mod hyph_prime;
-loop@+ begin @<If the string |hyph_word[h]| is less than \(hc)|hc[1..hn]|,
- |goto not_found|; but if the two strings are equal,
- set |hyf| to the hyphen positions and |goto found|@>;
- h:=hyph_link[h]; if h=0 then goto not_found;
- decr(h);
- end;
-not_found: decr(hn)
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18172 m.931
-@ @<If the string |hyph_word[h]| is less than \(hc)...@>=
-k:=hyph_word[h]; if k=0 then goto not_found;
-if length(k)<hn then goto not_found;
-if length(k)=hn then
- begin j:=1; u:=str_start(k);
- repeat if so(str_pool[u])<hc[j] then goto not_found;
- if so(str_pool[u])>hc[j] then goto done;
- incr(j); incr(u);
- until j>hn;
- @<Insert hyphens as specified in |hyph_list[h]|@>;
- decr(hn); goto found;
- end;
-done:
-@y 18184
-@ @<If the string |hyph_word[h]| is less than \(hc)...@>=
-{This is now a simple hash list, not an ordered one, so
-the module title is no longer descriptive.}
-k:=hyph_word[h]; if k=0 then goto not_found;
-if length(k)=hn then
- begin j:=1; u:=str_start(k);
- repeat
- if so(str_pool[u])<>hc[j] then goto done;
- incr(j); incr(u);
- until j>hn;
- @<Insert hyphens as specified in |hyph_list[h]|@>;
- decr(hn); goto found;
- end;
-done:
-@z
-
-% The GNU C compiler complains of unused variables.
-@x
-@!s,@!t:str_number; {strings being compared or stored}
-@y
-@!s:str_number; {strings being compared or stored}
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18274 m.939
- begin h:=(h+h+hc[j]) mod hyph_size;
-@y 18274
- begin h:=(h+h+hc[j]) mod hyph_prime;
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18281 m.940
-@ @<Insert the \(p)pair |(s,p)|...@>=
-if hyph_count=hyph_size then overflow("exception dictionary",hyph_size);
-@:TeX capacity exceeded exception dictionary}{\quad exception dictionary@>
-incr(hyph_count);
-while hyph_word[h]<>0 do
- begin @<If the string |hyph_word[h]| is less than \(or)or equal to
- |s|, interchange |(hyph_word[h],hyph_list[h])| with |(s,p)|@>;
- if h>0 then decr(h)@+else h:=hyph_size;
- end;
-hyph_word[h]:=s; hyph_list[h]:=p
-@y 18290
-@ @<Insert the \(p)pair |(s,p)|...@>=
- if hyph_next <= hyph_prime then
- while (hyph_next>0) and (hyph_word[hyph_next-1]>0) do decr(hyph_next);
-if (hyph_count=hyph_size)or(hyph_next=0) then
- overflow("exception dictionary",hyph_size);
-@:TeX capacity exceeded exception dictionary}{\quad exception dictionary@>
-incr(hyph_count);
-while hyph_word[h]<>0 do
- begin @<If the string |hyph_word[h]| is less than \(or)or equal to
- |s|, interchange |(hyph_word[h],hyph_list[h])| with |(s,p)|@>;
- if hyph_link[h]=0 then
- begin
- hyph_link[h]:=hyph_next;
- if hyph_next >= hyph_size then hyph_next:=hyph_prime;
- if hyph_next > hyph_prime then incr(hyph_next);
- end;
- h:=hyph_link[h]-1;
- end;
-
-found: hyph_word[h]:=s; hyph_list[h]:=p
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 18292 m.941
-@ @<If the string |hyph_word[h]| is less than \(or)...@>=
-k:=hyph_word[h];
-if length(k)<length(s) then goto found;
-if length(k)>length(s) then goto not_found;
-u:=str_start(k); v:=str_start(s);
-repeat if str_pool[u]<str_pool[v] then goto found;
-if str_pool[u]>str_pool[v] then goto not_found;
-incr(u); incr(v);
-until u=str_start(k+1);
-found:q:=hyph_list[h]; hyph_list[h]:=p; p:=q;@/
-t:=hyph_word[h]; hyph_word[h]:=s; s:=t;
-not_found:
-@y 18303
-@ @<If the string |hyph_word[h]| is less than \(or)...@>=
-{This is now a simple hash list, not an ordered one, so
-the module title is no longer descriptive.}
-k:=hyph_word[h];
-if length(k)<>length(s) then goto not_found;
-u:=str_start(k); v:=str_start(s);
-repeat if str_pool[u]<>str_pool[v] then goto not_found;
-incr(u); incr(v);
-until u=str_start(k+1);
-{repeat hyphenation exception; flushing old data}
-flush_string; s:=hyph_word[h]; {avoid |slow_make_string|!}
-decr(hyph_count);
-{ We could also |flush_list(hyph_list[h]);|, but it interferes
- with \.{trip.log}. }
-goto found;
-not_found:
-@z
-
-@x [43.943] l.18346 - web2c can't parse negative lower bounds in arrays. Sorry.
-@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
-@y
-@!init@! trie_op_hash:array[neg_trie_op_size..trie_op_size] of 0..trie_op_size;
-@z
-
-@x [43.944] l.18365 - web2c can't parse negative lower bounds in arrays. Sorry
-var h:-trie_op_size..trie_op_size; {trial hash location}
-@y
-var h:neg_trie_op_size..trie_op_size; {trial hash location}
-@z
-
-@x [43.944] l.18370 - Another casting problem, and use |neg_trie_op_size|.
-begin h:=abs(n+313*d+361*v+1009*cur_lang) mod (trie_op_size+trie_op_size)
- - trie_op_size;
-@y
-begin h:=abs(intcast(n)+313*intcast(d)+361*intcast(v)+1009*intcast(cur_lang))
- mod (trie_op_size - neg_trie_op_size)
- + neg_trie_op_size;
-@z
-
-@x [43.947] l.18438 - Dynamically allocate arrays, and a casting problem.
-@!init @!trie_c:packed array[trie_pointer] of ASCII_code;
- {characters to match}
-@t\hskip10pt@>@!trie_o:packed array[trie_pointer] of quarterword;
- {operations to perform}
-@t\hskip10pt@>@!trie_l:packed array[trie_pointer] of trie_pointer;
- {left subtrie links}
-@t\hskip10pt@>@!trie_r:packed array[trie_pointer] of trie_pointer;
- {right subtrie links}
-@t\hskip10pt@>@!trie_ptr:trie_pointer; {the number of nodes in the trie}
-@t\hskip10pt@>@!trie_hash:packed array[trie_pointer] of trie_pointer;
- {used to identify equivalent subtries}
-tini
-@y
-@!init @!trie_c:^ASCII_code;
- {characters to match}
-@t\hskip10pt@>@!trie_o:^quarterword;
- {operations to perform}
-@t\hskip10pt@>@!trie_l:^trie_pointer;
- {left subtrie links}
-@t\hskip10pt@>@!trie_r:^trie_pointer;
- {right subtrie links}
-@t\hskip10pt@>@!trie_ptr:trie_pointer; {the number of nodes in the trie}
-@t\hskip10pt@>@!trie_hash:^trie_pointer;
- {used to identify equivalent subtries}
-tini
-@z
-
-@x [43.948] l.18471 - Another casting problem.
-begin h:=abs(trie_c[p]+1009*trie_o[p]+@|
- 2718*trie_l[p]+3142*trie_r[p]) mod trie_size;
-@y
-begin h:=abs(intcast(trie_c[p])+1009*intcast(trie_o[p])+@|
- 2718*intcast(trie_l[p])+3142*intcast(trie_r[p])) mod trie_size;
-@z
-
-@x [43.590] l.18524 - Dynamically allocate & larger tries.
-@!init@!trie_taken:packed array[1..trie_size] of boolean;
- {does a family start here?}
-@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
- {the first possible slot for each character}
-@t\hskip10pt@>@!trie_max:trie_pointer; {largest location used in |trie|}
-@t\hskip10pt@>@!trie_not_ready:boolean; {is the trie still in linked form?}
-tini
-@y
-@!init@!trie_taken: ^boolean;
- {does a family start here?}
-@t\hskip10pt@>@!trie_min:^trie_pointer;
- {the first possible slot for each character}
-@t\hskip10pt@>@!trie_max:trie_pointer; {largest location used in |trie|}
-@t\hskip10pt@>@!trie_not_ready:boolean; {is the trie still in linked form?}
-tini
-@z
-
-@x [43.951] l.18539 - Dynamically allocate.
-trie_not_ready:=true; trie_root:=0; trie_c[0]:=si(0); trie_ptr:=0;
-@y
-trie_not_ready:=true;
-@z
-
-%%
-%% We can rewrite the original code after "main_loop_move+2" upto the
-%% "tail_append(lig_stack)" in module 1036 as
-%%
-%
-% main_loop_move+2:
-% if font_bc[main_f]<=cur_chr then
-% if cur_chr<=font_ec[main_f] then
-% begin main_i:=char_info(main_f)(cur_l);
-% if char_exists(main_i) goto main_loop_move+3;
-% end;
-% char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
-% main_loop_move+3:
-% tail_append(lig_stack) {|main_loop_lookahead| is next}
-%
-
-@x [49.1252] l.23230 - INI = VIR, so have to do runtime test.
-hyph_data: if cur_chr=1 then
- begin @!init new_patterns; goto done;@;@+tini@/
-@y 23215
-hyph_data: if cur_chr=1 then
- begin @!init if ini_version then
- begin new_patterns; goto done; end; @;@+tini@/
-@z
-
-@x
-@!flushable_string:str_number; {string not yet referenced}
-@y
-@z
-
-% undo Knuth's change because
-% a) the string is already replaced in |scan_file_name| and therefore
-% b) the wrong string will get flushed!!!
-%
-@x [49.1260] l.23331 new_font: string recycling -- already done
-flushable_string:=str_ptr-1;
-@y
-@z
-
-% If you don't want to remove code with the following two changes,
-% please replace the former change by
-%
-% @x
-% flushable_string:=str_ptr-1;
-% @y
-% if cur_name=str_ptr-1 then
-% flushable_string:=str_ptr-1
-% else
-% flushable_string:=str_ptr; {number of a non-existing}
-% @z
-%
-% otherwise the wrong string will get removed by |flush_string|!!
-%
-@x [49.1260] l.23334 new_font: string recycling -- already done
- begin if cur_name=flushable_string then
- begin flush_string; cur_name:=font_name(f);
- end;
- if s>0 then
-@y
- begin if s>0 then
-@z
-
-@x [49.1265] if batchmode, mktex... scripts should be silent.
-interaction:=cur_chr;
-@y
-interaction:=cur_chr;
-if interaction = batch_mode
-then kpse_make_tex_discard_errors := 1
-else kpse_make_tex_discard_errors := 0;
-@z
-
-@x [49.1275] l.23441 - Same stuff as for \input, this time for \openin.
- if cur_ext="" then cur_ext:=".tex";
- pack_cur_name;
- if a_open_in(read_file[n]) then read_open[n]:=just_open;
-@y
- pack_cur_name;
- tex_input_type:=0; {Tell |open_input| we are \.{\\openin}.}
- if open_in_name_ok(name_of_file+1)
- and a_open_in(read_file[n], kpse_tex_format) then
- read_open[n]:=just_open;
-@z
-
-@x [50.1301] l.23679 - INI = VIR, so runtime test.
-format_ident:=" (INIOMEGA)";
-@y
-if ini_version then format_ident:=" (INIOMEGA)";
-@z
-
-% The GNU C compiler complains of unused variables.
-@x [50.1302] l.23690 - Eliminate now-unused variable `w' in `store_fmt_file'.
-var j,@!k,@!l:integer; {all-purpose indices}
-@!p,@!q: pointer; {all-purpose pointers}
-@!x: integer; {something to dump}
-@!w: four_quarters; {four ASCII codes}
-@y
-var @!k:integer; {all-purpose indices}
-@!p,@!q: pointer; {all-purpose pointers}
-@!x: integer; {something to dump}
-@!format_engine: ^char;
-@z
-
-@x [50.1303] l.23722 - Ditto, for `load_fmt_file'.
-@!w: four_quarters; {four ASCII codes}
-@y
-@!format_engine: ^char;
-@z
-
-@x [50.1305] l.23751 - Do dumping and undumping of fmt files in C.
-@d dump_wd(#)==begin fmt_file^:=#; put(fmt_file);@+end
-@d dump_int(#)==begin fmt_file^.int:=#; put(fmt_file);@+end
-@d dump_hh(#)==begin fmt_file^.hh:=#; put(fmt_file);@+end
-@d dump_qqqq(#)==begin fmt_file^.qqqq:=#; put(fmt_file);@+end
-@y
-@z
-@x [1306]
-@d undump_wd(#)==begin get(fmt_file); #:=fmt_file^;@+end
-@d undump_int(#)==begin get(fmt_file); #:=fmt_file^.int;@+end
-@d undump_hh(#)==begin get(fmt_file); #:=fmt_file^.hh;@+end
-@d undump_qqqq(#)==begin get(fmt_file); #:=fmt_file^.qqqq;@+end
-@y
-@z
-@x [still 1306] debug format file
-@d undump_size_end_end(#)==too_small(#)@+else undump_end_end
-@y
-@d format_debug_end(#)==
- write_ln (stderr, ' = ', #);
- end;
-@d format_debug(#)==
- if debug_format_file then begin
- write (stderr, 'fmtdebug:', #);
- format_debug_end
-@d undump_size_end_end(#)==
- too_small(#)@+else format_debug (#)(x); undump_end_end
-@z
-
-@x [50,1307] l.23779 - texarray
-dump_int(@$);@/
-@y
-dump_int(@"57325458); {Web2C \TeX's magic constant: "W2TX"}
-{Align engine to 4 bytes with one or more trailing NUL}
-x:=strlen(engine_name);
-format_engine:=xmalloc_array(char,x+4);
-strcpy(format_engine, engine_name);
-for k:=x to x+3 do format_engine[k]:=0;
-x:=x+4-(x mod 4);
-dump_int(x);dump_things(format_engine[0], x);
-libc_free(format_engine);@/
-dump_int(@$);@/
-dump_int(max_halfword);@/
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 23784 m.1307
-dump_int(hyph_size)
-@y 23784
-dump_int(hyph_prime)
-@z
-
-@x [50.1308] l.23793 - texarray
-x:=fmt_file^.int;
-if x<>@$ then goto bad_fmt; {check that strings are the same}
-undump_int(x);
-if x<>mem_bot then goto bad_fmt;
-undump_int(x);
-if x<>mem_top then goto bad_fmt;
-@y
-@+init
-if ini_version then
- begin libc_free(str_pool); libc_free(str_start_ar); libc_free(yzmem);
- end;
-@+tini
-undump_int(x);
-format_debug('format magic number')(x);
-if x<>@"57325458 then goto bad_fmt; {not a format file}
-undump_int(x);
-format_debug('engine name size')(x);
-if (x<0) or (x>256) then goto bad_fmt; {corrupted format file}
-format_engine:=xmalloc_array(char, x);
-undump_things(format_engine[0], x);
-format_engine[x-1]:=0; {force string termination, just in case}
-if strcmp(engine_name, format_engine) then
- begin wake_up_terminal;
- wterm_ln('---! ', stringcast(name_of_file+1), ' was written by ', format_engine);
- libc_free(format_engine);
- goto bad_fmt;
-end;
-libc_free(format_engine);
-undump_int(x);
-format_debug('string pool checksum')(x);
-if x<>@$ then begin {check that strings are the same}
- wake_up_terminal;
- wterm_ln('---! ', stringcast(name_of_file+1), ' doesn''t match ', pool_name);
- goto bad_fmt;
-end;
-undump_int(x);
-if x<>max_halfword then goto bad_fmt; {check |max_halfword|}
-
-undump_int(x); format_debug ('mem_bot')(x);
-if x<>mem_bot then goto bad_fmt;
-undump_int(mem_top); format_debug ('mem_top')(mem_top);
-if mem_bot+1100>mem_top then goto bad_fmt;
-
-
-head:=contrib_head; tail:=contrib_head;
- page_tail:=page_head; {page initialization}
-
-mem_min := mem_bot - extra_mem_bot;
-mem_max := mem_top + extra_mem_top;
-
-yzmem:=xmalloc_array (memory_word, mem_max - mem_min + 1);
-zmem := yzmem - mem_min; {this pointer arithmetic fails with some compilers}
-mem := zmem;
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 23804 m.1308
-if x<>hyph_size then goto bad_fmt
-@y 23804
-if x<>hyph_prime then goto bad_fmt
-@z
-
-% [1309] Make dumping/undumping more efficient by doing whole arrays at
-% a time, via fread/fwrite in texmfmp.c.
-@x [50.1309] l.23814 - Make dumping/undumping more efficient.
-for k:=too_big_char to str_ptr do dump_int(str_start(k));
-k:=0;
-while k+4<pool_ptr do
- begin dump_four_ASCII; k:=k+4;
- end;
-k:=pool_ptr-4; dump_four_ASCII;
-@y
-dump_things(str_start(too_big_char), str_ptr-too_big_char+1);
-dump_things(str_pool[0], pool_ptr);
-@z
-
-@x [50.1310] l.23829 - Make dumping/undumping more efficient.
-undump_size(0)(pool_size)('string pool size')(pool_ptr);
-undump_size(0)(max_strings)('max strings')(str_ptr);
-for k:=too_big_char to str_ptr do undump(0)(pool_ptr)(str_start(k));
-k:=0;
-while k+4<pool_ptr do
- begin undump_four_ASCII; k:=k+4;
- end;
-k:=pool_ptr-4; undump_four_ASCII;
-@y
-undump_size(0)(sup_pool_size-pool_free)('string pool size')(pool_ptr);
-if pool_size<pool_ptr+pool_free then
- pool_size:=pool_ptr+pool_free;
-undump_size(0)(sup_max_strings-strings_free)('sup strings')(str_ptr);@/
-if max_strings<str_ptr+strings_free then
- max_strings:=str_ptr+strings_free;
-str_start_ar:=xmalloc_array(pool_pointer, max_strings-biggest_char);
-undump_things(str_start(too_big_char), str_ptr-too_big_char+1);
-str_pool:=xmalloc_array(packed_ASCII_code, pool_size);
-undump_things(str_pool[0], pool_ptr);
-@z
-
-@x [50.1311] l.23850 - Make dumping/undumping more efficient.
-repeat for k:=p to q+1 do dump_wd(mem[k]);
-@y
-repeat dump_things(mem[p], q+2-p);
-@z
-
-@x [50.1311] l.23855 - Make dumping/undumping more efficient.
-for k:=p to lo_mem_max do dump_wd(mem[k]);
-@y
-dump_things(mem[p], lo_mem_max+1-p);
-@z
-
-@x [50.1311] l.23858 - Make dumping/undumping more efficient.
-for k:=hi_mem_min to mem_end do dump_wd(mem[k]);
-@y
-dump_things(mem[hi_mem_min], mem_end+1-hi_mem_min);
-@z
-
-@x [50.1312] l.23873 - Make dumping/undumping more efficient.
-repeat for k:=p to q+1 do undump_wd(mem[k]);
-@y
-repeat undump_things(mem[p], q+2-p);
-@z
-
-@x [50.1312] l.23878 - Make dumping/undumping more efficient.
-for k:=p to lo_mem_max do undump_wd(mem[k]);
-@y
-undump_things(mem[p], lo_mem_max+1-p);
-@z
-
-@x [50.1312] l.23888 - Make dumping/undumping more efficient.
-for k:=hi_mem_min to mem_end do undump_wd(mem[k]);
-@y
-undump_things (mem[hi_mem_min], mem_end+1-hi_mem_min);
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 24058 m.1324
-dump_int(hyph_count);
-for k:=0 to hyph_size do if hyph_word[k]<>0 then
- begin dump_int(k); dump_int(hyph_word[k]); dump_int(hyph_list[k]);
- end;
-@y 24061
-dump_int(hyph_count);
-if hyph_next <= hyph_prime then hyph_next:=hyph_size;
-dump_int(hyph_next);{minumum value of |hyphen_size| needed}
-for k:=0 to hyph_size do if hyph_word[k]<>0 then
- begin dump_int(k+65536*hyph_link[k]);
- {assumes number of hyphen exceptions does not exceed 65535}
- dump_int(hyph_word[k]); dump_int(hyph_list[k]);
- end;
-@z
-
-@x [50.1324] l.24066 - Make dumping/undumping more efficient - trie
-for k:=0 to trie_max do dump_hh(trie[k]);
-dump_int(max_hyph_char);
-dump_int(trie_op_ptr);
-for k:=1 to trie_op_ptr do
- begin dump_int(hyf_distance[k]);
- dump_int(hyf_num[k]);
- dump_int(hyf_next[k]);
- end;
-@y
-dump_things(trie[0],trie_max+1);
-dump_int(max_hyph_char);
-dump_int(trie_op_ptr);
-dump_things(hyf_distance[1], trie_op_ptr);
-dump_things(hyf_num[1], trie_op_ptr);
-dump_things(hyf_next[1], trie_op_ptr);
-@z
-
-@x [50.1325] l.24086 - Make dumping/undumping more efficient - trie
-@<Undump the hyphenation tables@>=
-@y
-{This is only used for the hyphenation tries below, and the size is
- always |j+1|.}
-@d xmalloc_and_undump(#) ==
- if not # then #:=xmalloc_array(two_halves, j+1);
- undump_things(#[0], j+1);
-
-@<Undump the hyphenation tables@>=
-@z
-
-%%%%%%%% dynamic hyph_size
-@x 24087 m.1325
-undump(0)(hyph_size)(hyph_count);
-for k:=1 to hyph_count do
- begin undump(0)(hyph_size)(j);
- undump(0)(str_ptr)(hyph_word[j]);
- undump(min_halfword)(max_halfword)(hyph_list[j]);
- end;
-@y 24092
-undump_size(0)(hyph_size)('hyph_size')(hyph_count);
-undump_size(hyph_prime)(hyph_size)('hyph_size')(hyph_next);
-j:=0;
-for k:=1 to hyph_count do
- begin undump_int(j); if j<0 then goto bad_fmt;
- if j>65535 then
- begin hyph_next:= j div 65536; j:=j - hyph_next * 65536; end
- else hyph_next:=0;
- if (j>=hyph_size)or(hyph_next>hyph_size) then goto bad_fmt;
- hyph_link[j]:=hyph_next;
- undump(0)(str_ptr)(hyph_word[j]);
- undump(min_halfword)(max_halfword)(hyph_list[j]);
- end;
- {|j| is now the largest occupied location in |hyph_word|}
- incr(j);
- if j<hyph_prime then j:=hyph_prime;
- hyph_next:=j;
- if hyph_next >= hyph_size then hyph_next:=hyph_prime else
- if hyph_next >= hyph_prime then incr(hyph_next);
-@z
-
-
-@x [50.1325] l.24094 - Make dumping/undumping more efficient - trie
-for k:=0 to j do undump_hh(trie[k]);
-undump_int(max_hyph_char);
-undump_size(0)(trie_op_size)('trie op size')(j); @+init trie_op_ptr:=j;@+tini
-for k:=1 to j do
- begin undump(0)(63)(hyf_distance[k]); {a |small_number|}
- undump(0)(63)(hyf_num[k]);
- undump(min_quarterword)(max_quarterword)(hyf_next[k]);
- end;
-@y
-{The first array has not been allocated yet unless we're \.{INITEX};
- we do that precisely so we don't allocate more space than necessary.}
-xmalloc_and_undump(trie);
-undump_int(max_hyph_char);
-undump_size(0)(trie_op_size)('trie op size')(j); @+init trie_op_ptr:=j;@+tini
-{I'm not sure we have such a strict limitation (64) on these values, so
- let's leave them unchecked.}
-undump_things(hyf_distance[1], j);
-undump_things(hyf_num[1], j);
-undump_upper_check_things(max_quarterword, hyf_next[1], j);
-@z
-
-@x [50.1327] l.24117 - Allow command line to override dumped value.
-undump(batch_mode)(error_stop_mode)(interaction);
-@y
-undump(batch_mode)(error_stop_mode)(interaction);
-if interaction_option<>unspecified_mode then interaction:=interaction_option;
-@z
-
-% [50.1327] As with TFM files, `eof' here means `have we previously
-% encountered the end-of-file', not `are we at the end of the file'.
-@x [50.1327] l.24120 - dumping/undumping, replace eof() by feof()
-if (x<>69069)or eof(fmt_file) then goto bad_fmt
-@y
-if (x<>69069)or feof(fmt_file) then goto bad_fmt
-@z
-
-@x [50.1328] l.24124 - Eliminate probably wrong word `preloaded' from format_idents.
-print(" (preloaded format="); print(job_name); print_char(" ");
-@y
-print(" (format="); print(job_name); print_char(" ");
-@z
-
-@x [51.1332] l.24203 - make the main program a procedure, for eqtb hack.
-@p begin @!{|start_here|}
-@y
-@d const_chk(#)==begin if # < inf@&# then # := inf@&# else
- if # > sup@&# then # := sup@&# end
-
-{|setup_bound_var| stuff duplicated in \.{mf.ch}.}
-@d setup_bound_var(#)==bound_default:=#; setup_bound_var_end
-@d setup_bound_var_end(#)==bound_name:=#; setup_bound_var_end_end
-@d setup_bound_var_end_end(#)==
- setup_bound_variable(addressof(#), bound_name, bound_default);
-
-@p procedure main_body;
-begin @!{|start_here|}
-
-{Always start the file recorder?}
- {recorder_enabled:=true;}
-
-{Bounds that may be set from the configuration file. We want the user to
- be able to specify the names with underscores, but \.{TANGLE} removes
- underscores, so we're stuck giving the names twice, once as a string,
- once as the identifier. How ugly.}
- setup_bound_var (1000000)('main_memory')(main_memory);
- {|memory_word|s for |mem| in \.{INITEX}}
- setup_bound_var (0)('extra_mem_top')(extra_mem_top);
- {increase high mem in \.{VIRTEX}}
- setup_bound_var (0)('extra_mem_bot')(extra_mem_bot);
- {increase low mem in \.{VIRTEX}}
- setup_bound_var (300000)('pool_size')(pool_size);
- setup_bound_var (200000)('string_vacancies')(string_vacancies);
- setup_bound_var (5000)('pool_free')(pool_free); {min pool avail after fmt}
- setup_bound_var (100000)('max_strings')(max_strings);
- setup_bound_var (100)('strings_free')(strings_free);
- setup_bound_var (20000)('trie_size')(trie_size);
- {if |ssup_trie_size| increases, recompile}
- setup_bound_var (659)('hyph_size')(hyph_size);
- setup_bound_var (20000)('buf_size')(buf_size);
- setup_bound_var (50)('nest_size')(nest_size);
- setup_bound_var (15)('max_in_open')(max_in_open);
- setup_bound_var (60)('param_size')(param_size);
- setup_bound_var (4000)('save_size')(save_size);
- setup_bound_var (300)('stack_size')(stack_size);
- setup_bound_var (16384)('dvi_buf_size')(dvi_buf_size);
- setup_bound_var (79)('error_line')(error_line);
- setup_bound_var (50)('half_error_line')(half_error_line);
- setup_bound_var (79)('max_print_line')(max_print_line);
- const_chk (main_memory);
-@+init
- if ini_version then begin
- extra_mem_top := 0;
- extra_mem_bot := 0;
- end;
-@+tini
- if extra_mem_bot>sup_main_memory then extra_mem_bot:=sup_main_memory;
- if extra_mem_top>sup_main_memory then extra_mem_top:=sup_main_memory;
- {|mem_top| is an index, |main_memory| a size}
- mem_top := mem_bot + main_memory -1;
- mem_min := mem_bot;
- mem_max := mem_top;
-
- {Check other constants against their sup and inf.}
- const_chk (trie_size);
- const_chk (hyph_size);
- const_chk (buf_size);
- const_chk (nest_size);
- const_chk (max_in_open);
- const_chk (param_size);
- const_chk (save_size);
- const_chk (stack_size);
- const_chk (dvi_buf_size);
- const_chk (pool_size);
- const_chk (string_vacancies);
- const_chk (pool_free);
- const_chk (max_strings);
- const_chk (strings_free);
- if error_line > ssup_error_line then error_line := ssup_error_line;
-
- {array memory allocation}
- buffer:=xmalloc_array (ASCII_code, buf_size);
- nest:=xmalloc_array (list_state_record, nest_size);
- save_stack:=xmalloc_array (memory_word, save_size);
- input_stack:=xmalloc_array (in_state_record, stack_size);
- input_file:=xmalloc_array (alpha_file, max_in_open);
- input_file_mode:=xmalloc_array (halfword, max_in_open);
- input_file_translation:=xmalloc_array (halfword, max_in_open);
- line_stack:=xmalloc_array (integer, max_in_open);
- line_numbers:=xmalloc_array (integer, max_in_open);
- file_names:=xmalloc_array (integer, max_in_open);
- param_stack:=xmalloc_array (halfword, param_size);
- dvi_buf:=xmalloc_array (real_eight_bits, dvi_buf_size);
- hyph_word:=xmalloc_array (str_number, hyph_size);
- hyph_list:=xmalloc_array (halfword, hyph_size);
- hyph_link:=xmalloc_array (hyph_pointer, hyph_size);
-@+init
-if ini_version then begin
- yzmem:=xmalloc_array (memory_word, mem_top - mem_bot + 1);
- zmem := yzmem - mem_bot; {Some compilers require |mem_bot=0|}
-
- str_start_ar:=xmalloc_array (pool_pointer, max_strings-biggest_char);
- str_pool:=xmalloc_array (packed_ASCII_code, pool_size);
-end;
-@+tini
-@z
-
-@x [51.1332] l.24215 - INI = VIR, so pool init needs runtime test
-@!init if not get_strings_started then goto final_end;
-init_prim; {call |primitive| for each primitive}
-init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr; fix_date_and_time;
-tini@/
-@y
-@+init if ini_version then
- begin if not get_strings_started then goto final_end;
- init_prim; {call |primitive| for each primitive}
- init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr; fix_date_and_time;
- end;
-@+tini@/
-@z
-
-@x [51.1332] l.24225 - main
-end_of_TEX: close_files_and_terminate;
-final_end: ready_already:=0;
-end.
-@y
-close_files_and_terminate;
-final_end: do_final_end;
-end {|main_body|};
-@z
-
-@x [51.1333] l.24254 - Print new line before termination; switch to editor if necessary.
- slow_print(log_name); print_char(".");
- end;
- end;
-@y
- print_file_name(0, log_name, 0); print_char(".");
- end;
- end;
-print_ln;
-if (edit_name_start<>0) and (interaction>batch_mode) then
- call_edit(str_pool,edit_name_start,edit_name_length,edit_line);
-@z
-
-@x [51.1334] l. - Remove reference to fontmemsize
- wlog_ln(', out of ',font_mem_size:1,' for ',font_max-font_base:1);@/
-@y
-@z
-
-@x [51.1335] l.24335 - Only do dump if ini.
- begin @!init for c:=top_mark_code to split_bot_mark_code do
- if cur_mark[c]<>null then delete_token_ref(cur_mark[c]);
- if last_glue<>max_halfword then delete_glue_ref(last_glue);
- store_fmt_file; return;@+tini@/
-@y
- begin @!init if ini_version then
- begin for c:=top_mark_code to split_bot_mark_code do
- if cur_mark[c]<>null then delete_token_ref(cur_mark[c]);
- store_fmt_file; return;
- end;@+tini@/
-@z
-
-@x [51.1337] l.24361 - Handle %&format in all cases.
-if (format_ident=0)or(buffer[loc]="&") then
-@y
-if (format_ident=0)or(buffer[loc]="&")or dump_line then
-@z
-
-@x [51.1337] l.24371 - Allocate hyphenation tries.
-fix_date_and_time;@/
-@y
-fix_date_and_time;@/
-
-@!init
-if trie_not_ready then begin {initex without format loaded}
- trie:=xmalloc_array (two_halves, trie_size);
-
- trie_c:=xmalloc_array (ASCII_code, trie_size);
- trie_o:=xmalloc_array (quarterword, trie_size);
- trie_l:=xmalloc_array (trie_pointer, trie_size);
- trie_r:=xmalloc_array (trie_pointer, trie_size);
- trie_hash:=xmalloc_array (trie_pointer, trie_size);
- trie_taken:=xmalloc_array (boolean, trie_size);
- trie_min:=xmalloc_array (trie_pointer, too_big_char);
-
- trie_root:=0; trie_c[0]:=si(0); trie_ptr:=0;
- end;
- tini@/
-
-@z
-
-% [52.1338] Core-dump in debugging mode on 0 input. Under Unix, it's
-% not possible to portably switch into the debugger while a program is
-% running. The best approximation is to do a core dump, then run the
-% debugger on it later.
-@x [52.1338] l.24411 - Core-dump in debugging mode on 0 input.
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
- end
-@y
- dump_core {do something to cause a core dump}
-@z
-
-% The GNU C compiler complains of unused variables.
-@x
-procedure do_extension;
-var i,@!j,@!k:integer; {all-purpose integers}
-@!p,@!q,@!r:pointer; {all-purpose pointers}
-@y
-procedure do_extension;
-var @!k:integer; {all-purpose integers}
-@!p:pointer; {all-purpose pointers}
-@z
-
-% [53.1350] (new_write_whatsit) Allow 18 as a \write stream. We never
-% refer to an actual file, though, so we don't need to change the
-% write_file or write_open arrays. We provide for disabling this at
-% runtime, for paranoids.
-@x [53.1350] l.24609 - system: Allow 18 as a \write stream.
- else if cur_val>15 then cur_val:=16;
-@y
- else if (cur_val>15) and (cur_val <> 18) then cur_val:=16;
-@z
-
-@x [53.1370] l.24770 - system: (write_out) \write18{foo} => system(foo).
-begin @<Expand macros in the token list
-@y
-@!d:integer; {number of characters in incomplete current string}
-@!clobbered:boolean; {system string is ok?}
-@!runsystem_ret:integer; {return value from |runsystem|}
-begin @<Expand macros in the token list
-@z
-
-@x [53.1370] l.24773 - system: (write_out) \write18{foo} => system(foo).
-if write_open[j] then selector:=j
-@y
-if j=18 then selector := new_string
-else if write_open[j] then selector:=j
-@z
-
-% Then call system(3) on that string.
-@x [53.1370] l.24779 - system: (write_out) \write18{foo} => system(foo).
-flush_list(def_ref); selector:=old_setting;
-@y
-flush_list(def_ref);
-if j=18 then
- begin if (tracing_online<=0) then
- selector:=log_only {Show what we're doing in the log file.}
- else selector:=term_and_log; {Show what we're doing.}
- {If the log file isn't open yet, we can only send output to the terminal.
- Calling |open_log_file| from here seems to result in bad data in the log.}
- if not log_opened then selector:=term_only;
- print_nl("runsystem(");
- for d:=0 to cur_length-1 do
- begin {|print| gives up if passed |str_ptr|, so do it by hand.}
- print(so(str_pool[str_start(str_ptr)+d])); {N.B.: not |print_char|}
- end;
- print(")...");
- if shellenabledp then
- begin str_room(1); append_char(0); {Append a null byte to the expansion.}
- clobbered:=false;
- for d:=0 to cur_length-1 do {Convert to external character set.}
- begin
- str_pool[str_start(str_ptr)+d]:=xchr[str_pool[str_start(str_ptr)+d]];
- if (str_pool[str_start(str_ptr)+d]=null_code)
- and (d<cur_length-1) then clobbered:=true;
- {minimal checking: NUL not allowed in argument string of |system|()}
- end;
- if clobbered then print("clobbered")
- else begin {We have the command. See if we're allowed to execute it,
- and report in the log. We don't check the actual exit status of
- the command, or do anything with the output.}
- for d:=0 to cur_length-1 do {Convert to external character set.}
- begin
- outside_string_array[d]:=xchr[str_pool[str_start(str_ptr)+d]];
- end;
- outside_string_array[cur_length]:=null_code;
- runsystem_ret := runsystem(stringcast(outside_string_array));
- if runsystem_ret = -1 then print("quotation error in system command")
- else if runsystem_ret = 0 then print("disabled (restricted)")
- else if runsystem_ret = 1 then print("executed")
- else if runsystem_ret = 2 then print("executed (allowed)")
- end;
- end else begin
- print("disabled"); {|shellenabledp| false}
- end;
- print_char("."); print_nl(""); print_ln;
- pool_ptr:=str_start(str_ptr); {erase the string}
-end;
-selector:=old_setting;
-@z
-
-@x [53.1373] Need new local.
-procedure out_what(@!p:pointer);
-var j:small_number; {write stream number}
-@y
-procedure out_what(@!p:pointer);
-var j:small_number; {write stream number}
- @!old_setting:0..max_selector;
-@z
-
-@x [53.1374] Disallow certain \openout filenames, and log results.
- while not a_open_out(write_file[j]) do
- prompt_file_name("output file name",".tex");
- write_open[j]:=true;
-@y
- while not a_open_out(write_file[j])
- or not open_out_name_ok(name_of_file+1) do
- prompt_file_name("output file name",".tex");
- write_open[j]:=true;
- {If on first line of input, log file is not ready yet, so don't log.}
- if log_opened then begin
- old_setting:=selector;
- if (tracing_online<=0) then
- selector:=log_only {Show what we're doing in the log file.}
- else selector:=term_and_log; {Show what we're doing.}
- print_nl("\openout");
- print_int(j);
- print(" = `");
- print_file_name(cur_name,cur_area,cur_ext);
- print("'."); print_nl(""); print_ln;
- selector:=old_setting;
- end;
-@z
-
-@x [54.1376] l.24903 - Add editor-switch variables to globals.
-@* \[54] System-dependent changes.
-@y
-@* \[54/web2c] System-dependent changes for Web2c.
-Here are extra variables for Web2c. (This numbering of the
-system-dependent section allows easy integration of Web2c and e-\TeX, etc.)
-@^<system dependencies@>
-
-@<Glob...@>=
-@!edit_name_start: pool_pointer; {where the filename to switch to starts}
-@!edit_name_length,@!edit_line: integer; {what line to start editing at}
-@!ipc_on: cinttype; {level of IPC action, 0 for none [default]}
-@!stop_at_space: boolean; {whether |more_name| returns false for space}
-
-@ The |edit_name_start| will be set to point into |str_pool| somewhere after
-its beginning if \TeX\ is supposed to switch to an editor on exit.
-
-@<Set init...@>=
-edit_name_start:=0;
-stop_at_space:=true;
-
-@ These are used when we regenerate the representation of the first 256
-strings.
-
-@<Global...@> =
-@!save_str_ptr: str_number;
-@!save_pool_ptr: pool_pointer;
-@!shellenabledp: cinttype;
-@!restrictedshell: cinttype;
-@!output_comment: ^char;
-@!k,l: 0..65535; {used by `Make the first 256 strings', etc.}
-
-@ When debugging a macro package, it can be useful to see the exact
-control sequence names in the format file. For example, if ten new
-csnames appear, it's nice to know what they are, to help pinpoint where
-they came from. (This isn't a truly ``basic'' printing procedure, but
-that's a convenient module in which to put it.)
-
-@<Basic printing procedures@> =
-procedure print_csnames (hstart:integer; hfinish:integer);
-var c,h:integer;
-begin
- write_ln(stderr, 'fmtdebug:csnames from ', hstart, ' to ', hfinish, ':');
- for h := hstart to hfinish do begin
- if newtext(h) > 0 then begin {if have anything at this position}
- for c := str_start(newtext(h)) to str_start(newtext(h) + 1) - 1
- do begin
- put_byte(str_pool[c], stderr); {print the characters}
- end;
- write_ln(stderr, '|');
- end;
- end;
-end;
-
-@ Are we printing extra info as we read the format file?
-
-@<Glob...@> =
-@!debug_format_file: boolean;
-
-
-@ A helper for printing file:line:error style messages. Look for a
-filename in |full_source_filename_stack|, and if we fail to find
-one fall back on the non-file:line:error style.
-
-@<Basic print...@>=
-procedure print_file_line;
-var level: 0..max_in_open;
-begin
- level:=in_open;
- while (level>0) and (full_source_filename_stack[level]=0) do
- decr(level);
- if level=0 then
- print_nl("! ")
- else begin
- print_nl (""); print (full_source_filename_stack[level]); print (":");
- if level=in_open then print_int (line)
- else print_int (line_stack[index+1-(in_open-level)]);
- print (": ");
- end;
-end;
-
-@ To be able to determine whether \.{\\write18} is enabled from within
-\TeX\ we also implement \.{\\eof18}. We sort of cheat by having an
-additional route |scan_four_bit_int_or_18| which is the same as
-|scan_four_bit_int| except it also accepts the value 18.
-
-@<Declare procedures that scan restricted classes of integers@>=
-procedure scan_four_bit_int_or_18;
-begin scan_int;
-if (cur_val<0)or((cur_val>15)and(cur_val<>18)) then
- begin print_err("Bad number");
-@.Bad number@>
- help2("Since I expected to read a number between 0 and 15,")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-
-@* \[54/web2c-string] The string recycling routines. \TeX{} uses 2
-upto 4 {\it new\/} strings when scanning a filename in an \.{\\input},
-\.{\\openin}, or \.{\\openout} operation. These strings are normally
-lost because the reference to them are not saved after finishing the
-operation. |search_string| searches through the string pool for the
-given string and returns either 0 or the found string number.
-
-@<Declare additional routines for string recycling@>=
-function search_string(@!search:str_number):str_number;
-label found;
-var result: str_number;
-@!s: str_number; {running index}
-@!len: integer; {length of searched string}
-begin result:=0; len:=length(search);
-if len=0 then {trivial case}
- begin result:=""; goto found;
- end
-else begin s:=search-1; {start search with newest string below |s|; |search>1|!}
- while s>65535 do {first 65536 strings depend on implementation!!}
- begin if length(s)=len then
- if str_eq_str(s,search) then
- begin result:=s; goto found;
- end;
- decr(s);
- end;
- end;
-found:search_string:=result;
-end;
-
-@ The following routine is a variant of |make_string|. It searches
-the whole string pool for a string equal to the string currently built
-and returns a found string. Otherwise a new string is created and
-returned. Be cautious, you can not apply |flush_string| to a replaced
-string!
-
-@<Declare additional routines for string recycling@>=
-function slow_make_string : str_number;
-label exit;
-var s: str_number; {result of |search_string|}
-@!t: str_number; {new string}
-begin t:=make_string; s:=search_string(t);
-if s>0 then
- begin flush_string; slow_make_string:=s; return;
- end;
-slow_make_string:=t;
-exit:end;
-
-
-@* \[54] System-dependent changes.
-@z
diff --git a/Build/source/texk/web2c/omegadir/comchar.ch b/Build/source/texk/web2c/omegadir/comchar.ch
deleted file mode 100644
index e9453955180..00000000000
--- a/Build/source/texk/web2c/omegadir/comchar.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comchar.ch: Local adaptations for file omchar.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comdir.ch b/Build/source/texk/web2c/omegadir/comdir.ch
deleted file mode 100644
index b82a1016fd3..00000000000
--- a/Build/source/texk/web2c/omegadir/comdir.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comdir.ch: Local adaptations for file omdir.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comfi.ch b/Build/source/texk/web2c/omegadir/comfi.ch
deleted file mode 100644
index bb554766295..00000000000
--- a/Build/source/texk/web2c/omegadir/comfi.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comfi.ch: Local adapatations for file omfi.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comfilter.ch b/Build/source/texk/web2c/omegadir/comfilter.ch
deleted file mode 100644
index 64499611753..00000000000
--- a/Build/source/texk/web2c/omegadir/comfilter.ch
+++ /dev/null
@@ -1,123 +0,0 @@
-% comfilter.ch: Local adaptations for file omfilter.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x
-@!inf_ocp_list_size = 1000;
-@y
-@!inf_ocp_list_size = 1000;
-@!sup_ocp_buf_size = 1000000;
-@!inf_ocp_buf_size = 1000;
-@!sup_ocp_stack_size = 1000000;
-@!inf_ocp_stack_size = 1000;
-@z
-%---------------------------------------
-@x
-@!ocp_list_size:integer;
-@y
-@!ocp_list_size:integer;
-@!ocp_buf_size:integer;
-@!ocp_stack_size:integer;
-@z
-%---------------------------------------
-@x
-for k:=0 to active_max_ptr-1 do dump_wd(active_info[k]);
-print_ln; print_int(active_max_ptr); print(" words of active ocps");
-
-@ @<Undump the active ocp information@>=
-undump_size(0)(active_mem_size)('active start point')(active_min_ptr);
-undump_size(0)(active_mem_size)('active mem size')(active_max_ptr);
-for k:=0 to active_max_ptr-1 do undump_wd(active_info[k]);
-@y
-dump_things(active_info[0], active_max_ptr);
-print_ln; print_int(active_max_ptr); print(" words of active ocps");
-
-@ @<Undump the active ocp information@>=
-undump_size(0)(active_mem_size)('active start point')(active_min_ptr);
-undump_size(0)(active_mem_size)('active mem size')(active_max_ptr);
-undump_things(active_info[0], active_max_ptr);
-@z
-%---------------------------------------
-@x
- setup_bound_var(1000)('ocp_list_size')(ocp_list_size);
-@y
- setup_bound_var(1000)('ocp_list_size')(ocp_list_size);
- setup_bound_var(1000)('ocp_buf_size')(ocp_buf_size);
- setup_bound_var(1000)('ocp_stack_size')(ocp_stack_size);
-@z
-%---------------------------------------
-@x
- ocp_list_list:=xmalloc_array (ocp_list_index, ocp_list_size);
-@y
- ocp_list_list:=xmalloc_array (ocp_list_index, ocp_list_size);
- otp_init_input_buf:=xmalloc_array (quarterword, ocp_buf_size);
- otp_input_buf:=xmalloc_array (quarterword, ocp_buf_size);
- otp_output_buf:=xmalloc_array (quarterword, ocp_buf_size);
- otp_stack_buf:=xmalloc_array (quarterword, ocp_stack_size);
- otp_calcs:=xmalloc_array (halfword, ocp_stack_size);
- otp_states:=xmalloc_array (halfword, ocp_stack_size);
-@z
-%---------------------------------------
-@x
-@!otp_init_input_buf:array[0..20000] of quarterword;
-
-@!otp_input_start:halfword;
-@!otp_input_last:halfword;
-@!otp_input_end:halfword;
-@!otp_input_buf:array[0..20000] of quarterword;
-
-@!otp_output_end:halfword;
-@!otp_output_buf:array[0..20000] of quarterword;
-
-@!otp_stack_used:halfword;
-@!otp_stack_last:halfword;
-@!otp_stack_new:halfword;
-@!otp_stack_buf:array[0..1000] of quarterword;
-
-@!otp_pc:halfword;
-
-@!otp_calc_ptr:halfword;
-@!otp_calcs:array[0..1000] of halfword;
-@!otp_state_ptr:halfword;
-@!otp_states:array[0..1000] of halfword;
-@y
-@!otp_init_input_buf:^quarterword;
-
-@!otp_input_start:halfword;
-@!otp_input_last:halfword;
-@!otp_input_end:halfword;
-@!otp_input_buf:^quarterword;
-
-@!otp_output_end:halfword;
-@!otp_output_buf:^quarterword;
-
-@!otp_stack_used:halfword;
-@!otp_stack_last:halfword;
-@!otp_stack_new:halfword;
-@!otp_stack_buf:^quarterword;
-
-@!otp_pc:halfword;
-
-@!otp_calc_ptr:halfword;
-@!otp_calcs:^halfword;
-@!otp_state_ptr:halfword;
-@!otp_states:^halfword;
-@z
diff --git a/Build/source/texk/web2c/omegadir/comfont.ch b/Build/source/texk/web2c/omegadir/comfont.ch
deleted file mode 100644
index 7d490e54985..00000000000
--- a/Build/source/texk/web2c/omegadir/comfont.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comfonts.ch: Local adaptations for file omfonts.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comnode.ch b/Build/source/texk/web2c/omegadir/comnode.ch
deleted file mode 100644
index 9e2faf5f55b..00000000000
--- a/Build/source/texk/web2c/omegadir/comnode.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comnode.ch: Local adaptations for file omnode.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comocp.ch b/Build/source/texk/web2c/omegadir/comocp.ch
deleted file mode 100644
index 0c7056cd610..00000000000
--- a/Build/source/texk/web2c/omegadir/comocp.ch
+++ /dev/null
@@ -1,141 +0,0 @@
-% comcop.ch: Local adaptations for file omocp.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x
-@!inf_hyph_size = iinf_hyphen_size; {Must be not less than |hyph_prime|!}
-@y
-@!inf_hyph_size = iinf_hyphen_size; {Must be not less than |hyph_prime|!}
-@!sup_ocp_list_size = 1000000;
-@!inf_ocp_list_size = 1000;
-@z
-%---------------------------------------
-@x
-@!max_print_line:integer;
- {width of longest text lines output; should be at least 60}
-@y
-@!max_print_line:integer;
- {width of longest text lines output; should be at least 60}
-@!ocp_list_size:integer;
-@z
-%---------------------------------------
-@x
-if not b_open_in(ocp_file) then ocp_abort("opening file");
-@y
-if not ocp_open_in(ocp_file) then ocp_abort("opening file");
-@z
-%---------------------------------------
-@x
-@d ocpget==get(ocp_file)
-@d ocpbyte==ocp_file^
-@y
-@d ocpget==ocp_temp:=getc(ocp_file)
-@d ocpbyte==ocp_temp
-@z
-%---------------------------------------
-@x
-@!ocp_list_info:array[ocp_list_index] of memory_word;
- {the big collection of ocp list data}
-@!ocp_listmem_ptr:ocp_list_index; {first unused word of |ocp_list_info|}
-@!ocp_listmem_run_ptr:ocp_list_index; {temp unused word of |ocp_list_info|}
-@!ocp_lstack_info:array[ocp_lstack_index] of memory_word;
- {the big collection of ocp lstack data}
-@!ocp_lstackmem_ptr:ocp_lstack_index; {first unused word of |ocp_lstack_info|}
-@!ocp_lstackmem_run_ptr:ocp_lstack_index; {temp unused word of |ocp_lstack_info|}
-@!ocp_list_ptr:internal_ocp_list_number; {largest internal ocp list number in use}
-@!ocp_list_list:array[internal_ocp_list_number] of ocp_list_index;
-@y
-@!ocp_list_info:^memory_word;
- {the big collection of ocp list data}
-@!ocp_listmem_ptr:ocp_list_index; {first unused word of |ocp_list_info|}
-@!ocp_listmem_run_ptr:ocp_list_index; {temp unused word of |ocp_list_info|}
-@!ocp_lstack_info:^memory_word;
- {the big collection of ocp lstack data}
-@!ocp_lstackmem_ptr:ocp_lstack_index; {first unused word of |ocp_lstack_info|}
-@!ocp_lstackmem_run_ptr:ocp_lstack_index; {temp unused word of |ocp_lstack_info|}
-@!ocp_list_ptr:internal_ocp_list_number; {largest internal ocp list number in use}
-@!ocp_list_list:^ocp_list_index;
-@z
-%---------------------------------------
-@x
-@ @<Dump the ocp list information@>=
-dump_int(ocp_listmem_ptr);
-for k:=0 to ocp_listmem_ptr-1 do dump_wd(ocp_list_info[k]);
-dump_int(ocp_list_ptr);
-for k:=null_ocp_list to ocp_list_ptr do begin
- dump_int(ocp_list_list[k]);
- print_nl("\ocplist");
- print_esc(ocp_list_id_text(k));
- print_char("=");
- print_ocp_list(ocp_list_list[k]);
- end;
-dump_int(ocp_lstackmem_ptr);
-for k:=0 to ocp_lstackmem_ptr-1 do dump_wd(ocp_lstack_info[k])
-@y
-@ @<Dump the ocp list information@>=
-dump_int(ocp_listmem_ptr);
-dump_things(ocp_list_info[0], ocp_listmem_ptr);
-dump_int(ocp_list_ptr);
-dump_things(ocp_list_list[null_ocp_list], ocp_list_ptr+1-null_ocp_list);
-for k:=null_ocp_list to ocp_list_ptr do begin
- print_nl("\ocplist");
- print_esc(ocp_list_id_text(k));
- print_char("=");
- print_ocp_list(ocp_list_list[k]);
- end;
-dump_int(ocp_lstackmem_ptr);
-dump_things(ocp_lstack_info[0], ocp_lstackmem_ptr)
-@z
-%---------------------------------------
-@x
-@ @<Undump the ocp list information@>=
-undump_size(1)(1000000)('ocp list mem size')(ocp_listmem_ptr);
-for k:=0 to ocp_listmem_ptr-1 do undump_wd(ocp_list_info[k]);
-undump_size(ocp_list_base)(ocp_list_biggest)('ocp list max')(ocp_list_ptr);
-for k:=null_ocp_list to ocp_list_ptr do
- undump_int(ocp_list_list[k]);
-undump_size(1)(1000000)('ocp lstack mem size')(ocp_lstackmem_ptr);
-for k:=0 to ocp_lstackmem_ptr-1 do undump_wd(ocp_lstack_info[k])
-@y
-@ @<Undump the ocp list information@>=
-undump_size(1)(1000000)('ocp list mem size')(ocp_listmem_ptr);
-undump_things(ocp_list_info[0], ocp_listmem_ptr);
-undump_size(0)(1000000)('ocp list max')(ocp_list_ptr);
-undump_things(ocp_list_list[null_ocp_list], ocp_list_ptr+1-null_ocp_list);
-undump_size(0)(1000000)('ocp lstack mem size')(ocp_lstackmem_ptr);
-undump_things(ocp_lstack_info[0], ocp_lstackmem_ptr)
-@z
-%---------------------------------------
-@x
- setup_bound_var (79)('max_print_line')(max_print_line);
-@y
- setup_bound_var (79)('max_print_line')(max_print_line);
- setup_bound_var(1000)('ocp_list_size')(ocp_list_size);
-@z
-%---------------------------------------
-@x
- hyph_link:=xmalloc_array (hyph_pointer, hyph_size);
-@y
- hyph_link:=xmalloc_array (hyph_pointer, hyph_size);
- ocp_list_info:=xmalloc_array (memory_word, ocp_list_size);
- ocp_lstack_info:=xmalloc_array (memory_word, ocp_list_size);
- ocp_list_list:=xmalloc_array (ocp_list_index, ocp_list_size);
-@z
diff --git a/Build/source/texk/web2c/omegadir/compar.ch b/Build/source/texk/web2c/omegadir/compar.ch
deleted file mode 100644
index ac5baddf9b4..00000000000
--- a/Build/source/texk/web2c/omegadir/compar.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% Local adaptations for file ompar.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comsrcspec.ch b/Build/source/texk/web2c/omegadir/comsrcspec.ch
deleted file mode 100644
index 4656f2ce35c..00000000000
--- a/Build/source/texk/web2c/omegadir/comsrcspec.ch
+++ /dev/null
@@ -1,353 +0,0 @@
-@x
-@!dvi_buf_size:integer; {size of the output buffer; must be a multiple of 8}
-@!quoted_filename:boolean; {current filename is quoted}
-@y
-@!dvi_buf_size:integer; {size of the output buffer; must be a multiple of 8}
-@!quoted_filename:boolean; {current filename is quoted}
-@!special_loc:pointer;
-@!special_token:halfword;
-
-@!parse_first_line_p:cinttype; {parse the first line for options}
-@!file_line_error_style_p:cinttype; {format messages as file:line:error}
-@!halt_on_error_p:boolean; {stop at first error}
-
-@!src_specials_p : boolean;
-@!insert_src_special_auto : boolean;
-@!insert_src_special_every_par : boolean;
-@!insert_src_special_every_parend : boolean;
-@!insert_src_special_every_cr : boolean;
-@!insert_src_special_every_math : boolean;
-@!insert_src_special_every_hbox : boolean;
-@!insert_src_special_every_vbox : boolean;
-@!insert_src_special_every_display : boolean;
-@z
-
-@x
-wterm(banner);
-wterm(version_string);
-if format_ident>0 then slow_print(format_ident);
-print_ln;
-@y
-if src_specials_p or file_line_error_style_p or parse_first_line_p then
- wterm(banner_k)
-else
- wterm(banner);
-wterm(version_string);
-if format_ident>0 then slow_print(format_ident);
-print_ln;
-if shellenabledp then begin
- wterm(' ');
- if restrictedshell then begin
- wterm('restricted ');
- end;
- wterm_ln('\write18 enabled.');
-end;
-if src_specials_p then begin
- wterm_ln(' Source specials enabled.')
-end;
-if file_line_error_style_p then begin
- wterm_ln(' file:line:error style messages enabled.')
-end;
-if parse_first_line_p then begin
- wterm_ln(' %&-line parsing enabled.')
-end;
-@z
-
-@x
- print_nl("! "); print(#);
-@y
- if file_line_error_style_p then print_file_line
- else print_nl("! ");
- print(#);
-@z
-
-@x
-print_char("."); show_context;
-@y
-print_char("."); show_context;
-if (halt_on_error_p) then begin
- history:=fatal_error_stop; jump_out;
-end;
-@z
-
-@x
-@!in_open : 0..max_in_open; {the number of lines in the buffer, less one}
-@!open_parens : 0..max_in_open; {the number of open text files}
-@!input_file : ^alpha_file;
-@!input_file_mode : ^halfword;
-@!input_file_translation : ^halfword;
-@!line : integer; {current line number in the current source file}
-@!line_stack : ^integer;
-@y
-@!in_open : 0..max_in_open; {the number of lines in the buffer, less one}
-@!open_parens : 0..max_in_open; {the number of open text files}
-@!input_file : ^alpha_file;
-@!input_file_mode : ^halfword;
-@!input_file_translation : ^halfword;
-@!line : integer; {current line number in the current source file}
-@!line_stack : ^integer;
-@!source_filename_stack : ^str_number;
-@!full_source_filename_stack : ^str_number;
-@z
-
-@x
-begin wlog(banner);
-wlog(version_string);
-@y
-begin if src_specials_p or file_line_error_style_p or parse_first_line_p
-then
- wlog(banner_k)
-else
- wlog(banner);
-wlog(version_string);
-if shellenabledp then begin
- wlog_cr;
- wlog(' ');
- if restrictedshell then begin
- wlog('restricted ');
- end;
- wlog('\write18 enabled.')
-end;
-if src_specials_p then begin
- wlog_cr;
- wlog(' Source specials enabled.')
-end;
-if file_line_error_style_p then begin
- wlog_cr;
- wlog(' file:line:error style messages enabled.')
-end;
-if parse_first_line_p then begin
- wlog_cr;
- wlog(' %&-line parsing enabled.');
-end;
-@z
-
-%% ** 537 ******************************************************************
-
-@x
-done: name:=a_make_name_string(cur_file);
-if name=str_ptr-1 then {we can try to conserve string pool space now}
- begin temp_str:=search_string(name);
- if temp_str>0 then
- begin name:=temp_str; flush_string;
- end;
- end;
-@y
-done: name:=a_make_name_string(cur_file);
-source_filename_stack[in_open]:=name;
-full_source_filename_stack[in_open]:=make_full_name_string;
-if name=str_ptr-1 then {we can try to conserve string pool space now}
- begin temp_str:=search_string(name);
- if temp_str>0 then
- begin name:=temp_str; flush_string;
- end;
- end;
-@z
-
-%%@x
-%%if term_offset+length(name)>max_print_line-2 then print_ln
-%%else if (term_offset>0)or(file_offset>0) then print_char(" ");
-%%print_char("("); incr(open_parens); slow_print(name); update_terminal;
-%%@y
-%%if term_offset+length(full_source_filename_stack[in_open])>max_print_line-2 then print_ln
-%%else if (term_offset>0)or(file_offset>0) then print_char(" ");
-%%print_char("("); incr(open_parens); slow_print(full_source_filename_stack[in_open]); update_terminal;
-%%@z
-
-%% ** 774 ******************************************************************
-
- @x
-if every_cr<>null then begin_token_list(every_cr,every_cr_text);
- @y
-if (insert_src_special_every_cr and head<>tail) then insert_src_special;
-if every_cr<>null then begin_token_list(every_cr,every_cr_text);
- @z
-
-%% ** 799 ******************************************************************
-
- @x
-if every_cr<>null then begin_token_list(every_cr,every_cr_text);
- @y
-if (insert_src_special_every_cr) then insert_src_special;
-if every_cr<>null then begin_token_list(every_cr,every_cr_text);
- @z
-
-%% ** 1034 ******************************************************************
-
-@x
-@<Append character |cur_chr|...@>=
-adjust_space_factor;@/
-@y
-@<Append character |cur_chr|...@>=
-if ((head=tail) and (mode>0)) then begin
- if (insert_src_special_auto) then append_src_special;
-end;
-adjust_space_factor;@/
-@z
-
-%% ** 1083 ******************************************************************
-
- @x
- if every_vbox<>null then begin_token_list(every_vbox,every_vbox_text);
- @y
- if (insert_src_special_every_vbox) then insert_src_special;
- if every_vbox<>null then begin_token_list(every_vbox,every_vbox_text);
- @z
-
- @x
- if every_hbox<>null then begin_token_list(every_hbox,every_hbox_text);
- @y
- if (insert_src_special_every_hbox) then insert_src_special;
- if every_hbox<>null then begin_token_list(every_hbox,every_hbox_text);
- @z
-
-%% ** 1091 ******************************************************************
-% Disabled, prevents merge with web2c's tex.ch.
- @x
-if indented then begin
- p:=new_null_box; box_dir(p):=par_direction;
- width(p):=par_indent;@+
- tail_append(p);
- end;
- @y
-if indented then begin
- p:=new_null_box; box_dir(p):=par_direction;
- width(p):=par_indent;@+
- tail_append(p);
- if (insert_src_special_every_par) then insert_src_special;@+
- end;
- @z
-
-%% insert source special at par because this is disabled above
-@x
-if indented then
- begin tail:=new_null_box; link(head):=tail; width(tail):=par_indent;@+
- box_dir(tail):=info(par_dir_stack);
- change_dir(tail,info(par_dir_stack));
- end;
-@y
-if indented then
- begin tail:=new_null_box; link(head):=tail; width(tail):=par_indent;@+
- box_dir(tail):=info(par_dir_stack);
- change_dir(tail,info(par_dir_stack));
- if (insert_src_special_every_par) then insert_src_special;@+
- end;
-@z
-
-%% ** 1096 ******************************************************************
-
- @x fixme: etex conflict
- else line_break(widow_penalty);
- @y
- else begin
- if (insert_src_special_every_parend) then insert_src_special;
- line_break(widow_penalty);
- end;
- @z
-
-%% ** 1139 ******************************************************************
-
-@x
-if every_math<>null then begin_token_list(every_math,every_math_text);
-@y
-if (insert_src_special_every_math) then insert_src_special;
-if every_math<>null then begin_token_list(every_math,every_math_text);
-@z
-
-%% ** 1145 ******************************************************************
-
- @x
-if every_display<>null then begin_token_list(every_display,every_display_text);
- @y
-if (insert_src_special_every_display) then append_src_special;
-if every_display<>null then begin_token_list(every_display,every_display_text);
- @z
-
-%% ** 1167 ******************************************************************
-
-@x
- if every_vbox<>null then begin_token_list(every_vbox,every_vbox_text);
-@y
- if (insert_src_special_every_vbox) then insert_src_special;
- if every_vbox<>null then begin_token_list(every_vbox,every_vbox_text);
-@z
-
-%% ** 1313 ******************************************************************
-
-@x
-dump_int(par_loc); dump_int(write_loc);@/
-@y
-dump_int(par_loc); dump_int(write_loc); dump_int(special_loc);@/
-@z
-
-%% ** 1314 ******************************************************************
-
-@x
-undump(hash_base)(frozen_control_sequence)(write_loc);@/
-@y
-undump(hash_base)(frozen_control_sequence)(write_loc);@/
-undump(hash_base)(frozen_control_sequence)(special_loc);
-special_token:=cs_token_flag+special_loc;@/
-@z
-
-@x
- line_stack:=xmalloc_array (integer, max_in_open);
-@y
- line_stack:=xmalloc_array (integer, max_in_open);
- source_filename_stack:=xmalloc_array (str_number, max_in_open);
- full_source_filename_stack:=xmalloc_array (str_number, max_in_open);
-@z
-
-%% ** 1344 ******************************************************************
-
-@x
-primitive("special",extension,special_node);@/
-@y
-primitive("special",extension,special_node);@/
-special_loc:=cur_val; special_token:=cs_token_flag+special_loc;@/
-@z
-
-%% ** 1379 ******************************************************************
-
-@x
-@* \[55] Index.
-@y
-
-@ @<Declare action procedures for use by |main_control|@>=
-
-procedure insert_src_special;
-var toklist, p, q : pointer;
-begin
- if (source_filename_stack[in_open] > 0 and is_new_source (source_filename_stack[in_open], line)) then begin
- toklist := get_avail;
- p := toklist;
- info(p) := special_token;
- link(p) := get_avail; p := link(p);
- info(p) := left_brace_token+"{";
- q := str_toks (make_src_special (source_filename_stack[in_open], line));
- link(p) := link(temp_head);
- p := q;
- link(p) := get_avail; p := link(p);
- info(p) := right_brace_token+"}";
- ins_list (toklist);
- remember_source_info (source_filename_stack[in_open], line);
- end;
-end;
-
-procedure append_src_special;
-var q : pointer;
-begin
- if (source_filename_stack[in_open] > 0 and is_new_source (source_filename_stack[in_open], line)) then begin
- new_whatsit (special_node, write_node_size);
- write_stream(tail) := null;
- def_ref := get_avail;
- token_ref_count(def_ref) := null;
- q := str_toks (make_src_special (source_filename_stack[in_open], line));
- link(def_ref) := link(temp_head);
- write_tokens(tail) := def_ref;
- remember_source_info (source_filename_stack[in_open], line);
- end;
-end;
-
-@* \[55] Index.
-@z
diff --git a/Build/source/texk/web2c/omegadir/comstr.ch b/Build/source/texk/web2c/omegadir/comstr.ch
deleted file mode 100644
index 95c089816b5..00000000000
--- a/Build/source/texk/web2c/omegadir/comstr.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comstr.ch: Local adaptations for file omstr.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comtrans.ch b/Build/source/texk/web2c/omegadir/comtrans.ch
deleted file mode 100644
index 5f03ceac5f4..00000000000
--- a/Build/source/texk/web2c/omegadir/comtrans.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comtrans.ch: Local adaptations for file omtrans.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/comxml.ch b/Build/source/texk/web2c/omegadir/comxml.ch
deleted file mode 100644
index 6c68ae40e33..00000000000
--- a/Build/source/texk/web2c/omegadir/comxml.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% comxml.ch: Local adaptations for file omxml.ch
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/om16bit.ch b/Build/source/texk/web2c/omegadir/om16bit.ch
deleted file mode 100644
index eb10ed85e8a..00000000000
--- a/Build/source/texk/web2c/omegadir/om16bit.ch
+++ /dev/null
@@ -1,2826 +0,0 @@
-% om16bit.ch: Basic changes to TeX data structures allowing all
-% 8-bit entities to become 32-bit entities, in particular
-% characters and glyphs.
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-@x limbo l.1 - Omega
-% This program is copyright (C) 1982 by D. E. Knuth; all rights are reserved.
-@y
-% This program is copyright
-% (C) 1994--2000 by John Plaice and Yannis Haralambous.
-% It is designed to be a change file for D. E. Knuth's TeX.
-%
-% This program is copyright (C) 1982 by D. E. Knuth.
-@z
-%---------------------------------------
-@x limbo l.80
-\def\title{\TeX82}
-@y
-\def\title{$\Omega$ (OMEGA)}
-@z
-%---------------------------------------
-@x [1] m.1 l.90 - Omega
-This is \TeX, a document compiler intended to produce typesetting of high
-quality.
-The \PASCAL\ program that follows is the definition of \TeX82, a standard
-@:PASCAL}{\PASCAL@>
-@!@:TeX82}{\TeX82@>
-@y
-This is $\Omega$, a document compiler intended to simplify high-quality
-typesetting for many of the world's languages. It is an extension
-of D. E. Knuth's \TeX, which was designed essentially for the
-typesetting of languages using the Latin alphabet.
-
-The $\Omega$ system loosens many of the restrictions imposed by~\TeX:
-register numbers are no longer limited to 8~bits; fonts may have more
-than 256~characters; more than 256~fonts may be used; etc. In addition,
-$\Omega$ allows much more complex ligature mechanisms between characters,
-thereby simplifying the typesetting of alphabets that have preserved
-their calligraphic traditions.
-
-The \PASCAL\ program that follows is a modification of the definition of \TeX82,
-a standard @:PASCAL}{\PASCAL@> @!@:TeX82}{\TeX82@>
-@z
-%---------------------------------------
-@x [1] m.1 l.97 - Omega
-will be obtainable on a great variety of computers.
-
-@y
-will be obtainable on a great variety of computers.
-
-As little as possible is changed in this document. This means that
-unless the contrary is explicitly stated, references to \TeX\ in the
-documentation are equally applicable to~$\Omega$. References to `the
-author' in the documentation are to D. E. Knuth.
-
-@z
-%---------------------------------------
-@x [1] m.2 l.187 - Omega
-@d banner=='This is TeX, Version 3.1415926' {printed when \TeX\ starts}
-@y
-@d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
-@z
-%---------------------------------------
-@x [1] m.4 l.243
-program TEX; {all file names are defined dynamically}
-@y
-program OMEGA; {all file names are defined dynamically}
-@z
-%---------------------------------------
-@x [1] m.11 l.392 - Omega
-@!font_max=75; {maximum internal font number; must not exceed |max_quarterword|
- and must be at most |font_base+256|}
-@!font_mem_size=20000; {number of words of |font_info| for all fonts}
-@y
-@!font_max=65535; {maximum internal font number; must be at most |font_biggest|}
-@z
-%---------------------------------------
-@x [1] m.11 l.412 - Omega
-@!pool_name='TeXformats:TEX.POOL ';
-@y
-@!pool_name='TeXformats:OMEGA.POOL ';
-@z
-%---------------------------------------
-@x [1] m.12 l.437 - Omega
-@d hash_size=2100 {maximum number of control sequences; it should be at most
- about |(mem_max-mem_min)/10|}
-@d hash_prime=1777 {a prime number equal to about 85\pct! of |hash_size|}
-@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
-@y
-@d hash_size=65536 {maximum number of control sequences; it should be at most
- about |(mem_max-mem_min)/10|}
-@d hash_prime=55711 {a prime number equal to about 85\pct! of |hash_size|}
-@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
-@d biggest_char=65535 {the largest allowed character number;
- must be |<=max_quarterword|}
-@d too_big_char=65536 {|biggest_char+1|}
-@d special_char=65537 {|biggest_char+2|}
-@d number_chars=65536 {|biggest_char+1|}
-@d biggest_reg=65535 {the largest allowed register number;
- must be |<=max_quarterword|}
-@d number_regs=65536 {|biggest_reg+1|}
-@d font_biggest=65535 {the real biggest font}
-@d number_fonts=font_biggest-font_base+2
-@d number_math_fonts=768
-@d math_font_biggest=767
-@d text_size=0 {size code for the largest size in a family}
-@d script_size=256 {size code for the medium size in a family}
-@d script_script_size=512 {size code for the smallest size in a family}
-@d biggest_lang=255
-@d too_big_lang=256
-@z
-%---------------------------------------
-@x [8] m.110 l.2355 - Omega
-In order to make efficient use of storage space, \TeX\ bases its major data
-structures on a |memory_word|, which contains either a (signed) integer,
-possibly scaled, or a (signed) |glue_ratio|, or a small number of
-fields that are one half or one quarter of the size used for storing
-integers.
-
-@y
-In order to make efficient use of storage space, \TeX\ bases its major data
-structures on a |memory_word|, which contains either a (signed) integer,
-possibly scaled, or a (signed) |glue_ratio|, or a small number of
-fields that are one half or one quarter of the size used for storing
-integers.
-
-That is the description for \TeX. For $\Omega$, we are going to keep
-the same terminology, except that |quarterword| is going to refer to
-16~bits, and |halfword| is going to refer to 32~bits. So, in fact,
-a |memory_word| will take 64 bits, and, on a 64-bit machine, will run
-smaller than \TeX\ will!
-
-@z
-%---------------------------------------
-@x [8] m.110 l.2378 - Omega
-Since we are assuming 32-bit integers, a halfword must contain at least
-16 bits, and a quarterword must contain at least 8 bits.
-@^system dependencies@>
-But it doesn't hurt to have more bits; for example, with enough 36-bit
-words you might be able to have |mem_max| as large as 262142, which is
-eight times as much memory as anybody had during the first four years of
-\TeX's existence.
-
-N.B.: Valuable memory space will be dreadfully wasted unless \TeX\ is compiled
-by a \PASCAL\ that packs all of the |memory_word| variants into
-the space of a single integer. This means, for example, that |glue_ratio|
-words should be |short_real| instead of |real| on some computers. Some
-\PASCAL\ compilers will pack an integer whose subrange is `|0..255|' into
-an eight-bit field, but others insist on allocating space for an additional
-sign bit; on such systems you can get 256 values into a quarterword only
-if the subrange is `|-128..127|'.
-
-@y
-@z
-%---------------------------------------
-@x [8] m.110 l.2406 - Omega
-@d max_quarterword=255 {largest allowable value in a |quarterword|}
-@d min_halfword==0 {smallest allowable value in a |halfword|}
-@d max_halfword==65535 {largest allowable value in a |halfword|}
-@y
-@d max_quarterword=@"FFFF {largest allowable value in a |quarterword|}
-@d min_halfword=0 {smallest allowable value in a |halfword|}
-@d max_halfword=@"3FFFFFFF {largest allowable value in a |halfword|}
-@z
-%---------------------------------------
-@x [8] m.111 l.2416 - Omega
-if (min_quarterword>0)or(max_quarterword<127) then bad:=11;
-if (min_halfword>0)or(max_halfword<32767) then bad:=12;
-@y
-if (min_quarterword>0)or(max_quarterword<@"7FFF) then bad:=11;
-if (min_halfword>0)or(max_halfword<@"3FFFFFFF) then bad:=12;
-@z
-%---------------------------------------
-@x [8] m.111 l.2423 - Omega
-if font_max>font_base+256 then bad:=16;
-@y
-if font_max>font_base+@"10000 then bad:=16;
-@z
-%---------------------------------------
-@x [8] m.111 l.2426 - Omega
-if max_quarterword-min_quarterword<255 then bad:=19;
-@y
-if max_quarterword-min_quarterword<@"FFFF then bad:=19;
-@z
-%---------------------------------------
-@x [9] m.120 - Omega
-@ The function |get_avail| returns a pointer to a new one-word node whose
-|link| field is null. However, \TeX\ will halt if there is no more room left.
-@^inner loop@>
-
-If the available-space list is empty, i.e., if |avail=null|,
-we try first to increase |mem_end|. If that cannot be done, i.e., if
-|mem_end=mem_max|, we try to decrease |hi_mem_min|. If that cannot be
-done, i.e., if |hi_mem_min=lo_mem_max+1|, we have to quit.
-
-@p function get_avail : pointer; {single-word node allocation}
-var p:pointer; {the new node being got}
-begin p:=avail; {get top location in the |avail| stack}
-if p<>null then avail:=link(avail) {and pop it off}
-else if mem_end<mem_max then {or go into virgin territory}
- begin incr(mem_end); p:=mem_end;
- end
-else begin decr(hi_mem_min); p:=hi_mem_min;
- if hi_mem_min<=lo_mem_max then
- begin runaway; {if memory is exhausted, display possible runaway text}
- overflow("main memory size",mem_max+1-mem_min);
- {quit; all one-word nodes are busy}
-@:TeX capacity exceeded main memory size}{\quad main memory size@>
- end;
- end;
-link(p):=null; {provide an oft-desired initialization of the new node}
-@!stat incr(dyn_used);@+tats@;{maintain statistics}
-get_avail:=p;
-end;
-@y
-@ The function |get_avail| returns a pointer to a new one-word node whose
-|link| field is null. However, \TeX\ will halt if there is no more room left.
-@^inner loop@>
-
-If the available-space list is empty, i.e., if |avail=null|,
-we try first to increase |mem_end|. If that cannot be done, i.e., if
-|mem_end=mem_max|, we try to decrease |hi_mem_min|. If that cannot be
-done, i.e., if |hi_mem_min=lo_mem_max+1|, we have to quit.
-
-For Omega, we actually return a pointer to the first word,
-rather than the zeroth word.
-
-@p function get_avail : pointer; {single-word node allocation}
-var p:pointer; {the new node being got}
-begin p:=avail; {get top location in the |avail| stack}
-if p<>null then avail:=link(avail) {and pop it off}
-else if (mem_end+1)<mem_max then {or go into virgin territory}
- begin mem_end:=mem_end+2; p:=mem_end;
- link(p):=null; info(p):=null; incr(p);
- end
-else begin hi_mem_min:=hi_mem_min-2; p:=hi_mem_min;
- if hi_mem_min<=lo_mem_max then
- begin runaway; {if memory is exhausted, display possible runaway text}
- overflow("main memory size",mem_max+1-mem_min);
- {quit; all one-word nodes are busy}
-@:TeX capacity exceeded main memory size}{\quad main memory size@>
- end;
- end;
-link(p):=null; {provide an oft-desired initialization of the new node}
-@!stat incr(dyn_used);@+tats@;{maintain statistics}
-get_avail:=p;
-end;
-@z
-%---------------------------------------
-@x [9] m.121 - Omega
-@d free_avail(#)== {single-word node liberation}
- begin link(#):=avail; avail:=#;
- @!stat decr(dyn_used);@+tats@/
- end
-@y
-@d free_avail(#)== {single-word node liberation}
- begin link(#):=avail; avail:=#;
- link(#-1):=null; info(#-1):=null;
- @!stat decr(dyn_used);@+tats@/
- end
-@z
-%---------------------------------------
-@x [9] m.120 - Omega
-@d fast_get_avail(#)==@t@>@;@/
- begin #:=avail; {avoid |get_avail| if possible, to save time}
- if #=null then #:=get_avail
- else begin avail:=link(#); link(#):=null;
- @!stat incr(dyn_used);@+tats@/
- end;
- end
-@y
-@d fast_get_avail(#)==@t@>@;@/
- begin #:=avail; {avoid |get_avail| if possible, to save time}
- if #=null then #:=get_avail
- else begin avail:=link(#); link(#):=null;
- link(#-1):=null; info(#-1):=null;
- @!stat incr(dyn_used);@+tats@/
- end;
- end
-@z
-%---------------------------------------
-@x [10] m.125
-@ A call to |get_node| with argument |s| returns a pointer to a new node
-of size~|s|, which must be 2~or more. The |link| field of the first word
-of this new node is set to null. An overflow stop occurs if no suitable
-space exists.
-
-If |get_node| is called with $s=2^{30}$, it simply merges adjacent free
-areas and returns the value |max_halfword|.
-
-@p function get_node(@!s:integer):pointer; {variable-size node allocation}
-label found,exit,restart;
-var p:pointer; {the node currently under inspection}
-@!q:pointer; {the node physically after node |p|}
-@!r:integer; {the newly allocated node, or a candidate for this honor}
-@!t:integer; {temporary register}
-begin restart: p:=rover; {start at some free node in the ring}
-repeat @<Try to allocate within node |p| and its physical successors,
- and |goto found| if allocation was possible@>;
-@^inner loop@>
-p:=rlink(p); {move to the next node in the ring}
-until p=rover; {repeat until the whole list has been traversed}
-if s=@'10000000000 then
- begin get_node:=max_halfword; return;
- end;
-if lo_mem_max+2<hi_mem_min then if lo_mem_max+2<=mem_bot+max_halfword then
- @<Grow more variable-size memory and |goto restart|@>;
-overflow("main memory size",mem_max+1-mem_min);
- {sorry, nothing satisfactory is left}
-@:TeX capacity exceeded main memory size}{\quad main memory size@>
-found: link(r):=null; {this node is now nonempty}
-@!stat var_used:=var_used+s; {maintain usage statistics}
-tats@;@/
-get_node:=r;
-exit:end;
-@y
-@ A call to |get_node| with argument |s| returns a pointer to a new node
-of size~|s|, which must be 2~or more. The |link| field of the first word
-of this new node is set to null. An overflow stop occurs if no suitable
-space exists.
-
-If |get_node| is called with $s=2^{30}$, it simply merges adjacent free
-areas and returns the value |max_halfword|.
-
-@p function get_node(@!s:integer):pointer; {variable-size node allocation}
-label found,exit,restart;
-var p:pointer; {the node currently under inspection}
-@!q:pointer; {the node physically after node |p|}
-@!r:integer; {the newly allocated node, or a candidate for this honor}
-@!t:integer; {temporary register}
-begin
-if s<>@'10000000000 then incr(s);
-restart: p:=rover; {start at some free node in the ring}
-repeat @<Try to allocate within node |p| and its physical successors,
- and |goto found| if allocation was possible@>;
-@^inner loop@>
-p:=rlink(p); {move to the next node in the ring}
-until p=rover; {repeat until the whole list has been traversed}
-if s=@'10000000000 then
- begin get_node:=max_halfword; return;
- end;
-if lo_mem_max+2<hi_mem_min then if lo_mem_max+2<=mem_bot+max_halfword then
- @<Grow more variable-size memory and |goto restart|@>;
-overflow("main memory size",mem_max+1-mem_min);
- {sorry, nothing satisfactory is left}
-@:TeX capacity exceeded main memory size}{\quad main memory size@>
-found: incr(r); link(r):=null; {this node is now nonempty}
-@!stat var_used:=var_used+s; {maintain usage statistics}
-tats@;@/
-link(r-1):=null; info(r-1):=null;
-get_node:=r;
-exit:end;
-@z
-%---------------------------------------
-@x [10] m.130
-@p procedure free_node(@!p:pointer; @!s:halfword); {variable-size node
- liberation}
-var q:pointer; {|llink(rover)|}
-begin node_size(p):=s; link(p):=empty_flag;
-q:=llink(rover); llink(p):=q; rlink(p):=rover; {set both links}
-llink(rover):=p; rlink(q):=p; {insert |p| into the ring}
-@!stat var_used:=var_used-s;@+tats@;{maintain statistics}
-end;
-@y
-@p procedure free_node(@!p:pointer; @!s:halfword); {variable-size node
- liberation}
-var q:pointer; {|llink(rover)|}
-begin
-decr(p); incr(s);
-link(p):=null; info(p):=null;
-node_size(p):=s; link(p):=empty_flag;
-q:=llink(rover); llink(p):=q; rlink(p):=rover; {set both links}
-llink(rover):=p; rlink(q):=p; {insert |p| into the ring}
-@!stat var_used:=var_used-s;@+tats@;{maintain statistics}
-end;
-@z
-%---------------------------------------
-@x [10] m.134 l.2832 - Omega
-Note that the format of a |char_node| allows for up to 256 different
-fonts and up to 256 characters per font; but most implementations will
-probably limit the total number of fonts to fewer than 75 per job,
-and most fonts will stick to characters whose codes are
-less than 128 (since higher codes
-are more difficult to access on most keyboards).
-
-Extensions of \TeX\ intended for oriental languages will need even more
-than $256\times256$ possible characters, when we consider different sizes
-@^oriental characters@>@^Chinese characters@>@^Japanese characters@>
-and styles of type. It is suggested that Chinese and Japanese fonts be
-handled by representing such characters in two consecutive |char_node|
-entries: The first of these has |font=font_base|, and its |link| points
-to the second;
-the second identifies the font and the character dimensions.
-The saving feature about oriental characters is that most of them have
-the same box dimensions. The |character| field of the first |char_node|
-is a ``\\{charext}'' that distinguishes between graphic symbols whose
-dimensions are identical for typesetting purposes. (See the \MF\ manual.)
-Such an extension of \TeX\ would not be difficult; further details are
-left to the reader.
-@y
-Note that the format of a |char_node| allows for up to 65536 different
-fonts and up to 65536 characters per font.
-@z
-%---------------------------------------
-@x [15] m.208 l.4127 - Omega
-@d min_internal=68 {the smallest code that can follow \.{\\the}}
-@d char_given=68 {character code defined by \.{\\chardef}}
-@d math_given=69 {math code defined by \.{\\mathchardef}}
-@d last_item=70 {most recent item ( \.{\\lastpenalty},
- \.{\\lastkern}, \.{\\lastskip} )}
-@d max_non_prefixed_command=70 {largest command code that can't be \.{\\global}}
-@y
-@d min_internal=end_cs_name+1 {the smallest code that can follow \.{\\the}}
-@d char_given=min_internal {character code defined by \.{\\chardef}}
-@d math_given=char_given+1 {math code defined by \.{\\mathchardef}}
-@d omath_given=math_given+1 {math code defined by \.{\\omathchardef}}
-@d last_item=omath_given+1 {most recent item ( \.{\\lastpenalty},
- \.{\\lastkern}, \.{\\lastskip} )}
-@d max_non_prefixed_command=last_item
- {largest command code that can't be \.{\\global}}
-@z
-%---------------------------------------
-@x [15] m.209 l.4138 - Omega
-@d toks_register=71 {token list register ( \.{\\toks} )}
-@d assign_toks=72 {special token list ( \.{\\output}, \.{\\everypar}, etc.~)}
-@d assign_int=73 {user-defined integer ( \.{\\tolerance}, \.{\\day}, etc.~)}
-@d assign_dimen=74 {user-defined length ( \.{\\hsize}, etc.~)}
-@d assign_glue=75 {user-defined glue ( \.{\\baselineskip}, etc.~)}
-@d assign_mu_glue=76 {user-defined muglue ( \.{\\thinmuskip}, etc.~)}
-@d assign_font_dimen=77 {user-defined font dimension ( \.{\\fontdimen} )}
-@d assign_font_int=78 {user-defined font integer ( \.{\\hyphenchar},
- \.{\\skewchar} )}
-@d set_aux=79 {specify state info ( \.{\\spacefactor}, \.{\\prevdepth} )}
-@d set_prev_graf=80 {specify state info ( \.{\\prevgraf} )}
-@d set_page_dimen=81 {specify state info ( \.{\\pagegoal}, etc.~)}
-@d set_page_int=82 {specify state info ( \.{\\deadcycles},
- \.{\\insertpenalties} )}
-@d set_box_dimen=83 {change dimension of box ( \.{\\wd}, \.{\\ht}, \.{\\dp} )}
-@d set_shape=84 {specify fancy paragraph shape ( \.{\\parshape} )}
-@d def_code=85 {define a character code ( \.{\\catcode}, etc.~)}
-@d def_family=86 {declare math fonts ( \.{\\textfont}, etc.~)}
-@d set_font=87 {set current font ( font identifiers )}
-@d def_font=88 {define a font file ( \.{\\font} )}
-@d register=89 {internal register ( \.{\\count}, \.{\\dimen}, etc.~)}
-@d max_internal=89 {the largest code that can follow \.{\\the}}
-@d advance=90 {advance a register or parameter ( \.{\\advance} )}
-@d multiply=91 {multiply a register or parameter ( \.{\\multiply} )}
-@d divide=92 {divide a register or parameter ( \.{\\divide} )}
-@d prefix=93 {qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} )}
-@d let=94 {assign a command code ( \.{\\let}, \.{\\futurelet} )}
-@d shorthand_def=95 {code definition ( \.{\\chardef}, \.{\\countdef}, etc.~)}
-@d read_to_cs=96 {read into a control sequence ( \.{\\read} )}
-@d def=97 {macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} )}
-@d set_box=98 {set a box ( \.{\\setbox} )}
-@d hyph_data=99 {hyphenation data ( \.{\\hyphenation}, \.{\\patterns} )}
-@d set_interaction=100 {define level of interaction ( \.{\\batchmode}, etc.~)}
-@d max_command=100 {the largest command code seen at |big_switch|}
-@y
-@d toks_register=max_non_prefixed_command+1
- {token list register ( \.{\\toks} )}
-@d assign_toks=toks_register+1
- {special token list ( \.{\\output}, \.{\\everypar}, etc.~)}
-@d assign_int=assign_toks+1
- {user-defined integer ( \.{\\tolerance}, \.{\\day}, etc.~)}
-@d assign_dimen=assign_int+1
- {user-defined length ( \.{\\hsize}, etc.~)}
-@d assign_glue=assign_dimen+1
- {user-defined glue ( \.{\\baselineskip}, etc.~)}
-@d assign_mu_glue=assign_glue+1
- {user-defined muglue ( \.{\\thinmuskip}, etc.~)}
-@d assign_font_dimen=assign_mu_glue+1
- {user-defined font dimension ( \.{\\fontdimen} )}
-@d assign_font_int=assign_font_dimen+1
- {user-defined font integer ( \.{\\hyphenchar}, \.{\\skewchar} )}
-@d set_aux=assign_font_int+1
- {specify state info ( \.{\\spacefactor}, \.{\\prevdepth} )}
-@d set_prev_graf=set_aux+1
- {specify state info ( \.{\\prevgraf} )}
-@d set_page_dimen=set_prev_graf+1
- {specify state info ( \.{\\pagegoal}, etc.~)}
-@d set_page_int=set_page_dimen+1
- {specify state info ( \.{\\deadcycles},
- \.{\\insertpenalties} )}
-@d set_box_dimen=set_page_int+1
- {change dimension of box ( \.{\\wd}, \.{\\ht}, \.{\\dp} )}
-@d set_shape=set_box_dimen+1
- {specify fancy paragraph shape ( \.{\\parshape} )}
-@d def_code=set_shape+1
- {define a character code ( \.{\\catcode}, etc.~)}
-@d def_family=def_code+1
- {declare math fonts ( \.{\\textfont}, etc.~)}
-@d set_font=def_family+1
- {set current font ( font identifiers )}
-@d def_font=set_font+1
- {define a font file ( \.{\\font} )}
-@d register=def_font+1
- {internal register ( \.{\\count}, \.{\\dimen}, etc.~)}
-@d max_internal=register
- {the largest code that can follow \.{\\the}}
-@d advance=max_internal+1
- {advance a register or parameter ( \.{\\advance} )}
-@d multiply=advance+1
- {multiply a register or parameter ( \.{\\multiply} )}
-@d divide=multiply+1
- {divide a register or parameter ( \.{\\divide} )}
-@d prefix=divide+1
- {qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} )}
-@d let=prefix+1
- {assign a command code ( \.{\\let}, \.{\\futurelet} )}
-@d shorthand_def=let+1
- {code definition ( \.{\\chardef}, \.{\\countdef}, etc.~)}
-@d read_to_cs=shorthand_def+1
- {read into a control sequence ( \.{\\read} )}
-@d def=read_to_cs+1
- {macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} )}
-@d set_box=def+1
- {set a box ( \.{\\setbox} )}
-@d hyph_data=set_box+1
- {hyphenation data ( \.{\\hyphenation}, \.{\\patterns} )}
-@d set_interaction=hyph_data+1
- {define level of interaction ( \.{\\batchmode}, etc.~)}
-@d max_command=set_interaction
- {the largest command code seen at |big_switch|}
-@z
-%---------------------------------------
-@x [17] m.220 l.4486 - Omega
-@d eq_level(#)==eq_level_field(eqtb[#]) {level of definition}
-@d eq_type(#)==eq_type_field(eqtb[#]) {command code for equivalent}
-@d equiv(#)==equiv_field(eqtb[#]) {equivalent value}
-@y
-@d eq_level(#)==new_eq_level(#) {level of definition}
-@d eq_type(#)==new_eq_type(#) {command code for equivalent}
-@d equiv(#)==new_equiv(#) {equivalent value}
-@d equiv1(#)==new_equiv1(#) {equivalent value}
-@z
-%---------------------------------------
-@x [17] m.222 l.4496 - Omega
-In the first region we have 256 equivalents for ``active characters'' that
-act as control sequences, followed by 256 equivalents for single-character
-control sequences.
-@y
-In the first region we have |number_chars| equivalents for ``active characters''
-that act as control sequences, followed by |number_chars| equivalents for
-single-character control sequences.
-@z
-%---------------------------------------
-@x [17] m.222 l.4507 - Omega
-@d single_base=active_base+256 {equivalents of one-character control sequences}
-@d null_cs=single_base+256 {equivalent of \.{\\csname\\endcsname}}
-@y
-@d single_base=active_base+number_chars
- {equivalents of one-character control sequences}
-@d null_cs=single_base+number_chars {equivalent of \.{\\csname\\endcsname}}
-@z
-%---------------------------------------
-@x [17] m.222 l.4530 - Omega
-eq_type(undefined_control_sequence):=undefined_cs;
-equiv(undefined_control_sequence):=null;
-eq_level(undefined_control_sequence):=level_zero;
-for k:=active_base to undefined_control_sequence-1 do
- eqtb[k]:=eqtb[undefined_control_sequence];
-@y
-set_eq_type(undefined_control_sequence,undefined_cs);
-set_equiv(undefined_control_sequence,null);
-set_eq_level(undefined_control_sequence,level_zero);
-@z
-%---------------------------------------
-@x [17] m.224 l.4547 - Omega
-@ Region 3 of |eqtb| contains the 256 \.{\\skip} registers, as well as the
-glue parameters defined here. It is important that the ``muskip''
-parameters have larger numbers than the others.
-@y
-@ Region 3 of |eqtb| contains the |number_regs| \.{\\skip} registers,
-as well as the glue parameters defined here. It is important that the
-``muskip'' parameters have larger numbers than the others.
-@z
-%---------------------------------------
-@x [17] m.224 l.4572 - Omega
-@d skip_base=glue_base+glue_pars {table of 256 ``skip'' registers}
-@d mu_skip_base=skip_base+256 {table of 256 ``muskip'' registers}
-@d local_base=mu_skip_base+256 {beginning of region 4}
-@y
-@d skip_base=glue_base+glue_pars {table of |number_regs| ``skip'' registers}
-@d mu_skip_base=skip_base+number_regs
- {table of |number_regs| ``muskip'' registers}
-@d local_base=mu_skip_base+number_regs {beginning of region 4}
-@z
-%---------------------------------------
-@x [17] m.228 l.4685 - Omega
-equiv(glue_base):=zero_glue; eq_level(glue_base):=level_one;
-eq_type(glue_base):=glue_ref;
-for k:=glue_base+1 to local_base-1 do eqtb[k]:=eqtb[glue_base];
-@y
-set_equiv(glue_base,zero_glue); set_eq_level(glue_base,level_one);
-set_eq_type(glue_base,glue_ref);
-@z
-%---------------------------------------
-@x [17] m.230 l.4721 - Omega
-@d toks_base=local_base+10 {table of 256 token list registers}
-@d box_base=toks_base+256 {table of 256 box registers}
-@d cur_font_loc=box_base+256 {internal font number outside math mode}
-@d math_font_base=cur_font_loc+1 {table of 48 math font numbers}
-@d cat_code_base=math_font_base+48
- {table of 256 command codes (the ``catcodes'')}
-@d lc_code_base=cat_code_base+256 {table of 256 lowercase mappings}
-@d uc_code_base=lc_code_base+256 {table of 256 uppercase mappings}
-@d sf_code_base=uc_code_base+256 {table of 256 spacefactor mappings}
-@d math_code_base=sf_code_base+256 {table of 256 math mode mappings}
-@d int_base=math_code_base+256 {beginning of region 5}
-@y
-@d toks_base=local_base+10 {table of |number_regs| token list registers}
-@d box_base=toks_base+number_regs {table of |number_regs| box registers}
-@d cur_font_loc=box_base+number_regs {internal font number outside math mode}
-@d math_font_base=cur_font_loc+1
- {table of |number_math_fonts| math font numbers}
-@d cat_code_base=math_font_base+number_math_fonts
- {table of |number_chars| command codes (the ``catcodes'')}
-@d lc_code_base=cat_code_base+number_chars
- {table of |number_chars| lowercase mappings}
-@d uc_code_base=lc_code_base+number_chars
- {table of |number_chars| uppercase mappings}
-@d sf_code_base=uc_code_base+number_chars
- {table of |number_chars| spacefactor mappings}
-@d math_code_base=sf_code_base+number_chars
- {table of |number_chars| math mode mappings}
-@d int_base=math_code_base+number_chars {beginning of region 5}
-@z
-%---------------------------------------
-@x [17] m.232 l.4802 - Omega
-@d var_code==@'70000 {math code meaning ``use the current family''}
-
-@<Initialize table entries...@>=
-par_shape_ptr:=null; eq_type(par_shape_loc):=shape_ref;
-eq_level(par_shape_loc):=level_one;@/
-for k:=output_routine_loc to toks_base+255 do
- eqtb[k]:=eqtb[undefined_control_sequence];
-box(0):=null; eq_type(box_base):=box_ref; eq_level(box_base):=level_one;
-for k:=box_base+1 to box_base+255 do eqtb[k]:=eqtb[box_base];
-cur_font:=null_font; eq_type(cur_font_loc):=data;
-eq_level(cur_font_loc):=level_one;@/
-for k:=math_font_base to math_font_base+47 do eqtb[k]:=eqtb[cur_font_loc];
-equiv(cat_code_base):=0; eq_type(cat_code_base):=data;
-eq_level(cat_code_base):=level_one;@/
-for k:=cat_code_base+1 to int_base-1 do eqtb[k]:=eqtb[cat_code_base];
-for k:=0 to 255 do
- begin cat_code(k):=other_char; math_code(k):=hi(k); sf_code(k):=1000;
- end;
-cat_code(carriage_return):=car_ret; cat_code(" "):=spacer;
-cat_code("\"):=escape; cat_code("%"):=comment;
-cat_code(invalid_code):=invalid_char; cat_code(null_code):=ignore;
-for k:="0" to "9" do math_code(k):=hi(k+var_code);
-for k:="A" to "Z" do
- begin cat_code(k):=letter; cat_code(k+"a"-"A"):=letter;@/
- math_code(k):=hi(k+var_code+@"100);
- math_code(k+"a"-"A"):=hi(k+"a"-"A"+var_code+@"100);@/
- lc_code(k):=k+"a"-"A"; lc_code(k+"a"-"A"):=k+"a"-"A";@/
- uc_code(k):=k; uc_code(k+"a"-"A"):=k;@/
- sf_code(k):=999;
- end;
-@y
-@d var_code==@"7000000 {math code meaning ``use the current family''}
-
-@<Initialize table entries...@>=
-set_equiv(par_shape_loc,null); set_eq_type(par_shape_loc,shape_ref);
-set_eq_level(par_shape_loc,level_one);@/
-set_equiv(cat_code_base+carriage_return,car_ret);
-set_equiv(cat_code_base+" ",spacer);
-set_equiv(cat_code_base+"\",escape);
-set_equiv(cat_code_base+"%",comment);
-set_equiv(cat_code_base+invalid_code,invalid_char);
-set_equiv(cat_code_base+null_code,ignore);
-for k:="0" to "9" do set_equiv(math_code_base+k,hi(k+var_code));
-for k:="A" to "Z" do
- begin set_equiv(cat_code_base+k,letter);
- set_equiv(cat_code_base+k+"a"-"A",letter);@/
- set_equiv(math_code_base+k,hi(k+var_code+@"10000));
- set_equiv(math_code_base+k+"a"-"A",hi(k+"a"-"A"+var_code+@"10000));@/
- set_equiv(lc_code_base+k,k+"a"-"A");
- set_equiv(lc_code_base+k+"a"-"A",k+"a"-"A");@/
- set_equiv(uc_code_base+k,k);
- set_equiv(uc_code_base+k+"a"-"A",k);@/
- set_equiv(sf_code_base+k,999);
- end;
-@z
-%---------------------------------------
-@x [17] m.234 l.4857 - Omega
-@ @<Show the font identifier in |eqtb[n]|@>=
-begin if n=cur_font_loc then print("current font")
-else if n<math_font_base+16 then
- begin print_esc("textfont"); print_int(n-math_font_base);
- end
-else if n<math_font_base+32 then
- begin print_esc("scriptfont"); print_int(n-math_font_base-16);
- end
-else begin print_esc("scriptscriptfont"); print_int(n-math_font_base-32);
- end;
-print_char("=");@/
-print_esc(hash[font_id_base+equiv(n)].rh);
- {that's |font_id_text(equiv(n))|}
-@y
-@ @<Show the font identifier in |eqtb[n]|@>=
-begin if n=cur_font_loc then print("current font")
-else if n<math_font_base+script_size then
- begin print_esc("textfont"); print_int(n-math_font_base);
- end
-else if n<math_font_base+script_script_size then
- begin print_esc("scriptfont"); print_int(n-math_font_base-script_size);
- end
-else begin print_esc("scriptscriptfont");
- print_int(n-math_font_base-script_script_size);
- end;
-print_char("=");@/
-print_esc(newtext(font_id_base+equiv(n)));
- {that's |font_id_text(equiv(n))|}
-@z
-%---------------------------------------
-@x [17] m.236 l.4955 - Omega
-@d count_base=int_base+int_pars {256 user \.{\\count} registers}
-@d del_code_base=count_base+256 {256 delimiter code mappings}
-@d dimen_base=del_code_base+256 {beginning of region 6}
-@#
-@d del_code(#)==eqtb[del_code_base+#].int
-@d count(#)==eqtb[count_base+#].int
-@d int_par(#)==eqtb[int_base+#].int {an integer parameter}
-@y
-@d count_base=int_base+int_pars {|number_regs| user \.{\\count} registers}
-@d del_code_base=count_base+number_regs {|number_chars| delimiter code mappings}
-@d dimen_base=del_code_base+number_chars {beginning of region 6}
-@#
-@d del_code0(#)==new_equiv(del_code_base+#)
-@d del_code1(#)==new_equiv1(del_code_base+#)
-@d count(#)==new_eqtb_int(count_base+#)
-@d int_par(#)==new_eqtb_int(int_base+#) {an integer parameter}
-@z
-%---------------------------------------
-@x [17] m.240 l.5213 - Omega
-for k:=int_base to del_code_base-1 do eqtb[k].int:=0;
-mag:=1000; tolerance:=10000; hang_after:=1; max_dead_cycles:=25;
-escape_char:="\"; end_line_char:=carriage_return;
-for k:=0 to 255 do del_code(k):=-1;
-del_code("."):=0; {this null delimiter is used in error recovery}
-@y
-set_new_eqtb_int(int_base+mag_code,1000);
-set_new_eqtb_int(int_base+tolerance_code,10000);
-set_new_eqtb_int(int_base+hang_after_code,1);
-set_new_eqtb_int(int_base+max_dead_cycles_code,25);
-set_new_eqtb_int(int_base+escape_char_code,"\");
-set_new_eqtb_int(int_base+end_line_char_code,carriage_return);
-set_equiv(del_code_base+".",0);
-set_equiv1(del_code_base+".",0);
- {this null delimiter is used in error recovery}
-
-@ @<Set newline character to -1@>=
-set_new_eqtb_int(int_base+new_line_char_code,-1)
-
-@ @<Set newline character to nl@>=
-set_new_eqtb_int(int_base+new_line_char_code,nl)
-
-@z
-%---------------------------------------
-@x [17] m.242 l.5240 - Omega
-print_char("="); print_int(eqtb[n].int);
-@y
-print_char("="); print_int(new_eqtb_int(n));
-@z
-%---------------------------------------
-@x [17] m.247 l.5273 - Omega
-here, and the 256 \.{\\dimen} registers.
-@y
-here, and the |number_regs| \.{\\dimen} registers.
-@z
-%---------------------------------------
-@x [17] m.247 l.5298 - Omega
- {table of 256 user-defined \.{\\dimen} registers}
-@d eqtb_size=scaled_base+255 {largest subscript of |eqtb|}
-@#
-@d dimen(#)==eqtb[scaled_base+#].sc
-@d dimen_par(#)==eqtb[dimen_base+#].sc {a scaled quantity}
-@y
- {table of |number_regs| user-defined \.{\\dimen} registers}
-@d eqtb_size=scaled_base+biggest_reg {largest subscript of |eqtb|}
-@#
-@d dimen(#)==new_eqtb_sc(scaled_base+(#))
-@d dimen_par(#)==new_eqtb_sc(dimen_base+(#)) {a scaled quantity}
-@z
-%---------------------------------------
-@x [17] m.250 l.5405 - Omega
-for k:=dimen_base to eqtb_size do eqtb[k].sc:=0;
-@y
-
-@ @p function init_eqtb_entry (p:pointer):memory_word;
-var mw:memory_word;
-begin
- { Regions 1 and 2 }
- if (p>=active_base) and
- (p<=undefined_control_sequence) then begin
- equiv_field(mw):=null;
- eq_type_field(mw):=undefined_cs;
- eq_level_field(mw):=level_zero;
- end
- { Region 3 }
- else if (p>=glue_base) and
- (p<=local_base+1) then begin
- equiv_field(mw):=zero_glue;
- eq_type_field(mw):=glue_ref;
- eq_level_field(mw):=level_one;
- end
- { Region 4 }
- else if (p>=par_shape_loc) and
- (p<=toks_base+biggest_reg) then begin
- equiv_field(mw):=null;
- eq_type_field(mw):=undefined_cs;
- eq_level_field(mw):=level_zero;
- end
- else if (p>=box_base) and
- (p<=box_base+biggest_reg) then begin
- equiv_field(mw):=null;
- eq_type_field(mw):=box_ref;
- eq_level_field(mw):=level_one;
- end
- else if (p>=cur_font_loc) and
- (p<=math_font_base+math_font_biggest) then begin
- equiv_field(mw):=null_font;
- eq_type_field(mw):=data;
- eq_level_field(mw):=level_one;
- end
- else if (p>=cat_code_base) and
- (p<=cat_code_base+biggest_char) then begin
- equiv_field(mw):=other_char;
- eq_type_field(mw):=data;
- eq_level_field(mw):=level_one;
- end
- else if (p>=lc_code_base) and
- (p<=uc_code_base+biggest_char) then begin
- equiv_field(mw):=0;
- eq_type_field(mw):=data;
- eq_level_field(mw):=level_one;
- end
- else if (p>=sf_code_base) and
- (p<=sf_code_base+biggest_char) then begin
- equiv_field(mw):=1000;
- eq_type_field(mw):=data;
- eq_level_field(mw):=level_one;
- end
- else if (p>=math_code_base) and
- (p<=math_code_base+biggest_char) then begin
- equiv_field(mw):=hi(p-math_code_base);
- eq_type_field(mw):=data;
- eq_level_field(mw):=level_one;
- end
- { Region 5 }
- else if (p>=int_base) and (p<=del_code_base-1) then begin
- setintzero(mw,0);
- setintone(mw,0);
- end
- else if (p>=del_code_base) and (p<=del_code_base+biggest_char) then begin
- setintzero(mw,-1);
- setintone(mw,-1);
- end
- { Region 6 }
- else if (p>=dimen_base) and (p<=eqtb_size) then begin
- setintzero(mw,0);
- setintone(mw,0);
- end
- else begin
- equiv_field(mw):=null;
- eq_type_field(mw):=undefined_cs;
- eq_level_field(mw):=level_zero;
- end;
- init_eqtb_entry:=mw;
-end;
-
-@z
-%---------------------------------------
-@x [17] m.251 l.5411 - Omega
-print_char("="); print_scaled(eqtb[n].sc); print("pt");
-@y
-print_char("="); print_scaled(new_eqtb_sc(n)); print("pt");
-@z
-%---------------------------------------
-@x [17] m.254 l.5435 - Omega
-@ The last two regions of |eqtb| have fullword values instead of the
-three fields |eq_level|, |eq_type|, and |equiv|. An |eq_type| is unnecessary,
-but \TeX\ needs to store the |eq_level| information in another array
-called |xeq_level|.
-
-@<Glob...@>=
-@!eqtb:array[active_base..eqtb_size] of memory_word;
-@!xeq_level:array[int_base..eqtb_size] of quarterword;
-@y
-@ The last two regions of |eqtb| have fullword values instead of the
-three fields |eq_level|, |eq_type|, and |equiv|. An |eq_type| is unnecessary,
-but \TeX\ needs to store the |eq_level| information in another array
-called |xeq_level|.
-
-@d xeq_level(#) == new_xeq_level(eqtb_size+eqtb_size+#)
-@d set_xeq_level(#) == set_new_eqtb_int(eqtb_size+eqtb_size+#)
-@z
-%---------------------------------------
-@x [17] m.255 l.5439 - Omega
-for k:=int_base to eqtb_size do xeq_level[k]:=level_one;
-@y
-@z
-%---------------------------------------
-@x [17] m.255 l.5446 - Omega
-for q:=active_base to box_base+255 do
-@y
-for q:=active_base to box_base+biggest_reg do
-@z
-%---------------------------------------
-@x [18] m.256 l.5477 - Omega
-@d next(#) == hash[#].lh {link for coalesced lists}
-@d text(#) == hash[#].rh {string number for control sequence name}
-@d hash_is_full == (hash_used=hash_base) {test if all positions are occupied}
-@d font_id_text(#) == text(font_id_base+#) {a frozen font identifier's name}
-
-@<Glob...@>=
-@!hash: array[hash_base..undefined_control_sequence-1] of two_halves;
- {the hash table}
-@y
-@d hash_is_full == (hash_used=hash_base) {test if all positions are occupied}
-@d font_id_text(#) == newtext(font_id_base+#) {a frozen font identifier's name}
-@d newtext(#) == new_hash_text(eqtb_size+#)
-@d newnext(#) == new_hash_next(eqtb_size+#)
-@d settext(#) == set_hash_text(eqtb_size+#)
-@d setnext(#) == set_hash_next(eqtb_size+#)
-
-@<Glob...@>=
-@z
-%---------------------------------------
-@x [18] m.257 l.5491 - Omega
-next(hash_base):=0; text(hash_base):=0;
-for k:=hash_base+1 to undefined_control_sequence-1 do hash[k]:=hash[hash_base];
-@y
-@z
-%---------------------------------------
-@x [18] m.258 l.5497 - Omega
-hash_used:=frozen_control_sequence; {nothing is used}
-cs_count:=0;
-eq_type(frozen_dont_expand):=dont_expand;
-text(frozen_dont_expand):="notexpanded:";
-@y
-hash_used:=frozen_control_sequence; {nothing is used}
-cs_count:=0;
-set_eq_type(frozen_dont_expand,dont_expand);
-settext(frozen_dont_expand,"notexpanded:");
-@z
-%---------------------------------------
-@x [18] m.259 l.5514 - Omega
-@!k:pointer; {index in |buffer| array}
-begin @<Compute the hash code |h|@>;
-p:=h+hash_base; {we start searching here; note that |0<=h<hash_prime|}
-loop@+begin if text(p)>0 then if length(text(p))=l then
- if str_eq_buf(text(p),j) then goto found;
- if next(p)=0 then
- begin if no_new_control_sequence then
- p:=undefined_control_sequence
- else @<Insert a new control sequence after |p|, then make
- |p| point to it@>;
- goto found;
- end;
- p:=next(p);
- end;
-found: id_lookup:=p;
-@y
-@!k:pointer; {index in |buffer| array}
-@!newstring:integer;
-begin @<Compute the hash code |h|@>;
-p:=h+hash_base; {we start searching here; note that |0<=h<hash_prime|}
-loop@+begin if newtext(p)>0 then if length(newtext(p))=l then
- if str_eq_buf(newtext(p),j) then goto found;
- if newnext(p)=0 then
- begin if no_new_control_sequence then
- p:=undefined_control_sequence
- else @<Insert a new control sequence after |p|, then make
- |p| point to it@>;
- goto found;
- end;
- p:=newnext(p);
- end;
-found: id_lookup:=p;
-@z
-%---------------------------------------
-@x [18] m.260 l.5532 - Omega
-begin if text(p)>0 then
- begin repeat if hash_is_full then overflow("hash size",hash_size);
-@:TeX capacity exceeded hash size}{\quad hash size@>
- decr(hash_used);
- until text(hash_used)=0; {search for an empty location in |hash|}
- next(p):=hash_used; p:=hash_used;
- end;
-str_room(l); d:=cur_length;
-while pool_ptr>str_start[str_ptr] do
- begin decr(pool_ptr); str_pool[pool_ptr+l]:=str_pool[pool_ptr];
- end; {move current string up to make room for another}
-for k:=j to j+l-1 do append_char(buffer[k]);
-text(p):=make_string; pool_ptr:=pool_ptr+d;
-@y
-begin if newtext(p)>0 then
- begin repeat if hash_is_full then overflow("hash size",hash_size);
-@:TeX capacity exceeded hash size}{\quad hash size@>
- decr(hash_used);
- until newtext(hash_used)=0; {search for an empty location in |hash|}
- setnext(p,hash_used); p:=hash_used;
- end;
-str_room(l); d:=cur_length;
-while pool_ptr>str_start[str_ptr] do
- begin decr(pool_ptr); str_pool[pool_ptr+l]:=str_pool[pool_ptr];
- end; {move current string up to make room for another}
-for k:=j to j+l-1 do append_char(buffer[k]);
-newstring:=make_string;
-settext(p,newstring); pool_ptr:=pool_ptr+d;
-@z
-%---------------------------------------
-@x [18] m.262 l.5584 - Omega
-else if (text(p)<0)or(text(p)>=str_ptr) then print_esc("NONEXISTENT.")
-@.NONEXISTENT@>
-else begin print_esc(text(p));
-@y
-else if (newtext(p)<0)or(newtext(p)>=str_ptr) then print_esc("NONEXISTENT.")
-@.NONEXISTENT@>
-else begin print_esc(newtext(p));
-@z
-%---------------------------------------
-@x [18] m.263 l.5601 - Omega
-else print_esc(text(p));
-@y
-else print_esc(newtext(p));
-@z
-%---------------------------------------
-@x [18] m.264 l.5610 - Omega
-@p @!init procedure primitive(@!s:str_number;@!c:quarterword;@!o:halfword);
-var k:pool_pointer; {index into |str_pool|}
-@!j:small_number; {index into |buffer|}
-@!l:small_number; {length of the string}
-begin if s<256 then cur_val:=s+single_base
-else begin k:=str_start[s]; l:=str_start[s+1]-k;
- {we will move |s| into the (empty) |buffer|}
- for j:=0 to l-1 do buffer[j]:=so(str_pool[k+j]);
- cur_val:=id_lookup(0,l); {|no_new_control_sequence| is |false|}
- flush_string; text(cur_val):=s; {we don't want to have the string twice}
- end;
-eq_level(cur_val):=level_one; eq_type(cur_val):=c; equiv(cur_val):=o;
-@y
-@p @!init procedure primitive(@!s:str_number;@!c:quarterword;@!o:halfword);
-var k:pool_pointer; {index into |str_pool|}
-@!j:small_number; {index into |buffer|}
-@!l:small_number; {length of the string}
-begin if s<=biggest_char then cur_val:=s+single_base
-else begin k:=str_start[s]; l:=str_start[s+1]-k;
- {we will move |s| into the (empty) |buffer|}
- for j:=0 to l-1 do buffer[j]:=so(str_pool[k+j]);
- cur_val:=id_lookup(0,l); {|no_new_control_sequence| is |false|}
- flush_string; settext(cur_val,s); {we don't want to have the string twice}
- end;
-set_eq_level(cur_val,level_one); set_eq_type(cur_val,c);
-set_equiv(cur_val,o);
-@z
-%---------------------------------------
-@x [18] m.265 l.5648 - Omega
-primitive("delimiter",delim_num,0);@/
-@!@:delimiter_}{\.{\\delimiter} primitive@>
-@y
-primitive("delimiter",delim_num,0);@/
-@!@:delimiter_}{\.{\\delimiter} primitive@>
-primitive("odelimiter",delim_num,1);@/
-@!@:delimiter_}{\.{\\odelimiter} primitive@>
-@z
-%---------------------------------------
-@x [18] m.265 l.5656 - Omega
-text(frozen_end_group):="endgroup"; eqtb[frozen_end_group]:=eqtb[cur_val];@/
-@y
-settext(frozen_end_group,"endgroup");
-set_new_eqtb(frozen_end_group,new_eqtb(cur_val));@/
-@z
-%---------------------------------------
-@x [18] m.265 l.5673 - Omega
-primitive("mathaccent",math_accent,0);@/
-@!@:math_accent_}{\.{\\mathaccent} primitive@>
-primitive("mathchar",math_char_num,0);@/
-@!@:math_char_}{\.{\\mathchar} primitive@>
-@y
-primitive("mathaccent",math_accent,0);@/
-@!@:math_accent_}{\.{\\mathaccent} primitive@>
-primitive("mathchar",math_char_num,0);@/
-@!@:math_char_}{\.{\\mathchar} primitive@>
-primitive("omathaccent",math_accent,1);@/
-@!@:math_accent_}{\.{\\omathaccent} primitive@>
-primitive("omathchar",math_char_num,1);@/
-@!@:math_char_}{\.{\\omathchar} primitive@>
-@z
-%---------------------------------------
-@x [18] m.265 l.5697 - Omega
-primitive("radical",radical,0);@/
-@!@:radical_}{\.{\\radical} primitive@>
-@y
-primitive("radical",radical,0);@/
-@!@:radical_}{\.{\\radical} primitive@>
-primitive("oradical",radical,1);@/
-@!@:radical_}{\.{\\oradical} primitive@>
-@z
-%---------------------------------------
-@x [18] m.265 l.5701 - Omega
-primitive("relax",relax,256); {cf.\ |scan_file_name|}
-@!@:relax_}{\.{\\relax} primitive@>
-text(frozen_relax):="relax"; eqtb[frozen_relax]:=eqtb[cur_val];@/
-@y
-primitive("relax",relax,too_big_char); {cf.\ |scan_file_name|}
-@!@:relax_}{\.{\\relax} primitive@>
-settext(frozen_relax,"relax");
-set_new_eqtb(frozen_relax,new_eqtb(cur_val));@/
-@z
-%---------------------------------------
-@x [19] m.276 l.5951 - Omega
-else begin save_stack[save_ptr]:=eqtb[p]; incr(save_ptr);
-@y
-else begin save_stack[save_ptr]:=new_eqtb(p); incr(save_ptr);
-@z
-%---------------------------------------
-@x [19] m.277 l.5967 - Omega
-begin if eq_level(p)=cur_level then eq_destroy(eqtb[p])
-else if cur_level>level_one then eq_save(p,eq_level(p));
-eq_level(p):=cur_level; eq_type(p):=t; equiv(p):=e;
-@y
-begin if eq_level(p)=cur_level then eq_destroy(new_eqtb(p))
-else if cur_level>level_one then eq_save(p,eq_level(p));
-set_eq_level(p,cur_level); set_eq_type(p,t); set_equiv(p,e);
-@z
-%---------------------------------------
-@x [19] m.278 l.5980 - Omega
-@p procedure eq_word_define(@!p:pointer;@!w:integer);
-begin if xeq_level[p]<>cur_level then
- begin eq_save(p,xeq_level[p]); xeq_level[p]:=cur_level;
- end;
-eqtb[p].int:=w;
-end;
-@y
-@p procedure eq_word_define(@!p:pointer;@!w:integer);
-begin if xeq_level(p)<>cur_level then
- begin eq_save(p,xeq_level(p)); set_xeq_level(p,cur_level);
- end;
-set_new_eqtb_int(p,w);
-end;
-
-procedure del_eq_word_define(@!p:pointer;@!w,wone:integer);
-begin if xeq_level(p)<>cur_level then
- begin eq_save(p,xeq_level(p)); set_xeq_level(p,cur_level);
- end;
-set_equiv(p,w); set_equiv1(p,wone);
-end;
-
-@z
-%---------------------------------------
-@x [19] m.279 l.5990 - Omega
-begin eq_destroy(eqtb[p]);
-eq_level(p):=level_one; eq_type(p):=t; equiv(p):=e;
-end;
-@#
-procedure geq_word_define(@!p:pointer;@!w:integer); {global |eq_word_define|}
-begin eqtb[p].int:=w; xeq_level[p]:=level_one;
-end;
-@y
-begin eq_destroy(new_eqtb(p));
-set_eq_level(p,level_one); set_eq_type(p,t); set_equiv(p,e);
-end;
-@#
-procedure geq_word_define(@!p:pointer;@!w:integer); {global |eq_word_define|}
-begin set_new_eqtb_int(p,w); set_xeq_level(p,level_one);
-end;
-
-procedure del_geq_word_define(@!p:pointer;@!w,wone:integer);
- {global |del_eq_word_define|}
-begin set_equiv(p,w); set_equiv1(p,wone); set_xeq_level(p,level_one);
-end;
-@z
-%---------------------------------------
-@x [19] m.282 l.6036 - Omega
- else save_stack[save_ptr]:=eqtb[undefined_control_sequence];
-@y
- else save_stack[save_ptr]:=new_eqtb(undefined_control_sequence);
-@z
-%---------------------------------------
-@x [19] m.283 l.6056 - Omega
- else begin eq_destroy(eqtb[p]); {destroy the current value}
- eqtb[p]:=save_stack[save_ptr]; {restore the saved value}
- @!stat if tracing_restores>0 then restore_trace(p,"restoring");@+tats@;@/
- end
-else if xeq_level[p]<>level_one then
- begin eqtb[p]:=save_stack[save_ptr]; xeq_level[p]:=l;
-@y
- else begin eq_destroy(new_eqtb(p)); {destroy the current value}
- set_new_eqtb(p,save_stack[save_ptr]); {restore the saved value}
- @!stat if tracing_restores>0 then restore_trace(p,"restoring");@+tats@;@/
- end
-else if xeq_level(p)<>level_one then
- begin set_new_eqtb(p,save_stack[save_ptr]); set_xeq_level(p,l);
-@z
-%---------------------------------------
-@x [20] m.289 l.6129 - Omega
-number $2^8m+c$; the command code is in the range |1<=m<=14|. (2)~A control
-sequence whose |eqtb| address is |p| is represented as the number
-|cs_token_flag+p|. Here |cs_token_flag=@t$2^{12}-1$@>| is larger than
-@y
-number $2^16m+c$; the command code is in the range |1<=m<=14|. (2)~A control
-sequence whose |eqtb| address is |p| is represented as the number
-|cs_token_flag+p|. Here |cs_token_flag=@t$2^{20}-1$@>| is larger than
-@z
-%---------------------------------------
-@x [20] m.289 l.6142 - Omega
-@d cs_token_flag==@'7777 {amount added to the |eqtb| location in a
- token that stands for a control sequence; is a multiple of~256, less~1}
-@d left_brace_token=@'0400 {$2^8\cdot|left_brace|$}
-@d left_brace_limit=@'1000 {$2^8\cdot(|left_brace|+1)$}
-@d right_brace_token=@'1000 {$2^8\cdot|right_brace|$}
-@d right_brace_limit=@'1400 {$2^8\cdot(|right_brace|+1)$}
-@d math_shift_token=@'1400 {$2^8\cdot|math_shift|$}
-@d tab_token=@'2000 {$2^8\cdot|tab_mark|$}
-@d out_param_token=@'2400 {$2^8\cdot|out_param|$}
-@d space_token=@'5040 {$2^8\cdot|spacer|+|" "|$}
-@d letter_token=@'5400 {$2^8\cdot|letter|$}
-@d other_token=@'6000 {$2^8\cdot|other_char|$}
-@d match_token=@'6400 {$2^8\cdot|match|$}
-@d end_match_token=@'7000 {$2^8\cdot|end_match|$}
-@y
-@d cs_token_flag=@"FFFFF {amount added to the |eqtb| location in a
- token that stands for a control sequence; is a multiple of~65536, less~1}
-@d max_char_val=@"10000 {to separate char and command code}
-@d left_brace_token=@"10000 {$2^16\cdot|left_brace|$}
-@d left_brace_limit=@"20000 {$2^16\cdot(|left_brace|+1)$}
-@d right_brace_token=@"20000 {$2^16\cdot|right_brace|$}
-@d right_brace_limit=@"30000 {$2^16\cdot(|right_brace|+1)$}
-@d math_shift_token=@"30000 {$2^16\cdot|math_shift|$}
-@d tab_token=@"40000 {$2^16\cdot|tab_mark|$}
-@d out_param_token=@"50000 {$2^16\cdot|out_param|$}
-@d space_token=@"A0020 {$2^16\cdot|spacer|+|" "|$}
-@d letter_token=@"B0000 {$2^16\cdot|letter|$}
-@d other_token=@"C0000 {$2^16\cdot|other_char|$}
-@d match_token=@"D0000 {$2^16\cdot|match|$}
-@d end_match_token=@"E0000 {$2^16\cdot|end_match|$}
-@z
-%---------------------------------------
-@x [20] m.293 l.6256 - Omega
-else begin m:=info(p) div @'400; c:=info(p) mod @'400;
-@y
-else begin m:=info(p) div max_char_val; c:=info(p) mod max_char_val;
-@z
-%---------------------------------------
-@x [21] m.298 l.6375 - Omega
-procedure print_cmd_chr(@!cmd:quarterword;@!chr_code:halfword);
-@y
-procedure print_cmd_chr(@!cmd:quarterword;@!chr_code:halfword);
-@z
-%---------------------------------------
-@x [24] m.334 l.7110 - Omega
-primitive("par",par_end,256); {cf.\ |scan_file_name|}
-@y
-primitive("par",par_end,too_big_char); {cf. |scan_file_name|}
-@z
-%---------------------------------------
-@x [24] m.357 l.7462 - Omega
- else begin cur_cmd:=t div @'400; cur_chr:=t mod @'400;
-@y
- else begin cur_cmd:=t div max_char_val; cur_chr:=t mod max_char_val;
-@z
-%---------------------------------------
-@x [24] m.358 l.7479 - Omega
-@d no_expand_flag=257 {this characterizes a special variant of |relax|}
-@y
-@d no_expand_flag=special_char {this characterizes a special variant of |relax|}
-@z
-%---------------------------------------
-@x [24] m.365 l.7606 - Omega
-if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
-@y
-if cur_cs=0 then cur_tok:=(cur_cmd*max_char_val)+cur_chr
-@z
-%---------------------------------------
-@x [25] m.374 l.7728 - Omega
- begin eq_define(cur_cs,relax,256); {N.B.: The |save_stack| might change}
-@y
- begin eq_define(cur_cs,relax,too_big_char);
- {N.B.: The |save_stack| might change}
-@z
-%---------------------------------------
-@x [25] m.374 l.7750 - Omega
- buffer[j]:=info(p) mod @'400; incr(j); p:=link(p);
-@y
- buffer[j]:=info(p) mod max_char_val; incr(j); p:=link(p);
-@z
-%---------------------------------------
-@x [25] m.380 l.7812 - Omega
-done: if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
-@y
-done: if cur_cs=0 then cur_tok:=(cur_cmd*max_char_val)+cur_chr
-@z
-%---------------------------------------
-@x [25] m.381 l.7824 - Omega
-if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
-@y
-if cur_cs=0 then cur_tok:=(cur_cmd*max_char_val)+cur_chr
-@z
-%---------------------------------------
-@x [25] m.391 l.7985 - Omega
-if (info(r)>match_token+255)or(info(r)<match_token) then s:=null
-@y
-if (info(r)>=end_match_token)or(info(r)<match_token) then s:=null
-@z
-%---------------------------------------
-@x [26] m.407 l.8161 - Omega
-@ The |scan_left_brace| routine is called when a left brace is supposed to be
-the next non-blank token. (The term ``left brace'' means, more precisely,
-a character whose catcode is |left_brace|.) \TeX\ allows \.{\\relax} to
-appear before the |left_brace|.
-
-@p procedure scan_left_brace; {reads a mandatory |left_brace|}
-begin @<Get the next non-blank non-relax non-call token@>;
-if cur_cmd<>left_brace then
- begin print_err("Missing { inserted");
-@.Missing \{ inserted@>
- help4("A left brace was mandatory here, so I've put one in.")@/
- ("You might want to delete and/or insert some corrections")@/
- ("so that I will find a matching right brace soon.")@/
- ("(If you're confused by all this, try typing `I}' now.)");
- back_error; cur_tok:=left_brace_token+"{"; cur_cmd:=left_brace;
- cur_chr:="{"; incr(align_state);
- end;
-end;
-@y
-@ The |scan_left_brace| routine is called when a left brace is supposed to be
-the next non-blank token. (The term ``left brace'' means, more precisely,
-a character whose catcode is |left_brace|.) \TeX\ allows \.{\\relax} to
-appear before the |left_brace|.
-
-@p procedure scan_left_brace; {reads a mandatory |left_brace|}
-begin @<Get the next non-blank non-relax non-call token@>;
-if cur_cmd<>left_brace then
- begin print_err("Missing { inserted");
-@.Missing \{ inserted@>
- help4("A left brace was mandatory here, so I've put one in.")@/
- ("You might want to delete and/or insert some corrections")@/
- ("so that I will find a matching right brace soon.")@/
- ("(If you're confused by all this, try typing `I}' now.)");
- back_error; cur_tok:=left_brace_token+"{"; cur_cmd:=left_brace;
- cur_chr:="{"; incr(align_state);
- end;
-end;
-
-@ The |scan_right_brace| routine is called when a right brace is supposed to be
-the next non-blank token. (The term ``right brace'' means, more precisely,
-a character whose catcode is |right_brace|.) \TeX\ allows \.{\\relax} to
-appear before the |right_brace|.
-
-@p procedure scan_right_brace; {reads a mandatory |right_brace|}
-begin @<Get the next non-blank non-relax non-call token@>;
-if cur_cmd<>right_brace then
- begin print_err("Missing { inserted");
-@.Missing \{ inserted@>
- help4("A right brace was mandatory here, so I've put one in.")@/
- ("You might want to delete and/or insert some corrections")@/
- ("so that I will find a matching right brace soon.")@/
- ("(If you're confused by all this, try typing `I}' now.)");
- back_error; cur_tok:=right_brace_token+"}"; cur_cmd:=right_brace;
- cur_chr:="}"; incr(align_state);
- end;
-end;
-@z
-%---------------------------------------
-@x [26] m.410 l.8293 - Omega
-@!cur_val:integer; {value returned by numeric scanners}
-@y
-@!cur_val:integer; {value returned by numeric scanners}
-@z
-%---------------------------------------
-@x [26] m.413 l.8335 - Omega
-assign_int: scanned_result(eqtb[m].int)(int_val);
-assign_dimen: scanned_result(eqtb[m].sc)(dimen_val);
-@y
-assign_int: scanned_result(new_eqtb_int(m))(int_val);
-assign_dimen: scanned_result(new_eqtb_sc(m))(dimen_val);
-@z
-%---------------------------------------
-@x [26] m.413 l.8345 - Omega
-char_given,math_given: scanned_result(cur_chr)(int_val);
-@y
-char_given,math_given,omath_given: scanned_result(cur_chr)(int_val);
-@z
-%---------------------------------------
-@x [26] m.414 l.8356 - Omega
-@ @<Fetch a character code from some table@>=
-begin scan_char_num;
-if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
-else if m<math_code_base then scanned_result(equiv(m+cur_val))(int_val)
-else scanned_result(eqtb[m+cur_val].int)(int_val);
-@y
-@ @<Fetch a character code from some table@>=
-begin scan_char_num;
-if m=math_code_base then begin
- cur_val1:=ho(math_code(cur_val));
- if ((cur_val1 div @"1000000)>8) or
- (((cur_val1 mod @"1000000) div @"10000)>15) or
- ((cur_val1 mod @"10000)>255) then
- begin print_err("Extended mathchar used as mathchar");
-@.Bad mathchar@>
- help2("A mathchar number must be between 0 and ""7FFF.")@/
- ("I changed this one to zero."); int_error(cur_val1); cur_val1:=0;
- end;
- cur_val1:=((cur_val1 div @"1000000)*@"1000) +
- (((cur_val1 mod @"1000000) div @"10000)*@"100) +
- (cur_val1 mod @"10000);
- scanned_result(cur_val1)(int_val)
- end
-else if m=(math_code_base+256) then
- scanned_result(ho(math_code(cur_val)))(int_val)
-else if m<math_code_base then scanned_result(equiv(m+cur_val))(int_val)
-else scanned_result(new_eqtb_int(m+cur_val))(int_val);
-@z
-%---------------------------------------
-@x [26] m.433 l.8593 - Omega
-procedure scan_eight_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>255) then
- begin print_err("Bad register code");
-@.Bad register code@>
- help2("A register number must be between 0 and 255.")@/
-@y
-procedure scan_eight_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>biggest_reg) then
- begin print_err("Bad register code");
-@.Bad register code@>
- help2("A register number must be between 0 and 65535.")@/
-@z
-%---------------------------------------
-@x [26] m.434 l.8604 - Omega
-procedure scan_char_num;
-begin scan_int;
-if (cur_val<0)or(cur_val>255) then
- begin print_err("Bad character code");
-@.Bad character code@>
- help2("A character number must be between 0 and 255.")@/
-@y
-procedure scan_char_num;
-begin scan_int;
-if (cur_val<0)or(cur_val>biggest_char) then
- begin print_err("Bad character code");
-@.Bad character code@>
- help2("A character number must be between 0 and 65535.")@/
-@z
-%---------------------------------------
-@x [26] m.435 l.8618 - Omega
-procedure scan_four_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>15) then
- begin print_err("Bad number");
-@.Bad number@>
- help2("Since I expected to read a number between 0 and 15,")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-@y
-procedure scan_four_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>15) then
- begin print_err("Bad number");
-@.Bad number@>
- help2("Since I expected to read a number between 0 and 15,")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-
-procedure scan_big_four_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>255) then
- begin print_err("Bad number");
-@.Bad number@>
- help2("Since I expected to read a number between 0 and 255,")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-@z
-%---------------------------------------
-@x [26] m.436 l.8629 - Omega
-procedure scan_fifteen_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>@'77777) then
- begin print_err("Bad mathchar");
-@.Bad mathchar@>
- help2("A mathchar number must be between 0 and 32767.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-@y
-procedure scan_real_fifteen_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>@'77777) then
- begin print_err("Bad mathchar");
-@.Bad mathchar@>
- help2("A mathchar number must be between 0 and 32767.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-
-procedure scan_fifteen_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>@'77777) then
- begin print_err("Bad mathchar");
-@.Bad mathchar@>
- help2("A mathchar number must be between 0 and 32767.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-cur_val := ((cur_val div @"1000) * @"1000000) +
- (((cur_val mod @"1000) div @"100) * @"10000) +
- (cur_val mod @"100);
-end;
-
-procedure scan_big_fifteen_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>@"7FFFFFF) then
- begin print_err("Bad extended mathchar");
-@.Bad mathchar@>
- help2("An extended mathchar number must be between 0 and ""7FFFFFF.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-@z
-%---------------------------------------
-@x [26] m.437 l.8640 - Omega
-procedure scan_twenty_seven_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>@'777777777) then
- begin print_err("Bad delimiter code");
-@.Bad delimiter code@>
- help2("A numeric delimiter code must be between 0 and 2^{27}-1.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-end;
-@y
-procedure scan_twenty_seven_bit_int;
-begin scan_int;
-if (cur_val<0)or(cur_val>@'777777777) then
- begin print_err("Bad delimiter code");
-@.Bad delimiter code@>
- help2("A numeric delimiter code must be between 0 and 2^{27}-1.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-cur_val1 := (((cur_val mod @"1000) div @"100) * @"10000) +
- (cur_val mod @"100);
-cur_val := cur_val div @"1000;
-cur_val := ((cur_val div @"1000) * @"1000000) +
- (((cur_val mod @"1000) div @"100) * @"10000) +
- (cur_val mod @"100);
-end;
-
-procedure scan_fifty_one_bit_int;
-var iiii:integer;
-begin scan_int;
-if (cur_val<0)or(cur_val>@'777777777) then
- begin print_err("Bad delimiter code");
-@.Bad delimiter code@>
- help2("A numeric delimiter (first part) must be between 0 and 2^{27}-1.")
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-iiii:=cur_val;
-scan_int;
-if (cur_val<0)or(cur_val>@"FFFFFF) then
- begin print_err("Bad delimiter code");
-@.Bad delimiter code@>
-help2("A numeric delimiter (second part) must be between 0 and 2^{24}-1.")@/
- ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
- end;
-cur_val1:=cur_val;
-cur_val:=iiii;
-end;
-
-procedure scan_string_argument;
-var s:integer;
-begin
-scan_left_brace;
-get_x_token;
-while (cur_cmd<>right_brace) do
- begin
- if (cur_cmd=letter) or (cur_cmd=other_char) then begin
- str_room(1); append_char(cur_chr);
- end
- else if (cur_cmd=spacer) then begin
- str_room(1); append_char(" ");
- end
- else begin
- print_nl("Bad token appearing in string argument");
- end;
- get_x_token;
- end;
-s:=make_string;
-if str_eq_str("mi",s) then s:="mi";
-if str_eq_str("mo",s) then s:="mo";
-if str_eq_str("mn",s) then s:="mn";
-cur_val:=s;
-end;
-@z
-%---------------------------------------
-@x [26] m.442 l.8720 - Omega
-if cur_val>255 then
- begin print_err("Improper alphabetic constant");
-@y
-if cur_val>biggest_char then
- begin print_err("Improper alphabetic constant");
-@z
-%---------------------------------------
-@x [27] m.468 l.9200 - Omega
-@d job_name_code=5 {command code for \.{\\jobname}}
-@y
-@d omega_code=5 {command code for \.{\\OmegaVersion}}
-@d job_name_code=6 {command code for \.{\\jobname}}
-@z
-%---------------------------------------
-@x [27] m.468 l.9200 - Omega
-primitive("jobname",convert,job_name_code);@/
-@!@:job_name_}{\.{\\jobname} primitive@>
-@y
-primitive("OmegaVersion",convert,omega_code);@/
-@!@:omega_version_}{\.{\\OmegaVersion} primitive@>
-primitive("jobname",convert,job_name_code);@/
-@!@:job_name_}{\.{\\jobname} primitive@>
-@z
-%---------------------------------------
-@x [27] m.469 l.9223 - Omega
- othercases print_esc("jobname")
-@y
- omega_code: print_esc("OmegaVersion");
- othercases print_esc("jobname")
-@z
-%---------------------------------------
-@x [27] m.471 l.9248 - Omega
-job_name_code: if job_name=0 then open_log_file;
-@y
-omega_code:;
-job_name_code: if job_name=0 then open_log_file;
-@z
-%---------------------------------------
-@x [27] m.472 l.9258 - Omega
-job_name_code: print(job_name);
-@y
-omega_code: print("1.23.2.3");
-job_name_code: print(job_name);
-@z
-%---------------------------------------
-@x [28] m.491 l.9610 - Omega
-text(frozen_fi):="fi"; eqtb[frozen_fi]:=eqtb[cur_val];
-@y
-settext(frozen_fi,"fi"); set_new_eqtb(frozen_fi,new_eqtb(cur_val));
-@z
-%---------------------------------------
-@x [28] m.506 l.9802 - Omega
-if (cur_cmd>active_char)or(cur_chr>255) then {not a character}
- begin m:=relax; n:=256;
-@y
-if (cur_cmd>active_char)or(cur_chr>biggest_char) then {not a character}
- begin m:=relax; n:=too_big_char;
-@z
-%---------------------------------------
-@x [28] m.506 l.9808 - Omega
-if (cur_cmd>active_char)or(cur_chr>255) then
- begin cur_cmd:=relax; cur_chr:=256;
-@y
-if (cur_cmd>active_char)or(cur_chr>biggest_char) then
- begin cur_cmd:=relax; cur_chr:=too_big_char;
-@z
-%---------------------------------------
-@x [29] m.526 l.10178 - Omega
-loop@+begin if (cur_cmd>other_char)or(cur_chr>255) then {not a character}
-@y
-loop@+begin if (cur_cmd>other_char)or(cur_chr>biggest_char) then
- {not a character}
-@z
-%---------------------------------------
-@x [37] m.780 l.15354 - Omega
-@d span_code=256 {distinct from any character}
-@d cr_code=257 {distinct from |span_code| and from any character}
-@y
-@d span_code=special_char {distinct from any character}
-@d cr_code=span_code+1 {distinct from |span_code| and from any character}
-@z
-%---------------------------------------
-@x [37] m.780 l.15364 - Omega
-text(frozen_cr):="cr"; eqtb[frozen_cr]:=eqtb[cur_val];@/
-primitive("crcr",car_ret,cr_cr_code);
-@!@:cr_cr_}{\.{\\crcr} primitive@>
-text(frozen_end_template):="endtemplate"; text(frozen_endv):="endtemplate";
-eq_type(frozen_endv):=endv; equiv(frozen_endv):=null_list;
-eq_level(frozen_endv):=level_one;@/
-eqtb[frozen_end_template]:=eqtb[frozen_endv];
-eq_type(frozen_end_template):=end_template;
-@y
-settext(frozen_cr,"cr");
-set_new_eqtb(frozen_cr,new_eqtb(cur_val));@/
-primitive("crcr",car_ret,cr_cr_code);
-@!@:cr_cr_}{\.{\\crcr} primitive@>
-settext(frozen_end_template,"endtemplate"); settext(frozen_endv,"endtemplate");
-set_eq_type(frozen_endv,endv); set_equiv(frozen_endv,null_list);
-set_eq_level(frozen_endv,level_one);@/
-set_new_eqtb(frozen_end_template,new_eqtb(frozen_endv));
-set_eq_type(frozen_end_template,end_template);
-@z
-%---------------------------------------
-@x [37] m.798 l.15651 - Omega
-if n>max_quarterword then confusion("256 spans"); {this can happen, but won't}
-@^system dependencies@>
-@:this can't happen 256 spans}{\quad 256 spans@>
-@y
-if n>max_quarterword then confusion("too many spans");
- {this can happen, but won't}
-@^system dependencies@>
-@:this can't happen too many spans}{\quad too many spans@>
-@z
-%---------------------------------------
-@x [37] m.804 l.15794 - Omega
- overfull_rule:=0; {prevent rule from being packaged}
- p:=hpack(preamble,saved(1),saved(0)); overfull_rule:=rule_save;
-@y
- set_new_eqtb_sc(dimen_base+overfull_rule_code,0);
- {prevent rule from being packaged}
- p:=hpack(preamble,saved(1),saved(0));
- set_new_eqtb_sc(dimen_base+overfull_rule_code,rule_save);
-@z
-%---------------------------------------
-@x [37] m.827 l.16255 - Omega
-check_shrinkage(left_skip); check_shrinkage(right_skip);@/
-@y
-if (shrink_order(left_skip)<>normal)and(shrink(left_skip)<>0) then
- begin set_equiv(glue_base+left_skip_code,finite_shrink(left_skip));
- end;
-if (shrink_order(right_skip)<>normal)and(shrink(right_skip)<>0) then
- begin set_equiv(glue_base+right_skip_code,finite_shrink(right_skip));
- end;
-@z
-%---------------------------------------
-@x [40] m.891 l.17434 - Omega
-$c_1$ will be treated as nonletters. The |hyphen_char| for that font
-must be between 0 and 255, otherwise hyphenation will not be attempted.
-@y
-$c_1$ will be treated as nonletters. The |hyphen_char| for that font must
-be between 0 and |biggest_char|, otherwise hyphenation will not be attempted.
-@z
-%---------------------------------------
-@x [40] m.892 l.17469 - Omega
-@!hc:array[0..65] of 0..256; {word to be hyphenated}
-@!hn:small_number; {the number of positions occupied in |hc|}
-@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
-@!hf:internal_font_number; {font number of the letters in |hc|}
-@!hu:array[0..63] of 0..256; {like |hc|, before conversion to lowercase}
-@!hyf_char:integer; {hyphen character of the relevant font}
-@!cur_lang,@!init_cur_lang:ASCII_code; {current hyphenation table of interest}
-@!l_hyf,@!r_hyf,@!init_l_hyf,@!init_r_hyf:integer; {limits on fragment sizes}
-@!hyf_bchar:halfword; {boundary character after $c_n$}
-@y
-@!hc:array[0..65] of 0..too_big_char; {word to be hyphenated}
-@!hn:small_number; {the number of positions occupied in |hc|}
-@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
-@!hf:internal_font_number; {font number of the letters in |hc|}
-@!hu:array[0..63] of 0..too_big_char;
- {like |hc|, before conversion to lowercase}
-@!hyf_char:integer; {hyphen character of the relevant font}
-@!cur_lang,@!init_cur_lang:0..biggest_lang;
- {current hyphenation table of interest}
-@!l_hyf,@!r_hyf,@!init_l_hyf,@!init_r_hyf:integer; {limits on fragment sizes}
-@!hyf_bchar:halfword; {boundary character after $c_n$}
-@!max_hyph_char:integer;
-
-@ @<Set initial values of key variables@>=
-max_hyph_char:=too_big_lang;
-
-@z
-%---------------------------------------
-@x [40] m.893 l.17483 - Omega
-@!c:0..255; {character being considered for hyphenation}
-@y
-@!c:ASCII_code; {character being considered for hyphenation}
-@z
-%---------------------------------------
-@x [40] m.896 l.17534 - Omega
-if hyf_char>255 then goto done1;
-@y
-if hyf_char>biggest_char then goto done1;
-@z
-%---------------------------------------
-@x [40] m.897 l.17546 - Omega
- if lc_code(c)=0 then goto done3;
-@y
- if lc_code(c)=0 then goto done3;
- if lc_code(c)>max_hyph_char then goto done3;
-@z
-%---------------------------------------
-@x [40] m.898 l.17572 - Omega
- if lc_code(c)=0 then goto done3;
-@y
- if lc_code(c)=0 then goto done3;
- if lc_code(c)>max_hyph_char then goto done3;
-@z
-%---------------------------------------
-@x [41] m.903 l.17648 - Omega
- begin hu[0]:=256; init_lig:=false;
-@y
- begin hu[0]:=max_hyph_char; init_lig:=false;
-@z
-%---------------------------------------
-@x [41] m.903 l.17660 - Omega
-found2: s:=ha; j:=0; hu[0]:=256; init_lig:=false; init_list:=null;
-@y
-found2: s:=ha; j:=0; hu[0]:=max_hyph_char; init_lig:=false; init_list:=null;
-@z
-%---------------------------------------
-@x [41] m.905 l.17707 - Omega
-getting the input $x_j\ldots x_n$ from the |hu| array. If $x_j=256$,
-we consider $x_j$ to be an implicit left boundary character; in this
-case |j| must be strictly less than~|n|. There is a
-parameter |bchar|, which is either 256 or an implicit right boundary character
-@y
-getting the input $x_j\ldots x_n$ from the |hu| array. If $x_j=|max_hyph_char|$,
-we consider $x_j$ to be an implicit left boundary character; in this
-case |j| must be strictly less than~|n|. There is a
-parameter |bchar|, which is either |max_hyph_char|
-or an implicit right boundary character
-@z
-%---------------------------------------
-@x [41] m.916 l.17980 - Omega
- begin decr(l); c:=hu[l]; c_loc:=l; hu[l]:=256;
-@y
- begin decr(l); c:=hu[l]; c_loc:=l; hu[l]:=max_hyph_char;
-@z
-%---------------------------------------
-@x [42] m.921 l.18079 - Omega
-@!op_start:array[ASCII_code] of 0..trie_op_size; {offset for current language}
-@y
-@!op_start:array[0..biggest_lang] of 0..trie_op_size;
- {offset for current language}
-@z
-%---------------------------------------
-@x [42] m.923 l.18086 - Omega
-hyphenation algorithm is quite short. In the following code we set |hc[hn+2]|
-to the impossible value 256, in order to guarantee that |hc[hn+3]| will
-@y
-hyphenation algorithm is quite short. In the following code we set |hc[hn+2]| to
-the impossible value |max_hyph_char|, in order to guarantee that |hc[hn+3]| will
-@z
-%---------------------------------------
-@x [42] m.923 l.18095 - Omega
-hc[0]:=0; hc[hn+1]:=0; hc[hn+2]:=256; {insert delimiters}
-@y
-hc[0]:=0; hc[hn+1]:=0; hc[hn+2]:=max_hyph_char; {insert delimiters}
-@z
-%---------------------------------------
-@x [42] m.934 l.18206 - Omega
-@d set_cur_lang==if language<=0 then cur_lang:=0
- else if language>255 then cur_lang:=0
-@y
-@d set_cur_lang==if language<=0 then cur_lang:=0
- else if language>biggest_lang then cur_lang:=0
-@z
-%---------------------------------------
-@x [43] m.943 l.18348 - Omega
-@!trie_used:array[ASCII_code] of quarterword;
- {largest opcode used so far for this language}
-@!trie_op_lang:array[1..trie_op_size] of ASCII_code;
-@y
-@!trie_used:array[0..biggest_lang] of quarterword;
- {largest opcode used so far for this language}
-@!trie_op_lang:array[1..trie_op_size] of 0..biggest_lang;
-@z
-%---------------------------------------
-@x [43] m.945 l.18400 - Omega
-for j:=1 to 255 do op_start[j]:=op_start[j-1]+qo(trie_used[j-1]);
-@y
-for j:=1 to biggest_lang do op_start[j]:=op_start[j-1]+qo(trie_used[j-1]);
-@z
-%---------------------------------------
-@x [43] m.946 l.18416 - Omega
-for k:=0 to 255 do trie_used[k]:=min_quarterword;
-@y
-for k:=0 to biggest_lang do trie_used[k]:=min_quarterword;
-@z
-%---------------------------------------
-@x [43] m.947 l.18438 - Omega
-@!init @!trie_c:packed array[trie_pointer] of packed_ASCII_code;
-@y
-@!init @!trie_c:packed array[trie_pointer] of ASCII_code;
-@z
-%---------------------------------------
-@x [43] m.952 l.18551 - Omega
-for p:=0 to 255 do trie_min[p]:=p+1;
-@y
-for p:=0 to biggest_char do trie_min[p]:=p+1;
-@z
-%---------------------------------------
-@x [43] m.953 l.18569 - Omega
-@!ll:1..256; {upper limit of |trie_min| updating}
-@y
-@!ll:1..too_big_char; {upper limit of |trie_min| updating}
-@z
-%---------------------------------------
-@x [43] m.953 l.18573 - Omega
- @<Ensure that |trie_max>=h+256|@>;
-@y
- @<Ensure that |trie_max>=h+max_hyph_char|@>;
-@z
-%---------------------------------------
-@x [43] m.954 l.18582 - Omega
-@ By making sure that |trie_max| is at least |h+256|, we can be sure that
-|trie_max>z|, since |h=z-c|. It follows that location |trie_max| will
-never be occupied in |trie|, and we will have |trie_max>=trie_link(z)|.
-
-@<Ensure that |trie_max>=h+256|@>=
-if trie_max<h+256 then
- begin if trie_size<=h+256 then overflow("pattern memory",trie_size);
-@y
-@ By making sure that |trie_max| is at least |h+max_hyph_char|,
-we can be sure that
-|trie_max>z|, since |h=z-c|. It follows that location |trie_max| will
-never be occupied in |trie|, and we will have |trie_max>=trie_link(z)|.
-
-@<Ensure that |trie_max>=h+max_hyph_char|@>=
-if trie_max<h+max_hyph_char then
- begin if trie_size<=h+max_hyph_char then overflow("pattern memory",trie_size);
-@z
-%---------------------------------------
-@x [43] m.954 l.18592 - Omega
- until trie_max=h+256;
-@y
- until trie_max=h+max_hyph_char;
-@z
-%---------------------------------------
-@x [43] m.956 l.18607 - Omega
-if l<256 then
- begin if z<256 then ll:=z @+else ll:=256;
-@y
-if l<max_hyph_char then
- begin if z<max_hyph_char then ll:=z @+else ll:=max_hyph_char;
-@z
-%---------------------------------------
-@x [43] m.958 l.18637 - Omega
-if trie_root=0 then {no patterns were given}
- begin for r:=0 to 256 do trie[r]:=h;
- trie_max:=256;
-@y
-if trie_root=0 then {no patterns were given}
- begin for r:=0 to max_hyph_char do trie[r]:=h;
- trie_max:=max_hyph_char;
-@z
-%---------------------------------------
-@x [43] m.962 l.18714 - Omega
-@ @<Append a new letter or a hyphen level@>=
-if digit_sensed or(cur_chr<"0")or(cur_chr>"9") then
- begin if cur_chr="." then cur_chr:=0 {edge-of-word delimiter}
- else begin cur_chr:=lc_code(cur_chr);
- if cur_chr=0 then
- begin print_err("Nonletter");
-@.Nonletter@>
- help1("(See Appendix H.)"); error;
- end;
- end;
-@y
-@ @<Append a new letter or a hyphen level@>=
-if digit_sensed or(cur_chr<"0")or(cur_chr>"9") then
- begin if cur_chr="." then cur_chr:=0 {edge-of-word delimiter}
- else begin cur_chr:=lc_code(cur_chr);
- if cur_chr=0 then
- begin print_err("Nonletter");
-@.Nonletter@>
- help1("(See Appendix H.)"); error;
- end;
- end;
- if cur_chr>max_hyph_char then max_hyph_char:=cur_chr;
-@z
-%---------------------------------------
-@x [43] m.966 l. - Omega
-procedure init_trie;
-var @!p:trie_pointer; {pointer for initialization}
-@!j,@!k,@!t:integer; {all-purpose registers for initialization}
-@!r,@!s:trie_pointer; {used to clean up the packed |trie|}
-@!h:two_halves; {template used to zero out |trie|'s holes}
-begin @<Get ready to compress the trie@>;
-@y
-procedure init_trie;
-var @!p:trie_pointer; {pointer for initialization}
-@!j,@!k,@!t:integer; {all-purpose registers for initialization}
-@!r,@!s:trie_pointer; {used to clean up the packed |trie|}
-@!h:two_halves; {template used to zero out |trie|'s holes}
-begin
-incr(max_hyph_char);
-@<Get ready to compress the trie@>;
-@z
-%---------------------------------------
-@x [44] m.977 l.19008 - Omega
-if q=null then box(n):=null {the |eq_level| of the box stays the same}
-else box(n):=vpack(q,natural);
-@y
-if q=null then set_equiv(box_base+n,null)
- {the |eq_level| of the box stays the same}
-else set_equiv(box_base+n,vpack(q,natural));
-@z
-%---------------------------------------
-@x [45] m.992 l.24928 - Omega
-flush_node_list(box(n)); box(n):=null;
-@y
-flush_node_list(box(n)); set_equiv(box_base+n,null);
-@z
-%---------------------------------------
-@x [45] m.994 l.19364 - Omega
-@!n:min_quarterword..255; {insertion box number}
-@y
-@!n:min_quarterword..biggest_reg; {insertion box number}
-@z
-%---------------------------------------
-@x [45] m.1012 l.19655 - Omega
-@!n:min_quarterword..255; {insertion box number}
-@y
-@!n:min_quarterword..biggest_reg; {insertion box number}
-@z
-%---------------------------------------
-@x [45] m.1014 l.19710 - Omega
-split_top_skip:=save_split_top_skip;
-@y
-set_equiv(glue_base+split_top_skip_code,save_split_top_skip);
-@z
-%---------------------------------------
-@x [45] m.1017 l.19753 - Omega
-save_vbadness:=vbadness; vbadness:=inf_bad;
-save_vfuzz:=vfuzz; vfuzz:=max_dimen; {inhibit error messages}
-box(255):=vpackage(link(page_head),best_size,exactly,page_max_depth);
-vbadness:=save_vbadness; vfuzz:=save_vfuzz;
-@y
-save_vbadness:=vbadness;
-set_new_eqtb_int(int_base+vbadness_code,inf_bad);
-save_vfuzz:=vfuzz;
-set_new_eqtb_sc(dimen_base+vfuzz_code,max_dimen);
- {inhibit error messages}
-set_equiv(box_base+255,
- vpackage(link(page_head),best_size,exactly,page_max_depth));
-set_new_eqtb_int(int_base+vbadness_code,save_vbadness);
-set_new_eqtb_sc(dimen_base+vfuzz_code,save_vfuzz);
-@z
-%---------------------------------------
-@x [45] m.1018 l.19774 - Omega
- if box(n)=null then box(n):=new_null_box;
-@y
- if box(n)=null then set_equiv(box_base+n,new_null_box);
-@z
-%---------------------------------------
-@x [45] m.1021 l.19817 - Omega
- split_top_skip:=split_top_ptr(p);
- ins_ptr(p):=prune_page_top(broken_ptr(r));
- if ins_ptr(p)<>null then
- begin temp_ptr:=vpack(ins_ptr(p),natural);
- height(p):=height(temp_ptr)+depth(temp_ptr);
- free_node(temp_ptr,box_node_size); wait:=true;
- end;
- end;
-best_ins_ptr(r):=null;
-n:=qo(subtype(r));
-temp_ptr:=list_ptr(box(n));
-free_node(box(n),box_node_size);
-box(n):=vpack(temp_ptr,natural);
-@y
- set_equiv(glue_base+split_top_skip_code,split_top_ptr(p));
- ins_ptr(p):=prune_page_top(broken_ptr(r));
- if ins_ptr(p)<>null then
- begin temp_ptr:=vpack(ins_ptr(p),natural);
- height(p):=height(temp_ptr)+depth(temp_ptr);
- free_node(temp_ptr,box_node_size); wait:=true;
- end;
- end;
-best_ins_ptr(r):=null;
-n:=qo(subtype(r));
-temp_ptr:=list_ptr(box(n));
-free_node(box(n),box_node_size);
-set_equiv(box_base+n,vpack(temp_ptr,natural));
-@z
-%---------------------------------------
-@x [45] m.1023 l.19854 - Omega
-ship_out(box(255)); box(255):=null;
-@y
-ship_out(box(255)); set_equiv(box_base+255,null);
-@z
-%---------------------------------------
-@x [46] m.1046 l.20339 - Omega
-non_math(math_given), non_math(math_comp), non_math(delim_num),
-@y
-non_math(math_given), non_math(omath_given),
-non_math(math_comp), non_math(delim_num),
-@z
-%---------------------------------------
-@x [47] m.1071 l.20718 - Omega
-|box_flag+255| represent `\.{\\setbox0}' through `\.{\\setbox255}';
-codes |box_flag+256| through |box_flag+511| represent `\.{\\global\\setbox0}'
-through `\.{\\global\\setbox255}';
-code |box_flag+512| represents `\.{\\shipout}'; and codes |box_flag+513|
-through |box_flag+515| represent `\.{\\leaders}', `\.{\\cleaders}',
-@y
-|box_flag+biggest_reg| represent `\.{\\setbox0}' through
-`\.{\\setbox}|biggest_reg|'; codes |box_flag+biggest_reg+1| through
-|box_flag+2*biggest_reg| represent `\.{\\global\\setbox0}'
-through `\.{\\global\\setbox}|biggest_reg|'; code |box_flag+2*number_regs|
-represents `\.{\\shipout}'; and codes |box_flag+2*number_regs+1|
-through |box_flag+2*number_regs+3| represent `\.{\\leaders}', `\.{\\cleaders}',
-@z
-%---------------------------------------
-@x [47] m.1071 l.20732 - Omega
-@d ship_out_flag==box_flag+512 {context code for `\.{\\shipout}'}
-@d leader_flag==box_flag+513 {context code for `\.{\\leaders}'}
-@y
-@d ship_out_flag==box_flag+(number_regs+number_regs)
- {context code for `\.{\\shipout}'}
-@d leader_flag==ship_out_flag+1 {context code for `\.{\\leaders}'}
-@z
-%---------------------------------------
-@x [47] m.1077 l.20853 - Omega
-if box_context<box_flag+256 then
- eq_define(box_base-box_flag+box_context,box_ref,cur_box)
-else geq_define(box_base-box_flag-256+box_context,box_ref,cur_box)
-@y
-if box_context<box_flag+number_regs then
- eq_define(box_base-box_flag+box_context,box_ref,cur_box)
-else geq_define(box_base-box_flag-number_regs+box_context,box_ref,cur_box)
-@z
-%---------------------------------------
-@x [47] m.1079 l.20888 - Omega
- box(cur_val):=null; {the box becomes void, at the same level}
-@y
- set_equiv(box_base+cur_val,null);
- {the box becomes void, at the same level}
-@z
-%---------------------------------------
-@x [47] m.1100 l.21156 - Omega
- if saved(0)<255 then
-@y
- if saved(0)<>255 then
-@z
-%---------------------------------------
-@x [47] m.1109 l.21265 - Omega
-@ The |un_hbox| and |un_vbox| commands unwrap one of the 256 current boxes.
-@y
-@ The |un_hbox| and |un_vbox| commands unwrap one of the current boxes.
-@z
-%---------------------------------------
-@x [47] m.1110 l.21287 - Omega
-else begin link(tail):=list_ptr(p); box(cur_val):=null;
-@y
-else begin link(tail):=list_ptr(p);
-set_equiv(box_base+cur_val,null);
-@z
-%---------------------------------------
-@x [47] m.1117 l.21342 - Omega
- if c>=0 then if c<256 then pre_break(tail):=new_character(cur_font,c);
-@y
- if c>=0 then if c<=biggest_char then
- pre_break(tail):=new_character(cur_font,c);
-@z
-%---------------------------------------
-@x [48] m.1151 l.21810 - Omega
-@ Recall that the |nucleus|, |subscr|, and |supscr| fields in a noad are
-broken down into subfields called |math_type| and either |info| or
-|(fam,character)|. The job of |scan_math| is to figure out what to place
-in one of these principal fields; it looks at the subformula that
-comes next in the input, and places an encoding of that subformula
-into a given word of |mem|.
-
-@d fam_in_range==((cur_fam>=0)and(cur_fam<16))
-
-@<Declare act...@>=
-procedure scan_math(@!p:pointer);
-label restart,reswitch,exit;
-var c:integer; {math character code}
-begin restart:@<Get the next non-blank non-relax...@>;
-reswitch:case cur_cmd of
-letter,other_char,char_given: begin c:=ho(math_code(cur_chr));
- if c=@'100000 then
- begin @<Treat |cur_chr| as an active character@>;
- goto restart;
- end;
- end;
-char_num: begin scan_char_num; cur_chr:=cur_val; cur_cmd:=char_given;
- goto reswitch;
- end;
-math_char_num: begin scan_fifteen_bit_int; c:=cur_val;
- end;
-math_given: c:=cur_chr;
-delim_num: begin scan_twenty_seven_bit_int; c:=cur_val div @'10000;
- end;
-othercases @<Scan a subformula enclosed in braces and |return|@>
-endcases;@/
-math_type(p):=math_char; character(p):=qi(c mod 256);
-if (c>=var_code)and fam_in_range then fam(p):=cur_fam
-else fam(p):=(c div 256) mod 16;
-exit:end;
-@y
-@ Recall that the |nucleus|, |subscr|, and |supscr| fields in a noad are
-broken down into subfields called |math_type| and either |info| or
-|(fam,character)|. The job of |scan_math| is to figure out what to place
-in one of these principal fields; it looks at the subformula that
-comes next in the input, and places an encoding of that subformula
-into a given word of |mem|.
-
-@d fam_in_range==((cur_fam>=0)and(cur_fam<16))
-
-@<Declare act...@>=
-@t\4@>@<Declare the function called |fin_mlist|@>@t@>@;@/
-
-procedure scan_math(@!p:pointer);
-label restart,reswitch,exit;
-var c:integer; {math character code}
-begin restart:@<Get the next non-blank non-relax...@>;
-reswitch:
-case cur_cmd of
-letter,other_char,char_given: begin
- c:=ho(math_code(cur_chr));
- if c=@"8000000 then
- begin @<Treat |cur_chr| as an active character@>;
- goto restart;
- end;
- end;
-char_num: begin scan_char_num; cur_chr:=cur_val; cur_cmd:=char_given;
- goto reswitch;
- end;
-math_char_num: begin
- if cur_chr=0 then scan_fifteen_bit_int
- else scan_big_fifteen_bit_int;
- c:=cur_val;
- end;
-math_given: begin
- c := ((cur_chr div @"1000) * @"1000000) +
- (((cur_chr mod @"1000) div @"100) * @"10000) +
- (cur_chr mod @"100);
- end;
-omath_given: begin c:=cur_chr;
- end;
-delim_num: begin
- if cur_chr=0 then scan_twenty_seven_bit_int
- else scan_fifty_one_bit_int;
- c:=cur_val;
- end;
-othercases @<Scan a subformula enclosed in braces and |return|@>
-endcases;@/
-math_type(p):=math_char; character(p):=qi(c mod @"10000);
-if (c>=var_code)and fam_in_range then fam(p):=cur_fam
-else fam(p):=(c div @"10000) mod @"100;
-exit:end;
-@z
-%---------------------------------------
-@x [48] m.1154 l.21860 - Omega
-mmode+letter,mmode+other_char,mmode+char_given:
- set_math_char(ho(math_code(cur_chr)));
-mmode+char_num: begin scan_char_num; cur_chr:=cur_val;
- set_math_char(ho(math_code(cur_chr)));
- end;
-mmode+math_char_num: begin scan_fifteen_bit_int; set_math_char(cur_val);
- end;
-mmode+math_given: set_math_char(cur_chr);
-mmode+delim_num: begin scan_twenty_seven_bit_int;
- set_math_char(cur_val div @'10000);
-@y
-mmode+letter,mmode+other_char,mmode+char_given:
- set_math_char(ho(math_code(cur_chr)));
-mmode+char_num: begin scan_char_num; cur_chr:=cur_val;
- set_math_char(ho(math_code(cur_chr)));
- end;
-mmode+math_char_num: begin
- if cur_chr=0 then scan_fifteen_bit_int
- else scan_big_fifteen_bit_int;
- set_math_char(cur_val);
- end;
-mmode+math_given: begin
- set_math_char(((cur_chr div @"1000) * @"1000000) +
- (((cur_chr mod @"1000) div @"100) * @"10000) +
- (cur_chr mod @"100));
- end;
-mmode+omath_given: begin
- set_math_char(cur_chr);
- end;
-mmode+delim_num: begin
- if cur_chr=0 then scan_twenty_seven_bit_int
- else scan_fifty_one_bit_int;
- set_math_char(cur_val);
-@z
-%---------------------------------------
-@x [48] m.1155 l.21878 - Omega
-procedure set_math_char(@!c:integer);
-var p:pointer; {the new noad}
-begin if c>=@'100000 then
- @<Treat |cur_chr|...@>
-else begin p:=new_noad; math_type(nucleus(p)):=math_char;
- character(nucleus(p)):=qi(c mod 256);
- fam(nucleus(p)):=(c div 256) mod 16;
- if c>=var_code then
- begin if fam_in_range then fam(nucleus(p)):=cur_fam;
- type(p):=ord_noad;
- end
- else type(p):=ord_noad+(c div @'10000);
- link(tail):=p; tail:=p;
- end;
-end;
-@y
-procedure set_math_char(@!c:integer);
-var p,q,r:pointer; {the new noad}
-begin if c>=@"8000000 then
- @<Treat |cur_chr|...@>
-else begin p:=new_noad; math_type(nucleus(p)):=math_char;
- character(nucleus(p)):=qi(c mod @"10000);
- fam(nucleus(p)):=(c div @"10000) mod @"100;
- if c>=var_code then
- begin if fam_in_range then fam(nucleus(p)):=cur_fam;
- type(p):=ord_noad;
- end
- else type(p):=ord_noad+(c div @"1000000);
- link(tail):=p; tail:=p;
- end;
-end;
-@z
-%---------------------------------------
-@x [48] m.1160 l.21966 - Omega
-procedure scan_delimiter(@!p:pointer;@!r:boolean);
-begin if r then scan_twenty_seven_bit_int
-else begin @<Get the next non-blank non-relax...@>;
- case cur_cmd of
- letter,other_char: cur_val:=del_code(cur_chr);
- delim_num: scan_twenty_seven_bit_int;
- othercases cur_val:=-1
- endcases;
- end;
-if cur_val<0 then @<Report that an invalid delimiter code is being changed
- to null; set~|cur_val:=0|@>;
-small_fam(p):=(cur_val div @'4000000) mod 16;
-small_char(p):=qi((cur_val div @'10000) mod 256);
-large_fam(p):=(cur_val div 256) mod 16;
-large_char(p):=qi(cur_val mod 256);
-@y
-procedure scan_delimiter(@!p:pointer;@!r:integer);
-begin if r=1 then scan_twenty_seven_bit_int
-else if r=2 then scan_fifty_one_bit_int
-else begin @<Get the next non-blank non-relax...@>;
- case cur_cmd of
- letter,other_char: begin
- cur_val:=del_code0(cur_chr); cur_val1:=del_code1(cur_chr);
- end;
- delim_num: if cur_chr=0 then scan_twenty_seven_bit_int
- else scan_fifty_one_bit_int;
- othercases begin cur_val:=-1; cur_val1:=-1; end;
- endcases;
- end;
-if cur_val<0 then begin @<Report that an invalid delimiter code is being changed
- to null; set~|cur_val:=0|@>;
- cur_val1:=0;
- end;
-small_fam(p):=(cur_val div @"10000) mod @"100;
-small_char(p):=qi(cur_val mod @"10000);
-large_fam(p):=(cur_val1 div @"10000) mod @"100;
-large_char(p):=qi(cur_val1 mod @"10000);
-@z
-%---------------------------------------
-@x [48] m.1163 l.22005 - Omega
-scan_delimiter(left_delimiter(tail),true); scan_math(nucleus(tail));
-@y
-scan_delimiter(left_delimiter(tail),cur_chr+1); scan_math(nucleus(tail));
-@z
-%---------------------------------------
-@x [48] m.1165 l.22012 - Omega
-procedure math_ac;
-begin if cur_cmd=accent then
- @<Complain that the user should have said \.{\\mathaccent}@>;
-tail_append(get_node(accent_noad_size));
-type(tail):=accent_noad; subtype(tail):=normal;
-mem[nucleus(tail)].hh:=empty_field;
-mem[subscr(tail)].hh:=empty_field;
-mem[supscr(tail)].hh:=empty_field;
-math_type(accent_chr(tail)):=math_char;
-scan_fifteen_bit_int;
-character(accent_chr(tail)):=qi(cur_val mod 256);
-if (cur_val>=var_code)and fam_in_range then fam(accent_chr(tail)):=cur_fam
-else fam(accent_chr(tail)):=(cur_val div 256) mod 16;
-scan_math(nucleus(tail));
-end;
-@y
-procedure math_ac;
-begin if cur_cmd=accent then
- @<Complain that the user should have said \.{\\mathaccent}@>;
-tail_append(get_node(accent_noad_size));
-type(tail):=accent_noad; subtype(tail):=normal;
-mem[nucleus(tail)].hh:=empty_field;
-mem[subscr(tail)].hh:=empty_field;
-mem[supscr(tail)].hh:=empty_field;
-math_type(accent_chr(tail)):=math_char;
-if cur_chr=0 then scan_fifteen_bit_int
-else scan_big_fifteen_bit_int;
-character(accent_chr(tail)):=qi(cur_val mod @"10000);
-if (cur_val>=var_code)and fam_in_range then fam(accent_chr(tail)):=cur_fam
-else fam(accent_chr(tail)):=(cur_val div @"10000) mod @"100;
-scan_math(nucleus(tail));
-end;
-@z
-%---------------------------------------
-@x [48] m.1174 l.22085 - Omega
-@t\4@>@<Declare the function called |fin_mlist|@>@t@>@;@/
-@y
-@z
-%---------------------------------------
-@x [48] m.1188 l.22284 - Omega
-text(frozen_right):="right"; eqtb[frozen_right]:=eqtb[cur_val];
-@y
-settext(frozen_right,"right");
-set_new_eqtb(frozen_right,new_eqtb(cur_val));
-@z
-%---------------------------------------
-@x [49] m.1214 l.22700 - Omega
-@d word_define(#)==if global then geq_word_define(#)@+else eq_word_define(#)
-@y
-@d word_define(#)==if global then geq_word_define(#)@+else eq_word_define(#)
-@d del_word_define(#)==if global
- then del_geq_word_define(#)@+else del_eq_word_define(#)
-@z
-%---------------------------------------
-@x [49] m.1216 l.22734 - Omega
-text(frozen_protection):="inaccessible";
-@y
-settext(frozen_protection,"inaccessible");
-@z
-%---------------------------------------
-@x [49] m.1222 l.22789 - Omega
-@d char_def_code=0 {|shorthand_def| for \.{\\chardef}}
-@d math_char_def_code=1 {|shorthand_def| for \.{\\mathchardef}}
-@d count_def_code=2 {|shorthand_def| for \.{\\countdef}}
-@d dimen_def_code=3 {|shorthand_def| for \.{\\dimendef}}
-@d skip_def_code=4 {|shorthand_def| for \.{\\skipdef}}
-@d mu_skip_def_code=5 {|shorthand_def| for \.{\\muskipdef}}
-@d toks_def_code=6 {|shorthand_def| for \.{\\toksdef}}
-
-@<Put each...@>=
-primitive("chardef",shorthand_def,char_def_code);@/
-@!@:char_def_}{\.{\\chardef} primitive@>
-primitive("mathchardef",shorthand_def,math_char_def_code);@/
-@!@:math_char_def_}{\.{\\mathchardef} primitive@>
-@y
-@d char_def_code=0 {|shorthand_def| for \.{\\chardef}}
-@d math_char_def_code=1 {|shorthand_def| for \.{\\mathchardef}}
-@d omath_char_def_code=2 {|shorthand_def| for \.{\\omathchardef}}
-@d count_def_code=3 {|shorthand_def| for \.{\\countdef}}
-@d dimen_def_code=4 {|shorthand_def| for \.{\\dimendef}}
-@d skip_def_code=5 {|shorthand_def| for \.{\\skipdef}}
-@d mu_skip_def_code=6 {|shorthand_def| for \.{\\muskipdef}}
-@d toks_def_code=7 {|shorthand_def| for \.{\\toksdef}}
-
-@<Put each...@>=
-primitive("chardef",shorthand_def,char_def_code);@/
-@!@:char_def_}{\.{\\chardef} primitive@>
-primitive("mathchardef",shorthand_def,math_char_def_code);@/
-@!@:math_char_def_}{\.{\\mathchardef} primitive@>
-primitive("omathchardef",shorthand_def,omath_char_def_code);@/
-@!@:math_char_def_}{\.{\\omathchardef} primitive@>
-@z
-%---------------------------------------
-@x [49] m.1224 l.22833 - Omega
-shorthand_def: begin n:=cur_chr; get_r_token; p:=cur_cs; define(p,relax,256);
- scan_optional_equals;
- case n of
- char_def_code: begin scan_char_num; define(p,char_given,cur_val);
- end;
- math_char_def_code: begin scan_fifteen_bit_int; define(p,math_given,cur_val);
- end;
-@y
-shorthand_def: begin n:=cur_chr; get_r_token; p:=cur_cs;
- define(p,relax,too_big_char); scan_optional_equals;
- case n of
- char_def_code: begin scan_char_num; define(p,char_given,cur_val);
- end;
- math_char_def_code: begin scan_real_fifteen_bit_int;
- define(p,math_given,cur_val);
- end;
- omath_char_def_code: begin scan_big_fifteen_bit_int;
- define(p,omath_given,cur_val);
- end;
-@z
-%---------------------------------------
-@x [49] m.1230 l. - Omega
-primitive("mathcode",def_code,math_code_base);
-@!@:math_code_}{\.{\\mathcode} primitive@>
-primitive("lccode",def_code,lc_code_base);
-@!@:lc_code_}{\.{\\lccode} primitive@>
-primitive("uccode",def_code,uc_code_base);
-@!@:uc_code_}{\.{\\uccode} primitive@>
-primitive("sfcode",def_code,sf_code_base);
-@!@:sf_code_}{\.{\\sfcode} primitive@>
-primitive("delcode",def_code,del_code_base);
-@!@:del_code_}{\.{\\delcode} primitive@>
-@y
-primitive("mathcode",def_code,math_code_base);
-@!@:math_code_}{\.{\\mathcode} primitive@>
-primitive("omathcode",def_code,math_code_base+256);
-@!@:math_code_}{\.{\\omathcode} primitive@>
-primitive("lccode",def_code,lc_code_base);
-@!@:lc_code_}{\.{\\lccode} primitive@>
-primitive("uccode",def_code,uc_code_base);
-@!@:uc_code_}{\.{\\uccode} primitive@>
-primitive("sfcode",def_code,sf_code_base);
-@!@:sf_code_}{\.{\\sfcode} primitive@>
-primitive("delcode",def_code,del_code_base);
-@!@:del_code_}{\.{\\delcode} primitive@>
-primitive("odelcode",def_code,del_code_base+256);
-@!@:del_code_}{\.{\\odelcode} primitive@>
-@z
-%---------------------------------------
-@x [49] m.1232 l.22990 - Omega
-def_code: begin @<Let |n| be the largest legal code value, based on |cur_chr|@>;
- p:=cur_chr; scan_char_num; p:=p+cur_val; scan_optional_equals;
- scan_int;
- if ((cur_val<0)and(p<del_code_base))or(cur_val>n) then
- begin print_err("Invalid code ("); print_int(cur_val);
-@.Invalid code@>
- if p<del_code_base then print("), should be in the range 0..")
- else print("), should be at most ");
- print_int(n);
- help1("I'm going to use 0 instead of that illegal code value.");@/
- error; cur_val:=0;
- end;
- if p<math_code_base then define(p,data,cur_val)
- else if p<del_code_base then define(p,data,hi(cur_val))
- else word_define(p,cur_val);
-@y
-def_code: begin
- if cur_chr=(del_code_base+256) then begin
- p:=cur_chr-256; scan_char_num; p:=p+cur_val; scan_optional_equals;
- scan_int; cur_val1:=cur_val; scan_int; {backwards}
- if (cur_val1>@"FFFFFF) or (cur_val>@"FFFFFF) then
- begin print_err("Invalid code ("); print_int(cur_val1); print(" ");
- print_int(cur_val);
- print("), should be at most ""FFFFFF ""FFFFFF");
- help1("I'm going to use 0 instead of that illegal code value.");@/
- error; cur_val1:=0; cur_val:=0;
- end;
- del_word_define(p,cur_val1,cur_val);
- end
- else begin
- @<Let |n| be the largest legal code value, based on |cur_chr|@>;
- p:=cur_chr; scan_char_num; p:=p+cur_val; scan_optional_equals;
- scan_int;
- if ((cur_val<0)and(p<del_code_base))or(cur_val>n) then
- begin print_err("Invalid code ("); print_int(cur_val);
-@.Invalid code@>
- if p<del_code_base then print("), should be in the range 0..")
- else print("), should be at most ");
- print_int(n);
- help1("I'm going to use 0 instead of that illegal code value.");@/
- error; cur_val:=0;
- end;
- if p<math_code_base then define(p,data,cur_val)
- else if p<(math_code_base+256) then begin
- if cur_val=@"8000 then cur_val:=@"8000000
- else cur_val:=((cur_val div @"1000) * @"1000000) +
- (((cur_val mod @"1000) div @"100) * @"10000) +
- (cur_val mod @"100);
- define(p,data,hi(cur_val));
- end
- else if p<del_code_base then define(p-256,data,hi(cur_val))
- else begin
- cur_val1:=cur_val div @"1000;
- cur_val1:=(cur_val1 div @"100)*@"10000 + (cur_val1 mod @"100);
- cur_val:=cur_val mod @"1000;
- cur_val:=(cur_val div @"100)*@"10000 + (cur_val mod @"100);
- del_word_define(p,cur_val1,cur_val);
- end;
- end;
-@z
-%---------------------------------------
-@x [49] m.1233 l.22990 - Omega
-if cur_chr=cat_code_base then n:=max_char_code
-else if cur_chr=math_code_base then n:=@'100000
-else if cur_chr=sf_code_base then n:=@'77777
-else if cur_chr=del_code_base then n:=@'77777777
-else n:=255
-@y
-if cur_chr=cat_code_base then n:=max_char_code
-else if cur_chr=math_code_base then n:=@'100000
-else if cur_chr=(math_code_base+256) then n:=@"8000000
-else if cur_chr=sf_code_base then n:=@'77777
-else if cur_chr=del_code_base then n:=@'77777777
-else n:=biggest_char
-@z
-%---------------------------------------
-@x [49] m.1234 l.22990 - Omega
-def_family: begin p:=cur_chr; scan_four_bit_int; p:=p+cur_val;
-@y
-def_family: begin p:=cur_chr; scan_big_four_bit_int; p:=p+cur_val;
-@z
-%---------------------------------------
-@x [49] m.1238 l.23059 - Omega
- if q=advance then cur_val:=cur_val+eqtb[l].int;
-@y
- if q=advance then cur_val:=cur_val+new_eqtb_int(l);
-@z
-%---------------------------------------
-@x [49] m.1240 l.23086 - Omega
- if p=int_val then cur_val:=mult_integers(eqtb[l].int,cur_val)
- else cur_val:=nx_plus_y(eqtb[l].int,cur_val,0)
- else cur_val:=x_over_n(eqtb[l].int,cur_val)
-@y
- if p=int_val then cur_val:=mult_integers(new_eqtb_int(l),cur_val)
- else cur_val:=nx_plus_y(new_eqtb_int(l),cur_val,0)
- else cur_val:=x_over_n(new_eqtb_int(l),cur_val)
-@z
-%---------------------------------------
-@x [49] m.1241 l.23109 - Omega
- if global then n:=256+cur_val@+else n:=cur_val;
-@y
- if global then n:=number_regs+cur_val@+else n:=cur_val;
-@z
-%---------------------------------------
-@x [49] m.1289 l.23546 - Omega
-|cs_token_flag+active_base| is a multiple of~256.
-@y
-|cs_token_flag+active_base| is a multiple of~|max_char_val|.
-@z
-%---------------------------------------
-@x [49] m.1289 l.23552 - Omega
- begin c:=t mod 256;
-@y
- begin c:=t mod max_char_val;
-@z
-%---------------------------------------
-@x [50] m.1313 l.23892 - Omega
-@<Dump regions 1 to 4 of |eqtb|@>;
-@<Dump regions 5 and 6 of |eqtb|@>;
-@y
-dump_eqtb_table;
-@z
-%---------------------------------------
-@x [50] m.1314 l.23904 - Omega
-@<Undump regions 1 to 6 of |eqtb|@>;
-@y
-undump_eqtb_table;
-@z
-%---------------------------------------
-@x [50] m.1315 l.23904 - Omega
-@ The table of equivalents usually contains repeated information, so we dump it
-in compressed form: The sequence of $n+2$ values $(n,x_1,\ldots,x_n,m)$ in the
-format file represents $n+m$ consecutive entries of |eqtb|, with |m| extra
-copies of $x_n$, namely $(x_1,\ldots,x_n,x_n,\ldots,x_n)$.
-
-@<Dump regions 1 to 4 of |eqtb|@>=
-k:=active_base;
-repeat j:=k;
-while j<int_base-1 do
- begin if (equiv(j)=equiv(j+1))and(eq_type(j)=eq_type(j+1))and@|
- (eq_level(j)=eq_level(j+1)) then goto found1;
- incr(j);
- end;
-l:=int_base; goto done1; {|j=int_base-1|}
-found1: incr(j); l:=j;
-while j<int_base-1 do
- begin if (equiv(j)<>equiv(j+1))or(eq_type(j)<>eq_type(j+1))or@|
- (eq_level(j)<>eq_level(j+1)) then goto done1;
- incr(j);
- end;
-done1:dump_int(l-k);
-while k<l do
- begin dump_wd(eqtb[k]); incr(k);
- end;
-k:=j+1; dump_int(k-l);
-until k=int_base
-
-@ @<Dump regions 5 and 6 of |eqtb|@>=
-repeat j:=k;
-while j<eqtb_size do
- begin if eqtb[j].int=eqtb[j+1].int then goto found2;
- incr(j);
- end;
-l:=eqtb_size+1; goto done2; {|j=eqtb_size|}
-found2: incr(j); l:=j;
-while j<eqtb_size do
- begin if eqtb[j].int<>eqtb[j+1].int then goto done2;
- incr(j);
- end;
-done2:dump_int(l-k);
-while k<l do
- begin dump_wd(eqtb[k]); incr(k);
- end;
-k:=j+1; dump_int(k-l);
-until k>eqtb_size
-
-@ @<Undump regions 1 to 6 of |eqtb|@>=
-k:=active_base;
-repeat undump_int(x);
-if (x<1)or(k+x>eqtb_size+1) then goto bad_fmt;
-for j:=k to k+x-1 do undump_wd(eqtb[j]);
-k:=k+x;
-undump_int(x);
-if (x<0)or(k+x>eqtb_size+1) then goto bad_fmt;
-for j:=k to k+x-1 do eqtb[j]:=eqtb[k-1];
-k:=k+x;
-until k>eqtb_size
-@y
-
-@z
-%---------------------------------------
-@x [50] m.1318 l.23967 - Omega
-@<Dump the hash table@>=
-dump_int(hash_used); cs_count:=frozen_control_sequence-1-hash_used;
-for p:=hash_base to hash_used do if text(p)<>0 then
- begin dump_int(p); dump_hh(hash[p]); incr(cs_count);
- end;
-for p:=hash_used+1 to undefined_control_sequence-1 do dump_hh(hash[p]);
-dump_int(cs_count);@/
-print_ln; print_int(cs_count); print(" multiletter control sequences")
-@y
-@<Dump the hash table@>=
-dump_int(hash_used);
-@z
-%---------------------------------------
-@x [50] m.1319 l.23976 - Omega
-undump(hash_base)(frozen_control_sequence)(hash_used); p:=hash_base-1;
-repeat undump(p+1)(hash_used)(p); undump_hh(hash[p]);
-until p=hash_used;
-for p:=hash_used+1 to undefined_control_sequence-1 do undump_hh(hash[p]);
-undump_int(cs_count)
-@y
-undump(hash_base)(frozen_control_sequence)(hash_used);
-@z
-%---------------------------------------
-@x [50] m.1324 l.24066 - Omega
-for k:=0 to trie_max do dump_hh(trie[k]);
-@y
-for k:=0 to trie_max do dump_hh(trie[k]);
-dump_int(max_hyph_char);
-@z
-%---------------------------------------
-@x [50] m.1324 l.24078 - Omega
-for k:=255 downto 0 do if trie_used[k]>min_quarterword then
-@y
-for k:=biggest_lang downto 0 do if trie_used[k]>min_quarterword then
-@z
-%---------------------------------------
-@x [50] m.1325 l.24094 - Omega
-for k:=0 to j do undump_hh(trie[k]);
-@y
-for k:=0 to j do undump_hh(trie[k]);
-undump_int(max_hyph_char);
-@z
-%---------------------------------------
-@x [50] m.1325 l.24101 - Omega
-init for k:=0 to 255 do trie_used[k]:=min_quarterword;@+tini@;@/
-k:=256;
-@y
-init for k:=0 to biggest_lang do trie_used[k]:=min_quarterword;@+tini@;@/
-k:=biggest_lang+1;
-@z
-%---------------------------------------
-@x [50] m.1326 l.24100 - Omega
-dump_int(interaction); dump_int(format_ident); dump_int(69069);
-tracing_stats:=0
-@y
-dump_int(interaction); dump_int(format_ident); dump_int(69069);
-set_new_eqtb_int(int_base+tracing_stats_code,0)
-@z
-%---------------------------------------
-@x [53] m.1341 l.24506 - Omega
-@d what_lang(#)==link(#+1) {language number, in the range |0..255|}
-@y
-@d what_lang(#)==link(#+1) {language number, in the range |0..biggest_lang|}
-@z
-%---------------------------------------
-@x [53] m.1370
-@!write_file:array[0..15] of alpha_file;
-@y
-@!outside_string_array: array[0..1000] of 0..255;
-@!write_file:array[0..15] of alpha_file;
-@z
-%---------------------------------------
-@x [53] m. l.24761 - Omega
-text(end_write):="endwrite"; eq_level(end_write):=level_one;
-eq_type(end_write):=outer_call; equiv(end_write):=null;
-@y
-settext(end_write,"endwrite"); set_eq_level(end_write,level_one);
-set_eq_type(end_write,outer_call); set_equiv(end_write,null);
-@z
-%---------------------------------------
-@x [53] m.1376 l.24878 - Omega
-else if language>255 then l:=0
-@y
-else if language>biggest_lang then l:=0
-@z
-%---------------------------------------
-@x [53] m.1377 l.24893 - Omega
- else if cur_val>255 then clang:=0
-@y
- else if cur_val>biggest_lang then clang:=0
-@z
-%---------------------------------------
-@x [54]
-This section should be replaced, if necessary, by any special
-modifications of the program
-that are necessary to make \TeX\ work at a particular installation.
-It is usually best to design your change file so that all changes to
-previous sections preserve the section numbering; then everybody's version
-will be consistent with the published program. More extensive changes,
-which introduce new sections, can be inserted here; then only the index
-itself will get a new section number.
-@^system dependencies@>
-
-@y
-@* \[54] $\Omega$ changes.
-
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/omegadir/omchar.ch b/Build/source/texk/web2c/omegadir/omchar.ch
deleted file mode 100644
index bb2b8b19567..00000000000
--- a/Build/source/texk/web2c/omegadir/omchar.ch
+++ /dev/null
@@ -1,84 +0,0 @@
-% omchar.ch: Primitives to access the components of font metric files.
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [26] m.416 l.8407 - Omega char dimensions
-primitive("dp",set_box_dimen,depth_offset);
-@!@:dp_}{\.{\\dp} primitive@>
-@y
-primitive("dp",set_box_dimen,depth_offset);
-@!@:dp_}{\.{\\dp} primitive@>
-primitive("charwd",set_box_dimen,(width_offset+3));
-@!@:charwd_}{\.{\\charwd} primitive@>
-primitive("charht",set_box_dimen,(height_offset+3));
-@!@:charht_}{\.{\\charht} primitive@>
-primitive("chardp",set_box_dimen,(depth_offset+3));
-@!@:chardp_}{\.{\\chardp} primitive@>
-primitive("charit",set_box_dimen,(depth_offset+4));
-@!@:charit_}{\.{\\charit} primitive@>
-@z
-%---------------------------------------
-@x [26] m.416 l.8425 - Omega char dimensions
-set_box_dimen: if chr_code=width_offset then print_esc("wd")
-else if chr_code=height_offset then print_esc("ht")
-else print_esc("dp");
-@y
-set_box_dimen: if chr_code=width_offset then print_esc("wd")
-else if chr_code=height_offset then print_esc("ht")
-else if chr_code=depth_offset then print_esc("dp")
-else if chr_code=(width_offset+3) then print_esc("charwd")
-else if chr_code=(height_offset+3) then print_esc("charht")
-else if chr_code=(depth_offset+3) then print_esc("chardp")
-else print_esc("charit");
-@z
-%---------------------------------------
-@x [26] m.419 l.8461 - Omega char dimensions
-begin scan_eight_bit_int;
-if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc;
-cur_val_level:=dimen_val;
-end
-@y
-if m<=3 then
-begin
- scan_eight_bit_int;
- if box(cur_val)=null then cur_val:=0 @+else
- cur_val:=mem[box(cur_val)+m].sc;
- cur_val_level:=dimen_val;
-end
-else
-begin
- scan_char_num;
- if m=(width_offset+3) then begin
- cur_val:= char_width(main_f)(char_info(main_f)(cur_val))
- end
- else if m=(height_offset+3) then begin
- cur_val:= char_height(main_f)(height_depth(char_info(main_f)(cur_val)))
- end
- else if m=(depth_offset+3) then begin
- cur_val:= char_depth(main_f)(height_depth(char_info(main_f)(cur_val)))
- end
- else begin
- cur_val:= char_italic(main_f)(char_info(main_f)(cur_val));
- end;
- cur_val_level:=dimen_val;
-end
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/omegadir/omcprt.ch b/Build/source/texk/web2c/omegadir/omcprt.ch
deleted file mode 100644
index a6ab9d581b8..00000000000
--- a/Build/source/texk/web2c/omegadir/omcprt.ch
+++ /dev/null
@@ -1,11 +0,0 @@
-@x
-wterm_ln('Copyright (c) 1994--2000 John Plaice and Yannis Haralambous');
-@y
-{Let's not announce the copyright on the terminal, nothing else does.}
-@z
-@x
-print_nl("Copyright (c) 1994--2000 John Plaice and Yannis Haralambous");
-@y
-print_nl("Copyright (C) 1994--2000 John Plaice and Yannis Haralambous");
-@z
-
diff --git a/Build/source/texk/web2c/omegadir/omdir.ch b/Build/source/texk/web2c/omegadir/omdir.ch
deleted file mode 100644
index 23e2c8f4602..00000000000
--- a/Build/source/texk/web2c/omegadir/omdir.ch
+++ /dev/null
@@ -1,4172 +0,0 @@
-% omdir.ch: Primitives to deal with multiple-direction text
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%-------------------------
-@x [10] m.135
-@d hlist_node=0 {|type| of hlist nodes}
-@d box_node_size=7 {number of words to allocate for a box node}
-@d width_offset=1 {position of |width| field in a box node}
-@d depth_offset=2 {position of |depth| field in a box node}
-@d height_offset=3 {position of |height| field in a box node}
-@d width(#) == mem[#+width_offset].sc {width of the box, in sp}
-@d depth(#) == mem[#+depth_offset].sc {depth of the box, in sp}
-@d height(#) == mem[#+height_offset].sc {height of the box, in sp}
-@d shift_amount(#) == mem[#+4].sc {repositioning distance, in sp}
-@d list_offset=5 {position of |list_ptr| field in a box node}
-@d list_ptr(#) == link(#+list_offset) {beginning of the list inside the box}
-@d glue_order(#) == subtype(#+list_offset) {applicable order of infinity}
-@d glue_sign(#) == type(#+list_offset) {stretching or shrinking}
-@d normal=0 {the most common case when several cases are named}
-@d stretching = 1 {glue setting applies to the stretch components}
-@d shrinking = 2 {glue setting applies to the shrink components}
-@d glue_offset = 6 {position of |glue_set| in a box node}
-@d glue_set(#) == mem[#+glue_offset].gr
- {a word of type |glue_ratio| for glue setting}
-@y
-@d hlist_node=0 {|type| of hlist nodes}
-@d box_node_size=8 {number of words to allocate for a box node}
-@d width_offset=1 {position of |width| field in a box node}
-@d depth_offset=2 {position of |depth| field in a box node}
-@d height_offset=3 {position of |height| field in a box node}
-@d width(#) == mem[#+width_offset].sc {width of the box, in sp}
-@d depth(#) == mem[#+depth_offset].sc {depth of the box, in sp}
-@d height(#) == mem[#+height_offset].sc {height of the box, in sp}
-@d shift_amount(#) == mem[#+4].sc {repositioning distance, in sp}
-@d list_offset=5 {position of |list_ptr| field in a box node}
-@d list_ptr(#) == link(#+list_offset) {beginning of the list inside the box}
-@d glue_order(#) == subtype(#+list_offset) {applicable order of infinity}
-@d glue_sign(#) == type(#+list_offset) {stretching or shrinking}
-@d normal=0 {the most common case when several cases are named}
-@d stretching = 1 {glue setting applies to the stretch components}
-@d shrinking = 2 {glue setting applies to the shrink components}
-@d glue_offset = 6 {position of |glue_set| in a box node}
-@d glue_set(#) == mem[#+glue_offset].gr
- {a word of type |glue_ratio| for glue setting}
-@d dir_offset = 7 {position of |box_dir| in a box node}
-@d box_dir(#) == mem[#+dir_offset].int
-@z
-%-------------------------
-@x [10] m.136
-@p function new_null_box:pointer; {creates a new box node}
-var p:pointer; {the new node}
-begin p:=get_node(box_node_size); type(p):=hlist_node;
-subtype(p):=min_quarterword;
-width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
-glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
-@<LOCAL: Add info node pointer@>;
-new_null_box:=p;
-@y
-@p function new_null_box:pointer; {creates a new box node}
-var p:pointer; {the new node}
-begin p:=get_node(box_node_size); type(p):=hlist_node;
-subtype(p):=min_quarterword;
-width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
-glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
-@<LOCAL: Add info node pointer@>;
-box_dir(p):=text_direction;
-new_null_box:=p;
-@z
-%-------------------------
-@x [10] m.138
-@d rule_node=2 {|type| of rule nodes}
-@d rule_node_size=4 {number of words to allocate for a rule node}
-@d null_flag==-@'10000000000 {$-2^{30}$, signifies a missing item}
-@d is_running(#) == (#=null_flag) {tests for a running dimension}
-@y
-@d rule_node=2 {|type| of rule nodes}
-@d rule_node_size=5 {number of words to allocate for a rule node}
-@d null_flag==-@'10000000000 {$-2^{30}$, signifies a missing item}
-@d is_running(#) == (#=null_flag) {tests for a running dimension}
-@d rule_dir(#)==info(#+4)
-@z
-%-------------------------
-@x [10] m.139
-@p function new_rule:pointer;
-var p:pointer; {the new node}
-begin p:=get_node(rule_node_size); type(p):=rule_node;
-subtype(p):=0; {the |subtype| is not used}
-width(p):=null_flag; depth(p):=null_flag; height(p):=null_flag;
-@<LOCAL: Add info node pointer@>;
-new_rule:=p;
-end;
-@y
-@p function new_rule:pointer;
-var p:pointer; {the new node}
-begin p:=get_node(rule_node_size); type(p):=rule_node;
-subtype(p):=0; {the |subtype| is not used}
-width(p):=null_flag; depth(p):=null_flag; height(p):=null_flag;
-@<LOCAL: Add info node pointer@>;
-rule_dir(p):=-1;
-new_rule:=p;
-end;
-@z
-%-------------------------
-@x [10] m.160
-@d info_node=unset_node+2 {|type| to hold local information}
-
-@d ptr_info(#) == link(#-1) {pointer to the local info node}
-
-@d info_size=5
-@d info_ref_count(#) == link(#+1) {reference count to this node}
-@d info_pen_inter(#) == info(#+2) {\.{\\localinterlinepenalty}}
-@d info_pen_broken(#) == link(#+2) {\.{\\localbrokenpenalty}}
-@d info_left_box(#) == info(#+3) {\.{\\localleftbox}}
-@d info_right_box(#) == link(#+3) {\.{\\localrightbox}}
-@d info_file(#) == info(#+4) {file names and line numbers}
-@y
-@d dir_node=unset_node+2 {|type| to keep track of stacks of directions}
-
-@d dir_size=3
-@d dir_no(#) == info(#+1) {number of directions to keep track of}
-@d dir_ref_count(#) == link(#+1) {reference count to this node}
-
-@d dir_incr_ref_count(#)==begin
- if (#)<>null then incr(dir_ref_count(#));
- end
-@d dir_decr_ref_count(#)==begin
- if (#)<>null then begin
- decr(dir_ref_count(#));
- if dir_ref_count(#) = 0 then begin
- free_node(#,file_size+dir_no(#));
- #:=null;
- end;
- end;
- end
-
-@d info_node=unset_node+3 {|type| to hold local information}
-
-@d ptr_info(#) == link(#-1) {pointer to the local info node}
-
-@d info_size=5
-@d info_ref_count(#) == link(#+1) {reference count to this node}
-@d info_pen_inter(#) == info(#+2) {\.{\\localinterlinepenalty}}
-@d info_pen_broken(#) == link(#+2) {\.{\\localbrokenpenalty}}
-@d info_left_box(#) == info(#+3) {\.{\\localleftbox}}
-@d info_right_box(#) == link(#+3) {\.{\\localrightbox}}
-@d info_file(#) == info(#+4) {file names and line numbers}
-@d info_dir(#) == link(#+4) {direction}
-
-@d get_dir(#) == mem[info_dir(ptr_info(#))+
- 2*dir_no(info_dir(ptr_info(#)))+1].int
-@z
-%-------------------------
-@x [10] m.160
- free_node(#,info_size);
-@y
- dir_decr_ref_count(info_dir(#));
- info_dir(#):=null;
- free_node(#,info_size);
-@z
-%-------------------------
-@x [10] m.176
-@p procedure print_font_and_char(@!p:integer); {prints |char_node| data}
-begin if p>mem_end then print_esc("CLOBBERED.")
-else begin if (font(p)<font_base)or(font(p)>font_max) then print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
- print_char(" "); print_ASCII(qo(character(p)));
- end;
-end;
-@y
-@p procedure print_dir(d:integer);
-begin
-print(dir_names[dir_primary[d]]);
-print(dir_names[dir_secondary[d]]);
-print(dir_names[dir_tertiary[d]]);
-end;
-@#
-procedure print_dir_node(p:pointer);
-var i:integer;
-begin
-if dir_no(p)=1 then print(" dir=")
-else print(" dirs=");
-for i:=1 to dir_no(p) do begin
- print_dir(mem[p+2*i+1].int);
- if i<>dir_no(p) then print(",");
- end;
-end;
-@#
-procedure print_font_and_char(@!p:integer); {prints |char_node| data}
-begin if p>mem_end then print_esc("CLOBBERED.")
-else begin if (font(p)<font_base)or(font(p)>font_max) then print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
- print_char(" "); print_ASCII(qo(character(p)));
- end;
-end;
-@z
-%-------------------------
-@x [12] m.183
-@ @<Display node |p|@>=
-if is_char_node(p) then print_font_and_char(p)
-@y
-@ @<Display node |p|@>=
-if is_char_node(p) then begin print_font_and_char(p);
- print_dir_node(info_dir(ptr_info(p)));
- {print(" dir="); print_dir(get_dir(p));}
- end
-@z
-%-------------------------
-@x [12] m.184
-@ @<Display box |p|@>=
-begin if type(p)=hlist_node then print_esc("h")
-else if type(p)=vlist_node then print_esc("v")
-else print_esc("unset");
-print("box("); print_scaled(height(p)); print_char("+");
-print_scaled(depth(p)); print(")x"); print_scaled(width(p));
-if type(p)=unset_node then
- @<Display special fields of the unset node |p|@>
-else begin @<Display the value of |glue_set(p)|@>;
- if shift_amount(p)<>0 then
- begin print(", shifted "); print_scaled(shift_amount(p));
- end;
- end;
-node_list_display(list_ptr(p)); {recursive call}
-end
-@y
-@ @<Display box |p|@>=
-begin if type(p)=hlist_node then print_esc("h")
-else if type(p)=vlist_node then print_esc("v")
-else print_esc("unset");
-print("box("); print_scaled(height(p)); print_char("+");
-print_scaled(depth(p)); print(")x"); print_scaled(width(p));
-if type(p)=unset_node then
- @<Display special fields of the unset node |p|@>
-else begin @<Display the value of |glue_set(p)|@>;
- if shift_amount(p)<>0 then
- begin print(", shifted "); print_scaled(shift_amount(p));
- end;
- print(", direction "); print_dir(box_dir(p));
- end;
-node_list_display(list_ptr(p)); {recursive call}
-end
-@z
-%-------------------------
-@x [12] m.193
-@ @<Display ligature |p|@>=
-begin print_font_and_char(lig_char(p)); print(" (ligature ");
-@y
-@ @<Display ligature |p|@>=
-begin print_font_and_char(lig_char(p));
-print_dir_node(info_dir(ptr_info(p)));
-{print(" dir="); print_dir(get_dir(p));}
-print(" (ligature ");
-@z
-%-------------------------
-@x [13] m.202
- info_node: begin
- @<LOCAL: Delete info node@>;
- goto done; end; {do not delete node at this time}
-@y
- info_node: begin
- @<LOCAL: Delete info node@>;
- goto done; end; {do not delete node at this time}
- dir_node: begin
- @<LOCAL: Delete direction node@>;
- goto done; end; {do not delete node at this time}
-@z
-%-------------------------
-@x [13] m.206
-hlist_node,vlist_node,unset_node: begin r:=get_node(box_node_size);
- mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last two words}
-@y
-hlist_node,vlist_node,unset_node: begin r:=get_node(box_node_size);
- mem[r+7]:=mem[p+7]; mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5];
- {copy the last three words}
-@z
-%-------------------------
-@x [15] m.209
-@d max_internal=register
- {the largest code that can follow \.{\\the}}
-@y
-@d assign_next_fake_math=register+1 {(\.{\\nextfakemath})}
-@d assign_box_dir=register+2 {(\.{\\boxdir})}
-@d assign_dir=register+3 {(\.{\\pagedir}, \.{\\textdir})}
-@d max_internal=assign_dir
- {the largest code that can follow \.{\\the}}
-@z
-%-------------------------
-@x [17] m.230
-@d local_par_info_base=local_right_box_base+1
-@y
-@d local_dir_base=local_right_box_base+1
-@d local_par_info_base=local_dir_base+1
-@z
-%-------------------------
-@x [17] m.230
-@d local_par_info==equiv(local_par_info_base)
-@y
-@d local_dir==equiv(local_dir_base)
-@d local_par_info==equiv(local_par_info_base)
-@z
-%-------------------------
-@x [17] m.236
-@d int_pars=58 {total number of integer parameters}
-@d count_base=int_base+int_pars {|number_regs| user \.{\\count} registers}
-@y
-@d int_pars=58 {total number of integer parameters}
-@d dir_base=int_base+int_pars
-@d page_direction_code=0
-@d body_direction_code=1
-@d par_direction_code=2
-@d text_direction_code=3
-@d math_direction_code=4
-@d dir_pars=5
-@d count_base=dir_base+dir_pars {|number_regs| user \.{\\count} registers}
-@z
-%-------------------------
-@x [17] m.238
-@d local_broken_penalty==int_par(local_broken_penalty_code)
-@y
-@d local_broken_penalty==int_par(local_broken_penalty_code)
-@d dir_par(#)==new_eqtb_int(dir_base+#) {a direction parameter}
-@d page_direction==dir_par(page_direction_code)
-@d body_direction==dir_par(body_direction_code)
-@d par_direction==dir_par(par_direction_code)
-@d text_direction==dir_par(text_direction_code)
-@d math_direction==dir_par(math_direction_code)
-@z
-%-------------------------
-@x [17] m.247
-@d dimen_pars=21 {total number of dimension parameters}
-@y
-@d page_width_code=21
-@d page_height_code=22
-@d page_right_offset_code=23
-@d page_bottom_offset_code=24
-@d dimen_pars=25 {total number of dimension parameters}
-@z
-%-------------------------
-@x [17] m.247
-@d emergency_stretch==dimen_par(emergency_stretch_code)
-@y
-@d emergency_stretch==dimen_par(emergency_stretch_code)
-@d page_width==dimen_par(page_width_code)
-@d page_height==dimen_par(page_height_code)
-@d page_right_offset==dimen_par(page_right_offset_code)
-@d page_bottom_offset==dimen_par(page_bottom_offset_code)
-@z
-%-------------------------
-@x [26] m.410
-@d int_val=0 {integer values}
-@d dimen_val=1 {dimension values}
-@d glue_val=2 {glue specifications}
-@d mu_val=3 {math glue specifications}
-@d ident_val=4 {font identifier}
-@d tok_val=5 {token lists}
-
-@<Glob...@>=
-@!cur_val:integer; {value returned by numeric scanners}
-@!cur_val_level:int_val..tok_val; {the ``level'' of this value}
-@y
-@d int_val=0 {integer values}
-@d dimen_val=1 {dimension values}
-@d glue_val=2 {glue specifications}
-@d mu_val=3 {math glue specifications}
-@d dir_val=4 {directions}
-@d ident_val=5 {font identifier}
-@d tok_val=6 {token lists}
-
-@<Glob...@>=
-@!cur_val:integer; {value returned by numeric scanners}
-@!cur_val1:integer; {delcodes are now 51 digits}
-@!cur_val2:integer; {will be used in omxml.ch; this is cheating}
-@!cur_val_level:int_val..dir_val; {the ``level'' of this value}
-@!tmp_dir_stack:pointer;
-@!par_dir_stack:pointer;
-@!math_dir_stack:pointer;
-@!align_dir_stack:pointer;
-@z
-%-------------------------
-@x [26] m.413
-assign_int: scanned_result(new_eqtb_int(m))(int_val);
-@y
-assign_int: scanned_result(new_eqtb_int(m))(int_val);
-assign_box_dir: begin
- scan_eight_bit_int;
- m:=cur_val;
- if box(m)<>null then cur_val:=box_dir(box(m))
- else cur_val:=0;
- cur_val_level:=dir_val;
- end;
-assign_dir: scanned_result(new_eqtb_int(m))(dir_val);
-@z
-%-------------------------
-@x [26] m.437
-@ @<Declare procedures that scan restricted classes of integers@>=
-procedure scan_eight_bit_int;
-@y
-@
-@d dir_T=0
-@d dir_L=1
-@d dir_B=2
-@d dir_R=3
-@d dir_eq_end(#)==(#)
-@d dir_eq(#)==(#)=dir_eq_end
-@d dir_ne_end(#)==(#)
-@d dir_ne(#)==(#)<>dir_ne_end
-@d dir_opposite_end(#)==((#) mod 4)
-@d dir_opposite(#)==(((#)+2) mod 4)=dir_opposite_end
-@d dir_parallel_end(#)==((#) mod 2)
-@d dir_parallel(#)==((#) mod 2)=dir_parallel_end
-@d dir_orthogonal_end(#)==(# mod 2)
-@d dir_orthogonal(#)==((#) mod 2)<>dir_orthogonal_end
-@d dir_next_end(#)==((#) mod 4)
-@d dir_next(#)==(((#)+3) mod 4)=dir_next_end
-@d dir_prev_end(#)==((#) mod 4)
-@d dir_prev(#)==(((#)+1) mod 4)=dir_prev_end
-
-{box directions}
-@d dir_TL_=0
-@d dir_TR_=1
-@d dir_LT_=2
-@d dir_LB_=3
-@d dir_BL_=4
-@d dir_BR_=5
-@d dir_RT_=6
-@d dir_RB_=7
-
-{font directions}
-@d dir__LT= 0
-@d dir__LL= 1
-@d dir__LB= 2
-@d dir__LR= 3
-@d dir__RT= 4
-@d dir__RL= 5
-@d dir__RB= 6
-@d dir__RR= 7
-@d dir__TT= 8
-@d dir__TL= 9
-@d dir__TB=10
-@d dir__TR=11
-@d dir__BT=12
-@d dir__BL=13
-@d dir__BB=14
-@d dir__BR=15
-
-@d is_mirrored(#)==dir_opposite(dir_primary[#])(dir_tertiary[#])
-@d is_rotated(#)==dir_parallel(dir_secondary[#])(dir_tertiary[#])
-@d font_direction(#)==(# mod 16)
-@d box_direction(#)==(# div 4)
-
-@d scan_single_dir(#)==begin
-if scan_keyword("T") then #:=dir_T
-else if scan_keyword("L") then #:=dir_L
-else if scan_keyword("B") then #:=dir_B
-else if scan_keyword("R") then #:=dir_R
-else begin
- print_err("Bad direction"); cur_val:=0;
- goto exit;
- end
-end
-
-@<Declare procedures that scan restricted classes of integers@>=
-@<DIR: Declare |change_dir|@>;
-procedure scan_dir;
-var d1,d2,d3: integer;
-begin
-get_x_token;
-if cur_cmd=assign_dir then begin
- cur_val:=new_eqtb_int(cur_chr);
- goto exit;
- end
-else back_input;
-scan_single_dir(d1);
-scan_single_dir(d2);
-if dir_parallel(d1)(d2) then begin
- print_err("Bad direction"); cur_val:=0;
- goto exit;
- end;
-scan_single_dir(d3);
-cur_val:=d1*8+dir_rearrange[d2]*4+d3;
-exit:
-end;
-
-@ @<Declare procedures that scan restricted classes of integers@>=
-procedure scan_eight_bit_int;
-@z
-%-------------------------
-@x [27] m.463
-@p function scan_rule_spec:pointer;
-label reswitch;
-var q:pointer; {the rule node being created}
-begin q:=new_rule; {|width|, |depth|, and |height| all equal |null_flag| now}
-if cur_cmd=vrule then width(q):=default_rule
-else begin height(q):=default_rule; depth(q):=0;
- end;
-@y
-@p function scan_rule_spec:pointer;
-label reswitch;
-var q:pointer; {the rule node being created}
-begin q:=new_rule; {|width|, |depth|, and |height| all equal |null_flag| now}
-if cur_cmd=vrule then begin
- width(q):=default_rule;
- rule_dir(q):=body_direction;
- end
-else begin
- height(q):=default_rule; depth(q):=0;
- rule_dir(q):=text_direction;
-end;
-@z
-%-------------------------
-@x [27] m.465
- int_val:print_int(cur_val);
-@y
- int_val:print_int(cur_val);
- dir_val:print_dir(cur_val);
-@z
-%-------------------------
-@x [30] m.550
-@d offset_false_bchar=offset_bchar+1
-@d offset_ivalues_start=offset_false_bchar+1
-@y
-@d offset_false_bchar=offset_bchar+1
-@d offset_natural_dir=offset_false_bchar+1
-@d offset_ivalues_start=offset_natural_dir+1
-@z
-%-------------------------
-@x [30] m.550
-@d font_false_bchar(#)==font_info(#)(offset_false_bchar).int
-@y
-@d font_false_bchar(#)==font_info(#)(offset_false_bchar).int
-@d font_natural_dir(#)==font_info(#)(offset_natural_dir).int
-@z
-%-------------------------
-@x [30] m.560
-@p function read_font_info(@!u:pointer;@!nom,@!aire:str_number;
- @!s:scaled;offset:quarterword):internal_font_number; {input a \.{TFM} file}
-@y
-@p function read_font_info(@!u:pointer;@!nom,@!aire:str_number;
- @!s:scaled;offset:quarterword;natural_dir:integer):internal_font_number;
- {input a \.{TFM} file}
-@z
-%-------------------------
-@x [30] m.560
-font_offset(f):=offset;
-@y
-font_offset(f):=offset;
-font_natural_dir(f):=natural_dir;
-@z
-%-------------------------
-@x [31] m.586
-@d set_rule=132 {typeset a rule and move right}
-@y
-@d set_rule=132 {typeset a rule and move right}
-@d put1==133 {typeset a character without moving}
-@z
-%-------------------------
-@x [31] m.586
-@d right1=143 {move right}
-@y
-@d right1==143 {move right}
-@d right4==146 {move right, 4 bytes}
-@z
-%-------------------------
-@x [31] m.586
-@d down1=157 {move down}
-@y
-@d down1=157 {move down}
-@d down4=160 {move down, 4 bytes}
-@z
-%-------------------------
-@x [32] m.607
-@p procedure movement(@!w:scaled;@!o:eight_bits);
-label exit,found,not_found,2,1;
-var mstate:small_number; {have we seen a |y| or |z|?}
-@!p,@!q:pointer; {current and top nodes on the stack}
-@!k:integer; {index into |dvi_buf|, modulo |dvi_buf_size|}
-begin q:=get_node(movement_node_size); {new node for the top of the stack}
-width(q):=w; location(q):=dvi_offset+dvi_ptr;
-if o=down1 then
- begin link(q):=down_ptr; down_ptr:=q;
- end
-else begin link(q):=right_ptr; right_ptr:=q;
- end;
-@<Look at the other stack entries until deciding what sort of \.{DVI} command
- to generate; |goto found| if node |p| is a ``hit''@>;
-@<Generate a |down| or |right| command for |w| and |return|@>;
-found: @<Generate a |y0| or |z0| command in order to reuse a previous
- appearance of~|w|@>;
-exit:end;
-@y
-@d dvi_set(#)==oval:=#-font_offset(f); ocmd:=set1; out_cmd
-@d dvi_put(#)==oval:=#-font_offset(f); ocmd:=put1; out_cmd
-@d dvi_set_rule_end(#)==dvi_four(#)
-@d dvi_set_rule(#)==dvi_out(set_rule); dvi_four(#); dvi_set_rule_end
-@d dvi_put_rule_end(#)==dvi_four(#)
-@d dvi_put_rule(#)==dvi_out(put_rule); dvi_four(#); dvi_put_rule_end
-@d dvi_right(#)==dvi_out(right4); dvi_four(#);
-@d dvi_left(#)==dvi_out(right4); dvi_four(-#);
-@d dvi_down(#)==dvi_out(down4); dvi_four(#);
-@d dvi_up(#)==dvi_out(down4); dvi_four(-#);
-
-@p procedure movement(@!w:scaled;@!o:eight_bits);
-label exit,found,not_found,2,1;
-var mstate:small_number; {have we seen a |y| or |z|?}
-@!p,@!q:pointer; {current and top nodes on the stack}
-@!k:integer; {index into |dvi_buf|, modulo |dvi_buf_size|}
-begin
-case box_direction(dvi_direction) of
- dir_TL_: begin
- end;
- dir_TR_: begin
- if o=right1 then negate(w);
- end;
- dir_LT_: begin
- if o=right1 then o:=down1
- else o:=right1;
- end;
- dir_LB_: begin
- if o=right1 then begin
- o:=down1; negate(w);
- end
- else o:=right1;
- end;
- dir_BL_: begin
- if o=down1 then negate(w);
- end;
- dir_BR_: begin
- negate(w);
- end;
- dir_RT_: begin
- if o=right1 then o:=down1
- else begin o:=right1; negate(w);
- end;
- end;
- dir_RB_: begin
- if o=right1 then o:=down1 else o:=right1;
- negate(w);
- end;
- end;
-if false then begin
-q:=get_node(movement_node_size); {new node for the top of the stack}
-width(q):=w; location(q):=dvi_offset+dvi_ptr;
-if o=down1 then
- begin link(q):=down_ptr; down_ptr:=q;
- end
-else begin link(q):=right_ptr; right_ptr:=q;
- end;
-@<Look at the other stack entries until deciding what sort of \.{DVI} command
- to generate; |goto found| if node |p| is a ``hit''@>;
-end;
-@<Generate a |down| or |right| command for |w| and |return|@>;
-found: @<Generate a |y0| or |z0| command in order to reuse a previous
- appearance of~|w|@>;
-exit:end;
-@z
-%-------------------------
-@x [32] m.610
-info(q):=yz_OK;
-@y
-@z
-%-------------------------
-@x [32] m.617
-dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
-@y
-dvi_h:=0; dvi_v:=0; cur_h:=0; cur_v:=0; dvi_f:=null_font;
-@z
-%-------------------------
-@x [32] m.619
-procedure hlist_out; {output an |hlist_node| box}
-label reswitch, move_past, fin_rule, next_p;
-var base_line: scaled; {the baseline coordinate for this box}
-@y
-procedure hlist_out; {output an |hlist_node| box}
-label reswitch, move_past, fin_rule, next_p;
-var base_line: scaled; {the baseline coordinate for this box}
-c_wd,c_ht,c_dp: scaled;
- {the real width, height and depth of the character}
-c_htdp: quarterword; {height-depth entry in |char_info|}
-c_info: four_quarters; {|char_info| entry}
-edge_v: scaled;
-edge_h: scaled;
-effective_horizontal: scaled;
-basepoint_horizontal: scaled;
-basepoint_vertical: scaled;
-saving_h: scaled;
-saving_v: scaled;
-save_direction: integer;
-dir_tmp,dir_ptr: pointer;
-dvi_dir_h,dvi_dir_ptr,dvi_temp_ptr: integer;
-char_first: integer;
-cur_direction: integer;
-new_dir_node,prev_dir_node: pointer;
-i,d,dir_level,m: integer; {counters for the direction stuff}
-dir_found: boolean;
-@z
-%-------------------------
-@x [32] m.619
-incr(cur_s);
-if cur_s>0 then dvi_out(push);
-if cur_s>max_push then max_push:=cur_s;
-save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h;
-if char_specials>0 then begin
- should_create_special:=true;
- chars_since_last_special:=char_specials;
- end
-else begin
- should_create_special:=false;
- chars_since_last_special:=-1000000;
- end;
-while p<>null do @<Output node |p| for |hlist_out| and move to the next node,
- maintaining the condition |cur_v=base_line|@>;
-prune_movements(save_loc);
-if cur_s>0 then dvi_pop(save_loc);
-decr(cur_s);
-@y
-save_direction:=dvi_direction;
-incr(cur_s);
-if cur_s>0 then dvi_out(push);
-if cur_s>max_push then max_push:=cur_s;
-save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h;
-if dvi_direction<>box_dir(this_box) then begin
- dvi_direction:=box_dir(this_box);
- synch_v; synch_h;
- saving_h:=dvi_h; saving_v:=dvi_v;
- end;
-@<DIR: Initialize the text direction@>;
-if char_specials>0 then begin
- should_create_special:=true;
- chars_since_last_special:=char_specials;
- end
-else begin
- should_create_special:=false;
- chars_since_last_special:=-1000000;
- end;
-while p<>null do @<Output node |p| for |hlist_out| and move to the next node,
- maintaining the condition |cur_v=base_line|@>;
-@<DIR: Finalize the text direction@>;
-if dvi_direction<>save_direction then begin
- dvi_direction:=save_direction;
- synch_v; synch_h;
- cur_h:=saving_h; cur_v:=saving_v;
- end;
-prune_movements(save_loc);
-if cur_s>0 then dvi_pop(save_loc);
-decr(cur_s);
-@z
-%-------------------------
-@x [32] m.620
-@<Output node |p| for |hlist_out|...@>=
-reswitch: if is_char_node(p) then
- begin synch_h; synch_v;
- if should_create_special then begin
- should_create_special:=false;
- if chars_since_last_special>=char_specials then
- if ptr_info(p)<>null then
- if info_file(ptr_info(p))<>null then begin
- @<LOCAL: Create special node@>;
- chars_since_last_special:=0;
- end;
- end;
- repeat f:=font(p); c:=character(p);
- incr(chars_since_last_special);
- if f<>dvi_f then @<Change font |dvi_f| to |f|@>;
- oval:=c-font_offset(f); ocmd:=set1; out_cmd;@/
- cur_h:=cur_h+char_width(f)(char_info(f)(c));
- p:=link(p);
- until not is_char_node(p);
- dvi_h:=cur_h;
- end
-else @<Output the non-|char_node| |p| for |hlist_out|
- and move to the next node@>
-@y
-@<Output node |p| for |hlist_out|...@>=
-reswitch: if is_char_node(p) then
- begin synch_h; synch_v;
- if should_create_special then begin
- should_create_special:=false;
- if chars_since_last_special>=char_specials then
- if ptr_info(p)<>null then
- if info_file(ptr_info(p))<>null then begin
- @<LOCAL: Create special node@>;
- chars_since_last_special:=0;
- end;
- end;
- repeat f:=font(p); c:=character(p);
- incr(chars_since_last_special);
- if f<>dvi_f then @<Change font |dvi_f| to |f|@>;
- c_info:=char_info(f)(c);
- c_htdp:=height_depth(c_info);
- if is_rotated(dvi_direction) then begin
- c_ht:=char_width(f)(c_info) div 2;
- c_wd:=char_height(f)(c_htdp)+char_depth(f)(c_htdp);
- end
- else begin
- c_ht:=char_height(f)(c_htdp);
- c_dp:=char_depth(f)(c_htdp);
- c_wd:=char_width(f)(c_info);
- end;
- cur_h:=cur_h+c_wd;
- if (font_natural_dir(f)<>-1) then
- case font_direction(dvi_direction) of
- dir__LT,dir__LB: begin
- dvi_set(c);
- end;
- dir__RT,dir__RB: begin
- dvi_put(c);
- dvi_left(c_wd);
- end;
- dir__TL,dir__TR: begin
- dvi_put(c);
- dvi_down(c_wd);
- end;
- dir__BL,dir__BR: begin
- dvi_put(c);
- dvi_up(c_wd);
- end;
- dir__LL,dir__LR: begin
- dvi_put(c);
- dvi_right(c_wd);
- end;
- dir__RL,dir__RR: begin
- dvi_put(c);
- dvi_left(c_wd);
- end;
- dir__TT,dir__TB: begin
- dvi_put(c);
- dvi_down(c_wd);
- end;
- dir__BT,dir__BB: begin
- dvi_put(c);
- dvi_up(c_wd);
- end;
- end
- else
- case font_direction(dvi_direction) of
- dir__LT: begin
- dvi_set(c);
- end;
- dir__LB: begin
- dvi_down(c_ht);
- dvi_set(c);
- dvi_up(c_ht);
- end;
- dir__RT: begin
- dvi_left(c_wd);
- dvi_put(c);
- end;
- dir__RB: begin
- dvi_left(c_wd);
- dvi_down(c_ht);
- dvi_put(c);
- dvi_up(c_ht);
- end;
- dir__TL: begin
- dvi_down(c_wd);
- dvi_left(c_ht);
- dvi_put(c);
- dvi_right(c_ht);
- end;
- dir__TR: begin
- dvi_down(c_wd);
- dvi_left(c_dp);
- dvi_put(c);
- dvi_right(c_dp);
- end;
- dir__BL: begin
- dvi_left(c_ht);
- dvi_put(c);
- dvi_right(c_ht);
- dvi_up(c_wd);
- end;
- dir__BR: begin
- dvi_left(c_dp);
- dvi_put(c);
- dvi_right(c_dp);
- dvi_up(c_wd);
- end;
- dir__LL,dir__LR: begin
- dvi_down(c_ht);
- dvi_put(c);
- dvi_up(c_ht);
- dvi_right(c_wd);
- end;
- dir__RL,dir__RR: begin
- dvi_left(c_wd);
- dvi_down(c_ht);
- dvi_put(c);
- dvi_up(c_ht);
- end;
- dir__TT,dir__TB: begin
- dvi_down(c_wd);
- dvi_left(c_ht);
- dvi_put(c);
- dvi_right(c_ht);
- end;
- dir__BT,dir__BB: begin
- dvi_left(c_ht);
- dvi_put(c);
- dvi_right(c_ht);
- dvi_up(c_wd);
- end;
- end;
- p:=link(p);
- dvi_h:=cur_h;
- @<DIR: Check if the text direction has changed@>;
- until not is_char_node(p);
- end
-else @<Output the non-|char_node| |p| for |hlist_out|
- and move to the next node@>
-@z
-%-------------------------
-@x [32] m.622
-rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
- goto fin_rule;
- end;
-whatsit_node: @<Output the whatsit node |p| in an hlist@>;
-glue_node: @<Move right or output leaders@>;
-kern_node,math_node:cur_h:=cur_h+width(p);
-ligature_node: @<Make node |p| look like a |char_node| and |goto reswitch|@>;
-othercases do_nothing
-endcases;@/
-goto next_p;
-fin_rule: @<Output a rule in an hlist@>;
-move_past: cur_h:=cur_h+rule_wd;
-next_p:
-if type(p)<>kern_node then should_create_special:=true;
-p:=link(p);
-end
-@y
-rule_node: begin
- if rule_dir(p)=-1 then begin
- print("Rule direction is not defined"); print_ln;
- end;
- if not (dir_orthogonal(dir_primary[rule_dir(p)])
- (dir_primary[dvi_direction])) then begin
- rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
- end
- else begin
- rule_ht:=width(p) div 2;
- rule_dp:=width(p) div 2;
- rule_wd:=height(p)+depth(p);
- end;
- goto fin_rule;
- end;
-whatsit_node: @<Output the whatsit node |p| in an hlist@>;
-glue_node: @<Move right or output leaders@>;
-kern_node,math_node:cur_h:=cur_h+width(p);
-ligature_node: @<Make node |p| look like a |char_node| and |goto reswitch|@>;
-othercases do_nothing
-endcases;@/
-goto next_p;
-fin_rule: @<Output a rule in an hlist@>;
-move_past: cur_h:=cur_h+rule_wd;
-next_p:
-if type(p)<>kern_node then should_create_special:=true;
-p:=link(p);
-@<DIR: Check if the text direction has changed@>;
-end
-@z
-%-------------------------
-@x [32] m.623
-if list_ptr(p)=null then cur_h:=cur_h+width(p)
-else begin save_h:=dvi_h; save_v:=dvi_v;
- cur_v:=base_line+shift_amount(p); {shift the box down}
- temp_ptr:=p; edge:=cur_h;
- if type(p)=vlist_node then vlist_out@+else hlist_out;
- dvi_h:=save_h; dvi_v:=save_v;
- cur_h:=edge+width(p); cur_v:=base_line;
- end
-@y
-begin
-if not (dir_orthogonal(dir_primary[box_dir(p)])
- (dir_primary[dvi_direction])) then begin
- effective_horizontal:=width(p);
- basepoint_vertical:=0;
- if dir_opposite(dir_secondary[box_dir(p)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=width(p)
- else
- basepoint_horizontal:=0;
- end
-else begin
- effective_horizontal:=height(p)+depth(p);
- if not (is_mirrored(box_dir(p))) then
- if dir_eq(dir_primary[box_dir(p)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=height(p)
- else
- basepoint_horizontal:=depth(p)
- else
- if dir_eq(dir_primary[box_dir(p)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=height(p)
- else
- basepoint_horizontal:=depth(p);
- if dir_eq(dir_secondary[box_dir(p)])
- (dir_primary[dvi_direction]) then
- basepoint_vertical:= -(width(p) div 2)
- else
- basepoint_vertical:= (width(p) div 2);
- end;
-if not (is_mirrored(dvi_direction)) then
- basepoint_vertical := basepoint_vertical + shift_amount(p)
- {shift the box `down'}
-else
- basepoint_vertical := basepoint_vertical - shift_amount(p);
- {shift the box `up'}
-if list_ptr(p)=null then cur_h:=cur_h + effective_horizontal
-else begin
- temp_ptr:=p; edge:=cur_h; cur_h:=cur_h + basepoint_horizontal;
- edge_v:=cur_v; cur_v:=base_line + basepoint_vertical;
- {if dvi_direction<>box_dir(p) then begin}
- synch_h; synch_v;
- {end;}
- save_h:=dvi_h; save_v:=dvi_v;
- if type(p)=vlist_node then vlist_out@+else hlist_out;
- dvi_h:=save_h; dvi_v:=save_v;
- cur_h:=edge+effective_horizontal; cur_v:=base_line;
- end
-end
-@z
-%-------------------------
-@x [32] m.624
- dvi_out(set_rule); dvi_four(rule_ht); dvi_four(rule_wd);
-@y
- case font_direction(dvi_direction) of
- dir__LT: begin
- dvi_set_rule(rule_ht)(rule_wd);
- end;
- dir__LB: begin
- dvi_down(rule_ht);
- dvi_set_rule(rule_ht)(rule_wd);
- dvi_up(rule_ht);
- end;
- dir__RT: begin
- dvi_left(rule_wd);
- dvi_put_rule(rule_ht)(rule_wd);
- end;
- dir__RB: begin
- dvi_left(rule_wd);
- dvi_down(rule_ht);
- dvi_put_rule(rule_ht)(rule_wd);
- dvi_up(rule_ht);
- end;
- dir__TL: begin
- dvi_down(rule_wd);
- dvi_left(rule_ht);
- dvi_set_rule(rule_wd)(rule_ht);
- end;
- dir__TR: begin
- dvi_down(rule_wd);
- dvi_put_rule(rule_wd)(rule_ht);
- end;
- dir__BL: begin
- dvi_left(rule_ht);
- dvi_set_rule(rule_wd)(rule_ht);
- dvi_up(rule_wd);
- end;
- dir__BR: begin
- dvi_put_rule(rule_wd)(rule_ht);
- dvi_up(rule_wd);
- end;
- end;
-@z
-%-------------------------
-@x [32] m.626
-leader_wd:=width(leader_box);
-@y
-if not (dir_orthogonal(dir_primary[box_dir(leader_box)])
- (dir_primary[dvi_direction])) then
- leader_wd:=width(leader_box)
-else
- leader_wd:=height(leader_box)+depth(leader_box);
-@z
-%-------------------------
-@x [32] m.628
-@<Output a leader box at |cur_h|, ...@>=
-begin cur_v:=base_line+shift_amount(leader_box); synch_v; save_v:=dvi_v;@/
-synch_h; save_h:=dvi_h; temp_ptr:=leader_box;
-outer_doing_leaders:=doing_leaders; doing_leaders:=true;
-if type(leader_box)=vlist_node then vlist_out@+else hlist_out;
-doing_leaders:=outer_doing_leaders;
-dvi_v:=save_v; dvi_h:=save_h; cur_v:=base_line;
-cur_h:=save_h+leader_wd+lx;
-end
-@y
-@<Output a leader box at |cur_h|, ...@>=
-begin
-if not (dir_orthogonal(dir_primary[box_dir(leader_box)])
- (dir_primary[dvi_direction])) then begin
- basepoint_vertical:=0;
- if dir_opposite(dir_secondary[box_dir(leader_box)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=width(leader_box)
- else
- basepoint_horizontal:=0;
- end
-else begin
- if not (is_mirrored(box_dir(leader_box))) then
- if dir_eq(dir_primary[box_dir(leader_box)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=height(leader_box)
- else
- basepoint_horizontal:=depth(leader_box)
- else
- if dir_eq(dir_primary[box_dir(leader_box)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=depth(leader_box)
- else
- basepoint_horizontal:=height(leader_box);
- if dir_eq(dir_secondary[box_dir(leader_box)])
- (dir_primary[dvi_direction]) then
- basepoint_vertical:= -(width(leader_box) div 2)
- else
- basepoint_vertical:= (width(leader_box) div 2);
- end;
-if not (is_mirrored(dvi_direction)) then
- basepoint_vertical := basepoint_vertical + shift_amount(leader_box)
- {shift the box `down'}
-else
- basepoint_vertical := basepoint_vertical - shift_amount(leader_box);
- {shift the box `up'}
-temp_ptr:=leader_box;
-synch_h; save_h:=dvi_h;
-cur_h:=cur_h + basepoint_horizontal;
-edge_v:=cur_v; cur_v:=base_line + basepoint_vertical;
-synch_v; save_v:=dvi_v;
-outer_doing_leaders:=doing_leaders; doing_leaders:=true;
-if type(leader_box)=vlist_node then vlist_out@+else hlist_out;
-doing_leaders:=outer_doing_leaders;
-dvi_v:=save_v; dvi_h:=save_h; cur_v:=base_line;
-cur_h:=save_h+leader_wd+lx;
-end
-@z
-%-------------------------
-@x [32] m.629
-@!cur_g:scaled; {rounded equivalent of |cur_glue| times the glue ratio}
-begin cur_g:=0; cur_glue:=float_constant(0);
-this_box:=temp_ptr; g_order:=glue_order(this_box);
-g_sign:=glue_sign(this_box); p:=list_ptr(this_box);
-incr(cur_s);
-if cur_s>0 then dvi_out(push);
-if cur_s>max_push then max_push:=cur_s;
-save_loc:=dvi_offset+dvi_ptr; left_edge:=cur_h; cur_v:=cur_v-height(this_box);
-top_edge:=cur_v;
-while p<>null do @<Output node |p| for |vlist_out| and move to the next node,
- maintaining the condition |cur_h=left_edge|@>;
-prune_movements(save_loc);
-if cur_s>0 then dvi_pop(save_loc);
-decr(cur_s);
-@y
-@!cur_g:scaled; {rounded equivalent of |cur_glue| times the glue ratio}
-@!save_direction: integer;
-@!effective_vertical: scaled;
-@!basepoint_horizontal: scaled;
-@!basepoint_vertical: scaled;
-@!edge_v: scaled;
-@!saving_v: scaled;
-@!saving_h: scaled;
-begin cur_g:=0; cur_glue:=float_constant(0);
-this_box:=temp_ptr; g_order:=glue_order(this_box);
-g_sign:=glue_sign(this_box); p:=list_ptr(this_box);
-saving_v:=dvi_v; saving_h:=dvi_h;
-save_direction:=dvi_direction;
-if dvi_direction<>box_dir(this_box) then begin
- dvi_direction:=box_dir(this_box);
- synch_v; synch_h;
- saving_h:=dvi_h; saving_v:=dvi_v;
- end;
-incr(cur_s);
-if cur_s>0 then dvi_out(push);
-if cur_s>max_push then max_push:=cur_s;
-save_loc:=dvi_offset+dvi_ptr; left_edge:=cur_h; cur_v:=cur_v-height(this_box);
-top_edge:=cur_v;
-while p<>null do @<Output node |p| for |vlist_out| and move to the next node,
- maintaining the condition |cur_h=left_edge|@>;
-prune_movements(save_loc);
-if cur_s>0 then dvi_pop(save_loc);
-decr(cur_s);
-if dvi_direction<>save_direction then begin
- dvi_direction:=save_direction;
- synch_v; synch_h;
- cur_h:=saving_h; cur_v:=saving_v;
- end;
-@z
-%-------------------------
-@x [32] m.631
-rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
- goto fin_rule;
- end;
-@y
-rule_node: begin
- if not (dir_orthogonal(dir_primary[rule_dir(p)])
- (dir_primary[dvi_direction])) then begin
- rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
- end
- else begin
- rule_ht:=width(p) div 2;
- rule_dp:=width(p) div 2;
- rule_wd:=height(p)+depth(p);
- end;
- goto fin_rule;
- end;
-@z
-%-------------------------
-@x [32] m.632
-@<Output a box in a vlist@>=
-if list_ptr(p)=null then cur_v:=cur_v+height(p)+depth(p)
-else begin cur_v:=cur_v+height(p); synch_v;
- save_h:=dvi_h; save_v:=dvi_v;
- cur_h:=left_edge+shift_amount(p); {shift the box right}
- temp_ptr:=p;
- if type(p)=vlist_node then vlist_out@+else hlist_out;
- dvi_h:=save_h; dvi_v:=save_v;
- cur_v:=save_v+depth(p); cur_h:=left_edge;
- end
-@y
-@<Output a box in a vlist@>=
-begin
-if not (dir_orthogonal(dir_primary[box_dir(p)])
- (dir_primary[dvi_direction])) then begin
- effective_vertical:=height(p)+depth(p);
- if (is_mirrored(box_dir(p))) then
- basepoint_vertical:=depth(p)
- else
- basepoint_vertical:=height(p);
- if dir_opposite(dir_secondary[box_dir(p)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=width(p)
- else
- basepoint_horizontal:=0;
- end
-else begin
- effective_vertical:=width(p);
- if not (is_mirrored(box_dir(p))) then
- if dir_eq(dir_primary[box_dir(p)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=height(p)
- else
- basepoint_horizontal:=depth(p)
- else
- if dir_eq(dir_primary[box_dir(p)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=height(p)
- else
- basepoint_horizontal:=depth(p);
- if dir_eq(dir_secondary[box_dir(p)])
- (dir_primary[dvi_direction]) then
- basepoint_vertical:=0
- else
- basepoint_vertical:=width(p);
- end;
-basepoint_horizontal := basepoint_horizontal + shift_amount(p);
- {shift the box `right'}
-if list_ptr(p)=null then begin
- cur_v:=cur_v+effective_vertical;
- end
-else begin
- edge_v:=cur_v;
- cur_h:=left_edge + basepoint_horizontal;
- cur_v:=cur_v + basepoint_vertical;
- if dvi_direction<>box_dir(p) then begin
- synch_h;
- end;
- synch_v;
- save_h:=dvi_h; save_v:=dvi_v;
- temp_ptr:=p;
- if type(p)=vlist_node then vlist_out@+else hlist_out;
- dvi_h:=save_h; dvi_v:=save_v;
- cur_h:=left_edge; cur_v:=edge_v + effective_vertical;
- end
-end
-@z
-%-------------------------
-@x [32] m.633
- dvi_out(put_rule); dvi_four(rule_ht); dvi_four(rule_wd);
-@y
- case font_direction(dvi_direction) of
- dir__LT: begin
- dvi_put_rule(rule_ht)(rule_wd);
- end;
- dir__LB: begin
- dvi_down(rule_ht);
- dvi_put_rule(rule_ht)(rule_wd);
- dvi_up(rule_ht);
- end;
- dir__RT: begin
- dvi_left(rule_wd);
- dvi_set_rule(rule_ht)(rule_wd);
- end;
- dir__RB: begin
- dvi_down(rule_ht);
- dvi_left(rule_wd);
- dvi_set_rule(rule_ht)(rule_wd);
- dvi_up(rule_ht);
- end;
- dir__TL: begin
- dvi_down(rule_wd);
- dvi_left(rule_ht);
- dvi_set_rule(rule_wd)(rule_ht);
- dvi_up(rule_wd);
- end;
- dir__TR: begin
- dvi_down(rule_wd);
- dvi_put_rule(rule_wd)(rule_ht);
- dvi_up(rule_wd);
- end;
- dir__BL: begin
- dvi_left(rule_ht);
- dvi_set_rule(rule_wd)(rule_ht);
- end;
- dir__BR: begin
- dvi_put_rule(rule_wd)(rule_ht);
- end;
- end;
-@z
-%-------------------------
-@x [32] m.635
-leader_ht:=height(leader_box)+depth(leader_box);
-@y
-if not (dir_orthogonal(dir_primary[box_dir(leader_box)])
- (dir_primary[dvi_direction])) then
- leader_ht:=height(leader_box)+depth(leader_box)
-else
- leader_ht:=width(leader_box);
-@z
-%-------------------------
-@x [32] m.637
-@<Output a leader box at |cur_v|, ...@>=
-begin cur_h:=left_edge+shift_amount(leader_box); synch_h; save_h:=dvi_h;@/
-cur_v:=cur_v+height(leader_box); synch_v; save_v:=dvi_v;
-temp_ptr:=leader_box;
-outer_doing_leaders:=doing_leaders; doing_leaders:=true;
-if type(leader_box)=vlist_node then vlist_out@+else hlist_out;
-doing_leaders:=outer_doing_leaders;
-dvi_v:=save_v; dvi_h:=save_h; cur_h:=left_edge;
-cur_v:=save_v-height(leader_box)+leader_ht+lx;
-end
-@y
-@<Output a leader box at |cur_v|, ...@>=
-begin
-if not (dir_orthogonal(dir_primary[box_dir(leader_box)])
- (dir_primary[dvi_direction])) then begin
- effective_vertical:=height(leader_box)+depth(leader_box);
- if (is_mirrored(box_dir(leader_box))) then
- basepoint_vertical:=depth(leader_box)
- else
- basepoint_vertical:=height(leader_box);
- if dir_opposite(dir_secondary[box_dir(leader_box)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=width(leader_box)
- else
- basepoint_horizontal:=0;
- end
-else begin
- effective_vertical:=width(leader_box);
- if not (is_mirrored(box_dir(leader_box))) then
- if dir_eq(dir_primary[box_dir(leader_box)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=height(leader_box)
- else
- basepoint_horizontal:=depth(leader_box)
- else
- if dir_eq(dir_primary[box_dir(leader_box)])
- (dir_secondary[dvi_direction]) then
- basepoint_horizontal:=depth(leader_box)
- else
- basepoint_horizontal:=height(leader_box);
- if dir_eq(dir_secondary[box_dir(leader_box)])
- (dir_primary[dvi_direction]) then
- basepoint_vertical:= width(leader_box)
- else
- basepoint_vertical:= 0;
- end;
-basepoint_horizontal := basepoint_horizontal + shift_amount(leader_box);
- {shift the box `right'}
-temp_ptr:=leader_box;
-edge_v:=cur_v;
-cur_h:=left_edge + basepoint_horizontal;
-cur_v:=cur_v + basepoint_vertical;
-synch_h; synch_v; save_h:=dvi_h; save_v:=dvi_v;
-outer_doing_leaders:=doing_leaders; doing_leaders:=true;
-if type(leader_box)=vlist_node then vlist_out@+else hlist_out;
-doing_leaders:=outer_doing_leaders;
-dvi_h:=save_h; dvi_v:=save_v;
-cur_h:=left_edge; cur_v:=edge_v+leader_ht+lx;
-end
-@z
-%-------------------------
-@x [32] m.640
-cur_v:=height(p)+v_offset; temp_ptr:=p;
-if type(p)=vlist_node then vlist_out@+else hlist_out;
-@y
-dvi_direction:=page_direction;
-case box_direction(dvi_direction) of
-dir_TL_,dir_LT_: begin
- end;
-dir_TR_,dir_RT_: begin
- dvi_right(page_right_offset);
- end;
-dir_RB_,dir_BR_: begin
- dvi_right(page_right_offset);
- dvi_down(page_bottom_offset);
- end;
-dir_BL_,dir_LB_: begin
- dvi_down(page_bottom_offset);
- end;
-end;
-cur_h:=h_offset;
-cur_v:=height(p)+v_offset;
-case box_direction(dvi_direction) of
-dir_TL_: begin
- dvi_down(cur_v);
- dvi_right(cur_h);
- end;
-dir_TR_: begin
- dvi_down(cur_v);
- dvi_right(-cur_h);
- end;
-dir_LT_: begin
- dvi_right(cur_v);
- dvi_down(cur_h);
- end;
-dir_LB_: begin
- dvi_right(cur_v);
- dvi_down(-cur_h);
- end;
-dir_BL_: begin
- dvi_down(-cur_v);
- dvi_right(cur_h);
- end;
-dir_BR_: begin
- dvi_down(-cur_v);
- dvi_right(-cur_h);
- end;
-dir_RT_: begin
- dvi_right(-cur_v);
- dvi_down(cur_h);
- end;
-dir_RB_: begin
- dvi_right(-cur_v);
- dvi_down(-cur_h);
- end;
-end;
-dvi_h:=cur_h;
-dvi_v:=cur_v;
-temp_ptr:=p;
-if type(p)=vlist_node then vlist_out@+else hlist_out;
-@z
-%-------------------------
-@x [33] m.644
-@d exactly=0 {a box dimension is pre-specified}
-@d additional=1 {a box dimension is increased from the natural one}
-@d natural==0,additional {shorthand for parameters to |hpack| and |vpack|}
-@y
-@d exactly=0 {a box dimension is pre-specified}
-@d additional=1 {a box dimension is increased from the natural one}
-@d natural==0,additional {shorthand for parameters to |hpack| and |vpack|}
-
-@<Glob...@>=
-spec_direction:integer;
-
-@z
-%-------------------------
-@x [33] m.645
-procedure scan_spec(@!c:group_code;@!three_codes:boolean);
- {scans a box specification and left brace}
-label found;
-var @!s:integer; {temporarily saved value}
-@!spec_code:exactly..additional;
-begin if three_codes then s:=saved(0);
-if scan_keyword("to") then spec_code:=exactly
-@.to@>
-else if scan_keyword("spread") then spec_code:=additional
-@.spread@>
-else begin spec_code:=additional; cur_val:=0;
- goto found;
- end;
-scan_normal_dimen;
-found: if three_codes then
- begin saved(0):=s; incr(save_ptr);
- end;
-saved(0):=spec_code; saved(1):=cur_val; save_ptr:=save_ptr+2;
-new_save_level(c); scan_left_brace;
-end;
-@y
-procedure scan_spec(@!c:group_code;@!four_codes:boolean);
- {scans a box specification and left brace}
-label found;
-var @!s:integer; {temporarily saved value}
-@!spec_code:exactly..additional;
-begin if four_codes then s:=saved(0);
-if abs(mode)=mmode then
- spec_direction:=math_direction
-else
- spec_direction:=text_direction;
-if scan_keyword("dir") then begin
- scan_dir; spec_direction:=cur_val;
- end;
-if scan_keyword("to") then spec_code:=exactly
-@.to@>
-else if scan_keyword("spread") then spec_code:=additional
-@.spread@>
-else begin spec_code:=additional; cur_val:=0;
- goto found;
- end;
-scan_normal_dimen;
-found: if four_codes then
- begin saved(0):=s; incr(save_ptr);
- end;
-saved(0):=spec_code; saved(1):=cur_val;
-saved(2):=spec_direction;
-save_ptr:=save_ptr+3;
-new_save_level(c); scan_left_brace;
-eq_word_define(dir_base+text_direction_code,spec_direction);
-make_local_direction(spec_direction,true);
-end;
-@z
-%-------------------------
-@x [33] m.649
-@p function hpack(@!p:pointer;@!w:scaled;@!m:small_number):pointer;
-label reswitch, common_ending, exit;
-var r:pointer; {the box node that will be returned}
-@!q:pointer; {trails behind |p|}
-@!h,@!d,@!x:scaled; {height, depth, and natural width}
-@!s:scaled; {shift amount}
-@!g:pointer; {points to a glue specification}
-@!o:glue_ord; {order of infinity}
-@!f:internal_font_number; {the font in a |char_node|}
-@!i:four_quarters; {font information about a |char_node|}
-@!hd:eight_bits; {height and depth indices for a character}
-begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node;
-@y
-@p function hpack(@!p:pointer;@!w:scaled;@!m:small_number;@!hpack_dir:integer):
-pointer;
-label reswitch, common_ending, exit;
-var r:pointer; {the box node that will be returned}
-@!q:pointer; {trails behind |p|}
-@!h,@!d,@!x:scaled; {height, depth, and natural width}
-@!s:scaled; {shift amount}
-@!g:pointer; {points to a glue specification}
-@!o:glue_ord; {order of infinity}
-@!f:internal_font_number; {the font in a |char_node|}
-@!i:four_quarters; {font information about a |char_node|}
-@!hd:eight_bits; {height and depth indices for a character}
-begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node;
-box_dir(r):=hpack_dir;
-if (hpack_dir<0) or (hpack_dir>31) then begin
- print_ln; print("hpack_dir="); print_int(hpack_dir); print_ln;
- end;
-ptr_info(r):=local_par_info;
-info_incr_ref_count(local_par_info);
-@z
-%-------------------------
-@x [33] m.649
-exit: hpack:=r;
-end;
-@y
-exit:
-{
-if is_mirrored(hpack_dir) then begin
- hd:=depth(p); depth(p):=height(p); height(p):=hd;
- end;
-}
-hpack:=r;
-end;
-@z
-%-------------------------
-@x [33] m.653
-@<Incorporate box dimensions into the dimensions of the hbox...@>=
-begin x:=x+width(p);
-if type(p)>=rule_node then s:=0 @+else s:=shift_amount(p);
-if height(p)-s>h then h:=height(p)-s;
-if depth(p)+s>d then d:=depth(p)+s;
-end
-@y
-@<Incorporate box dimensions into the dimensions of the hbox...@>=
-begin
-if (type(p)=hlist_node) or (type(p)=vlist_node) then begin
- if dir_orthogonal(dir_primary[hpack_dir])
- (dir_primary[box_dir(p)]) then begin
- x:=x+height(p)+depth(p);
- s:=shift_amount(p);
- if (width(p) div 2)-s>h then h:=(width(p) div 2)-s;
- if (width(p) div 2)+s>d then d:=(width(p) div 2)+s;
- end
- else if dir_opposite(dir_primary[hpack_dir])
- (dir_primary[box_dir(p)]) then begin
- x:=x+width(p);
- s:=shift_amount(p);
- if depth(p)-s>h then h:=depth(p)-s;
- if height(p)+s>d then d:=height(p)+s;
- end
- else begin
- x:=x+width(p);
- s:=shift_amount(p);
- if height(p)-s>h then h:=height(p)-s;
- if depth(p)+s>d then d:=depth(p)+s;
- end
- end
-else begin
- x:=x+width(p);
- if type(p)>=rule_node then s:=0 @+else s:=shift_amount(p);
- if height(p)-s>h then h:=height(p)-s;
- if depth(p)+s>d then d:=depth(p)+s;
- end;
-end
-@z
-%-------------------------
-@x [33] m.654
-@<Incorporate character dimensions into the dimensions of the hbox...@>=
-begin f:=font(p); i:=char_info(f)(character(p)); hd:=height_depth(i);
-x:=x+char_width(f)(i);@/
-s:=char_height(f)(hd);@+if s>h then h:=s;
-s:=char_depth(f)(hd);@+if s>d then d:=s;
-p:=link(p);
-end
-@y
-@<Incorporate character dimensions into the dimensions of the hbox...@>=
-begin f:=font(p); i:=char_info(f)(character(p)); hd:=height_depth(i);
-if is_rotated(get_dir(p)) then begin
- x:=x+char_height(f)(hd)+char_depth(f)(hd);@/
- s:=char_width(f)(i) div 2;@+if s>h then h:=s;
- s:=char_width(f)(i) div 2;@+if s>d then d:=s;
- end
-else if dir_opposite(dir_tertiary[hpack_dir])
- (dir_tertiary[get_dir(p)]) then begin
- x:=x+char_width(f)(i);@/
- s:=char_depth(f)(hd);@+if s>h then h:=s;
- s:=char_height(f)(hd);@+if s>d then d:=s;
- end
-else begin
- x:=x+char_width(f)(i);@/
- s:=char_height(f)(hd);@+if s>h then h:=s;
- s:=char_depth(f)(hd);@+if s>d then d:=s;
- end;
-p:=link(p);
-end
-@z
-%-------------------------
-@x [33] m.666
-@ @<Report an overfull hbox and |goto common_ending|, if...@>=
-if (-x-total_shrink[normal]>hfuzz)or(hbadness<100) then
- begin if (overfull_rule>0)and(-x-total_shrink[normal]>hfuzz) then
- begin while link(q)<>null do q:=link(q);
- link(q):=new_rule;
- width(link(q)):=overfull_rule;
- end;
-@y
-@ @<Report an overfull hbox and |goto common_ending|, if...@>=
-if (-x-total_shrink[normal]>hfuzz)or(hbadness<100) then
- begin if (overfull_rule>0)and(-x-total_shrink[normal]>hfuzz) then
- begin while link(q)<>null do q:=link(q);
- link(q):=new_rule; rule_dir(q):=box_dir(r);
- width(link(q)):=overfull_rule;
- end;
-@z
-%-------------------------
-@x [33] m.668
-@p function vpackage(@!p:pointer;@!h:scaled;@!m:small_number;@!l:scaled):
- pointer;
-label common_ending, exit;
-var r:pointer; {the box node that will be returned}
-@!w,@!d,@!x:scaled; {width, depth, and natural height}
-@!s:scaled; {shift amount}
-@!g:pointer; {points to a glue specification}
-@!o:glue_ord; {order of infinity}
-begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node;
-@y
-@p function vpackage(@!p:pointer;@!h:scaled;@!m:small_number;@!l:scaled;
-@!vpack_dir:integer):pointer;
-label common_ending, exit;
-var r:pointer; {the box node that will be returned}
-@!w,@!d,@!x:scaled; {width, depth, and natural height}
-@!s:scaled; {shift amount}
-@!g:pointer; {points to a glue specification}
-@!o:glue_ord; {order of infinity}
-@!dh:scaled;
-begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node;
-box_dir(r):=vpack_dir;
-if (vpack_dir<0) or (vpack_dir>31) then begin
- print_ln; print("vpack_dir="); print_int(vpack_dir); print_ln;
- end;
-ptr_info(r):=local_par_info;
-info_incr_ref_count(local_par_info);
-@z
-%-------------------------
-@x [33] m.668
-exit: vpackage:=r;
-end;
-@y
-exit:
-{
-if is_mirrored(vpack_dir) then begin
- dh:=depth(r); depth(r):=height(r); height(r):=dh;
- end;
-}
-vpackage:=r;
-end;
-@z
-%-------------------------
-@x [33] m.670
-@ @<Incorporate box dimensions into the dimensions of the vbox...@>=
-begin x:=x+d+height(p); d:=depth(p);
-if type(p)>=rule_node then s:=0 @+else s:=shift_amount(p);
-if width(p)+s>w then w:=width(p)+s;
-end
-@y
-@ @<Incorporate box dimensions into the dimensions of the vbox...@>=
-begin
-if (type(p)=hlist_node) or (type(p)=vlist_node) then begin
- if dir_orthogonal(dir_primary[vpack_dir])
- (dir_primary[box_dir(p)]) then begin
- x:=x+d+(width(p) div 2); d:=width(p) div 2;
- s:=shift_amount(p);
- if depth(p)+height(p)+s>w then w:=depth(p)+height(p)+s;
- end
- else if dir_opposite(dir_primary[vpack_dir])
- (dir_primary[box_dir(p)]) then begin
- x:=x+d+depth(p); d:=height(p);
- s:=shift_amount(p);
- if width(p)+s>w then w:=width(p)+s;
- end
- else begin
- x:=x+d+height(p); d:=depth(p);
- s:=shift_amount(p);
- if width(p)+s>w then w:=width(p)+s;
- end
- end
-else
- begin x:=x+d+height(p); d:=depth(p);
- if type(p)>=rule_node then s:=0 @+else s:=shift_amount(p);
- if width(p)+s>w then w:=width(p)+s;
- end;
-end
-@z
-%-------------------------
-@x [33] m.679
- begin d:=width(baseline_skip)-prev_depth-height(b);
- if d<line_skip_limit then p:=new_param_glue(line_skip_code)
- else begin p:=new_skip_param(baseline_skip_code);
- width(temp_ptr):=d; {|temp_ptr=glue_ptr(p)|}
- end;
- link(tail):=p; tail:=p;
- end;
-link(tail):=b; tail:=b; prev_depth:=depth(b);
-@y
- begin
- if (type(b)=hlist_node) and (is_mirrored(box_dir(b))) then
- d:=width(baseline_skip)-prev_depth-depth(b)
- else
- d:=width(baseline_skip)-prev_depth-height(b);
- if d<line_skip_limit then p:=new_param_glue(line_skip_code)
- else begin p:=new_skip_param(baseline_skip_code);
- width(temp_ptr):=d; {|temp_ptr=glue_ptr(p)|}
- end;
- link(tail):=p; tail:=p;
- end;
-link(tail):=b; tail:=b;
-if (type(b)=hlist_node) and (is_mirrored(box_dir(b))) then
- prev_depth:=height(b)
-else
- prev_depth:=depth(b);
-@z
-%-------------------------
-@x [35] m.704
-@p function fraction_rule(@!t:scaled):pointer;
- {construct the bar for a fraction}
-var p:pointer; {the new node}
-begin p:=new_rule; height(p):=t; depth(p):=0; fraction_rule:=p;
-end;
-@y
-@p function fraction_rule(@!t:scaled):pointer;
- {construct the bar for a fraction}
-var p:pointer; {the new node}
-begin p:=new_rule; rule_dir(p):=info(math_dir_stack);
-height(p):=t; depth(p):=0; fraction_rule:=p;
-end;
-@z
-%-------------------------
-@x [35] m.705
-@p function overbar(@!b:pointer;@!k,@!t:scaled):pointer;
-var p,@!q:pointer; {nodes being constructed}
-begin p:=new_kern(k); link(p):=b; q:=fraction_rule(t); link(q):=p;
-p:=new_kern(t); link(p):=q; overbar:=vpack(p,natural);
-end;
-@y
-@p function overbar(@!b:pointer;@!k,@!t:scaled):pointer;
-var p,@!q:pointer; {nodes being constructed}
-begin p:=new_kern(k); link(p):=b; q:=fraction_rule(t); link(q):=p;
-p:=new_kern(t); link(p):=q;
-overbar:=vpackage(p,natural,max_dimen,info(math_dir_stack));
-end;
-@z
-%-------------------------
-@x [36] m.706
-else begin b:=new_null_box;
-@y
-else begin b:=new_null_box; box_dir(b):=info(math_dir_stack);
-@z
-%-------------------------
-@x [36] m.709
-function char_box(@!f:internal_font_number;@!c:quarterword):pointer;
-var q:four_quarters;
-@!hd:eight_bits; {|height_depth| byte}
-@!b,@!p:pointer; {the new box and its character node}
-begin q:=char_info(f)(c); hd:=height_depth(q);
-b:=new_null_box; width(b):=char_width(f)(q)+char_italic(f)(q);
-height(b):=char_height(f)(hd); depth(b):=char_depth(f)(hd);
-p:=get_avail; character(p):=c; font(p):=f; list_ptr(b):=p; char_box:=b;
-end;
-@y
-function char_box(@!f:internal_font_number;@!c:quarterword):pointer;
-var q:four_quarters;
-@!hd:eight_bits; {|height_depth| byte}
-@!b,@!p:pointer; {the new box and its character node}
-begin q:=char_info(f)(c); hd:=height_depth(q);
-b:=new_null_box; width(b):=char_width(f)(q)+char_italic(f)(q);
-box_dir(b):=info(math_dir_stack);
-height(b):=char_height(f)(hd); depth(b):=char_depth(f)(hd);
-p:=get_avail; character(p):=c; font(p):=f; list_ptr(b):=p;
-ptr_info(p):=local_par_info; info_incr_ref_count(local_par_info);
-char_box:=b;
-end;
-@z
-%-------------------------
-@x [36] m.713
-@ @<Construct an extensible...@>=
-begin b:=new_null_box;
-@y
-@ @<Construct an extensible...@>=
-begin b:=new_null_box;
-box_dir(b):=info(math_dir_stack);
-@z
-%-------------------------
-@x [36] m.715
-@p function rebox(@!b:pointer;@!w:scaled):pointer;
-var p:pointer; {temporary register for list manipulation}
-@!f:internal_font_number; {font in a one-character box}
-@!v:scaled; {width of a character without italic correction}
-begin if (width(b)<>w)and(list_ptr(b)<>null) then
- begin if type(b)=vlist_node then b:=hpack(b,natural);
- p:=list_ptr(b);
- if (is_char_node(p))and(link(p)=null) then
- begin f:=font(p); v:=char_width(f)(char_info(f)(character(p)));
- if v<>width(b) then link(p):=new_kern(width(b)-v);
- end;
- free_node(b,box_node_size);
- b:=new_glue(ss_glue); link(b):=p;
- while link(p)<>null do p:=link(p);
- link(p):=new_glue(ss_glue);
- rebox:=hpack(b,w,exactly);
- end
-else begin width(b):=w; rebox:=b;
- end;
-end;
-@y
-@p function rebox(@!b:pointer;@!w:scaled):pointer;
-var p:pointer; {temporary register for list manipulation}
-@!f:internal_font_number; {font in a one-character box}
-@!v:scaled; {width of a character without italic correction}
-begin if (width(b)<>w)and(list_ptr(b)<>null) then
- begin if type(b)=vlist_node then b:=hpack(b,natural,info(math_dir_stack));
- p:=list_ptr(b);
- if (is_char_node(p))and(link(p)=null) then
- begin f:=font(p); v:=char_width(f)(char_info(f)(character(p)));
- if v<>width(b) then link(p):=new_kern(width(b)-v);
- end;
- free_node(b,box_node_size);
- b:=new_glue(ss_glue); link(b):=p;
- while link(p)<>null do p:=link(p);
- link(p):=new_glue(ss_glue);
- rebox:=hpack(b,w,exactly,info(math_dir_stack));
- end
-else begin width(b):=w; rebox:=b;
- end;
-end;
-@z
-%-------------------------
-@x [36] m.720
-function clean_box(@!p:pointer;@!s:integer):pointer;
-label found;
-var q:pointer; {beginning of a list to be boxed}
-@!save_style:integer; {|cur_style| to be restored}
-@!x:pointer; {box to be returned}
-@!r:pointer; {temporary pointer}
-begin case math_type(p) of
-math_char: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p];
- end;
-sub_box: begin q:=info(p); goto found;
- end;
-sub_mlist: cur_mlist:=info(p);
-othercases begin q:=new_null_box; goto found;
- end
-endcases;@/
-save_style:=cur_style; cur_style:=s; mlist_penalties:=false;@/
-mlist_to_hlist; q:=link(temp_head); {recursive call}
-cur_style:=save_style; {restore the style}
-@<Set up the values of |cur_size| and |cur_mu|, based on |cur_style|@>;
-found: if is_char_node(q)or(q=null) then x:=hpack(q,natural)
- else if (link(q)=null)and(type(q)<=vlist_node)and(shift_amount(q)=0) then
- x:=q {it's already clean}
- else x:=hpack(q,natural);
-@<Simplify a trivial box@>;
-clean_box:=x;
-end;
-@y
-function clean_box(@!p:pointer;@!s:integer):pointer;
-label found;
-var q:pointer; {beginning of a list to be boxed}
-@!save_style:integer; {|cur_style| to be restored}
-@!x:pointer; {box to be returned}
-@!r:pointer; {temporary pointer}
-begin case math_type(p) of
-math_char: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p];
- end;
-sub_box: begin q:=info(p); goto found;
- end;
-sub_mlist: cur_mlist:=info(p);
-othercases begin q:=new_null_box; box_dir(q):=info(math_dir_stack); goto found;
- end
-endcases;@/
-save_style:=cur_style; cur_style:=s; mlist_penalties:=false;@/
-mlist_to_hlist; q:=link(temp_head); {recursive call}
-cur_style:=save_style; {restore the style}
-@<Set up the values of |cur_size| and |cur_mu|, based on |cur_style|@>;
-found: if is_char_node(q)or(q=null) then
- x:=hpack(q,natural,info(math_dir_stack))
- else if (link(q)=null)and(type(q)<=vlist_node)and(shift_amount(q)=0) then
- x:=q {it's already clean}
- else x:=hpack(q,natural,info(math_dir_stack));
-@<Simplify a trivial box@>;
-clean_box:=x;
-end;
-@z
-%-------------------------
-@x [36] m.727
-@<Process node-or-noad...@>=
-begin @<Do first-pass processing based on |type(q)|; |goto done_with_noad|
- if a noad has been fully processed, |goto check_dimensions| if it
- has been translated into |new_hlist(q)|, or |goto done_with_node|
- if a node has been fully processed@>;
-check_dimensions: z:=hpack(new_hlist(q),natural);
-if height(z)>max_h then max_h:=height(z);
-if depth(z)>max_d then max_d:=depth(z);
-free_node(z,box_node_size);
-done_with_noad: r:=q; r_type:=type(r);
-done_with_node: q:=link(q);
-end
-@y
-@<Process node-or-noad...@>=
-begin @<Do first-pass processing based on |type(q)|; |goto done_with_noad|
- if a noad has been fully processed, |goto check_dimensions| if it
- has been translated into |new_hlist(q)|, or |goto done_with_node|
- if a node has been fully processed@>;
-check_dimensions: z:=hpack(new_hlist(q),natural,info(math_dir_stack));
-if height(z)>max_h then max_h:=height(z);
-if depth(z)>max_d then max_d:=depth(z);
-free_node(z,box_node_size);
-done_with_noad: r:=q; r_type:=type(r);
-done_with_node: q:=link(q);
-end
-@z
-%-------------------------
-@x [36] m.735
-procedure make_under(@!q:pointer);
-var p,@!x,@!y: pointer; {temporary registers for box construction}
-@!delta:scaled; {overall height plus depth}
-begin x:=clean_box(nucleus(q),cur_style);
-p:=new_kern(3*default_rule_thickness); link(x):=p;
-link(p):=fraction_rule(default_rule_thickness);
-y:=vpack(x,natural);
-delta:=height(y)+depth(y)+default_rule_thickness;
-height(y):=height(x); depth(y):=delta-height(y);
-info(nucleus(q)):=y; math_type(nucleus(q)):=sub_box;
-end;
-@y
-procedure make_under(@!q:pointer);
-var p,@!x,@!y: pointer; {temporary registers for box construction}
-@!delta:scaled; {overall height plus depth}
-begin x:=clean_box(nucleus(q),cur_style);
-p:=new_kern(3*default_rule_thickness); link(x):=p;
-link(p):=fraction_rule(default_rule_thickness);
-y:=vpackage(x,natural,max_dimen,info(math_dir_stack));
-delta:=height(y)+depth(y)+default_rule_thickness;
-height(y):=height(x); depth(y):=delta-height(y);
-info(nucleus(q)):=y; math_type(nucleus(q)):=sub_box;
-end;
-@z
-%-------------------------
-@x [36] m.737
-procedure make_radical(@!q:pointer);
-var x,@!y:pointer; {temporary registers for box construction}
-@!delta,@!clr:scaled; {dimensions involved in the calculation}
-begin x:=clean_box(nucleus(q),cramped_style(cur_style));
-if cur_style<text_style then {display style}
- clr:=default_rule_thickness+(abs(math_x_height(cur_size)) div 4)
-else begin clr:=default_rule_thickness; clr:=clr + (abs(clr) div 4);
- end;
-y:=var_delimiter(left_delimiter(q),cur_size,height(x)+depth(x)+clr+
- default_rule_thickness);
-delta:=depth(y)-(height(x)+depth(x)+clr);
-if delta>0 then clr:=clr+half(delta); {increase the actual clearance}
-shift_amount(y):=-(height(x)+clr);
-link(y):=overbar(x,clr,height(y));
-info(nucleus(q)):=hpack(y,natural); math_type(nucleus(q)):=sub_box;
-end;
-@y
-procedure make_radical(@!q:pointer);
-var x,@!y:pointer; {temporary registers for box construction}
-@!delta,@!clr:scaled; {dimensions involved in the calculation}
-begin x:=clean_box(nucleus(q),cramped_style(cur_style));
-if cur_style<text_style then {display style}
- clr:=default_rule_thickness+(abs(math_x_height(cur_size)) div 4)
-else begin clr:=default_rule_thickness; clr:=clr + (abs(clr) div 4);
- end;
-y:=var_delimiter(left_delimiter(q),cur_size,height(x)+depth(x)+clr+
- default_rule_thickness);
-delta:=depth(y)-(height(x)+depth(x)+clr);
-if delta>0 then clr:=clr+half(delta); {increase the actual clearance}
-shift_amount(y):=-(height(x)+clr);
-link(y):=overbar(x,clr,height(y));
-info(nucleus(q)):=hpack(y,natural,info(math_dir_stack));
-math_type(nucleus(q)):=sub_box;
-end;
-@z
-%-------------------------
-@x [36] m.738
- y:=vpack(y,natural); width(y):=width(x);
-@y
- y:=vpackage(y,natural,max_dimen,info(math_dir_stack)); width(y):=width(x);
-@z
-%-------------------------
-@x [36] m.747
-@ @<Construct a vlist box for the fraction...@>=
-v:=new_null_box; type(v):=vlist_node;
-@y
-@ @<Construct a vlist box for the fraction...@>=
-v:=new_null_box; box_dir(v):=info(math_dir_stack); type(v):=vlist_node;
-@z
-%-------------------------
-@x [36] m.748
-@ @<Put the \(f)fraction into a box with its delimiters...@>=
-if cur_style<text_style then delta:=delim1(cur_size)
-else delta:=delim2(cur_size);
-x:=var_delimiter(left_delimiter(q), cur_size, delta); link(x):=v;@/
-z:=var_delimiter(right_delimiter(q), cur_size, delta); link(v):=z;@/
-new_hlist(q):=hpack(x,natural)
-@y
-@ @<Put the \(f)fraction into a box with its delimiters...@>=
-if cur_style<text_style then delta:=delim1(cur_size)
-else delta:=delim2(cur_size);
-x:=var_delimiter(left_delimiter(q), cur_size, delta); link(x):=v;@/
-z:=var_delimiter(right_delimiter(q), cur_size, delta); link(v):=z;@/
-new_hlist(q):=hpack(x,natural,info(math_dir_stack))
-@z
-%-------------------------
-@x [36] m.750
-@<Construct a box with limits above and below it...@>=
-begin x:=clean_box(supscr(q),sup_style(cur_style));
-y:=clean_box(nucleus(q),cur_style);
-z:=clean_box(subscr(q),sub_style(cur_style));
-v:=new_null_box; type(v):=vlist_node; width(v):=width(y);
-@y
-@<Construct a box with limits above and below it...@>=
-begin x:=clean_box(supscr(q),sup_style(cur_style));
-y:=clean_box(nucleus(q),cur_style);
-z:=clean_box(subscr(q),sub_style(cur_style));
-v:=new_null_box; box_dir(v):=info(math_dir_stack);
-type(v):=vlist_node; width(v):=width(y);
-@z
-%-------------------------
-@x [36] m.754
-@<Convert \(n)|nucleus(q)| to an hlist and attach the sub/superscripts@>=
-case math_type(nucleus(q)) of
-math_char, math_text_char:
- @<Create a character node |p| for |nucleus(q)|, possibly followed
- by a kern node for the italic correction, and set |delta| to the
- italic correction if a subscript is present@>;
-empty: p:=null;
-sub_box: p:=info(nucleus(q));
-sub_mlist: begin cur_mlist:=info(nucleus(q)); save_style:=cur_style;
- mlist_penalties:=false; mlist_to_hlist; {recursive call}
-@^recursion@>
- cur_style:=save_style; @<Set up the values...@>;
- p:=hpack(link(temp_head),natural);
- end;
-@y
-@<Convert \(n)|nucleus(q)| to an hlist and attach the sub/superscripts@>=
-case math_type(nucleus(q)) of
-math_char, math_text_char:
- @<Create a character node |p| for |nucleus(q)|, possibly followed
- by a kern node for the italic correction, and set |delta| to the
- italic correction if a subscript is present@>;
-empty: p:=null;
-sub_box: p:=info(nucleus(q));
-sub_mlist: begin cur_mlist:=info(nucleus(q)); save_style:=cur_style;
- mlist_penalties:=false; mlist_to_hlist; {recursive call}
-@^recursion@>
- cur_style:=save_style; @<Set up the values...@>;
- p:=hpack(link(temp_head),natural,info(math_dir_stack));
- end;
-@z
-%-------------------------
-@x [36] m.756
-procedure make_scripts(@!q:pointer;@!delta:scaled);
-var p,@!x,@!y,@!z:pointer; {temporary registers for box construction}
-@!shift_up,@!shift_down,@!clr:scaled; {dimensions in the calculation}
-@!t:integer; {subsidiary size code}
-begin p:=new_hlist(q);
-if is_char_node(p) then
- begin shift_up:=0; shift_down:=0;
- end
-else begin z:=hpack(p,natural);
-@y
-procedure make_scripts(@!q:pointer;@!delta:scaled);
-var p,@!x,@!y,@!z:pointer; {temporary registers for box construction}
-@!shift_up,@!shift_down,@!clr:scaled; {dimensions in the calculation}
-@!t:integer; {subsidiary size code}
-begin p:=new_hlist(q);
-if is_char_node(p) then
- begin shift_up:=0; shift_down:=0;
- end
-else begin z:=hpack(p,natural,info(math_dir_stack));
-@z
-%-------------------------
-@x [36] m.759
-x:=vpack(x,natural); shift_amount(x):=shift_down;
-@y
-x:=vpackage(x,natural,max_dimen,info(math_dir_stack));
-shift_amount(x):=shift_down;
-@z
-%-------------------------
-@x [37] m.774
-procedure init_align;
-label done, done1, done2, continue;
-var save_cs_ptr:pointer; {|warning_index| value for error messages}
-@!p:pointer; {for short-term temporary use}
-begin save_cs_ptr:=cur_cs; {\.{\\halign} or \.{\\valign}, usually}
-push_alignment; align_state:=-1000000; {enter a new alignment level}
-@<Check for improper alignment in displayed math@>;
-push_nest; {enter a new semantic level}
-@<Change current mode to |-vmode| for \.{\\halign}, |-hmode| for \.{\\valign}@>;
-scan_spec(align_group,false);@/
-@<Scan the preamble and record it in the |preamble| list@>;
-new_save_level(align_group);
-@y
-procedure init_align;
-label done, done1, done2, continue;
-var save_cs_ptr:pointer; {|warning_index| value for error messages}
-@!p:pointer; {for short-term temporary use}
-begin save_cs_ptr:=cur_cs; {\.{\\halign} or \.{\\valign}, usually}
-push_alignment; align_state:=-1000000; {enter a new alignment level}
-@<Check for improper alignment in displayed math@>;
-push_nest; {enter a new semantic level}
-@<Change current mode to |-vmode| for \.{\\halign}, |-hmode| for \.{\\valign}@>;
-scan_spec(align_group,false);@/
-@<Scan the preamble and record it in the |preamble| list@>;
-new_save_level(align_group);
-tmp_dir_stack:=get_avail; info(tmp_dir_stack):=spec_direction;
-link(tmp_dir_stack):=align_dir_stack;
-align_dir_stack:=tmp_dir_stack;
-@z
-%-------------------------
-@x [37] m.779
-@ @<Scan preamble text until |cur_cmd| is |tab_mark| or |car_ret|...@>=
-@<Scan the template \<u_j>, putting the resulting token list in |hold_head|@>;
-link(cur_align):=new_null_box; cur_align:=link(cur_align); {a new alignrecord}
-info(cur_align):=end_span; width(cur_align):=null_flag;
-u_part(cur_align):=link(hold_head);
-@<Scan the template \<v_j>, putting the resulting token list in |hold_head|@>;
-v_part(cur_align):=link(hold_head)
-@y
-@ @<Scan preamble text until |cur_cmd| is |tab_mark| or |car_ret|...@>=
-@<Scan the template \<u_j>, putting the resulting token list in |hold_head|@>;
-link(cur_align):=new_null_box; cur_align:=link(cur_align); {a new alignrecord}
-box_dir(cur_align):=info(align_dir_stack);
-info(cur_align):=end_span; width(cur_align):=null_flag;
-u_part(cur_align):=link(hold_head);
-@<Scan the template \<v_j>, putting the resulting token list in |hold_head|@>;
-v_part(cur_align):=link(hold_head)
-@z
-%-------------------------
-@x [37] m.793
-@ @<Lengthen the preamble...@>=
-begin link(q):=new_null_box; p:=link(q); {a new alignrecord}
-info(p):=end_span; width(p):=null_flag; cur_loop:=link(cur_loop);
-@<Copy the templates from node |cur_loop| into node |p|@>;
-cur_loop:=link(cur_loop);
-link(p):=new_glue(glue_ptr(cur_loop));
-end
-@y
-@ @<Lengthen the preamble...@>=
-begin link(q):=new_null_box; p:=link(q); {a new alignrecord}
-box_dir(p):=info(align_dir_stack);
-info(p):=end_span; width(p):=null_flag; cur_loop:=link(cur_loop);
-@<Copy the templates from node |cur_loop| into node |p|@>;
-cur_loop:=link(cur_loop);
-link(p):=new_glue(glue_ptr(cur_loop));
-end
-@z
-%-------------------------
-@x [37] m.796
-@ @<Package an unset...@>=
-begin if mode=-hmode then
- begin adjust_tail:=cur_tail; u:=hpack(link(head),natural); w:=width(u);
- cur_tail:=adjust_tail; adjust_tail:=null;
- end
-else begin u:=vpackage(link(head),natural,0); w:=height(u);
- end;
-@y
-@ @<Package an unset...@>=
-begin if mode=-hmode then
- begin adjust_tail:=cur_tail;
- u:=hpack(link(head),natural,info(align_dir_stack));
- w:=width(u);
- cur_tail:=adjust_tail; adjust_tail:=null;
- end
-else begin u:=vpackage(link(head),natural,0,info(align_dir_stack));
- w:=height(u);
- end;
-@z
-%-------------------------
-@x [37] m.799
-@p procedure fin_row;
-var p:pointer; {the new unset box}
-begin if mode=-hmode then
- begin p:=hpack(link(head),natural);
- pop_nest; append_to_vlist(p);
- if cur_head<>cur_tail then
- begin link(tail):=link(cur_head); tail:=cur_tail;
- end;
- end
-else begin p:=vpack(link(head),natural); pop_nest;
- link(tail):=p; tail:=p; space_factor:=1000;
- end;
-@y
-@p procedure fin_row;
-var p:pointer; {the new unset box}
-begin if mode=-hmode then
- begin p:=hpack(link(head),natural,info(align_dir_stack));
- pop_nest; append_to_vlist(p);
- if cur_head<>cur_tail then
- begin link(tail):=link(cur_head); tail:=cur_tail;
- end;
- end
-else begin p:=vpackage(link(head),natural,max_dimen,info(align_dir_stack));
- pop_nest; link(tail):=p; tail:=p; space_factor:=1000;
- end;
-@z
-%-------------------------
-@x [37] m.800
-flush_node_list(p); pop_alignment;
-@<Insert the \(c)current list into its environment@>;
-@y
-flush_node_list(p); pop_alignment;
-tmp_dir_stack:=align_dir_stack;
-align_dir_stack:=link(align_dir_stack);
-free_avail(tmp_dir_stack);
-@<Insert the \(c)current list into its environment@>;
-@z
-%-------------------------
-@x [37] m.804
-@<Package the preamble list...@>=
-save_ptr:=save_ptr-2; pack_begin_line:=-mode_line;
-if mode=-vmode then
- begin rule_save:=overfull_rule;
- set_new_eqtb_sc(dimen_base+overfull_rule_code,0);
- {prevent rule from being packaged}
- p:=hpack(preamble,saved(1),saved(0));
- set_new_eqtb_sc(dimen_base+overfull_rule_code,rule_save);
- end
-else begin q:=link(preamble);
- repeat height(q):=width(q); width(q):=0; q:=link(link(q));
- until q=null;
- p:=vpack(preamble,saved(1),saved(0));
- q:=link(preamble);
- repeat width(q):=height(q); height(q):=0; q:=link(link(q));
- until q=null;
- end;
-@y
-@<Package the preamble list...@>=
-save_ptr:=save_ptr-3; pack_begin_line:=-mode_line;
-if mode=-vmode then
- begin rule_save:=overfull_rule;
- set_new_eqtb_sc(dimen_base+overfull_rule_code,0);
- {prevent rule from being packaged}
- p:=hpack(preamble,saved(1),saved(0),saved(2));
- set_new_eqtb_sc(dimen_base+overfull_rule_code,rule_save);
- end
-else begin q:=link(preamble);
- repeat height(q):=width(q); width(q):=0; q:=link(link(q));
- until q=null;
- p:=vpackage(preamble,saved(1),saved(0),max_dimen,saved(2));
- q:=link(preamble);
- repeat width(q):=height(q); height(q):=0; q:=link(link(q));
- until q=null;
- end;
-@z
-%-------------------------
-@x [37] m.806
-@ @<Make the running dimensions in rule |q| extend...@>=
-begin if is_running(width(q)) then width(q):=width(p);
-if is_running(height(q)) then height(q):=height(p);
-if is_running(depth(q)) then depth(q):=depth(p);
-if o<>0 then
- begin r:=link(q); link(q):=null; q:=hpack(q,natural);
- shift_amount(q):=o; link(q):=r; link(s):=q;
- end;
-end
-@y
-@ @<Make the running dimensions in rule |q| extend...@>=
-begin if is_running(width(q)) then width(q):=width(p);
-if is_running(height(q)) then height(q):=height(p);
-if is_running(depth(q)) then depth(q):=depth(p);
-if o<>0 then
- begin r:=link(q); link(q):=null; q:=hpack(q,natural,info(align_dir_stack));
- shift_amount(q):=o; link(q):=r; link(s):=q;
- end;
-end
-@z
-%-------------------------
-@x [37] m.809
-@ @<Append tabskip glue and an empty box to list |u|...@>=
-s:=link(s); v:=glue_ptr(s); link(u):=new_glue(v); u:=link(u);
-subtype(u):=tab_skip_code+1; t:=t+width(v);
-if glue_sign(p)=stretching then
- begin if stretch_order(v)=glue_order(p) then
- t:=t+round(float(glue_set(p))*stretch(v));
-@^real multiplication@>
- end
-else if glue_sign(p)=shrinking then
- begin if shrink_order(v)=glue_order(p) then
- t:=t-round(float(glue_set(p))*shrink(v));
- end;
-s:=link(s); link(u):=new_null_box; u:=link(u); t:=t+width(s);
-if mode=-vmode then width(u):=width(s)@+else
- begin type(u):=vlist_node; height(u):=width(s);
- end
-@y
-@ @<Append tabskip glue and an empty box to list |u|...@>=
-s:=link(s); v:=glue_ptr(s); link(u):=new_glue(v); u:=link(u);
-subtype(u):=tab_skip_code+1; t:=t+width(v);
-if glue_sign(p)=stretching then
- begin if stretch_order(v)=glue_order(p) then
- t:=t+round(float(glue_set(p))*stretch(v));
-@^real multiplication@>
- end
-else if glue_sign(p)=shrinking then
- begin if shrink_order(v)=glue_order(p) then
- t:=t-round(float(glue_set(p))*shrink(v));
- end;
-s:=link(s); link(u):=new_null_box; u:=link(u);
-box_dir(u):=info(align_dir_stack);
-t:=t+width(s);
-if mode=-vmode then width(u):=width(s)@+else
- begin type(u):=vlist_node; height(u):=width(s);
- end
-@z
-%-------------------------
-@x [38] m.814
-@!init_local_par_info:pointer;
-@!last_local_par_info:pointer;
-@!current_file_node:pointer;
-
-@ @<Set initial...@>=
-@y
-@!init_local_par_info:pointer;
-@!last_local_par_info:pointer;
-@!current_file_node:pointer;
-@!break_c_htdp:quarterword; {height-depth entry in |char_info|}
-@!next_fake_math_flag:integer;
-@!line_break_dir:pointer;
-
-@ @<Set initial...@>=
-next_fake_math_flag:=0;
-@z
-%-------------------------
-@x [38] m.815
-@p@t\4@>@<Declare subprocedures for |line_break|@>
-procedure line_break(@!final_widow_penalty:integer);
-@y
-@p@t\4@>@<Declare subprocedures for |line_break|@>
-procedure line_break(@!final_widow_penalty:integer;@!break_dir:integer);
-@z
-%-------------------------
-@x [38] m.816
-link(tail):=new_param_glue(par_fill_skip_code);
-@y
-final_par_glue:=new_param_glue(par_fill_skip_code);
-link(tail):=final_par_glue;
-change_dir(final_par_glue,break_dir);
-line_break_dir:=break_dir;
-@z
-%-------------------------
-@x [38] m.816
-init_cur_lang:=prev_graf mod @'200000;
-init_l_hyf:=prev_graf div @'20000000;
-init_r_hyf:=(prev_graf div @'200000) mod @'100;
-@y
-init_cur_lang:=prev_graf mod @'200000;
-init_l_hyf:=prev_graf div @'20000000;
-init_r_hyf:=(prev_graf div @'200000) mod @'100;
-@z
-%-------------------------
-@x [39] m.821
-@!pass_number:halfword; {the number of passive nodes allocated on this pass}
-@y
-@!pass_number:halfword; {the number of passive nodes allocated on this pass}
-@!final_par_glue:pointer;
-@z
-%-------------------------
-@x [38] m.841
-@<Subtract the width of node |v|...@>=
-if is_char_node(v) then
- begin f:=font(v);
- break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v)));
- end
-else case type(v) of
- ligature_node: begin f:=font(lig_char(v));@/
- break_width[1]:=@|break_width[1]-
- char_width(f)(char_info(f)(character(lig_char(v))));
- end;
- hlist_node,vlist_node,rule_node,kern_node:
- break_width[1]:=break_width[1]-width(v);
-@y
-@<Subtract the width of node |v|...@>=
-if is_char_node(v) then
- begin f:=font(v);
- if is_rotated(get_dir(v)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(v)));
- break_width[1]:=break_width[1]-char_height(f)(break_c_htdp)
- -char_depth(f)(break_c_htdp);
- end
- else
- break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v)));
- end
-else case type(v) of
- ligature_node: begin f:=font(lig_char(v));@/
- if is_rotated(get_dir(v)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(lig_char(v))));
- break_width[1]:=break_width[1]-char_height(f)(break_c_htdp)
- -char_depth(f)(break_c_htdp);
- end
- else
- break_width[1]:=@|break_width[1]-
- char_width(f)(char_info(f)(character(lig_char(v))));
- end;
- hlist_node,vlist_node:
- if not (dir_orthogonal(dir_primary[box_dir(v)])
- (dir_primary[line_break_dir])) then
- break_width[1]:=break_width[1]-width(v)
- else
- break_width[1]:=break_width[1]-(depth(v)+height(v));
- rule_node,kern_node:
- break_width[1]:=break_width[1]-width(v);
-@z
-%-------------------------
-@x [38] m.842
-@ @<Add the width of node |s| to |b...@>=
-if is_char_node(s) then
- begin f:=font(s);
- break_width[1]:=@|break_width[1]+char_width(f)(char_info(f)(character(s)));
- end
-else case type(s) of
- ligature_node: begin f:=font(lig_char(s));
- break_width[1]:=break_width[1]+
- char_width(f)(char_info(f)(character(lig_char(s))));
- end;
- hlist_node,vlist_node,rule_node,kern_node:
- break_width[1]:=break_width[1]+width(s);
-@y
-@ @<Add the width of node |s| to |b...@>=
-if is_char_node(s) then
- begin f:=font(s);
- if is_rotated(get_dir(s)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(s)));
- break_width[1]:=break_width[1]+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- break_width[1]:=@|break_width[1]+char_width(f)(char_info(f)(character(s)));
- end
-else case type(s) of
- ligature_node: begin f:=font(lig_char(s));
- if is_rotated(get_dir(s)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(lig_char(s))));
- break_width[1]:=break_width[1]+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- break_width[1]:=break_width[1]+
- char_width(f)(char_info(f)(character(lig_char(s))));
- end;
- hlist_node,vlist_node:
- if not (dir_orthogonal(dir_primary[box_dir(s)])
- (dir_primary[line_break_dir])) then
- break_width[1]:=break_width[1]+width(s)
- else
- break_width[1]:=break_width[1]+(depth(s)+height(s));
- rule_node,kern_node:
- break_width[1]:=break_width[1]+width(s);
-@z
-%-------------------------
-@x [38] m.866
-hlist_node,vlist_node,rule_node: act_width:=act_width+width(cur_p);
-@y
-hlist_node,vlist_node:
-if not (dir_orthogonal(dir_primary[box_dir(cur_p)])
- (dir_primary[line_break_dir]))
-then act_width:=act_width+width(cur_p)
-else act_width:=act_width+(depth(cur_p)+height(cur_p));
-rule_node: act_width:=act_width+width(cur_p);
-@z
-%-------------------------
-@x [38] m.866
- act_width:=act_width+char_width(f)(char_info(f)(character(lig_char(cur_p))));
-@y
- if is_rotated(get_dir(cur_p)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(lig_char(cur_p))));
- act_width:=act_width+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- act_width:=act_width+
- char_width(f)(char_info(f)(character(lig_char(cur_p))));
-@z
-%-------------------------
-@x [38] m.867
-act_width:=act_width+char_width(f)(char_info(f)(character(cur_p)));
-@y
-if is_rotated(get_dir(cur_p)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(cur_p)));
- act_width:=act_width+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
-else
- act_width:=act_width+char_width(f)(char_info(f)(character(cur_p)));
-@z
-%-------------------------
-@x [38] m.870
-@ @<Add the width of node |s| to |disc_width|@>=
-if is_char_node(s) then
- begin f:=font(s);
- disc_width:=disc_width+char_width(f)(char_info(f)(character(s)));
- end
-else case type(s) of
- ligature_node: begin f:=font(lig_char(s));
- disc_width:=disc_width+
- char_width(f)(char_info(f)(character(lig_char(s))));
- end;
- hlist_node,vlist_node,rule_node,kern_node:
- disc_width:=disc_width+width(s);
-@y
-@ @<Add the width of node |s| to |disc_width|@>=
-if is_char_node(s) then
- begin f:=font(s);
- if is_rotated(get_dir(s)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(s)));
- disc_width:=disc_width+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- disc_width:=disc_width+char_width(f)(char_info(f)(character(s)));
- end
-else case type(s) of
- ligature_node: begin f:=font(lig_char(s));
- if is_rotated(get_dir(s)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(lig_char(s))));
- disc_width:=disc_width+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- disc_width:=disc_width+
- char_width(f)(char_info(f)(character(lig_char(s))));
- end;
- hlist_node,vlist_node:
- if not (dir_orthogonal(dir_primary[box_dir(s)])
- (dir_primary[line_break_dir]))
- then disc_width:=disc_width+width(s)
- else disc_width:=disc_width+(depth(s)+height(s));
- rule_node,kern_node:
- disc_width:=disc_width+width(s);
-@z
-%-------------------------
-@x [38] m.871
-@ @<Add the width of node |s| to |act_width|@>=
-if is_char_node(s) then
- begin f:=font(s);
- act_width:=act_width+char_width(f)(char_info(f)(character(s)));
- end
-else case type(s) of
- ligature_node: begin f:=font(lig_char(s));
- act_width:=act_width+
- char_width(f)(char_info(f)(character(lig_char(s))));
- end;
- hlist_node,vlist_node,rule_node,kern_node:
- act_width:=act_width+width(s);
-@y
-@ @<Add the width of node |s| to |act_width|@>=
-if is_char_node(s) then
- begin f:=font(s);
- if is_rotated(get_dir(s)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(s)));
- act_width:=act_width+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- act_width:=act_width+char_width(f)(char_info(f)(character(s)));
- end
-else case type(s) of
- ligature_node: begin f:=font(lig_char(s));
- if is_rotated(get_dir(s)) then begin
- break_c_htdp:=height_depth(char_info(f)(character(lig_char(s))));
- act_width:=act_width+char_height(f)(break_c_htdp)
- +char_depth(f)(break_c_htdp);
- end
- else
- act_width:=act_width+
- char_width(f)(char_info(f)(character(lig_char(s))));
- end;
- hlist_node,vlist_node:
- if not (dir_orthogonal(dir_primary[box_dir(s)])
- (dir_primary[line_break_dir]))
- then act_width:=act_width+width(s)
- else act_width:=act_width+(depth(s)+height(s));
- rule_node,kern_node:
- act_width:=act_width+width(s);
-@z
-%-------------------------
-@x [39] m.877
-@ The total number of lines that will be set by |post_line_break|
-is |best_line-prev_graf-1|. The last breakpoint is specified by
-|break_node(best_bet)|, and this passive node points to the other breakpoints
-via the |prev_break| links. The finishing-up phase starts by linking the
-relevant passive nodes in forward order, changing |prev_break| to
-|next_break|. (The |next_break| fields actually reside in the same memory
-space as the |prev_break| fields did, but we give them a new name because
-of their new significance.) Then the lines are justified, one by one.
-
-@d next_break==prev_break {new name for |prev_break| after links are reversed}
-
-@<Declare subprocedures for |line_break|@>=
-procedure post_line_break(@!final_widow_penalty:integer);
-label done,done1;
-var q,@!r,@!s:pointer; {temporary registers for list manipulation}
-@!disc_break:boolean; {was the current break at a discretionary node?}
-@!post_disc_break:boolean; {and did it have a nonempty post-break part?}
-@!cur_width:scaled; {width of line number |cur_line|}
-@!cur_indent:scaled; {left margin of line number |cur_line|}
-@!t:quarterword; {used for replacement counts in discretionary nodes}
-@!pen:integer; {use when calculating penalties between lines}
-@!cur_line: halfword; {the current line number being justified}
-begin @<Reverse the links of the relevant passive nodes, setting |cur_p| to the
- first breakpoint@>;
-cur_line:=prev_graf+1;
-repeat @<Justify the line ending at breakpoint |cur_p|, and append it to the
- current vertical list, together with associated penalties and other
- insertions@>;
-incr(cur_line); cur_p:=next_break(cur_p);
-if cur_p<>null then if not post_disc_break then
- @<Prune unwanted nodes at the beginning of the next line@>;
-until cur_p=null;
-if (cur_line<>best_line)or(link(temp_head)<>null) then
- confusion("line breaking");
-@:this can't happen line breaking}{\quad line breaking@>
-prev_graf:=best_line-1;
-end;
-@y
-@ The total number of lines that will be set by |post_line_break|
-is |best_line-prev_graf-1|. The last breakpoint is specified by
-|break_node(best_bet)|, and this passive node points to the other breakpoints
-via the |prev_break| links. The finishing-up phase starts by linking the
-relevant passive nodes in forward order, changing |prev_break| to
-|next_break|. (The |next_break| fields actually reside in the same memory
-space as the |prev_break| fields did, but we give them a new name because
-of their new significance.) Then the lines are justified, one by one.
-
-The |post_line_break| must also keep an dir stack, so that it can
-output end direction instructions at the ends of lines
-and begin direction instructions at the beginnings of lines.
-
-@d next_break==prev_break {new name for |prev_break| after links are reversed}
-
-@<Declare subprocedures for |line_break|@>=
-procedure post_line_break(@!final_widow_penalty:integer);
-label done,done1;
-var q,@!r,@!s:pointer; {temporary registers for list manipulation}
-@!disc_break:boolean; {was the current break at a discretionary node?}
-@!post_disc_break:boolean; {and did it have a nonempty post-break part?}
-@!cur_width:scaled; {width of line number |cur_line|}
-@!cur_indent:scaled; {left margin of line number |cur_line|}
-@!t:quarterword; {used for replacement counts in discretionary nodes}
-@!pen:integer; {use when calculating penalties between lines}
-@!cur_line: halfword; {the current line number being justified}
-begin @<Reverse the links of the relevant passive nodes, setting |cur_p| to the
- first breakpoint@>;
-cur_line:=prev_graf+1;
-repeat @<Justify the line ending at breakpoint |cur_p|, and append it to the
- current vertical list, together with associated penalties and other
- insertions@>;
-incr(cur_line); cur_p:=next_break(cur_p);
-if cur_p<>null then if not post_disc_break then
- @<Prune unwanted nodes at the beginning of the next line@>;
-until cur_p=null;
-if (cur_line<>best_line)or(link(temp_head)<>null) then
- confusion("line breaking");
-@:this can't happen line breaking}{\quad line breaking@>
-prev_graf:=best_line-1;
-end;
-@z
-%-------------------------
-@x [39] m.889
-adjust_tail:=adjust_head; just_box:=hpack(q,cur_width,exactly);
-@y
-adjust_tail:=adjust_head;
-just_box:=hpack(q,cur_width,exactly,line_break_dir);
-@z
-%-------------------------
-@x [40] m.892
-@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
-@y
-@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
-@!ha_local:pointer; {points to the local information for the first char node}
-@z
-%-------------------------
-@x [40] m.896
-@<Skip to node |ha|, or |goto done1|...@>=
-loop@+ begin if is_char_node(s) then
- begin c:=qo(character(s)); hf:=font(s);
- end
- else if type(s)=ligature_node then
- if lig_ptr(s)=null then goto continue
- else begin q:=lig_ptr(s); c:=qo(character(q)); hf:=font(q);
- end
- else if (type(s)=kern_node)and(subtype(s)=normal) then goto continue
- else if type(s)=whatsit_node then
- begin @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>;
- goto continue;
- end
- else goto done1;
- if lc_code(c)<>0 then
- if (lc_code(c)=c)or(uc_hyph>0) then goto done2
- else goto done1;
-continue: prev_s:=s; s:=link(prev_s);
- end;
-done2: hyf_char:=hyphen_char(hf);
-if hyf_char<0 then goto done1;
-if hyf_char>biggest_char then goto done1;
-ha:=prev_s
-@y
-@<Skip to node |ha|, or |goto done1|...@>=
-loop@+ begin if is_char_node(s) then
- begin c:=qo(character(s)); hf:=font(s);
- end
- else if type(s)=ligature_node then
- if lig_ptr(s)=null then goto continue
- else begin q:=lig_ptr(s); c:=qo(character(q)); hf:=font(q);
- end
- else if (type(s)=kern_node)and(subtype(s)=normal) then goto continue
- else if type(s)=whatsit_node then
- begin @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>;
- goto continue;
- end
- else goto done1;
- if lc_code(c)<>0 then
- if (lc_code(c)=c)or(uc_hyph>0) then goto done2
- else goto done1;
-continue: prev_s:=s; s:=link(prev_s);
- end;
-done2: hyf_char:=hyphen_char(hf);
-if hyf_char<0 then goto done1;
-if hyf_char>biggest_char then goto done1;
-ha:=prev_s;
-ha_local:=ptr_info(s)
-@z
-%-------------------------
-@x [40] m.908
-@ @d append_charnode_to_t(#)== begin link(t):=get_avail; t:=link(t);
- font(t):=hf; character(t):=#;
- end
-@y
-@ @d append_charnode_to_t(#)== begin link(t):=get_avail; t:=link(t);
- ptr_info(t):=ha_local; info_incr_ref_count(ha_local);
- font(t):=hf; character(t):=#;
- end
-@z
-%-------------------------
-@x [40] m.910
-@ @d wrap_lig(#)==if ligature_present then
- begin p:=new_ligature(hf,cur_l,link(cur_q));
- if lft_hit then
- begin subtype(p):=2; lft_hit:=false;
- end;
- if # then if lig_stack=null then
- begin incr(subtype(p)); rt_hit:=false;
- end;
- link(cur_q):=p; t:=p; ligature_present:=false;
- end
-@y
-@ @d wrap_lig(#)==if ligature_present then
- begin p:=new_ligature(hf,cur_l,link(cur_q));
- info_decr_ref_count(ptr_info(p));
- ptr_info(p):=ha_local; info_incr_ref_count(ha_local);
- if lft_hit then
- begin subtype(p):=2; lft_hit:=false;
- end;
- if # then if lig_stack=null then
- begin incr(subtype(p)); rt_hit:=false;
- end;
- link(cur_q):=p; t:=p; ligature_present:=false;
- end
-@z
-%-------------------------
-@x [40] m.910
-wrap_lig(rt_hit);
-if w<>0 then
- begin link(t):=new_kern(w); t:=link(t); w:=0;
- end;
-@y
-wrap_lig(rt_hit);
-if w<>0 then
- begin link(t):=new_kern(w); t:=link(t); w:=0;
- info_decr_ref_count(ptr_info(t));
- ptr_info(t):=ha_local; info_incr_ref_count(ha_local);
- end;
-@z
-%-------------------------
-@x [40] m.911
-qi(2),qi(6):begin cur_r:=rem_byte(q); {\.{\?=:}, \.{\?=:>}}
- if lig_stack>null then character(lig_stack):=cur_r
- else begin lig_stack:=new_lig_item(cur_r);
- if j=n then bchar:=non_char
- else begin p:=get_avail; lig_ptr(lig_stack):=p;
- character(p):=qi(hu[j+1]); font(p):=hf;
- end;
- end;
- end;
-qi(3):begin cur_r:=rem_byte(q); {\.{\?=:\?}}
- p:=lig_stack; lig_stack:=new_lig_item(cur_r); link(lig_stack):=p;
- end;
-@y
-qi(2),qi(6):begin cur_r:=rem_byte(q); {\.{\?=:}, \.{\?=:>}}
- if lig_stack>null then character(lig_stack):=cur_r
- else begin lig_stack:=new_lig_item(cur_r);
- info_decr_ref_count(ptr_info(lig_stack));
- ptr_info(lig_stack):=ha_local; info_incr_ref_count(ha_local);
- if j=n then bchar:=non_char
- else begin p:=get_avail; lig_ptr(lig_stack):=p;
- character(p):=qi(hu[j+1]); font(p):=hf;
- ptr_info(p):=ha_local; info_incr_ref_count(ha_local);
- end;
- end;
- end;
-qi(3):begin cur_r:=rem_byte(q); {\.{\?=:\?}}
- p:=lig_stack; lig_stack:=new_lig_item(cur_r); link(lig_stack):=p;
- info_decr_ref_count(ptr_info(lig_stack));
- ptr_info(lig_stack):=ha_local; info_incr_ref_count(ha_local);
- end;
-@z
-%-------------------------
-@x [40] m.914
-@<Create and append a discretionary node as an alternative...@>=
-repeat r:=get_node(small_node_size);
-link(r):=link(hold_head); type(r):=disc_node;
-@y
-@<Create and append a discretionary node as an alternative...@>=
-repeat r:=get_node(small_node_size);
-link(r):=link(hold_head); type(r):=disc_node;
-ptr_info(r):=ha_local; info_incr_ref_count(ha_local);
-@z
-%-------------------------
-@x [44] m.977
-@p function vsplit(@!n:eight_bits; @!h:scaled):pointer;
- {extracts a page of height |h| from box |n|}
-label exit,done;
-var v:pointer; {the box to be split}
-p:pointer; {runs through the vlist}
-q:pointer; {points to where the break occurs}
-begin v:=box(n);
-if split_first_mark<>null then
- begin delete_token_ref(split_first_mark); split_first_mark:=null;
- delete_token_ref(split_bot_mark); split_bot_mark:=null;
- end;
-@<Dispense with trivial cases of void or bad boxes@>;
-q:=vert_break(list_ptr(v),h,split_max_depth);
-@<Look at all the marks in nodes before the break, and set the final
- link to |null| at the break@>;
-q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size);
-if q=null then set_equiv(box_base+n,null)
- {the |eq_level| of the box stays the same}
-else set_equiv(box_base+n,vpack(q,natural));
-vsplit:=vpackage(p,h,exactly,split_max_depth);
-exit: end;
-@y
-@p function vsplit(@!n:eight_bits; @!h:scaled):pointer;
- {extracts a page of height |h| from box |n|}
-label exit,done;
-var v:pointer; {the box to be split}
-vdir:integer; {the direction of the box to be split}
-p:pointer; {runs through the vlist}
-q:pointer; {points to where the break occurs}
-begin v:=box(n); vdir:=box_dir(v);
-if split_first_mark<>null then
- begin delete_token_ref(split_first_mark); split_first_mark:=null;
- delete_token_ref(split_bot_mark); split_bot_mark:=null;
- end;
-@<Dispense with trivial cases of void or bad boxes@>;
-q:=vert_break(list_ptr(v),h,split_max_depth);
-@<Look at all the marks in nodes before the break, and set the final
- link to |null| at the break@>;
-q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size);
-if q=null then set_equiv(box_base+n,null)
- {the |eq_level| of the box stays the same}
-else set_equiv(box_base+n,vpackage(q,natural,max_dimen,vdir));
-vsplit:=vpackage(p,h,exactly,split_max_depth,vdir);
-exit: end;
-@z
-%-------------------------
-@x [45] m.1001
-if width(temp_ptr)>height(p) then width(temp_ptr):=width(temp_ptr)-height(p)
-else width(temp_ptr):=0;
-@y
-if (type(p)=hlist_node) and (is_mirrored(body_direction)) then begin
- if width(temp_ptr)>depth(p) then width(temp_ptr):=width(temp_ptr)-depth(p)
- else width(temp_ptr):=0;
- end
-else begin
- if width(temp_ptr)>height(p) then width(temp_ptr):=width(temp_ptr)-height(p)
- else width(temp_ptr):=0;
- end;
-@z
-%-------------------------
-@x [45] m.1002
-begin page_total:=page_total+page_depth+height(p);
-page_depth:=depth(p);
-@y
-begin
-if (type(p)=hlist_node) and (is_mirrored(body_direction)) then begin
- page_total:=page_total+page_depth+depth(p);
- page_depth:=height(p);
- end
-else begin
- page_total:=page_total+page_depth+height(p);
- page_depth:=depth(p);
- end;
-@z
-%-------------------------
-@x [45] m.1017
-set_equiv(box_base+255,
- vpackage(link(page_head),best_size,exactly,page_max_depth));
-@y
-set_equiv(box_base+255,
- vpackage(link(page_head),best_size,exactly,page_max_depth,body_direction));
-@z
-%-------------------------
-@x [45] m.1018
-@<Prepare all the boxes involved in insertions to act as queues@>=
-begin r:=link(page_ins_head);
-while r<>page_ins_head do
- begin if best_ins_ptr(r)<>null then
- begin n:=qo(subtype(r)); ensure_vbox(n);
- if box(n)=null then set_equiv(box_base+n,new_null_box);
-@y
-@<Prepare all the boxes involved in insertions to act as queues@>=
-begin r:=link(page_ins_head);
-while r<>page_ins_head do
- begin if best_ins_ptr(r)<>null then
- begin n:=qo(subtype(r)); ensure_vbox(n);
- if box(n)=null then set_equiv(box_base+n,new_null_box);
- box_dir(box(n)):=body_direction;
-@z
-%-------------------------
-@x [45] m.1021
-@ @<Wrap up the box specified by node |r|, splitting node |p| if...@>=
-begin if type(r)=split_up then
- if (broken_ins(r)=p)and(broken_ptr(r)<>null) then
- begin while link(s)<>broken_ptr(r) do s:=link(s);
- link(s):=null;
- set_equiv(glue_base+split_top_skip_code,split_top_ptr(p));
- ins_ptr(p):=prune_page_top(broken_ptr(r));
- if ins_ptr(p)<>null then
- begin temp_ptr:=vpack(ins_ptr(p),natural);
- height(p):=height(temp_ptr)+depth(temp_ptr);
- free_node(temp_ptr,box_node_size); wait:=true;
- end;
- end;
-best_ins_ptr(r):=null;
-n:=qo(subtype(r));
-temp_ptr:=list_ptr(box(n));
-free_node(box(n),box_node_size);
-set_equiv(box_base+n,vpack(temp_ptr,natural));
-@y
-@ @<Wrap up the box specified by node |r|, splitting node |p| if...@>=
-begin if type(r)=split_up then
- if (broken_ins(r)=p)and(broken_ptr(r)<>null) then
- begin while link(s)<>broken_ptr(r) do s:=link(s);
- link(s):=null;
- set_equiv(glue_base+split_top_skip_code,split_top_ptr(p));
- ins_ptr(p):=prune_page_top(broken_ptr(r));
- if ins_ptr(p)<>null then
- begin temp_ptr:=vpackage(ins_ptr(p),natural,max_dimen,body_direction);
- height(p):=height(temp_ptr)+depth(temp_ptr);
- free_node(temp_ptr,box_node_size); wait:=true;
- end;
- end;
-best_ins_ptr(r):=null;
-n:=qo(subtype(r));
-temp_ptr:=list_ptr(box(n));
-free_node(box(n),box_node_size);
-set_equiv(box_base+n,vpackage(temp_ptr,natural,max_dimen,body_direction));
-@z
-%-------------------------
-@x [45] m.1054
-function its_all_over:boolean; {do this when \.{\\end} or \.{\\dump} occurs}
-label exit;
-begin if privileged then
- begin if (page_head=page_tail)and(head=tail)and(dead_cycles=0) then
- begin its_all_over:=true; return;
- end;
- back_input; {we will try to end again after ejecting residual material}
- tail_append(new_null_box);
-@y
-function its_all_over:boolean; {do this when \.{\\end} or \.{\\dump} occurs}
-label exit;
-begin if privileged then
- begin if (page_head=page_tail)and(head=tail)and(dead_cycles=0) then
- begin its_all_over:=true; return;
- end;
- back_input; {we will try to end again after ejecting residual material}
- tail_append(new_null_box); box_dir(tail):=info(par_dir_stack);
-@z
-%-------------------------
-@x [47] m.1071
-primitive("xleaders",leader_ship,x_leaders);
-@!@:x_leaders_}{\.{\\xleaders} primitive@>
-@y
-primitive("xleaders",leader_ship,x_leaders);
-@!@:x_leaders_}{\.{\\xleaders} primitive@>
-primitive("boxdir",assign_box_dir,0);
-@!@:box_dir}{\.{\\boxdir} primitive@>
-@z
-%-------------------------
-@x [47] m.1073
-any_mode(make_box): begin_box(0);
-@y
-any_mode(make_box): begin_box(0);
-any_mode(assign_box_dir): begin scan_eight_bit_int;
- cur_box:=box(cur_val);
- scan_optional_equals; scan_dir;
- if cur_box<>null then box_dir(cur_box):=cur_val;
- end;
-@z
-%-------------------------
-@x [47] m.1076
-@<Append box |cur_box| to the current...@>=
-begin if cur_box<>null then
- begin shift_amount(cur_box):=box_context;
- if abs(mode)=vmode then
- begin append_to_vlist(cur_box);
- if adjust_tail<>null then
- begin if adjust_head<>adjust_tail then
- begin link(tail):=link(adjust_head); tail:=adjust_tail;
- end;
- adjust_tail:=null;
- end;
- if mode>0 then build_page;
- end
- else begin if abs(mode)=hmode then space_factor:=1000
- else begin p:=new_noad;
- math_type(nucleus(p)):=sub_box;
- info(nucleus(p)):=cur_box; cur_box:=p;
- end;
- link(tail):=cur_box; tail:=cur_box;
- end;
- end;
-end
-@y
-@<Append box |cur_box| to the current...@>=
-begin if cur_box<>null then
- begin shift_amount(cur_box):=box_context;
- ptr_info(cur_box):=local_par_info;
- info_incr_ref_count(local_par_info);
- if abs(mode)=vmode then
- begin append_to_vlist(cur_box);
- if adjust_tail<>null then
- begin if adjust_head<>adjust_tail then
- begin link(tail):=link(adjust_head); tail:=adjust_tail;
- end;
- adjust_tail:=null;
- end;
- if mode>0 then build_page;
- end
- else begin if abs(mode)=hmode then space_factor:=1000
- else begin p:=new_noad;
- math_type(nucleus(p)):=sub_box;
- info(nucleus(p)):=cur_box; cur_box:=p;
- end;
- link(tail):=cur_box; tail:=cur_box;
- end;
- end;
-end
-@z
-%-------------------------
-@x [47] m.1083
-begin k:=cur_chr-vtop_code; saved(0):=box_context;
-if k=hmode then
- if (box_context<box_flag)and(abs(mode)=vmode) then
- scan_spec(adjusted_hbox_group,true)
- else scan_spec(hbox_group,true)
-else begin if k=vmode then scan_spec(vbox_group,true)
- else begin scan_spec(vtop_group,true); k:=vmode;
- end;
- normal_paragraph;
- end;
-push_nest; mode:=-k;
-@y
-begin k:=cur_chr-vtop_code; saved(0):=box_context;
-case abs(mode) of
-vmode: spec_direction:=body_direction;
-hmode: spec_direction:=text_direction;
-mmode: spec_direction:=math_direction;
-end;
-if k=hmode then
- if (box_context<box_flag)and(abs(mode)=vmode) then
- scan_spec(adjusted_hbox_group,true)
- else scan_spec(hbox_group,true)
-else begin if k=vmode then scan_spec(vbox_group,true)
- else begin scan_spec(vtop_group,true); k:=vmode;
- end;
- normal_paragraph;
- end;
-push_nest; mode:=-k;
-@z
-%-------------------------
-@x [47] m.1086
-procedure package(@!c:small_number);
-var h:scaled; {height of box}
-@!p:pointer; {first node in a box}
-@!d:scaled; {max depth}
-begin d:=box_max_depth; unsave; save_ptr:=save_ptr-3;
-if mode=-hmode then cur_box:=hpack(link(head),saved(2),saved(1))
-else begin cur_box:=vpackage(link(head),saved(2),saved(1),d);
- if c=vtop_code then @<Readjust the height and depth of |cur_box|,
- for \.{\\vtop}@>;
- end;
-pop_nest; box_end(saved(0));
-end;
-@y
-procedure package(@!c:small_number);
-var h:scaled; {height of box}
-@!p:pointer; {first node in a box}
-@!d:scaled; {max depth}
-begin d:=box_max_depth; unsave; save_ptr:=save_ptr-4;
-if mode=-hmode then cur_box:=hpack(link(head),saved(2),saved(1),saved(3))
-else begin cur_box:=vpackage(link(head),saved(2),saved(1),d,saved(3));
- if c=vtop_code then @<Readjust the height and depth of |cur_box|,
- for \.{\\vtop}@>;
- end;
-pop_nest; box_end(saved(0));
-end;
-@z
-%-------------------------
-@x [47] m.1091
-procedure new_graf(@!indented:boolean);
-begin prev_graf:=0;
-if (mode=vmode)or(head<>tail) then
- tail_append(new_param_glue(par_skip_code));
-push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
-prev_graf:=(norm_min(left_hyphen_min)*@'100+norm_min(right_hyphen_min))
- *@'200000+cur_lang;
-if indented then
- begin tail:=new_null_box; link(head):=tail; width(tail):=par_indent;@+
- end;
-@y
-procedure new_graf(@!indented:boolean);
-begin prev_graf:=0;
-if (mode=vmode)or(head<>tail) then
- tail_append(new_param_glue(par_skip_code));
-push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
-prev_graf:=(norm_min(left_hyphen_min)*@'100+norm_min(right_hyphen_min))
- *@'200000+cur_lang;
-tmp_dir_stack:=get_avail; info(tmp_dir_stack):=par_direction;
-link(tmp_dir_stack):=par_dir_stack;
-par_dir_stack:=tmp_dir_stack;
-if indented then
- begin tail:=new_null_box; link(head):=tail; width(tail):=par_indent;@+
- box_dir(tail):=info(par_dir_stack);
- change_dir(tail,info(par_dir_stack));
- end;
-@z
-%-------------------------
-@x [47] m.1093
-procedure indent_in_hmode;
-var p,@!q:pointer;
-begin if cur_chr>0 then {\.{\\indent}}
- begin p:=new_null_box; width(p):=par_indent;
-@y
-procedure indent_in_hmode;
-var p,@!q:pointer;
-begin if cur_chr>0 then {\.{\\indent}}
- begin p:=new_null_box; width(p):=par_indent;
- box_dir(p):=info(par_dir_stack);
- change_dir(p,info(par_dir_stack));
-@z
-%-------------------------
-@x [47] m.1096
-procedure end_graf;
-begin if mode=hmode then
- begin if head=tail then pop_nest {null paragraphs are ignored}
- else line_break(widow_penalty);
- normal_paragraph;
- error_count:=0;
- end;
-end;
-@y
-procedure end_graf;
-begin if mode=hmode then
- begin if head=tail then pop_nest {null paragraphs are ignored}
- else line_break(widow_penalty,info(par_dir_stack));
- tmp_dir_stack:=par_dir_stack;
- par_dir_stack:=link(par_dir_stack);
- free_avail(tmp_dir_stack);
- normal_paragraph;
- error_count:=0;
- end;
-end;
-@z
-%-------------------------
-@x [48] m.1100
-insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q);
- d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr);
- {now |saved(0)| is the insertion number, or 255 for |vadjust|}
- p:=vpack(link(head),natural); pop_nest;
- if saved(0)<>255 then
- begin tail_append(get_node(ins_node_size));
- type(tail):=ins_node; subtype(tail):=qi(saved(0));
- height(tail):=height(p)+depth(p); ins_ptr(tail):=list_ptr(p);
- split_top_ptr(tail):=q; depth(tail):=d; float_cost(tail):=f;
- end
- else begin tail_append(get_node(small_node_size));
- type(tail):=adjust_node;@/
- subtype(tail):=0; {the |subtype| is not used}
- adjust_ptr(tail):=list_ptr(p); delete_glue_ref(q);
- end;
- free_node(p,box_node_size);
- if nest_ptr=0 then build_page;
- end;
-@y
-insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q);
- d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr);
- {now |saved(0)| is the insertion number, or 255 for |vadjust|}
- p:=vpackage(link(head),natural,max_dimen,body_direction); pop_nest;
- if saved(0)<>255 then
- begin tail_append(get_node(ins_node_size));
- type(tail):=ins_node; subtype(tail):=qi(saved(0));
- height(tail):=height(p)+depth(p); ins_ptr(tail):=list_ptr(p);
- split_top_ptr(tail):=q; depth(tail):=d; float_cost(tail):=f;
- end
- else begin tail_append(get_node(small_node_size));
- type(tail):=adjust_node;@/
- subtype(tail):=0; {the |subtype| is not used}
- adjust_ptr(tail):=list_ptr(p); delete_glue_ref(q);
- end;
- free_node(p,box_node_size);
- if nest_ptr=0 then build_page;
- end;
-@z
-%-------------------------
-@x [48] m.1119
-procedure build_local_box;
-var p:pointer;
- kind:integer;
-begin
-unsave;
-kind:=saved(-1);
-decr(save_ptr);
-p:=link(head); pop_nest;
-p:=hpack(p,natural);
-@y
-procedure build_local_box;
-var p:pointer;
- kind:integer;
-begin
-unsave;
-kind:=saved(-1);
-decr(save_ptr);
-p:=link(head); pop_nest;
-p:=hpack(p,natural,text_direction);
-@z
-%-------------------------
-@x [48] m.1125
-@<Append the accent with appropriate kerns...@>=
-begin t:=slant(f)/float_constant(65536);
-@^real division@>
-i:=char_info(f)(character(q));
-w:=char_width(f)(i); h:=char_height(f)(height_depth(i));
-if h<>x then {the accent must be shifted up or down}
- begin p:=hpack(p,natural); shift_amount(p):=x-h;
- end;
-@y
-@<Append the accent with appropriate kerns...@>=
-begin t:=slant(f)/float_constant(65536);
-@^real division@>
-i:=char_info(f)(character(q));
-w:=char_width(f)(i); h:=char_height(f)(height_depth(i));
-if h<>x then {the accent must be shifted up or down}
- begin p:=hpack(p,natural,text_direction); shift_amount(p):=x-h;
- end;
-@z
-%-------------------------
-@x [48] m.1136
-procedure push_math(@!c:group_code);
-begin push_nest; mode:=-mmode; incompleat_noad:=null; new_save_level(c);
-end;
-@y
-procedure push_math(@!c:group_code);
-begin
-push_nest; mode:=-mmode; incompleat_noad:=null; new_save_level(c);
-make_local_direction(info(math_dir_stack),true);
-end;
-@z
-%-------------------------
-@x [48] m.1138
-procedure init_math;
-label reswitch,found,not_found,done;
-var w:scaled; {new or partial |pre_display_size|}
-@!l:scaled; {new |display_width|}
-@!s:scaled; {new |display_indent|}
-@!p:pointer; {current node when calculating |pre_display_size|}
-@!q:pointer; {glue specification when calculating |pre_display_size|}
-@!f:internal_font_number; {font in current |char_node|}
-@!n:integer; {scope of paragraph shape specification}
-@!v:scaled; {|w| plus possible glue amount}
-@!d:scaled; {increment to |v|}
-begin get_token; {|get_x_token| would fail on \.{\\ifmmode}\thinspace!}
-@y
-procedure init_math;
-label reswitch,found,not_found,done;
-var w:scaled; {new or partial |pre_display_size|}
-@!l:scaled; {new |display_width|}
-@!s:scaled; {new |display_indent|}
-@!p:pointer; {current node when calculating |pre_display_size|}
-@!q:pointer; {glue specification when calculating |pre_display_size|}
-@!f:internal_font_number; {font in current |char_node|}
-@!n:integer; {scope of paragraph shape specification}
-@!v:scaled; {|w| plus possible glue amount}
-@!d:scaled; {increment to |v|}
-begin get_token; {|get_x_token| would fail on \.{\\ifmmode}\thinspace!}
-tmp_dir_stack:=get_avail;
-if next_fake_math_flag=0 then
- info(tmp_dir_stack):=math_direction
-else begin
- info(tmp_dir_stack):=text_direction;
- next_fake_math_flag:=0;
- end;
-link(tmp_dir_stack):=math_dir_stack;
-math_dir_stack:=tmp_dir_stack;
-@z
-%-------------------------
-@x [48] m.1145
-@<Go into display math mode@>=
-begin if head=tail then {`\.{\\noindent\$\$}' or `\.{\$\${ }\$\$}'}
- begin pop_nest; w:=-max_dimen;
- end
-else begin line_break(display_widow_penalty);@/
-@y
-@<Go into display math mode@>=
-begin if head=tail then {`\.{\\noindent\$\$}' or `\.{\$\${ }\$\$}'}
- begin pop_nest; w:=-max_dimen;
- end
-else begin line_break(display_widow_penalty,info(par_dir_stack));@/
-@z
-%-------------------------
-@x [48] m.1168
-vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2;
- p:=vpack(link(head),saved(1),saved(0)); pop_nest;
- tail_append(new_noad); type(tail):=vcenter_noad;
- math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p;
- end;
-@y
-vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-3;
- p:=vpackage(link(head),saved(1),saved(0),max_dimen,saved(2)); pop_nest;
- tail_append(new_noad); type(tail):=vcenter_noad;
- math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p;
- end;
-@z
-%-------------------------
-@x [48] m.1174
-begin unsave; p:=fin_mlist(null);
-@y
-begin unsave; p:=fin_mlist(null);
-@z
-%-------------------------
-@x [48] m.1186
-math_group: begin unsave; decr(save_ptr);@/
-@y
-math_group: begin unsave; decr(save_ptr);@/
-@z
-%-------------------------
-@x [48] m.1191
- else begin p:=fin_mlist(p); unsave; {end of |math_left_group|}
-@y
- else begin p:=fin_mlist(p); unsave; {end of |math_left_group|}
-@z
-%-------------------------
-@x [48] m.1194
-procedure after_math;
-var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
-@!danger:boolean; {not enough symbol fonts are present}
-@!m:integer; {|mmode| or |-mmode|}
-@!p:pointer; {the formula}
-@!a:pointer; {box containing equation number}
-@<Local variables for finishing a displayed formula@>@;
-begin danger:=false;
-@<Check that the necessary fonts for math symbols are present;
- if not, flush the current math lists and set |danger:=true|@>;
-m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest}
-if mode=-m then {end of equation number}
- begin @<Check that another \.\$ follows@>;
- cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false;
- mlist_to_hlist; a:=hpack(link(temp_head),natural);
- unsave; decr(save_ptr); {now |cur_group=math_shift_group|}
- if saved(0)=1 then l:=true;
-@y
-procedure after_math;
-var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
-@!danger:boolean; {not enough symbol fonts are present}
-@!m:integer; {|mmode| or |-mmode|}
-@!p:pointer; {the formula}
-@!a:pointer; {box containing equation number}
-@<Local variables for finishing a displayed formula@>@;
-begin danger:=false;
-@<Check that the necessary fonts for math symbols are present;
- if not, flush the current math lists and set |danger:=true|@>;
-m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest}
-if mode=-m then {end of equation number}
- begin @<Check that another \.\$ follows@>;
- cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false;
- mlist_to_hlist; a:=hpack(link(temp_head),natural,info(math_dir_stack));
- unsave; decr(save_ptr); {now |cur_group=math_shift_group|}
- if saved(0)=1 then l:=true;
-@z
-%-------------------------
-@x [48] m.1196
-@<Finish math in text@>=
-begin tail_append(new_math(math_surround,before));
-cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist;
-link(tail):=link(temp_head);
-while link(tail)<>null do tail:=link(tail);
-tail_append(new_math(math_surround,after));
-space_factor:=1000; unsave;
-end
-@y
-@<Finish math in text@> =
-begin tail_append(new_math(math_surround,before));
-cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist;
-link(tail):=link(temp_head);
-while link(tail)<>null do tail:=link(tail);
-tail_append(new_math(math_surround,after));
-space_factor:=1000; unsave;
-tmp_dir_stack:=math_dir_stack;
-math_dir_stack:=link(math_dir_stack);
-free_avail(tmp_dir_stack);
-end
-@z
-%-------------------------
-@x [48] m.1199
-@<Finish displayed math@>=
-cur_mlist:=p; cur_style:=display_style; mlist_penalties:=false;
-mlist_to_hlist; p:=link(temp_head);@/
-adjust_tail:=adjust_head; b:=hpack(p,natural); p:=list_ptr(b);
-t:=adjust_tail; adjust_tail:=null;@/
-w:=width(b); z:=display_width; s:=display_indent;
-@y
-@<Finish displayed math@>=
-cur_mlist:=p; cur_style:=display_style; mlist_penalties:=false;
-mlist_to_hlist; p:=link(temp_head);@/
-adjust_tail:=adjust_head; b:=hpack(p,natural,info(math_dir_stack));
-p:=list_ptr(b);
-t:=adjust_tail; adjust_tail:=null;@/
-w:=width(b); z:=display_width; s:=display_indent;
-@z
-%-------------------------
-@x [48] m.1200
-procedure resume_after_display;
-begin if cur_group<>math_shift_group then confusion("display");
-@:this can't happen display}{\quad display@>
-unsave; prev_graf:=prev_graf+3;
-@y
-procedure resume_after_display;
-begin if cur_group<>math_shift_group then confusion("display");
-@:this can't happen display}{\quad display@>
-unsave; prev_graf:=prev_graf+3;
-tmp_dir_stack:=math_dir_stack;
-math_dir_stack:=link(math_dir_stack);
-free_avail(tmp_dir_stack);
-@z
-%-------------------------
-@x [48] m.1201
-@<Squeeze the equation as much as possible...@>=
-begin if (e<>0)and((w-total_shrink[normal]+q<=z)or@|
- (total_shrink[sfi]<>0)or(total_shrink[fil]<>0)or
- (total_shrink[fill]<>0)or(total_shrink[filll]<>0)) then
- begin free_node(b,box_node_size);
- b:=hpack(p,z-q,exactly);
- end
-else begin e:=0;
- if w>z then
- begin free_node(b,box_node_size);
- b:=hpack(p,z,exactly);
- end;
- end;
-w:=width(b);
-end
-@y
-@<Squeeze the equation as much as possible...@>=
-begin if (e<>0)and((w-total_shrink[normal]+q<=z)or@|
- (total_shrink[sfi]<>0)or(total_shrink[fil]<>0)or
- (total_shrink[fill]<>0)or(total_shrink[filll]<>0)) then
- begin free_node(b,box_node_size);
- b:=hpack(p,z-q,exactly,info(math_dir_stack));
- end
-else begin e:=0;
- if w>z then
- begin free_node(b,box_node_size);
- b:=hpack(p,z,exactly,info(math_dir_stack));
- end;
- end;
-w:=width(b);
-end
-@z
-%-------------------------
-@x [49] m.1204
-@ @<Append the display and perhaps also the equation number@>=
-if e<>0 then
- begin r:=new_kern(z-w-e-d);
- if l then
- begin link(a):=r; link(r):=b; b:=a; d:=0;
- end
- else begin link(b):=r; link(r):=a;
- end;
- b:=hpack(b,natural);
- end;
-shift_amount(b):=s+d; append_to_vlist(b)
-@y
-@ @<Append the display and perhaps also the equation number@>=
-if e<>0 then
- begin r:=new_kern(z-w-e-d);
- if l then
- begin link(a):=r; link(r):=b; b:=a; d:=0;
- end
- else begin link(b):=r; link(r):=a;
- end;
- b:=hpack(b,natural,info(math_dir_stack));
- end;
-shift_amount(b):=s+d; append_to_vlist(b)
-@z
-%-------------------------
-@x [49] m.1210
-any_mode(assign_int),
-@y
-any_mode(assign_next_fake_math),
-any_mode(assign_int),
-any_mode(assign_dir),
-@z
-%-------------------------
-@x [49] m.1228
-assign_dimen: begin p:=cur_chr; scan_optional_equals;
- scan_normal_dimen; word_define(p,cur_val);
- end;
-@y
-assign_next_fake_math: next_fake_math_flag:=1;
-assign_dir: begin
- @<DIR: Assign direction codes@>
- end;
-assign_dimen: begin p:=cur_chr; scan_optional_equals;
- scan_normal_dimen; word_define(p,cur_val);
- end;
-@z
-%-------------------------
-@x [49] m.1257
-@!flushable_string:str_number; {string not yet referenced}
-@y
-@!natural_dir:integer;{the natural direction of the font}
-@!flushable_string:str_number; {string not yet referenced}
-@z
-%-------------------------
-@x [49] m.1257
-if scan_keyword("offset") then begin
- scan_int;
- offset:=cur_val;
- if (cur_val<0) then begin
- print_err("Illegal offset has been changed to 0");
- help1("The offset must be bigger than 0."); int_error(cur_val);
- offset:=0;
- end
- end
-else offset:=0;
-name_in_progress:=false;
-@<If this font has already been loaded, set |f| to the internal
- font number and |goto common_ending|@>;
-f:=read_font_info(u,cur_name,cur_area,s,offset);
-@y
-if scan_keyword("offset") then begin
- scan_int;
- offset:=cur_val;
- if (cur_val<0) then begin
- print_err("Illegal offset has been changed to 0");
- help1("The offset must be bigger than 0."); int_error(cur_val);
- offset:=0;
- end
- end
-else offset:=0;
-if scan_keyword("naturaldir") then begin
- scan_dir;
- natural_dir:=cur_val;
- end
-else natural_dir:=-1;
-name_in_progress:=false;
-@<If this font has already been loaded, set |f| to the internal
- font number and |goto common_ending|@>;
-f:=read_font_info(u,cur_name,cur_area,s,offset,natural_dir);
-@z
-%-------------------------
-@x [51] m.1337
-if (loc<limit)and(cat_code(buffer[loc])<>escape) then start_input;
- {\.{\\input} assumed}
-@y
-if (loc<limit)and(cat_code(buffer[loc])<>escape) then start_input;
- {\.{\\input} assumed}
-@<DIR: Initialize direction stacks@>;
-@z
-%-------------------------
-@x [53] m.1341
-@d language_node=4 {|subtype| in whatsits that change the current language}
-@y
-@d language_node=4 {|subtype| in whatsits that change the current language}
-@d dir_node_size=4 {number of words in change direction node}
-@d dir_dir(#)==info(#+1) {keep the direction to be taken}
-@d dir_dvi_ptr(#)==link(#+1) {for reflecting dvi output}
-@d dir_dvi_h(#)==info(#+2) {for reflecting dvi output}
-@z
-%-------------------------
-@x [53] m.1342
-@!write_open:array[0..17] of boolean;
-@y
-@!write_open:array[0..17] of boolean;
-@!neg_wd:scaled;
-@!pos_wd:scaled;
-@!neg_ht:scaled;
-@!dvi_direction:integer;
-@!dir_primary:array[0..31] of 0..31;
-@!dir_secondary:array[0..31] of 0..31;
-@!dir_tertiary:array[0..31] of 0..31;
-@!dir_rearrange:array[0..3] of 0..31;
-@!dir_names:array[0..3] of str_number;
-@z
-%-------------------------
-@x [53] m.1343
-for k:=0 to 17 do write_open[k]:=false;
-@y
-for k:=0 to 17 do write_open[k]:=false;
-set_new_eqtb_int(dir_base+page_direction_code,0);
-set_new_eqtb_int(dir_base+body_direction_code,0);
-set_new_eqtb_int(dir_base+par_direction_code,0);
-set_new_eqtb_int(dir_base+text_direction_code,0);
-set_new_eqtb_int(dir_base+math_direction_code,0);
-set_new_eqtb_sc(dimen_base+page_height_code,55380984); {29.7cm}
-set_new_eqtb_sc(dimen_base+page_width_code,39158276); {21cm}
-set_new_eqtb_sc(dimen_base+page_bottom_offset_code,page_height-9472573);
- {-2 inches}
-set_new_eqtb_sc(dimen_base+page_right_offset_code,page_width-9472573);
- {-2 inches}
-for k:= 0 to 7 do begin
- dir_primary [k ]:=dir_T;
- dir_primary [k+ 8]:=dir_L;
- dir_primary [k+16]:=dir_B;
- dir_primary [k+24]:=dir_R;
- end;
-for k:= 0 to 3 do begin
- dir_secondary[k ]:=dir_L;
- dir_secondary[k+ 4]:=dir_R;
- dir_secondary[k+ 8]:=dir_T;
- dir_secondary[k+12]:=dir_B;
-
- dir_secondary[k+16]:=dir_L;
- dir_secondary[k+20]:=dir_R;
- dir_secondary[k+24]:=dir_T;
- dir_secondary[k+28]:=dir_B;
- end;
-for k:=0 to 7 do begin
- dir_tertiary[k*4 ]:=dir_T;
- dir_tertiary[k*4+1]:=dir_L;
- dir_tertiary[k*4+2]:=dir_B;
- dir_tertiary[k*4+3]:=dir_R;
- end;
-dir_rearrange[0]:=0;
-dir_rearrange[1]:=0;
-dir_rearrange[2]:=1;
-dir_rearrange[3]:=1;
-dir_names[0]:="T";
-dir_names[1]:="L";
-dir_names[2]:="B";
-dir_names[3]:="R";
-@z
-%-------------------------
-@x [53] m.1344
-@d set_language_code=5 {command modifier for \.{\\setlanguage}}
-@y
-@d set_language_code=5 {command modifier for \.{\\setlanguage}}
-@d dir_whatsit_node=6 {|subtype| in whatsits for change direction node}
-@z
-%-------------------------
-@x [53] m.1344
-primitive("localinterlinepenalty",assign_int,
- int_base+local_inter_line_penalty_code);@/
-primitive("localbrokenpenalty",assign_int,
- int_base+local_broken_penalty_code);@/
-@y
-primitive("localinterlinepenalty",assign_int,
- int_base+local_inter_line_penalty_code);@/
-primitive("localbrokenpenalty",assign_int,
- int_base+local_broken_penalty_code);@/
-primitive("pagedir",assign_dir,dir_base+page_direction_code);@/
-primitive("bodydir",assign_dir,dir_base+body_direction_code);@/
-primitive("pardir",assign_dir,dir_base+par_direction_code);@/
-primitive("textdir",assign_dir,dir_base+text_direction_code);@/
-primitive("mathdir",assign_dir,dir_base+math_direction_code);@/
-primitive("pageheight",assign_dimen,dimen_base+page_height_code);@/
-primitive("pagewidth",assign_dimen,dimen_base+page_width_code);@/
-primitive("nextfakemath",assign_next_fake_math,0);@/
-{
-primitive("pagerightoffset",assign_dimen,dimen_base+page_right_offset_code);@/
-primitive("pagebottomoffset",assign_dimen,dimen_base+page_bottom_offset_code);@/
-}
-@z
-%-------------------------
-@x [53] m.1346
- set_language_code:print_esc("setlanguage");
- othercases print("[unknown extension!]")
- endcases;
-@y
- set_language_code:print_esc("setlanguage");
- othercases print("[unknown extension!]")
- endcases;
-@z
-%-------------------------
-@x [53] m.1348
-set_language_code:@<Implement \.{\\setlanguage}@>;
-@y
-set_language_code:@<Implement \.{\\setlanguage}@>;
-@z
-%-------------------------
-@x [53] m.1349
-procedure new_whatsit(@!s:small_number;@!w:small_number);
-var p:pointer; {the new node}
-begin p:=get_node(w); type(p):=whatsit_node; subtype(p):=s;
-link(tail):=p; tail:=p;
-end;
-@y
-procedure new_whatsit(@!s:small_number;@!w:small_number);
-var p:pointer; {the new node}
-begin p:=get_node(w); type(p):=whatsit_node; subtype(p):=s;
-@<LOCAL: Add info node pointer@>;
-link(tail):=p; tail:=p;
-end;
-@z
-%-------------------------
-@x [53] m.1356
-language_node:begin print_esc("setlanguage");
- print_int(what_lang(p)); print(" (hyphenmin ");
- print_int(what_lhm(p)); print_char(",");
- print_int(what_rhm(p)); print_char(")");
- end;
-@y
-language_node:begin print_esc("setlanguage");
- print_int(what_lang(p)); print(" (hyphenmin ");
- print_int(what_lhm(p)); print_char(",");
- print_int(what_rhm(p)); print_char(")");
- end;
-dir_whatsit_node:
- if dir_dir(p)<0 then begin
- print_esc("enddir"); print(" "); print_dir(dir_dir(p)+64);
- end
- else begin
- print_esc("begindir"); print(" "); print_dir(dir_dir(p));
- end;
-@z
-%-------------------------
-@x [53] m.1357
-close_node,language_node: begin r:=get_node(small_node_size);
- words:=small_node_size;
- end;
-@y
-close_node,language_node: begin r:=get_node(small_node_size);
- words:=small_node_size;
- end;
-dir_whatsit_node: begin r:=get_node(dir_node_size);
- words:=small_node_size;
- end;
-@z
-%-------------------------
-@x [53] m.1358
-close_node,language_node: free_node(p,small_node_size);
-@y
-close_node,language_node: free_node(p,small_node_size);
-dir_whatsit_node: free_node(p,dir_node_size);
-@z
-%-------------------------
-@x
-procedure make_info_node;
-{This function creates an |info_node|}
-var p:pointer;
-begin
-p:=get_node(info_size); type(p):=info_node;
-link(p):=null;
-info_ref_count(p):=1;
-info_pen_inter(p):=local_inter_line_penalty;
-info_pen_broken(p):=local_broken_penalty;
-if local_left_box=null then
- info_left_box(p):=null
-else
- info_left_box(p):=copy_node_list(local_left_box);
-if local_right_box=null then
- info_right_box(p):=null
-else
- info_right_box(p):=copy_node_list(local_right_box);
-if current_file_node=null then begin
- info_file(p):=null;
- end
-else begin
- info_file(p):=current_file_node;
- file_incr_ref_count(current_file_node);
- end;
-eq_define(local_par_info_base,data,p);
-end;
-@y
-procedure init_local_direction; forward;
-procedure make_info_node;
-{This function creates an |info_node|}
-var p:pointer;
-begin
-if local_dir=null then init_local_direction
-else begin
- p:=get_node(info_size); type(p):=info_node;
- link(p):=null;
- info_ref_count(p):=1;
- info_pen_inter(p):=local_inter_line_penalty;
- info_pen_broken(p):=local_broken_penalty;
- if local_left_box=null then
- info_left_box(p):=null
- else
- info_left_box(p):=copy_node_list(local_left_box);
- if local_right_box=null then
- info_right_box(p):=null
- else
- info_right_box(p):=copy_node_list(local_right_box);
- if current_file_node=null then begin
- info_file(p):=null;
- end
- else begin
- info_file(p):=current_file_node;
- file_incr_ref_count(current_file_node);
- end;
- info_dir(p):=local_dir;
- dir_incr_ref_count(local_dir);
- eq_define(local_par_info_base,data,p);
- end;
-end;
-
-procedure init_local_direction;
-var new_ptr:pointer;
- no_levels:integer;
-begin
-no_levels:=1;
-new_ptr:=get_node(dir_size+no_levels*2);
-type(new_ptr):=dir_node;
-dir_no(new_ptr):=no_levels;
-dir_ref_count(new_ptr):=1;
-mem[new_ptr+2*no_levels].int:=cur_level;
-mem[new_ptr+2*no_levels+1].int:=cur_val;
-eq_define(local_dir_base,data,new_ptr);
-make_info_node;
-end;
-
-procedure make_local_direction(new_val:integer;new_stack:boolean);
-var old_ptr,new_ptr:pointer;
- i,no_levels:integer;
-begin
-old_ptr:=local_dir;
-if new_stack then
- no_levels:=1
-else if mem[old_ptr+2*dir_no(old_ptr)].int=cur_level then
- no_levels:=dir_no(old_ptr)
-else
- no_levels:=dir_no(old_ptr)+1;
-new_ptr:=get_node(dir_size+no_levels*2);
-type(new_ptr):=dir_node;
-dir_no(new_ptr):=no_levels;
-dir_ref_count(new_ptr):=1;
-for i:=1 to no_levels-1 do begin
- mem[new_ptr+2*i].int:=mem[old_ptr+2*i].int;
- mem[new_ptr+2*i+1].int:=mem[old_ptr+2*i+1].int;
- end;
-mem[new_ptr+2*no_levels].int:=cur_level;
-mem[new_ptr+2*no_levels+1].int:=new_val;
-eq_define(local_dir_base,data,new_ptr);
-make_info_node;
-end;
-@z
-%-------------------------
-@x
-@ @<LOCAL: Change file node@>=
-begin
-make_file_node;
-end
-
-@y
-@ @<LOCAL: Change file node@>=
-begin
-make_file_node;
-end
-
-@ @<LOCAL: Delete direction node@>=
-begin
-dir_decr_ref_count(p);
-end
-
-@ @<DIR: Initialize direction stacks@>=
-begin
-par_dir_stack:=null;
-math_dir_stack:=null;
-align_dir_stack:=null;
-init_local_direction;
-end
-
-@ @<DIR: Assign direction codes@>=
-case cur_chr of
-dir_base+page_direction_code: begin
- if its_all_over then begin
- scan_dir;
- eq_word_define(dir_base+page_direction_code,cur_val);
- end;
- end;
-dir_base+body_direction_code: begin
- if its_all_over then begin
- scan_dir;
- eq_word_define(dir_base+body_direction_code,cur_val);
- end;
- end;
-dir_base+par_direction_code: begin
- scan_dir;
- eq_word_define(dir_base+par_direction_code,cur_val);
- end;
-dir_base+text_direction_code: begin scan_dir;
- eq_word_define(dir_base+text_direction_code,cur_val);
- make_local_direction(cur_val,false);
- end;
-dir_base+math_direction_code: begin scan_dir;
- eq_word_define(dir_base+math_direction_code,cur_val);
- end;
-end;
-
-@
-@d push_dir_node(#)==
-begin dir_tmp:=get_node(dir_node_size);
-type(dir_tmp):=whatsit_node; subtype(dir_tmp):=dir_whatsit_node;
-dir_dir(dir_tmp):=#;
-link(dir_tmp):=dir_ptr; dir_ptr:=dir_tmp;
-end
-
-@d pop_dir_node==
-begin dir_tmp:=dir_ptr;
-dir_ptr:=link(dir_tmp);
-free_node(dir_tmp,dir_node_size);
-end
-
-@ @<DIR: Declare |change_dir|@>=
-procedure change_dir(p:pointer;dir:integer);
-var new_info:pointer;
- old_info:pointer;
- new_dir_node:pointer;
-begin
-old_info:=ptr_info(p);
-if old_info=null then confusion("changedir");
-new_info:=get_node(info_size); type(new_info):=info_node;
-link(new_info):=null;
-info_ref_count(new_info):=1;
-info_pen_inter(new_info):=info_pen_inter(old_info);
-info_pen_broken(new_info):=info_pen_broken(old_info);
-if info_left_box(old_info)=null then
- info_left_box(new_info):=null
-else
- info_left_box(new_info):=copy_node_list(info_left_box(old_info));
-if info_right_box(old_info)=null then
- info_right_box(new_info):=null
-else
- info_right_box(new_info):=copy_node_list(info_right_box(old_info));
-info_file(new_info):=info_file(old_info);
-file_incr_ref_count(info_file(old_info));
-new_dir_node:=get_node(dir_size+2);
-type(new_dir_node):=dir_node;
-dir_no(new_dir_node):=1;
-dir_ref_count(new_dir_node):=2; {core dump if we put 1; why?}
-mem[new_dir_node+2].int:=0;
-mem[new_dir_node+3].int:=dir;
-info_dir(new_info):=new_dir_node;
-ptr_info(p):=new_info;
-info_decr_ref_count(old_info);
-end
-
-@ @<DIR: Initialize the text direction@>=
-begin
-dir_ptr:=null;
-cur_direction:=dvi_direction;
-new_dir_node:=info_dir(ptr_info(p));
-for i:=1 to dir_no(new_dir_node) do
- @<DIR: PUSH a new direction for mixed direction typesetting@>;
-prev_dir_node:=new_dir_node;
-end
-
-@ @<DIR: Finalize the text direction@>=
-begin
-for i:=dir_no(prev_dir_node) downto 1 do
- @<DIR: POP a new direction for mixed direction typesetting@>;
-end
-
-@ @<DIR: Check if the text direction has changed@>=
-begin
-if p<>null then
-if ptr_info(p)<>null then
-if info_dir(ptr_info(p))<>null then begin
- new_dir_node:=info_dir(ptr_info(p));
- if new_dir_node<>prev_dir_node then begin
- m:=dir_no(prev_dir_node);
- if dir_no(new_dir_node)<m then m:=dir_no(new_dir_node);
- i:=1; dir_level:=0; dir_found:=false;
- while not dir_found do begin
- if i>m then dir_found:=true
- else if mem[prev_dir_node+2*i+1].int = mem[new_dir_node+2*i+1].int then
- incr(dir_level)
- else dir_found:=true;
- incr(i);
- end;
- for i:=dir_no(prev_dir_node) downto dir_level+1 do
- @<DIR: POP a new direction for mixed direction typesetting@>;
- for i:=dir_level+1 to dir_no(new_dir_node) do
- @<DIR: PUSH a new direction for mixed direction typesetting@>;
- prev_dir_node:=new_dir_node;
- end
- end
-else begin print("No local node"); print_ln; end
-else begin print("No direction node"); print_ln; end
-end
-
-@ @<DIR: PUSH a new direction for mixed direction typesetting@>=begin
- synch_h; synch_v;
- d:=mem[new_dir_node+2*i+1].int;
- if not((i=1) and (cur_direction=d)) then begin
- push_dir_node(dvi_direction);
- if dir_opposite(dir_secondary[d])(dir_secondary[dvi_direction]) then begin
- if (dir_secondary[dvi_direction]=0) or
- (dir_secondary[dvi_direction]=2) then
- dvi_out(down4)
- else
- dvi_out(right4);
- dir_dvi_ptr(dir_ptr):=dvi_ptr;
- dir_dvi_h(dir_ptr):=dvi_h;
- dvi_four(0);
- cur_h:=0; dvi_h:=0;
- end
- else begin
- dir_dvi_ptr(dir_ptr):=dvi_ptr;
- dir_dvi_h(dir_ptr):=dvi_h;
- end;
- append_string("om:");
- append_string("startdir=");
- append_char(dir_names[dir_primary[d]]);
- append_char(dir_names[dir_secondary[d]]);
- append_char(dir_names[dir_tertiary[d]]);
- g:=make_string;
- if length(g)<256 then
- begin dvi_out(xxx1); dvi_out(length(g));
- end
- else begin dvi_out(xxx4); dvi_four(length(g));
- end;
- for newk:=str_start(g) to pool_ptr-1 do dvi_out(so(str_pool[newk]));
- flush_string; {erase the string}
- dvi_direction:=d;
- end
- end
-
-@ @<DIR: POP a new direction for mixed direction typesetting@>=begin
- synch_h; synch_v;
- d:=mem[prev_dir_node+2*i+1].int;
- if not((i=1) and (cur_direction=d)) then begin
- dvi_dir_h:=dir_dvi_h(dir_ptr);
- dvi_dir_ptr:=dir_dvi_ptr(dir_ptr);
- dvi_direction:=dir_dir(dir_ptr);
- pop_dir_node;
- if dir_opposite(dir_secondary[d])(dir_secondary[dvi_direction]) then begin
- dvi_temp_ptr:=dvi_ptr;
- dvi_ptr:=dvi_dir_ptr;
- if (dir_secondary[dvi_direction]=0) or
- (dir_secondary[dvi_direction]=1) then
- dvi_four(cur_h)
- else
- dvi_four(-cur_h);
- dvi_ptr:=dvi_temp_ptr;
- append_string("om:");
- append_string("enddir=");
- append_char(dir_names[dir_primary[d]]);
- append_char(dir_names[dir_secondary[d]]);
- append_char(dir_names[dir_tertiary[d]]);
- g:=make_string;
- if length(g)<256 then
- begin dvi_out(xxx1); dvi_out(length(g));
- end
- else begin dvi_out(xxx4); dvi_four(length(g));
- end;
- for newk:=str_start(g) to pool_ptr-1 do dvi_out(so(str_pool[newk]));
- flush_string; {erase the string}
- if (dir_secondary[dvi_direction]=0) or
- (dir_secondary[dvi_direction]=2) then
- dvi_out(down4)
- else
- dvi_out(right4);
- if (dir_secondary[dvi_direction]=0) or
- (dir_secondary[dvi_direction]=1) then
- dvi_four(cur_h)
- else
- dvi_four(-cur_h);
- cur_h:=dvi_dir_h+cur_h; dvi_h:=cur_h;
- end
- else begin
- append_string("om:");
- append_string("enddir=");
- append_char(dir_names[dir_primary[d]]);
- append_char(dir_names[dir_secondary[d]]);
- append_char(dir_names[dir_tertiary[d]]);
- g:=make_string;
- if length(g)<256 then
- begin dvi_out(xxx1); dvi_out(length(g));
- end
- else begin dvi_out(xxx4); dvi_four(length(g));
- end;
- for newk:=str_start(g) to pool_ptr-1 do dvi_out(so(str_pool[newk]));
- flush_string; {erase the string}
- end
- end
- end
-@z
diff --git a/Build/source/texk/web2c/omegadir/omega-pool.h b/Build/source/texk/web2c/omegadir/omega-pool.h
deleted file mode 100644
index 22824eb2682..00000000000
--- a/Build/source/texk/web2c/omegadir/omega-pool.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef OMEGA_POOL_H
-#define OMEGA_POOL_H
-typedef int integer;
-typedef integer strnumber;
-typedef unsigned short packedASCIIcode;
-typedef integer poolpointer;
-extern packedASCIIcode * strpool;
-extern poolpointer poolptr;
-#endif
diff --git a/Build/source/texk/web2c/omegadir/omega.c b/Build/source/texk/web2c/omegadir/omega.c
deleted file mode 100644
index e96b1444ec3..00000000000
--- a/Build/source/texk/web2c/omegadir/omega.c
+++ /dev/null
@@ -1,624 +0,0 @@
-/* omega.c: C routines to support the Omega Pascal Web distribution
-
-This file is part of Omega,
-which is based on the web2c distribution of TeX,
-
-Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-
-Omega is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-Omega is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Omega; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-*/
-
-#define EXTERN extern
-#include "omegad.h"
-
-void
-btestin(void)
-{
- string fname =
- kpse_find_file (nameoffile + 1, kpse_program_binary_format, true);
-
- if (fname) {
- libcfree(nameoffile);
- nameoffile = (char *)xmalloc(2+strlen(fname));
- namelength = strlen(fname);
- strcpy(nameoffile+1, fname);
- }
- else {
- libcfree(nameoffile);
- nameoffile = (char *)xmalloc(2);
- namelength = 0;
- nameoffile[0] = 0;
- nameoffile[1] = 0;
- }
-}
-
-int
-getfilemode P2C(FILE *, f, int, def)
-{
- int c,m;
- if ((def==0)||(feof(f))) m=0;
- else {
- c = getc(f);
- if (c==EOF) m=0;
- else if (c==0x5c) {
- if (feof(f)) m=0;
- else {
- c = getc(f);
- if (c==EOF) m=0;
- else if (c==0) m=4;
- else m=1;
- ungetc(c,f);
- c=0x5c;
- }
- }
- else if (c==0x25) {
- if (feof(f)) m=0;
- else {
- c = getc(f);
- if (c==EOF) m=0;
- else if (c==0) m=4;
- else m=1;
- ungetc(c,f);
- c=0x25;
- }
- }
- else if (c==0xe0) m=2;
- else if (c==0x6c) m=2;
- else if (c==0) {
- if (feof(f)) m=0;
- else {
- c = getc(f);
- if (c==EOF) m=0;
- else if (c==0x5c) m=3;
- else if (c==0x25) m=3;
- else m=def;
- ungetc(c,f);
- c=0;
- }
- }
- else m=def;
- ungetc(c,f);
- }
- return m;
-}
-
-int
-getc_two_LE P1C(FILE *, f)
-{
- register int i,j;
- i = getc(f);
- if (i==EOF) { return i; }
- j = getc(f);
- if (j==EOF) { return j; }
- return ((j<<8)|i);
-}
-
-void
-ungetc_two_LE P2C(int, c, FILE *, f)
-{
- ungetc((c>>8), f);
- ungetc((c&0377), f);
-}
-
-int
-getc_two P1C(FILE *, f)
-{
- register int i,j;
- i = getc(f);
- if (i==EOF) { return i; }
- j = getc(f);
- if (j==EOF) { return j; }
- return ((i<<8)|j);
-}
-
-void
-ungetc_two P2C(int, c, FILE *, f)
-{
- ungetc((c&0377), f);
- ungetc((c>>8), f);
-}
-
-#define advance_cin if ((c_in = fgetc(f)) == EOF) return EOF
-
-int
-getc_UTF8 P1C(FILE *, f)
-{
- register int c_in,c_out;
-
- advance_cin;
- if (c_in<0x80) {
- c_out = c_in & 0x7f;
- } else if (c_in<0xe0) {
- c_out = (c_in & 0x1f) << 6;
- advance_cin;
- c_out |= c_in & 0x3f;
- } else if (c_in<=0xf0) {
- c_out = (c_in & 0xf) << 12;
- advance_cin;
- c_out |= (c_in & 0x3f) << 6;
- advance_cin;
- c_out |= c_in & 0x3f;
- } else if (c_in<0xf8) {
- c_out = (c_in & 0x7) << 18;
- advance_cin;
- c_out |= (c_in & 0x3f) << 12;
- advance_cin;
- c_out |= (c_in & 0x3f) << 6;
- advance_cin;
- c_out |= c_in & 0x3f;
- } else if (c_in<0xfc) {
- c_out = (c_in & 0x3) << 24;
- advance_cin;
- c_out |= (c_in & 0x3f) << 18;
- advance_cin;
- c_out |= (c_in & 0x3f) << 12;
- advance_cin;
- c_out |= (c_in & 0x3f) << 6;
- advance_cin;
- c_out |= c_in & 0x3f;
- } else { /* c>=0xfc */
- c_out = (c_in & 0x1) << 30;
- advance_cin;
- c_out |= (c_in & 0x3f) << 24;
- advance_cin;
- c_out |= (c_in & 0x3f) << 18;
- advance_cin;
- c_out |= (c_in & 0x3f) << 12;
- advance_cin;
- c_out |= (c_in & 0x3f) << 6;
- advance_cin;
- c_out |= c_in & 0x3f;
- }
- return c_out;
-}
-
-void
-ungetc_UTF8 P2C(int, c, FILE *, f)
-{
- /* Still to be done */
-}
-
-#define advance_two_cin advance_cin; \
- c_in_hi = c_in; \
- advance_cin; \
- c_in = (c_in_hi & 0xff) << 8
-
-int
-getc_UTF16 P1C(FILE *, f)
-{
- register int c_in,c_in_hi,c_out;
-
- advance_two_cin;
- if ((c_in>=0xd800) && (c_in<=0xdbff)) {
- c_out = (c_in - 0xd800) * 0x400;
- advance_two_cin;
- if ((c_in>=0xdc00) && (c_in<=0xdfff)) {
- c_out += (c_in - 0xdc00) + 0x10000;
- } else {
- return 0xfffd;
- }
- } else {
- c_out = c_in;
- }
- return c_out;
-}
-
-void
-ungetc_UTF16 P2C(int, c, FILE *, f)
-{
- /* Still to be done */
-}
-
-#define advance_twoLE_cin advance_cin; \
- c_in_lo = c_in; \
- advance_cin; \
- c_in = (c_in << 8) | (c_in_lo & 0xff)
-
-int
-getc_UTF16LE P1C(FILE *, f)
-{
- register int c_in,c_in_lo,c_out;
-
- advance_twoLE_cin;
- if ((c_in>=0xd800) && (c_in<=0xdbff)) {
- c_out = (c_in - 0xd800) * 0x400;
- advance_twoLE_cin;
- if ((c_in>=0xdc00) && (c_in<=0xdfff)) {
- c_out += (c_in - 0xdc00) + 0x10000;
- } else {
- return 0xfffd;
- }
- } else {
- c_out = c_in;
- }
- return c_out;
-}
-
-void
-ungetc_UTF16LE P2C(int, c, FILE *, f)
-{
- /* Still to be done */
-}
-
-
-extern boolean zpnewinputln ();
-
-boolean
-newinputln P4C(FILE *,f, halfword,themode, halfword,translation, boolean,bypass)
-{
- return zpnewinputln((alphafile)f,
- (halfword)themode,
- (halfword)translation,
- (boolean) bypass);
-}
-
-boolean
-new_input_line P2C(FILE *, f, halfword, themode)
-{
- register int i=EOF;
-
- last = first;
- otpinputend = 0;
-
- if (themode==1) {
- while ((otpinputend < ocpbufsize) && ((i = getc (f)) != EOF) &&
- ((i != '\r') && (i != '\n')))
- otpinputbuf[++otpinputend] = i;
- if (i=='\r') {
- i=getc(f); if (i != '\n') ungetc(i,f);
- }
- } else if (themode==2) {
- while ((otpinputend < ocpbufsize) && ((i = getc (f)) != EOF) &&
- (i != 0x25))
- otpinputbuf[++otpinputend] = i;
- } else if (themode==3) {
- while ((otpinputend < ocpbufsize) && ((i = getc_two (f)) != EOF) &&
- ((i != '\r') && (i != '\n')))
- otpinputbuf[++otpinputend] = i;
- if (i=='\r') {
- i=getc_two(f); if (i != '\n') ungetc_two(i,f);
- }
- } else if (themode==4) {
- while ((otpinputend < ocpbufsize) && ((i = getc_two_LE (f)) != EOF) &&
- ((i != '\r') && (i != '\n')))
- otpinputbuf[++otpinputend] = i;
- if (i=='\r') {
- i=getc_two_LE(f); if (i != '\n') ungetc_two_LE(i,f);
- }
- } else if (themode==5) {
- while ((otpinputend < ocpbufsize) && ((i = getc_UTF8 (f)) != EOF) &&
- ((i != '\r') && (i != '\n')))
- otpinputbuf[++otpinputend] = i;
- if (i=='\r') {
- i=getc_UTF8(f); if (i != '\n') ungetc_UTF8(i,f);
- }
- } else if (themode==6) {
- while ((otpinputend < ocpbufsize) && ((i = getc_UTF16 (f)) != EOF) &&
- ((i != '\r') && (i != '\n')))
- otpinputbuf[++otpinputend] = i;
- if (i=='\r') {
- i=getc_UTF16(f); if (i != '\n') ungetc_UTF16(i,f);
- }
- } else /* themode==7 */ {
- while ((otpinputend < ocpbufsize) && ((i = getc_UTF16LE (f)) != EOF) &&
- ((i != '\r') && (i != '\n')))
- otpinputbuf[++otpinputend] = i;
- if (i=='\r') {
- i=getc_UTF16LE(f); if (i != '\n') ungetc_UTF16LE(i,f);
- }
- }
-
- if (i == EOF && otpinputend == 0)
- return false;
-
- /* We didn't get the whole line because our buffer was too small.
-*/
- if (i != EOF && (((themode!=2) && (i != '\n')) || ((themode==2) && (i != 0x25))))
- {
- (void) fprintf (stderr,
- "! Unable to read an entire line---ocp_buf_size=%ld.\n",ocpbufsize);
- (void) fprintf (stderr, "Please increase ocp_buf_size in texmf.cnf.\n");
- uexit (1);
- }
-
- return true;
-}
-
-extern memoryword ziniteqtbentry () ;
-
-hashword hashtable[HASHTABLESIZE];
-
-void
-inithhashtable P1H(void)
-{
- int i;
- for (i=0; i<HASHTABLESIZE; i++) {
- hashtable[i].p = -1;
- }
-
-}
-
-hashword *
-createeqtbpos P1C(int, p)
-{
- hashword *runner= &(hashtable[p%HASHTABLESIZE]);
- if (runner->p==p) return runner;
- while (runner->p != -1) {
- runner = runner->ptr;
- if (runner->p == p) return runner;
- }
- runner->p = p;
- runner->mw = ziniteqtbentry(p);
- runner->ptr = (hashword *) xmalloc(sizeof(hashword));
- (runner->ptr)->p = -1;
- return runner;
-}
-
-memoryword *
-createeqtbptr P1C(int, p)
-{
- hashword *runner= &(hashtable[p%HASHTABLESIZE]);
- if (runner->p==p) return (&(runner->mw));
- while (runner->p != -1) {
- runner = runner->ptr;
- if (runner->p == p) return (&(runner->mw));
- }
- runner->p = p;
- runner->mw = ziniteqtbentry(p);
- runner->ptr = (hashword *) xmalloc(sizeof(hashword));
- (runner->ptr)->p = -1;
- return (&(runner->mw));
-}
-
-hashword *
-createxeqlevel P1C(int, p)
-{
- hashword *runner= &(hashtable[p%HASHTABLESIZE]);
- if (runner->p==p) return runner;
- while (runner->p != -1) {
- runner = runner->ptr;
- if (runner->p == p) return runner;
- }
- runner->p = p;
- runner->mw.cint = 1;
- runner->mw.cint1 = 0;
- runner->ptr = (hashword *) xmalloc(sizeof(hashword));
- (runner->ptr)->p = -1;
- return runner;
-}
-
-hashword *
-createhashpos P1C(int, p)
-{
- hashword *runner= &(hashtable[p%HASHTABLESIZE]);
- if (runner->p==p) return runner;
- while (runner->p != -1) {
- runner = runner->ptr;
- if (runner->p == p) return runner;
- }
- runner->p = p;
- runner->mw.cint = 0;
- runner->mw.cint1 = 0;
- runner->ptr = (hashword *) xmalloc(sizeof(hashword));
- (runner->ptr)->p = -1;
- return runner;
-}
-
-void
-dumphhashtable P1H(void)
-{
- int i;
- hashword *runner;
- for (i=0; i<HASHTABLESIZE; i++) {
- runner=&(hashtable[i]);
- if (runner->p != -1) {
- dumpint(-i);
- while (runner->p != -1) {
- dumpint(runner->p);
- dumpwd(runner->mw);
- runner=runner->ptr;
- }
- }
- }
- dumpint(-HASHTABLESIZE);
-}
-
-void
-undumphhashtable P1H(void)
-{
- int i,j;
- hashword *runner;
- j=0;
- undumpint(i);
- while (j<HASHTABLESIZE) {
- i = (-i);
- while (j<i) {
- hashtable[j].p = -1;
- j++;
- }
- if (i<HASHTABLESIZE) {
- runner = &(hashtable[j]);
- undumpint(i);
- while (i>=0) {
- runner->p = i;
- undumpwd(runner->mw);
- undumpint(i);
- runner->ptr = (hashword *) xmalloc(sizeof(hashword));
- runner = runner->ptr;
- }
- runner->p = -1;
- j++;
- }
- }
-}
-
-void
-odateandtime P4C(int,timecode, int,daycode, int,monthcode, int,yearcode)
-{
- integer tc,dc,mc,yc;
- dateandtime(tc,dc,mc,yc);
- setneweqtbint(timecode,tc);
- setneweqtbint(daycode,dc);
- setneweqtbint(monthcode,mc);
- setneweqtbint(yearcode,yc);
-}
-
-memoryword **fonttables;
-static int font_entries = 0;
-
-void
-allocatefonttable P2C(int, font_number, int, font_size)
-{
- int i;
- if (font_entries==0) {
- fonttables = (memoryword **) xmalloc(256*sizeof(memoryword**));
- font_entries=256;
- } else if ((font_number==256)&&(font_entries==256)) {
- fonttables = (memoryword **) xrealloc(fonttables, 65536);
- font_entries=65536;
- }
- fonttables[font_number] =
- (memoryword *) xmalloc((font_size+1)*sizeof(memoryword));
- fonttables[font_number][0].cint = font_size;
- fonttables[font_number][0].cint1 = 0;
- for (i=1; i<=font_size; i++) {
- fonttables[font_number][i].cint = 0;
- fonttables[font_number][i].cint1 = 0;
- }
-}
-
-void
-dumpfonttable P2C(int, font_number, int, words)
-{
- fonttables[font_number][0].cint=words;
- dumpthings(fonttables[font_number][0], fonttables[font_number][0].cint+1);
-}
-
-void
-undumpfonttable P1C(int, font_number)
-{
- memoryword sizeword;
- if (font_entries==0) {
- fonttables = (memoryword **) xmalloc(256*sizeof(memoryword**));
- font_entries=256;
- } else if ((font_number==256)&&(font_entries==256)) {
- fonttables = (memoryword **) xrealloc(fonttables, 65536);
- font_entries=65536;
- }
-
- undumpthings(sizeword,1);
- fonttables[font_number] =
- (memoryword *) xmalloc((sizeword.cint+1)*sizeof(memoryword));
- fonttables[font_number][0].cint = sizeword.cint;
- undumpthings(fonttables[font_number][1], sizeword.cint);
-}
-
-memoryword **fontsorttables;
-static int fontsort_entries = 0;
-
-void
-allocatefontsorttable P2C(int, fontsort_number, int, fontsort_size)
-{
- int i;
- if (fontsort_entries==0) {
- fontsorttables = (memoryword **) xmalloc(256*sizeof(memoryword**));
- fontsort_entries=256;
- } else if ((fontsort_number==256)&&(fontsort_entries==256)) {
- fontsorttables = (memoryword **) xrealloc(fontsorttables, 65536);
- fontsort_entries=65536;
- }
- fontsorttables[fontsort_number] =
- (memoryword *) xmalloc((fontsort_size+1)*sizeof(memoryword));
- fontsorttables[fontsort_number][0].cint = fontsort_size;
- fontsorttables[fontsort_number][0].cint1 = 0;
- for (i=1; i<=fontsort_size; i++) {
- fontsorttables[fontsort_number][i].cint = 0;
- fontsorttables[fontsort_number][i].cint1 = 0;
- }
-}
-
-void
-dumpfontsorttable P2C(int, fontsort_number, int, words)
-{
- fontsorttables[fontsort_number][0].cint=words;
- dumpthings(fontsorttables[fontsort_number][0],
- fontsorttables[fontsort_number][0].cint+1);
-}
-
-void
-undumpfontsorttable P1C(int, fontsort_number)
-{
- memoryword sizeword;
- if (fontsort_entries==0) {
- fontsorttables = (memoryword **) xmalloc(256*sizeof(memoryword**));
- fontsort_entries=256;
- } else if ((fontsort_number==256)&&(fontsort_entries==256)) {
- fontsorttables = (memoryword **) xrealloc(fontsorttables, 65536);
- fontsort_entries=65536;
- }
-
- undumpthings(sizeword,1);
- fontsorttables[fontsort_number] =
- (memoryword *) xmalloc((sizeword.cint+1)*sizeof(memoryword));
- fontsorttables[fontsort_number][0].cint = sizeword.cint;
- undumpthings(fontsorttables[fontsort_number][1], sizeword.cint);
-}
-
-int **ocptables;
-static int ocp_entries = 0;
-
-void
-allocateocptable P2C(int, ocp_number, int, ocp_size)
-{
- int i;
- if (ocp_entries==0) {
- ocptables = (int **) xmalloc(256*sizeof(int**));
- ocp_entries=256;
- } else if ((ocp_number==256)&&(ocp_entries==256)) {
- ocptables = (int **) xrealloc(ocptables, 65536);
- ocp_entries=65536;
- }
- ocptables[ocp_number] =
- (int *) xmalloc((1+ocp_size)*sizeof(int));
- ocptables[ocp_number][0] = ocp_size;
- for (i=1; i<=ocp_size; i++) {
- ocptables[ocp_number][i] = 0;
- }
-}
-
-void
-dumpocptable P1C(int, ocp_number)
-{
- dumpthings(ocptables[ocp_number][0], ocptables[ocp_number][0]+1);
-}
-
-void
-undumpocptable P1C(int, ocp_number)
-{
- int sizeword;
- if (ocp_entries==0) {
- ocptables = (int **) xmalloc(256*sizeof(int**));
- ocp_entries=256;
- } else if ((ocp_number==256)&&(ocp_entries==256)) {
- ocptables = (int **) xrealloc(ocptables, 65536);
- ocp_entries=65536;
- }
- undumpthings(sizeword,1);
- ocptables[ocp_number] =
- (int *) xmalloc((1+sizeword)*sizeof(int));
- ocptables[ocp_number][0] = sizeword;
- undumpthings(ocptables[ocp_number][1], sizeword);
-}
diff --git a/Build/source/texk/web2c/omegadir/omega.defines b/Build/source/texk/web2c/omegadir/omega.defines
deleted file mode 100644
index c47c515314f..00000000000
--- a/Build/source/texk/web2c/omegadir/omega.defines
+++ /dev/null
@@ -1,74 +0,0 @@
-{ omega.defines: Web declarations of Omega
-
-This file is part of Omega,
-which is based on the web2c distribution of TeX,
-
-Copyright (c) 1994--2001, 2008 John Plaice and Yannis Haralambous
-
-Omega is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-Omega is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Omega; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-}
-
-@define function newinputln ();
-@define function getfilemode ();
-@define function newinputline ();
-@define function neweqtb ();
-@define function neweqtbint ();
-@define function neweqtbsc ();
-@define function newequiv ();
-@define function newequiv1 ();
-@define function neweqlevel ();
-@define function neweqtype ();
-
-@define function newhashnext ();
-@define function newhashtext ();
-@define function newxeqlevel ();
-
-@define procedure odateandtime ();
-@define procedure allocatefonttable ();
-@define procedure dumpfonttable ();
-@define procedure undumpfonttable ();
-@define procedure allocatefontsorttable ();
-@define procedure dumpfontsorttable ();
-@define procedure undumpfontsorttable ();
-@define procedure allocateocptable ();
-@define procedure dumpocptable ();
-@define procedure undumpocptable ();
-@define procedure initeqtbtable;
-@define procedure dumpeqtbtable;
-@define procedure undumpeqtbtable;
-@define procedure setneweqtb ();
-@define procedure setneweqtbint ();
-@define procedure setneweqtbsc ();
-@define procedure setequiv ();
-@define procedure setequiv1 ();
-@define procedure seteqtype ();
-@define procedure seteqlevel ();
-@define procedure btestin ;
-@define procedure runexternalocp ();
-@define procedure changeomegafilename ();
-
-@define procedure sethashnext ();
-@define procedure sethashtext ();
-@define procedure setintzero ();
-@define procedure setintone ();
-
-@define var fonttables;
-@define var fontsorttables;
-@define var ocptables;
-
-@define var ocptemp;
-
-{ end of omega.defines }
diff --git a/Build/source/texk/web2c/omegadir/omega.mk b/Build/source/texk/web2c/omegadir/omega.mk
deleted file mode 100644
index f11b6783045..00000000000
--- a/Build/source/texk/web2c/omegadir/omega.mk
+++ /dev/null
@@ -1,225 +0,0 @@
-# Makefile fragment for Omega and web2c. --infovore@xs4all.nl. Public domain.
-# This fragment contains the parts of the makefile that are most likely to
-# differ between releases of Omega.
-
-Makefile: omegadir/omega.mk
-
-omegafonts_programs = @OMEGA@ omegafonts/omfonts
-otps_programs = @OMEGA@ otps/otp2ocp otps/outocp
-omegafonts = @OMEGA@ omegafonts
-otps = @OMEGA@ otps
-
-odvicopy = odvicopy
-odvitype = odvitype
-otangle = otangle
-omegaware_c = odvicopy.c odvitype.c otangle.c
-omegaware_programs = $(otangle) $(odvicopy) $(odvitype)
-
-omega_programs = $(omega) $(otangle) $(odvicopy) $(odvitype) \
- $(otps_programs) $(omegafonts_programs)
-
-# The otangle used in the build is not be the otangle we build if we are
-# cross-compiling.
-OTANGLE = @OTANGLE@
-
-# Omegaware
-
-odvicopy: odvicopy.o
- $(kpathsea_link) odvicopy.o $(LOADLIBES)
-odvicopy.c odvicopy.h: $(web2c_common) $(web2c_programs) odvicopy.p
- $(web2c) odvicopy
-odvicopy.p: tangle omegaware/odvicopy.web omegaware/odvicopy.ch
- WEBINPUTS=$(srcdir)/omegaware $(TANGLE) odvicopy odvicopy
-check: odvicopy-check
-odvicopy-check: odvicopy
-# ./odvicopy $(srcdir)/tests/story tests/xstory.dvi
-## Redirect stderr so the terminal output will end up in the log file.
-# (TFMFONTS=$(srcdir)/tests: ./odvicopy <$(srcdir)/tests/pplr.dvi \
-# >tests/xpplr.dvi) 2>&1
-clean:: odvicopy-clean
-odvicopy-clean:
- $(LIBTOOL) --mode=clean $(RM) odvicopy
- rm -f odvicopy.o odvicopy.c odvicopy.h odvicopy.p
-# rm -f tests/xstory.dvi tests/xpplr.dvi
-
-odvitype: odvitype.o
- $(kpathsea_link) odvitype.o $(LOADLIBES)
-odvitype.c odvitype.h: $(web2c_common) $(web2c_programs) odvitype.p
- $(web2c) odvitype
-odvitype.p: tangle omegaware/odvitype.web omegaware/odvitype.ch
- WEBINPUTS=$(srcdir)/omegaware $(TANGLE) odvitype odvitype
-check: odvitype-check
-odvitype-check: odvitype
-# ./odvitype -show-opcodes $(srcdir)/tests/story >tests/xstory.dvityp
-# ./odvitype --p=\*.\*.2 $(srcdir)/tests/pagenum.dvi >tests/xpagenum.typ
-clean:: odvitype-clean
-odvitype-clean:
- $(LIBTOOL) --mode=clean $(RM) odvitype
- rm -f odvitype.o odvitype.c odvitype.h odvitype.p
-# rm -f tests/xstory.dvityp tests/xpagenum.typ
-
-otangle: otangle.o
- $(kpathsea_link) otangle.o $(LOADLIBES)
-otangle.c otangle.h: $(web2c_common) $(web2c_programs) otangle.p
- $(web2c) otangle
-otangle.p: tangle omegaware/otangle.web omegaware/otangle.ch
- WEBINPUTS=$(srcdir)/omegaware $(TANGLE) otangle otangle
-check: otangle-check
-otangle-check: otangle
-# otangling omega is a good check already
-clean:: otangle-clean
-otangle-clean:
- $(LIBTOOL) --mode=clean $(RM) otangle
- rm -f otangle.o otangle.c otangle.h otangle.p
-
-#
-# Omega itself.
-
-# We build omega
-omega = @OMEGA@ omega
-
-# The C sources.
-omega_c = omegaini.c omega0.c omega1.c omega2.c omega3.c
-omega_o = omegaini.o omega0.o omega1.o omega2.o \
- omegaextra.o omega.o omegabis.o \
- omega3.o omega-pool.o
-
-# Linking
-omega: $(omega_o)
- $(kpathsea_link) $(omega_o) $(socketlibs) $(LOADLIBES)
-
-# The C files
-$(omega_c) omegacoerce.h omegad.h: omega.p $(web2c_texmf)
- $(web2c) omega
-omegaextra.c: lib/texmfmp.c
- sed s/TEX-OR-MF-OR-MP/omega/ $(srcdir)/lib/texmfmp.c >$@
-# Additional C files, just copy them.
-omega.c: omegadir/omega.c
- -rm -f $@
- cp $(srcdir)/omegadir/omega.c $@
-omegabis.c: omegadir/omegabis.c
- -rm -f $@
- cp $(srcdir)/omegadir/omegabis.c $@
-omegamem.h: omegadir/omegamem.h
- -rm -f $@
- cp $(srcdir)/omegadir/omegamem.h $@
-
-# The Pascal file
-omega.p omega.pool: otangle omega.web omega.ch
- $(OTANGLE) omega.web omega.ch
-
-# Generation of the web and ch files.
-omega.web: tie tex.web omegadir/omega.mk
-omega.web: omegadir/omnode.ch
-omega.web: omegadir/om16bit.ch
-omega.web: omegadir/omstr.ch
-omega.web: omegadir/omfont.ch
-omega.web: omegadir/omchar.ch
-omega.web: omegadir/omfi.ch
-omega.web: omegadir/ompar.ch
-omega.web: omegadir/omocp.ch
-omega.web: omegadir/omfilter.ch
-omega.web: omegadir/omtrans.ch
-omega.web: omegadir/omdir.ch
-omega.web: omegadir/omcprt.ch
-omega.web: omegadir/omxml.ch
- $(TIE) -m omega.web $(srcdir)/tex.web \
- $(srcdir)/omegadir/omnode.ch \
- $(srcdir)/omegadir/om16bit.ch \
- $(srcdir)/omegadir/omstr.ch \
- $(srcdir)/omegadir/omfont.ch \
- $(srcdir)/omegadir/omchar.ch \
- $(srcdir)/omegadir/omfi.ch \
- $(srcdir)/omegadir/ompar.ch \
- $(srcdir)/omegadir/omocp.ch \
- $(srcdir)/omegadir/omfilter.ch \
- $(srcdir)/omegadir/omtrans.ch \
- $(srcdir)/omegadir/omdir.ch \
- $(srcdir)/omegadir/omcprt.ch \
- $(srcdir)/omegadir/omxml.ch
-omega.ch: tie omega.web omegadir/omega.mk
-omega.ch: omegadir/comnode.ch
-omega.ch: omegadir/com16bit.ch
-omega.ch: omegadir/comstr.ch
-omega.ch: omegadir/comfont.ch
-omega.ch: omegadir/comchar.ch
-omega.ch: omegadir/comfi.ch
-omega.ch: omegadir/compar.ch
-omega.ch: omegadir/comocp.ch
-omega.ch: omegadir/comfilter.ch
-omega.ch: omegadir/comtrans.ch
-omega.ch: omegadir/comdir.ch
-omega.ch: omegadir/comxml.ch
-omega.ch: omegadir/comsrcspec.ch
- $(TIE) -c omega.ch omega.web \
- $(srcdir)/omegadir/comnode.ch \
- $(srcdir)/omegadir/com16bit.ch \
- $(srcdir)/omegadir/comstr.ch \
- $(srcdir)/omegadir/comfont.ch \
- $(srcdir)/omegadir/comchar.ch \
- $(srcdir)/omegadir/comfi.ch \
- $(srcdir)/omegadir/compar.ch \
- $(srcdir)/omegadir/comocp.ch \
- $(srcdir)/omegadir/comfilter.ch \
- $(srcdir)/omegadir/comtrans.ch \
- $(srcdir)/omegadir/comdir.ch \
- $(srcdir)/omegadir/comxml.ch \
- $(srcdir)/omegadir/comsrcspec.ch
-
-omega-pool.c: omega.pool $(makecpool)
- $(makecpool) omega.pool omegadir/omega-pool.h >$@ || rm -f $@
-
-# Check: right now all we do is build the format.
-check: @OMEGA@ omega-check
-omega-check: omega omega.fmt
-# Cleaning up from building omega
-clean:: omega-clean
-omega-clean:
- $(LIBTOOL) --mode=clean $(RM) omega
- rm -f $(omega_c) omegaextra.c omegacoerce.h omegad.h
- rm -f omega.c omegabis.c omegamem.h
- rm -f omega.p omega.pool omega.web omega.ch
-
-#
-# Dumps.
-all_ofmts = @FMU@ omega.fmt $(ofmts)
-
-dumps: @OMEGA@ ofmts
-ofmts: $(all_ofmts)
-
-ofmtdir = $(web2cdir)/omega
-$(ofmtdir)::
- $(SHELL) $(top_srcdir)/../mkinstalldirs $(ofmtdir)
-
-omega.fmt: omega
- $(dumpenv) $(MAKE) progname=omega files="omega.tex" prereq-check
- $(dumpenv) ./omega --progname=omega --jobname=omega --ini \\input omega.tex \\dump </dev/null
-
-lambda.fmt: omega
- $(dumpenv) $(MAKE) progname=lambda files="lambda.tex" prereq-check
- $(dumpenv) ./omega --progname=lambda --jobname=lambda --ini \\input lambda.tex </dev/null
-
-
-#
-# Some additional programs for Omega: the programs themselves are named
-# in the variable otps_programs, defined above.
-otps/otp2ocp:
- cd otps && $(MAKE) $(common_makeargs) otp2ocp
-otps/outocp:
- cd otps && $(MAKE) $(common_makeargs) outocp
-omegafonts/omfonts:
- cd omegafonts && $(MAKE) $(common_makeargs) omfonts
-
-#
-# Installation.
-install-omega: install-omega-exec
-install-programs: @OMEGA@ install-omega-exec
-install-omega-exec: $(omega_programs) $(bindir) install-omega-links
- for p in omega; do $(INSTALL_LIBTOOL_PROG) $$p $(bindir); done
- cd otps && $(MAKE) $(install_makeargs) install-programs
- cd omegafonts && $(MAKE) $(install_makeargs) install-programs
-
-install-omega-links:
- cd omegafonts && $(MAKE) $(install_makeargs) install-links
-
-# end of omega.mk
diff --git a/Build/source/texk/web2c/omegadir/omega.version b/Build/source/texk/web2c/omegadir/omega.version
deleted file mode 100644
index 3dd98ba5c23..00000000000
--- a/Build/source/texk/web2c/omegadir/omega.version
+++ /dev/null
@@ -1 +0,0 @@
-1.23.2.3
diff --git a/Build/source/texk/web2c/omegadir/omegabis.c b/Build/source/texk/web2c/omegadir/omegabis.c
deleted file mode 100644
index c460f77148c..00000000000
--- a/Build/source/texk/web2c/omegadir/omegabis.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/* omegabis.c: C routines to support external OCPs
-
-This file is part of Omega,
-which is based on the web2c distribution of TeX,
-
-Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-Copyright (c) 2002 Behdad Esfahbod
-Copyright (c) 2002 Roozbeh Pournader
-
-Omega is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-Omega is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Omega; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-*/
-#define EXTERN extern
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#ifndef WIN32
-#include <unistd.h>
-#endif /* not WIN32 */
-#include "omegad.h"
-
-#if 1
-
-void
-runexternalocp P1C(string, external_ocp_name)
-{
- char *in_file_name;
- char *out_file_name;
- FILE *in_file;
- FILE *out_file;
- int in_file_fd;
- int out_file_fd;
- char command_line[400];
- int i;
- unsigned c;
- int c_in;
-#ifdef WIN32
- char *tempenv;
-
-#define null_string(s) ((s == NULL) || (*s == '\0'))
-
- tempenv = getenv("TMPDIR");
- if (null_string(tempenv))
- tempenv = getenv("TEMP");
- if (null_string(tempenv))
- tempenv = getenv("TMP");
- if (null_string(tempenv))
- tempenv = "c:/tmp"; /* "/tmp" is not good if we are on a CD-ROM */
- in_file_name = concat(tempenv, "/__omega__in__XXXXXX");
- mktemp(in_file_name);
- in_file = fopen(in_file_name, FOPEN_WBIN_MODE);
-#else
-
-#if HAVE_MKSTEMP
- in_file_name = xstrdup("/tmp/__omega__in__XXXXXX");
- in_file_fd = mkstemp(in_file_name);
- in_file = fdopen(in_file_fd, FOPEN_WBIN_MODE);
-#else
-#if HAVE_MKTEMP
- in_file_name = xstrdup("/tmp/__omega__in__XXXXXX");
- mktemp(in_file_name);
-#else
- in_file_name = xstrdup(tmpnam(NULL));
-#endif /* HAVE_MKTEMP */
- in_file = fopen(in_file_name, FOPEN_WBIN_MODE);
-#endif /* HAVE_MKSTEMP */
-
-#endif /* WIN32 */
-
- if (in_file == NULL)
- fprintf(stderr, "omega: error opening file: %s\n", strerror(errno));
-
- for (i=1; i<=otpinputend; i++) {
- c = otpinputbuf[i];
- if (c>0xffff) {
- fprintf(stderr, "Omega does not currently support 31-bit chars\n");
- exit(1);
- }
- if (c<0x80) {
- fputc(c & 0x7f, in_file);
- } else if (c<0x800) {
- fputc(0xc0 | ((c>>6) & 0x1f), in_file);
- fputc(0x80 | (c & 0x3f), in_file);
- } else if (c<0x10000) {
- fputc(0xe0 | ((c>>12) & 0xf), in_file);
- fputc(0x80 | ((c>>6) & 0x3f), in_file);
- fputc(0x80 | (c & 0x3f), in_file);
- } else if (c<0x200000) {
- fputc(0xf0 | ((c>>18) & 0x7), in_file);
- fputc(0x80 | ((c>>12) & 0x3f), in_file);
- fputc(0x80 | ((c>>6) & 0x3f), in_file);
- fputc(0x80 | (c & 0x3f), in_file);
- } else if (c<0x4000000) {
- fputc(0xf8 | ((c>>24) & 0x3), in_file);
- fputc(0x80 | ((c>>18) & 0x3f), in_file);
- fputc(0x80 | ((c>>12) & 0x3f), in_file);
- fputc(0x80 | ((c>>6) & 0x3f), in_file);
- fputc(0x80 | (c & 0x3f), in_file);
- } else { /* c>=0x4000000 */
- fputc(0xfc | ((c>>30) & 0x1), in_file);
- fputc(0x80 | ((c>>24) & 0x3f), in_file);
- fputc(0x80 | ((c>>18) & 0x3f), in_file);
- fputc(0x80 | ((c>>12) & 0x3f), in_file);
- fputc(0x80 | ((c>>6) & 0x3f), in_file);
- fputc(0x80 | (c & 0x3f), in_file);
- }
- }
- fclose(in_file);
-
-#define advance_cin do { if ((c_in = fgetc(out_file)) == -1) { \
- fprintf(stderr, "File contains bad char\n"); \
- goto end_of_while; \
- } } while (0)
-
-#ifdef WIN32
- out_file_name = concat(tempenv, "/__omega__out__XXXXXX");
- mktemp(out_file_name);
- out_file = fopen(out_file_name, FOPEN_RBIN_MODE);
-#else
-
-#if HAVE_MKSTEMP
- out_file_name = xstrdup("/tmp/__omega__out__XXXXXX");
- out_file_fd = mkstemp(out_file_name);
- out_file = fdopen(out_file_fd, FOPEN_RBIN_MODE);
-#else
-#if HAVE_MKTEMP
- out_file_name = xstrdup("/tmp/__omega__out__XXXXXX");
- mktemp(out_file_name);
-#else
- out_file_name = xstrdup(tmpnam(NULL));
-#endif /* HAVE_MKTEMP */
- out_file = fopen(out_file_name, FOPEN_RBIN_MODE);
-#endif /* HAVE_MKSTEMP */
-
-#endif /* WIN32 */
-
- if (out_file == NULL)
- fprintf(stderr, "omega: error opening file: %s\n", strerror(errno));
-
- sprintf(command_line, "%s <%s >%s\n",
- external_ocp_name+1, in_file_name, out_file_name);
- system(command_line);
- otpoutputend = 0;
- otpoutputbuf[otpoutputend] = 0;
- while ((c_in = fgetc(out_file)) != -1) {
- if (c_in<0x80) {
- c = c_in & 0x7f;
- } else if (c_in<0xe0) {
- c = (c_in & 0x1f) << 6;
- advance_cin;
- c |= c_in & 0x3f;
- } else if (c_in<=0xf0) {
- c = (c_in & 0xf) << 12;
- advance_cin;
- c |= (c_in & 0x3f) << 6;
- advance_cin;
- c |= c_in & 0x3f;
- } else if (c_in<0xf8) {
- c = (c_in & 0x7) << 18;
- advance_cin;
- c |= (c_in & 0x3f) << 12;
- advance_cin;
- c |= (c_in & 0x3f) << 6;
- advance_cin;
- c |= c_in & 0x3f;
- } else if (c_in<0xfc) {
- c = (c_in & 0x3) << 24;
- advance_cin;
- c |= (c_in & 0x3f) << 18;
- advance_cin;
- c |= (c_in & 0x3f) << 12;
- advance_cin;
- c |= (c_in & 0x3f) << 6;
- advance_cin;
- c |= c_in & 0x3f;
- } else { /* c>=0xfc */
- c = (c_in & 0x1) << 30;
- advance_cin;
- c |= (c_in & 0x3f) << 24;
- advance_cin;
- c |= (c_in & 0x3f) << 18;
- advance_cin;
- c |= (c_in & 0x3f) << 12;
- advance_cin;
- c |= (c_in & 0x3f) << 6;
- advance_cin;
- c |= c_in & 0x3f;
- }
- otpoutputbuf[++otpoutputend] = c;
- }
-end_of_while:
- fclose(out_file);
-
- remove(in_file_name);
- remove(out_file_name);
- free(in_file_name);
- free(out_file_name);
-}
-
-#else
-
-void
-runexternalocp P1C(string, external_ocp_name)
-{
- int outpipes[2], inpipes[2];
- char *outbuf;
- char *inbuf;
- int n;
- int chars_read_in, chars_to_go_out;
- int myerrno;
-
-#ifdef WIN32
- STARTUPINFO si;
- PROCESS_INFORMATION pi;
- HANDLE hIn, hOut, hPipeIn, hPipeOut;
- SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
- DWORD ret = 0;
-
- /* Make pipes to send data from the parent to the child. The parent
- writes to outpipes[0], and the child reads from outpipes[1]. */
- _pipe (outpipes, 0, _O_BINARY);
- /* Make pipes to send data from the child to the parent. The child
- writes to inpipes[0], and the parent reads from inpipes[1]. */
- _pipe (inpipes, 0, _O_BINARY);
-
- ZeroMemory( &si, sizeof(STARTUPINFO) );
- si.cb = sizeof(STARTUPINFO);
- si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
- si.wShowWindow = SW_SHOW;
- si.hStdInput = _get_osfhandle(outpipes[0]);
- si.hStdOutput = _get_osfhandle(inpipes[1]);
- si.hStdError = _get_osfhandle(_fileno(stderr));
-
- /* Close unnecessary pipes. */
- close (outpipes[1]);
- close (inpipes[0]);
-
- if (CreateProcess(external_ocp_name+1,
- NULL, /* Use lpApplicationName */
- NULL,
- NULL,
- TRUE, /* bInheritHandles */
- 0,
- NULL,
- NULL,
- &si,
- &pi) == 0) {
- fprintf(stderr, "Failed to create process for %s (Error %d).\n", external_ocp_name+1, GetLastError());
- return;
- }
-
-#else /* ! WIN32 */
-
- /* Make pipes to send data from the parent to the child. The parent
- writes to outpipes[0], and the child reads from outpipes[1]. */
- pipe (outpipes);
- /* Make pipes to send data from the child to the parent. The child
- writes to inpipes[0], and the parent reads from inpipes[1]. */
- pipe (inpipes);
-
- /* For a child process. */
- if (fork () == 0)
- {
- /* This part is executed by the child process. It translates
- lower case letters to upper case. */
-
- char *prog = external_ocp_name+1;
- char *args[] = {external_ocp_name+1, NULL};
-
- /* Close unnecessary pipes. They are for the parent. */
- close (outpipes[1]);
- close (inpipes[0]);
-
- /* Connect pipes to stdin and stdout. */
- dup2 (outpipes[0], 0);
- dup2 (inpipes[1], 1);
-
- /* Overlays a new process image on an old process. */
- execv (prog, args);
-
- /* We should never reach here. */
- }
- else
- {
- /* Close unnecessary pipes. They are for the child. */
- close (outpipes[0]);
- close (inpipes[1]);
-
-#endif /* WIN32 */
-
-/* Here is the interesting part */
- outbuf = ((char *) otpinputbuf)+2;
- inbuf = ((char *) otpoutputbuf)+2;
- chars_to_go_out = 2*otpinputend;
- chars_read_in = 0;
- while ((n = write (outpipes[1], outbuf, chars_to_go_out))>0) {
-fprintf(stderr, "Wrote (1) %d characters\n", n);
- outbuf+=n;
- chars_to_go_out-=n;
- if (chars_to_go_out==0) goto done_writing;
-/*
- n = read (inpipes[0], inbuf, 1024);
-fprintf(stderr, "Read (1) %d characters\n", n);
- inbuf+=n;
- chars_read_in+=n;
-*/
- }
-fprintf(stderr, "Wrote (2) %d characters\n", n);
-
-done_writing:
- close (outpipes[1]);
- while ((n = read (inpipes[0], inbuf, 1024)) > 0) {
-fprintf(stderr, "Read (2) %d characters\n", n);
- inbuf+=n;
- chars_read_in+=n;
- }
-fprintf(stderr, "Read (3) %d characters\n", n);
- otpoutputend = chars_read_in / 2;
-
- close (inpipes[0]);
-#ifndef WIN32
- }
-#endif /* not WIN32 */
-}
-
-#endif
diff --git a/Build/source/texk/web2c/omegadir/omegaextra.h b/Build/source/texk/web2c/omegadir/omegaextra.h
deleted file mode 100644
index 87c80f3a74e..00000000000
--- a/Build/source/texk/web2c/omegadir/omegaextra.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* omegaextra.h: banner etc. for Omega.
-
- This is included by Omega, from ../omegaextra.c
- (generated from ../lib/texmfmp.c).
-
-This file is part of Omega,
-which is based on the web2c distribution of TeX,
-
-Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-
-Omega is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-Omega is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Omega; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-*/
-
-#define BANNER "This is Omega, Version 3.1415926-1.23.2.3"
-#define COPYRIGHT_HOLDER "J. Plaice and Y. Haralambous"
-#define AUTHOR NULL
-#define PROGRAM_HELP OMEGAHELP
-#define BUG_ADDRESS "tex-k@tug.org"
-#define DUMP_VAR TEXformatdefault
-#define DUMP_LENGTH_VAR formatdefaultlength
-#define DUMP_OPTION "fmt"
-#define DUMP_EXT ".fmt"
-#define INPUT_FORMAT kpse_tex_format
-#define INI_PROGRAM "iniomega"
-#define VIR_PROGRAM "viromega"
diff --git a/Build/source/texk/web2c/omegadir/omegamem.h b/Build/source/texk/web2c/omegadir/omegamem.h
deleted file mode 100644
index 9084d96147b..00000000000
--- a/Build/source/texk/web2c/omegadir/omegamem.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* omegamem.h: C declarations for types and accessing routines in omega.c
-
-This file is part of the Omega project, which
-is based on the web2c distribution of TeX.
-
-Copyright (c) 1994--2000 John Plaice and Yannis Haralambous
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-
-/* argument(s) added to function, by team 18 */
-extern boolean new_input_line (FILE *, halfword);
-/* argument(s) added to function, by team 18 */
-extern boolean newinputln (FILE*, halfword, halfword, boolean);
-extern int getc_two ();
-/* argument(s) added to function, by team 18 */
-extern int getfilemode (FILE*, int);
-extern void ungetc_two ();
-extern int ocptemp;
-
-#define newinputline(stream, mode, flag) new_input_line (stream, mode)
-
-extern memoryword **fonttables;
-extern memoryword **fontsorttables;
-extern int **ocptables;
-
-typedef struct hashw
-{
- integer p;
- struct hashw *ptr;
- memoryword mw;
-} hashword;
-
-extern hashword hashtable[];
-/* argument(s) added to function, by team 18 */
-extern hashword *createhashpos(int);
-/* argument(s) added to function, by team 18 */
-extern hashword *createeqtbpos(int);
-/* argument(s) added to function, by team 18 */
-extern hashword *createxeqlevel(int);
-extern void inithhashtable();
-extern void dumphhashtable();
-extern void undumphhashtable();
-/* argument(s) added to function, by team 18 */
-extern void allocatefonttable(int,int);
-/* argument(s) added to function, by team 18 */
-extern void dumpfonttable(int,int);
-/* argument(s) added to function, by team 18 */
-extern void undumpfonttable(int);
-/* argument(s) added to function, by team 18 */
-extern void allocatefontsorttable(int,int);
-/* argument(s) added to function, by team 18 */
-extern void dumpfontsorttable(int , int);
-/* argument(s) added to function, by team 18 */
-extern void undumpfontsorttable(int);
-/* argument(s) added to function, by team 18 */
-extern void allocateocptable(int,int);
-/* argument(s) added to function, by team 18 */
-extern void dumpocptable(int);
-/* argument(s) added to function, by team 18 */
-extern void undumpocptable(int);
-/* argument(s) added to function, by team 18 */
-extern void odateandtime(int, int, int, int );
-extern void btestin();
-extern void runexternalocp(char *);
-
-#define initeqtbtable() inithhashtable();
-#define dumpeqtbtable() dumphhashtable();
-#define undumpeqtbtable() undumphhashtable();
-
-#define HASHTABLESIZE 23123
-#define neweqtb(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw) : \
- (createeqtbpos(a)->mw))
-#define neweqtbint(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint) : \
- (createeqtbpos(a)->mw.cint))
-#define neweqtbsc(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint) : \
- (createeqtbpos(a)->mw.cint))
-#define newequiv(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.rh) : \
- (createeqtbpos(a)->mw.hh.rh))
-#define newequiv1(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint1) : \
- (createeqtbpos(a)->mw.cint1))
-#define neweqlevel(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.b1) : \
- (createeqtbpos(a)->mw.hh.b1))
-#define neweqtype(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.b0) : \
- (createeqtbpos(a)->mw.hh.b0))
-#define setneweqtb(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw=v) : \
- (createeqtbpos(a)->mw=v))
-#define setneweqtbint(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint=v) : \
- (createeqtbpos(a)->mw.cint=v))
-#define setneweqtbsc(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint=v) : \
- (createeqtbpos(a)->mw.cint=v))
-#define setequiv(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.rh=v) : \
- (createeqtbpos(a)->mw.hh.rh=v))
-#define setequiv1(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint1=v) : \
- (createeqtbpos(a)->mw.cint1=v))
-#define seteqlevel(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.b1=v) : \
- (createeqtbpos(a)->mw.hh.b1=v))
-#define seteqtype(a,v) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.b0=v) : \
- (createeqtbpos(a)->mw.hh.b0=v))
-
-#define newhashnext(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.v.LH) : \
- (createhashpos(a)->mw.hh.v.LH))
-#define newhashtext(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.v.RH) : \
- (createhashpos(a)->mw.hh.v.RH))
-#define sethashnext(a,d) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.v.LH=d) : \
- (createhashpos(a)->mw.hh.v.LH=d))
-#define sethashtext(a,d) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.hh.v.RH=d) : \
- (createhashpos(a)->mw.hh.v.RH=d))
-
-#define newxeqlevel(a) (((a)==hashtable[(a)%HASHTABLESIZE].p) ? \
- (hashtable[(a)%HASHTABLESIZE].mw.cint) : \
- (createxeqlevel(a)->mw.cint))
-
-#define setintzero(w,a) ((w).cint=(a))
-#define setintone(w,a) ((w).cint1=(a))
diff --git a/Build/source/texk/web2c/omegadir/omfi.ch b/Build/source/texk/web2c/omegadir/omfi.ch
deleted file mode 100644
index d7f4bbe959f..00000000000
--- a/Build/source/texk/web2c/omegadir/omfi.ch
+++ /dev/null
@@ -1,246 +0,0 @@
-% omfi.ch: Primitives for extra level of infinity.
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [10] m.135 l.2878 - Omega fi order of infinity
-specifies the order of infinity to which glue setting applies (|normal|,
-|fil|, |fill|, or |filll|). The |subtype| field is not used.
-@y
-specifies the order of infinity to which glue setting applies (|normal|,
-|sfi|, |fil|, |fill|, or |filll|). The |subtype| field is not used.
-@z
-%---------------------------------------
-@x [10] m.150 l.3136 - Omega fi order of infinity
-orders of infinity (|normal|, |fil|, |fill|, or |filll|)
-@y
-orders of infinity (|normal|, |sfi|, |fil|, |fill|, or |filll|)
-@z
-%---------------------------------------
-@x [10] m.150 l.3145 - Omega fi order of infinity
-@d fil=1 {first-order infinity}
-@d fill=2 {second-order infinity}
-@d filll=3 {third-order infinity}
-@y
-@d sfi=1 {first-order infinity}
-@d fil=2 {second-order infinity}
-@d fill=3 {third-order infinity}
-@d filll=4 {fourth-order infinity}
-@z
-%---------------------------------------
-@x [10] m.150 l.3150 - Omega fi order of infinity
-@!glue_ord=normal..filll; {infinity to the 0, 1, 2, or 3 power}
-@y
-@!glue_ord=normal..filll; {infinity to the 0, 1, 2, 3, or 4 power}
-@z
-%---------------------------------------
-@x [11] m.162 l.3296 - Omega fi order of infinity
-@d fil_glue==zero_glue+glue_spec_size {\.{0pt plus 1fil minus 0pt}}
-@y
-@d sfi_glue==zero_glue+glue_spec_size {\.{0pt plus 1fi minus 0pt}}
-@d fil_glue==sfi_glue+glue_spec_size {\.{0pt plus 1fil minus 0pt}}
-@z
-%---------------------------------------
-@x [11] m.164 l.3296 - Omega fi order of infinity
-stretch(fil_glue):=unity; stretch_order(fil_glue):=fil;@/
-@y
-stretch(sfi_glue):=unity; stretch_order(sfi_glue):=sfi;@/
-stretch(fil_glue):=unity; stretch_order(fil_glue):=fil;@/
-@z
-%---------------------------------------
-@x [12] m.177 l.3591 - Omega fi order of infinity
- begin print("fil");
- while order>fil do
-@y
- begin print("fi");
- while order>sfi do
-@z
-%---------------------------------------
-@x [26] m.454 l.8924 - Omega fi order of infinity
-if scan_keyword("fil") then
-@.fil@>
- begin cur_order:=fil;
-@y
-if scan_keyword("fi") then
-@.fil@>
- begin cur_order:=sfi;
-@z
-%---------------------------------------
-@x [33] m.650 l.12877 - Omega fi order of infinity
-total_stretch[fil]:=0; total_shrink[fil]:=0;
-@y
-total_stretch[sfi]:=0; total_shrink[sfi]:=0;
-total_stretch[fil]:=0; total_shrink[fil]:=0;
-@z
-%---------------------------------------
-@x [33] m.659 l.12996 - Omega fi order of infinity
-else if total_stretch[fil]<>0 then o:=fil
-@y
-else if total_stretch[fil]<>0 then o:=fil
-else if total_stretch[sfi]<>0 then o:=sfi
-@z
-%---------------------------------------
-@x [33] m.665 l.13061 - Omega fi order of infinity
-else if total_shrink[fil]<>0 then o:=fil
-@y
-else if total_shrink[fil]<>0 then o:=fil
-else if total_shrink[sfi]<>0 then o:=sfi
-@z
-%---------------------------------------
-@x [38] m.822 l.16135 - Omega fi order of infinity
-contains six scaled numbers, since it must record the net change in glue
-stretchability with respect to all orders of infinity. The natural width
-difference appears in |mem[q+1].sc|; the stretch differences in units of
-pt, fil, fill, and filll appear in |mem[q+2..q+5].sc|; and the shrink difference
-appears in |mem[q+6].sc|. The |subtype| field of a delta node is not used.
-
-@d delta_node_size=7 {number of words in a delta node}
-@y
-contains seven scaled numbers, since it must record the net change in glue
-stretchability with respect to all orders of infinity. The natural width
-difference appears in |mem[q+1].sc|; the stretch differences in units of
-pt, sfi, fil, fill, and filll appear in |mem[q+2..q+6].sc|; and the shrink
-difference appears in |mem[q+7].sc|. The |subtype| field of a delta node
-is not used.
-
-@d delta_node_size=8 {number of words in a delta node}
-@z
-%---------------------------------------
-@x [38] m.823 l.16144 - Omega fi order of infinity
-@ As the algorithm runs, it maintains a set of six delta-like registers
-for the length of the line following the first active breakpoint to the
-current position in the given hlist. When it makes a pass through the
-active list, it also maintains a similar set of six registers for the
-@y
-@ As the algorithm runs, it maintains a set of seven delta-like registers
-for the length of the line following the first active breakpoint to the
-current position in the given hlist. When it makes a pass through the
-active list, it also maintains a similar set of seven registers for the
-@z
-%---------------------------------------
-@x [38] m.823 l.16154 - Omega fi order of infinity
-k:=1 to 6 do cur_active_width[k]:=cur_active_width[k]+mem[q+k].sc|};$$ and we
-want to do this without the overhead of |for| loops. The |do_all_six|
-macro makes such six-tuples convenient.
-
-@d do_all_six(#)==#(1);#(2);#(3);#(4);#(5);#(6)
-
-@<Glob...@>=
-@!active_width:array[1..6] of scaled;
- {distance from first active node to~|cur_p|}
-@!cur_active_width:array[1..6] of scaled; {distance from current active node}
-@!background:array[1..6] of scaled; {length of an ``empty'' line}
-@!break_width:array[1..6] of scaled; {length being computed after current break}
-@y
-k:=1 to 7 do cur_active_width[k]:=cur_active_width[k]+mem[q+k].sc|};$$ and we
-want to do this without the overhead of |for| loops. The |do_all_six|
-macro makes such six-tuples convenient.
-
-@d do_all_six(#)==#(1);#(2);#(3);#(4);#(5);#(6);#(7)
-
-@<Glo...@>=
-@!active_width:array[1..7] of scaled;
- {distance from first active node to~|cur_p|}
-@!cur_active_width:array[1..7] of scaled; {distance from current active node}
-@!background:array[1..7] of scaled; {length of an ``empty'' line}
-@!break_width:array[1..7] of scaled; {length being computed after current break}
-@z
-%---------------------------------------
-@x [38] m.827 l.16242 - Omega fi order of infinity
-background[2]:=0; background[3]:=0; background[4]:=0; background[5]:=0;@/
-@y
-background[2]:=0; background[3]:=0; background[4]:=0; background[5]:=0;@/
-background[6]:=0;@/
-@z
-%---------------------------------------
-@x [38] m.827 l.16260 - Omega fi order of infinity
-background[6]:=shrink(q)+shrink(r);
-@y
-background[7]:=shrink(q)+shrink(r);
-@z
-%---------------------------------------
-@x [38] m.838 l.16470 - Omega fi order of infinity
-break_width[6]:=break_width[6]-shrink(v);
-@y
-break_width[7]:=break_width[7]-shrink(v);
-@z
-%---------------------------------------
-@x [38] m.852 l.16713 - Omega fi order of infinity
-subarray |cur_active_width[2..5]|, in units of points, fil, fill, and filll.
-@y
-subarray |cur_active_width[2..6]|, in units of points, sfi, fil, fill and filll.
-@z
-%---------------------------------------
-@x [38] m.852 l.16722 - Omega fi order of infinity
-if (cur_active_width[3]<>0)or(cur_active_width[4]<>0)or@|
- (cur_active_width[5]<>0) then
-@y
-if (cur_active_width[3]<>0)or(cur_active_width[4]<>0)or@|
- (cur_active_width[5]<>0)or(cur_active_width[6]<>0) then
-@z
-%---------------------------------------
-@x [38] m.853 l.16738 - Omega fi order of infinity
-we can shrink the line from |r| to |cur_p| by at most |cur_active_width[6]|.
-
-@<Set the value of |b| to the badness for shrinking...@>=
-begin if -shortfall>cur_active_width[6] then b:=inf_bad+1
-else b:=badness(-shortfall,cur_active_width[6]);
-@y
-we can shrink the line from |r| to |cur_p| by at most |cur_active_width[7]|.
-
-@<Set the value of |b| to the badness for shrinking...@>=
-begin if -shortfall>cur_active_width[7] then b:=inf_bad+1
-else b:=badness(-shortfall,cur_active_width[7]);
-@z
-%---------------------------------------
-@x [39] m.868 l.17054 - Omega fi order of infinity
-active_width[6]:=active_width[6]+shrink(q)
-@y
-active_width[7]:=active_width[7]+shrink(q)
-@z
-%---------------------------------------
-@x [44] m.975 l.18932 - Omega fi order of infinity
- if (active_height[3]<>0) or (active_height[4]<>0) or
- (active_height[5]<>0) then b:=0
- else b:=badness(h-cur_height,active_height[2])
-else if cur_height-h>active_height[6] then b:=awful_bad
-else b:=badness(cur_height-h,active_height[6])
-@y
- if (active_height[3]<>0) or (active_height[4]<>0) or
- (active_height[5]<>0) or (active_height[6]<>0) then b:=0
- else b:=badness(h-cur_height,active_height[2])
-else if cur_height-h>active_height[7] then b:=awful_bad
-else b:=badness(cur_height-h,active_height[7])
-@z
-%---------------------------------------
-@x [44] m.976 l.18947 - Omega fi order of infinity
- active_height[6]:=active_height[6]+shrink(q);
-@y
- active_height[7]:=active_height[7]+shrink(q);
-@z
-%---------------------------------------
-@x [48] m.1201 l.22454 - Omega fi order of infinity
- (total_shrink[fil]<>0)or(total_shrink[fill]<>0)or
- (total_shrink[filll]<>0)) then
-@y
- (total_shrink[sfi]<>0)or(total_shrink[fil]<>0)or
- (total_shrink[fill]<>0)or(total_shrink[filll]<>0)) then
-@z
-
diff --git a/Build/source/texk/web2c/omegadir/omfilter.ch b/Build/source/texk/web2c/omegadir/omfilter.ch
deleted file mode 100644
index 7a739d66d51..00000000000
--- a/Build/source/texk/web2c/omegadir/omfilter.ch
+++ /dev/null
@@ -1,925 +0,0 @@
-% omfilter.ch: Running OCP programs
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [1] m.11 l.412 - Omega Filtering
- {string of length |file_name_size|; tells where the string pool appears}
-@.TeXformats@>
-@y
- {string of length |file_name_size|; tells where the string pool appears}
-@.TeXformats@>
-@!active_mem_size=2000; {number of words of |active_info| for active ocps}
-@z
-%---------------------------------------
-@x [5] - Omega Translation
-procedure overflow(@!s:str_number;@!n:integer); {stop due to finiteness}
-begin normalize_selector;
-print_err("Omega capacity exceeded, sorry [");
-@.TeX capacity exceeded ...@>
-print(s); print_char("="); print_int(n); print_char("]");
-help2("If you really absolutely need more capacity,")@/
- ("you can ask a wizard to enlarge me.");
-succumb;
-end;
-@y
-procedure overflow(@!s:str_number;@!n:integer); {stop due to finiteness}
-begin normalize_selector;
-print_err("Omega capacity exceeded, sorry [");
-@.TeX capacity exceeded ...@>
-print(s); print_char("="); print_int(n); print_char("]");
-help2("If you really absolutely need more capacity,")@/
- ("you can ask a wizard to enlarge me.");
-succumb;
-end;
-
-procedure overflow_ocp_buf_size;
-begin
-overflow("ocp_buf_size",ocp_buf_size);
-end;
-
-procedure overflow_ocp_stack_size;
-begin
-overflow("ocp_stack_size",ocp_stack_size);
-end;
-@z
-%---------------------------------------
-@x [22] m.300 l.6425 - Omega Filtering
-@!in_state_record = record
- @!state_field, @!index_field: quarterword;
- @!start_field,@!loc_field, @!limit_field, @!name_field: halfword;
- end;
-@y
-@!in_state_record = record
- @!state_field, @!index_field: quarterword;
- @!start_field,@!loc_field, @!limit_field, @!name_field,
- @!ocp_lstack_field: halfword; {used for omega translation processes}
- @!ocp_no_field: halfword; {used for omega translation processes}
- end;
-@z
-%---------------------------------------
-@x [22] m.300 l.6444 - Omega Filtering
-@d limit==cur_input.limit_field {end of current line in |buffer|}
-@d name==cur_input.name_field {name of the current file}
-@y
-@d limit==cur_input.limit_field {end of current line in |buffer|}
-@d name==cur_input.name_field {name of the current file}
-@d current_ocp_lstack==cur_input.ocp_lstack_field {name of the current ocp}
-@d current_ocp_no==cur_input.ocp_no_field {name of the current ocp}
-@z
-%---------------------------------------
-@x [22] m.312 l.6766 - Omega Filtering
- if state<>token_list then
- begin @<Print location of current line@>;
- @<Pseudoprint the line@>;
-@y
- if current_ocp_lstack>0 then
- begin print_nl("OCP stack "); print_scaled(current_ocp_lstack);
- print(" entry "); print_int(current_ocp_no); print(":");
- @<Pseudoprint the line@>;
- end
- else if state<>token_list then
- begin @<Print location of current line@>;
- @<Pseudoprint the line@>;
-@z
-%---------------------------------------
-@x [23] m.331 l.7069 - Omega Filtering
-state:=new_line; start:=1; index:=0; line:=0; name:=0;
-@y
-state:=new_line; start:=1; index:=0; line:=0; name:=0;
-current_ocp_lstack:=0; current_ocp_no:=0;
-@z
-%---------------------------------------
-@x [24] m.343 l.7248 - Omega Filtering
-else begin state:=new_line;@/
- @<Move to next line of file,
-@y
-else begin
- if current_ocp_lstack>0 then
- begin
- pop_input; goto restart;
- end;
- state:=new_line;
- @<Move to next line of file,
-@z
-%---------------------------------------
-@x [30] m.582 l.11283 - Omega Filtering
-char_warning(f,c);
-new_character:=null;
-exit:end;
-@y
-char_warning(f,c);
-new_character:=null;
-exit:end;
-
-@
-@<Types...@>=
-@!active_index=0..active_mem_size;
-
-@
-@d active_ocp(#)==active_info[#].hh.b0
-@d active_counter(#)==active_info[#].hh.b1
-@d active_lstack_no(#)==active_info[#+1].sc
-
-@<Glob...@>=
-@!active_info:array[active_index] of memory_word;
-@!active_min_ptr:active_index; {first unused word of |active_info|}
-@!active_max_ptr:active_index; {last unused word of |active_info|}
-@!active_real:active_index;
-@!holding:array[active_index] of ocp_list_index;
-
-@
-@<Initialize table...@>=
-active_min_ptr:=0;
-active_real:=0;
-
-@
-@p
-function is_last_ocp(llstack_no:scaled; counter:integer):integer;
-begin
-active_min_ptr:=equiv(ocp_active_min_ptr_base);
-active_max_ptr:=equiv(ocp_active_max_ptr_base);
-active_real:=active_min_ptr;
-while (active_real < active_max_ptr) and
- (active_lstack_no(active_real) < llstack_no) do begin
- active_real:=active_real+2;
- end;
-while (active_real < active_max_ptr) and
- (active_lstack_no(active_real) = llstack_no) and
- (active_counter(active_real) <= counter) do begin
- active_real:=active_real+2;
- end;
-is_last_ocp := (active_real=active_max_ptr);
-end;
-
-procedure print_active_ocps;
-var i:integer;
-begin
-print_nl("Active ocps: [");
-i:=active_min_ptr;
-while i<active_max_ptr do begin
- print("(");
- print_scaled(active_lstack_no(i));
- print(",");
- print_int(active_counter(i));
- print(",");
- print_esc(ocp_id_text(active_ocp(i)));
- print(")");
- if i<>(active_max_ptr-2) then print(",");
- i:=i+2;
- end;
-print("]");
-end;
-
-procedure add_ocp_stack(min_index:integer; min_value:scaled);
-var p:ocp_lstack_index;
- llstack_no:scaled;
- counter:integer;
-begin
-p:=ocp_list_lstack(holding[min_index]);
-llstack_no:=ocp_list_lstack_no(holding[min_index]);
-counter:=0;
-while not (is_null_ocp_lstack(p)) do begin
- active_ocp(active_max_ptr):=ocp_lstack_ocp(p);
- active_counter(active_max_ptr):=counter;
- active_lstack_no(active_max_ptr):=llstack_no;
- p:=ocp_lstack_lnext(p);
- active_max_ptr:=active_max_ptr+2;
- incr(counter); {no overflow problem}
- end;
-end;
-
-procedure active_compile;
-var i:integer;
- min_index:integer;
- min_stack_ocp:scaled;
- old_min:scaled;
- max_active:integer;
- stack_value:scaled;
-begin
-active_min_ptr:=active_max_ptr;
-min_stack_ocp:=ocp_maxint;
-max_active:=equiv(ocp_active_number_base)-1;
-for i:=max_active downto 0 do begin
- holding[i]:=ocp_list_list[equiv(ocp_active_base+i)];
- stack_value:=ocp_list_lstack_no(holding[i]);
- if stack_value<min_stack_ocp then begin
- min_index:=i;
- min_stack_ocp:=stack_value;
- end;
- end;
-while min_stack_ocp<ocp_maxint do begin
- add_ocp_stack(min_index, min_stack_ocp);
- old_min:=min_stack_ocp;
- min_stack_ocp:=ocp_maxint;
- for i:=max_active downto 0 do begin
- stack_value:=ocp_list_lstack_no(holding[i]);
- while old_min=stack_value do begin
- holding[i]:=ocp_list_lnext(holding[i]);
- stack_value:=ocp_list_lstack_no(holding[i]);
- end;
- if stack_value<min_stack_ocp then begin
- min_index:=i;
- min_stack_ocp:=stack_value;
- end;
- end;
- end;
-end;
-
-@z
-%---------------------------------------
-@x [46] m.1030 l.19984 - Omega Filtering
-main_loop:@<Append character |cur_chr| and the following characters (if~any)
- to the current hlist in the current font; |goto reswitch| when
- a non-character has been fetched@>;
-@y
-main_loop:
-if is_last_ocp(current_ocp_lstack,current_ocp_no) then begin
- @<Append character |cur_chr| and the following characters (if~any)
- to the current hlist in the current font; |goto reswitch| when
- a non-character has been fetched@>;
- end
-else begin
- @<Create a buffer with character |cur_chr| and the following
- characters (if~any) and then apply the current active OCP filter
- to this buffer@>;
- end;
-@z
-%---------------------------------------
-@x [50] m.1302 l.23862 - Omega Filtering
-@<Dump the font information@>;
-@y
-@<Dump the font information@>;
-@<Dump the active ocp information@>;
-@z
-%---------------------------------------
-@x [50] m.1303 l.23711 - Omega Filtering
-@<Undump the font information@>;
-@y
-@<Undump the font information@>;
-@<Undump the active ocp information@>;
-@z
-%---------------------------------------
-@x [50] m.1323 l.24907 - Omega Filtering
-begin undump_font_table(k);@/
-end
-@y
-begin undump_font_table(k);@/
-end
-
-@ @<Dump the active ocp information@>=
-dump_int(active_min_ptr);
-dump_int(active_max_ptr);
-for k:=0 to active_max_ptr-1 do dump_wd(active_info[k]);
-print_ln; print_int(active_max_ptr); print(" words of active ocps");
-
-@ @<Undump the active ocp information@>=
-undump_size(0)(active_mem_size)('active start point')(active_min_ptr);
-undump_size(0)(active_mem_size)('active mem size')(active_max_ptr);
-for k:=0 to active_max_ptr-1 do undump_wd(active_info[k]);
-
-@z
-%---------------------------------------
-@x [54] m.1379 l.24883 - Omega Filtering
-@ Here we do the main work required for reading and interpreting
- $\Omega$ Compiled Translation Processes.
-@y
-@ Here we do the main work required for reading and interpreting
- $\Omega$ Compiled Translation Processes.
-
-@
-@<Types...@>=
-
-@ Here are all the instructions in our mini-assembler.
-@d otp_right_output=1
-@d otp_right_num=2
-@d otp_right_char=3
-@d otp_right_lchar=4
-@d otp_right_some=5
-
-@d otp_pback_output=6
-@d otp_pback_num=7
-@d otp_pback_char=8
-@d otp_pback_lchar=9
-@d otp_pback_some=10
-
-@d otp_add=11
-@d otp_sub=12
-@d otp_mult=13
-@d otp_div=14
-@d otp_mod=15
-@d otp_lookup=16
-@d otp_push_num=17
-@d otp_push_char=18
-@d otp_push_lchar=19
-
-@d otp_state_change=20
-@d otp_state_push=21
-@d otp_state_pop=22
-
-@d otp_left_start=23
-@d otp_left_return=24
-@d otp_left_backup=25
-
-@d otp_goto=26
-@d otp_goto_ne=27
-@d otp_goto_eq=28
-@d otp_goto_lt=29
-@d otp_goto_le=30
-@d otp_goto_gt=31
-@d otp_goto_ge=32
-@d otp_goto_no_advance=33
-@d otp_goto_beg=34
-@d otp_goto_end=35
-
-@d otp_stop=36
-
-@
-@<Glob...@>=
-@!otp_init_input_start:halfword;
-@!otp_init_input_last:halfword;
-@!otp_init_input_end:halfword;
-@!otp_i:halfword;
-@!otp_init_input_buf:array[0..20000] of quarterword;
-
-@!otp_input_start:halfword;
-@!otp_input_last:halfword;
-@!otp_input_end:halfword;
-@!otp_input_buf:array[0..20000] of quarterword;
-
-@!otp_output_end:halfword;
-@!otp_output_buf:array[0..20000] of quarterword;
-
-@!otp_stack_used:halfword;
-@!otp_stack_last:halfword;
-@!otp_stack_new:halfword;
-@!otp_stack_buf:array[0..1000] of quarterword;
-
-@!otp_pc:halfword;
-
-@!otp_calc_ptr:halfword;
-@!otp_calcs:array[0..1000] of halfword;
-@!otp_state_ptr:halfword;
-@!otp_states:array[0..1000] of halfword;
-
-@!otp_input_char:halfword;
-@!otp_calculated_char:halfword;
-@!otp_no_input_chars:halfword;
-
-@!otp_instruction:halfword;
-@!otp_instr:halfword;
-@!otp_arg:halfword;
-@!otp_first_arg:halfword;
-@!otp_second_arg:halfword;
-
-@!otp_input_ocp:halfword;
-@!otp_counter:halfword;
-
-@!otp_finished:boolean;
-@!otp_ext_str:integer;
-@!otp_ext_str_arg:integer;
-@!otp_ext_i:integer;
-
-@
-@<Initialize table...@>=
-
-@
-@<Create a buffer with character |cur_chr| and the following
- characters (if~any) and then apply the current active OCP filter
- to this buffer@>=
-begin
-@<Read in the buffer for treatment@>;
-@<Apply the OCP to the input buffer@>;
-@<Place the output buffer back on the stream@>;
-goto big_switch;
-end;
-
-@
-@<Read in the buffer for treatment@>=
-begin
-otp_init_input_end:=0;
-while (cur_cmd=letter) or (cur_cmd=other_char) or
- (cur_cmd=char_given) or (cur_cmd=spacer) do begin
- incr(otp_init_input_end);
- if otp_init_input_end >ocp_buf_size then
- overflow_ocp_buf_size;
- otp_init_input_buf[otp_init_input_end]:=cur_chr;
- get_token;
- if (cur_cmd<>letter) and (cur_cmd<>other_char) and
- (cur_cmd<>char_given) then begin
- x_token;
- if (cur_cmd=char_num) then begin
- scan_char_num; cur_cmd:=other_char; cur_chr:=cur_val;
- end;
- end;
- end;
-back_input;
-otp_input_end:=otp_init_input_end;
-for otp_i:=0 to otp_init_input_end do begin
- otp_input_buf[otp_i]:=otp_init_input_buf[otp_i];
- end;
-end
-
-@
-@<Apply the OCP to the input buffer@>=
-begin
-otp_input_ocp:=active_ocp(active_real);
-if otp_input_ocp=0 then begin
- print_nl("Null ocp being used: all input lost");
- otp_output_end:=0;
- end
-else if ocp_external(otp_input_ocp)=0 then begin
- otp_input_start:=0;
- otp_input_last:=0;
- otp_stack_used:=0;
- otp_stack_last:=0;
- otp_stack_new:=0;
- otp_output_end:=0;
- otp_pc:=0;
- otp_finished:=false;
- otp_calc_ptr:=0;
- otp_calcs[otp_calc_ptr]:=0;
- otp_state_ptr:=0;
- otp_states[otp_state_ptr]:=0;
- while not otp_finished do
- @<Run the OTP program@>;
- end
-else begin
- k:=0;
- if name_of_file then libc_free (name_of_file);
- otp_ext_str:=ocp_external(otp_input_ocp);
- otp_ext_str_arg:=ocp_external_arg(otp_input_ocp);
- name_of_file :=
- xmalloc_array (char, 3 + length(otp_ext_str) + length(otp_ext_str_arg));
- for otp_ext_i:=str_start(otp_ext_str) to
- str_start(otp_ext_str)+length(otp_ext_str)-1 do
- append_to_name(str_pool[otp_ext_i]);
- append_to_name(" ");
- for otp_ext_i:=str_start(otp_ext_str_arg) to
- str_start(otp_ext_str_arg)+length(otp_ext_str_arg)-1 do
- append_to_name(str_pool[otp_ext_i]);
- name_of_file[length(otp_ext_str)+length(otp_ext_str_arg)+2]:=0;
- run_external_ocp(name_of_file);
- end
-end
-
-@
-@<Place the output buffer back on the stream@>=
-begin
-if (first+otp_output_end)>=ocp_buf_size then
- overflow_ocp_buf_size;
-push_input;
-current_ocp_lstack:=active_lstack_no(active_real);
-current_ocp_no:=active_counter(active_real);
-state:=mid_line;
-start:=first;
-last:=start;
-loc:=start;
-for otp_counter:=1 to otp_output_end do begin
- buffer[last]:=otp_output_buf[otp_counter];
- incr(last); {no overflow problem}
- end;
-limit:=last-1;
-first:=last;
-end
-
-@
-@d otp_cur_state==otp_states[otp_state_ptr]
-@d otp_set_instruction==begin
-if otp_pc>=ocp_state_no(otp_input_ocp)(otp_cur_state) then begin
- print_err("bad OCP program -- PC not valid");
- succumb;
- end;
-otp_instruction:=ocp_state_entry(otp_input_ocp)(otp_cur_state)(otp_pc);
-otp_instr:=otp_instruction div @"1000000;
-otp_arg:=otp_instruction mod @"1000000;
-end
-
-@<Run the OTP program@>=
-begin
-otp_set_instruction;
-case otp_instr of
- @<Run the |otp_right| instructions@>;
- @<Run the |otp_pback| instructions@>;
- @<Run the arithmetic instructions@>;
- @<Run the |otp_state| instructions@>;
- @<Run the |otp_left| instructions@>;
- @<Run the |otp_goto| instructions@>;
- @<Run the |otp_stop| instruction@>;
- othercases begin
- print_err("bad OCP program -- unknown instruction");
- succumb;
- end
- endcases;
-end
-
-@
-
-@d otp_check_char(#)==
-if (1>#) or (#>otp_no_input_chars) then begin
- print_err("right hand side of OCP expression is bad");
- succumb;
- end
-
-@d otp_get_char(#)==begin
-otp_check_char(#);
-if #>otp_stack_last then begin
- otp_calculated_char:=otp_input_buf[otp_input_start+#-otp_stack_last];
- end
-else begin
- otp_calculated_char:=otp_stack_buf[#];
- end;
-end
-
-@d decr(#)==#:=#-1
-
-@<Run the |otp_right| instructions@>=
- otp_right_output: begin
- incr(otp_output_end);
- if otp_output_end >ocp_buf_size then
- overflow_ocp_buf_size;
- otp_output_buf[otp_output_end]:=otp_calcs[otp_calc_ptr];
- decr(otp_calc_ptr);
- incr(otp_pc);
- end;
- otp_right_num: begin
- incr(otp_output_end);
- if otp_output_end >ocp_buf_size then
- overflow_ocp_buf_size;
- otp_output_buf[otp_output_end]:=otp_arg;
- incr(otp_pc);
- end;
- otp_right_char: begin
- otp_get_char(otp_arg);
- incr(otp_output_end);
- if otp_output_end >ocp_buf_size then
- overflow_ocp_buf_size;
- otp_output_buf[otp_output_end]:=otp_calculated_char;
- incr(otp_pc);
- end;
- otp_right_lchar: begin
- otp_get_char(otp_no_input_chars-otp_arg);
- incr(otp_output_end);
- if otp_output_end >ocp_buf_size then
- overflow_ocp_buf_size;
- otp_output_buf[otp_output_end]:=otp_calculated_char;
- incr(otp_pc);
- end;
- otp_right_some: begin
- otp_first_arg:=otp_arg+1;
- incr(otp_pc);
- otp_set_instruction;
- otp_second_arg:=otp_no_input_chars-otp_arg;
- for otp_counter:=otp_first_arg to otp_second_arg do begin
- otp_get_char(otp_counter);
- incr(otp_output_end);
- if otp_output_end >ocp_buf_size then
- overflow_ocp_buf_size;
- otp_output_buf[otp_output_end]:=otp_calculated_char;
- end;
- incr(otp_pc);
- end
-
-@
-@<Run the |otp_pback| instructions@>=
- otp_pback_output: begin
- incr(otp_stack_new);
- if otp_stack_new >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_stack_buf[otp_stack_new]:=otp_calcs[otp_calc_ptr];
- decr(otp_calc_ptr);
- incr(otp_pc);
- end;
- otp_pback_num: begin
- incr(otp_stack_new);
- if otp_stack_new >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_stack_buf[otp_stack_new]:=otp_arg;
- incr(otp_pc);
- end;
- otp_pback_char: begin
- otp_get_char(otp_arg);
- incr(otp_stack_new);
- if otp_stack_new >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_stack_buf[otp_stack_new]:=otp_calculated_char;
- incr(otp_pc);
- end;
- otp_pback_lchar: begin
- otp_get_char(otp_no_input_chars-otp_arg);
- incr(otp_stack_new);
- if otp_stack_new >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_stack_buf[otp_stack_new]:=otp_calculated_char;
- incr(otp_pc);
- end;
- otp_pback_some: begin
- otp_first_arg:=otp_arg+1;
- incr(otp_pc);
- otp_set_instruction;
- otp_second_arg:=otp_no_input_chars-otp_arg;
- for otp_counter:=otp_first_arg to otp_second_arg do begin
- otp_get_char(otp_counter);
- incr(otp_stack_new);
- if otp_stack_new >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_stack_buf[otp_stack_new]:=otp_calculated_char;
- end;
- incr(otp_pc);
- end
-
-@
-@<Run the arithmetic instructions@>=
- otp_add: begin
- otp_calcs[otp_calc_ptr-1] :=
- otp_calcs[otp_calc_ptr-1] + otp_calcs[otp_calc_ptr];
- incr(otp_pc);
- decr(otp_calc_ptr);
- end;
- otp_sub: begin
- otp_calcs[otp_calc_ptr-1] :=
- otp_calcs[otp_calc_ptr-1] - otp_calcs[otp_calc_ptr];
- incr(otp_pc);
- decr(otp_calc_ptr);
- end;
- otp_mult: begin
- otp_calcs[otp_calc_ptr-1] :=
- otp_calcs[otp_calc_ptr-1] * otp_calcs[otp_calc_ptr];
- incr(otp_pc);
- decr(otp_calc_ptr);
- end;
- otp_div: begin
- otp_calcs[otp_calc_ptr-1] :=
- otp_calcs[otp_calc_ptr-1] div otp_calcs[otp_calc_ptr];
- incr(otp_pc);
- decr(otp_calc_ptr);
- end;
- otp_mod: begin
- otp_calcs[otp_calc_ptr-1] :=
- otp_calcs[otp_calc_ptr-1] mod otp_calcs[otp_calc_ptr];
- incr(otp_pc);
- decr(otp_calc_ptr);
- end;
- otp_lookup: begin
- if otp_calcs[otp_calc_ptr]>=
- ocp_table_no(otp_input_ocp)(otp_calcs[otp_calc_ptr-1]) then begin
- print_err("bad OCP program -- table index not valid");
- succumb;
- end;
- otp_calcs[otp_calc_ptr-1]:=
- ocp_table_entry(otp_input_ocp)(otp_calcs[otp_calc_ptr-1])
- (otp_calcs[otp_calc_ptr]);
- incr(otp_pc);
- decr(otp_calc_ptr);
- end;
- otp_push_num: begin
- incr(otp_calc_ptr);
- if otp_calc_ptr >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_calcs[otp_calc_ptr]:=otp_arg;
- incr(otp_pc);
- end;
- otp_push_char: begin
- otp_get_char(otp_arg);
- incr(otp_calc_ptr);
- if otp_calc_ptr >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_calcs[otp_calc_ptr]:=otp_calculated_char;
- incr(otp_pc);
- end;
- otp_push_lchar: begin
- otp_get_char(otp_no_input_chars-otp_arg);
- incr(otp_calc_ptr);
- if otp_calc_ptr >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_calcs[otp_calc_ptr]:=otp_calculated_char;
- incr(otp_pc);
- end
-
-@
-@<Run the |otp_state| instructions@>=
- otp_state_change: begin
- otp_input_start:=otp_input_last;
- for otp_counter:=1 to (otp_stack_new-otp_stack_used) do begin
- otp_stack_buf[otp_counter] :=
- otp_stack_buf[otp_counter+otp_stack_used];
- end;
- otp_stack_new:=otp_stack_new-otp_stack_used;
- otp_stack_last:=otp_stack_new;
- otp_stack_used:=0;
- otp_states[otp_state_ptr]:=otp_arg;
- otp_pc:=0;
- end;
- otp_state_push: begin
- otp_input_start:=otp_input_last;
- for otp_counter:=1 to (otp_stack_new-otp_stack_used) do begin
- otp_stack_buf[otp_counter] :=
- otp_stack_buf[otp_counter+otp_stack_used];
- end;
- otp_stack_new:=otp_stack_new-otp_stack_used;
- otp_stack_last:=otp_stack_new;
- otp_stack_used:=0;
- incr(otp_state_ptr);
- if otp_state_ptr >= ocp_stack_size then
- overflow_ocp_stack_size;
- otp_states[otp_state_ptr]:=otp_arg;
- otp_pc:=0;
- end;
- otp_state_pop: begin
- otp_input_start:=otp_input_last;
- for otp_counter:=1 to (otp_stack_new-otp_stack_used) do begin
- otp_stack_buf[otp_counter] :=
- otp_stack_buf[otp_counter+otp_stack_used];
- end;
- otp_stack_new:=otp_stack_new-otp_stack_used;
- otp_stack_last:=otp_stack_new;
- otp_stack_used:=0;
- if otp_state_ptr>0 then decr(otp_state_ptr);
- otp_pc:=0;
- end
-
-@
-@<Run the |otp_left| instructions@>=
- otp_left_start: begin
- otp_input_start:=otp_input_last;
- otp_input_last:=otp_input_start;
- otp_stack_used:=0;
- if (otp_stack_last=0) and (otp_input_last>=otp_input_end) then
- otp_finished:=true
- else if (otp_stack_used < otp_stack_last) then begin
- incr(otp_stack_used); {no overflow problem}
- otp_input_char:=otp_stack_buf[otp_stack_used];
- otp_no_input_chars:=1;
- incr(otp_pc);
- end
- else begin
- incr(otp_input_last); {no overflow problem}
- otp_input_char:=otp_input_buf[otp_input_last];
- otp_no_input_chars:=1;
- incr(otp_pc);
- end;
- end;
- otp_left_return: begin
- otp_input_last:=otp_input_start;
- otp_stack_used:=0;
- if (otp_stack_used < otp_stack_last) then begin
- incr(otp_stack_used); {no overflow problem}
- otp_input_char:=otp_stack_buf[otp_stack_used];
- otp_no_input_chars:=1;
- incr(otp_pc);
- end
- else begin
- incr(otp_input_last); {no overflow problem}
- otp_input_char:=otp_input_buf[otp_input_last];
- otp_no_input_chars:=1;
- incr(otp_pc);
- end;
- end;
- otp_left_backup: begin
- if otp_input_start < otp_input_last then begin
- decr(otp_input_last); otp_input_char:=otp_input_buf[otp_input_last];
- end
- else begin
- decr(otp_stack_used); otp_input_char:=otp_stack_buf[otp_stack_used];
- end;
- decr(otp_no_input_chars);
- incr(otp_pc);
- end
-
-@
-@<Run the |otp_goto| instructions@>=
- otp_goto: begin
- otp_pc:=otp_arg;
- end;
- otp_goto_ne: begin
- otp_first_arg:=otp_arg;
- incr(otp_pc);
- otp_set_instruction;
- if otp_input_char <> otp_first_arg then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_eq: begin
- otp_first_arg:=otp_arg;
- incr(otp_pc);
- otp_set_instruction;
- if otp_input_char = otp_first_arg then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_lt: begin
- otp_first_arg:=otp_arg;
- incr(otp_pc);
- otp_set_instruction;
- if otp_input_char < otp_first_arg then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_le: begin
- otp_first_arg:=otp_arg;
- incr(otp_pc);
- otp_set_instruction;
- if otp_input_char <= otp_first_arg then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_gt: begin
- otp_first_arg:=otp_arg;
- incr(otp_pc);
- otp_set_instruction;
- if otp_input_char > otp_first_arg then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_ge: begin
- otp_first_arg:=otp_arg;
- incr(otp_pc);
- otp_set_instruction;
- if otp_input_char >= otp_first_arg then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_no_advance: begin
- if (otp_stack_used < otp_stack_last) then begin
- incr(otp_stack_used); {no overflow problem}
- otp_input_char:=otp_stack_buf[otp_stack_used];
- incr(otp_no_input_chars); {no overflow problem}
- incr(otp_pc);
- end
- else if otp_input_last>=otp_input_end then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_input_last); {no overflow problem}
- otp_input_char:=otp_input_buf[otp_input_last];
- incr(otp_no_input_chars); {no overflow problem}
- incr(otp_pc);
- end;
- end;
- otp_goto_beg: begin
- if otp_input_last=0 then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end;
- otp_goto_end: begin
- if otp_input_last>=otp_input_end then begin
- otp_pc:=otp_arg;
- end
- else begin
- incr(otp_pc);
- end;
- end
-
-@
-@<Run the |otp_stop| instruction@>=
- otp_stop: begin
- otp_input_start:=otp_input_last;
- for otp_counter:=1 to (otp_stack_new-otp_stack_used) do begin
- otp_stack_buf[otp_counter] :=
- otp_stack_buf[otp_counter+otp_stack_used];
- end;
- otp_stack_new:=otp_stack_new-otp_stack_used;
- otp_stack_last:=otp_stack_new;
- otp_stack_used:=0;
- otp_pc:=0;
- end
-
-@z
diff --git a/Build/source/texk/web2c/omegadir/omfont.ch b/Build/source/texk/web2c/omegadir/omfont.ch
deleted file mode 100644
index e70d4c47dcd..00000000000
--- a/Build/source/texk/web2c/omegadir/omfont.ch
+++ /dev/null
@@ -1,2377 +0,0 @@
-% omfont.ch: Reading and storing font metric information
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%%---------------------------------------
-@x [15] m.208 l.
-@d min_internal=end_cs_name+1 {the smallest code that can follow \.{\\the}}
-@y
-@d char_ghost=end_cs_name+1
- {\.{\\ghostleft}, \.{\\ghostright} character for kerning}
-@d min_internal=char_ghost+1 {the smallest code that can follow \.{\\the}}
-@z
-%---------------------------------------
-@x [17] m.222 l.4530 - Omega
- {begins table of 257 permanent font identifiers}
-@d undefined_control_sequence=frozen_null_font+257 {dummy location}
-@y
- {begins table of |number_fonts| permanent font identifiers}
-@d undefined_control_sequence=frozen_null_font+number_fonts
- {dummy location}
-@z
-%---------------------------------------
-@x [18] m.265 l.5648 - Omega
-primitive("insert",insert,0);@/
-@!@:insert_}{\.{\\insert} primitive@>
-@y
-primitive("insert",insert,0);@/
-@!@:insert_}{\.{\\insert} primitive@>
-primitive("leftghost",char_ghost,0);@/
-@!@:leftghost_}{\.{\\leftghost} primitive@>
-@z
-%---------------------------------------
-@x [18] m.265 l.5648 - Omega
-primitive("setbox",set_box,0);@/
-@!@:set_box_}{\.{\\setbox} primitive@>
-@y
-primitive("rightghost",char_ghost,1);@/
-@!@:rightghost_}{\.{\\rightghost} primitive@>
-primitive("setbox",set_box,0);@/
-@!@:set_box_}{\.{\\setbox} primitive@>
-@z
-%---------------------------------------
-@x [18] m.266 l.5648 - Omega
-char_num: print_esc("char");
-@y
-char_num: print_esc("char");
-char_ghost: if cur_chr=0 then print_esc("leftghost")
- else print_esc("rightghost");
-@z
-%---------------------------------------
-@x [26] m.425 l.8524 - font parameters
-begin find_font_dimen(false); font_info[fmem_ptr].sc:=0;
-scanned_result(font_info[cur_val].sc)(dimen_val);
-@y
-begin find_font_dimen(false);
-font_info(dimen_font)(font_file_size(dimen_font)).sc:=0;
-scanned_result(font_info(dimen_font)(cur_val).sc)(dimen_val);
-@z
-%---------------------------------------
-@x [26] m.426 l.8530 - font parameters
-if m=0 then scanned_result(hyphen_char[cur_val])(int_val)
-else scanned_result(skew_char[cur_val])(int_val);
-@y
-if m=0 then scanned_result(hyphen_char(cur_val))(int_val)
-else scanned_result(skew_char(cur_val))(int_val);
-@z
-%---------------------------------------
-@x [27] m.472 l.9258 - font parameters
-font_name_code: begin print(font_name[cur_val]);
- if font_size[cur_val]<>font_dsize[cur_val] then
- begin print(" at "); print_scaled(font_size[cur_val]);
-@y
-font_name_code: begin print(font_name(cur_val));
- if font_size(cur_val)<>font_dsize(cur_val) then
- begin print(" at "); print_scaled(font_size(cur_val));
-@z
-%---------------------------------------
-@x [30] m.539 l.10392 - Omega
-@^Ramshaw, Lyle Harold@>
-of information in a compact but useful form.
-
-@y
-@^Ramshaw, Lyle Harold@>
-of information in a compact but useful form.
-
-$\Omega$ is capable of reading not only \.{TFM} files, but also
-\.{OFM} files, which can describe fonts with up to 65536 characters
-and with huge lig/kern tables. These fonts will often be virtual
-fonts built up from real fonts with 256 characters, but $\Omega$
-is not aware of this.
-
-The documentation below describes \.{TFM} files, with slight additions
-to show where \.{OFM} files differ.
-
-@z
-%---------------------------------------
-@x [30] m.540 l.10417 - Omega
-Note that a font may contain as many as 256 characters (if |bc=0| and |ec=255|),
-and as few as 0 characters (if |bc=ec+1|).
-
-Incidentally, when two or more 8-bit bytes are combined to form an integer of
-16 or more bits, the most significant bytes appear first in the file.
-This is called BigEndian order.
-@!@^BigEndian order@>
-
-@y
-Note that a \.{TFM} font may contain as many as 256 characters
-(if |bc=0| and |ec=255|), and as few as 0 characters (if |bc=ec+1|).
-
-Incidentally, when two or more 8-bit bytes are combined to form an integer of
-16 or more bits, the most significant bytes appear first in the file.
-This is called BigEndian order.
-@!@^BigEndian order@>
-
-The first 52 bytes (13 words) of an \.{OFM} file contains thirteen
-32-bit integers that give the lengths of the various subsequent
-portions of the file. The first word is 0 (future versions of
-\.{OFM} files could have different values; what is important is that
-the first two bytes be 0 to differentiate \.{TFM} and \.{OFM} files).
-The next twelve integers are as above, all nonegative and less
-than~$2^{31}$. We must have |bc-1<=ec<=65535|, and
-$$\hbox{|lf=13+lh+2*(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np|.}$$
-Note that an \.{OFM} font may contain as many as 65536 characters
-(if |bc=0| and |ec=65535|), and as few as 0 characters (if |bc=ec+1|).
-
-@z
-%---------------------------------------
-@x [30] m.543 l.10492 - Omega
-per character. Each word in this part of the file contains six fields
-@y
-per character. Each word in this part of a \.{TFM} file contains six fields
-@z
-%---------------------------------------
-@x [30] m.543 l.10506 - Omega
-imposes a limit of 16 different heights, 16 different depths, and
-64 different italic corrections.
-
-@y
-imposes a limit of 16 different heights, 16 different depths, and
-64 different italic corrections.
-
-For \.{OFM} files, two words (eight bytes) are used.
-The arrangement is as follows.
-
-\yskip\hang first and second bytes: |@!width_index| (16 bits)\par
-\hang third byte: |@!height_index| (8 bits)\par
-\hang fourth byte: |@!depth_index| (8~bits)\par
-\hang fifth and sixth bytes:
-|@!italic_index| (14 bits) times 4, plus |@!tag| (2~bits)\par
-\hang seventh and eighth bytes: |@!remainder| (16 bits)\par
-\yskip\noindent
-Therefore the \.{OFM} format imposes a limit of 256 different heights,
-256 different depths, and 16384 different italic corrections.
-
-@z
-%---------------------------------------
-@x [30] m.545 l.10547 - Omega
-that explains what to do for special letter pairs. Each word in this array is a
-|@!lig_kern_command| of four bytes.
-@y
-that explains what to do for special letter pairs. Each word in this array,
-in a \.{TFM} file, is a |@!lig_kern_command| of four bytes.
-@z
-%---------------------------------------
-@x [30] m.545 l.10557 - Omega
-\hang fourth byte: |remainder|.\par
-\yskip\noindent
-@y
-\hang fourth byte: |remainder|.\par
-\yskip\noindent
-In an \.{OFM} file, eight bytes are used, two bytes for each field.
-
-@z
-%---------------------------------------
-@x [30] m.545 l.10587 - Omega
-appear in a location |<=255|.
-@y
-appear in a location |<=255| in a \.{TFM} file, |<=65535| in an \.{OFM} file.
-@z
-%---------------------------------------
-@x [30] m.545 l.10599 - Omega
-@d skip_byte(#)==#.b0
-@d next_char(#)==#.b1
-@d op_byte(#)==#.b2
-@d rem_byte(#)==#.b3
-@y
-@d top_skip_byte(#)==(#.b0 div 256)
-@d skip_byte(#)==(#.b0 mod 256)
-@d next_char_end(#)==#.b1
-@d next_char(#)==font_offset(#)+next_char_end
-@d op_byte(#)==#.b2
-@d rem_byte(#)==#.b3
-@d rem_char_byte_end(#)==#.b3
-@d rem_char_byte(#)==font_offset(#)+rem_char_byte_end
-@d rem_top_byte(#)==(#.b3 div 256)
-@d rem_bot_byte(#)==(#.b3 mod 256)
-@z
-%---------------------------------------
-@x [30] m.546 l.10604 - Omega
-consists of four bytes called |@!top|, |@!mid|, |@!bot|, and |@!rep| (in this
-order). These bytes are the character codes of individual pieces used to
-@y
-consists of four bytes in a \.{TFM} file,
-called |@!top|, |@!mid|, |@!bot|, and |@!rep| (in this order).
-In an \.{OFM} file, each field takes two bytes, for eight in total.
-These bytes are the character codes of individual pieces used to
-@z
-%---------------------------------------
-@x [30] m.546 l.10618 - Omega
-@d ext_top(#)==#.b0 {|top| piece in a recipe}
-@d ext_mid(#)==#.b1 {|mid| piece in a recipe}
-@d ext_bot(#)==#.b2 {|bot| piece in a recipe}
-@d ext_rep(#)==#.b3 {|rep| piece in a recipe}
-@y
-@d ext_top_end(#)==#.b0 {|top| piece in a recipe}
-@d ext_top(#)==font_offset(#)+ext_top_end
-@d ext_mid_end(#)==#.b1 {|mid| piece in a recipe}
-@d ext_mid(#)==font_offset(#)+ext_mid_end
-@d ext_bot_end(#)==#.b2 {|bot| piece in a recipe}
-@d ext_bot(#)==font_offset(#)+ext_bot_end
-@d ext_rep_end(#)==#.b3 {|rep| piece in a recipe}
-@d ext_rep(#)==font_offset(#)+ext_rep_end
-@z
-%---------------------------------------
-@x [30] m.548 l.10674 - Omega
-@!font_index=0..font_mem_size; {index into |font_info|}
-@y
-@!font_index=integer; {index into |font_info|}
-@z
-%---------------------------------------
-@x [30] m.549 l.10678 - Omega
-@d non_char==qi(256) {a |halfword| code that can't match a real character}
-@y
-@d non_char==qi(too_big_char) {a code that can't match a real character}
-@z
-%---------------------------------------
-@x [30] m.549 l.10686 - Omega
-@!font_info:array[font_index] of memory_word;
- {the big collection of font data}
-@!fmem_ptr:font_index; {first unused word of |font_info|}
-@!font_ptr:internal_font_number; {largest internal font number in use}
-@!font_check:array[internal_font_number] of four_quarters; {check sum}
-@!font_size:array[internal_font_number] of scaled; {``at'' size}
-@!font_dsize:array[internal_font_number] of scaled; {``design'' size}
-@!font_params:array[internal_font_number] of font_index; {how many font
- parameters are present}
-@!font_name:array[internal_font_number] of str_number; {name of the font}
-@!font_area:array[internal_font_number] of str_number; {area of the font}
-@!font_bc:array[internal_font_number] of eight_bits;
- {beginning (smallest) character code}
-@!font_ec:array[internal_font_number] of eight_bits;
- {ending (largest) character code}
-@!font_glue:array[internal_font_number] of pointer;
- {glue specification for interword space, |null| if not allocated}
-@!font_used:array[internal_font_number] of boolean;
- {has a character from this font actually appeared in the output?}
-@!hyphen_char:array[internal_font_number] of integer;
- {current \.{\\hyphenchar} values}
-@!skew_char:array[internal_font_number] of integer;
- {current \.{\\skewchar} values}
-@!bchar_label:array[internal_font_number] of font_index;
- {start of |lig_kern| program for left boundary character,
- |non_address| if there is none}
-@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
- {right boundary character, |non_char| if there is none}
-@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
- {|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
-@y
-@!font_ptr:internal_font_number; {largest internal font number in use}
-@z
-%---------------------------------------
-@x [30] m.550 l.10723 - Omega
-|font_info[char_base[f]+c].qqqq|; and if |w| is the |width_index|
-part of this word (the |b0| field), the width of the character is
-|font_info[width_base[f]+w].sc|. (These formulas assume that
-|min_quarterword| has already been added to |c| and to |w|, since \TeX\
-stores its quarterwords that way.)
-
-@<Glob...@>=
-@!char_base:array[internal_font_number] of integer;
- {base addresses for |char_info|}
-@!width_base:array[internal_font_number] of integer;
- {base addresses for widths}
-@!height_base:array[internal_font_number] of integer;
- {base addresses for heights}
-@!depth_base:array[internal_font_number] of integer;
- {base addresses for depths}
-@!italic_base:array[internal_font_number] of integer;
- {base addresses for italic corrections}
-@!lig_kern_base:array[internal_font_number] of integer;
- {base addresses for ligature/kerning programs}
-@!kern_base:array[internal_font_number] of integer;
- {base addresses for kerns}
-@!exten_base:array[internal_font_number] of integer;
- {base addresses for extensible recipes}
-@!param_base:array[internal_font_number] of integer;
- {base addresses for font parameters}
-@y
-|font_info(f)(char_base(f)+c).qqqq|; and if |w| is the |width_index|
-part of this word (the |b0| field), the width of the character is
-|font_info(f)(width_base(f)+w).sc|. (These formulas assume that
-|min_quarterword| has already been added to |c| and to |w|, since \TeX\
-stores its quarterwords that way.)
-
-@d font_info_end(#)==#]
-@d font_info(#)==font_tables[#,font_info_end
-@d offset_file_size=0
-@d offset_check=1
-@d offset_offset=offset_check+4
-@d offset_size=offset_offset+1
-@d offset_dsize=offset_size+1
-@d offset_params=offset_dsize+1
-@d offset_name_sort=offset_params+1
-@d offset_name=offset_name_sort+1
-@d offset_area=offset_name+1
-@d offset_bc=offset_area+1
-@d offset_ec=offset_bc+1
-@d offset_glue=offset_ec+1
-@d offset_used=offset_glue+1
-@d offset_hyphen=offset_used+1
-@d offset_skew=offset_hyphen+1
-@d offset_bchar_label=offset_skew+1
-@d offset_bchar=offset_bchar_label+1
-@d offset_false_bchar=offset_bchar+1
-@d offset_ivalues_start=offset_false_bchar+1
-@d offset_fvalues_start=offset_ivalues_start+1
-@d offset_mvalues_start=offset_fvalues_start+1
-@d offset_rules_start=offset_mvalues_start+1
-@d offset_glues_start=offset_rules_start+1
-@d offset_penalties_start=offset_glues_start+1
-@d offset_ivalues_base=offset_penalties_start+1
-@d offset_fvalues_base=offset_ivalues_base+1
-@d offset_mvalues_base=offset_fvalues_base+1
-@d offset_rules_base=offset_mvalues_base+1
-@d offset_glues_base=offset_rules_base+1
-@d offset_penalties_base=offset_glues_base+1
-@d offset_char_base=offset_penalties_base+1
-@d offset_char_attr_base=offset_char_base+1
-@d offset_width_base=offset_char_attr_base+1
-@d offset_height_base=offset_width_base+1
-@d offset_depth_base=offset_height_base+1
-@d offset_italic_base=offset_depth_base+1
-@d offset_lig_kern_base=offset_italic_base+1
-@d offset_kern_base=offset_lig_kern_base+1
-@d offset_exten_base=offset_kern_base+1
-@d offset_param_base=offset_exten_base+1
-@d offset_charinfo_base=offset_param_base+1
-@d font_file_size(#)==font_info(#)(offset_file_size).int
-@d font_check_0(#)==font_info(#)(offset_check).int
-@d font_check_1(#)==font_info(#)(offset_check+1).int
-@d font_check_2(#)==font_info(#)(offset_check+2).int
-@d font_check_3(#)==font_info(#)(offset_check+3).int
-@d font_offset(#)==font_info(#)(offset_offset).int
-@d font_size(#)==font_info(#)(offset_size).int
-@d font_dsize(#)==font_info(#)(offset_dsize).int
-@d font_params(#)==font_info(#)(offset_params).int
-@d font_name_sort(#)==font_info(#)(offset_name_sort).int
-@d font_name(#)==font_info(#)(offset_name).int
-@d font_area(#)==font_info(#)(offset_area).int
-@d font_bc(#)==font_info(#)(offset_bc).int
-@d font_ec(#)==font_info(#)(offset_ec).int
-@d font_glue(#)==font_info(#)(offset_glue).int
-@d font_used(#)==font_info(#)(offset_used).int
-@d hyphen_char(#)==font_info(#)(offset_hyphen).int
-@d skew_char(#)==font_info(#)(offset_skew).int
-@d bchar_label(#)==font_info(#)(offset_bchar_label).int
-@d font_bchar(#)==font_info(#)(offset_bchar).int
-@d font_false_bchar(#)==font_info(#)(offset_false_bchar).int
-@d ivalues_start(#)==font_info(#)(offset_ivalues_start).int
-@d fvalues_start(#)==font_info(#)(offset_fvalues_start).int
-@d mvalues_start(#)==font_info(#)(offset_mvalues_start).int
-@d rules_start(#)==font_info(#)(offset_rules_start).int
-@d glues_start(#)==font_info(#)(offset_glues_start).int
-@d penalties_start(#)==font_info(#)(offset_penalties_start).int
-@d ivalues_base(#)==font_info(#)(offset_ivalues_base).int
-@d fvalues_base(#)==font_info(#)(offset_fvalues_base).int
-@d mvalues_base(#)==font_info(#)(offset_mvalues_base).int
-@d rules_base(#)==font_info(#)(offset_rules_base).int
-@d glues_base(#)==font_info(#)(offset_glues_base).int
-@d penalties_base(#)==font_info(#)(offset_penalties_base).int
-@d char_attr_base(#)==font_info(#)(offset_char_attr_base).int
-@d char_base(#)==font_info(#)(offset_char_base).int
-@d width_base(#)==font_info(#)(offset_width_base).int
-@d height_base(#)==font_info(#)(offset_height_base).int
-@d depth_base(#)==font_info(#)(offset_depth_base).int
-@d italic_base(#)==font_info(#)(offset_italic_base).int
-@d lig_kern_base(#)==font_info(#)(offset_lig_kern_base).int
-@d kern_base(#)==font_info(#)(offset_kern_base).int
-@d exten_base(#)==font_info(#)(offset_exten_base).int
-@d param_base(#)==font_info(#)(offset_param_base).int
-
-@<Glob...@>=
-@!dimen_font:integer;
-@z
-%---------------------------------------
-@x [30] m.551 l.10743 - Omega
-for k:=font_base to font_max do font_used[k]:=false;
-@y
-@z
-%---------------------------------------
-@x [30] m.552 l.10749 - Omega
-font_ptr:=null_font; fmem_ptr:=7;
-font_name[null_font]:="nullfont"; font_area[null_font]:="";
-hyphen_char[null_font]:="-"; skew_char[null_font]:=-1;
-bchar_label[null_font]:=non_address;
-font_bchar[null_font]:=non_char; font_false_bchar[null_font]:=non_char;
-font_bc[null_font]:=1; font_ec[null_font]:=0;
-font_size[null_font]:=0; font_dsize[null_font]:=0;
-char_base[null_font]:=0; width_base[null_font]:=0;
-height_base[null_font]:=0; depth_base[null_font]:=0;
-italic_base[null_font]:=0; lig_kern_base[null_font]:=0;
-kern_base[null_font]:=0; exten_base[null_font]:=0;
-font_glue[null_font]:=null; font_params[null_font]:=7;
-param_base[null_font]:=-1;
-for k:=0 to 6 do font_info[k].sc:=0;
-@y
-font_ptr:=null_font;
-allocate_font_table(null_font,offset_charinfo_base+108);
-font_file_size(null_font):=offset_charinfo_base+108;
-font_used(null_font):=false;
-font_name(null_font):="nullfont"; font_area(null_font):="";
-hyphen_char(null_font):="-"; skew_char(null_font):=-1;
-bchar_label(null_font):=non_address;
-font_bchar(null_font):=non_char; font_false_bchar(null_font):=non_char;
-font_bc(null_font):=1; font_ec(null_font):=0;
-font_size(null_font):=0; font_dsize(null_font):=0;
-char_base(null_font):=offset_charinfo_base;
-char_attr_base(null_font):=offset_charinfo_base;
-ivalues_start(null_font):=offset_charinfo_base;
-fvalues_start(null_font):=offset_charinfo_base;
-mvalues_start(null_font):=offset_charinfo_base;
-rules_start(null_font):=offset_charinfo_base;
-glues_start(null_font):=offset_charinfo_base;
-penalties_start(null_font):=offset_charinfo_base;
-ivalues_base(null_font):=offset_charinfo_base;
-fvalues_base(null_font):=offset_charinfo_base;
-mvalues_base(null_font):=offset_charinfo_base;
-rules_base(null_font):=offset_charinfo_base;
-glues_base(null_font):=offset_charinfo_base;
-penalties_base(null_font):=offset_charinfo_base;
-width_base(null_font):=offset_charinfo_base;
-height_base(null_font):=offset_charinfo_base;
-depth_base(null_font):=offset_charinfo_base;
-italic_base(null_font):=offset_charinfo_base;
-lig_kern_base(null_font):=offset_charinfo_base;
-kern_base(null_font):=offset_charinfo_base;
-exten_base(null_font):=offset_charinfo_base;
-font_glue(null_font):=null;
-font_params(null_font):=7;
-param_base(null_font):=offset_charinfo_base-1;
-font_offset(null_font):=0;
-for k:=1 to 7 do font_info(null_font)(param_base(null_font)+k).sc:=0;
-@z
-%---------------------------------------
-@x [30] m.553 l.10767 - Omega
-text(frozen_null_font):="nullfont"; eqtb[frozen_null_font]:=eqtb[cur_val];
-@y
-settext(frozen_null_font,"nullfont");
-set_new_eqtb(frozen_null_font,new_eqtb(cur_val));
-@z
-%---------------------------------------
-@x [30] m.554 l.10771 - Omega
-$$\hbox{|font_info[width_base[f]+font_info[char_base[f]+c].qqqq.b0].sc|}$$
-@y
-$$\hbox{|font_info(f)(width_base(f)+font_info(f)(char_base(f)+c).qqqq.b0).sc|}$$
-@z
-%---------------------------------------
-@x [30] m.554 l.10785 - Omega
-|height_depth(q)| will be the 8-bit quantity
-$$b=|height_index|\times16+|depth_index|,$$ and if |b| is such a byte we
-@y
-|height_depth(q)| will be the 16-bit quantity
-$$b=|height_index|\times256+|depth_index|,$$ and if |b| is such a byte we
-@z
-%---------------------------------------
-@x [30] m.554 l.10798 - Omega
-@d char_info_end(#)==#].qqqq
-@d char_info(#)==font_info[char_base[#]+char_info_end
-@d char_width_end(#)==#.b0].sc
-@d char_width(#)==font_info[width_base[#]+char_width_end
-@d char_exists(#)==(#.b0>min_quarterword)
-@d char_italic_end(#)==(qo(#.b2)) div 4].sc
-@d char_italic(#)==font_info[italic_base[#]+char_italic_end
-@d height_depth(#)==qo(#.b1)
-@d char_height_end(#)==(#) div 16].sc
-@d char_height(#)==font_info[height_base[#]+char_height_end
-@d char_depth_end(#)==(#) mod 16].sc
-@d char_depth(#)==font_info[depth_base[#]+char_depth_end
-@d char_tag(#)==((qo(#.b2)) mod 4)
-@y
-@d char_info_end(#)==#].qqqq
-@d char_info(#)==font_tables[#,char_base(#)-font_offset(#)+char_info_end
-@d char_width_end(#)==#.b0].sc
-@d char_width(#)==font_tables[#,width_base(#)+char_width_end
-@d char_exists(#)==(#.b0>min_quarterword)
-@d char_italic_end(#)==(qo(#.b2)) div 256].sc
-@d char_italic(#)==font_tables[#,italic_base(#)+char_italic_end
-@d height_depth(#)==qo(#.b1)
-@d char_height_end(#)==(#) div 256].sc
-@d char_height(#)==font_tables[#,height_base(#)+char_height_end
-@d char_depth_end(#)==(#) mod 256].sc
-@d char_depth(#)==font_tables[#,depth_base(#)+char_depth_end
-@d char_tag(#)==((qo(#.b2)) mod 4)
-@z
-%---------------------------------------
-@x [30] m.557 l.10834 - Omega
-|i=font_info[lig_kern_start(f)(j)]| or |font_info[lig_kern_restart(f)(i)]|,
-depending on whether or not |skip_byte(i)<=stop_flag|.
-
-The constant |kern_base_offset| should be simplified, for \PASCAL\ compilers
-that do not do local optimization.
-@^system dependencies@>
-
-@d char_kern_end(#)==256*op_byte(#)+rem_byte(#)].sc
-@d char_kern(#)==font_info[kern_base[#]+char_kern_end
-@d kern_base_offset==256*(128+min_quarterword)
-@d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program}
-@d lig_kern_restart_end(#)==256*op_byte(#)+rem_byte(#)+32768-kern_base_offset
-@d lig_kern_restart(#)==lig_kern_base[#]+lig_kern_restart_end
-@y
-|i=font_info(f)(lig_kern_start(f)(j))| or
-|font_info(f)(lig_kern_restart(f)(i))|,
-depending on whether or not |skip_byte(i)<=stop_flag|.
-
-The constant |kern_base_offset| should be simplified, for \PASCAL\ compilers
-that do not do local optimization.
-@^system dependencies@>
-
-@d char_kern_end(#)==256*op_byte(#)+rem_byte(#)].sc
-@d char_kern(#)==font_tables[#,kern_base(#)+char_kern_end
-@d kern_base_offset==256*(128+min_quarterword)
-@d lig_kern_start(#)==lig_kern_base(#)+rem_byte {beginning of lig/kern program}
-@d lig_kern_restart_end(#)==256*op_byte(#)+rem_byte(#)+32768-kern_base_offset
-@d lig_kern_restart(#)==lig_kern_base(#)+lig_kern_restart_end
-
-@d attr_zero_char_ivalue_end(#)==#].int].int
-@d attr_zero_char_ivalue(#)==
- font_tables[#,font_tables[#,char_attr_base(#)+attr_zero_char_ivalue_end
-@d attr_zero_ivalue_end(#)==#].int
-@d attr_zero_ivalue(#)==font_tables[#,ivalues_base(#)+attr_zero_ivalue_end
-@d attr_zero_penalty_end(#)==#].int
-@d attr_zero_penalty(#)==font_tables[#,penalties_base(#)+attr_zero_penalty_end
-@d attr_zero_kern_end(#)==#].int
-@d attr_zero_kern(#)==font_tables[#,mvalues_base(#)+attr_zero_kern_end
-
-@z
-%---------------------------------------
-@x [30] m.558 l.10843 - Omega
-@d param_end(#)==param_base[#]].sc
-@d param(#)==font_info[#+param_end
-@d slant==param(slant_code) {slant to the right, per unit distance upward}
-@d space==param(space_code) {normal space between words}
-@d space_stretch==param(space_stretch_code) {stretch between words}
-@d space_shrink==param(space_shrink_code) {shrink between words}
-@d x_height==param(x_height_code) {one ex}
-@d quad==param(quad_code) {one em}
-@d extra_space==param(extra_space_code) {additional space at end of sentence}
-@y
-@d slant(#)==font_info(#)(param_base(#)+slant_code).sc
- {slant to the right, per unit distance upward}
-@d space(#)==font_info(#)(param_base(#)+space_code).sc
- {normal space between words}
-@d space_stretch(#)==font_info(#)(param_base(#)+space_stretch_code).sc
- {stretch between words}
-@d space_shrink(#)==font_info(#)(param_base(#)+space_shrink_code).sc
- {shrink between words}
-@d x_height(#)==font_info(#)(param_base(#)+x_height_code).sc
- {one ex}
-@d quad(#)==font_info(#)(param_base(#)+quad_code).sc
- {one em}
-@d extra_space(#)==font_info(#)(param_base(#)+extra_space_code).sc
- {additional space at end of sentence}
-@z
-%---------------------------------------
-@x [30] m.560 l.10876 - Omega
-@p function read_font_info(@!u:pointer;@!nom,@!aire:str_number;
- @!s:scaled):internal_font_number; {input a \.{TFM} file}
-@y
-@p function read_font_info(@!u:pointer;@!nom,@!aire:str_number;
- @!s:scaled;offset:quarterword):internal_font_number; {input a \.{TFM} file}
-@z
-%---------------------------------------
-@x [30] m.560 l.10882 - Omega
- {sizes of subfiles}
-@!f:internal_font_number; {the new font's number}
-@!g:internal_font_number; {the number to return}
-@!a,@!b,@!c,@!d:eight_bits; {byte variables}
-@y
-@!font_dir:halfword;
- {sizes of subfiles}
-@!f:internal_font_number; {the new font's number}
-@!g:internal_font_number; {the number to return}
-@!a,@!b,@!c,@!d:integer; {byte variables}
-@!i,@!k_param,@!param,@!font_counter:integer; {counters}
-@!font_level,@!header_length:integer;
-@!nco,@!ncw,@!npc,@!nlw,@!neew:integer;
-@!nki,@!nwi,@!nkf,@!nwf,@!nkm,@!nwm:integer;
-@!nkr,@!nwr,@!nkg,@!nwg,@!nkp,@!nwp:integer;
-@!table_size:array [0..31] of integer;
-@!bytes_per_entry,@!extra_char_bytes:integer;
-@!repeat_no,@!table_counter:integer;
-@z
-%---------------------------------------
-@x [30] m.560 l.10888 - Omega
-@!bchar:0..256; {right boundary character, or 256}
-@y
-@!bchar:0..too_big_char; {right boundary character, or |too_big_char|}
-@!first_two:integer;
-@z
-%---------------------------------------
-@x [30] m.563 l.10943 - Omega
-if file_opened then print(" not loadable: Bad metric (TFM) file")
-else print(" not loadable: Metric (TFM) file not found");
-@y
-if file_opened then print(" not loadable: Bad metric (TFM/OFM) file")
-else print(" not loadable: Metric (TFM/OFM) file not found");
-@z
-%---------------------------------------
-@x [30] m.563 l.10943 - Omega
-if aire="" then pack_file_name(nom,TEX_font_area,".tfm")
-else pack_file_name(nom,aire,".tfm");
-if not b_open_in(tfm_file) then abort;
-@y
-if aire="" then pack_file_name(nom,TEX_font_area,".ofm")
-else pack_file_name(nom,aire,".ofm");
-if not b_open_in(tfm_file) then abort;
-@z
-%---------------------------------------
-@x [30] m.564 l.10962 - Omega
-@d store_four_quarters(#)==begin fget; a:=fbyte; qw.b0:=qi(a);
- fget; b:=fbyte; qw.b1:=qi(b);
- fget; c:=fbyte; qw.b2:=qi(c);
- fget; d:=fbyte; qw.b3:=qi(d);
- #:=qw;
- end
-@y
-@d read_sixteen_unsigned(#)==begin #:=fbyte;
- fget; #:=#*@'400+fbyte;
- end
-@d read_thirtytwo(#)==begin #:=fbyte;
- if #>127 then abort;
- fget; #:=#*@'400+fbyte;
- fget; #:=#*@'400+fbyte;
- fget; #:=#*@'400+fbyte;
- end
-@d store_four_bytes(#)==begin fget; a:=fbyte; qw.b0:=a;
- fget; b:=fbyte; qw.b1:=b;
- fget; c:=fbyte; qw.b2:=c;
- fget; d:=fbyte; qw.b3:=d;
- #:=qw;
- end
-@d store_char_info(#)==begin if (font_level<>-1) then
- begin fget; read_sixteen_unsigned(a); qw.b0:=a;
- fget; read_sixteen_unsigned(b); qw.b1:=b;
- fget; read_sixteen_unsigned(c); qw.b2:=c;
- fget; read_sixteen_unsigned(d); qw.b3:=d;
- #:=qw
- end
-else
- begin fget; a:=fbyte; qw.b0:=a;
- fget; b:=fbyte; b:=((b div 16)*256)+(b mod 16); qw.b1:=b;
- fget; c:=fbyte; c:=((c div 4)*256)+(c mod 4); qw.b2:=c;
- fget; d:=fbyte; qw.b3:=d;
- #:=qw
- end
-end
-@d store_four_quarters(#)==begin if (font_level<>-1) then
- begin fget; read_sixteen_unsigned(a); qw.b0:=a;
- fget; read_sixteen_unsigned(b); qw.b1:=b;
- fget; read_sixteen_unsigned(c); qw.b2:=c;
- fget; read_sixteen_unsigned(d); qw.b3:=d;
- #:=qw
- end
-else
- begin fget; a:=fbyte; qw.b0:=a;
- fget; b:=fbyte; qw.b1:=b;
- fget; c:=fbyte; qw.b2:=c;
- fget; d:=fbyte; qw.b3:=d;
- #:=qw
- end
-end
-@z
-%---------------------------------------
-@x [30] m.565 l.10970 - Omega
-begin read_sixteen(lf);
-fget; read_sixteen(lh);
-fget; read_sixteen(bc);
-fget; read_sixteen(ec);
-if (bc>ec+1)or(ec>255) then abort;
-if bc>255 then {|bc=256| and |ec=255|}
- begin bc:=1; ec:=0;
- end;
-fget; read_sixteen(nw);
-fget; read_sixteen(nh);
-fget; read_sixteen(nd);
-fget; read_sixteen(ni);
-fget; read_sixteen(nl);
-fget; read_sixteen(nk);
-fget; read_sixteen(ne);
-fget; read_sixteen(np);
-if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort;
-if (nw=0)or(nh=0)or(nd=0)or(ni=0) then abort;
-end
-@y
-nco:=0; ncw:=0; npc:=0;
-nki:=0; nwi:=0; nkf:=0; nwf:=0; nkm:=0; nwm:=0;
-nkr:=0; nwr:=0; nkg:=0; nwg:=0; nkp:=0; nwp:=0;
-read_sixteen(first_two);
-if first_two<>0 then begin
- font_level:=-1;
- lf:=first_two;
- fget; read_sixteen(lh);
- fget; read_sixteen(bc);
- fget; read_sixteen(ec);
- if (bc>ec+1)or(ec>255) then abort;
- if bc>255 then {|bc=256| and |ec=255|}
- begin bc:=1; ec:=0;
- end;
- fget; read_sixteen(nw);
- fget; read_sixteen(nh);
- fget; read_sixteen(nd);
- fget; read_sixteen(ni);
- fget; read_sixteen(nl);
- fget; read_sixteen(nk);
- fget; read_sixteen(ne);
- fget; read_sixteen(np);
- header_length:=6;
- ncw:=(ec-bc+1);
- nlw:=nl;
- neew:=ne;
- end
-else begin
- fget; read_sixteen(font_level);
- if (font_level<>0) and (font_level<>1) then abort;
- fget; read_thirtytwo(lf);
- fget; read_thirtytwo(lh);
- fget; read_thirtytwo(bc);
- fget; read_thirtytwo(ec);
- if (bc>ec+1)or(ec>biggest_char) then abort;
- if bc>65535 then {|bc=65536| and |ec=65535|}
- begin bc:=1; ec:=0;
- end;
- fget; read_thirtytwo(nw);
- fget; read_thirtytwo(nh);
- fget; read_thirtytwo(nd);
- fget; read_thirtytwo(ni);
- fget; read_thirtytwo(nl);
- fget; read_thirtytwo(nk);
- fget; read_thirtytwo(ne);
- fget; read_thirtytwo(np);
- fget; read_thirtytwo(font_dir);
- nlw:=2*nl;
- neew:=2*ne;
- if font_level=0 then begin
- header_length:=14;
- ncw:=2*(ec-bc+1);
- end
- else begin
- header_length:=29;
- fget; read_thirtytwo(nco);
- fget; read_thirtytwo(ncw);
- fget; read_thirtytwo(npc);
- fget; read_thirtytwo(nki); {Kinds of font ivalues}
- fget; read_thirtytwo(nwi); {Words of font ivalues}
- fget; read_thirtytwo(nkf); {Kinds of font fvalues}
- fget; read_thirtytwo(nwf); {Words of font fvalues}
- fget; read_thirtytwo(nkm); {Kinds of font mvalues}
- fget; read_thirtytwo(nwm); {Words of font mvalues}
- fget; read_thirtytwo(nkr); {Kinds of font rules}
- fget; read_thirtytwo(nwr); {Words of font rules}
- fget; read_thirtytwo(nkg); {Kinds of font glues}
- fget; read_thirtytwo(nwg); {Words of font glues}
- fget; read_thirtytwo(nkp); {Kinds of font penalties}
- fget; read_thirtytwo(nwp); {Words of font penalties}
- end
- end;
-if lf<>(header_length+lh+ncw+nw+nh+nd+ni+nlw+nk+neew+np+
- nki+nwi+nkf+nwf+nkm+nwm+nkr+nwr+nkg+nwg+nkp+nwp) then abort;
-@z
-%---------------------------------------
-@x [30] m.566 l.10996 - Omega
-lf:=lf-6-lh; {|lf| words should be loaded into |font_info|}
-if np<7 then lf:=lf+7-np; {at least seven parameters will appear}
-if (font_ptr=font_max)or(fmem_ptr+lf>font_mem_size) then
- @<Apologize for not loading the font, |goto done|@>;
-f:=font_ptr+1;
-char_base[f]:=fmem_ptr-bc;
-width_base[f]:=char_base[f]+ec+1;
-height_base[f]:=width_base[f]+nw;
-depth_base[f]:=height_base[f]+nh;
-italic_base[f]:=depth_base[f]+nd;
-lig_kern_base[f]:=italic_base[f]+ni;
-kern_base[f]:=lig_kern_base[f]+nl-kern_base_offset;
-exten_base[f]:=kern_base[f]+kern_base_offset+nk;
-param_base[f]:=exten_base[f]+ne
-@y
-case font_level of
--1: lf:=lf-6-lh; {|lf| words should be loaded into |font_info|}
- 0: lf:=lf-14-lh-(ec-bc+1)-nl-ne;
- {some of the sections contain pairs of
- words that become single |memory_word|s}
- 1: lf:=lf-29-lh-ncw+(1+npc)*(ec-bc+1)-nl-ne;
- {We explode the characters}
-end;
-if np<7 then lf:=lf+7-np; {at least seven parameters will appear}
-if (font_ptr=font_max) then
- @<Apologize for not loading the font, |goto done|@>;
-f:=font_ptr+1;
-allocate_font_table(f,offset_charinfo_base+lf+100);
- {leave room for 100 extra parameters -- potential bug}
-font_file_size(f):=offset_charinfo_base+lf+100;
-font_used(f):=false;
-font_offset(f):=offset;
-char_base(f):=offset_charinfo_base-bc;
-char_attr_base(f):=char_base(f)+ec+1;
-ivalues_start(f):=char_attr_base(f)+npc*(ec-bc+1);
-fvalues_start(f):=ivalues_start(f)+nki;
-mvalues_start(f):=fvalues_start(f)+nkf;
-rules_start(f):=mvalues_start(f)+nkm;
-glues_start(f):=rules_start(f)+nkr;
-penalties_start(f):=glues_start(f)+nkg;
-ivalues_base(f):=penalties_start(f)+nkp;
-fvalues_base(f):=ivalues_base(f)+nwi;
-mvalues_base(f):=fvalues_base(f)+nwf;
-rules_base(f):=mvalues_base(f)+nwm;
-glues_base(f):=rules_base(f)+nwr;
-penalties_base(f):=glues_base(f)+nwg;
-width_base(f):=penalties_base(f)+nwp;
-height_base(f):=width_base(f)+nw;
-depth_base(f):=height_base(f)+nh;
-italic_base(f):=depth_base(f)+nd;
-lig_kern_base(f):=italic_base(f)+ni;
-kern_base(f):=lig_kern_base(f)+nl-kern_base_offset;
-exten_base(f):=kern_base(f)+kern_base_offset+nk;
-param_base(f):=exten_base(f)+ne;
-@z
-%---------------------------------------
-@x [30] m.568 l.11026 - Omega
-store_four_quarters(font_check[f]);
-@y
-fget; font_check_0(f):=fbyte;
-fget; font_check_1(f):=fbyte;
-fget; font_check_2(f):=fbyte;
-fget; font_check_3(f):=fbyte;
-@z
-%---------------------------------------
-@x [30] m.568 l.11033 - Omega
-font_dsize[f]:=z;
-if s<>-1000 then
- if s>=0 then z:=s
- else z:=xn_over_d(z,-s,1000);
-font_size[f]:=z;
-@y
-font_dsize(f):=z;
-if s<>-1000 then
- if s>=0 then z:=s
- else z:=xn_over_d(z,-s,1000);
-font_size(f):=z;
-@z
-%---------------------------------------
-@x [30] m.569 l.11041 - Omega
-for k:=fmem_ptr to width_base[f]-1 do
- begin store_four_quarters(font_info[k].qqqq);
- if (a>=nw)or(b div @'20>=nh)or(b mod @'20>=nd)or
- (c div 4>=ni) then abort;
- case c mod 4 of
- lig_tag: if d>=nl then abort;
- ext_tag: if d>=ne then abort;
- list_tag: @<Check for charlist cycle@>;
- othercases do_nothing {|no_tag|}
- endcases;
- end
-@y
-if font_level=1 then begin
- i:=0;
- k:=ivalues_start(f);
- font_counter:=ivalues_base(f);
- while k<fvalues_start(f) do {IVALUE starts}
- begin
- read_thirtytwo(param);
- font_info(f)(k).int := font_counter;
- font_counter:=font_counter+param;
- table_size[i]:=1;
- incr(i); incr(k);
- end;
- while k<mvalues_start(f) do {FVALUE starts}
- begin
- read_thirtytwo(param);
- font_info(f)(k).int := font_counter;
- font_counter:=font_counter+param;
- table_size[i]:=1;
- incr(i); incr(k);
- end;
- while k<rules_start(f) do {MVALUE starts}
- begin
- read_thirtytwo(param);
- font_info(f)(k).int := font_counter;
- font_counter:=font_counter+param;
- table_size[i]:=1;
- incr(i); incr(k);
- end;
- while k<glues_start(f) do {RULE starts}
- begin
- read_thirtytwo(param);
- font_info(f)(k).int := font_counter;
- font_counter:=font_counter+param*3;
- table_size[i]:=3;
- incr(i); incr(k);
- end;
- while k<penalties_start(f) do {GLUE starts}
- begin
- read_thirtytwo(param);
- font_info(f)(k).int := font_counter;
- font_counter:=font_counter+param*4;
- table_size[i]:=4;
- incr(i); incr(k);
- end;
- while k<ivalues_base(f) do {PENALTY starts}
- begin
- read_thirtytwo(param);
- font_info(f)(k).int := font_counter;
- font_counter:=font_counter+param*1;
- table_size[i]:=1;
- incr(i); incr(k);
- end;
- while k<fvalues_base(f) do {IVALUE entries}
- begin
- read_thirtytwo(font_info(f)(k).int);
- incr(k);
- end;
- while k<mvalues_base(f) do {FVALUE entries}
- begin
- read_thirtytwo(font_info(f)(k).sc);
- incr(k);
- end;
- while k<rules_base(f) do {MVALUE entries}
- begin
- read_thirtytwo(font_info(f)(k).int);
- incr(k);
- end;
- while k<glues_base(f) do {RULE entries}
- begin
- store_scaled(font_info(f)(k).sc);
- store_scaled(font_info(f)(k+1).sc);
- store_scaled(font_info(f)(k+2).sc);
- k:=k+3;
- end;
- while k<penalties_base(f) do {GLUE entries}
- begin
- fget; read_sixteen(font_info(f)(k).hh.lhfield);
- fget; read_sixteen(font_info(f)(k).hh.rh);
- store_scaled(font_info(f)(k+1).sc);
- store_scaled(font_info(f)(k+2).sc);
- store_scaled(font_info(f)(k+3).sc);
- k:=k+4;
- end;
- while k<offset_charinfo_base do {PENALTY entries}
- begin
- read_thirtytwo(font_info(f)(k).int);
- incr(k);
- end;
- end;
-k:=char_base(f)+bc;
-k_param:=char_attr_base(f);
-bytes_per_entry:=(12 + 2*npc) div 4 * 4;
-extra_char_bytes:=bytes_per_entry - (10 + 2*npc);
-while k<char_attr_base(f) do begin
- store_char_info(font_info(f)(k).qqqq);
- if (a>=nw)or((b div @"100)>=nh)or((b mod @"100)>=nd)or
- ((c div @"100)>=ni) then abort;
- case c mod 4 of
- lig_tag: if d>=nl then abort;
- ext_tag: if d>=ne then abort;
- list_tag: @<Check for charlist cycle@>;
- othercases do_nothing {|no_tag|}
- endcases;
- incr(k);
- if font_level=1 then begin
- fget; read_sixteen_unsigned(repeat_no);
- for i:=0 to npc-1 do begin
- fget; read_sixteen(param);
- font_info(f)(k_param).int :=
- font_info(f)(ivalues_start(f)+i).int + param*table_size[i];
- incr(k_param);
- end;
- for i:=1 to extra_char_bytes do fget;
- for i:=1 to repeat_no do begin
- font_info(f)(k):=font_info(f)(k-1);
- incr(k);
- for table_counter:=0 to npc-1 do begin
- font_info(f)(k_param).int := font_info(f)(k_param-npc).int;
- incr(k_param);
- end;
- end;
- end;
- end
-@z
-%---------------------------------------
-@x [30] m.570 l.11059 - Omega
-@d current_character_being_worked_on==k+bc-fmem_ptr
-@y
-@d current_character_being_worked_on==k-char_base(f)
-@z
-%---------------------------------------
-@x [30] m.570 l.11065 - Omega
- begin qw:=char_info(f)(d);
- {N.B.: not |qi(d)|, since |char_base[f]| hasn't been adjusted yet}
-@y
- begin qw:=char_info(f)(d);
- {N.B.: not |qi(d)|, since |char_base(f)| hasn't been adjusted yet}
-@z
-%---------------------------------------
-@x [30] m.571 l.11098 - Omega
-for k:=width_base[f] to lig_kern_base[f]-1 do
- store_scaled(font_info[k].sc);
-if font_info[width_base[f]].sc<>0 then abort; {\\{width}[0] must be zero}
-if font_info[height_base[f]].sc<>0 then abort; {\\{height}[0] must be zero}
-if font_info[depth_base[f]].sc<>0 then abort; {\\{depth}[0] must be zero}
-if font_info[italic_base[f]].sc<>0 then abort; {\\{italic}[0] must be zero}
-@y
-for k:=width_base(f) to lig_kern_base(f)-1 do
- store_scaled(font_info(f)(k).sc);
-if font_info(f)(width_base(f)).sc<>0 then abort; {\\{width}[0] must be zero}
-if font_info(f)(height_base(f)).sc<>0 then abort; {\\{height}[0] must be zero}
-if font_info(f)(depth_base(f)).sc<>0 then abort; {\\{depth}[0] must be zero}
-if font_info(f)(italic_base(f)).sc<>0 then abort; {\\{italic}[0] must be zero}
-@z
-%---------------------------------------
-@x [30] m.573 l.11114 - Omega
-@ @d check_existence(#)==@t@>@;@/
- begin check_byte_range(#);
- qw:=char_info(f)(#); {N.B.: not |qi(#)|}
- if not char_exists(qw) then abort;
- end
-
-@<Read ligature/kern program@>=
-bch_label:=@'77777; bchar:=256;
-if nl>0 then
- begin for k:=lig_kern_base[f] to kern_base[f]+kern_base_offset-1 do
- begin store_four_quarters(font_info[k].qqqq);
- if a>128 then
- begin if 256*c+d>=nl then abort;
- if a=255 then if k=lig_kern_base[f] then bchar:=b;
- end
- else begin if b<>bchar then check_existence(b);
- if c<128 then check_existence(d) {check ligature}
- else if 256*(c-128)+d>=nk then abort; {check kern}
- if a<128 then if k-lig_kern_base[f]+a+1>=nl then abort;
- end;
- end;
- if a=255 then bch_label:=256*c+d;
- end;
-for k:=kern_base[f]+kern_base_offset to exten_base[f]-1 do
- store_scaled(font_info[k].sc);
-@y
-@ @d check_existence(#)==@t@>@;@/
- begin check_byte_range(#);
- qw:=char_info(f)(#+font_offset(f)); {N.B.: not |qi(#)|}
- if not char_exists(qw) then abort;
- end
-
-@<Read ligature/kern program@>=
-bch_label:=nl {infinity}; bchar:=too_big_char;
-if nl>0 then
- begin for k:=lig_kern_base(f) to kern_base(f)+kern_base_offset-1 do
- begin store_four_quarters(font_info(f)(k).qqqq);
- if a>128 then
- begin if 256*c+d>=nl then abort;
- if a=255 then if k=lig_kern_base(f) then bchar:=b;
- end
- else begin if b<>bchar then check_existence(b);
- if c<128 then check_existence(d) {check ligature}
- else if 256*(c-128)+d>=nk then abort; {check kern}
- if a<128 then if k-lig_kern_base(f)+a+1>=nl then abort;
- end;
- end;
- if a=255 then bch_label:=256*c+d;
- end;
-for k:=kern_base(f)+kern_base_offset to exten_base(f)-1 do
- store_scaled(font_info(f)(k).sc);
-@z
-%---------------------------------------
-@x [30] m.574 l.11141 - Omega
-for k:=exten_base[f] to param_base[f]-1 do
- begin store_four_quarters(font_info[k].qqqq);
-@y
-for k:=exten_base(f) to param_base(f)-1 do
- begin store_four_quarters(font_info(f)(k).qqqq);
-@z
-%---------------------------------------
-@x [30] m.575 l.11157 - Omega
- fget; font_info[param_base[f]].sc:=
- (sw*@'20)+(fbyte div@'20);
- end
- else store_scaled(font_info[param_base[f]+k-1].sc);
-if eof(tfm_file) then abort;
-for k:=np+1 to 7 do font_info[param_base[f]+k-1].sc:=0;
-@y
- fget; font_info(f)(param_base(f)).sc:=
- (sw*@'20)+(fbyte div@'20);
- end
- else store_scaled(font_info(f)(param_base(f)+k-1).sc);
-if eof(tfm_file) then abort;
-for k:=np+1 to 7 do font_info(f)(param_base(f)+k-1).sc:=0;
-@z
-%---------------------------------------
-@x [30] m.576 l.11169 - Omega
-@d adjust(#)==#[f]:=qo(#[f])
- {correct for the excess |min_quarterword| that was added}
-
-@<Make final adjustments...@>=
-if np>=7 then font_params[f]:=np@+else font_params[f]:=7;
-hyphen_char[f]:=default_hyphen_char; skew_char[f]:=default_skew_char;
-if bch_label<nl then bchar_label[f]:=bch_label+lig_kern_base[f]
-else bchar_label[f]:=non_address;
-font_bchar[f]:=qi(bchar);
-font_false_bchar[f]:=qi(bchar);
-if bchar<=ec then if bchar>=bc then
- begin qw:=char_info(f)(bchar); {N.B.: not |qi(bchar)|}
- if char_exists(qw) then font_false_bchar[f]:=non_char;
- end;
-font_name[f]:=nom;
-font_area[f]:=aire;
-font_bc[f]:=bc; font_ec[f]:=ec; font_glue[f]:=null;
-adjust(char_base); adjust(width_base); adjust(lig_kern_base);
-adjust(kern_base); adjust(exten_base);
-decr(param_base[f]);
-fmem_ptr:=fmem_ptr+lf; font_ptr:=f; g:=f; goto done
-@y
-@d adjust(#)==#(f):=qo(#(f))
- {correct for the excess |min_quarterword| that was added}
-
-@<Make final adjustments...@>=
-if np>=7 then font_params(f):=np@+else font_params(f):=7;
-font_offset(f):=offset;
-hyphen_char(f):=default_hyphen_char+offset;
-skew_char(f):=default_skew_char+offset;
-bchar:=bchar+offset;
-if bch_label<nl then bchar_label(f):=bch_label+lig_kern_base(f)
-else bchar_label(f):=non_address;
-font_bchar(f):=qi(bchar);
-font_false_bchar(f):=qi(bchar);
-if bchar<=ec then if bchar>=bc then
- begin qw:=char_info(f)(bchar); {N.B.: not |qi(bchar)|}
- if char_exists(qw) then font_false_bchar(f):=non_char;
- end;
-font_name(f):=nom;
-font_area(f):=aire;
-font_bc(f):=bc; font_ec(f):=ec; font_glue(f):=null;
-font_bc(f):=bc+offset; font_ec(f):=ec+offset; font_glue(f):=null;
-adjust(char_base); adjust(width_base); adjust(lig_kern_base);
-adjust(kern_base); adjust(exten_base);
-decr(param_base(f));
-font_ptr:=f; g:=f; goto done
-@z
-%---------------------------------------
-@x [30] m.577 l.11202 - Omega
- begin m:=cur_chr; scan_four_bit_int; f:=equiv(m+cur_val);
-@y
- begin m:=cur_chr; scan_big_four_bit_int; f:=equiv(m+cur_val);
-@z
-%---------------------------------------
-@x [30] m.578 l.11223 - Omega
-if n<=0 then cur_val:=fmem_ptr
-else begin if writing and(n<=space_shrink_code)and@|
- (n>=space_code)and(font_glue[f]<>null) then
- begin delete_glue_ref(font_glue[f]);
- font_glue[f]:=null;
- end;
- if n>font_params[f] then
- if f<font_ptr then cur_val:=fmem_ptr
- else @<Increase the number of parameters in the last font@>
- else cur_val:=n+param_base[f];
- end;
-@<Issue an error message if |cur_val=fmem_ptr|@>;
-end;
-@y
-dimen_font:=f;
-if n<=0 then cur_val:=font_file_size(f)
-else begin if writing and(n<=space_shrink_code)and@|
- (n>=space_code)and(font_glue(f)<>null) then
- begin delete_glue_ref(font_glue(f));
- font_glue(f):=null;
- end;
- if n>font_params(f) then
- if f<font_ptr then cur_val:=font_file_size(f)
- else @<Increase the number of parameters in the last font@>
- else cur_val:=n+param_base(f);
- end;
-@<Issue an error message if |cur_val=font_file_size(f)|@>;
-end;
-@z
-%---------------------------------------
-@x [30] m.579 l.11240 - Omega
-@ @<Issue an error message if |cur_val=fmem_ptr|@>=
-if cur_val=fmem_ptr then
- begin print_err("Font "); print_esc(font_id_text(f));
- print(" has only "); print_int(font_params[f]);
- print(" fontdimen parameters");
-@.Font x has only...@>
- help2("To increase the number of font parameters, you must")@/
- ("use \fontdimen immediately after the \font is loaded.");
- error;
- end
-@y
-@ @<Issue an error message if |cur_val=font_file_size(f)|@>=
-if cur_val=font_file_size(f) then
- begin print_err("Font "); print_esc(font_id_text(f));
- print(" has only "); print_int(font_params(f));
- print(" fontdimen parameters");
-@.Font x has only...@>
- help2("To increase the number of font parameters, you must")@/
- ("use \fontdimen immediately after the \font is loaded.");
- error;
- end
-@z
-%---------------------------------------
-@x [30] m.580 l.11252 - font parameters
-@ @<Increase the number of parameters...@>=
-begin repeat if fmem_ptr=font_mem_size then
- overflow("font memory",font_mem_size);
-@:TeX capacity exceeded font memory}{\quad font memory@>
-font_info[fmem_ptr].sc:=0; incr(fmem_ptr); incr(font_params[f]);
-until n=font_params[f];
-cur_val:=fmem_ptr-1; {this equals |param_base[f]+font_params[f]|}
-@y
-@ @<Increase the number of parameters...@>=
-begin if n+font_params(f)>font_file_size(f) then
- begin print_nl("Out of font parameter space"); succumb; end;
-repeat
-font_info(f)(param_base(f)+font_params(f)).sc:=0; incr(font_params(f));
-until n=font_params(f);
-cur_val:=param_base(f)+font_params(f);
-@z
-%---------------------------------------
-@x [30] m.581 l.11268 - font parameters
- slow_print(font_name[f]); print_char("!"); end_diagnostic(false);
-@y
- slow_print(font_name(f)); print_char("!"); end_diagnostic(false);
-@z
-%---------------------------------------
-@x [30] m.582 l.11276 - font parameters
-begin if font_bc[f]<=c then if font_ec[f]>=c then
-@y
-begin if font_bc(f)<=c then if font_ec(f)>=c then
-@z
-%---------------------------------------
-@x [32] m.592 l.11820 - Omega
-@!c,@!f:quarterword; {character and font in current |char_node|}
-@y
-@!c,@!f:quarterword; {character and font in current |char_node|}
-@!oval,@!ocmd:integer; {used by |out_cmd| for generating
- |set|, |fnt| and |fnt_def| commands}
-@z
-%---------------------------------------
-@x [32] m.602 l.11939 - Omega
-@ Here's a procedure that outputs a font definition. Since \TeX82 uses at
-most 256 different fonts per job, |fnt_def1| is always used as the command code.
-@y
-@ Here's a procedure that outputs a font definition. $\Omega$ allows
-more than 256 different fonts per job, so the right font definition
-command must be selected.
-
-@d Incr_Decr(#) == #
-@d Incr(#) == #:=#+Incr_Decr {increase a variable}
-@d Decr(#) == #:=#-Incr_Decr {decrease a variable}
-
-@d dvi_debug_out(#)==begin
-dvi_out(#);
-end
-
-@d out_cmd ==
-begin
-if (oval<@"100)and(oval>=0) then begin
- if (ocmd<>set1)or(oval>127) then
- if (ocmd=fnt1)and(oval<64) then Incr(oval)(fnt_num_0) @+ else dvi_debug_out(ocmd);
- end
-else
- begin if (oval<@"10000)and(oval>=0) then dvi_debug_out(ocmd+1) @+ else @;
- begin if (oval<@"1000000)and(oval>=0) then dvi_debug_out(ocmd+2) @+ else @;
- begin dvi_debug_out(ocmd+3);
- if oval>=0 then dvi_debug_out(oval div @"1000000)
- else begin Incr(oval)(@"40000000); Incr(oval)(@"40000000);
- dvi_debug_out((oval div @"1000000) + 128); oval:=oval mod @"1000000;
- end;
- dvi_debug_out(oval div @"10000); oval:=oval mod @"10000;
- end;
- dvi_debug_out(oval div @"10000); oval:=oval mod @"10000;
- end;
- dvi_debug_out(oval div @"100); oval:=oval mod @"100;
- end;
-dvi_debug_out(oval)
-end
-
-@z
-%---------------------------------------
-@x [32] m.602 l.11944 - Omega
-begin dvi_out(fnt_def1);
-dvi_out(f-font_base-1);@/
-dvi_out(qo(font_check[f].b0));
-dvi_out(qo(font_check[f].b1));
-dvi_out(qo(font_check[f].b2));
-dvi_out(qo(font_check[f].b3));@/
-dvi_four(font_size[f]);
-dvi_four(font_dsize[f]);@/
-dvi_out(length(font_area[f]));
-dvi_out(length(font_name[f]));
-@y
-begin
-oval:=f-font_base-1; ocmd:= fnt_def1; out_cmd;@/
-dvi_out(qo(font_check_0(f)));
-dvi_out(qo(font_check_1(f)));
-dvi_out(qo(font_check_2(f)));
-dvi_out(qo(font_check_3(f)));@/
-dvi_four(font_size(f));
-dvi_four(font_dsize(f));@/
-dvi_out(length(font_area(f)));
-dvi_out(length(font_name(f)));
-@z
-%---------------------------------------
-@x [32] m.603 l.11958 - Omega
-for k:=str_start[font_area[f]] to str_start[font_area[f]+1]-1 do
- dvi_out(so(str_pool[k]));
-for k:=str_start[font_name[f]] to str_start[font_name[f]+1]-1 do
- dvi_out(so(str_pool[k]))
-@y
-for k:=str_start(font_area(f)) to str_start(font_area(f)+1)-1 do
- dvi_out(so(str_pool[k]));
-for k:=str_start(font_name(f)) to str_start(font_name(f)+1)-1 do
- dvi_out(so(str_pool[k]))
-@z
-%---------------------------------------
-@x [32] m.620 l.12334 - Omega
- if c>=qi(128) then dvi_out(set1);
- dvi_out(qo(c));@/
-@y
- oval:=c-font_offset(f); ocmd:=set1; out_cmd;@/
-@z
-%---------------------------------------
-@x [32] m.621 l.12345 - Omega
-begin if not font_used[f] then
- begin dvi_font_def(f); font_used[f]:=true;
- end;
-if f<=64+font_base then dvi_out(f-font_base-1+fnt_num_0)
-else begin dvi_out(fnt1); dvi_out(f-font_base-1);
- end;
-@y
-begin if not font_used(f) then
- begin dvi_font_def(f); font_used(f):=true;
- end;
-oval:=f-font_base-1; ocmd:=fnt1; out_cmd;@/
-@z
-%---------------------------------------
-@x [32] m.643 l.12757 - Omega
- begin if font_used[font_ptr] then dvi_font_def(font_ptr);
-@y
- begin if font_used(font_ptr) then dvi_font_def(font_ptr);
-@z
-%---------------------------------------
-@x [35] m.699 l.13742 - Omega
-@d text_size=0 {size code for the largest size in a family}
-@d script_size=16 {size code for the medium size in a family}
-@d script_script_size=32 {size code for the smallest size in a family}
-@y
-@z
-%---------------------------------------
-@x [35] m.700 l.13762 - Omega
-@d mathsy_end(#)==fam_fnt(2+#)]].sc
-@d mathsy(#)==font_info[#+param_base[mathsy_end
-@y
-@d mathsy_end(#)==sc
-@d mathsy(#)==font_info(fam_fnt(2+cur_size))(#+param_base(fam_fnt(2+cur_size))).mathsy_end
-@z
-%---------------------------------------
-@x [35] m.701 l.13789 - Omega
-@d mathex(#)==font_info[#+param_base[fam_fnt(3+cur_size)]].sc
-@y
-@d mathex(#)==font_info(fam_fnt(3+cur_size))(#+param_base(fam_fnt(3+cur_size))).sc
-@z
-%---------------------------------------
-@x [35] m.703 l.13813 - Omega
-@<Set up the values of |cur_size| and |cur_mu|, based on |cur_style|@>=
-begin if cur_style<script_style then cur_size:=text_size
-else cur_size:=16*((cur_style-text_style) div 2);
-cur_mu:=x_over_n(math_quad(cur_size),18);
-end
-@y
-@<Set up the values of |cur_size| and |cur_mu|, based on |cur_style|@>=
-begin if cur_style<script_style then cur_size:=text_size
-else cur_size:=script_size*((cur_style-text_style) div 2);
-cur_mu:=x_over_n(math_quad(cur_size),18);
-end
-@z
-%---------------------------------------
-@x [35] m.706 l.13855 - Omega
-function var_delimiter(@!d:pointer;@!s:small_number;@!v:scaled):pointer;
-label found,continue;
-var b:pointer; {the box that will be constructed}
-@!f,@!g: internal_font_number; {best-so-far and tentative font codes}
-@!c,@!x,@!y: quarterword; {best-so-far and tentative character codes}
-@!m,@!n: integer; {the number of extensible pieces}
-@!u: scaled; {height-plus-depth of a tentative character}
-@!w: scaled; {largest height-plus-depth so far}
-@!q: four_quarters; {character info}
-@!hd: eight_bits; {height-depth byte}
-@!r: four_quarters; {extensible pieces}
-@!z: small_number; {runs through font family members}
-@y
-function var_delimiter(@!d:pointer;@!s:integer;@!v:scaled):pointer;
-label found,continue;
-var b:pointer; {the box that will be constructed}
-@!f,@!g: internal_font_number; {best-so-far and tentative font codes}
-@!c,@!x,@!y: quarterword; {best-so-far and tentative character codes}
-@!m,@!n: integer; {the number of extensible pieces}
-@!u: scaled; {height-plus-depth of a tentative character}
-@!w: scaled; {largest height-plus-depth so far}
-@!q: four_quarters; {character info}
-@!hd: eight_bits; {height-depth byte}
-@!r: four_quarters; {extensible pieces}
-@!z: integer; {runs through font family members}
-@z
-%---------------------------------------
-@x [35] m.706 l.13881 - Omega
-shift_amount(b):=half(height(b)-depth(b)) - axis_height(s);
-@y
-z:=cur_size; cur_size:=s;
-shift_amount(b):=half(height(b)-depth(b)) - axis_height(cur_size);
-cur_size:=z;
-@z
-%---------------------------------------
-@x [35] m.707 l.13889 - Omega
-@<Look at the variants of |(z,x)|; set |f| and |c|...@>=
-if (z<>0)or(x<>min_quarterword) then
- begin z:=z+s+16;
- repeat z:=z-16; g:=fam_fnt(z);
- if g<>null_font then
- @<Look at the list of characters starting with |x| in
- font |g|; set |f| and |c| whenever
- a better character is found; |goto found| as soon as a
- large enough variant is encountered@>;
- until z<16;
- end
-@y
-@<Look at the variants of |(z,x)|; set |f| and |c|...@>=
-if (z<>0)or(x<>min_quarterword) then
- begin z:=z+s+script_size;
- repeat z:=z-script_size; g:=fam_fnt(z);
- if g<>null_font then
- @<Look at the list of characters starting with |x| in
- font |g|; set |f| and |c| whenever
- a better character is found; |goto found| as soon as a
- large enough variant is encountered@>;
- until z<script_size;
- end
-@z
-%---------------------------------------
-@x [35] m.708 l.13903 - Omega
-if (qo(y)>=font_bc[g])and(qo(y)<=font_ec[g]) then
-@y
-if (qo(y)>=font_bc(g))and(qo(y)<=font_ec(g)) then
-@z
-%---------------------------------------
-@x [35] m.713 l.13974 - Omega
-r:=font_info[exten_base[f]+rem_byte(q)].qqqq;@/
-@<Compute the minimum suitable height, |w|, and the corresponding
- number of extension steps, |n|; also set |width(b)|@>;
-c:=ext_bot(r);
-if c<>min_quarterword then stack_into_box(b,f,c);
-c:=ext_rep(r);
-for m:=1 to n do stack_into_box(b,f,c);
-c:=ext_mid(r);
-if c<>min_quarterword then
- begin stack_into_box(b,f,c); c:=ext_rep(r);
- for m:=1 to n do stack_into_box(b,f,c);
- end;
-c:=ext_top(r);
-@y
-r:=font_info(f)(exten_base(f)+rem_byte(q)).qqqq;@/
-@<Compute the minimum suitable height, |w|, and the corresponding
- number of extension steps, |n|; also set |width(b)|@>;
-c:=ext_bot(f)(r);
-if c<>min_quarterword then stack_into_box(b,f,c);
-c:=ext_rep(f)(r);
-for m:=1 to n do stack_into_box(b,f,c);
-c:=ext_mid(f)(r);
-if c<>min_quarterword then
- begin stack_into_box(b,f,c); c:=ext_rep(f)(r);
- for m:=1 to n do stack_into_box(b,f,c);
- end;
-c:=ext_top(f)(r);
-@z
-%---------------------------------------
-@x [35] m.714 l.13997 - Omega
-c:=ext_rep(r); u:=height_plus_depth(f,c);
-w:=0; q:=char_info(f)(c); width(b):=char_width(f)(q)+char_italic(f)(q);@/
-c:=ext_bot(r);@+if c<>min_quarterword then w:=w+height_plus_depth(f,c);
-c:=ext_mid(r);@+if c<>min_quarterword then w:=w+height_plus_depth(f,c);
-c:=ext_top(r);@+if c<>min_quarterword then w:=w+height_plus_depth(f,c);
-n:=0;
-if u>0 then while w<v do
- begin w:=w+u; incr(n);
- if ext_mid(r)<>min_quarterword then w:=w+u;
- end
-@y
-c:=ext_rep(f)(r); u:=height_plus_depth(f,c);
-w:=0; q:=char_info(f)(c); width(b):=char_width(f)(q)+char_italic(f)(q);@/
-c:=ext_bot(f)(r);@+if c<>min_quarterword then w:=w+height_plus_depth(f,c);
-c:=ext_mid(f)(r);@+if c<>min_quarterword then w:=w+height_plus_depth(f,c);
-c:=ext_top(f)(r);@+if c<>min_quarterword then w:=w+height_plus_depth(f,c);
-n:=0;
-if u>0 then while w<v do
- begin w:=w+u; incr(n);
- if (ext_mid(f)(r))<>min_quarterword then w:=w+u;
- end
-@z
-%---------------------------------------
-@x [36] m.719 l.14107 - Omega
-@!cur_style:small_number; {style code at current place in the list}
-@!cur_size:small_number; {size code corresponding to |cur_style|}
-@y
-@!cur_style:integer; {style code at current place in the list}
-@!cur_size:integer; {size code corresponding to |cur_style|}
-@z
-%---------------------------------------
-@x [36] m.720 l.14122 - Omega
-function clean_box(@!p:pointer;@!s:small_number):pointer;
-label found;
-var q:pointer; {beginning of a list to be boxed}
-@!save_style:small_number; {|cur_style| to be restored}
-@y
-function clean_box(@!p:pointer;@!s:integer):pointer;
-label found;
-var q:pointer; {beginning of a list to be boxed}
-@!save_style:integer; {|cur_style| to be restored}
-@z
-%---------------------------------------
-@x [36] m.722 l.14172 - Omega
-else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
-@y
-else begin if (qo(cur_c)>=font_bc(cur_f))and(qo(cur_c)<=font_ec(cur_f)) then
-@z
-%---------------------------------------
-@x [36] m.726 l.14228 - Omega
-procedure mlist_to_hlist;
-label reswitch, check_dimensions, done_with_noad, done_with_node, delete_q,
- done;
-var mlist:pointer; {beginning of the given list}
-@!penalties:boolean; {should penalty nodes be inserted?}
-@!style:small_number; {the given style}
-@!save_style:small_number; {holds |cur_style| during recursion}
-@!q:pointer; {runs through the mlist}
-@!r:pointer; {the most recent noad preceding |q|}
-@!r_type:small_number; {the |type| of noad |r|, or |op_noad| if |r=null|}
-@!t:small_number; {the effective |type| of noad |q| during the second pass}
-@!p,@!x,@!y,@!z: pointer; {temporary registers for list construction}
-@!pen:integer; {a penalty to be inserted}
-@!s:small_number; {the size of a noad to be deleted}
-@y
-procedure mlist_to_hlist;
-label reswitch, check_dimensions, done_with_noad, done_with_node, delete_q,
- done;
-var mlist:pointer; {beginning of the given list}
-@!penalties:boolean; {should penalty nodes be inserted?}
-@!style:integer; {the given style}
-@!save_style:integer; {holds |cur_style| during recursion}
-@!q:pointer; {runs through the mlist}
-@!r:pointer; {the most recent noad preceding |q|}
-@!r_type:integer; {the |type| of noad |r|, or |op_noad| if |r=null|}
-@!t:integer; {the effective |type| of noad |q| during the second pass}
-@!p,@!x,@!y,@!z: pointer; {temporary registers for list construction}
-@!pen:integer; {a penalty to be inserted}
-@!s:integer; {the size of a noad to be deleted}
-@z
-%---------------------------------------
-@x [36] m.741 l.14495 - Omega
-if math_type(nucleus(q))=math_char then
- begin fetch(nucleus(q));
- if char_tag(cur_i)=lig_tag then
- begin a:=lig_kern_start(cur_f)(cur_i);
- cur_i:=font_info[a].qqqq;
- if skip_byte(cur_i)>stop_flag then
- begin a:=lig_kern_restart(cur_f)(cur_i);
- cur_i:=font_info[a].qqqq;
- end;
- loop@+ begin if qo(next_char(cur_i))=skew_char[cur_f] then
- begin if op_byte(cur_i)>=kern_flag then
- if skip_byte(cur_i)<=stop_flag then s:=char_kern(cur_f)(cur_i);
- goto done1;
- end;
- if skip_byte(cur_i)>=stop_flag then goto done1;
- a:=a+qo(skip_byte(cur_i))+1;
- cur_i:=font_info[a].qqqq;
- end;
- end;
- end;
-done1:
-@y
-if math_type(nucleus(q))=math_char then
- begin fetch(nucleus(q));
- if char_tag(cur_i)=lig_tag then
- begin a:=lig_kern_start(cur_f)(cur_i);
- cur_i:=font_info(cur_f)(a).qqqq;
- if skip_byte(cur_i)>stop_flag then
- begin a:=lig_kern_restart(cur_f)(cur_i);
- cur_i:=font_info(cur_f)(a).qqqq;
- end;
- loop@+ begin if qo((next_char(cur_f)(cur_i)))=skew_char(cur_f) then
- begin if op_byte(cur_i)>=kern_flag then
- if skip_byte(cur_i)<=stop_flag then s:=char_kern(cur_f)(cur_i);
- goto done1;
- end;
- if skip_byte(cur_i)>=stop_flag then goto done1;
- a:=a+qo(skip_byte(cur_i))+1;
- cur_i:=font_info(cur_f)(a).qqqq;
- end;
- end;
- end;
-done1:
-@z
-%---------------------------------------
-@x [36] m.752 l.14722 - Omega
- cur_i:=font_info[a].qqqq;
- if skip_byte(cur_i)>stop_flag then
- begin a:=lig_kern_restart(cur_f)(cur_i);
- cur_i:=font_info[a].qqqq;
- end;
- loop@+ begin @<If instruction |cur_i| is a kern with |cur_c|, attach
- the kern after~|q|; or if it is a ligature with |cur_c|, combine
- noads |q| and~|p| appropriately; then |return| if the cursor has
- moved past a noad, or |goto restart|@>;
- if skip_byte(cur_i)>=stop_flag then return;
- a:=a+qo(skip_byte(cur_i))+1;
- cur_i:=font_info[a].qqqq;
-@y
- cur_i:=font_info(cur_f)(a).qqqq;
- if skip_byte(cur_i)>stop_flag then
- begin a:=lig_kern_restart(cur_f)(cur_i);
- cur_i:=font_info(cur_f)(a).qqqq;
- end;
- loop@+ begin @<If instruction |cur_i| is a kern with |cur_c|, attach
- the kern after~|q|; or if it is a ligature with |cur_c|, combine
- noads |q| and~|p| appropriately; then |return| if the cursor has
- moved past a noad, or |goto restart|@>;
- if skip_byte(cur_i)>=stop_flag then return;
- a:=a+qo(skip_byte(cur_i))+1;
- cur_i:=font_info(cur_f)(a).qqqq;
-@z
-%---------------------------------------
-@x [36] m.753 l.14751 - Omega
-if next_char(cur_i)=cur_c then if skip_byte(cur_i)<=stop_flag then
-@y
-if (next_char(cur_f)(cur_i))=cur_c then if skip_byte(cur_i)<=stop_flag then
-@z
-%---------------------------------------
-@x [36] m.756 l.14833 - Omega
-procedure make_scripts(@!q:pointer;@!delta:scaled);
-var p,@!x,@!y,@!z:pointer; {temporary registers for box construction}
-@!shift_up,@!shift_down,@!clr:scaled; {dimensions in the calculation}
-@!t:small_number; {subsidiary size code}
-begin p:=new_hlist(q);
-if is_char_node(p) then
- begin shift_up:=0; shift_down:=0;
- end
-else begin z:=hpack(p,natural);
- if cur_style<script_style then t:=script_size@+else t:=script_script_size;
- shift_up:=height(z)-sup_drop(t);
- shift_down:=depth(z)+sub_drop(t);
-@y
-procedure make_scripts(@!q:pointer;@!delta:scaled);
-var p,@!x,@!y,@!z:pointer; {temporary registers for box construction}
-@!shift_up,@!shift_down,@!clr:scaled; {dimensions in the calculation}
-@!t:integer; {subsidiary size code}
-begin p:=new_hlist(q);
-if is_char_node(p) then
- begin shift_up:=0; shift_down:=0;
- end
-else begin z:=hpack(p,natural);
- t:=cur_size;
- if cur_style<script_style
- then cur_size:=script_size@+else cur_size:=script_script_size;
- shift_up:=height(z)-sup_drop(cur_size);
- shift_down:=depth(z)+sub_drop(cur_size);
- cur_size:=t;
-@z
-%---------------------------------------
-@x [36] m.762 l.14967 - Omega
-function make_left_right(@!q:pointer;@!style:small_number;
- @!max_d,@!max_h:scaled):small_number;
-var delta,@!delta1,@!delta2:scaled; {dimensions used in the calculation}
-begin if style<script_style then cur_size:=text_size
-else cur_size:=16*((style-text_style) div 2);
-@y
-function make_left_right(@!q:pointer;@!style:integer;
- @!max_d,@!max_h:scaled):integer;
-var delta,@!delta1,@!delta2:scaled; {dimensions used in the calculation}
-begin if style<script_style then cur_size:=text_size
-else cur_size:=script_size*((style-text_style) div 2);
-@z
-%---------------------------------------
-@x [40] m.896 l.17534 - Omega
-done2: hyf_char:=hyphen_char[hf];
-@y
-done2: hyf_char:=hyphen_char(hf);
-@z
-%---------------------------------------
-@x [40] m.897 l.17555 - Omega
- hyf_bchar:=font_bchar[hf];
-@y
- hyf_bchar:=font_bchar(hf);
-@z
-%---------------------------------------
-@x [40] m.898 l.17578 - Omega
-if odd(subtype(s)) then hyf_bchar:=font_bchar[hf]@+else hyf_bchar:=non_char;
-@y
-if odd(subtype(s)) then hyf_bchar:=font_bchar(hf)@+else hyf_bchar:=non_char;
-@z
-%---------------------------------------
-@x [41] m.909 l.17800 - Omega
- begin k:=bchar_label[hf];
- if k=non_address then goto done@+else q:=font_info[k].qqqq;
- end
-else begin q:=char_info(hf)(cur_l);
- if char_tag(q)<>lig_tag then goto done;
- k:=lig_kern_start(hf)(q); q:=font_info[k].qqqq;
- if skip_byte(q)>stop_flag then
- begin k:=lig_kern_restart(hf)(q); q:=font_info[k].qqqq;
-@y
- begin k:=bchar_label(hf);
- if k=non_address then goto done@+else q:=font_info(hf)(k).qqqq;
- end
-else begin q:=char_info(hf)(cur_l);
- if char_tag(q)<>lig_tag then goto done;
- k:=lig_kern_start(hf)(q); q:=font_info(hf)(k).qqqq;
- if skip_byte(q)>stop_flag then
- begin k:=lig_kern_restart(hf)(q); q:=font_info(hf)(k).qqqq;
-@z
-%---------------------------------------
-@x [41] m.909 l.17811 - Omega
-loop@+begin if next_char(q)=test_char then if skip_byte(q)<=stop_flag then
-@y
-loop@+begin if (next_char(hf)(q))=test_char then if skip_byte(q)<=stop_flag then
-@z
-%---------------------------------------
-@x [41] m.909 l.17829 - Omega
- k:=k+qo(skip_byte(q))+1; q:=font_info[k].qqqq;
-@y
- k:=k+qo(skip_byte(q))+1; q:=font_info(hf)(k).qqqq;
-@z
-%---------------------------------------
-@x [41] m.915 l.17963 - Omega
- begin l:=reconstitute(l,i,font_bchar[hf],non_char)+1;
-@y
- begin l:=reconstitute(l,i,font_bchar(hf),non_char)+1;
-@z
-%---------------------------------------
-@x [41] m.916 l.17980 - Omega
-if bchar_label[hf]<>non_address then {put left boundary at beginning of new line}
-@y
-if bchar_label(hf)<>non_address then {put left boundary at beginning of new line}
-@z
-%---------------------------------------
-@x [46] m.1030 l.19987 - Omega
-hmode+no_boundary: begin get_x_token;
- if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or
- (cur_cmd=char_num) then cancel_boundary:=true;
- goto reswitch;
- end;
-@y
-hmode+no_boundary: begin get_x_token;
- if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or
- (cur_cmd=char_num) then cancel_boundary:=true;
- goto reswitch;
- end;
-hmode+char_ghost: begin t:=cur_chr; get_x_token;
- if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or
- (cur_cmd=char_num) then begin
- if t=0 then new_left_ghost:=true
- else new_right_ghost:=true;
- end;
- goto reswitch;
- end;
-@z
-%---------------------------------------
-@x [46] m.1032 l.20030 - Omega
- |font_bchar[cur_font]|,&otherwise;\cr}$$
-except when |character(lig_stack)=font_false_bchar[cur_font]|.
-@y
- |font_bchar(cur_font)|,&otherwise;\cr}$$
-except when |character(lig_stack)=font_false_bchar(cur_font)|.
-@z
-%---------------------------------------
-@x [46] m.1032
-@!cancel_boundary:boolean; {should the left boundary be ignored?}
-@!ins_disc:boolean; {should we insert a discretionary node?}
-@y
-@!cancel_boundary:boolean; {should the left boundary be ignored?}
-@!left_ghost:boolean; {character left of cursor is a left ghost}
-@!right_ghost:boolean; {character left of cursor is a right ghost}
-@!new_left_ghost:boolean; {character right of cursor is a left ghost}
-@!new_right_ghost:boolean; {character right of cursor is a right ghost}
-@!ins_disc:boolean; {should we insert a discretionary node?}
-@!k_glue:integer;
-@!font_glue_spec:pointer;
-@z
-%---------------------------------------
-@x [46] m.1033
-ligature_present:=false; cancel_boundary:=false; lft_hit:=false; rt_hit:=false;
-@y
-ligature_present:=false; cancel_boundary:=false; lft_hit:=false; rt_hit:=false;
-left_ghost:=false; right_ghost:=false;
-new_left_ghost:=false; new_right_ghost:=false;
-@z
-%---------------------------------------
-@x [46] m.1034 l.20075 - Omega
-adjust_space_factor;@/
-main_f:=cur_font;
-bchar:=font_bchar[main_f]; false_bchar:=font_false_bchar[main_f];
-if mode>0 then if language<>clang then fix_language;
-fast_get_avail(lig_stack); font(lig_stack):=main_f; cur_l:=qi(cur_chr);
-character(lig_stack):=cur_l;@/
-cur_q:=tail;
-if cancel_boundary then
- begin cancel_boundary:=false; main_k:=non_address;
- end
-else main_k:=bchar_label[main_f];
-if main_k=non_address then goto main_loop_move+2; {no left boundary processing}
-cur_r:=cur_l; cur_l:=non_char;
-goto main_lig_loop+1; {begin with cursor after left boundary}
-@y
-adjust_space_factor;@/
-main_f:=cur_font;
-bchar:=font_bchar(main_f); false_bchar:=font_false_bchar(main_f);
-if mode>0 then if language<>clang then fix_language;
-fast_get_avail(lig_stack); font(lig_stack):=main_f; cur_l:=qi(cur_chr);
-character(lig_stack):=cur_l;@/
-cur_q:=tail;
-if cancel_boundary then
- begin cancel_boundary:=false; main_k:=non_address;
- left_ghost:=new_left_ghost; right_ghost:=new_right_ghost;
- new_left_ghost:=false; new_right_ghost:=false;
- end
-else main_k:=bchar_label(main_f);
-if main_k=non_address then goto main_loop_move+2; {no left boundary processing}
-cur_r:=cur_l; cur_l:=non_char;
-if not new_right_ghost then
- goto main_lig_loop+1; {begin with cursor after left boundary}
-@z
-%---------------------------------------
-@x [46] m.1035 l.20122 - Omega
- begin if link(cur_q)>null then
- if character(tail)=qi(hyphen_char[main_f]) then ins_disc:=true;
-@y
- begin if link(cur_q)>null then
- if character(tail)=qi(hyphen_char(main_f)) then ins_disc:=true;
-@z
-%---------------------------------------
-@x [46] m.1036 l.20135 - Omega
-if lig_stack=null then goto reswitch;
-cur_q:=tail; cur_l:=character(lig_stack);
-main_loop_move+1:if not is_char_node(lig_stack) then goto main_loop_move_lig;
-main_loop_move+2:if(cur_chr<font_bc[main_f])or(cur_chr>font_ec[main_f]) then
- begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
- end;
-main_i:=char_info(main_f)(cur_l);
-if not char_exists(main_i) then
- begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
- end;
-link(tail):=lig_stack; tail:=lig_stack {|main_loop_lookahead| is next}
-@y
-if lig_stack=null then goto reswitch;
-cur_q:=tail; cur_l:=character(lig_stack);
-main_loop_move+1:if not is_char_node(lig_stack) then goto main_loop_move_lig;
-main_loop_move+2:
-left_ghost:=new_left_ghost; right_ghost:=new_right_ghost;
-new_left_ghost:=false; new_right_ghost:=false;
-if(cur_chr<font_bc(main_f))or(cur_chr>font_ec(main_f)) then
- begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
- end;
-main_i:=char_info(main_f)(cur_l);
-if not char_exists(main_i) then
- begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
- end;
-if not (left_ghost or right_ghost) then
- tail_append(lig_stack) {|main_loop_lookahead| is next}
-@z
-%---------------------------------------
-@x [46] m.1038 l.20177 - Omega
-if cur_cmd=no_boundary then bchar:=non_char;
-@y
-if cur_cmd=char_ghost then begin t:=cur_chr; get_x_token;
- if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or
- (cur_cmd=char_num) then begin
- if t=0 then new_left_ghost:=true
- else new_right_ghost:=true;
- back_input;
- goto main_loop_lookahead;
- end;
- end;
-if cur_cmd=no_boundary then bchar:=non_char;
-@z
-%---------------------------------------
-@x [46] m.1039 l.20193 - Omega
-@<If there's a ligature/kern command...@>=
-if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
-if cur_r=non_char then goto main_loop_wrapup;
-main_k:=lig_kern_start(main_f)(main_i); main_j:=font_info[main_k].qqqq;
-if skip_byte(main_j)<=stop_flag then goto main_lig_loop+2;
-main_k:=lig_kern_restart(main_f)(main_j);
-main_lig_loop+1:main_j:=font_info[main_k].qqqq;
-main_lig_loop+2:if next_char(main_j)=cur_r then
- if skip_byte(main_j)<=stop_flag then
- @<Do ligature or kern command, returning to |main_lig_loop|
- or |main_loop_wrapup| or |main_loop_move|@>;
-if skip_byte(main_j)=qi(0) then incr(main_k)
-else begin if skip_byte(main_j)>=stop_flag then goto main_loop_wrapup;
- main_k:=main_k+qo(skip_byte(main_j))+1;
- end;
-goto main_lig_loop+1
-@y
-@<If there's a ligature/kern command...@>=
-if new_right_ghost or left_ghost then goto main_loop_wrapup;
-if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
-main_k:=lig_kern_start(main_f)(main_i);
-main_j:=font_info(main_f)(main_k).qqqq;
-if skip_byte(main_j)<=stop_flag then goto main_lig_loop+2;
-main_k:=lig_kern_restart(main_f)(main_j);
-main_lig_loop+1: main_j:=font_info(main_f)(main_k).qqqq;
-main_lig_loop+2:if top_skip_byte(main_j)=0 then begin
- if next_char(main_f)(main_j)=cur_r then
- if skip_byte(main_j)<=stop_flag then
- @<Do ligature or kern command, returning to |main_lig_loop|
- or |main_loop_wrapup| or |main_loop_move|@>;
- end
- else begin
- if (font_bc(main_f)<=cur_r) then
- if (font_ec(main_f)>=cur_r) then
- if (char_exists(char_info(main_f)(cur_r))) then
- if cur_r<>bchar then
- if next_char(main_f)(main_j)=
- attr_zero_char_ivalue(main_f)(cur_r) then
- @<Do glue or penalty command@>;
- end;
-if skip_byte(main_j)=qi(0) then incr(main_k)
-else begin if skip_byte(main_j)>=stop_flag then goto main_loop_wrapup;
- main_k:=main_k+qo(skip_byte(main_j))+1;
- end;
-goto main_lig_loop+1
-
-@ There are currently three commands. Command 17 will add a penalty
-node between the two characters. Command 18 will add a glue
-node between the two characters. Command 19 will add a penalty node,
-then a glue node between the two characters. Command 20
-will add a kern nore between the two characters.
-
-@<Do glue or penalty command@>=
-begin
-if new_left_ghost or right_ghost then goto main_loop_wrapup;
-case op_byte(main_j) of
- qi(20): begin wrapup(rt_hit);
- tail_append(new_kern(attr_zero_kern(main_f)(rem_byte(main_j))));
- end;
- qi(18): begin wrapup(rt_hit);
- k_glue:=glues_base(main_f) + (rem_byte(main_j)*4);
- font_glue_spec:=new_spec(zero_glue);
- width(font_glue_spec):= font_info(main_f)(k_glue+1).sc;
- stretch(font_glue_spec):=font_info(main_f)(k_glue+2).sc;
- shrink(font_glue_spec):=font_info(main_f)(k_glue+3).sc;
- tail_append(new_glue(font_glue_spec));
- end;
- qi(19): begin wrapup(rt_hit);
- tail_append(new_penalty(attr_zero_penalty(main_f)(rem_top_byte(main_j))));
- k_glue:=glues_base(main_f) + (rem_bot_byte(main_j)*4);
- font_glue_spec:=new_spec(zero_glue);
- width(font_glue_spec):= font_info(main_f)(k_glue+1).sc;
- stretch(font_glue_spec):=font_info(main_f)(k_glue+2).sc;
- shrink(font_glue_spec):=font_info(main_f)(k_glue+3).sc;
- tail_append(new_glue(font_glue_spec));
- end;
- qi(17): begin wrapup(rt_hit);
- tail_append(new_penalty(attr_zero_penalty(main_f)(rem_byte(main_j))));
- end;
- end;
-goto main_loop_move;
-end
-@z
-%---------------------------------------
-@x [46] m.1040 l.20219 - Omega
-begin if op_byte(main_j)>=kern_flag then
- begin wrapup(rt_hit);
- tail_append(new_kern(char_kern(main_f)(main_j))); goto main_loop_move;
- end;
-if cur_l=non_char then lft_hit:=true
-else if lig_stack=null then rt_hit:=true;
-check_interrupt; {allow a way out in case there's an infinite ligature loop}
-case op_byte(main_j) of
-qi(1),qi(5):begin cur_l:=rem_byte(main_j); {\.{=:\?}, \.{=:\?>}}
- main_i:=char_info(main_f)(cur_l); ligature_present:=true;
- end;
-qi(2),qi(6):begin cur_r:=rem_byte(main_j); {\.{\?=:}, \.{\?=:>}}
- if lig_stack=null then {right boundary character is being consumed}
- begin lig_stack:=new_lig_item(cur_r); bchar:=non_char;
- end
- else if is_char_node(lig_stack) then {|link(lig_stack)=null|}
- begin main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);
- lig_ptr(lig_stack):=main_p;
- end
- else character(lig_stack):=cur_r;
- end;
-qi(3):begin cur_r:=rem_byte(main_j); {\.{\?=:\?}}
- main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);
- link(lig_stack):=main_p;
- end;
-qi(7),qi(11):begin wrapup(false); {\.{\?=:\?>}, \.{\?=:\?>>}}
- cur_q:=tail; cur_l:=rem_byte(main_j);
- main_i:=char_info(main_f)(cur_l); ligature_present:=true;
- end;
-othercases begin cur_l:=rem_byte(main_j); ligature_present:=true; {\.{=:}}
- if lig_stack=null then goto main_loop_wrapup
- else goto main_loop_move+1;
- end
-endcases;
-if op_byte(main_j)>qi(4) then
- if op_byte(main_j)<>qi(7) then goto main_loop_wrapup;
-if cur_l<non_char then goto main_lig_loop;
-main_k:=bchar_label[main_f]; goto main_lig_loop+1;
-end
-@y
-begin if op_byte(main_j)>=kern_flag then
- begin wrapup(rt_hit);
- tail_append(new_kern(char_kern(main_f)(main_j)));
- if new_left_ghost or right_ghost then begin
- subtype(tail):=explicit;
- end;
- goto main_loop_move;
- end;
-if new_left_ghost or right_ghost then goto main_loop_wrapup;
-if cur_l=non_char then lft_hit:=true
-else if lig_stack=null then rt_hit:=true;
-check_interrupt; {allow a way out in case there's an infinite ligature loop}
-case op_byte(main_j) of
-qi(1),qi(5):begin cur_l:=rem_char_byte(main_f)(main_j); {\.{=:\?}, \.{=:\?>}}
- main_i:=char_info(main_f)(cur_l); ligature_present:=true;
- end;
-qi(2),qi(6):begin cur_r:=rem_char_byte(main_f)(main_j); {\.{\?=:}, \.{\?=:>}}
- if lig_stack=null then {right boundary character is being consumed}
- begin lig_stack:=new_lig_item(cur_r); bchar:=non_char;
- end
- else if is_char_node(lig_stack) then {|link(lig_stack)=null|}
- begin main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);
- lig_ptr(lig_stack):=main_p;
- end
- else character(lig_stack):=cur_r;
- end;
-qi(3):begin cur_r:=rem_char_byte(main_f)(main_j); {\.{\?=:\?}}
- main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);
- link(lig_stack):=main_p;
- end;
-qi(7),qi(11):begin wrapup(false); {\.{\?=:\?>}, \.{\?=:\?>>}}
- cur_q:=tail; cur_l:=rem_char_byte(main_f)(main_j);
- main_i:=char_info(main_f)(cur_l); ligature_present:=true;
- end;
-othercases begin cur_l:=rem_char_byte(main_f)(main_j);
- ligature_present:=true; {\.{=:}}
- if lig_stack=null then goto main_loop_wrapup
- else goto main_loop_move+1;
- end
-endcases;
-if op_byte(main_j)>qi(4) then
- if op_byte(main_j)<>qi(7) then goto main_loop_wrapup;
-if cur_l<non_char then goto main_lig_loop;
-main_k:=bchar_label(main_f); goto main_lig_loop+1;
-end
-@z
-%---------------------------------------
-@x [46] m.1042 l.20285 - Omega
-begin main_p:=font_glue[cur_font];
-if main_p=null then
- begin main_p:=new_spec(zero_glue); main_k:=param_base[cur_font]+space_code;
- width(main_p):=font_info[main_k].sc; {that's |space(cur_font)|}
- stretch(main_p):=font_info[main_k+1].sc; {and |space_stretch(cur_font)|}
- shrink(main_p):=font_info[main_k+2].sc; {and |space_shrink(cur_font)|}
- font_glue[cur_font]:=main_p;
-@y
-begin main_p:=font_glue(cur_font);
-if main_p=null then
- begin main_p:=new_spec(zero_glue); main_k:=param_base(cur_font)+space_code;
- width(main_p):=font_info(cur_font)(main_k).sc; {that's |space(cur_font)|}
- stretch(main_p):=font_info(cur_font)(main_k+1).sc;
- {and |space_stretch(cur_font)|}
- shrink(main_p):=font_info(cur_font)(main_k+2).sc;
- {and |space_shrink(cur_font)|}
- font_glue(cur_font):=main_p;
-@z
-%---------------------------------------
-@x [47] m.1090
-vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given,
-@y
-vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given,
-vmode+char_ghost,
-@z
-%---------------------------------------
-@x [48] m.1117 l.21343 - Omega
- begin c:=hyphen_char[cur_font];
-@y
- begin c:=hyphen_char(cur_font);
-@z
-%---------------------------------------
-@x [49] m.1195 l.22361 - Omega
-if (font_params[fam_fnt(2+text_size)]<total_mathsy_params)or@|
- (font_params[fam_fnt(2+script_size)]<total_mathsy_params)or@|
- (font_params[fam_fnt(2+script_script_size)]<total_mathsy_params) then
- begin print_err("Math formula deleted: Insufficient symbol fonts");@/
-@.Math formula deleted...@>
- help3("Sorry, but I can't typeset math unless \textfont 2")@/
- ("and \scriptfont 2 and \scriptscriptfont 2 have all")@/
- ("the \fontdimen values needed in math symbol fonts.");
- error; flush_math; danger:=true;
- end
-else if (font_params[fam_fnt(3+text_size)]<total_mathex_params)or@|
- (font_params[fam_fnt(3+script_size)]<total_mathex_params)or@|
- (font_params[fam_fnt(3+script_script_size)]<total_mathex_params) then
-@y
-if (font_params(fam_fnt(2+text_size))<total_mathsy_params)or@|
- (font_params(fam_fnt(2+script_size))<total_mathsy_params)or@|
- (font_params(fam_fnt(2+script_script_size))<total_mathsy_params) then
- begin print_err("Math formula deleted: Insufficient symbol fonts");@/
-@.Math formula deleted...@>
- help3("Sorry, but I can't typeset math unless \textfont 2")@/
- ("and \scriptfont 2 and \scriptscriptfont 2 have all")@/
- ("the \fontdimen values needed in math symbol fonts.");
- error; flush_math; danger:=true;
- end
-else if (font_params(fam_fnt(3+text_size))<total_mathex_params)or@|
- (font_params(fam_fnt(3+script_size))<total_mathex_params)or@|
- (font_params(fam_fnt(3+script_script_size))<total_mathex_params) then
-@z
-%---------------------------------------
-@x [49] m.1253 l.23250 - Omega
-assign_font_dimen: begin find_font_dimen(true); k:=cur_val;
- scan_optional_equals; scan_normal_dimen; font_info[k].sc:=cur_val;
- end;
-assign_font_int: begin n:=cur_chr; scan_font_ident; f:=cur_val;
- scan_optional_equals; scan_int;
- if n=0 then hyphen_char[f]:=cur_val@+else skew_char[f]:=cur_val;
-@y
-assign_font_dimen: begin find_font_dimen(true); k:=cur_val;
- scan_optional_equals; scan_normal_dimen;
- font_info(dimen_font)(k).sc:=cur_val;
- end;
-assign_font_int: begin n:=cur_chr; scan_font_ident; f:=cur_val;
- scan_optional_equals; scan_int;
- if n=0 then hyphen_char(f):=cur_val@+else skew_char(f):=cur_val;
-@z
-%---------------------------------------
-@x [49] m.1257 l.23269 - Omega
-@!flushable_string:str_number; {string not yet referenced}
-begin if job_name=0 then open_log_file;
- {avoid confusing \.{texput} with the font name}
-@.texput@>
-get_r_token; u:=cur_cs;
-if u>=hash_base then t:=text(u)
-@y
-@!offset:integer;
-@!flushable_string:str_number; {string not yet referenced}
-begin if job_name=0 then open_log_file;
- {avoid confusing \.{texput} with the font name}
-@.texput@>
-get_r_token; u:=cur_cs;
-if u>=hash_base then t:=newtext(u)
-@z
-%---------------------------------------
-@x [49] m.1257 l.23290 - Omega
-@<Scan the font size specification@>;
-@<If this font has already been loaded, set |f| to the internal
- font number and |goto common_ending|@>;
-f:=read_font_info(u,cur_name,cur_area,s);
-common_ending: equiv(u):=f; eqtb[font_id_base+f]:=eqtb[u]; font_id_text(f):=t;
-@y
-@<Scan the font size specification@>;
-name_in_progress:=true;
-if scan_keyword("offset") then begin
- scan_int;
- offset:=cur_val;
- if (cur_val<0) then begin
- print_err("Illegal offset has been changed to 0");
- help1("The offset must be bigger than 0."); int_error(cur_val);
- offset:=0;
- end
- end
-else offset:=0;
-name_in_progress:=false;
-@<If this font has already been loaded, set |f| to the internal
- font number and |goto common_ending|@>;
-f:=read_font_info(u,cur_name,cur_area,s,offset);
-common_ending: set_equiv(u,f);
-set_new_eqtb(font_id_base+f,new_eqtb(u)); settext(font_id_base+f,t);
-@z
-%---------------------------------------
-@x [49] m.1260 l.23333 - Omega
-for f:=font_base+1 to font_ptr do
- if str_eq_str(font_name[f],cur_name)and str_eq_str(font_area[f],cur_area) then
- begin if cur_name=flushable_string then
- begin flush_string; cur_name:=font_name[f];
- end;
- if s>0 then
- begin if s=font_size[f] then goto common_ending;
- end
- else if font_size[f]=xn_over_d(font_dsize[f],-s,1000) then
- goto common_ending;
- end
-@y
-for f:=font_base+1 to font_ptr do begin
- if str_eq_str(font_name(f),cur_name) and
- str_eq_str(font_area(f),cur_area) then
- begin if cur_name=flushable_string then
- begin flush_string; cur_name:=font_name(f);
- end;
- if s>0 then
- begin if s=font_size(f) then goto common_ending;
- end
- else if font_size(f)=xn_over_d(font_dsize(f),-s,1000) then
- goto common_ending;
- end
- end
-@z
-%---------------------------------------
-@x [49] m.1261 l.23345 - Omega
-set_font:begin print("select font "); slow_print(font_name[chr_code]);
- if font_size[chr_code]<>font_dsize[chr_code] then
- begin print(" at "); print_scaled(font_size[chr_code]);
-@y
-set_font:begin print("select font "); slow_print(font_name(chr_code));
- if font_size(chr_code)<>font_dsize(chr_code) then
- begin print(" at "); print_scaled(font_size(chr_code));
-@z
-%---------------------------------------
-@x [50] m.1320 l.23983 - Omega
-@ @<Dump the font information@>=
-dump_int(fmem_ptr);
-for k:=0 to fmem_ptr-1 do dump_wd(font_info[k]);
-dump_int(font_ptr);
-for k:=null_font to font_ptr do
- @<Dump the array info for internal font number |k|@>;
-print_ln; print_int(fmem_ptr-7); print(" words of font info for ");
-print_int(font_ptr-font_base); print(" preloaded font");
-if font_ptr<>font_base+1 then print_char("s")
-@y
-@ @<Dump the font information@>=
-dump_int(font_ptr);
-for k:=null_font to font_ptr do
- @<Dump the array info for internal font number |k|@>;
-print_ln; print_int(font_ptr-font_base); print(" preloaded font");
-if font_ptr<>font_base+1 then print_char("s")
-@z
-%---------------------------------------
-@x [50] m.1321 l.23993 - Omega
-@ @<Undump the font information@>=
-undump_size(7)(font_mem_size)('font mem size')(fmem_ptr);
-for k:=0 to fmem_ptr-1 do undump_wd(font_info[k]);
-undump_size(font_base)(font_max)('font max')(font_ptr);
-for k:=null_font to font_ptr do
- @<Undump the array info for internal font number |k|@>
-@y
-@ @<Undump the font information@>=
-undump_size(font_base)(font_max)('font max')(font_ptr);
-for k:=null_font to font_ptr do
- @<Undump the array info for internal font number |k|@>
-@z
-%---------------------------------------
-@x [50] m.1322 l.24000 - Omega
-@ @<Dump the array info for internal font number |k|@>=
-begin dump_qqqq(font_check[k]);
-dump_int(font_size[k]);
-dump_int(font_dsize[k]);
-dump_int(font_params[k]);@/
-dump_int(hyphen_char[k]);
-dump_int(skew_char[k]);@/
-dump_int(font_name[k]);
-dump_int(font_area[k]);@/
-dump_int(font_bc[k]);
-dump_int(font_ec[k]);@/
-dump_int(char_base[k]);
-dump_int(width_base[k]);
-dump_int(height_base[k]);@/
-dump_int(depth_base[k]);
-dump_int(italic_base[k]);
-dump_int(lig_kern_base[k]);@/
-dump_int(kern_base[k]);
-dump_int(exten_base[k]);
-dump_int(param_base[k]);@/
-dump_int(font_glue[k]);@/
-dump_int(bchar_label[k]);
-dump_int(font_bchar[k]);
-dump_int(font_false_bchar[k]);@/
-print_nl("\font"); print_esc(font_id_text(k)); print_char("=");
-print_file_name(font_name[k],font_area[k],"");
-if font_size[k]<>font_dsize[k] then
- begin print(" at "); print_scaled(font_size[k]); print("pt");
- end;
-end
-@y
-@ @<Dump the array info for internal font number |k|@>=
-begin dump_font_table(k,param_base(k)+font_params(k)+1);
-print_nl("\font"); print_esc(font_id_text(k)); print_char("=");
-print_file_name(font_name(k),font_area(k),"");
-if font_size(k)<>font_dsize(k) then
- begin print(" at "); print_scaled(font_size(k)); print("pt");
- end;
-end
-@z
-%---------------------------------------
-@x [50] m.1323 l.24031 - Omega
-@ @<Undump the array info for internal font number |k|@>=
-begin undump_qqqq(font_check[k]);@/
-undump_int(font_size[k]);
-undump_int(font_dsize[k]);
-undump(min_halfword)(max_halfword)(font_params[k]);@/
-undump_int(hyphen_char[k]);
-undump_int(skew_char[k]);@/
-undump(0)(str_ptr)(font_name[k]);
-undump(0)(str_ptr)(font_area[k]);@/
-undump(0)(255)(font_bc[k]);
-undump(0)(255)(font_ec[k]);@/
-undump_int(char_base[k]);
-undump_int(width_base[k]);
-undump_int(height_base[k]);@/
-undump_int(depth_base[k]);
-undump_int(italic_base[k]);
-undump_int(lig_kern_base[k]);@/
-undump_int(kern_base[k]);
-undump_int(exten_base[k]);
-undump_int(param_base[k]);@/
-undump(min_halfword)(lo_mem_max)(font_glue[k]);@/
-undump(0)(fmem_ptr-1)(bchar_label[k]);
-undump(min_quarterword)(non_char)(font_bchar[k]);
-undump(min_quarterword)(non_char)(font_false_bchar[k]);
-end
-@y
-@ @<Undump the array info for internal font number |k|@>=
-begin undump_font_table(k);@/
-end
-@z
-%---------------------------------------
-@x [51] m.1334 l.24277 - Omega
- wlog(' ',fmem_ptr:1,' words of font info for ',
- font_ptr-font_base:1,' font');
- if font_ptr<>font_base+1 then wlog('s');
-@y
- wlog(font_ptr-font_base:1,' font');
- if font_ptr<>font_base+1 then wlog('s');
-@z
-%---------------------------------------
-@x [52] m.1339 l.24429 - Omega
-4: print_word(eqtb[n]);
-5: print_word(font_info[n]);
-@y
-4: print_word(new_eqtb(n));
-5: ;
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/omegadir/omnode.ch b/Build/source/texk/web2c/omegadir/omnode.ch
deleted file mode 100644
index bcbdbf1b9c3..00000000000
--- a/Build/source/texk/web2c/omegadir/omnode.ch
+++ /dev/null
@@ -1,20 +0,0 @@
-% omnode.ch: C++ - friendly Node access functions,
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
diff --git a/Build/source/texk/web2c/omegadir/omocp.ch b/Build/source/texk/web2c/omegadir/omocp.ch
deleted file mode 100644
index a99cab4c100..00000000000
--- a/Build/source/texk/web2c/omegadir/omocp.ch
+++ /dev/null
@@ -1,1068 +0,0 @@
-% omocp.ch: Reading an OCP file
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [1] m.11 l.412 - Omega OCP
- {string of length |file_name_size|; tells where the string pool appears}
-@.TeXformats@>
-@y
- {string of length |file_name_size|; tells where the string pool appears}
-@.TeXformats@>
-@!ocp_maxint=@"10000000;
-@z
-%---------------------------------------
-@x [1] m.12 l.436 - Omega OCP
-@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
-@y
-@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
-@d ocp_base=0 {smallest internal ocp number; must not be less
- than |min_quarterword|}
-@d ocp_biggest=65535 {the real biggest ocp}
-@d number_ocps=ocp_biggest-ocp_base+1
-@d ocp_list_base=0 {smallest internal ocp list number; must not be less
- than |min_quarterword|}
-@d ocp_list_biggest=65535 {the real biggest ocp list}
-@d number_ocp_lists=ocp_list_biggest-ocp_list_base+1
-@d max_active_ocp_lists=65536
-@z
-%---------------------------------------
-@x [15] m.209 l.4170 - Omega OCP
-@d max_command=set_interaction
- {the largest command code seen at |big_switch|}
-@y
-@d set_ocp=set_interaction+1
- {Place a translation process in the stream}
-@d def_ocp=set_ocp+1
- {Define and load a translation process}
-@d set_ocp_list=def_ocp+1
- {Place a list of OCPs in the stream}
-@d def_ocp_list=set_ocp_list+1
- {Define a list of OCPs}
-@d clear_ocp_lists=def_ocp_list+1
- {Remove all active OCP lists}
-@d push_ocp_list=clear_ocp_lists+1
- {Add to the sequence of active OCP lists}
-@d pop_ocp_list=push_ocp_list+1
- {Remove from the sequence of active OCP lists}
-@d ocp_list_op=pop_ocp_list+1
- {Operations for building a list of OCPs}
-@d ocp_trace_level=ocp_list_op+1
- {Tracing of active OCPs, either 0 or 1}
-@d max_command=ocp_trace_level
- {the largest command code seen at |big_switch|}
-@z
-%---------------------------------------
-@x [17] m.222 l.4523 - Omega OCP
-@d font_id_base=frozen_null_font-font_base
- {begins table of |number_fonts| permanent font identifiers}
-@d undefined_control_sequence=frozen_null_font+number_fonts
-@y
-@d font_id_base=frozen_null_font-font_base
- {begins table of |number_fonts| permanent font identifiers}
-@d frozen_null_ocp=frozen_null_font+number_fonts
- {permanent `\.{\\nullocp}'}
-@d ocp_id_base=frozen_null_ocp-ocp_base
- {begins table of |number_ocps| permanent ocp identifiers}
-@d frozen_null_ocp_list=frozen_null_ocp+number_ocps
- {permanent `\.{\\nullocplist}'}
-@d ocp_list_id_base=frozen_null_ocp_list-ocp_list_base
- {begins table of |number_ocp_lists| permanent ocp list identifiers}
-@d undefined_control_sequence=frozen_null_ocp_list+number_ocp_lists
-@z
-%---------------------------------------
-@x
-@d toks_base=local_base+10 {table of |number_regs| token list registers}
-@y
-@d ocp_trace_level_base=local_base+10
-@d ocp_active_number_base=ocp_trace_level_base+1
-@d ocp_active_min_ptr_base = ocp_active_number_base+1
-@d ocp_active_max_ptr_base = ocp_active_min_ptr_base+1
-@d ocp_active_base = ocp_active_max_ptr_base+1
-@d toks_base=ocp_active_base+max_active_ocp_lists
- {table of |number_regs| token list registers}
-@z
-%---------------------------------------
-@x [17] m.232 l.4799 - Omega OCP
-@d null_font==font_base
-@y
-@d null_font==font_base
-@d null_ocp==ocp_base
-@d null_ocp_list==ocp_list_base
-@z
-%---------------------------------------
-@x [18] m.256 l.5479 - Omega OCP
-@d font_id_text(#) == newtext(font_id_base+#) {a frozen font identifier's name}
-@y
-@d font_id_text(#) == newtext(font_id_base+#) {a frozen font identifier's name}
-@d ocp_id_text(#) == newtext(ocp_id_base+#) {a frozen ocp identifier's name}
-@d ocp_list_id_text(#) == newtext(ocp_list_id_base+#)
- {a frozen ocp list identifier's name}
-@z
-%---------------------------------------
-@x [26] m.409 l.8254 - Omega OCP
-@t\4\4@>@<Declare procedures that scan font-related stuff@>
-@y
-@t\4\4@>@<Declare procedures that scan font-related stuff@>
-@t\4\4@>@<Declare procedures that scan ocp-related stuff@>
-@z
-%---------------------------------------
-@x [29] m.514 l.9968 - Omega OCP
-|TEX_font_area|. These system area names will, of course, vary from place
-to place.
-@y
-|TEX_font_area|. $\Omega$'s compiled translation process files whose areas
-are not given explicitly are assumed to appear in a standard system area
-called |OMEGA_ocp_area|. These system area names will, of course, vary
-from place to place.
-@z
-%---------------------------------------
-@x [29] m.514 l.9974 - Omega OCP
-@d TEX_font_area=="TeXfonts:"
-@.TeXfonts@>
-@y
-@d TEX_font_area=="TeXfonts:"
-@.TeXfonts@>
-@d OMEGA_ocp_area=="OmegaOCPs:"
-@.OmegaOCPs@>
-@z
-%---------------------------------------
-@x [30] m.582 l.10379 - Omega OCP
-@* \[30] Font metric data.
-@y
-@* \[30] Font metric data and OCPs.
-@z
-%---------------------------------------
-@x [30] m.??? l.10928 - Omega OCP
-@ @<Read and check...@>=
-@y
-@ @<Read and check the font data...@>=
-@z
-%---------------------------------------
-@x [30] m.??? l.11010 - Omega OCP
-@ @<Apologize for not loading...@>=
-@y
-@ @<Apologize for not loading the font...@>=
-@z
-%---------------------------------------
-@x [30] m.582 l.11283 - Omega OCP
-char_warning(f,c);
-new_character:=null;
-exit:end;
-@y
-char_warning(f,c);
-new_character:=null;
-exit:end;
-
-@ Here we begin the \.{OCP} file handling.
-
-@<Glob...@>=
-@!ocp_file:byte_file;
-
-@ So that is what \.{OCP} files hold.
-
-When the user defines \.{\\ocp\\f}, say, \TeX\ assigns an internal number
-to the user's ocp~\.{\\f}. Adding this number to |ocp_id_base| gives the
-|eqtb| location of a ``frozen'' control sequence that will always select
-the ocp.
-
-@<Types...@>=
-@!internal_ocp_number=ocp_base..ocp_biggest;
-@!ocp_index=integer;
-
-@ Here now is the array of ocp arrays.
-
-@<Glob...@>=
-@!ocp_ptr:internal_ocp_number; {largest internal ocp number in use}
-
-@ Besides the arrays just enumerated, we have two directory arrays that
-make it easy to get at the individual entries in |ocp_info|.
-The beginning of the info for the |j|-th state in the |i|-th ocp is at
-location |ocp_info[ocp_state_base[i]+j]| and the |k|-th entry is in
-location |ocp_info[ocp_info[ocp_state_base[i]+j]+k]|.
-(These formulas assume that |min_quarterword| has already been
-added to |i|, |j| and |k|, since $\Omega$ stores its quarterwords that way.)
-
-@d ocp_info_end(#)==#]
-@d ocp_info(#)==ocp_tables[#,ocp_info_end
-@d offset_ocp_file_size=0
-@d offset_ocp_name=1
-@d offset_ocp_area=offset_ocp_name+1
-@d offset_ocp_external=offset_ocp_area+1
-@d offset_ocp_external_arg=offset_ocp_external+1
-@d offset_ocp_input=offset_ocp_external_arg+1
-@d offset_ocp_output=offset_ocp_input+1
-@d offset_ocp_no_tables=offset_ocp_output+1
-@d offset_ocp_no_states=offset_ocp_no_tables+1
-@d offset_ocp_table_base=offset_ocp_no_states+1
-@d offset_ocp_state_base=offset_ocp_table_base+1
-@d offset_ocp_info=offset_ocp_state_base+1
-@d ocp_file_size(#)==ocp_info(#)(offset_ocp_file_size)
-@d ocp_name(#)==ocp_info(#)(offset_ocp_name)
-@d ocp_area(#)==ocp_info(#)(offset_ocp_area)
-@d ocp_external(#)==ocp_info(#)(offset_ocp_external)
-@d ocp_external_arg(#)==ocp_info(#)(offset_ocp_external_arg)
-@d ocp_input(#)==ocp_info(#)(offset_ocp_input)
-@d ocp_output(#)==ocp_info(#)(offset_ocp_output)
-@d ocp_no_tables(#)==ocp_info(#)(offset_ocp_no_tables)
-@d ocp_no_states(#)==ocp_info(#)(offset_ocp_no_states)
-@d ocp_table_base(#)==ocp_info(#)(offset_ocp_table_base)
-@d ocp_state_base(#)==ocp_info(#)(offset_ocp_state_base)
-
-@ $\Omega$ always knows at least one ocp, namely the null ocp.
-It does nothing.
-
-@<Initialize table...@>=
-ocp_ptr:=null_ocp;
-allocate_ocp_table(null_ocp,17);
-ocp_file_size(null_ocp):=17;
-ocp_name(null_ocp):="nullocp"; ocp_area(null_ocp):="";
-ocp_external(null_ocp):=0; ocp_external_arg(null_ocp):=0;
-ocp_input(null_ocp):=1; ocp_output(null_ocp):=1;
-ocp_no_tables(null_ocp):=0;
-ocp_no_states(null_ocp):=1;
-ocp_table_base(f):=offset_ocp_info;
-ocp_state_base(f):=offset_ocp_info;
-ocp_info(null_ocp)(offset_ocp_info) := offset_ocp_info+2; {number of entries}
-ocp_info(null_ocp)(offset_ocp_info+1) := offset_ocp_info+5; {number of entries}
-ocp_info(null_ocp)(offset_ocp_info+2) := 23; {|OTP_LEFT_START|}
-ocp_info(null_ocp)(offset_ocp_info+3) := 3; {|OTP_RIGHT_CHAR|}
-ocp_info(null_ocp)(offset_ocp_info+4) := 36; {|OTP_STOP|}
-
-
-@ @<Put each...@>=
-primitive("nullocp", set_ocp, null_ocp);
-settext(frozen_null_ocp,"nullocp");
-set_new_eqtb(frozen_null_ocp,new_eqtb(cur_val));
-geq_define(ocp_active_number_base, data, 0);
-geq_define(ocp_active_min_ptr_base, data, 0);
-geq_define(ocp_active_max_ptr_base, data, 0);
-
-@ Of course we want to define macros that suppress the detail of how ocp
-information is actually packed, so that we don't have to write things like
-$$\hbox{|ocp_info[k+ocp_info[j+ocp_state_base[i]]]|}$$
-too often. The \.{WEB} definitions here make |ocp_state_entry(i)(j)(k)|
-(|ocp_table_entry(i)(j)(k)|) the |k|-th word in the |j|-th state (table)
-of the |i|-th ocp.
-@^inner loop@>
-
-@d ocp_state_end(#)==#]
-@d ocp_state_one(#)==#*2]+ocp_state_end
-@d ocp_state_entry(#)==ocp_tables[#,ocp_tables[#,ocp_state_base(#)+ocp_state_one
-
-@d ocp_state_no_end(#)==#*2+1]
-@d ocp_state_no(#)==ocp_tables[#,ocp_state_base(#)+ocp_state_no_end
-
-@d ocp_table_end(#)==#]
-@d ocp_table_one(#)==#*2]+ocp_table_end
-@d ocp_table_entry(#)==ocp_tables[#,ocp_tables[#,ocp_table_base(#)+ocp_table_one
-
-@d ocp_table_no_end(#)==#*2+1]
-@d ocp_table_no(#)==ocp_tables[#,ocp_table_base(#)+ocp_table_no_end
-
-@ $\Omega$ checks the information of a \.{OCP} file for validity as the
-file is being read in, so that no further checks will be needed when
-typesetting is going on. The somewhat tedious subroutine that does this
-is called |read_ocp_info|. It has three parameters: the user ocp
-identifier~|u|, and the file name and area strings |nom| and |aire|.
-
-The subroutine opens and closes a global file variable called |ocp_file|.
-It returns the value of the internal ocp number that was just loaded.
-If an error is detected, an error message is issued and no ocp
-information is stored; |null_ocp| is returned in this case.
-
-@d bad_ocp=11 {label for |read_ocp_info|}
-@d ocp_abort(#)==begin print("OCP file error (");
- print(#); print(")"); print_ln; goto bad_ocp end
- {do this when the \.{OCP} data is wrong}
-
-@p function read_ocp_info(@!u:pointer;@!nom,@!aire,@!ext:str_number;
- @!external_ocp:boolean)
- :internal_ocp_number; {input a \.{OCP} file}
-label done,bad_ocp,not_found;
-var
-@!file_opened:boolean; {was |ocp_file| successfully opened?}
-@!f:internal_ocp_number; {the new ocp's number}
-@!g:internal_ocp_number; {the number to return}
-@!ocpword:integer;
-@!ocpmem_run_ptr:ocp_index;
-@!ocp_length,real_ocp_length:integer; {length of ocp file}
-@!previous_address:ocp_index;
-@!temp_ocp_input:integer;
-@!temp_ocp_output:integer;
-@!temp_ocp_no_tables:integer;
-@!temp_ocp_no_states:integer;
-@!i,new_offset,room_for_tables,room_for_states:integer;
-begin g:=null_ocp;@/
-@<Read and check the ocp data; |ocp_abort| if the \.{OCP} file is
- malformed; if there's no room for this ocp, say so and |goto
- done|; otherwise |incr(ocp_ptr)| and |goto done|@>;
-bad_ocp: @<Report that the ocp won't be loaded@>;
-done: if file_opened then b_close(ocp_file);
-ocp_name(f):=nom; ocp_area(f):=aire;
-read_ocp_info:=g;
-end;
-
-@ $\Omega$ does not give precise details about why it
-rejects a particular \.{OCP} file.
-
-@d start_ocp_error_message==print_err("Translation process ");
- sprint_cs(u); print_char("="); print_file_name(nom,aire,"");
-
-@<Report that the ocp won't be loaded@>=
-start_ocp_error_message;
-@.Translation process x=xx not loadable...@>
-if file_opened then print(" not loadable: Bad ocp file")
-else print(" not loadable: ocp file not found");
-help2("I wasn't able to read the data for this ocp,")@/
-("so I will ignore the ocp specification.");
-error
-
-@ @<Read and check the ocp data...@>=
-if external_ocp then
- @<Check |ocp_file| exists@>
-else begin
- @<Open |ocp_file| for input@>;
- @<Read the {\.{OCP}} file@>;
- end;
-
-@ @<Check |ocp_file| exists@>=
-begin
-file_opened:=false;
-pack_file_name(nom,aire,ext);
-b_test_in;
-if name_length=0 then ocp_abort("opening file");
-f :=ocp_ptr+1;
-allocate_ocp_table(f,13);
-ocp_file_size(f):=13;
-for i:=1 to name_length do begin
- append_char(name_of_file[i]);
- end;
-ocp_external(f):=make_string;
-scan_string_argument;
-ocp_external_arg(f):=cur_val;
-ocp_name(f):=""; ocp_area(f):="";
-ocp_state_base(f):=0; ocp_table_base(f):=0;
-ocp_input(f):=1; ocp_output(f):=1;
-ocp_info(f)(offset_ocp_info):=0;
-ocp_ptr:=f; g:=f;
-goto done;
-end
-
-@ @<Open |ocp_file| for input@>=
-file_opened:=false;
-pack_file_name(nom,aire,".ocp");
-if not b_open_in(ocp_file) then ocp_abort("opening file");
-file_opened:=true
-
-@ Note: A malformed \.{OCP} file might be shorter than it claims to be;
-thus |eof(ocp_file)| might be true when |read_ocp_info| refers to
-|ocp_file^| or when it says |get(ocp_file)|. If such circumstances
-cause system error messages, you will have to defeat them somehow,
-for example by defining |ocpget| to be `\ignorespaces|begin get(ocp_file);|
-|if eof(ocp_file) then ocp_abort; end|\unskip'.
-@^system dependencies@>
-
-@d add_to_ocp_info(#)==begin ocp_tables[f,ocpmem_run_ptr]:=#;
- incr(ocpmem_run_ptr);
- end
-@d ocpget==get(ocp_file)
-@d ocpbyte==ocp_file^
-@d ocp_read(#)==begin ocpword:=ocpbyte;
- if ocpword>127 then ocp_abort("checking first octet");
- ocpget; ocpword:=ocpword*@'400+ocpbyte;
- ocpget; ocpword:=ocpword*@'400+ocpbyte;
- ocpget; ocpword:=ocpword*@'400+ocpbyte;
- #:=ocpword;
- end
-@d ocp_read_all(#)==begin ocpget; ocp_read(#); end
-@d ocp_read_info==begin ocp_read_all(ocpword);
- add_to_ocp_info(ocpword);
- end
-
-@ @<Read the {\.{OCP}} file@>=
-begin
-f :=ocp_ptr+1;
-ocpmem_run_ptr:=offset_ocp_info;
-ocp_read(ocp_length);
-real_ocp_length:=ocp_length-7;
-ocp_read_all(temp_ocp_input);
-ocp_read_all(temp_ocp_output);
-ocp_read_all(temp_ocp_no_tables);
-ocp_read_all(room_for_tables);
-ocp_read_all(temp_ocp_no_states);
-ocp_read_all(room_for_states);
-if real_ocp_length <>
- (temp_ocp_no_tables + room_for_tables +
- temp_ocp_no_states + room_for_states) then
- ocp_abort("checking size");
-real_ocp_length:=real_ocp_length+12+
- temp_ocp_no_states+temp_ocp_no_tables;
-allocate_ocp_table(f,real_ocp_length);
-ocp_external(f):=0;
-ocp_external_arg(f):=0;
-ocp_file_size(f):=real_ocp_length;
-ocp_input(f):=temp_ocp_input;
-ocp_output(f):=temp_ocp_output;
-ocp_no_tables(f):=temp_ocp_no_tables;
-ocp_no_states(f):=temp_ocp_no_states;
-ocp_table_base(f):=ocpmem_run_ptr;
-if ocp_no_tables(f) <> 0 then begin
- previous_address:=ocpmem_run_ptr+2*(ocp_no_tables(f));
- for i:=1 to ocp_no_tables(f) do begin
- add_to_ocp_info(previous_address);
- ocp_read_all(new_offset);
- add_to_ocp_info(new_offset);
- previous_address:=previous_address+new_offset;
- end
- end;
-if room_for_tables <> 0 then begin
- for i:=1 to room_for_tables do begin
- ocp_read_info;
- end
- end;
-ocp_state_base(f):=ocpmem_run_ptr;
-if ocp_no_states(f) <> 0 then begin
- previous_address:=ocpmem_run_ptr+2*(ocp_no_states(f));
- for i:=1 to ocp_no_states(f) do begin
- add_to_ocp_info(previous_address);
- ocp_read_all(new_offset);
- add_to_ocp_info(new_offset);
- previous_address:=previous_address+new_offset;
- end;
- end;
-if room_for_states <> 0 then begin
- for i:=1 to room_for_states do begin
- ocp_read_info;
- end
- end;
-ocp_ptr:=f; g:=f;
-goto done;
-end
-
-@ Before we forget about the format of these tables, let's deal with
-$\Omega$'s basic scanning routine related to ocp information.
-
-@<Declare procedures that scan ocp-related stuff@>=
-procedure scan_ocp_ident;
-var f:internal_ocp_number;
-begin @<Get the next non-blank non-call...@>;
-if cur_cmd=set_ocp then f:=cur_chr
-else begin print_err("Missing ocp identifier");
-@.Missing ocp identifier@>
- help2("I was looking for a control sequence whose")@/
- ("current meaning has been defined by \ocp.");
- back_error; f:=null_ocp;
- end;
-cur_val:=f;
-end;
-
-
-@ Here we begin the \.{OCP} list handling.
-
-
-@<Types...@>=
-@!internal_ocp_list_number=ocp_list_base..ocp_list_biggest;
-@!ocp_list_index=integer; {index into |ocp_list_info|}
-@!ocp_lstack_index=integer; {index into |ocp_lstack_info|}
-
-@ Here now is the array of ocp arrays.
-@d ocp_list_lnext(#)==ocp_list_info[#].hh.b0
-@d ocp_list_lstack(#)==ocp_list_info[#].hh.b1
-@d ocp_list_lstack_no(#)==ocp_list_info[#+1].sc
-@d ocp_lstack_lnext(#)==ocp_lstack_info[#].hh.b0
-@d ocp_lstack_ocp(#)==ocp_lstack_info[#].hh.b1
-@d make_null_ocp_list==make_ocp_list_node(0,ocp_maxint,0)
-@d is_null_ocp_list(#)==ocp_list_lstack_no(#)=ocp_maxint
-@d make_null_ocp_lstack==0
-@d is_null_ocp_lstack(#)==#=0
-@d add_before_op=1
-@d add_after_op=2
-@d remove_before_op=3
-@d remove_after_op=4
-
-@<Glob...@>=
-@!ocp_list_info:array[ocp_list_index] of memory_word;
- {the big collection of ocp list data}
-@!ocp_listmem_ptr:ocp_list_index; {first unused word of |ocp_list_info|}
-@!ocp_listmem_run_ptr:ocp_list_index; {temp unused word of |ocp_list_info|}
-@!ocp_lstack_info:array[ocp_lstack_index] of memory_word;
- {the big collection of ocp lstack data}
-@!ocp_lstackmem_ptr:ocp_lstack_index; {first unused word of |ocp_lstack_info|}
-@!ocp_lstackmem_run_ptr:ocp_lstack_index; {temp unused word of |ocp_lstack_info|}
-@!ocp_list_ptr:internal_ocp_list_number; {largest internal ocp list number in use}
-@!ocp_list_list:array[internal_ocp_list_number] of ocp_list_index;
-
-@
-@<Initialize table...@>=
-ocp_listmem_ptr:=2;
-ocp_list_lstack(0):=0;
-ocp_list_lstack_no(0):=ocp_maxint;
-ocp_list_lnext(0):=0;
-ocp_list_ptr:=null_ocp_list;
-ocp_list_list[null_ocp_list]:=0;
-ocp_lstackmem_ptr:=1;
-
-@ $\Omega$ always knows at least one ocp list, namely the null ocp list.
-
-@ @<Put each...@>=
-primitive("nullocplist", set_ocp_list, null_ocp_list);
-settext(frozen_null_ocp_list,"nullocplist");
-set_new_eqtb(frozen_null_ocp_list,new_eqtb(cur_val));
-
-@ @p function make_ocp_list_node(llstack:ocp_lstack_index;
- llstack_no:scaled;
- llnext:ocp_list_index):ocp_list_index;
-var p:ocp_list_index;
-begin
-p:=ocp_listmem_run_ptr;
-ocp_list_lstack(p):=llstack;
-ocp_list_lstack_no(p):=llstack_no;
-ocp_list_lnext(p):=llnext;
-ocp_listmem_run_ptr:=ocp_listmem_run_ptr+2;
-make_ocp_list_node:=p;
-end;
-
-function make_ocp_lstack_node(locp:internal_ocp_number;
- llnext:ocp_lstack_index) : ocp_lstack_index;
-var p:ocp_lstack_index;
-begin
-p:=ocp_lstackmem_run_ptr;
-ocp_lstack_ocp(p):=locp;
-ocp_lstack_lnext(p):=llnext;
-incr(ocp_lstackmem_run_ptr);
-make_ocp_lstack_node:=p;
-end;
-
-function copy_ocp_lstack(llstack:ocp_lstack_index):ocp_lstack_index;
-var result:ocp_lstack_index;
-begin
-if is_null_ocp_lstack(llstack) then
- result:=make_null_ocp_lstack
-else
- result:=make_ocp_lstack_node(ocp_lstack_ocp(llstack),
- copy_ocp_lstack(ocp_lstack_lnext(llstack)));
-copy_ocp_lstack:=result;
-end;
-
-function copy_ocp_list(list:ocp_list_index):ocp_list_index;
-var result:ocp_list_index;
-begin
-if is_null_ocp_list(list) then
- result:=make_null_ocp_list
-else
- result:=make_ocp_list_node(copy_ocp_lstack(ocp_list_lstack(list)),
- ocp_list_lstack_no(list),
- copy_ocp_list(ocp_list_lnext(list)));
-copy_ocp_list:=result;
-end;
-
-function ocp_ensure_lstack(list:ocp_list_index; llstack_no:scaled):
- ocp_list_index;
-var p:ocp_list_index;
- q:ocp_list_index;
-begin
-p:=list;
-if is_null_ocp_list(p) then begin
- ocp_list_lstack_no(p) := llstack_no;
- ocp_list_lnext(p) := make_null_ocp_list;
- end
-else if ocp_list_lstack_no(p) > llstack_no then begin
- ocp_list_lnext(p):=
- make_ocp_list_node(ocp_list_lstack(p),
- ocp_list_lstack_no(p),
- ocp_list_lnext(p));
- ocp_list_lstack(p):=0;
- ocp_list_lstack_no(p):=llstack_no;
- end
-else begin
- q:=ocp_list_lnext(p);
- while (not (is_null_ocp_list(q))) and
- ocp_list_lstack_no(q) <= llstack_no do begin
- p:=q; q:=ocp_list_lnext(q);
- end;
- if ocp_list_lstack_no(p) < llstack_no then begin
- ocp_list_lnext(p) := make_ocp_list_node(0, llstack_no, q);
- p := ocp_list_lnext(p);
- end;
- end;
-ocp_ensure_lstack := p;
-end;
-
-procedure ocp_apply_add(list_entry:ocp_list_index;
- lbefore:boolean;
- locp:internal_ocp_number);
-var p:ocp_lstack_index;
- q:ocp_lstack_index;
-begin
-p := ocp_list_lstack(list_entry);
-if lbefore or (p=0) then begin
- ocp_list_lstack(list_entry) := make_ocp_lstack_node(locp, p);
- end
-else begin
- q:=ocp_lstack_lnext(p);
- while q<>0 do begin
- p:=q; q:=ocp_lstack_lnext(q);
- end;
- ocp_lstack_lnext(p):=make_ocp_lstack_node(locp, null);
- end;
-end;
-
-procedure ocp_apply_remove(list_entry:ocp_list_index;
- lbefore:boolean);
-var p:ocp_lstack_index;
- q:ocp_lstack_index;
- r:ocp_lstack_index;
-begin
-p := ocp_list_lstack(list_entry);
-if p=0 then begin
- print_err("warning: stack entry already empty"); print_ln
- end
-else begin
- q := ocp_lstack_lnext(p);
- if lbefore or (q=0) then
- ocp_list_lstack(list_entry) := q
- else begin
- r:=ocp_lstack_lnext(q);
- while r <> 0 do begin
- p:=q; q:=r; r:=ocp_lstack_lnext(r);
- end;
- ocp_lstack_lnext(p) := null;
- end
- end;
-end;
-
-procedure scan_scaled; {sets |cur_val| to a scaled value}
-label done, done1, done2, found, not_found, attach_fraction;
-var negative:boolean; {should the answer be negated?}
-@!f:integer; {numerator of a fraction whose denominator is $2^{16}$}
-@!k,@!kk:small_number; {number of digits in a decimal fraction}
-@!p,@!q:pointer; {top of decimal digit stack}
-begin f:=0; arith_error:=false; negative:=false;
-@<Get the next non-blank non-sign...@>;
-back_input;
-if cur_tok=continental_point_token then cur_tok:=point_token;
-if cur_tok<>point_token then scan_int
-else begin radix:=10; cur_val:=0;
- end;
-if cur_tok=continental_point_token then cur_tok:=point_token;
-if (radix=10)and(cur_tok=point_token) then @<Scan decimal fraction@>;
-if cur_val<0 then {in this case |f=0|}
- begin negative := not negative; negate(cur_val);
- end;
-if cur_val>@'40000 then arith_error:=true
-else cur_val := cur_val*unity +f;
-if arith_error or(abs(cur_val)>=@'10000000000) then
-begin print_err("Stack number too large");
-end;
-if negative then negate(cur_val);
-end;
-
-procedure print_ocp_lstack(lstack_entry:ocp_lstack_index);
-var p:ocp_lstack_index;
-begin
-p:=lstack_entry;
-while (p<>0) do begin
- print_esc(ocp_id_text(ocp_lstack_ocp(p)));
- p:=ocp_lstack_lnext(p);
- if (p<>0) then print(",");
- end;
-end;
-
-procedure print_ocp_list(list_entry:ocp_list_index);
-var p:ocp_list_index;
-begin
-print("["); p:=list_entry;
-while not (is_null_ocp_list(p)) do begin
- print("(");
- print_scaled(ocp_list_lstack_no(p));
- print(" : ");
- print_ocp_lstack(ocp_list_lstack(p));
- print(")");
- p:=ocp_list_lnext(p);
- if not (is_null_ocp_list(p)) then print(", ");
- end;
-print("]");
-end;
-
-function scan_ocp_list: ocp_list_index;
-var llstack_no:scaled;
- lop:quarterword;
- lstack_entry:ocp_list_index;
- other_list:ocp_list_index;
- ocp_ident:internal_ocp_number;
- result:ocp_list_index;
-begin
-get_r_token;
-if cur_cmd = set_ocp_list then
- result := copy_ocp_list(ocp_list_list[cur_chr])
-else if cur_cmd <> ocp_list_op then begin
- print_err("Bad ocp list specification");
-@.Bad ocp list specification@>
- help1("I was looking for a ocp list specification.");
- result := make_null_ocp_list;
- end
-else begin
- lop:=cur_chr;
- scan_scaled; llstack_no:=cur_val;
- if (llstack_no<=0) or (llstack_no>=ocp_maxint) then begin
- print_err("Stack numbers must be between 0 and 4096 (exclusive)");
- result := make_null_ocp_list;
- end
- else begin
- if lop <= add_after_op then begin
- scan_ocp_ident; ocp_ident:=cur_val;
- end;
- other_list:=scan_ocp_list;
- lstack_entry:=ocp_ensure_lstack(other_list, llstack_no);
- if lop <= add_after_op then
- ocp_apply_add(lstack_entry, (lop=add_before_op), ocp_ident)
- else
- ocp_apply_remove(lstack_entry, (lop=remove_before_op));
- result:=other_list;
- end;
- end;
-scan_ocp_list:=result;
-end;
-
-function read_ocp_list: internal_ocp_list_number;
-var f:internal_ocp_list_number;
- g:internal_ocp_list_number;
-begin
-g:=null_ocp_list;
-f:=ocp_list_ptr+1;
-ocp_listmem_run_ptr:=ocp_listmem_ptr;
-ocp_lstackmem_run_ptr:=ocp_lstackmem_ptr;
-ocp_list_list[f]:=scan_ocp_list;
-ocp_list_ptr:=f;
-ocp_listmem_ptr:=ocp_listmem_run_ptr;
-ocp_lstackmem_ptr:=ocp_lstackmem_run_ptr;
-g:=f;
-read_ocp_list:=g;
-end;
-
-procedure scan_ocp_list_ident;
-var f:internal_ocp_list_number;
-begin @<Get the next non-blank non-call...@>;
-if cur_cmd=set_ocp_list then f:=cur_chr
-else begin print_err("Missing ocp list identifier");
-@.Missing ocp list identifier@>
- help2("I was looking for a control sequence whose")@/
- ("current meaning has been defined by \ocplist.");
- back_error; f:=null_ocp_list;
- end;
-cur_val:=f;
-end;
-
-
-@z
-%---------------------------------------
-@x [49] m.1210 l.22629 - Omega OCP
-any_mode(set_interaction):prefixed_command;
-@y
-any_mode(set_interaction),
-any_mode(set_ocp),
-any_mode(def_ocp),
-any_mode(set_ocp_list),
-any_mode(def_ocp_list),
-any_mode(clear_ocp_lists),
-any_mode(push_ocp_list),
-any_mode(pop_ocp_list),
-any_mode(ocp_list_op),
-any_mode(ocp_trace_level) : prefixed_command;
-@z
-%---------------------------------------
-@x [50] m.1302 l.23682 - Omega OCP
-@<Dump the font information@>;
-@y
-@<Dump the font information@>;
-@<Dump the ocp information@>;
-@<Dump the ocp list information@>;
-@z
-%---------------------------------------
-@x [50] m.1303 l.23711 - Omega OCP
-@<Undump the font information@>;
-@y
-@<Undump the font information@>;
-@<Undump the ocp information@>;
-@<Undump the ocp list information@>;
-@z
-%---------------------------------------
-@x [50] m.1323 l.24907 - Omega OCP
-begin undump_font_table(k);@/
-end
-@y
-begin undump_font_table(k);@/
-end
-
-@ @<Dump the ocp information@>=
-dump_int(ocp_ptr);
-for k:=null_ocp to ocp_ptr do
- @<Dump the array info for internal ocp number |k|@>;
-print_ln; print_int(ocp_ptr-ocp_base); print(" preloaded ocp");
-if ocp_ptr<>ocp_base+1 then print_char("s")
-
-@ @<Undump the ocp information@>=
-undump_size(ocp_base)(ocp_biggest)('ocp max')(ocp_ptr);
-for k:=null_ocp to ocp_ptr do
- @<Undump the array info for internal ocp number |k|@>
-
-@ @<Dump the array info for internal ocp number |k|@>=
-begin dump_ocp_table(k);
-print_nl("\ocp"); print_esc(ocp_id_text(k)); print_char("=");
-print_file_name(ocp_name(k),ocp_area(k),"");
-end
-
-@ @<Undump the array info for internal ocp number |k|@>=
-begin undump_ocp_table(k);
-end
-
-@ @<Dump the ocp list information@>=
-dump_int(ocp_listmem_ptr);
-for k:=0 to ocp_listmem_ptr-1 do dump_wd(ocp_list_info[k]);
-dump_int(ocp_list_ptr);
-for k:=null_ocp_list to ocp_list_ptr do begin
- dump_int(ocp_list_list[k]);
- print_nl("\ocplist");
- print_esc(ocp_list_id_text(k));
- print_char("=");
- print_ocp_list(ocp_list_list[k]);
- end;
-dump_int(ocp_lstackmem_ptr);
-for k:=0 to ocp_lstackmem_ptr-1 do dump_wd(ocp_lstack_info[k])
-
-@ @<Undump the ocp list information@>=
-undump_size(1)(1000000)('ocp list mem size')(ocp_listmem_ptr);
-for k:=0 to ocp_listmem_ptr-1 do undump_wd(ocp_list_info[k]);
-undump_size(ocp_list_base)(ocp_list_biggest)('ocp list max')(ocp_list_ptr);
-for k:=null_ocp_list to ocp_list_ptr do
- undump_int(ocp_list_list[k]);
-undump_size(1)(1000000)('ocp lstack mem size')(ocp_lstackmem_ptr);
-for k:=0 to ocp_lstackmem_ptr-1 do undump_wd(ocp_lstack_info[k])
-
-@z
-%---------------------------------------
-@x
-@* \[54] $\Omega$ changes.
-
-@y
-@* \[54] $\Omega$ changes.
-
-@ Here we do the main work required for reading and interpreting
- $\Omega$ Compiled Translation Processes.
-
-@ @<Put each...@>=
-primitive("ocp", def_ocp, 0);
-primitive("externalocp", def_ocp, 1);
-primitive("ocplist", def_ocp_list, 0);
-primitive("pushocplist", push_ocp_list, 0);
-primitive("popocplist", pop_ocp_list, 0);
-primitive("clearocplists", clear_ocp_lists, 0);
-primitive("addbeforeocplist", ocp_list_op, add_before_op);
-primitive("addafterocplist", ocp_list_op, add_after_op);
-primitive("removebeforeocplist", ocp_list_op, remove_before_op);
-primitive("removeafterocplist", ocp_list_op, remove_after_op);
-primitive("ocptracelevel", ocp_trace_level, 0);
-set_equiv(ocp_trace_level_base,0);
-
-@ @<Cases of |print_cmd_chr|...@>=
-set_ocp: begin
- print("select ocp ");
- slow_print(ocp_name(chr_code));
- end;
-def_ocp: if cur_chr=0 then print_esc("ocp")
- else print_esc("externalocp");
-set_ocp_list: print("select ocp list ");
-def_ocp_list: print_esc("ocplist");
-push_ocp_list: print_esc("pushocplist");
-pop_ocp_list: print_esc("popocplist");
-clear_ocp_lists: print_esc("clearocplists");
-ocp_list_op:
- if chr_code=add_before_op then print_esc("addbeforeocplist")
- else if chr_code=add_after_op then print_esc("addafterocplist")
- else if chr_code=remove_before_op then print_esc("removebeforeocplist")
- else {|chr_code|=|remove_after_op|} print_esc("removeafterocplist");
-ocp_trace_level: print_esc("ocptracelevel");
-
-@ @<Assignments@>=
-set_ocp: begin
- print_err("To use ocps, use the "); print_esc("pushocplist");
- print(" primitive");print_ln
- end;
-def_ocp: new_ocp(a);
-set_ocp_list: begin
- print_err("To use ocp lists, use the ");
- print_esc("pushocplist"); print(" primitive");print_ln
- end;
-def_ocp_list: new_ocp_list(a);
-push_ocp_list: do_push_ocp_list(a);
-pop_ocp_list: do_pop_ocp_list(a);
-clear_ocp_lists: do_clear_ocp_lists(a);
-ocp_list_op: begin
- print_err("To build ocp lists, use the ");
- print_esc("ocplist"); print(" primitive"); print_ln
- end;
-ocp_trace_level: begin scan_optional_equals; scan_int;
- if cur_val<>0 then cur_val:=1;
- define(ocp_trace_level_base, data, cur_val);
- end;
-
-@ @<Declare subprocedures for |prefixed_command|@>=
-procedure new_ocp(@!a:small_number);
-label common_ending;
-var u:pointer; {user's ocp identifier}
-@!f:internal_ocp_number; {runs through existing ocps}
-@!t:str_number; {name for the frozen ocp identifier}
-@!old_setting:0..max_selector; {holds |selector| setting}
-@!flushable_string:str_number; {string not yet referenced}
-@!external_ocp:boolean; {external binary file}
-begin if job_name=0 then open_log_file;
- {avoid confusing \.{texput} with the ocp name}
-@.texput@>
-if cur_chr=1 then external_ocp:=true
-else external_ocp:=false;
-get_r_token; u:=cur_cs;
-if u>=hash_base then t:=newtext(u)
-else if u>=single_base then
- if u=null_cs then t:="OCP"@+else t:=u-single_base
-else begin old_setting:=selector; selector:=new_string;
- print("OCP"); print(u-active_base); selector:=old_setting;
-@.OCPx@>
- str_room(1); t:=make_string;
- end;
-define(u,set_ocp,null_ocp); scan_optional_equals; scan_file_name;
-@<If this ocp has already been loaded, set |f| to the internal
- ocp number and |goto common_ending|@>;
-f:=read_ocp_info(u,cur_name,cur_area,cur_ext,external_ocp);
-common_ending:
-set_equiv(u,f); set_new_eqtb(ocp_id_base+f,new_eqtb(u));
-settext(ocp_id_base+f,t);
-if equiv(ocp_trace_level_base)=1 then begin
- print_nl(""); print_esc("ocp"); print_esc(t); print("="); print(cur_name);
- end;
-end;
-
-@ When the user gives a new identifier to a ocp that was previously loaded,
-the new name becomes the ocp identifier of record. OCP names `\.{xyz}' and
-`\.{XYZ}' are considered to be different.
-
-@<If this ocp has already been loaded...@>=
-flushable_string:=str_ptr-1;
-for f:=ocp_base+1 to ocp_ptr do
- if str_eq_str(ocp_name(f),cur_name)and str_eq_str(ocp_area(f),cur_area) then
- begin
- if cur_name=flushable_string then begin
- flush_string; cur_name:=ocp_name(f);
- end;
- goto common_ending
- end
-
-@ @<Declare subprocedures for |prefixed_command|@>=
-procedure new_ocp_list(@!a:small_number);
-var u:pointer; {user's ocp list identifier}
-@!f:internal_ocp_list_number; {runs through existing ocp lists}
-@!t:str_number; {name for the frozen ocp list identifier}
-@!old_setting:0..max_selector; {holds |selector| setting}
-begin if job_name=0 then open_log_file;
- {avoid confusing \.{texput} with the ocp list name}
-@.texput@>
-get_r_token; u:=cur_cs;
-if u>=hash_base then t:=newtext(u)
-else if u>=single_base then
- if u=null_cs then t:="OCPLIST"@+else t:=u-single_base
-else begin old_setting:=selector; selector:=new_string;
- print("OCPLIST"); print(u-active_base); selector:=old_setting;
-@.OCPx@>
- str_room(1); t:=make_string;
- end;
-define(u,set_ocp_list,null_ocp_list); scan_optional_equals;
-f:=read_ocp_list;
- set_equiv(u,f); set_new_eqtb(ocp_list_id_base+f,new_eqtb(u));
- settext(ocp_list_id_base+f,t);
-if equiv(ocp_trace_level_base)=1 then begin
- print_nl(""); print_esc("ocplist"); print_esc(t); print("=");
- print_ocp_list(ocp_list_list[f]);
- end;
-end;
-
-@ @<Declare subprocedures for |prefixed_command|@>=
-procedure do_push_ocp_list(@!a:small_number);
-var ocp_list_no:halfword;
- old_number:halfword;
- i:integer;
-begin
-scan_ocp_list_ident; ocp_list_no:=cur_val;
-old_number:=equiv(ocp_active_number_base);
-define(ocp_active_base+old_number, data, ocp_list_no);
-define(ocp_active_number_base, data, (old_number+1));
-
-if equiv(ocp_trace_level_base)=1 then begin
- print_nl("New active ocp list: {");
- for i:=old_number downto 0 do begin
- print_esc(ocp_list_id_text(equiv(ocp_active_base+i)));
- print("="); print_ocp_list(ocp_list_list[equiv(ocp_active_base+i)]);
- if i<>0 then print(",");
- end;
- print("}");
- end;
-
-active_compile;
-define(ocp_active_min_ptr_base, data, active_min_ptr);
-define(ocp_active_max_ptr_base, data, active_max_ptr);
-end;
-
-@ @<Declare subprocedures for |prefixed_command|@>=
-procedure do_pop_ocp_list(@!a:small_number);
-var old_number:halfword;
- i:integer;
-begin
-old_number:=equiv(ocp_active_number_base);
-if old_number=0 then begin
- print_err("No active ocp lists to be popped");
- end
-else
- define(ocp_active_number_base, data, (old_number-1));
-
-if equiv(ocp_trace_level_base)=1 then begin
- print_nl("New active ocp list: {");
- for i:=(old_number-2) downto 0 do begin
- print_esc(ocp_list_id_text(equiv(ocp_active_base+i)));
- print("="); print_ocp_list(ocp_list_list[equiv(ocp_active_base+i)]);
- if i<>0 then print(",");
- end;
- print("}");
- end;
-
-active_compile;
-define(ocp_active_min_ptr_base, data, active_min_ptr);
-define(ocp_active_max_ptr_base, data, active_max_ptr);
-end;
-
-@ @<Declare subprocedures for |prefixed_command|@>=
-procedure do_clear_ocp_lists(@!a:small_number);
-begin
-define(ocp_active_number_base, data, 0);
-active_compile;
-define(ocp_active_min_ptr_base, data, active_min_ptr);
-define(ocp_active_max_ptr_base, data, active_max_ptr);
-end;
-
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/omegadir/ompar.ch b/Build/source/texk/web2c/omegadir/ompar.ch
deleted file mode 100644
index 26b421ac2be..00000000000
--- a/Build/source/texk/web2c/omegadir/ompar.ch
+++ /dev/null
@@ -1,1629 +0,0 @@
-% ompar.ch: Local paragraph information
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%-------------------------
-@x [10] m.134
-@d is_char_node(#) == (#>=hi_mem_min)
- {does the argument point to a |char_node|?}
-@d font == type {the font code in a |char_node|}
-@d character == subtype {the character code in a |char_node|}
-@y
-@d is_char_node(#) == (#>=hi_mem_min)
- {does the argument point to a |char_node|?}
-@d font==type {the font code in a |char_node|}
-@d character==subtype {the character code in a |char_node|}
-@d file_col(#)==mem[#-1].hh.b1 {the column in which this character appeared}
-@z
-%-------------------------
-@x [10] m.136
-@p function new_null_box:pointer; {creates a new box node}
-var p:pointer; {the new node}
-begin p:=get_node(box_node_size); type(p):=hlist_node;
-subtype(p):=min_quarterword;
-width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
-glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
-new_null_box:=p;
-end;
-@y
-@p function new_null_box:pointer; {creates a new box node}
-var p:pointer; {the new node}
-begin p:=get_node(box_node_size); type(p):=hlist_node;
-subtype(p):=min_quarterword;
-width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
-glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
-@<LOCAL: Add info node pointer@>;
-new_null_box:=p;
-end;
-@z
-%-------------------------
-@x [10] m.139
-@p function new_rule:pointer;
-var p:pointer; {the new node}
-begin p:=get_node(rule_node_size); type(p):=rule_node;
-subtype(p):=0; {the |subtype| is not used}
-width(p):=null_flag; depth(p):=null_flag; height(p):=null_flag;
-new_rule:=p;
-end;
-@y
-@p function new_rule:pointer;
-var p:pointer; {the new node}
-begin p:=get_node(rule_node_size); type(p):=rule_node;
-subtype(p):=0; {the |subtype| is not used}
-width(p):=null_flag; depth(p):=null_flag; height(p):=null_flag;
-@<LOCAL: Add info node pointer@>;
-new_rule:=p;
-end;
-@z
-%-------------------------
-@x [10] m.144
-@p function new_ligature(@!f,@!c:quarterword; @!q:pointer):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=ligature_node;
-font(lig_char(p)):=f; character(lig_char(p)):=c; lig_ptr(p):=q;
-subtype(p):=0; new_ligature:=p;
-end;
-@#
-function new_lig_item(@!c:quarterword):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); character(p):=c; lig_ptr(p):=null;
-new_lig_item:=p;
-end;
-@y
-@d add_file_col(#)==if state>0 then file_col(#):=loc-start
- else file_col(#):=stack_col
-
-@p
-function stack_col:integer;
-label done;
-var i:integer;
- col:integer;
-begin
-col:=0;
-i:=input_ptr;
-while (i>=0) do begin
- if input_stack[i].state_field>0 then begin
- col:=input_stack[i].loc_field-input_stack[i].start_field;
- goto done;
- end;
- decr(i);
- end;
-done: stack_col:=col;
-end;
-
-function new_ligature(@!f,@!c:quarterword; @!q:pointer):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=ligature_node;
-font(lig_char(p)):=f; character(lig_char(p)):=c; lig_ptr(p):=q;
-@<LOCAL: Add info node pointer@>;
-add_file_col(p);
-subtype(p):=0; new_ligature:=p;
-end;
-@#
-function new_lig_item(@!c:quarterword):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); character(p):=c; lig_ptr(p):=null;
-@<LOCAL: Add info node pointer@>;
-new_lig_item:=p;
-end;
-@z
-%-------------------------
-@x [10] m.145
-@p function new_disc:pointer; {creates an empty |disc_node|}
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=disc_node;
-replace_count(p):=0; pre_break(p):=null; post_break(p):=null;
-new_disc:=p;
-end;
-@y
-@p function new_disc:pointer; {creates an empty |disc_node|}
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=disc_node;
-replace_count(p):=0; pre_break(p):=null; post_break(p):=null;
-@<LOCAL: Add info node pointer@>;
-new_disc:=p;
-end;
-@z
-%-------------------------
-@x [10] m.147
-@p function new_math(@!w:scaled;@!s:small_number):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=math_node;
-subtype(p):=s; width(p):=w; new_math:=p;
-end;
-@y
-@p function new_math(@!w:scaled;@!s:small_number):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=math_node;
-@<LOCAL: Add info node pointer@>;
-subtype(p):=s; width(p):=w; new_math:=p;
-end;
-@z
-%-------------------------
-@x [10] m.151
-@p function new_spec(@!p:pointer):pointer; {duplicates a glue specification}
-var q:pointer; {the new spec}
-begin q:=get_node(glue_spec_size);@/
-mem[q]:=mem[p]; glue_ref_count(q):=null;@/
-width(q):=width(p); stretch(q):=stretch(p); shrink(q):=shrink(p);
-new_spec:=q;
-end;
-@y
-@p function new_spec(@!p:pointer):pointer; {duplicates a glue specification}
-var q:pointer; {the new spec}
-begin q:=get_node(glue_spec_size);@/
-mem[q]:=mem[p]; glue_ref_count(q):=null;@/
-width(q):=width(p); stretch(q):=stretch(p); shrink(q):=shrink(p);
-new_spec:=q;
-end;
-@z
-%-------------------------
-@x [10] m.152
-@p function new_param_glue(@!n:small_number):pointer;
-var p:pointer; {the new node}
-@!q:pointer; {the glue specification}
-begin p:=get_node(small_node_size); type(p):=glue_node; subtype(p):=n+1;
-leader_ptr(p):=null;@/
-q:=@<Current |mem| equivalent of glue parameter number |n|@>@t@>;
-glue_ptr(p):=q; incr(glue_ref_count(q));
-new_param_glue:=p;
-end;
-@y
-@p function new_param_glue(@!n:small_number):pointer;
-var p:pointer; {the new node}
-@!q:pointer; {the glue specification}
-begin p:=get_node(small_node_size); type(p):=glue_node; subtype(p):=n+1;
-leader_ptr(p):=null;@/
-q:=@<Current |mem| equivalent of glue parameter number |n|@>@t@>;
-glue_ptr(p):=q; incr(glue_ref_count(q));
-@<LOCAL: Add info node pointer@>;
-new_param_glue:=p;
-end;
-@z
-%-------------------------
-@x [10] m.153
-@p function new_glue(@!q:pointer):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=glue_node; subtype(p):=normal;
-leader_ptr(p):=null; glue_ptr(p):=q; incr(glue_ref_count(q));
-new_glue:=p;
-end;
-@y
-@p function new_glue(@!q:pointer):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=glue_node; subtype(p):=normal;
-leader_ptr(p):=null; glue_ptr(p):=q; incr(glue_ref_count(q));
-@<LOCAL: Add info node pointer@>;
-new_glue:=p;
-end;
-@z
-%-------------------------
-@x [10] m.154
-@p function new_skip_param(@!n:small_number):pointer;
-var p:pointer; {the new node}
-begin temp_ptr:=new_spec(@<Current |mem| equivalent of glue parameter...@>);
-p:=new_glue(temp_ptr); glue_ref_count(temp_ptr):=null; subtype(p):=n+1;
-new_skip_param:=p;
-end;
-@y
-@p function new_skip_param(@!n:small_number):pointer;
-var p:pointer; {the new node}
-begin temp_ptr:=new_spec(@<Current |mem| equivalent of glue parameter...@>);
-p:=new_glue(temp_ptr); glue_ref_count(temp_ptr):=null; subtype(p):=n+1;
-@<LOCAL: Add info node pointer@>;
-new_skip_param:=p;
-end;
-@z
-%-------------------------
-@x [10] m.156
-@p function new_kern(@!w:scaled):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=kern_node;
-subtype(p):=normal;
-width(p):=w;
-new_kern:=p;
-end;
-@y
-@p function new_kern(@!w:scaled):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=kern_node;
-subtype(p):=normal;
-width(p):=w;
-@<LOCAL: Add info node pointer@>;
-new_kern:=p;
-end;
-@z
-%-------------------------
-@x [10] m.158
-@p function new_penalty(@!m:integer):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=penalty_node;
-subtype(p):=0; {the |subtype| is not used}
-penalty(p):=m; new_penalty:=p;
-end;
-@y
-@p function new_penalty(@!m:integer):pointer;
-var p:pointer; {the new node}
-begin p:=get_node(small_node_size); type(p):=penalty_node;
-subtype(p):=0; {the |subtype| is not used}
-@<LOCAL: Add info node pointer@>;
-penalty(p):=m; new_penalty:=p;
-end;
-@z
-%-------------------------
-@x [10] m.160 l.3270
-@ In fact, there are still more types coming. When we get to math formula
-processing we will see that a |style_node| has |type=14|; and a number
-of larger type codes will also be defined, for use in math mode only.
-@y
-@ In fact, there are still more types coming. When we get to math formula
-processing we will see that a |style_node| has |type=14|; and a number
-of larger type codes will also be defined, for use in math mode only.
-
-@d file_node=unset_node+1 {|type| to hold file names and line numbers}
-
-@d file_size=3
-@d file_no(#) == info(#+1) {number of open files}
-@d file_ref_count(#) == link(#+1) {reference count to this node}
-
-@d file_incr_ref_count(#)==begin
- if (#)<>null then incr(file_ref_count(#));
- end
-@d file_decr_ref_count(#)==begin
- if (#)<>null then begin
- decr(file_ref_count(#));
- if file_ref_count(#) = 0 then begin
- free_node(#,file_size+2*file_no(#));
- end;
- end;
- end
-
-@d info_node=unset_node+2 {|type| to hold local information}
-
-@d ptr_info(#) == link(#-1) {pointer to the local info node}
-
-@d info_size=5
-@d info_ref_count(#) == link(#+1) {reference count to this node}
-@d info_pen_inter(#) == info(#+2) {\.{\\localinterlinepenalty}}
-@d info_pen_broken(#) == link(#+2) {\.{\\localbrokenpenalty}}
-@d info_left_box(#) == info(#+3) {\.{\\localleftbox}}
-@d info_right_box(#) == link(#+3) {\.{\\localrightbox}}
-@d info_file(#) == info(#+4) {file names and line numbers}
-
-@d info_incr_ref_count(#)==begin
- if (#)<>null then incr(info_ref_count(#));
- end
-@d info_decr_ref_count(#)==begin
- if (#)<>null then begin
- decr(info_ref_count(#));
- if info_ref_count(#) = 0 then begin
- if info_left_box(#)<>null then
- flush_node_list(info_left_box(#));
- if info_right_box(#)<>null then
- flush_node_list(info_right_box(#));
- if info_file(#)<>null then
- file_decr_ref_count(info_file(#));
- free_node(#,info_size);
- #:=null;
- end;
- end;
- end
-
-@d biggest_ordinary_node=info_node
-
-@z
-%-------------------------
-@x [10] m.162
-@d zero_glue==mem_bot {specification for \.{0pt plus 0pt minus 0pt}}
-@d sfi_glue==zero_glue+glue_spec_size {\.{0pt plus 1fi minus 0pt}}
-@d fil_glue==sfi_glue+glue_spec_size {\.{0pt plus 1fil minus 0pt}}
-@d fill_glue==fil_glue+glue_spec_size {\.{0pt plus 1fill minus 0pt}}
-@d ss_glue==fill_glue+glue_spec_size {\.{0pt plus 1fil minus 1fil}}
-@d fil_neg_glue==ss_glue+glue_spec_size {\.{0pt plus -1fil minus 0pt}}
-@d lo_mem_stat_max==fil_neg_glue+glue_spec_size-1 {largest statically
- allocated word in the variable-size |mem|}
-@#
-@d page_ins_head==mem_top {list of insertion data for current page}
-@d contrib_head==mem_top-1 {vlist of items not yet on current page}
-@d page_head==mem_top-2 {vlist for current page}
-@d temp_head==mem_top-3 {head of a temporary list of some kind}
-@d hold_head==mem_top-4 {head of a temporary list of another kind}
-@d adjust_head==mem_top-5 {head of adjustment list returned by |hpack|}
-@d active==mem_top-7 {head of active list in |line_break|, needs two words}
-@d align_head==mem_top-8 {head of preamble list for alignments}
-@d end_span==mem_top-9 {tail of spanned-width lists}
-@d omit_template==mem_top-10 {a constant token list}
-@d null_list==mem_top-11 {permanently empty list}
-@d lig_trick==mem_top-12 {a ligature masquerading as a |char_node|}
-@d garbage==mem_top-12 {used for scrap information}
-@d backup_head==mem_top-13 {head of token list built by |scan_keyword|}
-@d hi_mem_stat_min==mem_top-13 {smallest statically allocated word in
- the one-word |mem|}
-@d hi_mem_stat_usage=14 {the number of one-word nodes always present}
-@y
-@d zero_glue==mem_bot+1 {specification for \.{0pt plus 0pt minus 0pt}}
-@d sfi_glue==zero_glue+glue_spec_size+1 {\.{0pt plus 1fi minus 0pt}}
-@d fil_glue==sfi_glue+glue_spec_size+1 {\.{0pt plus 1fil minus 0pt}}
-@d fill_glue==fil_glue+glue_spec_size+1 {\.{0pt plus 1fill minus 0pt}}
-@d ss_glue==fill_glue+glue_spec_size+1 {\.{0pt plus 1fil minus 1fil}}
-@d fil_neg_glue==ss_glue+glue_spec_size+1 {\.{0pt plus -1fil minus 0pt}}
-@d lo_mem_stat_max==fil_neg_glue+glue_spec_size+1 {largest statically
- allocated word in the variable-size |mem|}
-@#
-@d page_ins_head==mem_top {list of insertion data for current page}
-@d contrib_head==mem_top-2 {vlist of items not yet on current page}
-@d page_head==mem_top-4 {vlist for current page}
-@d temp_head==mem_top-6 {head of a temporary list of some kind}
-@d hold_head==mem_top-8 {head of a temporary list of another kind}
-@d adjust_head==mem_top-10 {head of adjustment list returned by |hpack|}
-@d active==mem_top-14 {head of active list in |line_break|, needs two words}
-@d align_head==mem_top-16 {head of preamble list for alignments}
-@d end_span==mem_top-18 {tail of spanned-width lists}
-@d omit_template==mem_top-20 {a constant token list}
-@d null_list==mem_top-22 {permanently empty list}
-@d lig_trick==mem_top-24 {a ligature masquerading as a |char_node|}
-@d garbage==mem_top-24 {used for scrap information}
-@d backup_head==mem_top-26 {head of token list built by |scan_keyword|}
-@d hi_mem_stat_min==mem_top-28 {smallest statically allocated word in
- the one-word |mem|}
-@d hi_mem_stat_usage=14 {the number of one-word nodes always present}
-@z
-%-------------------------
-@x [13] m.202
-@p procedure flush_node_list(@!p:pointer); {erase list of nodes starting at |p|}
-label done; {go here when node |p| has been freed}
-var q:pointer; {successor to node |p|}
-begin while p<>null do
-@^inner loop@>
- begin q:=link(p);
-@y
-@p procedure flush_node_list(@!p:pointer); {erase list of nodes starting at |p|}
-label done; {go here when node |p| has been freed}
-var q:pointer; {successor to node |p|}
-begin while p<>null do
-@^inner loop@>
- begin q:=link(p); @<LOCAL: Remove info node pointer@>;
-@z
-%-------------------------
-@x [13] m.202
- othercases confusion("flushing")
-@:this can't happen flushing}{\quad flushing@>
- endcases;@/
-@y
- info_node: begin
- @<LOCAL: Delete info node@>;
- goto done; end; {do not delete node at this time}
- othercases confusion("flushing")
-@:this can't happen flushing}{\quad flushing@>
- endcases;@/
-@z
-%-------------------------
-@x [15] m.205
-@ @<Make a copy of node |p|...@>=
-words:=1; {this setting occurs in more branches than any other}
-if is_char_node(p) then r:=get_avail
-else @<Case statement to copy different types and set |words| to the number
- of initial words not yet copied@>;
-while words>0 do
- begin decr(words); mem[r+words]:=mem[p+words];
- end
-@y
-@ @<Make a copy of node |p|...@>=
-words:=1; {this setting occurs in more branches than any other}
-if is_char_node(p) then r:=get_avail
-else @<Case statement to copy different types and set |words| to the number
- of initial words not yet copied@>;
-@<LOCAL: Copy info node pointer@>;
-file_col(r):=file_col(p);
-while words>0 do
- begin decr(words); mem[r+words]:=mem[p+words];
- end
-@z
-%-------------------------
-@x [15] m.208 l.4170
-@d min_internal=char_ghost+1 {the smallest code that can follow \.{\\the}}
-@y
-@d assign_local_box=char_ghost+1
- {box for guillemets \.{\\localleftbox} or \.{\\localrightbox}}
-@d min_internal=assign_local_box+1 {the smallest code that can follow \.{\\the}}
-@z
-%-------------------------
-@x [17] m.230 l.4860
-@d box_base=toks_base+number_regs {table of |number_regs| box registers}
-@y
-@d local_left_box_base=toks_base+number_regs
-@d local_right_box_base=local_left_box_base+1
-@d local_par_info_base=local_right_box_base+1
-@d box_base=local_par_info_base+1 {table of |number_regs| box registers}
-@z
-%-------------------------
-@x [17] m.230 l.4888
-@d box(#)==equiv(box_base+#)
-@y
-@d local_left_box==equiv(local_left_box_base)
-@d local_right_box==equiv(local_right_box_base)
-@d local_par_info==equiv(local_par_info_base)
-@d box(#)==equiv(box_base+#)
-@z
-%-------------------------
-@x [17] m.236 l.4954
-@d int_pars=55 {total number of integer parameters}
-@y
-@d local_inter_line_penalty_code=55 {local \.{\\interlinepenalty}}
-@d local_broken_penalty_code=56 {local \.{\\brokenpenalty}}
-@d char_specials_code=57
- {number of characters between column marker specials in dvi file}
-@d int_pars=58 {total number of integer parameters}
-@z
-%-------------------------
-@x [17] m.236 l.5011
-@d new_line_char==int_par(new_line_char_code)
-@y
-@d new_line_char==int_par(new_line_char_code)
-@d local_inter_line_penalty==int_par(local_inter_line_penalty_code)
-@d local_broken_penalty==int_par(local_broken_penalty_code)
-@d char_specials==int_par(char_specials_code)
-@z
-%-------------------------
-@x [19] m.269 l.5860
-@d max_group_code=16
-@y
-@d local_box_group=17 {code for `\.{\\localleftbox...\\localrightbox}'}
-@d max_group_code=17
-@z
-%-------------------------
-@x [22] m.304
-@!line : integer; {current line number in the current source file}
-@!line_stack : array[1..max_in_open] of integer;
-@y
-@!line : integer; {current line number in the current source file}
-@!line_stack : array[1..max_in_open] of integer;
-@!line_numbers : array[1..max_in_open] of integer;
-@!file_names : array[1..max_in_open] of integer;
-@!no_of_files : integer; {number of currently open files}
-
-@ @<Set init...@>=
-no_of_files:=0;
-@z
-%-------------------------
-@x [23] m.327
-@p procedure begin_file_reading;
-begin if in_open=max_in_open then overflow("text input levels",max_in_open);
-@:TeX capacity exceeded text input levels}{\quad text input levels@>
-if first=buf_size then overflow("buffer size",buf_size);
-@:TeX capacity exceeded buffer size}{\quad buffer size@>
-incr(in_open); push_input; index:=in_open;
-line_stack[index]:=line; start:=first; state:=mid_line;
-name:=0; {|terminal_input| is now |true|}
-end;
-@y
-@p procedure begin_file_reading;
-begin if in_open=max_in_open then overflow("text input levels",max_in_open);
-@:TeX capacity exceeded text input levels}{\quad text input levels@>
-if first=buf_size then overflow("buffer size",buf_size);
-@:TeX capacity exceeded buffer size}{\quad buffer size@>
-incr(in_open); push_input; index:=in_open;
-line_stack[index]:=line; start:=first; state:=mid_line;
-name:=0; {|terminal_input| is now |true|}
-@<LOCAL: Change file node@>;
-end;
-@z
-%-------------------------
-@x [24] m.362
-@ @<Read next line of file into |buffer|, or
- |goto restart| if the file has ended@>=
-begin incr(line); first:=start;
-if not force_eof then
- begin if input_ln(cur_file,true) then {not end of file}
- firm_up_the_line {this sets |limit|}
- else force_eof:=true;
- end;
-if force_eof then
- begin print_char(")"); decr(open_parens);
- update_terminal; {show user that file has been read}
- force_eof:=false;
- end_file_reading; {resume previous level}
- check_outer_validity; goto restart;
- end;
-if end_line_char_inactive then decr(limit)
-else buffer[limit]:=end_line_char;
-first:=limit+1; loc:=start; {ready to read}
-end
-@y
-@ @<Read next line of file into |buffer|, or
- |goto restart| if the file has ended@>=
-begin incr(line); first:=start;
-if not force_eof then
- begin if input_ln(cur_file,true) then {not end of file}
- firm_up_the_line {this sets |limit|}
- else force_eof:=true;
- end;
-if force_eof then
- begin print_char(")"); decr(open_parens);
- update_terminal; {show user that file has been read}
- force_eof:=false;
- end_file_reading; {resume previous level}
- check_outer_validity;
- if no_of_files>0 then decr(no_of_files);
- @<LOCAL: Change file node@>;
- goto restart;
- end;
-if end_line_char_inactive then decr(limit)
-else buffer[limit]:=end_line_char;
-first:=limit+1; loc:=start; {ready to read}
-line_numbers[no_of_files]:=line;
-@<LOCAL: Change file node@>;
-end
-@z
-%-------------------------
-@x [29] m.537
-done: name:=a_make_name_string(cur_file);
-if job_name=0 then
- begin job_name:=cur_name; open_log_file;
- end; {|open_log_file| doesn't |show_context|, so |limit|
- and |loc| needn't be set to meaningful values yet}
-if term_offset+length(name)>max_print_line-2 then print_ln
-else if (term_offset>0)or(file_offset>0) then print_char(" ");
-print_char("("); incr(open_parens); slow_print(name); update_terminal;
-state:=new_line;
-if name=str_ptr-1 then {we can conserve string pool space now}
- begin flush_string; name:=cur_name;
- end;
-@<Read the first line of the new file@>;
-@y
-done: name:=a_make_name_string(cur_file);
-if job_name=0 then
- begin job_name:=cur_name; open_log_file;
- end; {|open_log_file| doesn't |show_context|, so |limit|
- and |loc| needn't be set to meaningful values yet}
-if term_offset+length(name)>max_print_line-2 then print_ln
-else if (term_offset>0)or(file_offset>0) then print_char(" ");
-print_char("("); incr(open_parens); slow_print(name); update_terminal;
-state:=new_line;
-if name=str_ptr-1 then {we can conserve string pool space now}
- begin flush_string; name:=cur_name;
- end;
-incr(no_of_files);
-file_names[no_of_files]:=name; {keep track of file names for output specials}
-line_numbers[no_of_files]:=0; {keep track of file names for output specials}
-@<Read the first line of the new file@>;
-@z
-%-------------------------
-@x [29] m.538
-@<Read the first line...@>=
-begin line:=1;
-if input_ln(cur_file,false) then do_nothing;
-firm_up_the_line;
-if end_line_char_inactive then decr(limit)
-else buffer[limit]:=end_line_char;
-first:=limit+1; loc:=start;
-end
-@y
-@<Read the first line...@>=
-begin line:=1;
-if input_ln(cur_file,false) then do_nothing;
-firm_up_the_line;
-if end_line_char_inactive then decr(limit)
-else buffer[limit]:=end_line_char;
-first:=limit+1; loc:=start;
-line_numbers[no_of_files]:=1; {keep track of file names for output specials}
-@<LOCAL: Change file node@>;
-end
-@z
-%-------------------------
-@x [30] m.582
-@p function new_character(@!f:internal_font_number;@!c:eight_bits):pointer;
-label exit;
-var p:pointer; {newly allocated node}
-begin if font_bc(f)<=c then if font_ec(f)>=c then
- if char_exists(char_info(f)(qi(c))) then
- begin p:=get_avail; font(p):=f; character(p):=qi(c);
- new_character:=p; return;
- end;
-char_warning(f,c);
-new_character:=null;
-exit:end;
-@y
-@p function new_character(@!f:internal_font_number;@!c:eight_bits):pointer;
-label exit;
-var p:pointer; {newly allocated node}
-begin if font_bc(f)<=c then if font_ec(f)>=c then
- if char_exists(char_info(f)(qi(c))) then
- begin p:=get_avail; font(p):=f; character(p):=qi(c);
- ptr_info(p):=local_par_info; info_incr_ref_count(local_par_info);
- new_character:=p; return;
- end;
-char_warning(f,c);
-new_character:=null;
-exit:end;
-@z
-%-------------------------
-@x [32] m.617
-@ @<Initialize variables as |ship_out| begins@>=
-dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
-ensure_dvi_open;
-if total_pages=0 then
- begin dvi_out(pre); dvi_out(id_byte); {output the preamble}
-@^preamble of \.{DVI} file@>
-@y
-@ @<Initialize variables as |ship_out| begins@>=
-dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
-ensure_dvi_open;
-if total_pages=0 then
- begin dvi_out(pre); dvi_out(id_byte); {output the preamble}
-@^preamble of \.{DVI} file@>
- ptr_info(lig_trick):=null;
-@z
-%-------------------------
-@x [32] m.619
-@!p:pointer; {current position in the hlist}
-@y
-@!p:pointer; {current position in the hlist}
-@!fff:pointer; {current file position}
-@!ffi:integer; {for iterations}
-@!g:integer; {new string}
-@!newk:integer;
-@!should_create_special:boolean;
-@!chars_since_last_special:integer;
-@z
-%-------------------------
-@x [32] m.619
-while p<>null do @<Output node |p| for |hlist_out| and move to the next node,
- maintaining the condition |cur_v=base_line|@>;
-@y
-if char_specials>0 then begin
- should_create_special:=true;
- chars_since_last_special:=char_specials;
- end
-else begin
- should_create_special:=false;
- chars_since_last_special:=-1000000;
- end;
-while p<>null do @<Output node |p| for |hlist_out| and move to the next node,
- maintaining the condition |cur_v=base_line|@>;
-@z
-%-------------------------
-@x [32] m.620
-@<Output node |p| for |hlist_out|...@>=
-reswitch: if is_char_node(p) then
- begin synch_h; synch_v;
- repeat f:=font(p); c:=character(p);
-@y
-@<Output node |p| for |hlist_out|...@>=
-reswitch: if is_char_node(p) then
- begin synch_h; synch_v;
- if should_create_special then begin
- should_create_special:=false;
- if chars_since_last_special>=char_specials then
- if ptr_info(p)<>null then
- if info_file(ptr_info(p))<>null then begin
- @<LOCAL: Create special node@>;
- chars_since_last_special:=0;
- end;
- end;
- repeat f:=font(p); c:=character(p);
- incr(chars_since_last_special);
-@z
-%-------------------------
-@x [32] m.622
-move_past: cur_h:=cur_h+rule_wd;
-next_p:p:=link(p);
-end
-@y
-move_past: cur_h:=cur_h+rule_wd;
-next_p:
-if type(p)<>kern_node then should_create_special:=true;
-p:=link(p);
-end
-@z
-%-------------------------
-@x [33] m.645
-@p procedure scan_spec(@!c:group_code;@!three_codes:boolean);
-@y
-@p
-@<LOCAL: Declare |make_info_node|@>;
-procedure scan_spec(@!c:group_code;@!three_codes:boolean);
-@z
-%-------------------------
-@x [34] m.652
-@ @<Make node |p| look like a |char_node| and |goto reswitch|@>=
-begin mem[lig_trick]:=mem[lig_char(p)]; link(lig_trick):=link(p);
-p:=lig_trick; goto reswitch;
-end
-@y
-@ @<Make node |p| look like a |char_node| and |goto reswitch|@>=
-begin
-info_decr_ref_count(ptr_info(lig_trick));
-mem[lig_trick]:=mem[lig_char(p)];
-ptr_info(lig_trick):=ptr_info(p);
-info_incr_ref_count(ptr_info(p));
-file_col(lig_trick):=file_col(p);
-link(lig_trick):=link(p);
-p:=lig_trick; goto reswitch;
-end
-@z
-%-------------------------
-@x [34] m.682 l.13395 - Omega
-@d ord_noad=unset_node+3 {|type| of a noad classified Ord}
-@y
-@d ord_noad=biggest_ordinary_node+3 {|type| of a noad classified Ord}
-@z
-%-------------------------
-@x [34] m.686
-@p function new_noad:pointer;
-var p:pointer;
-begin p:=get_node(noad_size);
-type(p):=ord_noad; subtype(p):=normal;
-mem[nucleus(p)].hh:=empty_field;
-mem[subscr(p)].hh:=empty_field;
-mem[supscr(p)].hh:=empty_field;
-new_noad:=p;
-end;
-@y
-@p function new_noad:pointer;
-var p:pointer;
-begin p:=get_node(noad_size);
-type(p):=ord_noad; subtype(p):=normal;
-mem[nucleus(p)].hh:=empty_field;
-mem[subscr(p)].hh:=empty_field;
-mem[supscr(p)].hh:=empty_field;
-@<LOCAL: Add info node pointer@>;
-add_file_col(p);
-new_noad:=p;
-end;
-@z
-%---------------------------------------
-@x [34] m.688
-@d style_node=unset_node+1 {|type| of a style node}
-@y
-@d style_node=biggest_ordinary_node+1 {|type| of a style node}
-@z
-%---------------------------------------
-@x [34] m.688
-@p function new_style(@!s:small_number):pointer; {create a style node}
-var p:pointer; {the new node}
-begin p:=get_node(style_node_size); type(p):=style_node;
-subtype(p):=s; width(p):=0; depth(p):=0; {the |width| and |depth| are not used}
-new_style:=p;
-end;
-@y
-@p function new_style(@!s:small_number):pointer; {create a style node}
-var p:pointer; {the new node}
-begin p:=get_node(style_node_size); type(p):=style_node;
-subtype(p):=s; width(p):=0; depth(p):=0; {the |width| and |depth| are not used}
-@<LOCAL: Add info node pointer@>;
-add_file_col(p);
-new_style:=p;
-end;
-@z
-%---------------------------------------
-@x [34] m.689
-@d choice_node=unset_node+2 {|type| of a choice node}
-@y
-@d choice_node=biggest_ordinary_node+2 {|type| of a choice node}
-@z
-%---------------------------------------
-@x [34] m.689
-@p function new_choice:pointer; {create a choice node}
-var p:pointer; {the new node}
-begin p:=get_node(style_node_size); type(p):=choice_node;
-subtype(p):=0; {the |subtype| is not used}
-display_mlist(p):=null; text_mlist(p):=null; script_mlist(p):=null;
-script_script_mlist(p):=null;
-new_choice:=p;
-end;
-@y
-@p function new_choice:pointer; {create a choice node}
-var p:pointer; {the new node}
-begin p:=get_node(style_node_size); type(p):=choice_node;
-subtype(p):=0; {the |subtype| is not used}
-display_mlist(p):=null; text_mlist(p):=null; script_mlist(p):=null;
-script_script_mlist(p):=null;
-@<LOCAL: Add info node pointer@>;
-add_file_col(p);
-new_choice:=p;
-end;
-@z
-%---------------------------------------
-@x [36] m.755
-@ @<Create a character node |p| for |nucleus(q)|...@>=
-begin fetch(nucleus(q));
-if char_exists(cur_i) then
- begin delta:=char_italic(cur_f)(cur_i); p:=new_character(cur_f,qo(cur_c));
- if (math_type(nucleus(q))=math_text_char)and(space(cur_f)<>0) then
- delta:=0; {no italic correction in mid-word of text font}
- if (math_type(subscr(q))=empty)and(delta<>0) then
- begin link(p):=new_kern(delta); delta:=0;
- end;
- end
-else p:=null;
-end
-@y
-@ @<Create a character node |p| for |nucleus(q)|...@>=
-begin fetch(nucleus(q));
-if char_exists(cur_i) then
- begin delta:=char_italic(cur_f)(cur_i); p:=new_character(cur_f,qo(cur_c));
- info_decr_ref_count(ptr_info(p));
- ptr_info(p):=ptr_info(q);
- info_incr_ref_count(ptr_info(q));
- file_col(p):=file_col(q);
- if (math_type(nucleus(q))=math_text_char)and(space(cur_f)<>0) then
- delta:=0; {no italic correction in mid-word of text font}
- if (math_type(subscr(q))=empty)and(delta<>0) then
- begin link(p):=new_kern(delta); delta:=0;
- end;
- end
-else p:=null;
-end
-@z
-%---------------------------------------
-@x [38] m.814 l.15994
-@!just_box:pointer; {the |hlist_node| for the last line of the new paragraph}
-@y
-@!just_box:pointer; {the |hlist_node| for the last line of the new paragraph}
-@!init_local_par_info:pointer;
-@!last_local_par_info:pointer;
-@!current_file_node:pointer;
-
-@ @<Set initial...@>=
-init_local_par_info:=null;
-last_local_par_info:=null;
-current_file_node:=null;
-
-@z
-%-------------------------
-@x [38] m.821 l.16110
-@ The passive node for a given breakpoint contains only four fields:
-
-\yskip\hang|link| points to the passive node created just before this one,
-if any, otherwise it is |null|.
-
-\yskip\hang|cur_break| points to the position of this breakpoint in the
-horizontal list for the paragraph being broken.
-
-\yskip\hang|prev_break| points to the passive node that should precede this
-one in an optimal path to this breakpoint.
-
-\yskip\hang|serial| is equal to |n| if this passive node is the |n|th
-one created during the current pass. (This field is used only when
-printing out detailed statistics about the line-breaking calculations.)
-
-\yskip\noindent
-There is a global variable called |passive| that points to the most
-recently created passive node. Another global variable, |printed_node|,
-is used to help print out the paragraph when detailed information about
-the line-breaking computation is being displayed.
-
-@d passive_node_size=2 {number of words in passive nodes}
-@d cur_break==rlink {in passive node, points to position of this breakpoint}
-@d prev_break==llink {points to passive node that should precede this one}
-@d serial==info {serial number for symbolic identification}
-@y
-@ The passive node for a given breakpoint contains EIGHT fields:
-
-\yskip\hang|link| points to the passive node created just before this one,
-if any, otherwise it is |null|.
-
-\yskip\hang|cur_break| points to the position of this breakpoint in the
-horizontal list for the paragraph being broken.
-
-\yskip\hang|prev_break| points to the passive node that should precede this
-one in an optimal path to this breakpoint.
-
-\yskip\hang|serial| is equal to |n| if this passive node is the |n|th
-one created during the current pass. (This field is used only when
-printing out detailed statistics about the line-breaking calculations.)
-
-\yskip\hang|passive_pen_inter| holds the current \.{\\localinterlinepenalty}
-
-\yskip\hang|passive_pen_broken| holds the current \.{\\localbrokenpenalty}
-
-\yskip\noindent
-There is a global variable called |passive| that points to the most
-recently created passive node. Another global variable, |printed_node|,
-is used to help print out the paragraph when detailed information about
-the line-breaking computation is being displayed.
-
-@d passive_node_size=4 {number of words in passive nodes}
-@d cur_break==rlink {in passive node, points to position of this breakpoint}
-@d prev_break==llink {points to passive node that should precede this one}
-@d serial==info {serial number for symbolic identification}
-@d passive_local(#)==mem[#+2].int
-@d passive_prev_local(#)==mem[#+3].int
-@z
-%-------------------------
-@x [38] m.844 l.16595
-@<Insert a new active node from |best_place[fit_class]| to |cur_p|@>=
-begin q:=get_node(passive_node_size);
-link(q):=passive; passive:=q; cur_break(q):=cur_p;
-@!stat incr(pass_number); serial(q):=pass_number;@+tats@;@/
-prev_break(q):=best_place[fit_class];@/
-@y
-@<Insert a new active node from |best_place[fit_class]| to |cur_p|@>=
-begin q:=get_node(passive_node_size);
-link(q):=passive; passive:=q; cur_break(q):=cur_p;
-@!stat incr(pass_number); serial(q):=pass_number;@+tats@;@/
-prev_break(q):=best_place[fit_class];@/
-{Here we keep track of the subparagraph penalties in the break nodes}
-passive_local(q):=last_local_par_info;
-info_incr_ref_count(last_local_par_info);
-if prev_break(q)=null then
- passive_prev_local(q):=init_local_par_info
-else
- passive_prev_local(q):=passive_local(prev_break(q));
-info_incr_ref_count(passive_prev_local(q));
-@z
-%-------------------------
-@x [38] m.851 l.16706
-@<Consider the demerits for a line from |r| to |cur_p|...@>=
-begin artificial_demerits:=false;@/
-@^inner loop@>
-shortfall:=line_width-cur_active_width[1]; {we're this much too short}
-@y
-@<Consider the demerits for a line from |r| to |cur_p|...@>=
-begin artificial_demerits:=false;@/
-@^inner loop@>
-shortfall:=line_width-cur_active_width[1]; {we're this much too short}
-if break_node(r)=null then begin
- if init_local_par_info<>null then
- if info_left_box(init_local_par_info)<>null then
- shortfall:=shortfall-width(info_left_box(init_local_par_info));
- end
-else if passive_local(break_node(r))<>null then
- if info_left_box(passive_local(break_node(r)))<>null then
- shortfall:=shortfall-width(info_left_box(passive_local(break_node(r))));
-if last_local_par_info<>null then
- if info_right_box(last_local_par_info)<>null then
- shortfall:=shortfall-width(info_right_box(last_local_par_info));
-@z
-%-------------------------
-@x [39] m.863 l.16932
-loop@+ begin if threshold>inf_bad then threshold:=inf_bad;
- if second_pass then @<Initialize for hyphenating a paragraph@>;
- @<Create an active breakpoint representing the beginning of the paragraph@>;
- cur_p:=link(temp_head); auto_breaking:=true;@/
- prev_p:=cur_p; {glue at beginning is not a legal breakpoint}
-@y
-loop@+ begin if threshold>inf_bad then threshold:=inf_bad;
- if second_pass then @<Initialize for hyphenating a paragraph@>;
- @<Create an active breakpoint representing the beginning of the paragraph@>;
- cur_p:=link(temp_head); auto_breaking:=true;@/
- prev_p:=cur_p; {glue at beginning is not a legal breakpoint}
- @<LOCAL: Initialize local paragraph information@>;
-@z
-%-------------------------
-@x [39] m.865
-@ @<Clean...@>=
-q:=link(active);
-while q<>last_active do
- begin cur_p:=link(q);
- if type(q)=delta_node then free_node(q,delta_node_size)
- else free_node(q,active_node_size);
- q:=cur_p;
- end;
-q:=passive;
-while q<>null do
- begin cur_p:=link(q);
- free_node(q,passive_node_size);
- q:=cur_p;
- end
-@y
-@ @<Clean...@>=
-q:=link(active);
-while q<>last_active do
- begin cur_p:=link(q);
- if type(q)=delta_node then free_node(q,delta_node_size)
- else free_node(q,active_node_size);
- q:=cur_p;
- end;
-q:=passive;
-while q<>null do
- begin cur_p:=link(q);
- info_decr_ref_count(passive_local(q));
- info_decr_ref_count(passive_prev_local(q));
- free_node(q,passive_node_size);
- q:=cur_p;
- end
-@z
-%-------------------------
-@x [39] m.866
-@<Call |try_break| if |cur_p| is a legal breakpoint...@>=
-begin if is_char_node(cur_p) then
- @<Advance \(c)|cur_p| to the node following the present
- string of characters@>;
-@y
-@<Call |try_break| if |cur_p| is a legal breakpoint...@>=
-begin
-@<LOCAL: Update local paragraph information@>;
-if is_char_node(cur_p) then
- @<Advance \(c)|cur_p| to the node following the present
- string of characters@>;
-@<LOCAL: Update local paragraph information@>;
-@z
-%-------------------------
-@x [39] m.881 l.17289
-q:=cur_break(cur_p); disc_break:=false; post_disc_break:=false;
-if q<>null then {|q| cannot be a |char_node|}
- if type(q)=glue_node then
- begin delete_glue_ref(glue_ptr(q));
- glue_ptr(q):=right_skip;
- subtype(q):=right_skip_code+1; add_glue_ref(right_skip);
- goto done;
- end
- else begin if type(q)=disc_node then
- @<Change discretionary to compulsory and set
- |disc_break:=true|@>
- else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
- end
-else begin q:=temp_head;
- while link(q)<>null do q:=link(q);
- end;
-@<Put the \(r)\.{\\rightskip} glue after node |q|@>;
-@y
-q:=cur_break(cur_p); disc_break:=false; post_disc_break:=false;
-if q<>null then {|q| cannot be a |char_node|}
- if type(q)=glue_node then begin
- if passive_local(cur_p)<>null then
- if info_right_box(passive_local(cur_p))<>null then begin
- r:=temp_head;
- while link(r)<>q do r:=link(r);
- s:=copy_node_list(info_right_box(passive_local(cur_p)));
- link(r):=s;
- link(s):=q;
- end;
- delete_glue_ref(glue_ptr(q));
- glue_ptr(q):=right_skip;
- subtype(q):=right_skip_code+1; add_glue_ref(right_skip);
- goto done;
- end
- else begin if type(q)=disc_node then
- @<Change discretionary to compulsory and set
- |disc_break:=true|@>
- else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
- end
-else begin q:=temp_head;
- while link(q)<>null do q:=link(q);
- end;
-if passive_local(cur_p)<>null then
- if info_right_box(passive_local(cur_p))<>null then begin
- r:=copy_node_list(info_right_box(passive_local(cur_p)));
- link(r):=link(q);
- link(q):=r;
- q:=r;
- end;
-@<Put the \(r)\.{\\rightskip} glue after node |q|@>;
-@z
-%-------------------------
-@x [39] m.887 l.17352
-@<Put the \(l)\.{\\leftskip} glue at the left...@>=
-r:=link(q); link(q):=null; q:=link(temp_head); link(temp_head):=r;
-if left_skip<>zero_glue then
- begin r:=new_param_glue(left_skip_code);
- link(r):=q; q:=r;
- end
-@y
-@<Put the \(l)\.{\\leftskip} glue at the left...@>=
-r:=link(q); link(q):=null; q:=link(temp_head); link(temp_head):=r;
-if passive_prev_local(cur_p)<>null then
- if info_left_box(passive_prev_local(cur_p))<>null then begin
- r:=copy_node_list(info_left_box(passive_prev_local(cur_p)));
- s:=link(q);
- link(r):=q;
- q:=r;
- {adjustment for the indent node}
- if (cur_line=prev_graf+1) and (s<>null) then
- if type(s)=hlist_node then
- if list_ptr(s)=null then begin
- q:=link(q);
- link(r):=link(s);
- link(s):=r;
- end;
- end;
-if left_skip<>zero_glue then
- begin r:=new_param_glue(left_skip_code);
- link(r):=q; q:=r;
- end
-@z
-%-------------------------
-@x [39] m.890 l.17391
-@<Append a penalty node, if a nonzero penalty is appropriate@>=
-if cur_line+1<>best_line then
- begin pen:=inter_line_penalty;
- if cur_line=prev_graf+1 then pen:=pen+club_penalty;
- if cur_line+2=best_line then pen:=pen+final_widow_penalty;
- if disc_break then pen:=pen+broken_penalty;
-@y
-@<Append a penalty node, if a nonzero penalty is appropriate@>=
-if cur_line+1<>best_line then begin
- if passive_local(cur_p)<>null then begin
- if info_pen_inter(passive_local(cur_p))<>0 then
- pen:=info_pen_inter(passive_local(cur_p))
- else pen:=inter_line_penalty;
- end
- else pen:=inter_line_penalty;
- if cur_line=prev_graf+1 then pen:=pen+club_penalty;
- if cur_line+2=best_line then pen:=pen+final_widow_penalty;
- if disc_break then
- if passive_local(cur_p)<>null then begin
- if info_pen_broken(passive_local(cur_p))<>0 then
- pen:=pen+info_pen_broken(passive_local(cur_p))
- else pen:=pen+broken_penalty;
- end
- else pen:=pen+broken_penalty;
-@z
-%-------------------------
-@x [46] m.1034
-fast_get_avail(lig_stack); font(lig_stack):=main_f; cur_l:=qi(cur_chr);
-character(lig_stack):=cur_l;@/
-@y
-fast_get_avail(lig_stack); font(lig_stack):=main_f; cur_l:=qi(cur_chr);
-ptr_info(lig_stack):=local_par_info; info_incr_ref_count(local_par_info);
-add_file_col(lig_stack);
-character(lig_stack):=cur_l;@/
-@z
-%-------------------------
-@x [46] m.1038
-fast_get_avail(lig_stack); font(lig_stack):=main_f;
-cur_r:=qi(cur_chr); character(lig_stack):=cur_r;
-@y
-fast_get_avail(lig_stack); font(lig_stack):=main_f;
-ptr_info(lig_stack):=local_par_info; info_incr_ref_count(local_par_info);
-add_file_col(lig_stack);
-cur_r:=qi(cur_chr); character(lig_stack):=cur_r;
-@z
-%-------------------------
-@x [47] m.1114 l.21322
-primitive("-",discretionary,1);
-@!@:Single-character primitives -}{\quad\.{\\-}@>
-primitive("discretionary",discretionary,0);
-@!@:discretionary_}{\.{\\discretionary} primitive@>
-
-@ @<Cases of |print_cmd_chr|...@>=
-discretionary: if chr_code=1 then
- print_esc("-")@+else print_esc("discretionary");
-
-@ @<Cases of |main_control| that build...@>=
-hmode+discretionary,mmode+discretionary: append_discretionary;
-@y
-primitive("-",discretionary,1);
-@!@:Single-character primitives -}{\quad\.{\\-}@>
-primitive("discretionary",discretionary,0);
-@!@:discretionary_}{\.{\\discretionary} primitive@>
-primitive("localleftbox",assign_local_box,0);
-@!@:assign_local_box}{\.{\\localleftbox} primitive@>
-primitive("localrightbox",assign_local_box,1);
-@!@:assign_local_box}{\.{\\localrightbox} primitive@>
-
-@ @<Cases of |print_cmd_chr|...@>=
-discretionary: if chr_code=1 then
- print_esc("-")@+else print_esc("discretionary");
-assign_local_box: if chr_code=0 then print_esc("localleftbox")
- else print_esc("localrightbox");
-
-@ @<Cases of |main_control| that build...@>=
-hmode+discretionary,mmode+discretionary: append_discretionary;
-any_mode(assign_local_box): append_local_box(cur_chr);
-@z
-%-------------------------
-@x [47] m.1117 l.21338
-procedure append_discretionary;
-var c:integer; {hyphen character}
-begin tail_append(new_disc);
-if cur_chr=1 then
- begin c:=hyphen_char(cur_font);
- if c>=0 then if c<=biggest_char then
- pre_break(tail):=new_character(cur_font,c);
- end
-else begin incr(save_ptr); saved(-1):=0; new_save_level(disc_group);
- scan_left_brace; push_nest; mode:=-hmode; space_factor:=1000;
- end;
-end;
-@y
-procedure append_local_box(kind:integer);
-begin
-incr(save_ptr); saved(-1):=kind; new_save_level(local_box_group);
-scan_left_brace; push_nest; mode:=-hmode; space_factor:=1000;
-end;
-
-procedure append_discretionary;
-var c:integer; {hyphen character}
-begin tail_append(new_disc);
-if cur_chr=1 then
- begin c:=hyphen_char(cur_font);
- if c>=0 then if c<=biggest_char then begin
- pre_break(tail):=new_character(cur_font,c);
- info_decr_ref_count(ptr_info(pre_break(tail)));
- ptr_info(pre_break(tail)):=local_par_info;
- info_incr_ref_count(local_par_info);
- add_file_col(pre_break(tail));
- end
- end
-else begin incr(save_ptr); saved(-1):=0; new_save_level(disc_group);
- scan_left_brace; push_nest; mode:=-hmode; space_factor:=1000;
- end;
-end;
-@z
-%-------------------------
-@x [47] m.1118 l.21355
-disc_group: build_discretionary;
-@y
-disc_group: build_discretionary;
-local_box_group: build_local_box;
-@z
-%-------------------------
-@x [47] m.1119 l.21358
-procedure build_discretionary;
-@y
-procedure build_local_box;
-var p:pointer;
- kind:integer;
-begin
-unsave;
-kind:=saved(-1);
-decr(save_ptr);
-p:=link(head); pop_nest;
-p:=hpack(p,natural);
-if kind=0 then
- eq_define(local_left_box_base,box_ref,p)
-else
- eq_define(local_right_box_base,box_ref,p);
-@<LOCAL: Change info node@>;
-end;
-
-procedure build_discretionary;
-@z
-%-------------------------
-@x [47] m.1123
-procedure make_accent;
-var s,@!t: real; {amount of slant}
-@!p,@!q,@!r:pointer; {character, box, and kern nodes}
-@!f:internal_font_number; {relevant font}
-@!a,@!h,@!x,@!w,@!delta:scaled; {heights and widths, as explained above}
-@!i:four_quarters; {character information}
-begin scan_char_num; f:=cur_font; p:=new_character(f,cur_val);
-if p<>null then
- begin x:=x_height(f); s:=slant(f)/float_constant(65536);
-@^real division@>
- a:=char_width(f)(char_info(f)(character(p)));@/
- do_assignments;@/
- @<Create a character node |q| for the next character,
- but set |q:=null| if problems arise@>;
- if q<>null then @<Append the accent with appropriate kerns,
- then set |p:=q|@>;
- link(tail):=p; tail:=p; space_factor:=1000;
- end;
-end;
-@y
-procedure make_accent;
-var s,@!t: real; {amount of slant}
-@!p,@!q,@!r:pointer; {character, box, and kern nodes}
-@!f:internal_font_number; {relevant font}
-@!a,@!h,@!x,@!w,@!delta:scaled; {heights and widths, as explained above}
-@!i:four_quarters; {character information}
-begin scan_char_num; f:=cur_font; p:=new_character(f,cur_val);
-@<LOCAL: Add info node pointer@>;
-add_file_col(p);
-if p<>null then
- begin x:=x_height(f); s:=slant(f)/float_constant(65536);
-@^real division@>
- a:=char_width(f)(char_info(f)(character(p)));@/
- do_assignments;@/
- @<Create a character node |q| for the next character,
- but set |q:=null| if problems arise@>;
- if q<>null then @<Append the accent with appropriate kerns,
- then set |p:=q|@>;
- link(tail):=p; tail:=p; space_factor:=1000;
- end;
-end;
-@z
-%-------------------------
-@x [47] m.1124
-@ @<Create a character node |q| for the next...@>=
-q:=null; f:=cur_font;
-if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given) then
- q:=new_character(f,cur_chr)
-else if cur_cmd=char_num then
- begin scan_char_num; q:=new_character(f,cur_val);
- end
-else back_input
-@y
-@ @<Create a character node |q| for the next...@>=
-q:=null; f:=cur_font;
-if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given) then begin
- q:=new_character(f,cur_chr);
- info_decr_ref_count(ptr_info(q));
- ptr_info(q):=local_par_info;
- info_incr_ref_count(local_par_info);
- add_file_col(q);
- end
-else if cur_cmd=char_num then
- begin scan_char_num; q:=new_character(f,cur_val);
- info_decr_ref_count(ptr_info(q));
- ptr_info(q):=local_par_info;
- info_incr_ref_count(local_par_info);
- add_file_col(q);
- end
-else back_input
-@z
-%-------------------------
-@x [49] m.1228 l.22908
-assign_int: begin p:=cur_chr; scan_optional_equals; scan_int;
- word_define(p,cur_val);
-@y
-assign_int: begin p:=cur_chr; scan_optional_equals; scan_int;
- word_define(p,cur_val);
-{If we are defining subparagraph penalty levels, then we
- must change the local paragraph node.}
- if ((p=(int_base+local_inter_line_penalty_code)) or
- (p=(int_base+local_broken_penalty_code))) then
- @<LOCAL: Change info node@>;
-@z
-%-------------------------
-@x [53] m.1344 l.24546
-primitive("setlanguage",extension,set_language_code);@/
-@!@:set_language_}{\.{\\setlanguage} primitive@>
-@y
-primitive("setlanguage",extension,set_language_code);@/
-@!@:set_language_}{\.{\\setlanguage} primitive@>
-primitive("localinterlinepenalty",assign_int,
- int_base+local_inter_line_penalty_code);@/
-primitive("localbrokenpenalty",assign_int,
- int_base+local_broken_penalty_code);@/
-primitive("charspecials",assign_int,
- int_base+char_specials_code);@/
-@z
-%-------------------------
-@x [53] m.1354
-@<Implement \.{\\special}@>=
-begin new_whatsit(special_node,write_node_size); write_stream(tail):=null;
-p:=scan_toks(false,true); write_tokens(tail):=def_ref;
-end
-@y
-@<Implement \.{\\special}@>=
-begin new_whatsit(special_node,write_node_size); write_stream(tail):=null;
-ptr_info(tail):=local_par_info;
-info_incr_ref_count(local_par_info);
-add_file_col(tail);
-p:=scan_toks(false,true); write_tokens(tail):=def_ref;
-end
-@z
-%-------------------------
-@x [53] m.1368
-@<Declare procedures needed in |hlist_out|, |vlist_out|@>=
-procedure special_out(@!p:pointer);
-var old_setting:0..max_selector; {holds print |selector|}
-@!k:pool_pointer; {index into |str_pool|}
-begin synch_h; synch_v;@/
-@y
-@<Declare procedures needed in |hlist_out|, |vlist_out|@>=
-procedure append_string(s:integer);
-var p:pointer;
- i:integer;
-begin
-if (s<@"10000) then append_char(s)
-else begin
- i:=str_start(s);
- while i<str_start(s+1) do begin
- append_char(str_pool[i]);
- incr(i);
- end;
- end;
-end;
-
-procedure append_int(n:integer);
-var p:pointer;
- k:integer;
-begin
-k:=0;
-repeat
- dig[k] := n mod 10;
- n := n div 10;
- incr(k);
-until n=0;
-while k>0 do begin
- decr(k);
- append_char("0"+dig[k]);
- end;
-end;
-
-procedure special_out(@!p:pointer);
-var old_setting:0..max_selector; {holds print |selector|}
-@!k:pool_pointer; {index into |str_pool|}
-@!fff:pointer; {current file position}
-@!ffi:integer; {for iterations}
-@!g:integer; {new string}
-@!newk:integer;
-begin synch_h; synch_v;@/
-if ptr_info(p)<>null then
- if info_file(ptr_info(p))<>null then
- @<LOCAL: Create special node@>;
-@z
-%-------------------------
-@x [53] m.1378 l.24900
-@ @<Finish the extensions@>=
-for k:=0 to 15 do if write_open[k] then a_close(write_file[k])
-@y
-@ @<Finish the extensions@>=
-for k:=0 to 15 do if write_open[k] then a_close(write_file[k])
-
-@ @<LOCAL: Declare |make_info_node|@>=
-procedure make_info_node;
-{This function creates an |info_node|}
-var p:pointer;
-begin
-p:=get_node(info_size); type(p):=info_node;
-link(p):=null;
-info_ref_count(p):=1;
-info_pen_inter(p):=local_inter_line_penalty;
-info_pen_broken(p):=local_broken_penalty;
-if local_left_box=null then
- info_left_box(p):=null
-else
- info_left_box(p):=copy_node_list(local_left_box);
-if local_right_box=null then
- info_right_box(p):=null
-else
- info_right_box(p):=copy_node_list(local_right_box);
-if current_file_node=null then begin
- info_file(p):=null;
- end
-else begin
- info_file(p):=current_file_node;
- file_incr_ref_count(current_file_node);
- end;
-eq_define(local_par_info_base,data,p);
-end;
-
-procedure make_file_node;
-var p:pointer;
- i:integer;
-begin
-p:=get_node(file_size+2*no_of_files); type(p):=file_node;
-file_no(p):=no_of_files;
-file_ref_count(p):=1;
-for i := 1 to no_of_files do begin
- mem[p+(i*2)].int := file_names[i];
- mem[p+(i*2)+1].int := line_numbers[i];
- end;
-file_decr_ref_count(current_file_node);
-current_file_node:=p;
-make_info_node;
-end
-
-@ @<LOCAL: Initialize local paragraph information@>=
-begin
-info_decr_ref_count(init_local_par_info);
-init_local_par_info:=ptr_info(cur_p);
-info_incr_ref_count(init_local_par_info);
-info_decr_ref_count(last_local_par_info);
-last_local_par_info:=ptr_info(cur_p);
-info_incr_ref_count(last_local_par_info);
-end
-
-@ @<LOCAL: Update local paragraph information@>=
-begin
-if last_local_par_info<>ptr_info(cur_p) then begin
- info_decr_ref_count(last_local_par_info);
- last_local_par_info:=ptr_info(cur_p);
- info_incr_ref_count(last_local_par_info);
- end;
-end
-
-@ @<LOCAL: print out |local_paragraph| node@>=
-info_node: begin
- print_esc("info");
- append_char(".");
- print_ln; print_current_string;
- print_esc("localinterlinepenalty"); print("=");
- print_int(info_pen_inter(p));
- print_ln; print_current_string;
- print_esc("localbrokenpenalty"); print("=");
- print_int(info_pen_broken(p));
- print_ln; print_current_string;
- print_esc("localleftbox");
- if info_left_box(p)=null then print("=null")
- else begin
- append_char(".");
- show_node_list(info_left_box(p));
- decr(pool_ptr);
- end;
- print_ln; print_current_string;
- print_esc("localrightbox");
- if info_right_box(p)=null then print("=null")
- else begin
- append_char(".");
- show_node_list(info_right_box(p));
- decr(pool_ptr);
- end;
- decr(pool_ptr);
- end
-
-@ @<LOCAL: Change file node@>=
-begin
-make_file_node;
-end
-
-@ @<LOCAL: Change info node@>=
-begin
-make_info_node;
-end
-
-@ @<LOCAL: Delete info node@>=
-begin
-info_decr_ref_count(p);
-end
-
-@ @<LOCAL: Add info node pointer@>=
-begin
-ptr_info(p):=local_par_info;
-info_incr_ref_count(local_par_info);
-end
-
-@ @<LOCAL: Copy info node pointer@>=
-begin
-ptr_info(r):=ptr_info(p);
-info_incr_ref_count(ptr_info(p));
-end
-
-@ @<LOCAL: Remove info node pointer@>=
-begin
-info_decr_ref_count(ptr_info(p));
-ptr_info(p):=null;
-end
-
-@ @<LOCAL: Create special node@>=
-begin
-fff:=info_file(ptr_info(p));
-append_string("om:");
-append_string("lines=");
-for ffi:=1 to file_no(fff) do begin
- if mem[fff+ffi*2].int <> 0 then begin
- append_char("""");
- append_string(mem[fff+ffi*2].int);
- append_char("""");
- append_char(",");
- append_int(mem[fff+ffi*2+1].int);
- append_char(";");
- end;
- end;
-g:=make_string;
-if length(g)<256 then
- begin dvi_out(xxx1); dvi_out(length(g));
- end
-else begin dvi_out(xxx4); dvi_four(length(g));
- end;
-for newk:=str_start(g) to pool_ptr-1 do dvi_out(so(str_pool[newk]));
-flush_string; {erase the string}
-append_string("om:");
-append_string("col=");
-append_int(file_col(p));
-append_char(";");
-g:=make_string;
-if length(g)<256 then
- begin dvi_out(xxx1); dvi_out(length(g));
- end
-else begin dvi_out(xxx4); dvi_four(length(g));
- end;
-for newk:=str_start(g) to pool_ptr-1 do dvi_out(so(str_pool[newk]));
-flush_string; {erase the string}
-end
-
-@z
-%-------------------------
diff --git a/Build/source/texk/web2c/omegadir/omstr.ch b/Build/source/texk/web2c/omegadir/omstr.ch
deleted file mode 100644
index f100266b90f..00000000000
--- a/Build/source/texk/web2c/omegadir/omstr.ch
+++ /dev/null
@@ -1,875 +0,0 @@
-% omstr.ch: String manipulation
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [2] m.17 l.510 - Omega
-In order to make \TeX\ readily portable to a wide variety of
-computers, all of its input text is converted to an internal eight-bit
-@y
-In order to make $\Omega$ readily portable to a wide variety of
-computers, all of its input text is converted to an internal 31-bit
-@z
-%---------------------------------------
-@x [2] m.18 l.537 - Omega
-@!ASCII_code=0..255; {eight-bit numbers}
-@y
-@!ASCII_code=0..biggest_char;
-@z
-%---------------------------------------
-@x [2] m.19 l.567 - Omega
-@d last_text_char=255 {ordinal number of the largest element of |text_char|}
-@y
-@d last_text_char=biggest_char
- {ordinal number of the largest element of |text_char|}
-@z
-%---------------------------------------
-@x [2] m.20 l.577 - Omega
-@!xord: array [text_char] of ASCII_code;
- {specifies conversion of input characters}
-@!xchr: array [ASCII_code] of text_char;
- {specifies conversion of output characters}
-@y
-@!xchr: array [0..255] of text_char;
- {specifies conversion of output characters}
-@z
-%---------------------------------------
-@x [2] m.23 l.724 - Omega
-for i:=0 to @'37 do xchr[i]:=' ';
-for i:=@'177 to @'377 do xchr[i]:=' ';
-@y
-for i:=0 to @'37 do xchr[i]:=chr(i);
-for i:=@'177 to @'377 do xchr[i]:=chr(i);
-init_eqtb_table;
-@z
-%---------------------------------------
-@x [2] m.24 l.734 - Omega
-for i:=first_text_char to last_text_char do xord[chr(i)]:=invalid_code;
-for i:=@'200 to @'377 do xord[xchr[i]]:=i;
-for i:=0 to @'176 do xord[xchr[i]]:=i;
-@y
-@z
-%---------------------------------------
-@x [3] m.25 l.772 - Omega
-@!eight_bits=0..255; {unsigned one-byte quantity}
-@!alpha_file=packed file of text_char; {files that contain textual data}
-@!byte_file=packed file of eight_bits; {files that contain binary data}
-@y
-@!eight_bits=0..biggest_char; {unsigned two-byte quantity}
-@!real_eight_bits=0..255; {dvi output uses exactly 8 bits}
-@!alpha_file=packed file of text_char; {files that contain textual data}
-@!byte_file=packed file of real_eight_bits; {files that contain binary data}
-@z
-%---------------------------------------
-@x [3] m.31 l.947 - Omega
- buffer[last]:=xord[f^]; get(f); incr(last);
-@y
- buffer[last]:=f^; get(f); incr(last);
-@z
-%---------------------------------------
-@x [4] m.38 l.1099 - Omega
-String numbers 0 to 255 are reserved for strings that correspond to single
-ASCII characters. This is in accordance with the conventions of \.{WEB},
-@y
-String numbers 0 to |biggest_char| are reserved for strings that correspond to
-single ASCII characters. This is in accordance with the conventions of \.{WEB},
-@z
-%---------------------------------------
-@x [4] m.38 l.1109 - Omega
-ASCII character, so the first 256 strings are used to specify exactly what
-should be printed for each of the 256 possibilities.
-@y
-ASCII character, so the first |biggest_char+1| strings are used to specify
-exactly what should be printed for each of the |biggest_char+1| possibilities.
-@z
-%---------------------------------------
-@x [4] m.38-9 l.1122 - Omega
-@d si(#) == # {convert from |ASCII_code| to |packed_ASCII_code|}
-@d so(#) == # {convert from |packed_ASCII_code| to |ASCII_code|}
-
-@<Types...@>=
-@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
-@!str_number = 0..max_strings; {for variables that point into |str_start|}
-@!packed_ASCII_code = 0..255; {elements of |str_pool| array}
-
-@ @<Glob...@>=
-@!str_pool:packed array[pool_pointer] of packed_ASCII_code; {the characters}
-@!str_start : array[str_number] of pool_pointer; {the starting pointers}
-@y
-@d si(#) == # {convert from |ASCII_code| to |packed_ASCII_code|}
-@d so(#) == # {convert from |packed_ASCII_code| to |ASCII_code|}
-@d str_start(#) == str_start_ar[#-too_big_char]
-
-@<Types...@>=
-@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
-@!str_number = 0..max_strings; {for variables that point into |str_start|}
-@!packed_ASCII_code = 0..65535; {elements of |str_pool| array}
-
-@ @<Glob...@>=
-@!str_pool:packed array[pool_pointer] of packed_ASCII_code; {the characters}
-@!str_start_ar : array[str_number] of pool_pointer; {the starting pointers}
-@z
-%---------------------------------------
-@x [4] m.40 l.1145 - Omega
-@d length(#)==(str_start[#+1]-str_start[#]) {the number of characters
- in string number \#}
-@y
-@p function length(s:str_number):integer;
- {the number of characters in string number |s|}
-begin if (s>=@"10000) then length:=str_start(s+1)-str_start(s)
-else if (s>=@"20) and (s<@"7F) then length:=1
-else if (s<=@"7F) then length:=3
-else if (s<@"100) then length:=4
-else length:=8
-end;
-@z
-%---------------------------------------
-@x [4] m.41 l.1150 - Omega
-@d cur_length == (pool_ptr - str_start[str_ptr])
-@y
-@d cur_length == (pool_ptr - str_start(str_ptr))
-@z
-%---------------------------------------
-@x [4] m.43 l.1181 - Omega
-incr(str_ptr); str_start[str_ptr]:=pool_ptr;
-@y
-incr(str_ptr); str_start(str_ptr):=pool_ptr;
-@z
-%---------------------------------------
-@x [4] m.44 l.1187 - Omega
-@d flush_string==begin decr(str_ptr); pool_ptr:=str_start[str_ptr];
-@y
-@d flush_string==begin decr(str_ptr); pool_ptr:=str_start(str_ptr);
-@z
-%---------------------------------------
-@x [4] m.45 l.1201 - Omega
-begin j:=str_start[s];
-while j<str_start[s+1] do
-@y
-begin j:=str_start(s);
-while j<str_start(s+1) do
-@z
-%---------------------------------------
-@x [4] m.46 l.1222 - Omega
-@p function str_eq_str(@!s,@!t:str_number):boolean;
- {test equality of strings}
-label not_found; {loop exit}
-var j,@!k: pool_pointer; {running indices}
-@!result: boolean; {result of comparison}
-begin result:=false;
-if length(s)<>length(t) then goto not_found;
-j:=str_start[s]; k:=str_start[t];
-while j<str_start[s+1] do
- begin if str_pool[j]<>str_pool[k] then goto not_found;
- incr(j); incr(k);
- end;
-result:=true;
-not_found: str_eq_str:=result;
-end;
-@y
-@p function str_eq_str(@!s,@!t:str_number):boolean;
- {test equality of strings}
-label not_found; {loop exit}
-var j,@!k: pool_pointer; {running indices}
-@!result: boolean; {result of comparison}
-begin result:=false;
-if length(s)<>length(t) then goto not_found;
-if (length(s)=1) then begin
- if s<65536 then begin
- if t<65536 then begin
- if s<>t then goto not_found;
- end
- else begin
- if s<>str_pool[str_start(t)] then goto not_found;
- end;
- end
- else begin
- if t<65536 then begin
- if str_pool[str_start(s)]<>t then goto not_found;
- end
- else begin
- if str_pool[str_start(s)]<>str_pool[str_start(t)] then
- goto not_found;
- end;
- end;
- end
-else begin
- j:=str_start(s); k:=str_start(t);
- while j<str_start(s+1) do
- begin if str_pool[j]<>str_pool[k] then goto not_found;
- incr(j); incr(k);
- end;
- end;
-result:=true;
-not_found: str_eq_str:=result;
-end;
-@z
-%---------------------------------------
-@x [4] m.47 l.1240 - Omega
-var k,@!l:0..255; {small indices or counters}
-@y
-var k,@!l:0..biggest_char; {small indices or counters}
-@z
-%---------------------------------------
-@x [4] m.47 l.1245 - Omega
-begin pool_ptr:=0; str_ptr:=0; str_start[0]:=0;
-@<Make the first 256 strings@>;
-@<Read the other strings from the \.{TEX.POOL} file and return |true|,
-@y
-begin pool_ptr:=0; str_ptr:=0; str_start_ar[0]:=0; str_start_ar[1]:=0;
-@<Make the first strings@>;
-@<Read the other strings from the \.{OMEGA.POOL} file and return |true|,
-@z
-%---------------------------------------
-% A hack is made for strings 256 through to 65535.
-% String 256 becomes "^^^^????". All the strings
-% from 256 to 65535 are made to point at this string,
-% which will never be printed: it's just a placeholder.
-
-@x [4] m.48 l.1255 - Omega
-@<Make the first 256...@>=
-for k:=0 to 255 do
- begin if (@<Character |k| cannot be printed@>) then
- begin append_char("^"); append_char("^");
- if k<@'100 then append_char(k+@'100)
- else if k<@'200 then append_char(k-@'100)
- else begin app_lc_hex(k div 16); app_lc_hex(k mod 16);
- end;
- end
- else append_char(k);
- g:=make_string;
- end
-@y
-@<Make the first ...@>=
-begin
-str_ptr:=too_big_char;
-end
-@z
-%---------------------------------------
-@x [4] m.49 l.1279 - Omega
-Unprintable characters of codes 128--255 are, similarly, rendered
-\.{\^\^80}--\.{\^\^ff}.
-@y
-Unprintable characters of codes 128--255 are, similarly, rendered
-\.{\^\^80}--\.{\^\^ff}.
-
-Unprintable characters of codes 256--|biggest_char| are, similarly, rendered
-\.{\^\^\^\^0100}--\.{\^\^\^\^ffff}.
-
-@z
-%---------------------------------------
-@x [4] m.49 l.1295 - Omega
-@<Character |k| cannot be printed@>=
- (k<" ")or(k>"~")
-@y
-@z
-%---------------------------------------
-@x [4] m.50 l.1298 - Omega
-@ When the \.{WEB} system program called \.{TANGLE} processes the \.{TEX.WEB}
-description that you are now reading, it outputs the \PASCAL\ program
-\.{TEX.PAS} and also a string pool file called \.{TEX.POOL}. The \.{INITEX}
-@y
-@ When the \.{WEB} system program called \.{OTANGLE} processes the \.{OMEGA.WEB}
-description that you are now reading, it outputs the \PASCAL\ program
-\.{OMEGA.PAS} and also a string pool file called \.{OMEGA.POOL}. The \.{INITEX}
-@z
-%---------------------------------------
-@x [4] m.51 l.1322 - Omega
-else bad_pool('! I can''t read TEX.POOL.')
-@.I can't read TEX.POOL@>
-@y
-else bad_pool('! I can''t read OMEGA.POOL.')
-@.I can't read OMEGA.POOL@>
-@z
-%---------------------------------------
-@x [4] m.52 l.1326 - Omega
-begin if eof(pool_file) then bad_pool('! TEX.POOL has no check sum.');
-@.TEX.POOL has no check sum@>
-@y
-begin if eof(pool_file) then bad_pool('! OMEGA.POOL has no check sum.');
-@.OMEGA.POOL has no check sum@>
-@z
-%---------------------------------------
-@x [4] m.52 l.1332 - Omega
-else begin if (xord[m]<"0")or(xord[m]>"9")or@|
- (xord[n]<"0")or(xord[n]>"9") then
- bad_pool('! TEX.POOL line doesn''t begin with two digits.');
-@.TEX.POOL line doesn't...@>
- l:=xord[m]*10+xord[n]-"0"*11; {compute the length}
- if pool_ptr+l+string_vacancies>pool_size then
- bad_pool('! You have to increase POOLSIZE.');
-@.You have to increase POOLSIZE@>
- for k:=1 to l do
- begin if eoln(pool_file) then m:=' '@+else read(pool_file,m);
- append_char(xord[m]);
-@y
-else begin if (m<"0")or(m>"9")or@|
- (n<"0")or(n>"9") then
- bad_pool('! OMEGA.POOL line doesn''t begin with two digits.');
-@.OMEGA.POOL line doesn't...@>
- l:=m*10+n-"0"*11; {compute the length}
- if pool_ptr+l+string_vacancies>pool_size then
- bad_pool('! You have to increase POOLSIZE.');
-@.You have to increase POOLSIZE@>
- for k:=1 to l do
- begin if eoln(pool_file) then m:=' '@+else read(pool_file,m);
- append_char(m);
-@z
-%---------------------------------------
-@x [4] m.53 l.1347 - Omega
-end of this \.{TEX.POOL} file; any other value means that the wrong pool
-@y
-end of this \.{OMEGA.POOL} file; any other value means that the wrong pool
-@z
-%---------------------------------------
-@x [4] m.53 l.1354 - Omega
-loop@+ begin if (xord[n]<"0")or(xord[n]>"9") then
- bad_pool('! TEX.POOL check sum doesn''t have nine digits.');
-@.TEX.POOL check sum...@>
- a:=10*a+xord[n]-"0";
-@y
-loop@+ begin if (n<"0")or(n>"9") then
- bad_pool('! OMEGA.POOL check sum doesn''t have nine digits.');
-@.OMEGA.POOL check sum...@>
- a:=10*a+n-"0";
-@z
-%---------------------------------------
-@x [4] m.53 l.1360 - Omega
-done: if a<>@$ then bad_pool('! TEX.POOL doesn''t match; TANGLE me again.');
-@.TEX.POOL doesn't match@>
-@y
-done: if a<>@$ then bad_pool('! OMEGA.POOL doesn''t match; OTANGLE me again.');
-@.OMEGA.POOL doesn't match@>
-@z
-%---------------------------------------
-% When we print a string, we must make sure we do the appropriate
-% thing for strings 256 through to 65535. We must generate the
-% strings on the fly.
-
-@x [5] m.59 l.1496 - Omega
-@ An entire string is output by calling |print|. Note that if we are outputting
-the single standard ASCII character \.c, we could call |print("c")|, since
-|"c"=99| is the number of a single-character string, as explained above. But
-|print_char("c")| is quicker, so \TeX\ goes directly to the |print_char|
-routine when it knows that this is safe. (The present implementation
-assumes that it is always safe to print a visible ASCII character.)
-@^system dependencies@>
-
-@<Basic print...@>=
-procedure print(@!s:integer); {prints string |s|}
-label exit;
-var j:pool_pointer; {current character code position}
-@!nl:integer; {new-line character to restore}
-begin if s>=str_ptr then s:="???" {this can't happen}
-@.???@>
-else if s<256 then
- if s<0 then s:="???" {can't happen}
- else begin if selector>pseudo then
- begin print_char(s); return; {internal strings are not expanded}
- end;
- if (@<Character |s| is the current new-line character@>) then
- if selector<pseudo then
- begin print_ln; return;
- end;
- nl:=new_line_char; new_line_char:=-1;
- {temporarily disable new-line character}
- j:=str_start[s];
- while j<str_start[s+1] do
- begin print_char(so(str_pool[j])); incr(j);
- end;
- new_line_char:=nl; return;
- end;
-j:=str_start[s];
-while j<str_start[s+1] do
-@y
-@ An entire string is output by calling |print|. Note that if we are outputting
-the single standard ASCII character \.c, we could call |print("c")|, since
-|"c"=99| is the number of a single-character string, as explained above. But
-|print_char("c")| is quicker, so \TeX\ goes directly to the |print_char|
-routine when it knows that this is safe. (The present implementation
-assumes that it is always safe to print a visible ASCII character.)
-@^system dependencies@>
-
-@d print_lc_hex(#)==l:=#;
- if l<10 then print_char(l+"0") else print_char(l-10+"a");
-
-@<Basic print...@>=
-procedure print(@!s:integer); {prints string |s|}
-label exit;
-var j:pool_pointer; {current character code position}
-@!nl:integer; {new-line character to restore}
-@!l:integer; {for printing 16-bit characters}
-begin if s>=str_ptr then s:="???" {this can't happen}
-@.???@>
-else if s<biggest_char then
- if s<0 then s:="???" {can't happen}
- else begin if selector>pseudo then
- begin print_char(s); return; {internal strings are not expanded}
- end;
- if (@<Character |s| is the current new-line character@>) then
- if selector<pseudo then
- begin print_ln; return;
- end;
- nl:=new_line_char;
- @<Set newline character to -1@>;
- if s<@"20 then begin
- print_char(@"5E); print_char(@"5E); print_char(s+@'100);
- end
- else if s<@"7F then
- print_char(s)
- else if s=@"7F then begin
- print_char(@"5E); print_char(@"5E); print_char(s-@'100);
- end
- else if s<@"100 then begin
- print_char(@"5E); print_char(@"5E);
- print_lc_hex((s mod @"100) div @"10); print_lc_hex(s mod @"10);
- end
- else begin {Here is where we generate the strings on the fly.}
- print_char(@"5E); print_char(@"5E);
- print_char(@"5E); print_char(@"5E);
- print_lc_hex(s div @"1000); print_lc_hex((s mod @"1000) div @"100);
- print_lc_hex((s mod @"100) div @"10); print_lc_hex(s mod @"10);
- end;
- @<Set newline character to nl@>;
- return;
- end;
-j:=str_start(s);
-while j<str_start(s+1) do
-@z
-%---------------------------------------
-@x [5] m.60 l.1539 - Omega
-procedure slow_print(@!s:integer); {prints string |s|}
-var j:pool_pointer; {current character code position}
-begin if (s>=str_ptr) or (s<256) then print(s)
-else begin j:=str_start[s];
- while j<str_start[s+1] do
-@y
-procedure slow_print(@!s:integer); {prints string |s|}
-var j:pool_pointer; {current character code position}
-begin if (s>=str_ptr) or (s<=biggest_char) then print(s)
-else begin j:=str_start(s);
- while j<str_start(s+1) do
-@z
-%---------------------------------------
-@x [5] m.61 l.1556 - Omega
-wterm(banner);
-if format_ident=0 then wterm_ln(' (no format preloaded)')
-else begin slow_print(format_ident); print_ln;
- end;
-update_terminal;
-@y
-wterm(banner);
-if format_ident=0 then wterm_ln(' (no format preloaded)')
-else begin slow_print(format_ident); print_ln;
- end;
-wterm_ln('Copyright (c) 1994--2000 John Plaice and Yannis Haralambous');
-update_terminal;
-@z
-%---------------------------------------
-@x [5] m.63 l.1576 - Omega
-procedure print_esc(@!s:str_number); {prints escape character, then |s|}
-var c:integer; {the escape character code}
-begin @<Set variable |c| to the current escape character@>;
-if c>=0 then if c<256 then print(c);
-@y
-procedure print_esc(@!s:str_number); {prints escape character, then |s|}
-var c:integer; {the escape character code}
-begin @<Set variable |c| to the current escape character@>;
-if c>=0 then if c<=biggest_char then print(c);
-@z
-%---------------------------------------
-@x [5] m.69 l.1654 - Omega
-@p procedure print_roman_int(@!n:integer);
-label exit;
-var j,@!k: pool_pointer; {mysterious indices into |str_pool|}
-@!u,@!v: nonnegative_integer; {mysterious numbers}
-begin j:=str_start["m2d5c2l5x2v5i"]; v:=1000;
-@y
-@p procedure print_roman_int(@!n:integer);
-label exit;
-var j,@!k: pool_pointer; {mysterious indices into |str_pool|}
-@!u,@!v: nonnegative_integer; {mysterious numbers}
-begin j:=str_start("m2d5c2l5x2v5i"); v:=1000;
-@z
-%---------------------------------------
-@x [5] m.70 l.1674 - Omega
-@p procedure print_current_string; {prints a yet-unmade string}
-var j:pool_pointer; {points to current character code}
-begin j:=str_start[str_ptr];
-@y
-@p procedure print_current_string; {prints a yet-unmade string}
-var j:pool_pointer; {points to current character code}
-begin j:=str_start(str_ptr);
-@z
-%---------------------------------------
-@x [6] m.94 l.2052 - Omega
-print_err("TeX capacity exceeded, sorry [");
-@y
-print_err("Omega capacity exceeded, sorry [");
-@z
-%---------------------------------------
-@x [18] m.260 l.5532 - Omega
-while pool_ptr>str_start[str_ptr] do
-@y
-while pool_ptr>str_start(str_ptr) do
-@z
-%---------------------------------------
-@x [18] m.264 l.5610 - Omega
-else begin k:=str_start[s]; l:=str_start[s+1]-k;
-@y
-else begin k:=str_start(s); l:=str_start(s+1)-k;
-@z
-%---------------------------------------
-@x [24] m.341 l.7219 - Omega
-@!c,@!cc:ASCII_code; {constituents of a possible expanded code}
-@!d:2..3; {number of excess characters in an expanded code}
-@y
-@!c,@!cc,@!ccc,@!cccc:ASCII_code; {constituents of a possible expanded code}
-@!d:2..7; {number of excess characters in an expanded code}
-@z
-%---------------------------------------
-@x [24] m.352 l.7349 - Omega
- else cur_chr:=16*cur_chr+cc-"a"+10
-@y
- else cur_chr:=16*cur_chr+cc-"a"+10
-@d long_hex_to_cur_chr==
- if c<="9" then cur_chr:=c-"0" @+else cur_chr:=c-"a"+10;
- if cc<="9" then cur_chr:=16*cur_chr+cc-"0"
- else cur_chr:=16*cur_chr+cc-"a"+10;
- if ccc<="9" then cur_chr:=16*cur_chr+ccc-"0"
- else cur_chr:=16*cur_chr+ccc-"a"+10;
- if cccc<="9" then cur_chr:=16*cur_chr+cccc-"0"
- else cur_chr:=16*cur_chr+cccc-"a"+10
-
-@z
-%---------------------------------------
-@x [24] m.352 l.7353 - Omega
- begin c:=buffer[loc+1]; @+if c<@'200 then {yes we have an expanded char}
-@y
- begin if (cur_chr=buffer[loc+1]) and (cur_chr=buffer[loc+2]) and
- ((loc+6)<=limit) then
- begin c:=buffer[loc+3]; cc:=buffer[loc+4];
- ccc:=buffer[loc+5]; cccc:=buffer[loc+6];
- if is_hex(c) and is_hex(cc) and is_hex(ccc) and is_hex(cccc) then
- begin loc:=loc+7; long_hex_to_cur_chr; goto reswitch;
- end;
- end;
- c:=buffer[loc+1]; @+if c<@'200 then {yes we have an expanded char}
-@z
-%---------------------------------------
-@x [24] m.355 l.7416 - Omega
-begin if buffer[k]=cur_chr then @+if cat=sup_mark then @+if k<limit then
- begin c:=buffer[k+1]; @+if c<@'200 then {yes, one is indeed present}
- begin d:=2;
- if is_hex(c) then @+if k+2<=limit then
- begin cc:=buffer[k+2]; @+if is_hex(cc) then incr(d);
- end;
- if d>2 then
- begin hex_to_cur_chr; buffer[k-1]:=cur_chr;
- end
- else if c<@'100 then buffer[k-1]:=c+@'100
- else buffer[k-1]:=c-@'100;
- limit:=limit-d; first:=first-d;
- while k<=limit do
- begin buffer[k]:=buffer[k+d]; incr(k);
- end;
- goto start_cs;
- end;
- end;
-end
-
-@y
-begin if buffer[k]=cur_chr then @+if cat=sup_mark then @+if k<limit then
- begin if (cur_chr=buffer[k+1]) and (cur_chr=buffer[k+2]) and
- ((k+6)<=limit) then
- begin c:=buffer[k+3]; cc:=buffer[k+4];
- ccc:=buffer[k+5]; cccc:=buffer[k+6];
- if is_hex(c) and is_hex(cc) and is_hex(ccc) and is_hex(cccc) then
- begin d:=7; long_hex_to_cur_chr; buffer[k-1]:=cur_chr;
- while k<=limit do
- begin buffer[k]:=buffer[k+d]; incr(k);
- end;
- goto start_cs;
- end
- end
- else begin
- c:=buffer[k+1]; @+if c<@'200 then {yes, one is indeed present}
- begin
- d:=2;
- if is_hex(c) then @+if k+2<=limit then
- begin cc:=buffer[k+2]; @+if is_hex(cc) then incr(d);
- end;
- if d>2 then
- begin hex_to_cur_chr; buffer[k-1]:=cur_chr;
- end
- else if c<@'100 then buffer[k-1]:=c+@'100
- else buffer[k-1]:=c-@'100;
- limit:=limit-d; first:=first-d;
- while k<=limit do
- begin buffer[k]:=buffer[k+d]; incr(k);
- end;
- goto start_cs;
- end
- end
- end
-end
-@z
-%---------------------------------------
-@x [26] m.407 l.8216 - Omega
-begin p:=backup_head; link(p):=null; k:=str_start[s];
-while k<str_start[s+1] do
- begin get_x_token; {recursion is possible here}
-@^recursion@>
- if (cur_cs=0)and@|
- ((cur_chr=so(str_pool[k]))or(cur_chr=so(str_pool[k])-"a"+"A")) then
- begin store_new_token(cur_tok); incr(k);
- end
- else if (cur_cmd<>spacer)or(p<>backup_head) then
- begin back_input;
- if p<>backup_head then back_list(link(backup_head));
- scan_keyword:=false; return;
- end;
- end;
-@y
-begin p:=backup_head; link(p):=null;
-if s<too_big_char then begin
- while true do
- begin get_x_token; {recursion is possible here}
-@^recursion@>
- if (cur_cs=0)and@|
- ((cur_chr=s)or(cur_chr=s-"a"+"A")) then
- begin store_new_token(cur_tok);
- flush_list(link(backup_head)); scan_keyword:=true; return;
- end
- else if (cur_cmd<>spacer)or(p<>backup_head) then
- begin back_input;
- if p<>backup_head then back_list(link(backup_head));
- scan_keyword:=false; return;
- end;
- end;
- end;
-k:=str_start(s);
-while k<str_start(s+1) do
- begin get_x_token; {recursion is possible here}
-@^recursion@>
- if (cur_cs=0)and@|
- ((cur_chr=so(str_pool[k]))or(cur_chr=so(str_pool[k])-"a"+"A")) then
- begin store_new_token(cur_tok); incr(k);
- end
- else if (cur_cmd<>spacer)or(p<>backup_head) then
- begin back_input;
- if p<>backup_head then back_list(link(backup_head));
- scan_keyword:=false; return;
- end;
- end;
-@z
-%---------------------------------------
-@x [29] m.517 l.10005 - Omega
-@p procedure end_name;
-begin if str_ptr+3>max_strings then
- overflow("number of strings",max_strings-init_str_ptr);
-@:TeX capacity exceeded number of strings}{\quad number of strings@>
-if area_delimiter=0 then cur_area:=""
-else begin cur_area:=str_ptr;
- str_start[str_ptr+1]:=str_start[str_ptr]+area_delimiter; incr(str_ptr);
- end;
-if ext_delimiter=0 then
- begin cur_ext:=""; cur_name:=make_string;
- end
-else begin cur_name:=str_ptr;
- str_start[str_ptr+1]:=str_start[str_ptr]+ext_delimiter-area_delimiter-1;
-@y
-@p procedure end_name;
-begin if str_ptr+3>max_strings then
- overflow("number of strings",max_strings-init_str_ptr);
-@:TeX capacity exceeded number of strings}{\quad number of strings@>
-if area_delimiter=0 then cur_area:=""
-else begin cur_area:=str_ptr;
- str_start(str_ptr+1):=str_start(str_ptr)+area_delimiter; incr(str_ptr);
- end;
-if ext_delimiter=0 then
- begin cur_ext:=""; cur_name:=make_string;
- end
-else begin cur_name:=str_ptr;
- str_start(str_ptr+1):=str_start(str_ptr)+ext_delimiter-area_delimiter-1;
-@z
-%---------------------------------------
-@x [29] m.519 l.10039 - Omega
- if k<=file_name_size then name_of_file[k]:=xchr[c];
- end
-
-@p procedure pack_file_name(@!n,@!a,@!e:str_number);
-var k:integer; {number of positions filled in |name_of_file|}
-@!c: ASCII_code; {character being packed}
-@!j:pool_pointer; {index into |str_pool|}
-begin k:=0;
-for j:=str_start[a] to str_start[a+1]-1 do append_to_name(so(str_pool[j]));
-for j:=str_start[n] to str_start[n+1]-1 do append_to_name(so(str_pool[j]));
-for j:=str_start[e] to str_start[e+1]-1 do append_to_name(so(str_pool[j]));
-@y
- if k<=file_name_size then name_of_file[k]:=xchr[c];
- end
-
-@p procedure pack_file_name(@!n,@!a,@!e:str_number);
-var k:integer; {number of positions filled in |name_of_file|}
-@!c: ASCII_code; {character being packed}
-@!j:pool_pointer; {index into |str_pool|}
-begin k:=0;
-for j:=str_start(a) to str_start(a+1)-1 do append_to_name(so(str_pool[j]));
-for j:=str_start(n) to str_start(n+1)-1 do append_to_name(so(str_pool[j]));
-for j:=str_start(e) to str_start(e+1)-1 do append_to_name(so(str_pool[j]));
-@z
-%---------------------------------------
-@x [29] m.523 l.10095 - Omega
-for j:=1 to n do append_to_name(xord[TEX_format_default[j]]);
-for j:=a to b do append_to_name(buffer[j]);
-for j:=format_default_length-format_ext_length+1 to format_default_length do
- append_to_name(xord[TEX_format_default[j]]);
-@y
-for j:=1 to n do append_to_name(TEX_format_default[j]);
-for j:=a to b do append_to_name(buffer[j]);
-for j:=format_default_length-format_ext_length+1 to format_default_length do
- append_to_name(TEX_format_default[j]);
-@z
-%---------------------------------------
-@x [29] m.524 l.10155 - Omega
-else begin for k:=1 to name_length do append_char(xord[name_of_file[k]]);
-@y
-else begin for k:=1 to name_length do append_char(name_of_file[k]);
-@z
-%---------------------------------------
-@x [29] m.536 l.10324 - Omega
-begin wlog(banner);
-slow_print(format_ident); print(" ");
-print_int(day); print_char(" ");
-months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-for k:=3*month-2 to 3*month do wlog(months[k]);
-print_char(" "); print_int(year); print_char(" ");
-print_two(time div 60); print_char(":"); print_two(time mod 60);
-end
-@y
-begin wlog(banner);
-slow_print(format_ident); print_nl("");
-print_int(day); print_char(" ");
-months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-for k:=3*month-2 to 3*month do wlog(months[k]);
-print_char(" "); print_int(year); print_char(" ");
-print_two(time div 60); print_char(":"); print_two(time mod 60);
-print_nl("Copyright (c) 1994--2000 John Plaice and Yannis Haralambous");
-end
-@z
-%---------------------------------------
-@x [32] m.595 l.11860 - Omega
-@!dvi_buf:array[dvi_index] of eight_bits; {buffer for \.{DVI} output}
-@y
-@!dvi_buf:array[dvi_index] of real_eight_bits; {buffer for \.{DVI} output}
-@z
-%---------------------------------------
-@x [32] m.617 l.12262 - Omega
- print(" TeX output "); print_int(year); print_char(".");
-@y
- print("Omega output, Version 3.1415926-1.23.2.3, ");
- print_int(year); print_char(".");
-@z
-%---------------------------------------
-@x [32] m.617 l.12267 - Omega
- for s:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[s]));
- pool_ptr:=str_start[str_ptr]; {flush the current string}
-@y
- for s:=str_start(str_ptr) to pool_ptr-1 do dvi_out(so(str_pool[s]));
- pool_ptr:=str_start(str_ptr); {flush the current string}
-@z
-%---------------------------------------
-@x [36] m.765 l.15021 - Omega
-magic_offset:=str_start[math_spacing]-9*ord_noad
-@y
-magic_offset:=str_start(math_spacing)-9*ord_noad
-@z
-%---------------------------------------
-@x [42] m.931 l.18172 - Omega
- begin j:=1; u:=str_start[k];
-@y
- begin j:=1; u:=str_start(k);
-@z
-%---------------------------------------
-@x [42] m.940 l.18296 - Omega
-u:=str_start[k]; v:=str_start[s];
-repeat if str_pool[u]<str_pool[v] then goto found;
-if str_pool[u]>str_pool[v] then goto not_found;
-incr(u); incr(v);
-until u=str_start[k+1];
-@y
-u:=str_start(k); v:=str_start(s);
-repeat if str_pool[u]<str_pool[v] then goto found;
-if str_pool[u]>str_pool[v] then goto not_found;
-incr(u); incr(v);
-until u=str_start(k+1);
-@z
-%---------------------------------------
-@x [49] m.1252 l.23232 - Omega
- print_err("Patterns can be loaded only by INITEX");
-@y
- print_err("Patterns can be loaded only by INIOMEGA");
-@z
-%---------------------------------------
-@x [50] m.1301 l.23682 - Omega
-format_ident:=" (INITEX)";
-@y
-format_ident:=" (INIOMEGA)";
-@z
-%---------------------------------------
-% We do not store any information for strings between 257 and 65535.
-
-@x [50] m.1309 l.23814 - Omega
-for k:=0 to str_ptr do dump_int(str_start[k]);
-@y
-for k:=too_big_char to str_ptr do dump_int(str_start(k));
-@z
-%---------------------------------------
-% We recreate the information for strings between 257 and 65535.
-
-@x [50] m.1310 l.23831 - Omega
-for k:=0 to str_ptr do undump(0)(pool_ptr)(str_start[k]);
-@y
-for k:=too_big_char to str_ptr do undump(0)(pool_ptr)(str_start(k));
-@z
-%---------------------------------------
-@x [51] m.1334 l.24266 - Omega
- wlog_ln('Here is how much of TeX''s memory',' you used:');
-@y
- wlog_ln('Here is how much of Omega''s memory',' you used:');
-@z
-%---------------------------------------
-@x [51] m.1335 l.24338 - Omega
- print_nl("(\dump is performed only by INITEX)"); return;
-@:dump_}{\.{\\dump...only by INITEX}@>
-@y
- print_nl("(\dump is performed only by INIOMEGA)"); return;
-@:dump_}{\.{\\dump...only by INIOMEGA}@>
-@z
-%---------------------------------------
-@x [53] m.1368 l.24747 - Omega
-for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k]));
-pool_ptr:=str_start[str_ptr]; {erase the string}
-@y
-for k:=str_start(str_ptr) to pool_ptr-1 do dvi_out(so(str_pool[k]));
-pool_ptr:=str_start(str_ptr); {erase the string}
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/omegadir/omtrans.ch b/Build/source/texk/web2c/omegadir/omtrans.ch
deleted file mode 100644
index 7d62b23d6b2..00000000000
--- a/Build/source/texk/web2c/omegadir/omtrans.ch
+++ /dev/null
@@ -1,822 +0,0 @@
-% omtrans.ch: Characters sets for input and output
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [3] m.25 l.767 - Omega Translation
-initialization. We shall define a word file later; but it will be possible
-for us to specify simple operations on word files before they are defined.
-@y
-initialization. We shall define a word file later; but it will be possible
-for us to specify simple operations on word files before they are defined.
-
-@d no_mode=0
-@d onebyte_mode=1
-@d ebcdic_mode=2
-@d twobyte_mode=3
-@d twobyteLE_mode=4
-@d UTF8_mode=5
-@d UTF16_mode=6
-@d UTF16LE_mode=7
-
-@d trans_input=0
-@d trans_output=1
-@d trans_default_input=2
-@d trans_default_output=3
-@d trans_no_input=4
-@d trans_no_output=5
-@d trans_no_default_input=6
-@d trans_no_default_output=7
-
-@d mode_input=0
-@d mode_output=1
-@d mode_default_input=2
-@d mode_default_output=3
-@d mode_no_input=4
-@d mode_no_output=5
-@d mode_no_default_input=6
-@d mode_no_default_output=7
-@z
-%---------------------------------------
-@x [3] m.30 l.890 - Omega Translation
-@!max_buf_stack:0..buf_size; {largest index used in |buffer|}
-@y
-@!max_buf_stack:0..buf_size; {largest index used in |buffer|}
-@!term_in_mode:halfword;
-@!term_in_translation:halfword;
-@z
-%---------------------------------------
-@x [3] m.37 l.1065 - Omega Translation
- if not input_ln(term_in,true) then {this shouldn't happen}
-@y
- if not new_input_ln(term_in,term_in_mode,term_in_translation,true)
-then {this shouldn't happen}
-@z
-%---------------------------------------
-@x [5] m.54 l. - Omega Translation
-@!log_file : alpha_file; {transcript of \TeX\ session}
-@y
-@!log_file : alpha_file; {transcript of \TeX\ session}
-@!term_out_mode:halfword;
-@!term_out_translation:halfword;
-@z
-%---------------------------------------
-@x [5] m.59 l. - Omega Translation
-@<Basic printing...@>=
-procedure print_char(@!s:ASCII_code); {prints a single character}
-label exit;
-begin if @<Character |s| is the current new-line character@> then
- if selector<pseudo then
- begin print_ln; return;
- end;
-case selector of
-term_and_log: begin wterm(xchr[s]); wlog(xchr[s]);
- incr(term_offset); incr(file_offset);
- if term_offset=max_print_line then
- begin wterm_cr; term_offset:=0;
- end;
- if file_offset=max_print_line then
- begin wlog_cr; file_offset:=0;
- end;
- end;
-log_only: begin wlog(xchr[s]); incr(file_offset);
- if file_offset=max_print_line then print_ln;
- end;
-term_only: begin wterm(xchr[s]); incr(term_offset);
- if term_offset=max_print_line then print_ln;
- end;
-no_print: do_nothing;
-pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=s;
-new_string: begin if pool_ptr<pool_size then append_char(s);
- end; {we drop characters if the string space is full}
-othercases write(write_file[selector],xchr[s])
-endcases;@/
-incr(tally);
-exit:end;
-@y
-@d omega_write(#)==case term_out_mode of
- no_mode: write(#,xchr[s]);
- onebyte_mode,ebcdic_mode: write(#,xchr[s]);
- twobyte_mode: begin write(#,xchr[s div @"100]);
- write(#,xchr[s mod @"100]);
- end;
- twobyteLE_mode: begin write(#,xchr[s mod @"100]);
- write(#,xchr[s div @"100]);
- end;
- UTF8_mode: begin
- if s<@"80 then write(#, xchr[s])
- else if s<@"800 then begin
- write(#, xchr[@"C0 + s div @"40]);
- write(#, xchr[@"80 + s mod @"40]);
- end
- else begin
- write(#, xchr[@"E0 + s div @"1000]);
- write(#, xchr[@"80 + (s mod @"1000) div @"40]);
- write(#, xchr[@"80 + (s mod @"1000) mod @"40]);
- end
- end;
- UTF16_mode: begin
- end;
- UTF16LE_mode: begin
- end;
- end
-
-@d omega_file_write(#)==case write_file_mode[#] of
- no_mode: write(write_file[#],xchr[s]);
- onebyte_mode,ebcdic_mode: write(write_file[#],xchr[s]);
- twobyte_mode: begin write(write_file[#],xchr[s div @"100]);
- write(write_file[#],xchr[s mod @"100]);
- end;
- twobyteLE_mode: begin write(write_file[#],xchr[s mod @"100]);
- write(write_file[#],xchr[s div @"100]);
- end;
- UTF8_mode: begin
- end;
- UTF16_mode: begin
- end;
- UTF16LE_mode: begin
- end;
- end
-
-@<Basic printing...@>=
-procedure print_char(@!s:ASCII_code); {prints a single character}
-label exit;
-begin if @<Character |s| is the current new-line character@> then
- if selector<pseudo then
- begin print_ln; return;
- end;
-case selector of
-term_and_log: begin omega_write(term_out); omega_write(log_file);
- incr(term_offset); incr(file_offset);
- if term_offset=max_print_line then
- begin wterm_cr; term_offset:=0;
- end;
- if file_offset=max_print_line then
- begin wlog_cr; file_offset:=0;
- end;
- end;
-log_only: begin omega_write(log_file); incr(file_offset);
- if file_offset=max_print_line then print_ln;
- end;
-term_only: begin omega_write(term_out); incr(term_offset);
- if term_offset=max_print_line then print_ln;
- end;
-no_print: do_nothing;
-pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=s;
-new_string: begin if pool_ptr<pool_size then append_char(s);
- end; {we drop characters if the string space is full}
-othercases omega_file_write(selector)
-endcases;@/
-incr(tally);
-exit:end;
-@z
-%---------------------------------------
-@x [5] m.59 l. - Omega Translation
-procedure print(@!s:integer); {prints string |s|}
-label exit;
-var j:pool_pointer; {current character code position}
-@!nl:integer; {new-line character to restore}
-@!l:integer; {for printing 16-bit characters}
-begin if s>=str_ptr then s:="???" {this can't happen}
-@.???@>
-else if s<biggest_char then
- if s<0 then s:="???" {can't happen}
- else begin if selector>pseudo then
- begin print_char(s); return; {internal strings are not expanded}
- end;
- if (@<Character |s| is the current new-line character@>) then
- if selector<pseudo then
- begin print_ln; return;
- end;
- nl:=new_line_char;
- @<Set newline character to -1@>;
- if s<@"20 then begin
- print_char(@"5E); print_char(@"5E); print_char(s+@'100);
- end
- else if s<@"7F then
- print_char(s)
- else if s=@"7F then begin
- print_char(@"5E); print_char(@"5E); print_char(s-@'100);
- end
- else if s<@"100 then begin
- print_char(@"5E); print_char(@"5E);
- print_lc_hex((s mod @"100) div @"10); print_lc_hex(s mod @"10);
- end
- else begin {Here is where we generate the strings on the fly.}
- print_char(@"5E); print_char(@"5E);
- print_char(@"5E); print_char(@"5E);
- print_lc_hex(s div @"1000); print_lc_hex((s mod @"1000) div @"100);
- print_lc_hex((s mod @"100) div @"10); print_lc_hex(s mod @"10);
- end;
- @<Set newline character to nl@>;
- return;
- end;
-j:=str_start(s);
-while j<str_start(s+1) do
- begin print_char(so(str_pool[j])); incr(j);
- end;
-exit:end;
-
-@ Control sequence names, file names, and strings constructed with
-\.{\\string} might contain |ASCII_code| values that can't
-be printed using |print_char|. Therefore we use |slow_print| for them:
-
-@<Basic print...@>=
-procedure slow_print(@!s:integer); {prints string |s|}
-var j:pool_pointer; {current character code position}
-begin if (s>=str_ptr) or (s<=biggest_char) then print(s)
-else begin j:=str_start(s);
- while j<str_start(s+1) do
- begin print(so(str_pool[j])); incr(j);
- end;
- end;
-end;
-@y
-procedure print(@!s:integer); {prints string |s|}
-label exit;
-var j:pool_pointer; {current character code position}
-@!nl:integer; {new-line character to restore}
-@!l:integer; {for printing 16-bit characters}
-begin if s>=str_ptr then s:="???" {this can't happen}
-@.???@>
-else if s<biggest_char then
- if s<0 then s:="???" {can't happen}
- else begin if selector>pseudo then
- begin print_char(s); return; {internal strings are not expanded}
- end;
- if (@<Character |s| is the current new-line character@>) then
- if selector<pseudo then
- begin print_ln; return;
- end;
- nl:=new_line_char;
- @<Set newline character to -1@>;
- if s<@"20 then begin
- print_char(@"5E); print_char(@"5E); print_char(s+@'100);
- end
- else if s<@"7F then
- print_char(s)
- else if s=@"7F then begin
- print_char(@"5E); print_char(@"5E); print_char(s-@'100);
- end
- else if s<@"100 then begin
- print_char(@"5E); print_char(@"5E);
- print_lc_hex((s mod @"100) div @"10); print_lc_hex(s mod @"10);
- end
- else begin {Here is where we generate the strings on the fly.}
- print_char(@"5E); print_char(@"5E);
- print_char(@"5E); print_char(@"5E);
- print_lc_hex(s div @"1000); print_lc_hex((s mod @"1000) div @"100);
- print_lc_hex((s mod @"100) div @"10); print_lc_hex(s mod @"10);
- end;
- @<Set newline character to nl@>;
- return;
- end;
-j:=str_start(s);
-while j<str_start(s+1) do
- begin print_char(so(str_pool[j])); incr(j);
- end;
-exit:end;
-
-procedure print_nl(@!s:str_number); {prints string |s| at beginning of line}
-begin if ((term_offset>0)and(odd(selector)))or@|
- ((file_offset>0)and(selector>=log_only)) then print_ln;
-print(s);
-end;
-
-procedure overflow_ocp_buf_size; forward;
-procedure overflow_ocp_stack_size; forward;
-
-procedure omega_print(s:str_number);
-var new_s:str_number;
- om_mode,om_translation:integer;
- j:integer;
-begin
-om_mode:=no_mode;
-om_translation:=0;
-case selector of
-term_and_log,log_only,term_only: begin
- om_mode:=term_out_mode;
- if om_mode<>no_mode then om_translation:=term_out_translation;
- end;
-no_print,pseudo,new_string: do_nothing;
-othercases begin
- om_mode:=write_file_mode[selector];
- if om_mode<>no_mode then om_translation:=write_file_translation[selector];
- end
-endcases;
-
-if (om_mode=no_mode) or
- ((om_mode=onebyte_mode) and (om_translation=0)) then
- begin
- j:=str_start(s);
- while j<str_start(s+1) do begin
- new_s:=so(str_pool[j]);
- if new_s<@"20 then begin
- print_char(@"5E); print_char(@"5E); print_char(new_s+@'100);
- end
- else if new_s<@"7F then
- print_char(new_s)
- else if new_s=@"7F then begin
- print_char(@"5E); print_char(@"5E); print_char(new_s-@'100);
- end
- else if new_s<@"100 then begin
- print_char(@"5E); print_char(@"5E);
- print_lc_hex((new_s mod @"100) div @"10); print_lc_hex(new_s mod @"10);
- end
- else begin {Here is where we generate the strings on the fly.}
- print_char(@"5E); print_char(@"5E);
- print_char(@"5E); print_char(@"5E);
- print_lc_hex(new_s div @"1000);
- print_lc_hex((new_s mod @"1000) div @"100);
- print_lc_hex((new_s mod @"100) div @"10);
- print_lc_hex(new_s mod @"10);
- end;
- incr(j);
- end;
- end
-else begin
- if om_translation=0 then begin
- j:=str_start(s);
- otp_counter:=1;
- while j<str_start(s+1) do begin
- otp_output_buf[otp_counter]:=so(str_pool[j]);
- incr(otp_counter);
- incr(j);
- end;
- otp_output_end:=otp_counter;
- end
- else begin
- otp_input_start:=0;
- otp_input_last:=0;
- otp_stack_used:=0;
- otp_stack_last:=0;
- otp_stack_new:=0;
- otp_output_end:=0;
- otp_pc:=0;
- otp_finished:=false;
- otp_calc_ptr:=0;
- otp_calcs[otp_calc_ptr]:=0;
- otp_state_ptr:=0;
- otp_states[otp_state_ptr]:=0;
- otp_input_ocp:=om_translation;
- j:=str_start(s);
- otp_counter:=1;
- while j<str_start(s+1) do begin
- otp_input_buf[otp_counter]:=so(str_pool[j]);
- incr(otp_counter);
- incr(j);
- end;
- otp_input_end:=otp_counter;
- while not otp_finished do
- @<Run the OTP program@>;
- end;
- for otp_counter:=1 to (otp_output_end-1) do begin
- new_s:=otp_output_buf[otp_counter];
- if (om_mode<twobyte_mode) and (new_s>255) then
- begin
- print_char(@"5E); print_char(@"5E);
- print_char(@"5E); print_char(@"5E);
- print_lc_hex(new_s div @"1000);
- print_lc_hex((new_s mod @"1000) div @"100);
- print_lc_hex((new_s mod @"100) div @"10);
- print_lc_hex(new_s mod @"10);
- end
- else
- print_char(new_s);
- end;
- end;
-end;
-
-@ Control sequence names, file names, and strings constructed with
-\.{\\string} might contain |ASCII_code| values that can't
-be printed using |print_char|. Therefore we use |slow_print| for them:
-
-@<Basic print...@>=
-procedure slow_print(@!s:integer); {prints string |s|}
-begin if (s>=str_ptr) or (s<=biggest_char) then print(s)
-else omega_print(s);
-end;
-@z
-%---------------------------------------
-@x [5] - Omega Translation
-procedure print_nl(@!s:str_number); {prints string |s| at beginning of line}
-begin if ((term_offset>0)and(odd(selector)))or@|
- ((file_offset>0)and(selector>=log_only)) then print_ln;
-print(s);
-end;
-@y
-@z
-%---------------------------------------
-@x [5] m.71 l.1694 - Omega Translation
-if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
-@y
-if not new_input_ln(term_in,term_in_mode,term_in_translation,true)
-then fatal_error("End of file on the terminal!");
-@z
-%---------------------------------------
-@x [15] m.209 l.4170 - Omega Translation
-@d max_command=ocp_trace_level
- {the largest command code seen at |big_switch|}
-@y
-@d char_trans=ocp_trace_level+1
-@d char_mode=char_trans+1
-@d max_command=char_mode
- {the largest command code seen at |big_switch|}
-@z
-%---------------------------------------
-@x [17] m.230 l.4722 - Omega Translation
-@d toks_base=ocp_active_base+max_active_ocp_lists
- {table of |number_regs| token list registers}
-@y
-@d ocp_input_mode_base=ocp_active_base+max_active_ocp_lists
-@d ocp_input_onebyte_translation_base =ocp_input_mode_base+ 1
-@d ocp_input_ebcdic_translation_base =ocp_input_mode_base+ 2
-@d ocp_input_twobyte_translation_base =ocp_input_mode_base+ 3
-@d ocp_input_twobyteLE_translation_base =ocp_input_mode_base+ 4
-@d ocp_input_UTF8_translation_base =ocp_input_mode_base+ 5
-@d ocp_input_UTF16_translation_base =ocp_input_mode_base+ 6
-@d ocp_input_UTF16LE_translation_base =ocp_input_mode_base+ 7
-
-@d ocp_output_mode_base =ocp_input_mode_base+ 8
-@d ocp_output_onebyte_translation_base =ocp_input_mode_base+ 9
-@d ocp_output_ebcdic_translation_base =ocp_input_mode_base+ 10
-@d ocp_output_twobyte_translation_base =ocp_input_mode_base+ 11
-@d ocp_output_twobyteLE_translation_base =ocp_input_mode_base+ 12
-@d ocp_output_UTF8_translation_base =ocp_input_mode_base+ 13
-@d ocp_output_UTF16_translation_base =ocp_input_mode_base+ 14
-@d ocp_output_UTF16LE_translation_base =ocp_input_mode_base+ 15
-
-@d toks_base =ocp_input_mode_base+16
-@z
-%---------------------------------------
-@x [22] m.304 l.6535 - Omega Translation
-@!input_file : array[1..max_in_open] of alpha_file;
-@y
-@!input_file : array[1..max_in_open] of alpha_file;
-@!input_file_mode : array[1..max_in_open] of halfword;
-@!input_file_translation : array[1..max_in_open] of halfword;
-@z
-%---------------------------------------
-@x [23] m.331 l.7066 - Omega Translation
-param_ptr:=0; max_param_stack:=0;
-@y
-param_ptr:=0; max_param_stack:=0;
-geq_define(ocp_input_mode_base,data,1);
-term_in_mode:=equiv(ocp_input_mode_base);
-term_out_mode:=equiv(ocp_input_mode_base);
-if term_in_mode>0
-then term_in_translation:=
- equiv(ocp_input_onebyte_translation_base+term_in_mode-1);
-if term_out_mode>0
-then term_out_translation:=
- equiv(ocp_output_onebyte_translation_base+term_in_mode-1);
-@z
-%---------------------------------------
-@x [24] m.362 l.7066 - Omega Translation
- begin if input_ln(cur_file,true) then {not end of file}
-@y
- begin if new_input_ln(cur_file,input_file_mode[index],
- input_file_translation[index],true) then {not end of file}
-@z
-%---------------------------------------
-@x [27] m.480 l.9411 - Omega Translation
-@!read_file:array[0..15] of alpha_file; {used for \.{\\read}}
-@y
-@!read_file:array[0..15] of alpha_file; {used for \.{\\read}}
-@!read_file_mode:array[0..15] of halfword;
-@!read_file_translation:array[0..15] of halfword;
-@z
-%---------------------------------------
-@x [27] m.485 l.9475 - Omega Translation
-@<Input the first line of |read_file[m]|@>=
-if input_ln(read_file[m],false) then read_open[m]:=normal
-else begin a_close(read_file[m]); read_open[m]:=closed;
- end
-@y
-@<Input the first line of |read_file[m]|@>=
-begin read_file_mode[m]:=
- get_file_mode(read_file[m], equiv(ocp_input_mode_base));
-if read_file_mode[m]>0
-then read_file_translation[m]:=
- equiv(ocp_input_onebyte_translation_base+read_file_mode[m]-1);
-if new_input_ln(read_file[m],read_file_mode[m],
- read_file_translation[m],false) then read_open[m]:=normal
-else begin a_close(read_file[m]); read_open[m]:=closed;
- end
-end
-@z
-%---------------------------------------
-@x [27] m.486 l.9484 - Omega Translation
-begin if not input_ln(read_file[m],true) then
- begin a_close(read_file[m]); read_open[m]:=closed;
-@y
-begin if not new_input_ln(read_file[m],
-read_file_mode[m],read_file_translation[m],true) then
- begin a_close(read_file[m]); read_open[m]:=closed;
-@z
-%---------------------------------------
-@x [29] m.538 l.10371 - Omega Translation
-begin line:=1;
-if input_ln(cur_file,false) then do_nothing;
-@y
-begin line:=1;
-input_file_mode[index]:=
- get_file_mode(cur_file, equiv(ocp_input_mode_base));
-if input_file_mode[index]>0
-then input_file_translation[index]:=
- equiv(ocp_input_onebyte_translation_base+input_file_mode[index]-1);
-if new_input_ln(cur_file,input_file_mode[index],
- input_file_translation[index],false) then do_nothing;
-@z
-%---------------------------------------
-@x [49] m.1210 l.22629 - Omega Translation
-any_mode(ocp_trace_level) : prefixed_command;
-@y
-any_mode(ocp_trace_level) : prefixed_command;
-any_mode(char_mode) : do_char_mode;
-any_mode(char_trans) : do_char_translation;
-@z
-%---------------------------------------
-@x [49] m.1343 l.24928 - Omega Translation
-@!write_file:array[0..15] of alpha_file;
-@y
-@!write_file:array[0..15] of alpha_file;
-@!write_file_mode:array[0..15] of halfword;
-@!write_file_translation:array[0..15] of halfword;
-@z
-%---------------------------------------
-@x
-@* \[54] $\Omega$ changes.
-
-@y
-@* \[54] $\Omega$ changes.
-
-@ Here we do the main work required for reading and interpreting
- $\Omega$ Input Translation Processes.
-
-@ @<Put each...@>=
-primitive("InputTranslation", char_trans, trans_input);
-primitive("OutputTranslation", char_trans, trans_output);
-primitive("DefaultInputTranslation", char_trans, trans_default_input);
-primitive("DefaultOutputTranslation", char_trans, trans_default_output);
-primitive("noInputTranslation", char_trans, trans_no_input);
-primitive("noOutputTranslation", char_trans, trans_no_output);
-primitive("noDefaultInputTranslation", char_trans, trans_no_default_input);
-primitive("noDefaultOutputTranslation", char_trans, trans_no_default_output);
-primitive("InputMode", char_mode, mode_input);
-primitive("OutputMode", char_mode, mode_output);
-primitive("DefaultInputMode", char_mode, mode_default_input);
-primitive("DefaultOutputMode", char_mode, mode_default_output);
-primitive("noInputMode", char_mode, mode_no_input);
-primitive("noOutputMode", char_mode, mode_no_output);
-primitive("noDefaultInputMode", char_mode, mode_no_default_input);
-primitive("noDefaultOutputMode", char_mode, mode_no_default_output);
-
-geq_define(ocp_input_onebyte_translation_base, data, 0);
-geq_define(ocp_input_ebcdic_translation_base, data, 0);
-geq_define(ocp_input_twobyte_translation_base, data, 0);
-geq_define(ocp_input_twobyteLE_translation_base, data, 0);
-geq_define(ocp_input_UTF8_translation_base, data, 0);
-geq_define(ocp_input_UTF16_translation_base, data, 0);
-geq_define(ocp_input_UTF16LE_translation_base, data, 0);
-geq_define(ocp_input_mode_base, data, 0);
-
-geq_define(ocp_output_onebyte_translation_base, data, 0);
-geq_define(ocp_output_ebcdic_translation_base, data, 0);
-geq_define(ocp_output_twobyte_translation_base, data, 0);
-geq_define(ocp_output_twobyteLE_translation_base, data, 0);
-geq_define(ocp_output_UTF8_translation_base, data, 0);
-geq_define(ocp_output_UTF16_translation_base, data, 0);
-geq_define(ocp_output_UTF16LE_translation_base, data, 0);
-geq_define(ocp_output_mode_base, data, 0);
-
-@ @<Cases of |print_cmd_chr|...@>=
-char_trans:
- case chr_code of
- trans_input: print_esc("InputTranslation");
- trans_output: print_esc("OutputTranslation");
- trans_default_input: print_esc("DefaultInputTranslation");
- trans_default_output: print_esc("DefaultOutputTranslation");
- trans_no_input: print_esc("noInputTranslation");
- trans_no_output: print_esc("noOutputTranslation");
- trans_no_default_input: print_esc("noDefaultInputTranslation");
- trans_no_default_output: print_esc("noDefaultOutputTranslation");
- end;
-char_mode:
- case chr_code of
- mode_input: print_esc("InputMode");
- mode_output: print_esc("OutputMode");
- mode_default_input: print_esc("DefaultInputMode");
- mode_default_output: print_esc("DefaultOutputMode");
- mode_no_input: print_esc("noInputMode");
- mode_no_output: print_esc("noOutputMode");
- mode_no_default_input: print_esc("noDefaultInputMode");
- mode_no_default_output: print_esc("noDefaultOutputMode");
- end;
-
-@ @<Declare subprocedures for |prefixed_command|@>=
-procedure scan_file_referrent;
-begin
-if scan_keyword("currentfile") then cur_val:=max_halfword
-else scan_int;
-end;
-
-procedure scan_mode;
-begin
-if scan_keyword("onebyte") then cur_val:=onebyte_mode
-else if scan_keyword("ebcdic") then cur_val:=ebcdic_mode
-else if scan_keyword("twobyteLE") then cur_val:=twobyteLE_mode
-else if scan_keyword("twobyte") then cur_val:=twobyte_mode
-else if scan_keyword("UTF8") then cur_val:=UTF8_mode
-else if scan_keyword("UTF16LE") then cur_val:=UTF16LE_mode
-else if scan_keyword("UTF16") then cur_val:=UTF16_mode
-else begin print_err("Invalid input mode"); cur_val:=0; end;
-end;
-
-procedure do_char_translation;
-var kind:halfword;
- fileref:halfword;
- moderef:halfword;
- ocpref:halfword;
-begin
-fileref:=0;
-moderef:=0;
-ocpref:=0;
-kind:=cur_chr;
-if (kind mod 4) <= 1 then begin
- scan_file_referrent;
- fileref:=cur_val;
- end
-else begin
- scan_mode;
- moderef:=cur_val;
- end;
-if kind < 4 then begin
- scan_ocp_ident;
- ocpref:=cur_val;
- end;
-case (kind mod 4) of
- trans_input: begin
- if (fileref>=0) and (fileref<=15) then begin
- read_file_translation[fileref]:=ocpref;
- end
- else if fileref<>max_halfword then begin
- term_in_translation:=ocpref;
- end
- else begin
- base_ptr:=input_ptr; input_stack[base_ptr]:=cur_input;
- while state = token_list do
- begin
- decr(base_ptr);
- cur_input:=input_stack[base_ptr];
- end;
- if name>17 then input_file_translation[index]:=ocpref;
- cur_input:=input_stack[input_ptr];
- end;
- end;
- trans_output: begin
- if (fileref>=0) and (fileref<=15) then begin
- write_file_translation[fileref]:=ocpref;
- end
- else begin
- term_out_translation:=ocpref;
- end;
- end;
- trans_default_input: begin
- geq_define(ocp_input_mode_base+moderef,data,ocpref);
- end;
- trans_default_output: begin
- geq_define(ocp_output_mode_base+moderef,data,ocpref);
- end;
- end;
-end;
-
-procedure do_char_mode;
-var kind:halfword;
- fileref:halfword;
- moderef:halfword;
-begin
-fileref:=0;
-moderef:=0;
-kind:=cur_chr;
-if (kind mod 4) <= 1 then begin
- scan_file_referrent;
- fileref:=cur_val;
- end;
-if kind < 4 then begin
- scan_mode;
- moderef:=cur_val;
- end;
-case (kind mod 4) of
- trans_input: begin
- if (fileref>=0) and (fileref<=15) then begin
- read_file_mode[fileref]:=moderef;
- end
- else if fileref<>max_halfword then begin
- term_in_mode:=moderef;
- end
- else begin
- base_ptr:=input_ptr; input_stack[base_ptr]:=cur_input;
- while state = token_list do
- begin
- decr(base_ptr);
- cur_input:=input_stack[base_ptr];
- end;
- if name>17 then input_file_mode[index]:=moderef;
- cur_input:=input_stack[input_ptr];
- end;
- end;
- trans_output: begin
- if (fileref>=0) and (fileref<=15) then begin
- write_file_mode[fileref]:=moderef;
- end
- else begin
- term_out_mode:=moderef;
- end;
- end;
- trans_default_input: begin
- geq_define(ocp_input_mode_base,data,moderef);
- end;
- trans_default_output: begin
- geq_define(ocp_output_mode_base,data,moderef);
- end;
- end;
-end;
-
-function p_new_input_ln(f:alpha_file;
-the_mode,translation:halfword;
-bypass_eoln:boolean):boolean;
-begin
-if (the_mode=no_mode) or ((the_mode=onebyte_mode) and (translation=0))
-then p_new_input_ln:=input_ln(f,bypass_eoln)
-else if not newinputline(f,the_mode,bypass_eoln)
-then p_new_input_ln:=false
-else if translation=0 then
-begin
- if (first+otp_input_end)>=buf_size then overflow("buffer size", buf_size);
- state:=new_line;
- start:=first;
- last:=start;
- loc:=start;
- for otp_counter:=1 to otp_input_end do
- begin
- buffer[last]:=otp_input_buf[otp_counter];
- incr(last);
- end;
- while buffer[last-1]=' ' do decr(last);
- limit:=last-1;
- p_new_input_ln:=true
-end
-else
-begin
- otp_input_start:=0;
- otp_input_last:=0;
- otp_stack_used:=0;
- otp_stack_last:=0;
- otp_stack_new:=0;
- otp_output_end:=0;
- otp_pc:=0;
- otp_finished:=false;
- otp_calc_ptr:=0;
- otp_calcs[otp_calc_ptr]:=0;
- otp_state_ptr:=0;
- otp_states[otp_state_ptr]:=0;
- otp_input_ocp:=translation;
- while not otp_finished do
- @<Run the OTP program@>;
- if (first+otp_output_end)>=buf_size then overflow("buffer size", buf_size);
- state:=new_line;
- start:=first;
- last:=start;
- loc:=start;
- for otp_counter:=1 to otp_output_end do
- begin
- buffer[last]:=otp_output_buf[otp_counter];
- incr(last);
- end;
- while buffer[last-1]=' ' do decr(last);
- limit:=last-1;
- p_new_input_ln:=true
-end
-end;
-
-
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/omegadir/omxml.ch b/Build/source/texk/web2c/omegadir/omxml.ch
deleted file mode 100644
index db743bc06ad..00000000000
--- a/Build/source/texk/web2c/omegadir/omxml.ch
+++ /dev/null
@@ -1,2099 +0,0 @@
-% omxml.ch: Generate XML, MathML, HTML, etc.
-%
-% This file is part of Omega,
-% which is based on the web2c distribution of TeX,
-%
-% Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-%
-% Omega is free software; you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation; either version 2 of the License, or
-% (at your option) any later version.
-%
-% Omega is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Omega; if not, write to the Free Software Foundation, Inc.,
-% 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-%
-%---------------------------------------
-@x [1] m.11 l.392 - Omega
-@!font_max=65535; {maximum internal font number; must be at most |font_biggest|}
-@y
-@!font_sort_max=65535; {maximum internal font sort number}
-@!font_max=65535; {maximum internal font number; must be at most |font_biggest|}
-@z
-%---------------------------------------
-@x [1] m.12 l.437 - Omega
-@d number_fonts=font_biggest-font_base+2
-@y
-@d number_fonts=font_biggest-font_base+2
-@d font_sort_base=0
-@d font_sort_biggest=65535 {the biggest font sort}
-@d number_font_sorts=font_sort_biggest-font_sort_base+2
-@z
-%---------------------------------------
-@x [5] m.57 l.1446 - Omega
-othercases write_ln(write_file[selector])
-@y
-othercases if selector>max_selector then
- write_ln(output_files[selector-max_selector])
- else
- write_ln(write_file[selector])
-@z
-%---------------------------------------
-@x [5] m.58 l.1465 - Omega
-othercases omega_file_write(selector)
-@y
-othercases if selector>max_selector then
- write(output_files[selector-max_selector],xchr[s])
- else
- omega_file_write(selector)
-@z
-%---------------------------------------
-@x [10] m.160 l.3270 - Omega
-@d biggest_ordinary_node=info_node
-@y
-
-@d sgml_text_node=0
-@d sgml_math_node=1
-@d sgml_vert_node=2
-
-@d sgml_node=info_node+1 {|type| for an SGML node}
-@d sgml_node_size=5
-@d sgml_tag(#)==mem[#+1].int
-@d sgml_attrs(#)==mem[#+2].int
-@d sgml_singleton(#)==info(#+3)
-@d sgml_info(#)==link(#+3)
-@d sgml_kind(#)==mem[#+4].int
-
-@d sgml_attr_node=info_node+2 {|type| for an SGML attribute node}
-@d sgml_attr_node_size=4
-
-@d sgml_entity_node=info_node+3 {|type| for an SGML entity node}
-@d sgml_entity_node_size=2
-@d sgml_entity_string(#)==mem[#+1].int
-
-@d biggest_ordinary_node=sgml_entity_node
-
-@p
-function new_sgml_node:pointer;
-var p:pointer;
-begin p:=get_node(sgml_node_size);
-type(p):=sgml_node;
-sgml_tag(p):=0;
-sgml_attrs(p):=0;
-sgml_info(p):=0;
-sgml_singleton(p):=0;
-sgml_kind(p):=0;
-new_sgml_node:=p;
-end;
-
-function new_sgml_attr_node:pointer;
-var p:pointer;
-begin p:=get_node(sgml_attr_node_size);
-type(p):=sgml_attr_node;
-sgml_tag(p):=0;
-sgml_attrs(p):=0;
-sgml_info(p):=0;
-sgml_singleton(p):=0;
-new_sgml_attr_node:=p;
-end;
-
-function new_sgml_entity_node:pointer;
-var p:pointer;
-begin p:=get_node(sgml_entity_node_size);
-type(p):=sgml_entity_node;
-sgml_entity_string(p):=0;
-new_sgml_entity_node:=p;
-end;
-@z
-%---------------------------------------
-@x [12] m.174 l.3520 - Omega
-@p procedure short_display(@!p:integer); {prints highlights of list |p|}
-var n:integer; {for replacement counts}
-begin while p>mem_min do
- begin if is_char_node(p) then
- begin if p<=mem_end then
- begin if font(p)<>font_in_short_display then
- begin if (font(p)<font_base)or(font(p)>font_max) then
- print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
- print_char(" "); font_in_short_display:=font(p);
- end;
- print_ASCII(qo(character(p)));
-@y
-@p procedure short_display(@!p:integer); {prints highlights of list |p|}
-var n:integer; {for replacement counts}
- fsort:integer;
-begin while p>mem_min do
- begin if is_char_node(p) then
- begin if p<=mem_end then
- begin if font(p)<>font_in_short_display then
- begin if (font(p)<font_base)or(font(p)>font_max) then
- print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
- print_char(" "); font_in_short_display:=font(p);
- end;
- if not SGML_show_entities then
- print_ASCII(qo(character(p)))
- else begin
- fsort:=font_name_sort(font(p));
- if fsort<>0 then begin
- if (font_sort_char_entity(fsort)(character(p))<>0) then
- slow_print(font_sort_char_entity(fsort)(character(p)))
- else
- print_ASCII(qo(character(p)));
- end
- else
- print_ASCII(qo(character(p)));
- end;
-@z
-%---------------------------------------
-@x [12] m.176 l.3563 - Omega
-procedure print_font_and_char(@!p:integer); {prints |char_node| data}
-begin if p>mem_end then print_esc("CLOBBERED.")
-else begin if (font(p)<font_base)or(font(p)>font_max) then print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
- print_char(" "); print_ASCII(qo(character(p)));
- end;
-end;
-@y
-procedure print_font_and_char(@!p:integer); {prints |char_node| data}
-var fsort:integer;
-begin if p>mem_end then print_esc("CLOBBERED.")
-else begin if (font(p)<font_base)or(font(p)>font_max) then print_char("*")
-@.*\relax@>
- else @<Print the font identifier for |font(p)|@>;
- print_char(" ");
- if not SGML_show_entities then
- print_ASCII(qo(character(p)))
- else begin
- fsort:=font_name_sort(font(p));
- if fsort<>0 then begin
- if (font_sort_char_entity(fsort)(character(p))<>0) then
- print(font_sort_char_entity(fsort)(character(p)))
- else
- print_ASCII(qo(character(p)));
- end
- else
- print_ASCII(qo(character(p)));
- end;
- end;
-end;
-@z
-%---------------------------------------
-@x [13] m.202 l.3928 - Omega
- adjust_node: flush_node_list(adjust_ptr(p));
-@y
- adjust_node: flush_node_list(adjust_ptr(p));
- sgml_node: begin
- if sgml_tag(p)<>0 then flush_node_list(sgml_attrs(p));
- free_node(p,sgml_node_size); goto done;
- end;
- sgml_attr_node: begin
- free_node(p,sgml_attr_node_size); goto done;
- end;
- sgml_entity_node: begin
- free_node(p,sgml_entity_node_size); goto done;
- end;
-@z
-%---------------------------------------
-@x [15] m.209 l.4138 - Omega
-@d max_command=char_mode
- {the largest command code seen at |big_switch|}
-@y
-@d set_show_sgml_entities=char_mode+1
- {printing hex code or SGML-like entity during \.{\\showbox}}
-@d set_mml_mode=set_show_sgml_entities+1
- {for entering or leaving MML mode ( \.{\\mmlmode}~)}
-@d sgml_command=set_mml_mode+1
- {for various SGML tags}
-@d max_command=sgml_command
- {the largest command code seen at |big_switch|}
-@z
-%---------------------------------------
-@x [16] m.212--217 l.4303 - Omega
- @!pg_field,@!ml_field: integer;@+
-@y
- @!pg_field,@!ml_field: integer;@+
- @!sgml_field: integer;
- @!sgml_attr_field: pointer;
-@z
-%---------------------------------------
-@x [16] m.212--217 l.4303 - Omega
-@d mode_line==cur_list.ml_field {source file line number at beginning of list}
-@y
-@d mode_line==cur_list.ml_field {source file line number at beginning of list}
-@d current_sgml_tag==cur_list.sgml_field {current SGML tag}
-@d current_sgml_attrs==cur_list.sgml_attr_field {current SGML tag}
-@z
-%---------------------------------------
-@x [16] m.212--217 l.4303 - Omega
-prev_graf:=0; shown_mode:=0;
-@y
-prev_graf:=0; shown_mode:=0;
-current_sgml_tag:=0; current_sgml_attrs:=null;
-@z
-%---------------------------------------
-@x [16] m.212--217 l.4303 - Omega
-incr(nest_ptr); head:=get_avail; tail:=head; prev_graf:=0; mode_line:=line;
-@y
-incr(nest_ptr); head:=get_avail; tail:=head; prev_graf:=0; mode_line:=line;
-current_sgml_tag:=0; current_sgml_attrs:=null;
-@z
-%---------------------------------------
-@x [16] m.212--217 l.4303 - Omega
-@p procedure pop_nest; {leave a semantic level, re-enter the old}
-begin free_avail(head); decr(nest_ptr); cur_list:=nest[nest_ptr];
-end;
-@y
-@p procedure pop_nest; {leave a semantic level, re-enter the old}
-var attrs:pointer;
- {p:pointer;}
-begin attrs:=null;
-{
-if current_sgml_attrs<>null then
- if current_sgml_tag=null then
- attrs:=current_sgml_attrs
- else
- free_avail(current_sgml_attrs);
-}
-free_avail(head); decr(nest_ptr); cur_list:=nest[nest_ptr];
-{
-if attrs<>null then begin
- p:=attrs;
- while link(p)<>null do
- begin
- p:=link(p);
- end;
- link(p):=current_sgml_attrs;
- current_sgml_attrs:=attrs;
- end;
-}
-end;
-@z
-%---------------------------------------
-@x [17] m.222 l.4525 - Omega
-@d frozen_null_ocp=frozen_null_font+number_fonts
-@y
-@d frozen_null_font_sort=frozen_null_font+number_font_sorts {permanent null sort}
-@d frozen_null_ocp=frozen_null_font_sort+number_font_sorts
-@z
-%---------------------------------------
-@x [17] m.232 l.4802 - Omega
-@d var_code==@"7000000 {math code meaning ``use the current family''}
-@y
-@d null_font_sort==font_sort_base
-@d var_code==@"7000000 {math code meaning ``use the current family''}
-@z
-%---------------------------------------
-@x [19] m.269 l.5859 - Omega
-@d math_left_group=16 {code for `\.{\\left...\\right}'}
-@d local_box_group=17 {code for `\.{\\localleftbox...\\localrightbox}'}
-@d max_group_code=17
-@y
-@d math_left_group=16 {code for `\.{\\left...\\right}'}
-@d math_mml_group=17 {code for automatic `\.{\\left...\\right}'}
-@d text_mml_group=18 {code for `\.{\\text...}'}
-@d text_sgml_group=19 {code for horizontal SGML tags}
-@d vert_sgml_group=20 {code for vertical SGML tags}
-@d par_sgml_group=21 {code for paragraph SGML tags}
-@d font_entity_group=22
-@d empty_tag_group=23
-@d local_box_group=24 {code for `\.{\\localleftbox...\\localrightbox}'}
-@d max_group_code=24
-@z
-%---------------------------------------
-@x [29] m.532 l.10260 - Omega
-@ Here's an example of how these conventions are used. Whenever it is time to
-ship out a box of stuff, we shall use the macro |ensure_dvi_open|.
-
-@d ensure_dvi_open==if output_file_name=0 then
- begin if job_name=0 then open_log_file;
- pack_job_name(".dvi");
- while not b_open_out(dvi_file) do
- prompt_file_name("file name for output",".dvi");
- output_file_name:=b_make_name_string(dvi_file);
- end
-
-@<Glob...@>=
-@!dvi_file: byte_file; {the device-independent output goes here}
-@!output_file_name: str_number; {full name of the output file}
-@!log_name:str_number; {full name of the log file}
-@y
-@ Here's an example of how these conventions are used. Whenever it is time to
-ship out a box of stuff, we shall use the macro |ensure_dvi_open|.
-
-@d ensure_output_open_end(#)==while not b_open_out(#) do
- prompt_file_name("file name for output",output_m_suffix);
- output_m_name:=b_make_name_string(#);
- end end
-
-@d ensure_output_open_middle(#)==output_m_name:=#; if #=0 then
- begin if job_name=0 then open_log_file;
- pack_job_name(output_m_suffix);
- ensure_output_open_end
-
-@d ensure_output_open(#)==begin output_m_suffix:=#; ensure_output_open_middle
-
-@d ensure_dvi_open==begin
- ensure_output_open(".dvi")(output_file_name)(dvi_file);
- output_file_name:=output_m_name end
-
-@<Glob...@>=
-@!dvi_file: byte_file; {the device-independent output goes here}
-@!output_file_name: str_number; {full name of the dvi output file}
-@!output_m_suffix: str_number; {suffix for the current output file}
-@!output_m_name: str_number; {suffix for the current output file}
-@!output_file_names:array[1..10] of str_number;
-@!output_files:array[1..10] of byte_file;
-@!output_file_no:integer; {number of open output files}
-@!log_name:str_number; {full name of the log file}
-@!sgml_file_suffix:str_number; {suffix for the output file}
-@!sgml_attribute_quote:str_number; {string for quoting attribute values}
-@!sgml_empty_tag_marker:str_number; {string for marking empty tags}
-@!sgml_paragraph_tag:str_number; {tag to designate paragraphs}
-@z
-%---------------------------------------
-@x [29] m.533 l.10260 - Omega
-@ @<Initialize the output...@>=output_file_name:=0;
-@y
-@ @<Initialize the output...@>=output_file_name:=0;
-for output_file_no:=1 to 10 do output_file_names[output_file_no]:=0;
-sgml_file_suffix:=".xml";
-sgml_attribute_quote:="""";
-sgml_empty_tag_marker:="/";
-output_file_no:=0;
-@z
-%---------------------------------------
-@x [30] m.549 l.10686 - Omega
-@!font_ptr:internal_font_number; {largest internal font number in use}
-@y
-@!font_ptr:internal_font_number; {largest internal font number in use}
-@!font_sort_ptr:integer; {largest internal font sort number in use}
-@z
-%---------------------------------------
-@x [30] m.550 l.10723 - Omega
-@d param_base(#)==font_info(#)(offset_param_base).int
-@y
-@d param_base(#)==font_info(#)(offset_param_base).int
-
-@d font_sort_info_end(#)==#]
-@d font_sort_info(#)==font_sort_tables[#,font_sort_info_end
-@d font_sort_offset_file_size=0
-@d font_sort_offset_name=font_sort_offset_file_size+1
-@d font_sort_offset_bc=font_sort_offset_name+1
-@d font_sort_offset_ec=font_sort_offset_bc+1
-@d font_sort_offset_char_base=font_sort_offset_bc+1
-@d font_sort_file_size(#)==font_sort_info(#)(font_sort_offset_file_size).int
-@d font_sort_name(#)==font_sort_info(#)(font_sort_offset_name).int
-@d font_sort_bc(#)==font_sort_info(#)(font_sort_offset_bc).int
-@d font_sort_ec(#)==font_sort_info(#)(font_sort_offset_ec).int
-@d font_sort_char_base(#)==font_sort_info(#)(font_sort_offset_char_base).int
-@d font_sort_char_entity_end(#)==#*3].int
-@d font_sort_char_entity(#)==
- font_sort_tables[#,font_sort_offset_char_base+font_sort_char_entity_end
-@d font_sort_char_tag_end(#)==#*3+1].int
-@d font_sort_char_tag(#)==
- font_sort_tables[#,font_sort_offset_char_base+font_sort_char_tag_end
-@d font_sort_char_attr_end(#)==#*3+2].int
-@d font_sort_char_attr(#)==
- font_sort_tables[#,font_sort_offset_char_base+font_sort_char_attr_end
-@z
-%---------------------------------------
-@x [30] m.550 l.10723 - Omega
-@!dimen_font:integer;
-@y
-@!dimen_font:integer;
-@!font_sorts:integer; {to run through font sorts}
-@!font_sort_c:integer; {character used to define font entities}
-@!font_sort_number:integer; {this particular font sort number}
-@z
-%---------------------------------------
-@x [30] m.552 l.10749 - Omega
-for k:=1 to 7 do font_info(null_font)(param_base(null_font)+k).sc:=0;
-@y
-for k:=1 to 7 do font_info(null_font)(param_base(null_font)+k).sc:=0;
-font_sort_ptr:=null_font_sort;
-allocate_font_sort_table(null_font_sort,font_sort_offset_char_base);
-font_sort_file_size(null_font_sort):=font_sort_offset_char_base;
-font_sort_name(null_font_sort):="nullfontsort";
-@z
-%---------------------------------------
-@x [32] m.638 l.12656 - Omega
-@<Ship box |p| out@>;
-@y
-if not SGML_mode then begin @<Ship box |p| out@>; end;
-@z
-%---------------------------------------
-@x [46] m.1030
-hmode+spacer: if space_factor=1000 then goto append_normal_space
- else app_space;
-hmode+ex_space,mmode+ex_space: goto append_normal_space;
-@y
-hmode+spacer:
- if SGML_mode then begin
- make_sgml_entity(" ");
- goto big_switch;
- end
- else if space_factor=1000 then goto append_normal_space
- else app_space;
-hmode+ex_space,mmode+ex_space: goto append_normal_space;
-@z
-%---------------------------------------
-@x [47] m.1060 l.20533 - Omega
-procedure append_glue;
-var s:small_number; {modifier of skip command}
-begin s:=cur_chr;
-case s of
-fil_code: cur_val:=fil_glue;
-fill_code: cur_val:=fill_glue;
-ss_code: cur_val:=ss_glue;
-fil_neg_code: cur_val:=fil_neg_glue;
-skip_code: scan_glue(glue_val);
-mskip_code: scan_glue(mu_val);
-end; {now |cur_val| points to the glue specification}
-tail_append(new_glue(cur_val));
-if s>=skip_code then
- begin decr(glue_ref_count(cur_val));
- if s>skip_code then subtype(tail):=mu_glue;
- end;
-end;
-@y
-procedure append_glue;
-var s:small_number; {modifier of skip command}
-begin s:=cur_chr;
-case s of
-fil_code: cur_val:=fil_glue;
-fill_code: cur_val:=fill_glue;
-ss_code: cur_val:=ss_glue;
-fil_neg_code: cur_val:=fil_neg_glue;
-skip_code: scan_glue(glue_val);
-mskip_code: scan_glue(mu_val);
-end; {now |cur_val| points to the glue specification}
-if (abs(mode)=mmode) and SGML_mode then begin
- end
-else begin
- tail_append(new_glue(cur_val));
- if s>=skip_code then
- begin decr(glue_ref_count(cur_val));
- if s>skip_code then subtype(tail):=mu_glue;
- end;
- end;
-end;
-@z
-%---------------------------------------
-@x [47] m.1061 l.20339 - Omega
-procedure append_kern;
-var s:quarterword; {|subtype| of the kern node}
-begin s:=cur_chr; scan_dimen(s=mu_glue,false,false);
-tail_append(new_kern(cur_val)); subtype(tail):=s;
-end;
-@y
-procedure append_kern;
-var s:quarterword; {|subtype| of the kern node}
-begin s:=cur_chr; scan_dimen(s=mu_glue,false,false);
-if (abs(mode)=mmode) and SGML_mode then begin
- end
-else begin
- tail_append(new_kern(cur_val)); subtype(tail):=s;
- end;
-end;
-@z
-%---------------------------------------
-@x [47] m.1073 l.20795 - Omega
-vmode+hmove,hmode+vmove,mmode+vmove: begin t:=cur_chr;
- scan_normal_dimen;
- if t=0 then scan_box(cur_val)@+else scan_box(-cur_val);
- end;
-any_mode(leader_ship): scan_box(leader_flag-a_leaders+cur_chr);
-any_mode(make_box): begin_box(0);
-@y
-vmode+hmove,hmode+vmove,mmode+vmove: begin
- if abs(mode)=mmode and SGML_mode then begin
- print_err("Unauthorized entry in math expression: ");
- print_cmd_chr(cur_cmd,cur_chr); print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end
- else begin
- t:=cur_chr; scan_normal_dimen;
- if t=0 then scan_box(cur_val)@+else scan_box(-cur_val);
- end;
- end;
-any_mode(leader_ship): begin
- if abs(mode)=mmode and SGML_mode then begin
- print_err("Unauthorized entry in math expression: ");
- print_cmd_chr(cur_cmd,cur_chr); print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end
- else
- scan_box(leader_flag-a_leaders+cur_chr);
- end;
-any_mode(make_box): begin
- if abs(mode)=mmode and SGML_mode then begin
- print_err("Unauthorized entry in math expression: ");
- print_cmd_chr(cur_cmd,cur_chr); print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end
- else
- begin_box(0);
- end;
-@z
-%---------------------------------------
-@x [47] m. l.21055 - Omega
-procedure new_graf(@!indented:boolean);
-begin prev_graf:=0;
-if (mode=vmode)or(head<>tail) then
- tail_append(new_param_glue(par_skip_code));
-push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
-prev_graf:=(norm_min(left_hyphen_min)*@'100+norm_min(right_hyphen_min))
- *@'200000+cur_lang;
-tmp_dir_stack:=get_avail; info(tmp_dir_stack):=par_direction;
-link(tmp_dir_stack):=par_dir_stack;
-par_dir_stack:=tmp_dir_stack;
-if indented then
- begin tail:=new_null_box; link(head):=tail; width(tail):=par_indent;@+
- box_dir(tail):=info(par_dir_stack);
- change_dir(tail,info(par_dir_stack));
- end;
-if every_par<>null then begin_token_list(every_par,every_par_text);
-if nest_ptr=1 then build_page; {put |par_skip| glue on current page}
-end;
-@y
-procedure sgml_start_graf; forward;
-
-procedure new_graf(@!indented:boolean);
-begin prev_graf:=0;
-if SGML_mode then begin
- sgml_start_graf
- end
-else begin
-if (mode=vmode)or(head<>tail) then
- tail_append(new_param_glue(par_skip_code));
-push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
-prev_graf:=(norm_min(left_hyphen_min)*@'100+norm_min(right_hyphen_min))
- *@'200000+cur_lang;
-tmp_dir_stack:=get_avail; info(tmp_dir_stack):=par_direction;
-link(tmp_dir_stack):=par_dir_stack;
-par_dir_stack:=tmp_dir_stack;
-if indented then
- begin tail:=new_null_box; link(head):=tail; width(tail):=par_indent;@+
- box_dir(tail):=info(par_dir_stack);
- change_dir(tail,info(par_dir_stack));
- end;
-if every_par<>null then begin_token_list(every_par,every_par_text);
-if nest_ptr=1 then build_page; {put |par_skip| glue on current page}
-end;
-end;
-@z
-%---------------------------------------
-@x [47] m.1100 l.21156 - Omega
-procedure end_graf;
-begin if mode=hmode then
- begin if head=tail then pop_nest {null paragraphs are ignored}
- else line_break(widow_penalty,info(par_dir_stack));
- tmp_dir_stack:=par_dir_stack;
- par_dir_stack:=link(par_dir_stack);
- free_avail(tmp_dir_stack);
- normal_paragraph;
- error_count:=0;
- end;
-end;
-@y
-procedure sgml_end_graf; forward;
-
-procedure end_graf;
-begin if mode=hmode then
- begin if head=tail then pop_nest {null paragraphs are ignored}
- else if SGML_mode then begin sgml_end_graf end
- else line_break(widow_penalty,info(par_dir_stack));
- tmp_dir_stack:=par_dir_stack;
- par_dir_stack:=link(par_dir_stack);
- free_avail(tmp_dir_stack);
- normal_paragraph;
- error_count:=0;
- end;
-end;
-@z
-%---------------------------------------
-@x [47] m.1130 l.21562 - Omega
-vmode+halign,hmode+valign:init_align;
-mmode+halign: if privileged then
- if cur_group=math_shift_group then init_align
- else off_save;
-vmode+endv,hmode+endv: do_endv;
-@y
-vmode+halign,hmode+valign:init_align;
-mmode+halign: if SGML_mode then begin
- print_err("Unauthorized entry in math expression: ");
- print_esc("halign"); print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end
- else begin
- if privileged then
- if cur_group=math_shift_group then init_align
- else off_save;
- end;
-vmode+endv,hmode+endv: do_endv;
-@z
-%---------------------------------------
-@x [48] m.1136 l.21605 - Omega
-@* \[48] Building math lists.
-The routines that \TeX\ uses to create mlists are similar to those we have
-just seen for the generation of hlists and vlists. But it is necessary to
-make ``noads'' as well as nodes, so the reader should review the
-discussion of math mode data structures before trying to make sense out of
-the following program.
-
-Here is a little routine that needs to be done whenever a subformula
-is about to be processed. The parameter is a code like |math_group|.
-
-@<Declare act...@>=
-procedure push_math(@!c:group_code);
-begin
-push_nest; mode:=-mmode; incompleat_noad:=null; new_save_level(c);
-make_local_direction(info(math_dir_stack),true);
-end;
-@y
-@* \[48] Building math lists.
-The routines that \TeX\ uses to create mlists are similar to those we have
-just seen for the generation of hlists and vlists. But it is necessary to
-make ``noads'' as well as nodes, so the reader should review the
-discussion of math mode data structures before trying to make sense out of
-the following program.
-
-Here is a little routine that needs to be done whenever a subformula
-is about to be processed. The parameter is a code like |math_group|.
-
-@<Glob...@>=
-@!SGML_mode:boolean;
-@!SGML_show_entities:boolean;
-@!MML_level:integer;
-@!mml_file_no:integer; {the \.{MML} output file}
-@!mml_indent:integer;
-@!mml_depth_level:integer;
-@!tmp_back_at_bol:boolean;
-
-@ @<Set init...@>=
-SGML_mode:=false;
-SGML_show_entities:=true;
-MML_level:=0;
-mml_indent:=0;
-mml_file_no:=0;
-mml_depth_level:=0;
-
-@
-
-@d sgml_out_pointer(#)==
- case math_type(#(p)) of
- math_char: begin
- fetch(#(p));
- fsort:=font_name_sort(cur_f);
- if char_exists(cur_i) then begin
- if (font_sort_char_tag(fsort)(cur_c)<>0) then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("<"); print(font_sort_char_tag(fsort)(cur_c));
- if (font_sort_char_attr(fsort)(cur_c)<>null) then begin
- sgml_attrs_out(font_sort_char_attr(fsort)(cur_c));
- end;
- print(">");
- if (font_sort_char_entity(fsort)(cur_c)<>0) then begin
- print(font_sort_char_entity(fsort)(cur_c));
- end;
- print("</"); print(font_sort_char_tag(fsort)(cur_c));
- print(">");
- print(new_line_char);
- back_at_bol:=true;
- end;
- end;
- end;
- sub_mlist: begin
- case type(p) of
- op_noad,bin_noad,rel_noad,
- open_noad,close_noad,punct_noad,inner_noad: begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("<mo");
- if (type(p)=op_noad) and (subtype(p)=limits) then begin
- print(" limits=""true""");
- end
- else if (type(p)=op_noad) and (subtype(p)=no_limits) then begin
- print(" limits=""false""");
- end;
- print(">");
- mml_indent:=mml_indent+1;
- print(new_line_char);
- back_at_bol:=true;
- q:=p; cur_mlist:=info(#(p));
- if link(cur_mlist)=null then
- if type(cur_mlist)=sgml_node then
- if str_eq_str(sgml_tag(cur_mlist),"mrow") then
- cur_mlist:=sgml_info(cur_mlist);
- back_at_bol:=sgml_out_mlist(false,back_at_bol,false); p:=q;
- mml_indent:=mml_indent-1;
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("</mo>");
- print(new_line_char);
- back_at_bol:=true;
- end;
- othercases begin
- q:=p; cur_mlist:=info(#(p));
- back_at_bol:=sgml_out_mlist(false,back_at_bol,false); p:=q;
- end
- endcases;
- end;
- othercases begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("<merror> Unrecognized math stuff </merror>");
- print(new_line_char);
- back_at_bol:=true;
- end
- endcases;
-
-@<Declare act...@>=
-procedure push_math(@!c:group_code);
-begin
-push_nest; mode:=-mmode; incompleat_noad:=null; new_save_level(c);
-make_local_direction(info(math_dir_stack),true);
-end;
-
-function sgml_out_on_one_line(p:pointer):boolean;
-begin
-if (sgml_tag(p)="mi") or (sgml_tag(p)="mo") or (sgml_tag(p)="mn") then
- sgml_out_on_one_line:=true
-else sgml_out_on_one_line:=false;
-end;
-
-procedure sgml_attrs_out(p:pointer);
-var q:pointer;
-begin
-q:=p;
-while q<>null do begin
- print(" ");
- print(sgml_tag(q)); print("=");
- print(sgml_attribute_quote);
- print(sgml_attrs(q));
- print(sgml_attribute_quote);
- q:=link(q);
- end;
-end;
-
-function sgml_out_mlist(break_line,back_at_bol,inside_vert:boolean):boolean;
-var p,q:pointer;
- old_selector:integer;
- i,fsort:integer;
- beg_of_vert:boolean;
- doing_vert_node:boolean;
- save_mml_indent:integer;
-begin
-if inside_vert then begin
- if is_char_node(cur_mlist) then beg_of_vert:=false
- else if type(cur_mlist)=sgml_entity_node then beg_of_vert:=true
- else beg_of_vert:=false;
- end
-else beg_of_vert:=false;
-old_selector:=selector;
-selector:=max_selector+mml_file_no;
-p:=cur_mlist;
-while p<>null do begin
- if is_char_node(p) then begin
- doing_vert_node:=false;
- fsort:=font_name_sort(font(p));
- if (font_sort_char_entity(fsort)(character(p))<>0) then begin
- if back_at_bol then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- print(font_sort_char_entity(fsort)(character(p)));
- end;
- end
- else begin
- case type(p) of
- hlist_node,vlist_node,rule_node,
- ins_node,mark_node,adjust_node: do_nothing;
- ligature_node: begin
- doing_vert_node:=false;
- fsort:=font_name_sort(font(lig_char(p)));
- if (font_sort_char_entity(fsort)(character(lig_char(p)))<>0) then begin
- if back_at_bol then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- print(font_sort_char_entity(fsort)(character(lig_char(p))));
- end;
- end;
- disc_node,whatsit_node,math_node,glue_node,
- kern_node,penalty_node,unset_node: do_nothing;
- sgml_node: begin
- doing_vert_node:=false;
- if sgml_tag(p)=0 then begin
- print(sgml_attrs(p));
- end
- else if sgml_singleton(p)>=1 then begin
- if sgml_kind(p)<>sgml_text_node then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- print("<"); print(sgml_tag(p));
- sgml_attrs_out(sgml_attrs(p));
- if sgml_singleton(p)=1 then print(sgml_empty_tag_marker);
- print(">");
- if sgml_kind(p)<>sgml_text_node then begin
- print(new_line_char); back_at_bol:=true;
- end;
- end
- else begin
- if sgml_kind(p)=sgml_vert_node then
- doing_vert_node:=true;
- if str_eq_str(sgml_tag(p),"math") then begin
- print(new_line_char);
- back_at_bol:=true;
- end;
- if back_at_bol then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- print("<"); print(sgml_tag(p));
- sgml_attrs_out(sgml_attrs(p)); print(">");
- if (sgml_kind(p)<>sgml_text_node) and
- (sgml_tag(p)<>"mtext") then begin
- if not(sgml_out_on_one_line(p)) then begin
- mml_indent:=mml_indent+1;
- print(new_line_char);
- back_at_bol:=true;
- end;
- end;
- cur_mlist:=sgml_info(p);
- if cur_mlist<>null then begin
- if (sgml_kind(p)=sgml_vert_node) then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- back_at_bol:=
- sgml_out_mlist(false,back_at_bol,sgml_kind(p)=sgml_vert_node);
- if (sgml_kind(p)=sgml_vert_node) then
- if not back_at_bol then begin
- print(new_line_char);
- back_at_bol:=true;
- end;
- end;
- if (sgml_kind(p)<>sgml_text_node) and
- (sgml_tag(p)<>"mtext") then begin
- if not(sgml_out_on_one_line(p)) then begin
- mml_indent:=mml_indent-1;
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- end;
- print("</"); print(sgml_tag(p)); print(">");
- if sgml_kind(p)<>sgml_text_node then begin
- print(new_line_char);
- back_at_bol:=true;
- end;
- if sgml_kind(p)=sgml_vert_node then
- beg_of_vert:=true;
- if str_eq_str(sgml_tag(p),"math") then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- end;
- end;
- end;
- sgml_entity_node: begin
- if not(doing_vert_node and (sgml_entity_string(p)=" ")) then begin
- print(sgml_entity_string(p));
- doing_vert_node:=false;
- beg_of_vert:=false;
- back_at_bol:=false;
- end;
- end;
- fraction_noad: begin
- doing_vert_node:=false;
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("<mfrac>Arguments</mfrac>");
- print(new_line_char); back_at_bol:=true;
- end;
- othercases begin
- doing_vert_node:=false;
- if (info(subscr(p))<>null) or
- (info(supscr(p))<>null) then begin
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("<m");
- if info(subscr(p))<>empty then print("sub");
- if info(supscr(p))<>empty then print("sup");
- print(">");
- mml_indent:=mml_indent+1;
- print(new_line_char);
- back_at_bol:=true;
- end;
- sgml_out_pointer(nucleus);
- if (info(subscr(p))<>null) or
- (info(supscr(p))<>null) then begin
- if info(subscr(p))<>null then begin
- sgml_out_pointer(subscr);
- end;
- if info(supscr(p))<>null then begin
- sgml_out_pointer(supscr);
- end;
- mml_indent:=mml_indent-1;
- for i:=1 to mml_indent do print(" ");
- back_at_bol:=false;
- print("</m");
- if info(subscr(p))<>null then print("sub");
- if info(supscr(p))<>null then print("sup");
- print(">");
- print(new_line_char);
- back_at_bol:=true;
- end;
- end;
- endcases;
- end;
- p:=link(p);
- if not(doing_vert_node) then
- if p<>null then
- if not(is_char_node(p)) then
- if type(p)=sgml_node then
- if sgml_kind(p)=sgml_vert_node then begin
- print(new_line_char);
- back_at_bol:=true;
- end;
- end;
-selector:=old_selector;
-sgml_out_mlist:=back_at_bol;
-end;
-
-procedure make_sgml_entity(s:str_number);
-begin
-link(tail):=new_sgml_entity_node;
-tail:=link(tail);
-sgml_entity_string(tail):=s;
-end;
-
-procedure scan_font_entity;
-var cv1,cv2,cv3,cv4:integer;
-begin
-scan_string_argument; cv1:=cur_val;
-scan_left_brace; scan_int; cv2:=cur_val; scan_right_brace;
-scan_string_argument; cv3:=cur_val;
-scan_string_argument; cv4:=cur_val;
-save_ptr:=save_ptr+4;
-saved(-1):=cv1; saved(-2):=cv2; saved(-3):=cv3; saved(-4):=cv4;
-new_save_level(font_entity_group); scan_left_brace; push_nest;
-end;
-
-procedure scan_empty_tag;
-begin
-scan_string_argument;
-link(tail):=new_sgml_node;
-tail:=link(tail);
-sgml_tag(tail):=cur_val;
-sgml_kind(tail):=sgml_text_node;
-sgml_singleton(tail):=1;
-incr(save_ptr); saved(-1):=tail;
-new_save_level(empty_tag_group); scan_left_brace; push_nest;
-end;
-
-procedure scan_math_empty_tag;
-begin
-scan_string_argument;
-link(tail):=new_sgml_node;
-tail:=link(tail);
-sgml_tag(tail):=cur_val;
-sgml_kind(tail):=sgml_math_node;
-sgml_singleton(tail):=1;
-incr(save_ptr); saved(-1):=tail;
-new_save_level(empty_tag_group); scan_left_brace; push_nest;
-end;
-
-procedure sgml_startmathtag(s:str_number);
-begin
-push_math(math_group); current_sgml_tag:=s;
-end;
-
-
-procedure sgml_startverttag(s:str_number);
-begin
-push_nest; new_save_level(vert_sgml_group);
-current_sgml_tag:=s;
-mode:=-hmode;
-end;
-
-procedure sgml_startpartag(s:str_number);
-begin
-push_nest; new_save_level(par_sgml_group);
-current_sgml_tag:=s;
-mode:=-hmode;
-end;
-
-procedure sgml_starttexttag(s:str_number);
-begin
-push_nest; new_save_level(text_sgml_group);
-current_sgml_tag:=s;
-mode:=-hmode;
-end;
-
-
-procedure sgml_tag_attribute(tag,s,s1:str_number);
-var p:pointer;
- nest_level:integer;
- found_tag:boolean;
-begin
-p:=new_sgml_attr_node;
-sgml_tag(p):=s;
-sgml_attrs(p):=s1;
-sgml_singleton(p):=0;
-if str_eq_str(tag,current_sgml_tag) then begin
- link(p):=current_sgml_attrs;
- current_sgml_attrs:=p;
- end
-else begin
- nest_level:= nest_ptr - 1;
- found_tag:=false;
- while (nest_level>0) and
- (not str_eq_str(nest[nest_level].sgml_field,tag)) do
- decr(nest_level);
- if nest_level<>0 then begin
- link(p):=nest[nest_level].sgml_attr_field;
- nest[nest_level].sgml_attr_field:=p;
- end
- else begin
- print("Tag not found in call to SGMLtagattribute"); print_ln;
- end;
- end;
-end;
-
-procedure sgml_attribute(s,s1:str_number);
-var p,q:pointer;
-begin
-p:=new_sgml_attr_node;
-sgml_tag(p):=s;
-sgml_attrs(p):=s1;
-sgml_singleton(p):=0;
-link(p):=null;
-if current_sgml_attrs=null then
- current_sgml_attrs:=p
-else begin
- q:=current_sgml_attrs;
- while link(q)<>null do q:=link(q);
- link(q):=p;
- end;
-end;
-
-procedure sgml_endtexttag(s:str_number);
-var q:pointer;
-begin
-if not str_eq_str(s,current_sgml_tag) then begin
- print_err("Tags do not match: ");
- print(current_sgml_tag); print(","); print(s);
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-q:=new_sgml_node;
-sgml_tag(q):=s;
-sgml_kind(q):=sgml_text_node;
-sgml_info(q):=link(head);
-sgml_attrs(q):=current_sgml_attrs;
-pop_nest;
-unsave;
-if mode=vmode then begin
- ensure_sgml_open;
- cur_mlist:=q;
- tmp_back_at_bol:=sgml_out_mlist(false,true,false);
- end
-else begin
- link(tail):=q;
- tail:=q;
- end;
-end;
-
-procedure sgml_endverttag(s:str_number);
-var q:pointer;
-begin
-if not str_eq_str(s,current_sgml_tag) then begin
- print_err("Tags do not match: ");
- print(current_sgml_tag); print(","); print(s);
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-q:=new_sgml_node;
-sgml_tag(q):=s;
-sgml_kind(q):=sgml_vert_node;
-sgml_info(q):=link(head);
-sgml_attrs(q):=current_sgml_attrs;
-pop_nest;
-unsave;
-if mode=vmode then begin
- ensure_sgml_open;
- cur_mlist:=q;
- tmp_back_at_bol:=sgml_out_mlist(false,true,false);
- end
-else begin
- link(tail):=q;
- tail:=q;
- end;
-end;
-
-procedure sgml_endpartag(s:str_number);
-var q:pointer;
-begin
-if not str_eq_str(s,current_sgml_tag) then begin
- print_err("Tags do not match: ");
- print(current_sgml_tag); print(","); print(s);
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-q:=new_sgml_node;
-sgml_tag(q):=s;
-sgml_kind(q):=sgml_vert_node;
-sgml_info(q):=link(head);
-sgml_attrs(q):=current_sgml_attrs;
-pop_nest;
-unsave;
-if sgml_info(q)=null then begin
- flush_node_list(q);
- end
-else if mode=vmode then begin
- ensure_sgml_open;
- cur_mlist:=q;
- tmp_back_at_bol:=sgml_out_mlist(false,true,false);
- end
-else begin
- link(tail):=q;
- tail:=q;
- end;
-end;
-
-procedure sgml_write(s:str_number);
-var old_selector:integer;
-begin
-ensure_sgml_open;
-old_selector:=selector;
-selector:=max_selector+mml_file_no;
-print(s);
-selector:=old_selector;
-end;
-
-procedure sgml_endmathtag(s:str_number);
-var q:pointer;
-begin
-if not str_eq_str(s,current_sgml_tag) then begin
- print_err("Tags do not match: ");
- print(current_sgml_tag); print(","); print(s);
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-q:=new_sgml_node;
-sgml_tag(q):=s;
-sgml_kind(q):=sgml_math_node;
-if s<>"mtext" then sgml_attrs(q):=current_sgml_attrs;
-sgml_info(q):=link(head);
-if current_sgml_attrs=null then
- if (link(head)<>null) then
- if (str_eq_str(s,"mtr") or str_eq_str(s,"mtd")) and
- (link(link(head))=null) then begin
- q:=sgml_info(q);
- end;
-pop_nest;
-unsave;
-link(tail):=q;
-tail:=q;
-end;
-
-procedure sgml_start_graf;
-begin
-print("Executing sgml_start_graf"); print_ln;
-sgml_starttexttag(sgml_paragraph_tag);
-end;
-
-procedure sgml_end_graf;
-begin
-sgml_endtexttag(sgml_paragraph_tag);
-print("Executing sgml_end_graf"); print_ln;
-end;
-
-@ Entering or leaving MML mode
-by using the routine called |primitive|, defined below. Let us enter them
-now, so that we don't have to list all those parameter names anywhere else.
-
-@<Put each of \TeX's primitives into the hash table@>=
-primitive("showSGMLentities",set_show_sgml_entities,1);
-primitive("noshowSGMLentities",set_show_sgml_entities,0);
-primitive("SGMLmode",set_mml_mode,1);
-@!@:SGML_mode_}{\.{\\SGMLmode} primitive@>
-primitive("noSGMLmode",set_mml_mode,0);
-@!@:noSGML_mode_}{\.{\\noSGMLmode} primitive@>
-primitive("SGMLstartmathtag",sgml_command,0);
-primitive("SGMLendmathtag",sgml_command,1);
-primitive("SGMLstarttexttag",sgml_command,2);
-primitive("SGMLendtexttag",sgml_command,3);
-primitive("SGMLattribute",sgml_command,4);
-primitive("MMLstarttext",sgml_command,5);
-primitive("MMLendtext",sgml_command,6);
-
-primitive("SGMLampersand",other_char,"&");
-primitive("SGMLbackslash",other_char,"\");
-primitive("SGMLcarret",other_char,"^");
-primitive("SGMLdollar",other_char,"$");
-primitive("SGMLhash",other_char,"#");
-primitive("SGMLleftbrace",other_char,"{");
-primitive("SGMLpercent",other_char,"%");
-primitive("SGMLrightbrace",other_char,"}");
-primitive("SGMLunderscore",other_char,"_");
-primitive("SGMLquote",other_char,"'");
-primitive("SGMLbackquote",other_char,"");
-primitive("SGMLdoublequote",other_char,"""");
-primitive("SGMLtilde",other_char,"~");
-primitive("SGMLexclamationmark",other_char,"!");
-primitive("SGMLquestionmark",other_char,"?");
-primitive("SGMLequals",other_char,"=");
-primitive("SGMLcolon",other_char,":");
-primitive("SGMLsemicolon",other_char,";");
-
-primitive("SGMLentity",sgml_command,7);
-primitive("SGMLemptytag",sgml_command,8);
-primitive("SGMLFontEntity",sgml_command,9);
-primitive("SGMLwrite",sgml_command,10);
-primitive("SGMLwriteln",sgml_command,11);
-primitive("SGMLfilesuffix",sgml_command,12);
-primitive("SGMLattributequote",sgml_command,13);
-primitive("SGMLemptytagmarker",sgml_command,14);
-primitive("SGMLtagattribute",sgml_command,15);
-primitive("SGMLstartverttag",sgml_command,16);
-primitive("SGMLendverttag",sgml_command,17);
-primitive("SGMLmathemptytag",sgml_command,18);
-primitive("SGMLstartpartag",sgml_command,19);
-primitive("SGMLendpartag",sgml_command,20);
-
-@ @<Cases of |main_control| that build boxes and lists@>=
-mmode+set_mml_mode: report_illegal_case;
-non_math(set_mml_mode):
- if cur_chr=0 then SGML_mode:=false else SGML_mode:=true;
-any_mode(set_show_sgml_entities):
- if cur_chr=0 then SGML_show_entities:=false
- else SGML_show_entities:=true;
-any_mode(sgml_command): begin
- case cur_chr of
- 0: begin scan_string_argument; sgml_startmathtag(cur_val); end;
- 1: begin scan_string_argument; sgml_endmathtag(cur_val); end;
- 2: begin scan_string_argument; sgml_starttexttag(cur_val); end;
- 3: begin scan_string_argument; sgml_endtexttag(cur_val); end;
- 4: begin scan_string_argument; cur_val1:=cur_val;
- scan_string_argument; sgml_attribute(cur_val1,cur_val); end;
- 5: begin
- push_nest; new_save_level(text_mml_group);
- current_sgml_tag:="mtext"; mode:=-hmode;
- end;
- 6: begin sgml_endmathtag("mtext"); end;
- 7: begin scan_string_argument; make_sgml_entity(cur_val); end;
- 8: begin scan_empty_tag; end;
- 9: begin scan_font_entity; end;
- 10: begin scan_string_argument; sgml_write(cur_val); end;
- 11: begin sgml_write(new_line_char); end;
- 12: begin scan_string_argument; sgml_file_suffix:=cur_val; end;
- 13: begin scan_string_argument; sgml_attribute_quote:=cur_val; end;
- 14: begin scan_string_argument; sgml_empty_tag_marker:=cur_val; end;
- 15: begin scan_string_argument; cur_val2:=cur_val;
- scan_string_argument; cur_val1:=cur_val;
- scan_string_argument;
- sgml_tag_attribute(cur_val2,cur_val1,cur_val);
- end;
- 16: begin scan_string_argument; sgml_startverttag(cur_val); end;
- 17: begin scan_string_argument; sgml_endverttag(cur_val); end;
- 18: begin scan_math_empty_tag; end;
- 19: begin scan_string_argument; sgml_startpartag(cur_val); end;
- 20: begin scan_string_argument; sgml_endpartag(cur_val); end;
- end;
- end;
-
-@ The following code opens \.{MML} output file if neccesary.
-@p procedure ensure_sgml_open;
-begin
- if mml_file_no=0 then begin
- incr(output_file_no);
- mml_file_no:=output_file_no;
- ensure_output_open(sgml_file_suffix)
- (output_file_names[mml_file_no])
- (output_files[mml_file_no]);
- output_file_names[mml_file_no]:=output_m_name;
- end;
-end;
-
-@ @<Declare act...@>=
-
-@z
-%---------------------------------------
-@x [48] m.1137 l.21620 - Omega
-@ We get into math mode from horizontal mode when a `\.\$' (i.e., a
-|math_shift| character) is scanned. We must check to see whether this
-`\.\$' is immediately followed by another, in case display math mode is
-called for.
-
-@<Cases of |main_control| that build...@>=
-hmode+math_shift:init_math;
-@y
-@ We get into math mode from horizontal mode when a `\.\$' (i.e., a
-|math_shift| character) is scanned. We must check to see whether this
-`\.\$' is immediately followed by another, in case display math mode is
-called for.
-
-@<Cases of |main_control| that build...@>=
-hmode+math_shift: begin
- if SGML_mode then begin
- ensure_sgml_open;
- incr(MML_level);
- end;
- init_math;
- end;
-
-@z
-%---------------------------------------
-@x [48] m.1139 l.21648 - Omega
-if every_math<>null then begin_token_list(every_math,every_math_text);
-@y
-current_sgml_tag:="mrow";
-sgml_attribute("displaystyle","false");
-if every_math<>null then begin_token_list(every_math,every_math_text);
-@z
-%---------------------------------------
-@x [48] m.1145 l.21703 - Omega
-if every_display<>null then begin_token_list(every_display,every_display_text);
-@y
-current_sgml_tag:="mrow";
-sgml_attribute("displaystyle","true");
-if every_display<>null then begin_token_list(every_display,every_display_text);
-@z
-%---------------------------------------
-@x [48] m.1155 l.21878 - Omega
- else type(p):=ord_noad+(c div @"1000000);
- link(tail):=p; tail:=p;
-@y
- else type(p):=ord_noad+(c div @"1000000);
- if not SGML_mode then
- tail_append(p)
- else if (c div @"1000000)=4 then begin
- saved(0):=p;
- incr(save_ptr);
- push_math(math_mml_group);
- end
- else if (cur_group=math_mml_group) and
- ((c div @"1000000)=5) then begin
- unsave;
- decr(save_ptr);
- q:=saved(0);
- r:=fin_mlist(null);
- push_math(math_group);
- tail_append(q); tail_append(r); tail_append(p);
- unsave;
- p:=fin_mlist(null);
- tail_append(p);
- end
- else tail_append(p);
-@z
-%---------------------------------------
-@x [48] m.1176--1177 l.22109 - Omega
-procedure sub_sup;
-var t:small_number; {type of previous sub/superscript}
-@!p:pointer; {field to be filled by |scan_math|}
-begin t:=empty; p:=null;
-if tail<>head then if scripts_allowed(tail) then
- begin p:=supscr(tail)+cur_cmd-sup_mark; {|supscr| or |subscr|}
- t:=math_type(p);
- end;
-if (p=null)or(t<>empty) then @<Insert a dummy noad to be sub/superscripted@>;
-scan_math(p);
-end;
-@y
-procedure sub_sup;
-var t:small_number; {type of previous sub/superscript}
-@!p,q,r:pointer; {field to be filled by |scan_math|}
-begin t:=empty; p:=null;
-if tail<>head then begin
- if SGML_mode then
- if type(tail)=sgml_node then begin
- q:=head;
- while link(q)<>tail do q:=link(q);
- r:=new_noad;
- info(nucleus(r)):=tail;
- math_type(nucleus(r)):=sub_mlist;
- link(q):=r;
- tail:=r;
- end;
- if scripts_allowed(tail) then
- begin p:=supscr(tail)+cur_cmd-sup_mark; {|supscr| or |subscr|}
- t:=math_type(p);
- end;
- end;
-if (p=null)or(t<>empty) then @<Insert a dummy noad to be sub/superscripted@>;
-scan_math(p);
-end;
-@z
-%---------------------------------------
-@x [48] m.1181 l.22199 - Omega
-procedure math_fraction;
-var c:small_number; {the type of generalized fraction we are scanning}
-begin c:=cur_chr;
-if incompleat_noad<>null then
- @<Ignore the fraction operation and complain about this ambiguous case@>
-else begin incompleat_noad:=get_node(fraction_noad_size);
- type(incompleat_noad):=fraction_noad;
- subtype(incompleat_noad):=normal;
- math_type(numerator(incompleat_noad)):=sub_mlist;
- info(numerator(incompleat_noad)):=link(head);
- mem[denominator(incompleat_noad)].hh:=empty_field;
- mem[left_delimiter(incompleat_noad)].qqqq:=null_delimiter;
- mem[right_delimiter(incompleat_noad)].qqqq:=null_delimiter;@/
- link(head):=null; tail:=head;
- @<Use code |c| to distinguish between generalized fractions@>;
- end;
-end;
-@y
-procedure math_fraction;
-var c:small_number; {the type of generalized fraction we are scanning}
-begin c:=cur_chr;
-if incompleat_noad<>null then
- @<Ignore the fraction operation and complain about this ambiguous case@>
-else begin incompleat_noad:=get_node(fraction_noad_size);
- type(incompleat_noad):=fraction_noad;
- subtype(incompleat_noad):=normal;
- math_type(numerator(incompleat_noad)):=sub_mlist;
- info(numerator(incompleat_noad)):=link(head);
- mem[denominator(incompleat_noad)].hh:=empty_field;
- if SGML_mode then begin
- mem[left_delimiter(incompleat_noad)].int:=0;
- mem[right_delimiter(incompleat_noad)].int:=0;@/
- end
- else begin
- mem[left_delimiter(incompleat_noad)].qqqq:=null_delimiter;
- mem[right_delimiter(incompleat_noad)].qqqq:=null_delimiter;@/
- end;
- link(head):=null; tail:=head;
- @<Use code |c| to distinguish between generalized fractions@>;
- end;
-end;
-@z
-%---------------------------------------
-@x [48] m.1182 l.22199 - Omega
- begin scan_delimiter(left_delimiter(incompleat_noad),false);
- scan_delimiter(right_delimiter(incompleat_noad),false);
-@y
- begin if SGML_mode then begin
- mem[left_delimiter(incompleat_noad)].int:=new_noad;
- scan_math(nucleus(mem[left_delimiter(incompleat_noad)].int));
- mem[right_delimiter(incompleat_noad)].int:=new_noad;
- scan_math(nucleus(mem[right_delimiter(incompleat_noad)].int));
- end
- else begin
- scan_delimiter(left_delimiter(incompleat_noad),0);
- scan_delimiter(right_delimiter(incompleat_noad),0);
- end;
-@z
-%---------------------------------------
-@x [48] m.1183 l.22212 - Omega
- begin scan_delimiter(garbage,false); scan_delimiter(garbage,false);
-@y
- begin if SGML_mode then begin
- scan_math(garbage); scan_math(garbage);
- end
- else begin
- scan_delimiter(garbage,0); scan_delimiter(garbage,0);
- end;
-@z
-%---------------------------------------
-@x [48] m.1184 l.22230 - Omega
-function fin_mlist(@!p:pointer):pointer;
-var q:pointer; {the mlist to return}
-begin if incompleat_noad<>null then @<Compleat the incompleat noad@>
-else begin link(tail):=p; q:=link(head);
- end;
-pop_nest; fin_mlist:=q;
-end;
-@y
-function fin_mlist(@!p:pointer):pointer;
-var q,q1,q2:pointer; {the mlist to return}
- tag:integer;
-begin if incompleat_noad<>null then @<Compleat the incompleat noad@>
-else begin link(tail):=p; q:=link(head);
- end;
-if current_sgml_tag=0 then
- tag:="mrow"
-else tag:=current_sgml_tag;
-pop_nest;
-if SGML_mode then
- if q<>null then
- if link(q)<>null then begin
- q1:=new_sgml_node;
- sgml_tag(q1):=tag;
- sgml_info(q1):=q;
- sgml_kind(q1):=sgml_math_node;
- fin_mlist:=q1
- end
- else fin_mlist:=q
- else fin_mlist:=q
-else
- fin_mlist:=q;
-end;
-@z
-%---------------------------------------
-@x [48] m.1185 l.22256 - Omega
-@ @<Compleat...@>=
-begin math_type(denominator(incompleat_noad)):=sub_mlist;
-info(denominator(incompleat_noad)):=link(head);
-if p=null then q:=incompleat_noad
-else begin q:=info(numerator(incompleat_noad));
- if type(q)<>left_noad then confusion("right");
-@:this can't happen right}{\quad right@>
- info(numerator(incompleat_noad)):=link(q);
- link(q):=incompleat_noad; link(incompleat_noad):=p;
- end;
-end
-@y
-@ @<Compleat...@>=
-begin math_type(denominator(incompleat_noad)):=sub_mlist;
-info(denominator(incompleat_noad)):=link(head);
-if p=null then
- if not SGML_mode then
- q:=incompleat_noad
- else begin
- if link(info(numerator(incompleat_noad)))<>null then begin
- q1:=new_sgml_node;
- sgml_tag(q1):="mrow";
- sgml_kind(q1):=sgml_math_node;
- sgml_info(q1):=info(numerator(incompleat_noad));
- end
- else q1:=info(numerator(incompleat_noad));
- if link(info(denominator(incompleat_noad)))<>null then begin
- q2:=new_sgml_node;
- sgml_tag(q2):="mrow";
- sgml_kind(q2):=sgml_math_node;
- sgml_info(q2):=info(denominator(incompleat_noad));
- end
- else q2:=info(denominator(incompleat_noad));
- q:=new_sgml_node;
- sgml_tag(q):="mfrac";
- sgml_kind(q):=sgml_math_node;
- sgml_info(q):=q1;
- link(q1):=q2;
- current_sgml_attrs:=null;
- if thickness(incompleat_noad)<>default_code then
- if thickness(incompleat_noad)=0 then
- sgml_attribute("linethickness","0ex")
- else if thickness(incompleat_noad)<default_rule_thickness then
- sgml_attribute("linethickness","thin")
- else if thickness(incompleat_noad)>default_rule_thickness then
- sgml_attribute("linethickness","thick");
- sgml_attrs(q):=current_sgml_attrs;
- if (mem[left_delimiter(incompleat_noad)].int<>0) or
- (mem[right_delimiter(incompleat_noad)].int<>0) then begin
- q1:=q;
- q:=new_sgml_node;
- sgml_tag(q):="mrow";
- sgml_kind(q):=sgml_math_node;
- sgml_info(q):=mem[left_delimiter(incompleat_noad)].int;
- link(mem[left_delimiter(incompleat_noad)].int):=q1;
- link(q1):=mem[right_delimiter(incompleat_noad)].int;
- end
- end
-else begin q:=info(numerator(incompleat_noad));
- if type(q)<>left_noad then confusion("right");
-@:this can't happen right}{\quad right@>
- info(numerator(incompleat_noad)):=link(q);
- link(q):=incompleat_noad; link(incompleat_noad):=p;
- end;
-end
-@z
-%---------------------------------------
-@x [48] m.1186 l.22256 - Omega
-math_group: begin unsave; decr(save_ptr);@/
- math_type(saved(0)):=sub_mlist; p:=fin_mlist(null); info(saved(0)):=p;
- if p<>null then if link(p)=null then
- if type(p)=ord_noad then
- begin if math_type(subscr(p))=empty then
- if math_type(supscr(p))=empty then
- begin mem[saved(0)].hh:=mem[nucleus(p)].hh;
- free_node(p,noad_size);
- end;
- end
- else if type(p)=accent_noad then if saved(0)=nucleus(tail) then
- if type(tail)=ord_noad then @<Replace the tail of the list by |p|@>;
- end;
-@y
-text_mml_group: begin
- unsave; decr(save_ptr);
- p:=saved(0);
- sgml_info(p):=link(head);
- pop_nest;
- tail_append(p);
- end;
-text_sgml_group: begin
- print_err("Expecting closing tag </");
- print(current_sgml_tag); print(">.");
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-vert_sgml_group: begin
- print_err("Expecting closing tag </");
- print(current_sgml_tag); print(">.");
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-par_sgml_group: begin
- print_err("Expecting closing tag </");
- print(current_sgml_tag); print(">.");
- print_ln;
- print_nl("The SGML translator cannot continue");
- succumb;
- end;
-math_mml_group: begin
- unsave;
- decr(save_ptr);
- link(saved(0)):=link(head);
- p:=saved(0);
- pop_nest;
- if type(p)=sgml_node then
- if str_eq_str(sgml_tag(p),"mrow") then
- if sgml_attrs(p)=null then begin
- if link(sgml_info(p))=null then
- p:=sgml_info(p);
- end;
- tail_append(p);
- back_input;
- end;
-math_group: begin unsave; decr(save_ptr);@/
- if SGML_mode then
- math_type(saved(0)):=sub_mlist
- else
- math_type(saved(0)):=sub_mlist;
- p:=fin_mlist(null); info(saved(0)):=p;
- if p<>null then if link(p)=null then
- if type(p)=ord_noad then
- begin if math_type(subscr(p))=empty then
- if math_type(supscr(p))=empty then
- begin mem[saved(0)].hh:=mem[nucleus(p)].hh;
- free_node(p,noad_size);
- end;
- end
- else if type(p)=accent_noad then if saved(0)=nucleus(tail) then
- if type(tail)=ord_noad then @<Replace the tail of the list by |p|@>;
- end;
-font_entity_group: begin
- unsave;
- font_sort_number:=font_sort_ptr+1;
- for font_sorts:=font_sort_base+1 to font_sort_ptr do
- if str_eq_str(font_sort_name(font_sorts),saved(-1)) then begin
- font_sort_number:=font_sorts;
- break;
- end;
- font_sort_c:=saved(-2);
- font_sort_char_entity(font_sort_number)(font_sort_c):=saved(-3);
- font_sort_char_tag(font_sort_number)(font_sort_c):=saved(-4);
- font_sort_char_attr(font_sort_number)(font_sort_c):=current_sgml_attrs;
- current_sgml_attrs:=null;
- save_ptr:=save_ptr-4; pop_nest;
- end;
-empty_tag_group: begin
- unsave; sgml_attrs(saved(-1)):=current_sgml_attrs;
- decr(save_ptr); pop_nest;
- end;
-@z
-%---------------------------------------
-@x [48] m.1191 l.22301 - Omega
-procedure math_left_right;
-var t:small_number; {|left_noad| or |right_noad|}
-@!p:pointer; {new noad}
-begin t:=cur_chr;
-if (t=right_noad)and(cur_group<>math_left_group) then
- @<Try to recover from mismatched \.{\\right}@>
-else begin p:=new_noad; type(p):=t;
- scan_delimiter(delimiter(p),false);
- if t=left_noad then
- begin push_math(math_left_group); link(head):=p; tail:=p;
- end
- else begin p:=fin_mlist(p); unsave; {end of |math_left_group|}
- tail_append(new_noad); type(tail):=inner_noad;
- math_type(nucleus(tail)):=sub_mlist;
- info(nucleus(tail)):=p;
- end;
- end;
-end;
-@y
-procedure math_left_right;
-var t:small_number; {|left_noad| or |right_noad|}
-@!p,q,r:pointer; {new noad}
-begin t:=cur_chr;
-if (t=right_noad)and(cur_group<>math_left_group) then
- @<Try to recover from mismatched \.{\\right}@>
-else begin p:=new_noad;
- if SGML_mode then begin
- scan_math(nucleus(p));
- if t=left_noad then begin
- saved(0):=p; incr(save_ptr);
- push_math(math_left_group);
- end
- else begin
- unsave;
- decr(save_ptr);
- q:=saved(0); r:=fin_mlist(null);
- push_math(math_group);
- tail_append(q); tail_append(r);
- tail_append(p);
- unsave;
- p:=fin_mlist(null);
- tail_append(p);
- end
- end
- else begin
- type(p):=t;
- scan_delimiter(delimiter(p),false);
- if t=left_noad then
- begin push_math(math_left_group); link(head):=p; tail:=p;
- end
- else begin p:=fin_mlist(p); unsave; {end of |math_left_group|}
- tail_append(new_noad); type(tail):=inner_noad;
- math_type(nucleus(tail)):=sub_mlist;
- info(nucleus(tail)):=p;
- end;
- end;
- end;
-end;
-@z
-%---------------------------------------
-@x [48] m.1192 l.22284 - Omega
-begin if cur_group=math_shift_group then
- begin scan_delimiter(garbage,false);
- print_err("Extra "); print_esc("right");
-@.Extra \\right.@>
- help1("I'm ignoring a \right that had no matching \left.");
- error;
- end
-else off_save;
-end
-@y
-begin if cur_group=math_shift_group then
- begin if SGML_mode then scan_math(garbage)
- else scan_delimiter(garbage,0);
- print_err("Extra "); print_esc("right");
-@.Extra \\right.@>
- help1("I'm ignoring a \right that had no matching \left.");
- error;
- end
-else off_save;
-end
-@z
-%---------------------------------------
-@x [48] m.1193 l.22327 - Omega
-mmode+math_shift: if cur_group=math_shift_group then after_math
- else off_save;
-@y
-mmode+math_shift: if cur_group=math_mml_group then after_mml
- else if cur_group=math_shift_group then after_math
- else off_save;
-@z
-%---------------------------------------
-@x [48] m.1194 l.22284 - Omega
-procedure after_math;
-var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
-@!danger:boolean; {not enough symbol fonts are present}
-@!m:integer; {|mmode| or |-mmode|}
-@!p:pointer; {the formula}
-@!a:pointer; {box containing equation number}
-@<Local variables for finishing a displayed formula@>@;
-begin danger:=false;
-@<Check that the necessary fonts for math symbols are present;
- if not, flush the current math lists and set |danger:=true|@>;
-m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest}
-if mode=-m then {end of equation number}
- begin @<Check that another \.\$ follows@>;
- cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false;
- mlist_to_hlist; a:=hpack(link(temp_head),natural,info(math_dir_stack));
- unsave; decr(save_ptr); {now |cur_group=math_shift_group|}
- if saved(0)=1 then l:=true;
- danger:=false;
- @<Check that the necessary fonts for math symbols are present;
- if not, flush the current math lists and set |danger:=true|@>;
- m:=mode; p:=fin_mlist(null);
- end
-else a:=null;
-if m<0 then @<Finish math in text@>
-else begin if a=null then @<Check that another \.\$ follows@>;
- @<Finish displayed math@>;
- end;
-end;
-@y
-procedure after_mml;
-var p:pointer;
-begin
-unsave;
-decr(save_ptr);
-link(saved(0)):=link(head);
-p:=saved(0);
-pop_nest;
-tail_append(p);
-back_input;
-end;
-
-procedure after_math;
-var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
-@!danger:boolean; {not enough symbol fonts are present}
-@!m:integer; {|mmode| or |-mmode|}
-@!p:pointer; {the formula}
-@!a:pointer; {box containing equation number}
-@<Local variables for finishing a displayed formula@>@;
-begin danger:=false;
-@<Check that the necessary fonts for math symbols are present;
- if not, flush the current math lists and set |danger:=true|@>;
-m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest}
-if SGML_mode then decr(MML_level);
-if mode=-m then {end of equation number}
- begin @<Check that another \.\$ follows@>;
- cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false;
- if SGML_mode then begin
- tmp_back_at_bol:=sgml_out_mlist(true,true,false)
- end
- else begin
- mlist_to_hlist; a:=hpack(link(temp_head),natural,info(math_dir_stack));
- end;
- unsave; decr(save_ptr); {now |cur_group=math_shift_group|}
- if saved(0)=1 then l:=true;
- danger:=false;
- @<Check that the necessary fonts for math symbols are present;
- if not, flush the current math lists and set |danger:=true|@>;
- m:=mode; p:=fin_mlist(null);
- end
-else a:=null;
-if m<0 then @<Finish math in text@>
-else begin if a=null then @<Check that another \.\$ follows@>;
- @<Finish displayed math@>;
- end;
-end;
-@z
-%---------------------------------------
-@x [49] m.1196 l.22388 - Omega
-@<Finish math in text@> =
-begin tail_append(new_math(math_surround,before));
-cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist;
-link(tail):=link(temp_head);
-while link(tail)<>null do tail:=link(tail);
-tail_append(new_math(math_surround,after));
-space_factor:=1000; unsave;
-tmp_dir_stack:=math_dir_stack;
-math_dir_stack:=link(math_dir_stack);
-free_avail(tmp_dir_stack);
-end
-@y
-@<Finish math in text@>=
-begin
-if not SGML_mode then begin
- tail_append(new_math(math_surround,before));
- end;
-cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0);
-if SGML_mode then begin
-{
- if MML_level=0 then tmp_back_at_bol:=sgml_out_mlist(true,true,false)
- else tail_append(cur_mlist);
-}
- sgml_starttexttag("inlinemath");
- sgml_startmathtag("math");
- tail_append(cur_mlist);
- sgml_endmathtag("math");
- sgml_endtexttag("inlinemath");
- end
-else begin
- mlist_to_hlist;
- link(tail):=link(temp_head);
- while link(tail)<>null do tail:=link(tail);
- tail_append(new_math(math_surround,after));
- end;
-space_factor:=1000; unsave;
-tmp_dir_stack:=math_dir_stack;
-math_dir_stack:=link(math_dir_stack);
-free_avail(tmp_dir_stack);
-end
-@z
-%---------------------------------------
-@x [49] m.1197 l.22430 - Omega
-@<Finish displayed math@>=
-cur_mlist:=p; cur_style:=display_style; mlist_penalties:=false;
-mlist_to_hlist; p:=link(temp_head);@/
-adjust_tail:=adjust_head; b:=hpack(p,natural,info(math_dir_stack));
-p:=list_ptr(b);
-t:=adjust_tail; adjust_tail:=null;@/
-w:=width(b); z:=display_width; s:=display_indent;
-if (a=null)or danger then
- begin e:=0; q:=0;
- end
-else begin e:=width(a); q:=e+math_quad(text_size);
- end;
-if w+q>z then
- @<Squeeze the equation as much as possible; if there is an equation
- number that should go on a separate line by itself,
- set~|e:=0|@>;
-@<Determine the displacement, |d|, of the left edge of the equation, with
- respect to the line size |z|, assuming that |l=false|@>;
-@<Append the glue or equation number preceding the display@>;
-@<Append the display and perhaps also the equation number@>;
-@<Append the glue or equation number following the display@>;
-resume_after_display
-@y
-@<Finish displayed math@>=
-cur_mlist:=p; cur_style:=display_style; mlist_penalties:=false;
-if SGML_mode then begin
-{
- if MML_level=0 then tmp_back_at_bol:=sgml_out_mlist(true,true,false)
- else tail_append(cur_mlist);
-}
- sgml_starttexttag("displaymath");
- sgml_startmathtag("math");
- tail_append(cur_mlist);
- sgml_endmathtag("math");
- sgml_endtexttag("displaymath");
- end
-else begin
- mlist_to_hlist; p:=link(temp_head);@/
- adjust_tail:=adjust_head; b:=hpack(p,natural,info(math_dir_stack));
- p:=list_ptr(b);
- t:=adjust_tail; adjust_tail:=null;@/
- w:=width(b); z:=display_width; s:=display_indent;
- if (a=null)or danger then
- begin e:=0; q:=0;
- end
- else begin e:=width(a); q:=e+math_quad(text_size);
- end;
- if w+q>z then
- @<Squeeze the equation as much as possible; if there is an equation
- number that should go on a separate line by itself,
- set~|e:=0|@>;
- @<Determine the displacement, |d|, of the left edge of the equation, with
- respect to the line size |z|, assuming that |l=false|@>;
- @<Append the glue or equation number preceding the display@>;
- @<Append the display and perhaps also the equation number@>;
- @<Append the glue or equation number following the display@>;
- end;
-resume_after_display
-@z
-%---------------------------------------
-@x [49] m.1257 l.23269 - Omega
-@!flushable_string:str_number; {string not yet referenced}
-begin if job_name=0 then open_log_file;
- {avoid confusing \.{texput} with the font name}
-@.texput@>
-get_r_token; u:=cur_cs;
-@y
-@!flushable_string:str_number; {string not yet referenced}
-@!cur_font_sort_name:str_number; {the name without the digits at the end}
-@!new_length:integer; {length of font name, to become font sort name}
-@!last_character:integer; {last character in font name}
-@!i:integer; {to run through characters of name}
-@!this_is_a_new_font:boolean;
-begin if job_name=0 then open_log_file;
- {avoid confusing \.{texput} with the font name}
-@.texput@>
-get_r_token; u:=cur_cs;
-this_is_a_new_font:=false;
-@z
-%---------------------------------------
-@x [49] m.1257 l.23290 - Omega
-common_ending: set_equiv(u,f);
-set_new_eqtb(font_id_base+f,new_eqtb(u)); settext(font_id_base+f,t);
-@y
-this_is_a_new_font:=true;
-common_ending: set_equiv(u,f);
-set_new_eqtb(font_id_base+f,new_eqtb(u)); settext(font_id_base+f,t);
-if this_is_a_new_font then
- begin
- if cur_name>=@"10000 then begin
- new_length:=length(cur_name);
- last_character:=str_pool[str_start(cur_name)+new_length-1];
- while (last_character>="0") and (last_character<="9") do begin
- decr(new_length);
- last_character:=str_pool[str_start(cur_name)+new_length-1];
- end;
- for i:=1 to new_length do begin
- append_char(str_pool[str_start(cur_name)+i-1]);
- end;
- cur_font_sort_name:=make_string;
- font_sort_number:=font_sort_ptr+1;
- for font_sorts:=font_sort_base+1 to font_sort_ptr do
- if str_eq_str(font_sort_name(font_sorts),cur_font_sort_name) then begin
- font_sort_number:=font_sorts;
- break;
- end;
- font_name_sort(f):=font_sort_number;
- if font_sort_number=(font_sort_ptr+1) then begin
- incr(font_sort_ptr);
- allocate_font_sort_table
- (font_sort_ptr,
- font_sort_offset_char_base+3*(font_ec(f)-font_bc(f)+1));
- font_sort_file_size(font_sort_ptr):=
- font_sort_offset_char_base+3*(font_ec(f)-font_bc(f)+1);
- font_sort_name(font_sort_ptr):=cur_font_sort_name;
- font_sort_ec(font_sort_ptr):=font_ec(f);
- font_sort_bc(font_sort_ptr):=font_bc(f);
- cur_name:=cur_font_sort_name;
- cur_ext:=".onm";
- pack_cur_name;
- begin_file_reading;
- if a_open_in(cur_file,kpse_tex_format) then begin
- name:=a_make_name_string(cur_file);
- print_ln; print("("); print(name);
- @<Read the first line of the new file@>;
- end
- else end_file_reading;
- end;
- end;
- end;
-@z
-%---------------------------------------
-@x [50] m.1320 l.23983 - Omega
-@ @<Dump the font information@>=
-@y
-@ @<Dump the font information@>=
-dump_int(font_sort_ptr);
-for k:=null_font_sort to font_sort_ptr do
- dump_font_sort_table(k,font_sort_file_size(k));
-@z
-%---------------------------------------
-@x [50] m.1321 l.23993 - Omega
-@ @<Undump the font information@>=
-@y
-@ @<Undump the font information@>=
-undump_size(font_base)(font_max)('font sort max')(font_sort_ptr);
-for k:=null_font_sort to font_sort_ptr do
- undump_font_sort_table(k);
-@z
-%---------------------------------------
-@x [51] m.1333 l.24244 - Omega
-procedure close_files_and_terminate;
-var k:integer; {all-purpose index}
-begin @<Finish the extensions@>;
-@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
-wake_up_terminal; @<Finish the \.{DVI} file@>;
-@y
-procedure close_files_and_terminate;
-var k:integer; {all-purpose index}
-begin @<Finish the extensions@>;
-@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
-wake_up_terminal;
-if not SGML_mode then begin @<Finish the \.{DVI} file@>; end;
-@z
-%---------------------------------------
diff --git a/Build/source/texk/web2c/synctexdir/am/synctex.am b/Build/source/texk/web2c/synctexdir/am/synctex.am
index 03d793eac69..4e26a01fe5d 100644
--- a/Build/source/texk/web2c/synctexdir/am/synctex.am
+++ b/Build/source/texk/web2c/synctexdir/am/synctex.am
@@ -168,5 +168,5 @@ EXTRA_DIST += \
## Eventually delete these files
##
-EXTRA_DIST += synctexdir/am/synctex.mk synctexdir/synctex.mk
+EXTRA_DIST += synctexdir/synctex.mk
diff --git a/Build/source/texk/web2c/synctexdir/am/synctex.mk b/Build/source/texk/web2c/synctexdir/am/synctex.mk
deleted file mode 100644
index 3f3c4a0293a..00000000000
--- a/Build/source/texk/web2c/synctexdir/am/synctex.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-
-### SyncTeX support in xetex
-# Actually, xetex cannot build without SyncTeX because the tex.web
-# code does not provide proper entry points
-# list of change files
-xetex_ch_srcs-with_synctex-mem_only = \
- $(synctex_dir)/synctex-mem.ch0 \
- $(synctex_dir)/synctex-e-mem.ch0 \
- $(synctex_dir)/synctex-e-mem.ch1 \
- $(synctex_dir)/synctex-xe-mem.ch2
-xetex_ch_srcs-with_synctex = \
- $(xetex_ch_srcs-with_synctex-mem_only) \
- $(synctex_dir)/synctex-rec.ch0 \
- $(synctex_dir)/synctex-e-rec.ch0 \
- $(synctex_dir)/synctex-xe-rec.ch2
-xetex_ch_srcs-without_synctex =
-xetex_post_ch_srcs-with_synctex = \
- $(synctex_dir)/synctex-xe-rec.ch3
-xetex_post_ch_srcs-without_synctex =
-# The C sources and headers
-xetex_o-with_synctex = synctex-xe.o
-xetex_o-without_synctex =
-synctex-xe.h: $(synctex_dir)/synctex.h
- cat $(synctex_dir)/synctex.h >$@
-synctex-xetex.h: $(synctex_dir)/$@
- cat $(synctex_dir)/$@ >$@
-synctex-xe.c: xetexd.h $(synctex_dir)/synctex.c synctex-xetex.h
- sed s/TEX-OR-MF-OR-MP/xetex/ $(synctex_dir)/synctex.c >$@
-xetexd.h-with_synctex = if test -z "`grep __SyncTeX__ xetexd.h`";\
- then\
- $(synctex_common_texd);\
- sed -f synctex_sed_command.txt xetexd.h > synctex_xetexd.h;\
- mv synctex_xetexd.h xetexd.h;\
- if test -z "`grep __SyncTeX__ xetexd.h`";\
- then\
- echo "warning: SyncTeX activation FAILED";\
- exit 1;\
- fi;\
- echo "warning: SyncTeX is enabled";\
- fi
-xetexd.h-without_synctex = echo "warning: SyncTeX is NOT enabled"
-
diff --git a/Build/source/texk/web2c/tex.ch b/Build/source/texk/web2c/tex.ch
index 765bab70e96..2343f1e3c63 100644
--- a/Build/source/texk/web2c/tex.ch
+++ b/Build/source/texk/web2c/tex.ch
@@ -2,8 +2,8 @@
% By Tim Morgan, UC Irvine ICS Department, and many others.
%
% Be very careful when making changes to this file, as it is used to
-% generate TeX, e-TeX, and pdf[ex]TeX, and most changes require similar
-% changes to be made to the Omega sources.
+% generate TeX, e-TeX, and pdfTeX, and most changes require similar
+% changes to be made to the Aleph sources.
%
% (05/28/86) ETM Started with TeX 2.0
% (06/03/87) ETM Brought up to TeX 2.2
diff --git a/Build/source/texk/web2c/texmfmem.h b/Build/source/texk/web2c/texmfmem.h
index 0596376013e..30497f417ab 100644
--- a/Build/source/texk/web2c/texmfmem.h
+++ b/Build/source/texk/web2c/texmfmem.h
@@ -43,7 +43,7 @@
twohalves.u: B1 B0 JNK1 JNK2
fourquarters: B3 B2 B1 B0
- In Omega, quarterwords are two octets, so the picture becomes simpler:
+ In Aleph, quarterwords are two octets, so the picture becomes simpler:
BigEndian:
twohalves.v: RH_MM RH_ML RH_LM RH_LL LH_MM LH_ML LH_LM LH_LL
@@ -62,8 +62,8 @@
include it from the change file instead.
*/
-/* Omega is sufficiently different to separate the definition. */
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined(luaTeX)
+/* Aleph is sufficiently different to separate the definition. */
+#if !defined(Aleph) && !defined(luaTeX)
typedef union
{
@@ -181,7 +181,7 @@ typedef union
#define qqqq v.QQQQ
#endif
-#else /* Omega || eOmega || Aleph */
+#else /* Aleph || luaTeX */
typedef union
{
@@ -257,7 +257,7 @@ typedef union
#define gr gg.GLUE
-#endif /* Omega || eOmega || Aleph || luaTeX */
+#endif /* Aleph || luaTeX */
#if defined(luaTeX)
#define memory_word memoryword
diff --git a/Build/source/texk/web2c/texmfmp-help.h b/Build/source/texk/web2c/texmfmp-help.h
index 207c51c01ac..de6b6b1296f 100644
--- a/Build/source/texk/web2c/texmfmp-help.h
+++ b/Build/source/texk/web2c/texmfmp-help.h
@@ -75,19 +75,19 @@ const_string ALEPHHELP[] = {
};
#endif /* Aleph */
-#ifdef luaTeX
-const_string LUATEXHELP[] = {
- "Usage: luatex [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
- " or: luatex [OPTION]... \\FIRST-LINE",
- " or: luatex [OPTION]... &FMT ARGS",
- " Run luaTeX on TEXNAME, usually creating TEXNAME.pdf.",
- " Any remaining COMMANDS are processed as luaTeX input, after TEXNAME is read.",
+#ifdef eTeX
+const_string ETEXHELP[] = {
+ "Usage: etex [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
+ " or: etex [OPTION]... \\FIRST-LINE",
+ " or: etex [OPTION]... &FMT ARGS",
+ " Run e-TeX on TEXNAME, usually creating TEXNAME.dvi.",
+ " Any remaining COMMANDS are processed as e-TeX input, after TEXNAME is read.",
" If the first line of TEXNAME is %&FMT, and FMT is an existing .fmt file,",
" use it. Else use `NAME.fmt', where NAME is the program invocation name,",
- " most commonly `luatex'.",
+ " most commonly `etex'.",
"",
" Alternatively, if the first non-option argument begins with a backslash,",
- " interpret all non-option arguments as a line of luaTeX input.",
+ " interpret all non-option arguments as a line of e-TeX input.",
"",
" Alternatively, if the first non-option argument begins with a &, the",
" next word is taken as the FMT to read, overriding all else. Any",
@@ -100,8 +100,8 @@ const_string LUATEXHELP[] = {
"[-no]-file-line-error disable/enable file:line:error style messages",
"-fmt=FMTNAME use FMTNAME instead of program name or a %& line",
"-halt-on-error stop processing at the first error",
- "-ini be luainitex, for dumping formats; this is implicitly",
- " true if the program name is `luainitex'",
+ "-ini be einitex, for dumping formats; this is implicitly",
+ " true if the program name is `einitex'",
"-interaction=STRING set interaction mode (STRING=batchmode/nonstopmode/",
" scrollmode/errorstopmode)",
#ifdef IPC
@@ -115,9 +115,7 @@ const_string LUATEXHELP[] = {
"[-no]-mktex=FMT disable/enable mktexFMT generation (FMT=tex/tfm)",
"-mltex enable MLTeX extensions such as \\charsubdef",
"-output-comment=STRING use STRING for DVI file comment instead of date",
- " (no effect for PDF)",
"-output-directory=DIR use DIR as the directory to write files to",
- "-output-format=FORMAT use FORMAT for job output; FORMAT is `dvi' or `pdf'",
"[-no]-parse-first-line disable/enable parsing of the first line of the",
" input file",
"-progname=STRING set program (and fmt) name to STRING",
@@ -128,27 +126,30 @@ const_string LUATEXHELP[] = {
"-src-specials=WHERE insert source specials in certain places of",
" the DVI file. WHERE is a comma-separated value",
" list: cr display hbox math par parend vbox",
+#if defined(__SyncTeX__)
+ "-synctex=NUMBER generate SyncTeX data for previewers if nonzero",
+#endif
"-translate-file=TCXNAME use the TCX file TCXNAME",
"-8bit make all characters printable by default",
"-help display this help and exit",
"-version output version information and exit",
NULL
};
-#endif /* luaTeX */
-
-#ifdef eTeX
-const_string ETEXHELP[] = {
- "Usage: etex [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
- " or: etex [OPTION]... \\FIRST-LINE",
- " or: etex [OPTION]... &FMT ARGS",
- " Run e-TeX on TEXNAME, usually creating TEXNAME.dvi.",
- " Any remaining COMMANDS are processed as e-TeX input, after TEXNAME is read.",
+#endif /* eTeX */
+
+#ifdef luaTeX
+const_string LUATEXHELP[] = {
+ "Usage: luatex [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
+ " or: luatex [OPTION]... \\FIRST-LINE",
+ " or: luatex [OPTION]... &FMT ARGS",
+ " Run luaTeX on TEXNAME, usually creating TEXNAME.pdf.",
+ " Any remaining COMMANDS are processed as luaTeX input, after TEXNAME is read.",
" If the first line of TEXNAME is %&FMT, and FMT is an existing .fmt file,",
" use it. Else use `NAME.fmt', where NAME is the program invocation name,",
- " most commonly `etex'.",
+ " most commonly `luatex'.",
"",
" Alternatively, if the first non-option argument begins with a backslash,",
- " interpret all non-option arguments as a line of e-TeX input.",
+ " interpret all non-option arguments as a line of luaTeX input.",
"",
" Alternatively, if the first non-option argument begins with a &, the",
" next word is taken as the FMT to read, overriding all else. Any",
@@ -161,8 +162,8 @@ const_string ETEXHELP[] = {
"[-no]-file-line-error disable/enable file:line:error style messages",
"-fmt=FMTNAME use FMTNAME instead of program name or a %& line",
"-halt-on-error stop processing at the first error",
- "-ini be einitex, for dumping formats; this is implicitly",
- " true if the program name is `einitex'",
+ "-ini be luainitex, for dumping formats; this is implicitly",
+ " true if the program name is `luainitex'",
"-interaction=STRING set interaction mode (STRING=batchmode/nonstopmode/",
" scrollmode/errorstopmode)",
#ifdef IPC
@@ -176,7 +177,9 @@ const_string ETEXHELP[] = {
"[-no]-mktex=FMT disable/enable mktexFMT generation (FMT=tex/tfm)",
"-mltex enable MLTeX extensions such as \\charsubdef",
"-output-comment=STRING use STRING for DVI file comment instead of date",
+ " (no effect for PDF)",
"-output-directory=DIR use DIR as the directory to write files to",
+ "-output-format=FORMAT use FORMAT for job output; FORMAT is `dvi' or `pdf'",
"[-no]-parse-first-line disable/enable parsing of the first line of the",
" input file",
"-progname=STRING set program (and fmt) name to STRING",
@@ -187,17 +190,14 @@ const_string ETEXHELP[] = {
"-src-specials=WHERE insert source specials in certain places of",
" the DVI file. WHERE is a comma-separated value",
" list: cr display hbox math par parend vbox",
-#if defined(__SyncTeX__)
- "-synctex=NUMBER generate SyncTeX data for previewers if nonzero",
-#endif
"-translate-file=TCXNAME use the TCX file TCXNAME",
"-8bit make all characters printable by default",
"-help display this help and exit",
"-version output version information and exit",
NULL
};
-#endif /* eTeX */
-
+#endif /* luaTeX */
+
#ifdef MF
const_string MFHELP[] = {
"Usage: mf [OPTION]... [MFNAME[.mf]] [COMMANDS]",
@@ -291,114 +291,6 @@ const_string MPHELP[] = {
};
#endif /* MP */
-#ifdef Omega
-const_string OMEGAHELP[] = {
- "Usage: omega [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
- " or: omega [OPTION]... \\FIRST-LINE",
- " or: omega [OPTION]... &FMT ARGS",
- " Run Omega on TEXNAME, usually creating TEXNAME.dvi.",
- " Any remaining COMMANDS are processed as Omega input, after TEXNAME is read.",
- " If the first line of TEXNAME is %&FMT, and FMT is an existing .fmt file,",
- " use it. Else use `NAME.fmt', where NAME is the program invocation name,",
- " most commonly `omega'.",
- "",
- " Alternatively, if the first non-option argument begins with a backslash,",
- " interpret all non-option arguments as a line of Omega input.",
- "",
- " Alternatively, if the first non-option argument begins with a &, the",
- " next word is taken as the FMT to read, overriding all else. Any",
- " remaining arguments are processed as above.",
- "",
- " If no arguments or options are specified, prompt for input.",
- "",
- "[-no]-file-line-error disable/enable file:line:error style messages",
- "-fmt=FMTNAME use FMTNAME instead of program name or a %& line",
- "-halt-on-error stop processing at the first error",
- "-ini be iniomega, for dumping formats; this is implicitly",
- " true if the program name is `iniomega'",
- "-interaction=STRING set interaction mode (STRING=batchmode/nonstopmode/",
- " scrollmode/errorstopmode)",
-#ifdef IPC
- "-ipc send DVI output to a socket as well as the usual",
- " output file",
- "-ipc-start as -ipc, and also start the server at the other end",
-#endif /* IPC */
- "-jobname=STRING set the job name to STRING",
- "-kpathsea-debug=NUMBER set path searching debugging flags according to",
- " the bits of NUMBER",
- "[-no]-mktex=FMT disable/enable mktexFMT generation (FMT=tex/tfm)",
- "-output-comment=STRING use STRING for DVI file comment instead of date",
- "-output-directory=DIR use DIR as the directory to write files to",
- "[-no]-parse-first-line disable/enable parsing of the first line of the",
- " input file",
- "-progname=STRING set program (and fmt) name to STRING",
- "-recorder enable filename recorder (always on)",
- "[-no]-shell-escape disable/enable \\write18{SHELL COMMAND}",
- "-shell-restricted enable restricted \\write18",
- "-src-specials insert source specials into the DVI file",
- "-src-specials=WHERE insert source specials in certain places of",
- " the DVI file. WHERE is a comma-separated value",
- " list: cr display hbox math par parend vbox",
- "-help display this help and exit",
- "-version output version information and exit",
- NULL
-};
-#endif /* Omega */
-
-#ifdef eOmega
-const_string EOMEGAHELP[] = {
- "Usage: eomega [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
- " or: eomega [OPTION]... \\FIRST-LINE",
- " or: eomega [OPTION]... &FMT ARGS",
- " Run e-Omega on TEXNAME, usually creating TEXNAME.dvi.",
- " Any remaining COMMANDS are processed as e-Omega input, after TEXNAME is read.",
- " If the first line of TEXNAME is %&FMT, and FMT is an existing .fmt file,",
- " use it. Else use `NAME.fmt', where NAME is the program invocation name,",
- " most commonly `eomega'.",
- "",
- " Alternatively, if the first non-option argument begins with a backslash,",
- " interpret all non-option arguments as a line of e-Omega input.",
- "",
- " Alternatively, if the first non-option argument begins with a &, the",
- " next word is taken as the FMT to read, overriding all else. Any",
- " remaining arguments are processed as above.",
- "",
- " If no arguments or options are specified, prompt for input.",
- "",
- "[-no]-file-line-error disable/enable file:line:error style messages",
- "-fmt=FMTNAME use FMTNAME instead of program name or a %& line",
- "-halt-on-error stop processing at the first error",
- "-ini be inieomega, for dumping formats; this is implicitly",
- " true if the program name is `inieomega'",
- "-interaction=STRING set interaction mode (STRING=batchmode/nonstopmode/",
- " scrollmode/errorstopmode)",
-#ifdef IPC
- "-ipc send DVI output to a socket as well as the usual",
- " output file",
- "-ipc-start as -ipc, and also start the server at the other end",
-#endif /* IPC */
- "-jobname=STRING set the job name to STRING",
- "-kpathsea-debug=NUMBER set path searching debugging flags according to",
- " the bits of NUMBER",
- "[-no]-mktex=FMT disable/enable mktexFMT generation (FMT=tex/tfm)",
- "-output-comment=STRING use STRING for DVI file comment instead of date",
- "-output-directory=DIR use DIR as the directory to write files to",
- "[-no]-parse-first-line disable/enable parsing of the first line of the",
- " input file",
- "-progname=STRING set program (and fmt) name to STRING",
- "-recorder enable filename recorder (always on)",
- "[-no]-shell-escape disable/enable \\write18{SHELL COMMAND}",
- "-shell-restricted enable restricted \\write18",
- "-src-specials insert source specials into the DVI file",
- "-src-specials=WHERE insert source specials in certain places of",
- " the DVI file. WHERE is a comma-separated value",
- " list: cr display hbox math par parend vbox",
- "-help display this help and exit",
- "-version output version information and exit",
- NULL
-};
-#endif /* eOmega */
-
#ifdef pdfTeX
const_string PDFTEXHELP[] = {
"Usage: pdftex [OPTION]... [TEXNAME[.tex]] [COMMANDS]",
diff --git a/Build/source/texk/web2c/texmfmp.h b/Build/source/texk/web2c/texmfmp.h
index f7aa303ef55..e4a091bd1da 100644
--- a/Build/source/texk/web2c/texmfmp.h
+++ b/Build/source/texk/web2c/texmfmp.h
@@ -58,12 +58,6 @@ typedef void* voidpointer;
#elif defined (XeTeX)
#define TEXMFPOOLNAME "xetex.pool"
#define TEXMFENGINENAME "xetex"
-#elif defined (Omega)
-#define TEXMFPOOLNAME "omega.pool"
-#define TEXMFENGINENAME "omega"
-#elif defined (eOmega)
-#define TEXMFPOOLNAME "eomega.pool"
-#define TEXMFENGINENAME "eomega"
#elif defined (Aleph)
#define TEXMFPOOLNAME "aleph.pool"
#define TEXMFENGINENAME "aleph"
@@ -123,7 +117,7 @@ void init_shell_escape (void);
int shell_cmd_is_allowed (char **cmd, char **safecmd, char **cmdname);
/* All but the Omega family use this. */
-#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+#if !defined(Aleph)
extern void readtcxfile P1H(void);
extern string translate_filename;
#define translatefilename translate_filename
diff --git a/Build/source/texk/web2c/web2c/ChangeLog b/Build/source/texk/web2c/web2c/ChangeLog
index 567ea750bce..f7d72f90706 100644
--- a/Build/source/texk/web2c/web2c/ChangeLog
+++ b/Build/source/texk/web2c/web2c/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * common.defines, convert, fixwrites.c, splitup.c: remove all
+ references to Omega, eOmega, and pdfeTeX.
+
2009-03-27 Peter Breitenlohner <peb@mppmu.mpg.de>
* convert (splitup_options for luatex)): avoid to split the C
diff --git a/Build/source/texk/web2c/web2c/README b/Build/source/texk/web2c/web2c/README
index 3471cac9798..8ad3b0eff39 100644
--- a/Build/source/texk/web2c/web2c/README
+++ b/Build/source/texk/web2c/web2c/README
@@ -11,7 +11,7 @@ compilers.
To define a new symbol (e.g., a function) to be used in the change
files, it's necessary to add it to texmf.defines (if it's only used in
TeX/MF/MP) or common.defines (otherwise) here, as well as making the
-actual definition. New functions in the libraryshould be declared
+actual definition. New functions in the library should be declared
somewhere, probably cpascal.h. Of course no underscores are allowed,
since tangle removes them.
diff --git a/Build/source/texk/web2c/web2c/common.defines b/Build/source/texk/web2c/web2c/common.defines
index 59389314e5f..32a8ab6016a 100644
--- a/Build/source/texk/web2c/web2c/common.defines
+++ b/Build/source/texk/web2c/web2c/common.defines
@@ -64,7 +64,6 @@
@define const DVICOPYHELP;
@define const DVITOMPHELP;
@define const DVITYPEHELP;
-@define const EOMEGAHELP;
@define const ETEXHELP;
@define const GFTODVIHELP;
@define const GFTOPKHELP;
@@ -75,14 +74,12 @@
@define const ODVICOPYHELP;
@define const ODVITYPEHELP;
@define const OFM2OPLHELP;
-@define const OMEGAHELP;
@define const OPL2OFMHELP;
@define const OTANGLEHELP;
@define const OVP2OVFHELP;
@define const OVF2OVPHELP;
@define const PATGENHELP;
@define const PDFTEXHELP;
-@define const PDFETEXHELP;
@define const PKTOGFHELP;
@define const PKTYPEHELP;
@define const PLTOTFHELP;
diff --git a/Build/source/texk/web2c/web2c/convert b/Build/source/texk/web2c/web2c/convert
index 2f722d233fd..82f2cd3fe83 100755
--- a/Build/source/texk/web2c/web2c/convert
+++ b/Build/source/texk/web2c/web2c/convert
@@ -83,7 +83,7 @@ ${basefile}coerce.h"
${basefile}coerce.h"
;;
- tex|eomega|etex|pdftex|pdfetex|omega|aleph|xetex)
+ tex|etex|pdftex|aleph|xetex)
more_defines="$srcdir/web2c/texmf.defines $srcdir/synctexdir/synctex.defines"
prog_defines="$srcdir/${basefile}dir/$basefile.defines"
if test -f $prog_defines; then
@@ -146,7 +146,7 @@ case $basefile in
sed -e 's/(buftype)//g' -e 's/(pdstype)//g' <bibtex.h >xbibtex.h
mv xbibtex.h bibtex.h
;;
- tex|eomega|etex|luatex|pdftex|pdfetex|omega|aleph|mf|mp|xetex)
+ tex|etex|luatex|pdftex|aleph|mf|mp|xetex)
sleep 2 # so timestamps are definitely later, to avoid make weirdness
cat ${basefile}coerce.h $srcdir/web2c/coerce.h >x${basefile}coerce.h
mv x${basefile}coerce.h ${basefile}coerce.h
diff --git a/Build/source/texk/web2c/web2c/fixwrites.c b/Build/source/texk/web2c/web2c/fixwrites.c
index 7a7e6a2aa1e..11b111258ad 100644
--- a/Build/source/texk/web2c/web2c/fixwrites.c
+++ b/Build/source/texk/web2c/web2c/fixwrites.c
@@ -163,7 +163,7 @@ bare P2C(string, cp, char, c)
/* xchr[...] is supposed to be replaced by Xchr(...) when characters
- take more than a single octet each, as is the case in Omega. Now
+ take more than a single octet each, as is the case in Aleph. Now
there are several occurrences of xchr[...[...]...], which are
translated into Xchr(...[...)...], and the compiler dies on syntax
errors. Ensures that it is the matching bracket that is replaced,
diff --git a/Build/source/texk/web2c/web2c/splitup.c b/Build/source/texk/web2c/web2c/splitup.c
index 3d0dbee6929..1f9670f002d 100644
--- a/Build/source/texk/web2c/web2c/splitup.c
+++ b/Build/source/texk/web2c/web2c/splitup.c
@@ -117,24 +117,15 @@ main P2C(int, argc, string *, argv)
} else if (STREQ (output_name, "aleph")) {
fputs ("#define INITEX\n#define TeX\n#define Aleph\n", out);
coerce = "alephcoerce.h";
- } else if (STREQ (output_name, "eomega")) {
- fputs ("#define INITEX\n#define TeX\n#define eOmega\n", out);
- coerce = "eomegacoerce.h";
} else if (STREQ (output_name, "etex")) {
fputs ("#define INITEX\n#define TeX\n#define eTeX\n", out);
coerce = "etexcoerce.h";
- } else if (STREQ (output_name, "omega")) {
- fputs ("#define INITEX\n#define TeX\n#define Omega\n", out);
- coerce = "omegacoerce.h";
} else if (STREQ (output_name, "pdftex")) {
fputs ("#define INITEX\n#define TeX\n#define pdfTeX\n", out);
coerce = "pdftexcoerce.h";
} else if (STREQ (output_name, "luatex")) {
fputs ("#define INITEX\n#define TeX\n#define luaTeX\n", out);
coerce = "luatexcoerce.h";
- } else if (STREQ (output_name, "pdfetex")) {
- fputs ("#define INITEX\n#define TeX\n#define pdfeTeX\n", out);
- coerce = "pdfetexcoerce.h";
} else if (STREQ (output_name, "xetex")) {
fputs ("#define INITEX\n#define TeX\n#define XeTeX\n", out);
coerce = "xetexcoerce.h";
@@ -142,7 +133,7 @@ main P2C(int, argc, string *, argv)
fputs ("#define INIMP\n#define MP\n", out);
coerce = "mpcoerce.h";
} else
- FATAL1 ("Can only split mf, mp, tex, etex, omega, eomega, aleph, luatex, pdf[e]tex, or xetex,\n not %s", output_name);
+ FATAL1 ("Can only split mf, mp, tex, etex, aleph, luatex, pdftex, or xetex,\n not %s", output_name);
coerce_len = strlen (coerce);