OSDN Git Service

updated macros.
authormaqiyuan <maqiyuan@users.sourceforge.jp>
Mon, 5 May 2014 18:05:52 +0000 (02:05 +0800)
committermaqiyuan <maqiyuan@users.sourceforge.jp>
Mon, 5 May 2014 18:05:52 +0000 (02:05 +0800)
22 files changed:
src/texsourc/itex.c
src/texsourc/local.c
src/texsourc/makefile
src/texsourc/openinou.c
src/texsourc/subroute.c
src/texsourc/tex0.c
src/texsourc/tex1.c
src/texsourc/tex2.c
src/texsourc/tex3.c
src/texsourc/tex4.c
src/texsourc/tex5.c
src/texsourc/tex6.c
src/texsourc/tex7.c
src/texsourc/tex8.c
src/texsourc/tex9.c
src/texsourc/texd.h
src/texsourc/texmf.h
src/texsourc/yandy_macros.h [new file with mode: 0644]
src/texsourc/yandy_pdf_backend.c
src/texsourc/yandy_pool.c
src/texsourc/yandytex.c
src/texsourc/yandytex.h

index ae0196a..b4daeef 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301 USA.  */
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types
-#pragma warning(disable:4127) // conditional expression is constant
-
 #define EXTERN extern
 
 #include "texd.h"
index e22a699..364f925 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301 USA.  */
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
-
-#include <kpathsea/config.h>
-#include <kpathsea/c-ctype.h>
-#include <kpathsea/line.h>
-#include <kpathsea/readable.h>
-#include <kpathsea/variable.h>
-#include <kpathsea/absolute.h>
-
 #define EXTERN extern
 
 #include "texd.h"
   #define REALLOC realloc
 #endif
 
-#include <time.h>
-#include <malloc.h> /* _msize, _expand, HEAPOK et.c */
-#include <direct.h> /* for _getcwd() */
-
-#pragma warning(disable:4032) // different type when promoted
-#ifndef _WINDOWS
-  #include <conio.h>            /* for _getch() */
-#endif
-#pragma warning(default:4032) // different type when promoted
-
 int wantcopyrght = 1;
 
 char *compiletime  =  __TIME__;
@@ -2323,26 +2301,24 @@ void knuthify (void)
 char * xchrfile = NULL;
 char * replfile = NULL;
 
-/* analyze command line flag or argument */
-/* c is the flag letter itself, while optarg is start of arg if any */
-
 char * short_options = "viKLZMdp2t?u";
 
 static struct option long_options[] =
 {
-  {"verbose",     no_argument, 0, 'v'},
-  {"initex",      no_argument, 0, 'i'},
-  {"knuthify",    no_argument, 0, 'K'},
-  {"cstyle",      no_argument, 0, 'L'},
-  {"showtfm",     no_argument, 0, 'Z'},
-  {"showmissing", no_argument, 0, 'M'},
-  {"deslash",     no_argument, 0, 'd'},
-  {"patterns",    no_argument, 0, 'p'},
-  {"suppressflig",no_argument, 0, '2'},
-  {"trace",       no_argument, 0, 't'},
-  {"help",        no_argument, 0, '?'},
-  {"usage",       no_argument, 0, 'u'},
-  {NULL,          0,           0, 0}
+  //{"interaction",   1, 0, 0},
+  {"verbose",       0, 0, 'v'},
+  {"initex",        0, 0, 'i'},
+  {"knuthify",      0, 0, 'K'},
+  {"cstyle",        0, 0, 'L'},
+  {"showtfm",       0, 0, 'Z'},
+  {"showmissing",   0, 0, 'M'},
+  {"deslash",       0, 0, 'd'},
+  {"patterns",      0, 0, 'p'},
+  {"suppressflig",  0, 0, '2'},
+  {"trace",         0, 0, 't'},
+  {"help",          0, 0, '?'},
+  {"usage",         0, 0, 'u'},
+  {NULL,            0, 0, 0}
 };
 
 int analyze_flag (int c, char *optarg)
@@ -2446,13 +2422,6 @@ int analyze_flag (int c, char *optarg)
     case '2':
       suppress_f_ligs = true; /* 99/Jan/5 f-lig */
       break;
-/* following are pretty obscure */
-/*  case 'y': cache_file_flag = false; */ /* 96/Nov/16 */
-/*            break; */
-/*  case 'r': return_flag = false; */ /* flipped 93/Nov/18 */
-/*            break; */
-/*  case 'z': trimeof = false; */ /* 93/Nov/24 */
-/*            break; */
     case 'z':
       full_file_name_flag = false; // 00 Jun 18
       break;
@@ -2632,26 +2601,6 @@ int analyze_flag (int c, char *optarg)
   return 0;
 }
 
-/* Try and read default command file - YANDYTEX.CMD */
-/* in current directory and then in directory of YANDYTEX */
-/* (does not make sense in TeX file directory) */
-/* since we don't yet know where that is ! */
-/* can't conveniently include this in output file either - not open yet */
-
-/* used both for yytex.cmd and @ indirect command line files */
-/* can this be reentered ? */
-
-/* supply extension if none */
-void yy_extension (char *fname, char *ext)
-{
-  char *s, *t;
-  if ((s = strrchr(fname, '.')) == NULL ||
-    ((t = strrchr(fname, '\\')) != NULL && s < t)) {
-      strcat(fname, ".");
-      strcat(fname, ext);
-  }
-}
-
 /* remove file name - keep only path - inserts '\0' to terminate */
 
 void strip_name (char *pathname)
@@ -2677,31 +2626,21 @@ char *programpath = ""; /* pathname of program */
 int read_command_line (int ac, char **av)
 { 
   int c;
-  char *optargnew;  /* equal to optarg, unless that starts with `='      */
-                    /* in which case it is optarg+1 to step over the `=' */
-                    /* if optarg = 0, then optargnew = 0 also            */
+  char *optargnew;
   int option_idx = 0;
 
   if (ac < 2)
     return 0;
 
-/*  while ((c = getopt(ac, av, "+vitrdczp?m:h:x:E:")) != EOF) {              */
-/*  NOTE: keep `Y' in there for `do not reorder arguments !                  */
-/*  WARNING: if adding flags, change also `allowedargs' and  `takeargs' !!!! */
-/*  while ((c = getopt(ac, av, allowedargs)) != EOF)
+  while ((c = getopt_long_only(ac, av, short_options, long_options, &option_idx)) != EOF)
   {
     if (optarg != 0 && *optarg == '=')
-      optargnew = optarg+1;
+      optargnew = optarg + 1;
     else
       optargnew = optarg;
 
     analyze_flag (c, optargnew);
   }
-*/
-  while ((c = getopt_long_only(ac, av, short_options, long_options, &option_idx)) != EOF)
-  {
-    analyze_flag (c, optargnew);
-  }
 
   if (show_use || quitflag == 3)
   {
index b4e6eec..7b416b0 100644 (file)
@@ -35,7 +35,7 @@ CFLAGS=/nologo /c /MT /GF /Gy /Ox /W4 /DMSDOS /DTeX /DPHARLAP /DNDEBUG \
 # LFLAGS=@yandytex.nt /MAP lib\libdos.lib
 # Release version
 # LFLAGS=/MAP lib\libdos.lib
-LFLAGS=/MAP
+LFLAGS=/NOLOGO /MAP
 # /MACHINE:X86
 # debugging version
 # LFLAGS=@yandytex.nt /MAP /DEBUG /PDB:yandytex.pdb lib\libdos.lib
@@ -49,7 +49,7 @@ objs = yandytex.obj itex.obj openinou.obj subroute.obj local.obj \
 
 # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
 
-texmf.exe: $(objs) 
+yandytex.exe: $(objs)
        $(LINK) $(LFLAGS) yandytex itex openinou subroute local \
        tex0 tex1 tex2 tex3 tex4 tex5 tex6 tex7 tex8 tex9 \
        yandy_pool yandytex.res md5 md5file yandy_pdf_backend \
@@ -74,59 +74,59 @@ yandytex.res: yandytex.rc
        rc yandytex.rc
 
 yandytex.obj: yandytex.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
        $(CC) /DINITEX /DINI $(CFLAGS) yandytex.c
 
 itex.obj: itex.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
        $(CC) /DINITEX $(CFLAGS) itex.c
 
 openinou.obj: openinou.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
        $(CC) $(CFLAGS) openinou.c
 
 subroute.obj: subroute.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
        $(CC) $(CFLAGS) subroute.c
 
 local.obj: local.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
        $(CC) /DINITEX $(CFLAGS) local.c
 
 # NOTE: cannot compile tex5.c and tex6.c with full optimizations ...
 
 tex0.obj: tex0.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex1.obj: tex1.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex2.obj: tex2.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex3.obj: tex3.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex4.obj: tex4.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex5.obj: tex5.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex6.obj: tex6.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex7.obj: tex7.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex8.obj: tex8.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 tex9.obj: tex9.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 yandy_pool.obj: yandy_pool.c \
-       texd.h texmf.h texmfmem.h coerce.h
+       texd.h texmf.h texmfmem.h coerce.h yandy_macros.h
 
 .SUFFIXES:
 .SUFFIXES: .obj .c
index 69d8a81..67ffeec 100644 (file)
@@ -18,7 +18,7 @@
    02110-1301 USA.  */
 
 #ifdef MSDOS
-  #include <direct.h>           /* for _getcwd() */
+  #include <direct.h> /* for _getcwd() */
 #else
   #include <unistd.h>
 #endif
@@ -95,17 +95,10 @@ char *xconcat3 (char *buffer, char *s1, char *s2, char *s3)
 // assumes path does not end in PATH_SEP
 void patch_in_path (unsigned char *buffer, unsigned char *name, unsigned char *path)
 {
-#ifdef BUILDNAMEDIRECT
   if (*path == '\0')
     strcpy((char *) buffer, (char *) name);
   else
     xconcat3((char *) buffer, (char *) path, PATH_SEP_STRING, (char *) name);
-#else
-  string temp_name;
-  temp_name = concat3(path, PATH_SEP_STRING, name);
-  strcpy (buffer, temp_name);
-  free (temp_name);
-#endif
 }
 
 int qualified (unsigned char * name)
@@ -205,7 +198,7 @@ bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode)
   if (path_index == TEXINPUTPATH &&
     strncmp (name_of_file + 1, "HackyInputFileNameForCoreDump.tex", 33) == 0)
     funny_core_dump();
-#endif /* FUNNY_CORE_DUMP and not BibTeX */
+#endif
 
 #ifdef MSDOS
   if (return_flag)
@@ -292,19 +285,6 @@ bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode)
     {
       if (show_tfm_flag && log_opened)
       {
-#ifdef WRAPLINES
-        int old_setting = selector;
-        char *s = name_of_file + 1;
-        selector = log_only;
-        print_char(' ');
-        print_char('(');
-
-        while (*s != '\0')
-          print_char (*s++);
-
-        print_char(')');
-        selector = old_setting;
-#else
         int n; 
         n = strlen((char *) name_of_file + 1);
 
@@ -317,8 +297,7 @@ bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode)
           putc(' ', log_file);
 
         fprintf(log_file, "(%s)", name_of_file + 1);
-        file_offset += n+3;
-#endif  /*  end of WRAPLINES */
+        file_offset += n + 3;
       }
     }
 /*    code added 98/Sep/29 to catch first file input */
@@ -362,21 +341,13 @@ bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode)
 /* This nonsense probably only works for Unix anyway. bkph */
 /* For one thing, MakeTeXTFM etc is more than 8 characters ! */
 
-#ifdef MSDOS
-  #define NO_MAKETEX
-#endif
-
-#define TEXONLY
-
 char *get_env_shroud (char *);    /* defined in texmf.c */
 
-/* char outputdirectory[PATH_MAX]; */       /* defined in local.c */
-
-extern char * dvi_directory; /* defined in local.c */
-extern char * log_directory; /* defined in local.c */
-extern char * aux_directory; /* defined in local.c */
-extern char * fmt_directory; /* defined in local.c */
-extern char * pdf_directory; /* defined in local.c */
+extern char * dvi_directory;
+extern char * log_directory;
+extern char * aux_directory;
+extern char * fmt_directory;
+extern char * pdf_directory;
 
 /* At least check for I/O error (such as disk full) when closing */
 /* Would be better to check while writing - but this is better than nothing */
@@ -385,10 +356,9 @@ extern char * pdf_directory; /* defined in local.c */
 /* now a_close returns -1 on error --- which could be used by caller */
 /* probably want to ignore on input files ... */
 
-void perrormod (char *s);       /* in local.c */
+extern void perrormod (char *s);       /* in local.c */
 
 // check_fclose not used by anything
-/* 1993/Nov/20 - bkph */
 int check_fclose (FILE * f)
 {
   if (f == NULL)
@@ -397,14 +367,13 @@ int check_fclose (FILE * f)
   if (ferror(f) || fclose (f))
   {
     perrormod("\n! I/O Error");
-    uexit (1);    // ???
+    uexit (1);
   }
 
   return 0;
 }
 
-/* open_output moved down here to avoid potential pragma problem */
-
+// open_output moved down here to avoid potential pragma problem
 bool open_output (FILE **f, char *fopen_mode)
 {
   unsigned temp_length;
index 7a055f4..a493c49 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301 USA.  */
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types
-#pragma warning(disable:4127) // conditional expression is constant
-
 #define EXTERN extern
 
 #include "texd.h"
@@ -28,7 +23,7 @@
 
 // used only in jump_out in tex0.c, and in texbody in itex.c
 // and main in texmf.c and a few other abort situations in texmf.c
-/* texk/web2c/lib/uexit.c */
+// texk/web2c/lib/uexit.c
 void uexit (int unix_code)
 {
   int final_code;
@@ -53,7 +48,7 @@ void uexit (int unix_code)
   jump_used++;
   exit(final_code);
 }
-/* texk/web2c/lib/zround.c */
+// texk/web2c/lib/zround.c
 integer zround (double r)
 {
   integer i;
@@ -69,7 +64,7 @@ integer zround (double r)
 
   return i;
 }
-/* texk/web2c/lib/eofeoln.c */
+// texk/web2c/lib/eofeoln.c
 bool eoln (FILE * file)
 {
   register int c;
@@ -84,69 +79,32 @@ bool eoln (FILE * file)
 
   return c == '\n' || c == '\r' || c == EOF;
 }
-
-char * read_a_line (FILE *f,  char *line, int limit)
-{
-  int c;
-  int loc = 0;
-
-  while ((c = getc (f)) != EOF)
-  {
-    if (c == '\n' || c == '\r')
-    {
-      if (loc > 0) break;
-      else continue;        /* ignore \r\n and blank lines */
-    }
-
-    line[loc] = (char) c;
-    loc++;
-
-    if (loc == limit - 1)
-    {
-      sprintf(log_line, " ERROR: line too long\n");
-      show_line(log_line, 1);
-      show_line(line, 0);
-      show_line("\n", 0);
-      break;
-    }
-  }
-
-  if (c != EOF || loc > 0)
-  {
-    line[loc] = '\0';       /* terminate */
-    return line;          /* and return */
-  }
-  else
-    return(NULL);          /* true EOF */
-}
-
-/* Unixify filename and path (turn \ into /) --- assumes null terminated */
-/* NEED HACK! */
-char *unixify (char * t)
+// Unixify filename and path (turn \ into /)
+// --- assumes null terminated
+char * unixify (char * t)
 {
   char * s = t;
 
   if (s == NULL)
-    return s;    /* paranoia -- 1993/Apr/10 */
+    return s;
 
-#ifdef MSDOS
   if (t != '\0')
   {
-    while (*s != '\0') {        /* paranoia -- 1997/Oct/23 */
-/*      if (*s == '\\') *s = '/'; */
+    while (*s != '\0')
+    {
       if (*s == '\\')
         *s = PATH_SEP;
 
       s++;
-    }       /* endwhile */
+    }
   }
-// #ifdef MYDEBUG
+
   if (trace_flag)
   {
-    sprintf(log_line, "Unixified name: %s\n", t);
-    show_line(log_line, 0);
+    printf("Unixified name: %s\n", t);
+    //sprintf(log_line, "Unixified name: %s\n", t);
+    //show_line(log_line, 0);
   }
-// #endif
-#endif /* DOS */
+
   return t;
 }
\ No newline at end of file
index 4dfc501..3b2b744 100644 (file)
@@ -1,8 +1,19 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
@@ -487,7 +498,6 @@ void sprint_cs_(halfword p)
   }
 }
 /* sec 0518 */
-/* ! I can't find file `  c:/foo/  accents  .tex  '. */
 void print_file_name_(integer n, integer a, integer e)
 {
   slow_print(a);
@@ -515,8 +525,6 @@ void print_write_whatsit_(str_number s, halfword p)
   else print_char('-');
 }
 /* sec 0081 */
-// called from itex.c and tex0.c only  NASTY NASTY!
-// now uses uses non-local goto (longjmp) 1999/Nov/7
 void jump_out (void) 
 {
   close_files_and_terminate();
@@ -1052,6 +1060,7 @@ char * add_string (char *s, char * str_string)
   s += n;
   strcpy(s, "\r\n");
   s += 2;
+
   return s;
 }
 
@@ -1153,7 +1162,7 @@ void term_input (char * term_str, int term_help_lines)
 //    free(helpstring);
 //  }
   show_line("\n", 0);    // force it to show what may be buffered up ???
-  helpstring = NULL;
+  helpstring = NULL;  
 
 #ifdef _WINDOWS
   if (term_str != NULL)
@@ -1656,6 +1665,7 @@ halfword get_avail (void)
         overflow("main memory size", mem_max + 1 - mem_min);
         return 0;           // abort_flag set
       }
+
       incr(mem_end);        /* then grab from new area */
       p = mem_end;          /* 1993/Dec/14 */
     }
index ac7ca8b..25c6dcf 100644 (file)
@@ -1,15 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
 /* sec 0198 */
 void show_box_(halfword p)
index 812652a..9b3f011 100644 (file)
@@ -1,15 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* following bit used to be end of tex1.c */
 
 #ifdef STAT
index 56f2368..39b1949 100644 (file)
@@ -1,15 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* sec 0440 */
 void scan_int (void)
 {
index bce4b28..5d62c3a 100644 (file)
@@ -1,15 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* sec 0581 */
 void char_warning_(internal_font_number f, eight_bits c)
 { 
index 7917865..ebe4d68 100644 (file)
@@ -1,14 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* rebox_ used to be in tex4.c */
 /* sec 0715 */
 halfword rebox_(halfword b, scaled w)
index 927387f..6b3d0fb 100644 (file)
@@ -1,14 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* sec 0785 */
 void align_peek (void)
 {
index 253ff87..f51e18d 100644 (file)
@@ -1,14 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
 /* sec 0994 */
 void build_page (void)
index 29975b4..660dc1a 100644 (file)
@@ -1,15 +1,24 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
 #include "texd.h"
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
-
 /* sec 1181 */
 void math_fraction (void)
 {
index 29b323f..eef88d9 100644 (file)
@@ -1,16 +1,23 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
 
-#define EXTERN extern
+   This program 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.
 
-#include "texd.h"
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
-#pragma warning(disable:4244)       /* 96/Jan/10 */
+#define EXTERN extern
 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+#include "texd.h"
 
 /* end of the old tex8.c */
 /* sec 1284 */
index e3b697f..f2b7b1a 100644 (file)
 #undef  DEBUG
 #include "texmf.h"
 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-
-#define MAXLINE 256         // for log_line buffer
-
 /* #define max_halfword 65535L  */  /* for 32 bit memory word */
 /* #define max_halfword 262143L */  /* for 36 bit memory word */
 #define min_halfword -2147483647L   /* for 64 bit memory word (signed) */
@@ -138,17 +134,7 @@ EXTERN integer max_buf_stack;
 
 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
 #ifdef INCREASEFIXED
-/* maximum number of simultaneous input sources (?) */
-/* #define stack_size 600 */    /* expanded again 1999/Jan/21 */
-/* #define stack_size 800 */
-/* maximum number of input files and insertions that can be going on */
-/* #define max_in_open 15 */    /* for Y&Y TeX 1.2 */
-/* #define max_in_open 31 */    /* 1996/Jan/17 */
-/* #define max_in_open 63 */    /* 1996/Jan/18 */
   #define max_in_open 127       /* 1996/Jan/20 - really ? */
-/* save_size space for saving values outside of current group */
-/* #define save_size 6000 */
-/* #define save_size 8000 */    /* 1999/Jan/6 */
 #else
 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
 /* #define stack_size 300 */    /* Unix C version default */
@@ -1203,1291 +1189,9 @@ char *unixify (char *);       /* in pathsrch.c bkph */
 /****************************************************************************/
 
 #include "coerce.h"
+#include "yandy_macros.h"
 
 /****************************************************************************/
-#define font_base 0
-/* sec 0022 */
-#define null_code       0     // 0
-#define carriage_return 015   // 13
-#define invalid_code    0177  // 127
-/* sec 0040 */
-#define length(s) (str_start[(s) + 1] - str_start[(s)])
-/* sec 0041 */
-#define cur_length (pool_ptr - str_start[str_ptr])
-/* sec 0054 */
-#define no_print     16
-#define term_only    17
-#define log_only     18
-#define term_and_log 19
-#define pseudo       20
-#define new_string   21
-#define max_selector 21
-/* sec 0073 */
-#define batch_mode      0
-#define nonstop_mode    1
-#define scroll_mode     2
-#define error_stop_mode 3
-/* sec 0076 */
-#define spotless             0
-#define warning_issued       1
-#define error_message_issued 2
-#define fatal_error_stop     3
-/* sec 0105 */
-#define nx_plux_y(...)   mult_and_add(..., 07777777777L)
-#define mult_integers(a) mult_and_add(a,0,017777777777L)
-/* sec 0108 */
-#define inf_bad 10000L
-/* sec 0109 */
-#define set_glue_ratio_zero(a) (a) = 0.0
-#define set_glue_ratio_one(a)  (a) = 1.0
-#define tex_float(a)           (a)
-#define unfloat(a)             (a)
-#define float_constant(a)      (float) (a)
-/* sec 0115*/
-#define pointer halfword
-#define null    min_halfword
-/* sec 0118 */
-#define link(p) mem[(p)].hh.v.RH
-#define info(p) mem[(p)].hh.v.LH
-/* sec 0124 */
-#define empty_flag  max_halfword
-#define is_empty(a) (link(a) = empty_flag)
-#define node_size   info
-#define llink(a)    info(a+1)
-#define rlink(a)    link(a+1)
-/* sec 0133 */
-#define type(a)    mem[a].hh.b0
-#define subtype(a) mem[a].hh.b1
-/* sec 0134 */
-#define is_char_node(a) (a >= hi_mem_min)
-#define font            type
-#define character       subtype
-/* sec 0135 */
-#define hlist_node      0
-#define box_node_size   7
-#define width_offset    1
-#define depth_offset    2
-#define height_offset   3
-#define width(a)        mem[a + width_offset].cint
-#define depth(a)        mem[a + depth_offset].cint
-#define height(a)       mem[a + height_offset].cint
-#define shift_amount(a) mem[a + 4].cint
-#define list_offset     5
-#define list_ptr(a)     link(a + list_offset)
-#define glue_order(a)   subtype(a + list_offset)
-#define glue_sign(a)    type(a + list_offset)
-#define normal          0
-#define stretching      1
-#define shrinking       2
-#define glue_offset     6
-#define glue_set(a)     mem[a + glue_offset].gr
-/* sec 0137 */
-#define vlist_node 1
-/* sec 0138 */
-#define rule_node      2
-#define rule_node_size 4
-#define null_flag      -010000000000L
-#define is_running(a)  (a = null_flag)
-/* sec 0140 */
-#define ins_node         3
-#define ins_node_size    5
-#define float_cost(a)    mem[a + 1].cint
-#define ins_ptr(a)       info(a + 4)
-#define split_top_ptr(a) link(a + 4)
-/* sec 0141 */
-#define mark_node       4
-#define small_node_size 2
-#define mark_ptr(a)     mem[a + 1].cint
-/* sec 0142 */
-#define adjust_node 5
-#define adjust_ptr  mark_ptr
-/* sec 0143 */
-#define ligature_node 6
-#define lig_char(a)   (a + 1)
-#define lig_ptr(a)    link(lig_char(a))
-/* sec 0145 */
-#define disc_node     7
-#define replace_count subtype
-#define pre_break     llink
-#define post_break    rlink
-/* sec 0146 */
-#define whatsit_node 8
-/* sec 0147 */
-#define math_node 9
-#define before    0
-#define after     1
-/* sec 0148 */
-#define precedes_break(a)  (type(a) < math_node)
-#define non_discardable(a) (type(a) < math_node)
-/* sec 0149 */
-#define glue_node      10
-#define cond_math_glue 98
-#define mu_glue        99
-#define a_leaders      100
-#define c_leaders      101
-#define x_leaders      102
-#define glue_ptr       llink
-#define leader_ptr     rlink
-/* sec 0150 */
-#define glue_spec_size    4
-#define glue_ref_count(a) link(a)
-#define stretch(a)        mem[a + 2].cint
-#define shrink(a)         mem[a + 3].cint
-#define stretch_order     type
-#define shrink_order      subtype
-#define fil               1
-#define fill              2
-#define filll             3
-/* sec 0155 */
-#define kern_node 11
-#define explicit  1
-#define acc_kern  2
-/* sec 0157 */
-#define penalty_node  12
-#define inf_penalty   inf_bad
-#define eject_penalty -inf_bad
-#define penalty(a)    mem[a + 1].cint
-/* sec 0159 */
-#define unset_node      13
-#define glue_stretch(a) mem[a + glue_offset].cint
-#define glue_shrink     shift_amount
-#define span_count      subtype
-/* sec 0162 */
-#define zero_glue         mem_bot // 0
-#define fil_glue          (zero_glue + glue_spec_size) // 4
-#define fill_glue         (fil_glue + glue_spec_size) // 8
-#define ss_glue           (fill_glue + glue_spec_size) // 12
-#define fil_neg_glue      (ss_glue + glue_spec_size) // 16
-#define lo_mem_stat_max   (fil_neg_glue + glue_spec_size - 1) // 19
-#define page_ins_head     mem_top
-#define contrib_head      (mem_top - 1)
-#define page_head         (mem_top - 2)
-#define temp_head         (mem_top - 3)
-#define hold_head         (mem_top - 4)
-#define adjust_head       (mem_top - 5)
-#define active            (mem_top - 7)
-#define align_head        (mem_top - 8)
-#define end_span          (mem_top - 9)
-#define omit_template     (mem_top - 10)
-#define null_list         (mem_top - 11)
-#define lig_trick         (mem_top - 12)
-#define garbage           (mem_top - 12)
-#define backup_head       (mem_top - 13)
-#define hi_mem_stat_min   (mem_top - 13)
-#define hi_mem_stat_usage 14
-/* sec 0200 */
-#define token_ref_count(a) info(a)
-/* sec 0203 */
-#define add_token_ref(a) incr(token_ref_count(a))
-#define add_glue_ref(a)  incr(glue_ref_count(a))
-/* sec 0207 */
-#define escape        0
-#define relax         0
-#define left_brace    1
-#define right_brace   2
-#define math_shift    3
-#define tab_mark      4
-#define car_ret       5
-#define out_param     5
-#define mac_param     6
-#define sup_mark      7
-#define sub_mark      8
-#define ignore        9
-#define endv          9
-#define spacer        10
-#define letter        11
-#define other_char    12
-#define active_char   13
-#define par_end       13
-#define match         13
-#define comment       14
-#define end_match     14
-#define stop          14
-#define invalid_char  15
-#define delim_num     15
-#define max_char_code 15
-/* sec 0208 */
-#define char_num      16
-#define math_char_num 17
-#define mark          18
-#define xray          19
-#define make_box      20
-#define hmove         21
-#define vmove         22
-#define un_hbox       23
-#define un_vbox       24
-#define remove_item   25
-#define hskip         26
-#define vskip         27
-#define mskip         28
-#define kern          29
-#define mkern         30
-#define leader_ship   31
-#define halign        32
-#define valign        33
-#define no_align      34
-#define vrule         35
-#define hrule         36
-#define insert        37
-#define vadjust       38
-#define ignore_spaces 39
-#define after_assignment 40
-#define after_group      41
-#define break_penalty    42
-#define start_par        43
-#define ital_corr        44
-#define accent           45
-#define math_accent      46
-#define discretionary    47
-#define eq_no            48
-#define left_right       49
-#define math_comp        50
-#define limit_switch     51
-#define above            52
-#define math_style       53
-#define math_choice      54
-#define non_script       55
-#define vcenter          56
-#define case_shift       57
-#define message          58
-#define extension        59
-#define in_stream        60
-#define begin_group      61
-#define end_group        62
-#define omit             63
-#define ex_space         64
-#define no_boundary      65
-#define radical          66
-#define end_cs_name      67
-#define min_internal     68
-#define char_given       68
-#define math_given       69
-#define last_item        70
-#define max_non_prefixed_command 70
-/* sec 0209 */
-#define toks_register 71
-#define assign_toks 72
-#define assign_int 73
-#define assign_dimen 74
-#define assign_glue 75
-#define assign_mu_glue 76
-#define assign_font_dimen 77
-#define assign_font_int 78
-#define set_aux 79
-#define set_prev_graf 80
-#define set_page_dimen 81
-#define set_page_int 82
-#define set_box_dimen 83
-#define set_shape 84
-#define def_code 85
-#define def_family 86
-#define set_font 87
-#define def_font 88
-#define tex_register 89
-#define max_internal 89
-#define advance 90
-#define multiply 91
-#define divide 92
-#define prefix 93
-#define let 94
-#define shorthand_def 95
-#define read_to_cs 96
-#define def 97
-#define set_box 98
-#define hyph_data 99
-#define set_interaction 100
-#define max_command 100
-/* sec 0210 */
-#define undefined_cs    (max_command + 1)
-#define expand_after    (max_command + 2)
-#define no_expand       (max_command + 3)
-#define input           (max_command + 4)
-#define if_test         (max_command + 5)
-#define fi_or_else      (max_command + 6)
-#define cs_name         (max_command + 7)
-#define convert         (max_command + 8)
-#define the             (max_command + 9)
-#define top_bot_mark    (max_command + 10)
-#define call            (max_command + 11)
-#define long_call       (max_command + 12)
-#define outer_call      (max_command + 13)
-#define long_outer_call (max_command + 14)
-#define end_template    (max_command + 15)
-#define dont_expand     (max_command + 16)
-#define glue_ref        (max_command + 17)
-#define shape_ref       (max_command + 18)
-#define box_ref         (max_command + 19) 
-#define data            (max_command + 20)
-/* sec 0211 */
-#define vmode 1
-#define hmode (vmode + max_command + 1)
-#define mmode (hmode + max_command + 1)
-/* sec 0212 */
-#define ignore_depth -65536000L
-/* sec 0213 */
-#define mode            cur_list.mode_field
-#define head            cur_list.head_field
-#define tail            cur_list.tail_field
-#define aux             cur_list.aux_field
-#define prev_depth      aux.cint
-#define space_factor    aux.hh.v.LH
-#define clang           aux.hh.v.RH
-#define incompleat_noad aux.cint
-#define prev_graf       cur_list.pg_field
-#define mode_line       cur_list.ml_field
-/* sec 0221 */
-#define eq_level_field(a) a.hh.b1
-#define eq_type_field(a)  a.hh.b0
-#define equiv_field(a)    a.hh.v.RH
-#define eq_level(a)       eq_level_field(eqtb[a])
-#define eq_type(a)        eq_type_field(eqtb[a])
-#define equiv(a)          equiv_field(eqtb[a])
-#define level_zero        min_quarterword
-#define level_one         level_zero + 1
-/* sec 0222 */
-#define active_base                   1                                    // 1
-#define single_base                   (active_base + 256)                  // 257
-#define null_cs                       (single_base + 256)                  // 513
-#define hash_base                     (null_cs + 1)                        // 514
-#define frozen_control_sequence       (hash_base + hash_size + hash_extra) // (hash_size + hash_extra + 514)
-#define frozen_protection             frozen_control_sequence              // (hash_size + hash_extra + 514)
-#define frozen_cr                     (frozen_control_sequence + 1)        // (hash_size + hash_extra + 515)
-#define frozen_end_group              (frozen_control_sequence + 2)        // (hash_size + hash_extra + 516)
-#define frozen_right                  (frozen_control_sequence + 3)        // (hash_size + hash_extra + 517)
-#define frozen_fi                     (frozen_control_sequence + 4)        // (hash_size + hash_extra + 518)
-#define frozen_end_template           (frozen_control_sequence + 5)        // (hash_size + hash_extra + 519)
-#define frozen_endv                   (frozen_control_sequence + 6)        // (hash_size + hash_extra + 520)
-#define frozen_relax                  (frozen_control_sequence + 7)        // (hash_size + hash_extra + 521)
-#define end_write                     (frozen_control_sequence + 8)        // (hash_size + hash_extra + 522)
-#define frozen_dont_expand            (frozen_control_sequence + 9)        // (hash_size + hash_extra + 523)
-#define frozen_null_font              (frozen_control_sequence + 10)       // (hash_size + hash_extra + 524)
-#define font_id_base                  (frozen_null_font - font_base)       // (hash_size + hash_extra + 524)
-#define undefined_control_sequence    (frozen_null_font + 1025)            // (hash_size + hash_extra + 781) = font_max + 2
-                                                                           // (hash_size + (255 - 1023) + 1025 + 524)
-                                                                           // (hash_size + 781)
-#define glue_base                     (undefined_control_sequence + 1)     // (hash_size + 782)
-/* sec 0224 */
-#define line_skip_code                0  // 782
-#define baseline_skip_code            1  // 783
-#define par_skip_code                 2  // 784
-#define above_display_skip_code       3  // 785
-#define below_display_skip_code       4  // 786
-#define above_display_short_skip_code 5  // 787
-#define below_display_short_skip_code 6  // 788
-#define left_skip_code                7  // 789
-#define right_skip_code               8  // 790
-#define top_skip_code                 9  // 791
-#define split_top_skip_code           10 // 792
-#define tab_skip_code                 11 // 793
-#define space_skip_code               12 // 794
-#define xspace_skip_code              13 // 795
-#define par_fill_skip_code            14 // 796
-#define thin_mu_skip_code             15 // 797
-#define med_mu_skip_code              16 // 798
-#define thick_mu_skip_code            17 // 799
-#define glue_pars                     18 // 800
-#define skip_base                     (glue_base + glue_pars) // 800
-#define mu_skip_base                  (skip_base + 256) // 1056
-#define local_base                    (mu_skip_base + 256) // 1312
-// #
-#define skip(a)                       equiv(skip_base + a)
-#define mu_skip(a)                    equiv(mu_skip_base + a)
-#define glue_par(a)                   equiv(glue_base + a)
-#define line_skip                     glue_par(line_skip_code)
-#define baseline_skip                 glue_par(baseline_skip_code)
-#define par_skip                      glue_par(par_skip_code)
-#define above_display_skip            glue_par(above_display_skip_code)
-#define below_display_skip            glue_par(below_display_skip_code)
-#define above_display_short_skip      glue_par(above_display_short_skip_code)
-#define below_display_short_skip      glue_par(below_display_short_skip_code)
-#define left_skip                     glue_par(left_skip_code)
-#define right_skip                    glue_par(right_skip_code)
-#define top_skip                      glue_par(top_skip_code)
-#define split_top_skip                glue_par(split_top_skip_code)
-#define tab_skip                      glue_par(tab_skip_code)
-#define space_skip                    glue_par(space_skip_code)
-#define xspace_skip                   glue_par(xspace_skip_code)
-#define par_fill_skip                 glue_par(par_fill_skip_code)
-#define thin_mu_skip                  glue_par(thin_mu_skip_code)
-#define med_mu_skip                   glue_par(med_mu_skip_code)
-#define thick_mu_skip                 glue_par(thick_mu_skip_code)
-/* sec 0230 */
-#define par_shape_loc                 local_base             // 1312
-#define output_routine_loc            (local_base + 1)       // 1313
-#define every_par_loc                 (local_base + 2)       // 1314
-#define every_math_loc                (local_base + 3)       // 1315
-#define every_display_loc             (local_base + 4)       // 1316
-#define every_hbox_loc                (local_base + 5)       // 1317
-#define every_vbox_loc                (local_base + 6)       // 1318
-#define every_job_loc                 (local_base + 7)       // 1319
-#define every_cr_loc                  (local_base + 8)       // 1320
-#define err_help_loc                  (local_base + 9)       // 1321
-#define toks_base                     (local_base + 10)      // 1322
-#define box_base                      (toks_base + 256)      // 1578
-#define cur_font_loc                  (box_base + 256)       // 1834
-#define math_font_base                (cur_font_loc + 1)     // 1835
-#define cat_code_base                 (math_font_base + 48)  // 1883
-#define lc_code_base                  (cat_code_base + 256)  // 2139
-#define uc_code_base                  (lc_code_base + 256)   // 2395
-#define sf_code_base                  (uc_code_base + 256)   // 2651
-#define math_code_base                (sf_code_base + 256)   // 2907
-#define int_base                      (math_code_base + 256) // 3163
-// #
-#define par_shape_ptr                 equiv(par_shape_loc)
-#define output_routine                equiv(output_routine_loc)
-#define every_par                     equiv(every_par_loc)
-#define every_math                    equiv(every_math_loc)
-#define every_display                 equiv(every_display_loc)
-#define every_hbox                    equiv(every_hbox_loc)
-#define every_vbox                    equiv(every_vbox_loc)
-#define every_job                     equiv(every_job_loc)
-#define every_cr                      equiv(every_cr_loc)
-#define err_help                      equiv(err_help_loc)
-#define toks(a)                       equiv(toks_base + a)
-#define box(a)                        equiv(box_base + a)
-#define cur_font                      equiv(cur_font_loc)
-#define fam_fnt(a)                    equiv(math_font_base + a)
-#define cat_code(a)                   equiv(cat_code_base + a)
-#define lc_code(a)                    equiv(lc_code_base + a)
-#define uc_code(a)                    equiv(uc_code_base + a)
-#define sf_code(a)                    equiv(sf_code_base + a)
-#define math_code(a)                  equiv(math_code_base + a)
-/* sec 0232 */
-#define null_font font_base
-#define var_code 070000
-/* sec 0236 */
-#define pretolerance_code             0  // 3163
-#define tolerance_code                1  // 3164
-#define line_penalty_code             2  // 3165
-#define hyphen_penalty_code           3  // 3166
-#define ex_hyphen_penalty_code        4  // 3167
-#define club_penalty_code             5  // 3168
-#define widow_penalty_code            6  // 3169
-#define display_widow_penalty_code    7  // 3170
-#define broken_penalty_code           8  // 3171
-#define bin_op_penalty_code           9  // 3172
-#define rel_penalty_code              10 // 3173
-#define pre_display_penalty_code      11 // 3174
-#define post_display_penalty_code     12 // 3175
-#define inter_line_penalty_code       13 // 3176
-#define double_hyphen_demerits_code   14 // 3177
-#define final_hyphen_demerits_code    15 // 3178
-#define adj_demerits_code             16 // 3179
-#define mag_code                      17 // 3180
-#define delimiter_factor_code         18 // 3181
-#define looseness_code                19 // 3182
-#define time_code                     20 // 3183
-#define day_code                      21 // 3184
-#define month_code                    22 // 3185
-#define year_code                     23 // 3186
-#define show_box_breadth_code         24 // 3187
-#define show_box_depth_code           25 // 3188
-#define hbadness_code                 26 // 3189
-#define vbadness_code                 27 // 3190
-#define pausing_code                  28 // 3191
-#define tracing_online_code           29 // 3192
-#define tracing_macros_code           30 // 3193
-#define tracing_stats_code            31 // 3194
-#define tracing_paragraphs_code       32 // 3195
-#define tracing_pages_code            33 // 3196
-#define tracing_output_code           34 // 3197
-#define tracing_lost_chars_code       35 // 3198
-#define tracing_commands_code         36 // 3199 
-#define tracing_restores_code         37 // 3200
-#define uc_hyph_code                  38 // 3201
-#define output_penalty_code           39 // 3202
-#define max_dead_cycles_code          40 // 3203
-#define hang_after_code               41 // 3204
-#define floating_penalty_code         42 // 3205
-#define global_defs_code              43 // 3206
-#define cur_fam_code                  44 // 3207
-#define escape_char_code              45 // 3208
-#define default_hyphen_char_code      46 // 3209
-#define default_skew_char_code        47 // 3210
-#define end_line_char_code            48 // 3211
-#define new_line_char_code            49 // 3212
-#define language_code                 50 // 3213
-#define left_hyphen_min_code          51 // 3214
-#define right_hyphen_min_code         52 // 3215
-#define holding_inserts_code          53 // 3216
-#define error_context_lines_code      54 // 3217
-#define int_pars                      55
-#define count_base                    (int_base + int_pars) // 3218
-#define del_code_base                 (count_base + 256)    // 3474
-#define dimen_base                    (del_code_base + 256) // 3730
-// #
-#define del_code(a)                   eqtb[del_code_base + a].cint
-#define count(a)                      eqtb[count_base + a].cint
-#define int_par(a)                    eqtb[int_base + a].cint
-#define pretolerance                  int_par(pretolerance_code)
-#define tolerance                     int_par(tolerance_code)
-#define line_penalty                  int_par(line_penalty_code)
-#define hyphen_penalty                int_par(hyphen_penalty_code)
-#define ex_hyphen_penalty             int_par(ex_hyphen_penalty_code)
-#define club_penalty                  int_par(club_penalty_code)
-#define widow_penalty                 int_par(widow_penalty_code)
-#define display_widow_penalty         int_par(display_widow_penalty_code)
-#define broken_penalty                int_par(broken_penalty_code)
-#define bin_op_penalty                int_par(bin_op_penalty_code)
-#define rel_penalty                   int_par(rel_penalty_code)
-#define pre_display_penalty           int_par(pre_display_penalty_code)
-#define post_display_penalty          int_par(post_display_penalty_code)
-#define inter_line_penalty            int_par(inter_line_penalty_code)
-#define double_hyphen_demerits        int_par(double_hyphen_demerits_code)
-#define final_hyphen_demerits         int_par(final_hyphen_demerits_code)
-#define adj_demerits                  int_par(adj_demerits_code)
-#define mag                           int_par(mag_code)
-#define delimiter_factor              int_par(delimiter_factor_code)
-#define looseness                     int_par(looseness_code)
-#define tex_time                      int_par(time_code)
-#define day                           int_par(day_code)
-#define month                         int_par(month_code)
-#define year                          int_par(year_code)
-#define show_box_breadth              int_par(show_box_breadth_code)
-#define show_box_depth                int_par(show_box_depth_code)
-#define hbadness                      int_par(hbadness_code)
-#define vbadness                      int_par(vbadness_code)
-#define pausing                       int_par(pausing_code)
-#define tracing_online                int_par(tracing_online_code)
-#define tracing_macros                int_par(tracing_macros_code)
-#define tracing_stats                 int_par(tracing_stats_code)
-#define tracing_paragraphs            int_par(tracing_paragraphs_code)
-#define tracing_pages                 int_par(tracing_pages_code)
-#define tracing_output                int_par(tracing_output_code)
-#define tracing_lost_chars            int_par(tracing_lost_chars_code)
-#define tracing_commands              int_par(tracing_commands_code)
-#define tracing_restores              int_par(tracing_restores_code)
-#define uc_hyph                       int_par(uc_hyph_code)
-#define output_penalty                int_par(output_penalty_code)
-#define max_dead_cycles               int_par(max_dead_cycles_code)
-#define hang_after                    int_par(hang_after_code)
-#define floating_penalty              int_par(floating_penalty_code)
-#define global_defs                   int_par(global_defs_code)
-#define cur_fam                       int_par(cur_fam_code)
-#define escape_char                   int_par(escape_char_code)
-#define default_hyphen_char           int_par(default_hyphen_char_code)
-#define default_skew_char             int_par(default_skew_char_code)
-#define end_line_char                 int_par(end_line_char_code)
-#define new_line_char                 int_par(new_line_char_code)
-#define language                      int_par(language_code)
-#define left_hyphen_min               int_par(left_hyphen_min_code)
-#define right_hyphen_min              int_par(right_hyphen_min_code)
-#define holding_inserts               int_par(holding_inserts_code)
-#define error_context_lines           int_par(error_context_lines_code)
-/* sec 0247 */
-#define par_indent_code               0  // 3730
-#define math_surround_code            1  // 3731
-#define line_skip_limit_code          2  // 3732
-#define hsize_code                    3  // 3733
-#define vsize_code                    4  // 3734
-#define max_depth_code                5  // 3735
-#define split_max_depth_code          6  // 3736
-#define box_max_depth_code            7  // 3737
-#define hfuzz_code                    8  // 3738
-#define vfuzz_code                    9  // 3739
-#define delimiter_shortfall_code      10 // 3740
-#define null_delimiter_space_code     11 // 3741
-#define script_space_code             12 // 3742
-#define pre_display_size_code         13 // 3743
-#define display_width_code            14 // 3744
-#define display_indent_code           15 // 3745
-#define overfull_rule_code            16 // 3746
-#define hang_indent_code              17 // 3747
-#define h_offset_code                 18 // 3748
-#define v_offset_code                 19 // 3749
-#define emergency_stretch_code        20 // 3750
-#define dimen_pars                    21
-#define scaled_base                   (dimen_base + dimen_pars) // 3751
-#define eqtb_size                     (scaled_base + 255) // 4006
-// #
-#define dimen(a)                      eqtb[scaled_base + a].cint
-#define dimen_par(a)                  eqtb[dimen_base + a].cint
-#define par_indent                    dimen_par(par_indent_code)
-#define math_surround                 dimen_par(math_surround_code)
-#define line_skip_limit               dimen_par(line_skip_limit_code)
-#define hsize                         dimen_par(hsize_code)
-#define vsize                         dimen_par(vsize_code)
-#define max_depth                     dimen_par(max_depth_code)
-#define split_max_depth               dimen_par(split_max_depth_code)
-#define box_max_depth                 dimen_par(box_max_depth_code)
-#define hfuzz                         dimen_par(hfuzz_code)
-#define vfuzz                         dimen_par(vfuzz_code)
-#define delimiter_shortfall           dimen_par(delimiter_shortfall_code)
-#define null_delimiter_space          dimen_par(null_delimiter_space_code)
-#define script_space                  dimen_par(script_space_code)
-#define pre_display_size              dimen_par(pre_display_size_code)
-#define display_width                 dimen_par(display_width_code)
-#define display_indent                dimen_par(display_indent_code)
-#define overfull_rule                 dimen_par(overfull_rule_code)
-#define hang_indent                   dimen_par(hang_indent_code)
-#define h_offset                      dimen_par(h_offset_code)
-#define v_offset                      dimen_par(v_offset_code)
-#define emergency_stretch             dimen_par(emergency_stretch_code)
-/* sec 0256 */
-#define text(a)         hash[a].v.RH
-#define next(a)         hash[a].v.LH
-#define hash_is_full    (hash_used == hash_base)
-#define font_id_text(a) text(font_id_base + a)
-/* sec 0268 */
-#define save_type(a)      save_stack[a].hh.b0
-#define save_level(a)     save_stack[a].hh.b1
-#define save_index(a)     save_stack[a].hh.v.RH
-#define restore_old_value 0
-#define restore_zero      1
-#define insert_token      2
-#define level_boundary    3
-/* sec 0269 */
-#define bottom_level      0
-#define simple_group      1
-#define hbox_group        2
-#define adjust_hbox_group 3
-#define vbox_group        4
-#define vtop_group        5
-#define align_group       6
-#define no_align_group    7
-#define output_group      8
-#define math_group        9
-#define disc_group        10
-#define insert_group      11
-#define vcenter_group     12
-#define math_choice_group 13
-#define semi_simple_group 14
-#define math_shift_group  15
-#define math_left_group   16
-#define max_group_code    16
-/* sec 0274 */
-#define saved(a) save_stack[save_ptr + (a)].cint
-/* sec 0289 */
-#define cs_token_flag     07777 // 4095
-#define left_brace_token  0400  // 256  = 2^8 * left_brace
-#define left_brace_limit  01000 // 512  = 2^8 * (left_brace + 1)
-#define right_brace_token 01000 // 512  = 2^8 * right_brace
-#define right_brace_limit 01400 // 768  = 2^8 * (right_brace + 1)
-#define math_shift_token  01400 // 768  = 2^8 * math_shift
-#define tab_token         02000 // 1024 = 2^8 * tab_mark
-#define out_param_token   02400 // 1280 = 2^8 * out_param
-#define space_token       05040 // 2592 = 2^8 * spacer + ' '
-#define letter_token      05400 // 2816 = 2^8 * letter
-#define other_token       06000 // 3072 = 2^8 * other_char
-#define match_token       06400 // 3328 = 2^8 * match
-#define end_match_token   07000 // 3584 = 2^8 * end_match
-/* sec 0303 */
-#define mid_line    1
-#define skip_blanks 2 + max_char_code // 17
-#define new_line    3 + max_char_code + max_char_code // 33
-/* sec 0305 */
-#define skipping  1
-#define defining  2
-#define matching  3
-#define aligning  4
-#define absorbing 5
-/* sec 0307 */
-#define token_list         0
-#define token_type         cur_input.index_field
-#define param_start        cur_input.limit_field
-#define parameter          0
-#define u_template         1
-#define v_template         2
-#define backed_up          3
-#define inserted           4
-#define macro              5
-#define output_text        6
-#define every_par_text     7
-#define every_math_text    8
-#define every_display_text 9
-#define every_hbox_text    10
-#define every_vbox_text    11
-#define every_job_text     12
-#define every_cr_text      13
-#define mark_text          14
-#define write_text         15
-/* sec 0323 */
-#define back_list(a) begin_token_list(a, backed_up)
-#define ins_list(a)  begin_token_list(a, inserted)
-/* sec 0344 */
-#define any_state_plus(a) mid_line + (a): case skip_blanks + (a): case new_line + (a)
-/* sec 0347 */
-#define add_delims_to(a) \
-  (a) + math_shift:      \
-  case (a) + tab_mark:   \
-  case (a) + mac_param:  \
-  case (a) + sub_mark:   \
-  case (a) + letter:     \
-  case (a) + other_char
-/* sec 0358 */
-#define no_expand_flag 257
-/* sec 0382 */
-#define top_mark_code         0
-#define first_mark_code       1
-#define bot_mark_code         2
-#define split_first_mark_code 3
-#define split_bot_mark_code   4
-#define top_mark              cur_mark[top_mark_code]
-#define first_mark            cur_mark[first_mark_code]
-#define bot_mark              cur_mark[bot_mark_code]
-#define split_first_mark      cur_mark[split_first_mark_code]
-#define split_bot_mark        cur_mark[split_bot_mark_code]
-/* sec 0400 */
-#define int_val   0
-#define dimen_val 1
-#define glue_val  2
-#define mu_val    3
-#define ident_val 4
-#define tok_val   5
-/* sec 0416 */
-#define input_line_no_code (glue_val + 1)
-#define badness_code       (glue_val + 2)
-/* sec 0421 */
-#define max_dimen 07777777777
-/* sec 0438 */
-#define octal_token             (other_token + '\'') // 3111
-#define hex_token               (other_token + '"' ) // 3106
-#define alpha_token             (other_token + '`' ) // 3168
-#define point_token             (other_token + '.' ) // 3118
-#define continental_point_token (other_token + ',' ) // 3116
-/* sec 0445 */
-#define zero_token    (other_token + '0')  // 3120
-#define A_token       (letter_token + 'A') // 2881
-#define other_A_token (other_token + 'A')  // 3137
-/* sec 0468 */
-#define number_code        0
-#define roman_numeral_code 1
-#define string_code        2
-#define meaning_code       3
-#define font_name_code     4
-#define job_name_code      5
-/* sec 0480 */
-#define closed    2
-#define just_open 1
-/* sec 0487 */
-#define if_char_code   0
-#define if_cat_code    1
-#define if_int_code    2
-#define if_dim_code    3
-#define if_odd_code    4
-#define if_vmode_code  5
-#define if_hmode_code  6
-#define if_mmode_code  7
-#define if_inner_code  8
-#define if_void_code   9
-#define if_hbox_code   10
-#define if_vbox_code   11
-#define ifx_code       12
-#define if_eof_code    13
-#define if_true_code   14
-#define if_false_code  15
-#define if_case_code   16
-/* sec 0489 */
-#define if_node_size     2
-#define if_line_field(a) mem[(a) + 1].cint
-#define if_code          1
-#define fi_code          2
-#define else_code        3
-#define or_code          4
-/* sec 0544 */
-#define no_tag   0
-#define lig_tag  1
-#define list_tag 2
-#define ext_tag  3
-/* sec 0545 */
-#define stop_flag    128
-#define kern_flag    128
-#define skip_byte(a) a.b0
-#define next_char(a) a.b1
-#define op_byte(a)   a.b2
-#define rem_byte(a)  a.b3
-/* sec 0546 */
-#define ext_top(a) a.b0
-#define ext_mid(a) a.b1
-#define ext_bot(a) a.b2
-#define ext_rep(a) a.b3
-/* sec 0547 */
-#define slant_code         1
-#define space_code         2
-#define space_stretch_code 3
-#define space_shrink_code  4
-#define x_height_code      5
-#define quad_code          6
-#define extra_space_code   7
-/* sec 0549 */
-#define non_char    256
-#define non_address 0
-/* sec 0554 */
-#define char_info(a, b)   font_info[char_base[a] + b].qqqq
-#define char_width(a, b)  font_info[width_base[a] + b.b0].cint
-#define char_exists(a)    (a.b0 > min_quarterword)
-#define char_italic(a, b) font_info[italic_base[a] + (b.b2) / 4].cint
-#define height_depth(a)   (a.b1)
-#define char_height(a, b) font_info[height_base[a] + (b) / 16].cint
-#define char_depth(a, b)  font_info[depth_base[a] + (b) % 16].cint
-#define char_tag(a)       (a.b2 % 4)
-/* sec 0557 */
-#define char_kern(a, b)        font_info[kern_base[a] + 256 * op_byte(b) + rem_byte(b)].cint
-#define kern_base_offset       (256 * (128 + min_quarterword))
-#define lig_kern_start(a, b)   lig_kern_base[a] + rem_byte(b)
-#define lig_kern_restart(a, b) lig_kern_base[a] + 256 * op_byte(b) + rem_byte(b) + 32768 - kern_base_offset
-/* sec 0558 */
-#define param(a, b)      font_info[a + param_base[b]].cint
-#define slant(f)         param(slant_code, f)
-#define space(f)         param(space_code, f)
-#define space_stretch(f) param(space_stretch_code, f)
-#define space_shrink(f)  param(space_shrink_code, f)
-#define x_height(f)      param(x_height_code, f)
-#define quad(f)          param(quad_code, f)
-#define extra_space(f)   param(extra_space_code, f)
-/* sec 0564 */
-/* sec 0585 */
-#define set1      128 // c[1]
-#define set2      129 // c[2]
-#define set3      130 // c[3]
-#define set4      131 // c[4]
-#define set_rule  132 // a[4] b[4]
-#define put1      133 // c[1]
-#define put2      134 // c[2]
-#define put3      135 // c[3]
-#define put4      136 // c[4]
-#define put_rule  137 // a[4] b[4]
-#define nop       138 // NULL
-#define bop       139 // c0[4] c1[4] ... c9[4] p[4]
-#define eop       140 // NULL
-//#define dvi_push 141
-//#define dvi_pop  142
-#define right1    143 // b[1]
-#define right2    144 // b[2]
-#define right3    145 // b[3]
-#define right4    146 // b[4]
-#define w0        147 //
-#define w1        148 // b[1]
-#define w2        149 // b[2]
-#define w3        150 // b[3]
-#define w4        151 // b[4]
-#define x0        152 //
-#define x1        153 // b[1]
-#define x2        154 // b[2]
-#define x3        155 // b[3]
-#define x4        156 // b[4]
-#define down1     157 // a[1]
-#define down2     158 // a[2]
-#define down3     159 // a[3]
-#define down4     160 // a[4]
-#define y0        161 //
-#define y1        162 // a[1]
-#define y2        163 // a[2]
-#define y3        164 // a[3]
-#define y4        165 // a[4]
-#define z0        166 //
-#define z1        167 // a[1]
-#define z2        168 // a[2]
-#define z3        169 // a[3]
-#define z4        170 // a[4]
-#define fnt_num_0 171 //
-#define fnt1      235 // k[1]
-#define fnt2      236 // k[2]
-#define fnt3      237 // k[3]
-#define fnt4      238 // k[4]
-#define xxx1      239 // k[1] x[k]
-#define xxx2      240 // k[2] x[k]
-#define xxx3      241 // k[3] x[k]
-#define xxx4      242 // k[4] x[k]
-#define fnt_def1  243 // k[1] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define fnt_def2  244 // k[2] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define fnt_def3  245 // k[3] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define fnt_def4  246 // k[4] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define pre       247 // i[1] num[4] den[4] mag[4] k[1] x[k]
-#define post      248 //
-#define post_post 249 //
-/* sec 0587 */
-#define id_byte 2
-/* sec 0605 */
-#define movement_node_size 3
-#define location(a) mem[a + 2].cint
-/* sec 0608 */
-#define y_here  1
-#define z_here  2
-#define yz_OK   3
-#define y_OK    4
-#define z_OK    5
-#define d_fixed 6
-/* sec 0611 */
-#define none_seen 0
-#define y_seen    6
-#define z_seen    12
-/* sec 0644 */
-#define exactly    0
-#define additional 1
-/* sec 0769 */
-#define u_part(a)     mem[(a) + height_offset].cint
-#define v_part(a)     mem[(a) + depth_offset].cint
-#define extra_info(a) info((a) + list_offset)
-/* sec 0681 */
-#define noad_size      4
-#define nucleus(a)     ((a) + 1)
-#define supscr(a)      ((a) + 2)
-#define subscr(a)      ((a) + 3)
-#define math_type      link
-#define fam            font
-#define math_char      1
-#define sub_box        2
-#define sub_mlist      3
-#define math_text_char 4
-/* sec 0682 */
-#define ord_noad   (unset_node + 3) // 16
-#define op_noad    (ord_noad + 1  ) // 17
-#define bin_noad   (ord_noad + 2  ) // 18
-#define rel_noad   (ord_noad + 3  ) // 19
-#define open_noad  (ord_noad + 4  ) // 20
-#define close_noad (ord_noad + 5  ) // 21
-#define punct_noad (ord_noad + 6  ) // 22
-#define inner_noad (ord_noad + 7  ) // 23
-#define limits    1
-#define no_limits 2
-/* sec 0683 */
-#define left_delimiter(a)  ((a) + 4)
-#define right_delimiter(a) ((a) + 5)
-#define radical_noad       (inner_noad + 1) // 24
-#define radical_noad_size  5
-#define fraction_noad      (radical_noad + 1) // 25
-#define fraction_noad_size 6
-#define small_fam(a)       mem[(a)].qqqq.b0
-#define small_char(a)      mem[(a)].qqqq.b1
-#define large_fam(a)       mem[(a)].qqqq.b2
-#define large_char(a)      mem[(a)].qqqq.b3
-#define thickness          width
-#define default_code       010000000000L
-#define numerator          supscr
-#define denominator        subscr
-/* sec 0687 */
-#define under_noad        (fraction_noad + 1) // 26
-#define over_noad         (under_noad + 1   ) // 27
-#define accent_noad       (over_noad + 1    ) // 28
-#define accent_noad_size  5
-#define accent_chr(a)     (a) + 4
-#define vcenter_noad      (accent_noad + 1  ) // 29
-#define left_noad         (vcenter_noad + 1 ) // 30
-#define right_noad        (left_noad + 1    ) // 31
-#define delimiter         nucleus
-#define script_allowed(a) ((type(a) >= ord_noad) && (type(a) < left_noad))
-/* sec 0688 */
-#define style_node          (unset_node + 1)
-#define style_node_size     3
-#define display_style       0
-#define text_style          2
-#define script_style        4
-#define script_script_style 6
-#define cramped             1
-/* sec 0689 */
-#define choice_node            (unset_node + 2)
-#define display_mlist(a)       info(a + 1)
-#define text_mlist(a)          link(a + 1)
-#define script_mlist(a)        info(a + 2)
-#define script_script_mlist(a) link(a + 2)
-/* sec 0699 */
-#define text_size          0
-#define script_size        16
-#define script_script_size 32
-/* sec 0700 */
-#define mathsy(a, b)        font_info[a + param_base[fam_fnt(2 + b)]].cint
-#define math_x_height(a)    mathsy(5, a)
-#define math_quad(a)        mathsy(6, a)
-#define num1(a)             mathsy(8, a)
-#define num2(a)             mathsy(9, a)
-#define num3(a)             mathsy(10, a)
-#define denom1(a)           mathsy(11, a)
-#define denom2(a)           mathsy(12, a)
-#define sup1(a)             mathsy(13, a)
-#define sup2(a)             mathsy(14, a)
-#define sup3(a)             mathsy(15, a)
-#define sub1(a)             mathsy(16, a)
-#define sub2(a)             mathsy(17, a)
-#define sup_drop(a)         mathsy(18, a)
-#define sub_drop(a)         mathsy(19, a)
-#define delim1(a)           mathsy(20, a)
-#define delim2(a)           mathsy(21, a)
-#define axis_height(a)      mathsy(22, a)
-#define total_mathsy_params 22
-/* sec 0701 */
-#define mathex(a)              font_info[(a) + param_base[fam_fnt(3 + cur_size)]].cint
-#define default_rule_thickness mathex(8)
-#define big_op_spacing1        mathex(9)
-#define big_op_spacing2        mathex(10)
-#define big_op_spacing3        mathex(11)
-#define big_op_spacing4        mathex(12)
-#define big_op_spacing5        mathex(13)
-#define total_mathex_params    13
-/* sec 0702 */
-#define cramped_style(a) (2 * ((a) / 2) + cramped)
-#define sub_style(a)     (2 * ((a) / 4) + script_style + cramped)
-#define sup_style(a)     (2 * ((a) / 4) + script_style + ((a) % 2))
-#define num_style(a)     ((a) + 2 - 2 * ((a) / 6))
-#define denom_style(a)   (2 * ((a) / 2) + cramped + 2 - 2 * ((a) / 6))
-/* sec 0725 */
-#define new_hlist(a) mem[nucleus(a)].cint
-/* sec 0770 */
-#define preamble              link(align_head)
-#define align_stack_node_size 5
-/* sec 0780 */
-#define span_code          256
-#define cr_code            257
-#define cr_cr_code         (cr_code + 1)
-#define end_template_token (cs_token_flag + frozen_end_template)
-/* sec 0797 */
-#define span_node_size 2
-/* sec 0817 */
-#define tight_fit      3
-#define loose_fit      1
-#define very_loose_fit 0
-#define decent_fit     2
-/* sec 0819 */
-#define active_node_size  3
-#define fitness           subtype
-#define break_node        rlink
-#define line_number       llink
-#define total_demerits(a) mem[a + 2].cint
-#define unhyphenated      0
-#define hyphenated        1
-#define last_active       active
-/* sec 0821 */
-#define passive_node_size 2
-#define cur_break         rlink
-#define prev_break        llink
-#define serial            info
-/* sec 0822 */
-#define delta_node_size 7
-#define delta_node      2
-/* sec 0823 */
-#define do_all_six(a) a(1); a(2); a(3); a(4); a(5); a(6)
-/* sec 0829 */
-#define copy_to_cur_active(a) cur_active_width[a] = active_width[a]
-/* sec 0832 */
-#define update_width(a) cur_active_width[a] = cur_active_width[a] + mem[r + (a)].cint
-/* sec 0833 */
-#define awful_bad 07777777777
-/* sec 0837 */
-#define set_break_width_to_background(a) break_width[a] = background[a]
-/* sec 0843 */
-#define convert_to_break_width(a)   mem[prev_r + (a)].cint = mem[prev_r + (a)].cint - cur_active_width[a] + break_width[a]
-#define store_break_width(a)        active_width[a] = break_width[a]
-#define new_delta_to_break_width(a) mem[q + (a)].cint = break_width[(a)] - cur_active_width[(a)]
-/* sec 0844 */
-#define new_delta_from_break_width(a) mem[q + (a)].cint = cur_active_width[(a)] - break_width[(a)]
-/* sec 0860 */
-#define combine_two_deltas(a) mem[prev_r + (a)].cint = mem[prev_r + (a)].cint + mem[r + (a)].cint
-#define downdate_width(a)     cur_active_width[(a)] = cur_active_width[(a)] - mem[prev_r + (a)].cint
-/* sec 0861 */
-#define update_active(a) active_width[(a)] = active_width[(a)] + mem[r + (a)].cint
-/* sec 0877 */
-#define next_break prev_break
-/* sec 0908 */
-#define append_charnode_to_t(a) \
-  {                             \
-    link(t) = get_avail();      \
-    t = link(t);                \
-    font(t) = hf;               \
-    character(t) = (a);         \
-  }
-#define set_cur_r()      \
-  {                      \
-    if (j < n)           \
-      cur_r = hu[j + 1]; \
-    else                 \
-      cur_r = bchar;     \
-                         \
-    if (odd(hyf[j]))     \
-      cur_rh = hchar;    \
-    else                 \
-      cur_rh = non_char; \
-  }
-/* sec 0910 */
-#define wrap_lig(a)                           \
-  if (ligature_present)                       \
-  {                                           \
-    p = new_ligature(hf, cur_l, link(cur_q)); \
-                                              \
-    if (lft_hit)                              \
-    {                                         \
-      subtype(p) = 2;                         \
-      lft_hit = false;                        \
-    }                                         \
-                                              \
-    if ((a))                                  \
-      if (lig_stack == 0)                     \
-      {                                       \
-        incr(subtype(p));                     \
-        rt_hit = false;                       \
-      }                                       \
-                                              \
-    link(cur_q) = p;                          \
-    t = p;                                    \
-    ligature_present = false;                 \
-  }
-#define pop_lig_stack()                       \
-  {                                           \
-    if (lig_ptr(lig_stack) != 0)              \
-    {                                         \
-      link(t) = lig_ptr(lig_stack);           \
-      t = link(t);                            \
-      incr(j);                                \
-    }                                         \
-                                              \
-    p = lig_stack;                            \
-    lig_stack = link(p);                      \
-    free_node(p, small_node_size);            \
-                                              \
-    if (lig_stack == 0)                       \
-    {                                         \
-      set_cur_r();                            \
-    }                                         \
-    else                                      \
-      cur_r = character(lig_stack);           \
-  }
-/* sec 0914 */
-#define advance_major_tail()       \
-  {                                \
-    major_tail = link(major_tail); \
-    incr(r_count);                 \
-  }
-/* sec 0970 */
-#define active_height      active_width
-#define cur_height         active_height[1]
-#define set_height_zero(a) active_width[(a)] = 0
-/* sec 0974 */
-#define deplorable 100000L
-/* sec 0980 */
-#define inserts_only 1
-#define box_there    2
-/* sec 0981 */
-#define page_ins_node_size 4
-#define inserting          0
-#define split_up           1
-#define broken_ptr(a)      link(a + 1)
-#define broken_ins(a)      info(a + 1)
-#define last_ins_ptr(a)    link(a + 2)
-#define best_ins_ptr(a)    info(a + 2)
-/* sec 0982 */
-#define page_goal   page_so_far[0]
-#define page_total  page_so_far[1]
-#define page_shrink page_so_far[6]
-#define page_depth  page_so_far[7]
-/* sec 0987 */
-#define set_page_so_far_zero(a) page_so_far[(a)] = 0
-/* sec 1034 */
-#define adjust_space_factor()   \
-{                               \
-  main_s = sf_code(cur_chr);    \
-  if (main_s == 1000)           \
-    space_factor = 1000;        \
-  else if (main_s < 1000)       \
-  {                             \
-    if (main_s > 0)             \
-      space_factor = main_s;    \
-  }                             \
-  else if (space_factor < 1000) \
-    space_factor = 1000;        \
-  else                          \
-    space_factor = main_s;      \
-}
-/* sec 1035 */
-/* -> false */
-#define wrapup(a)                                         \
-{                                                         \
-  if (cur_l < non_char)                                   \
-  {                                                       \
-    if (link(cur_q) != 0)                                 \
-      if (character(tail) == hyphen_char[main_f])         \
-        ins_disc = true;                                  \
-                                                          \
-    if (ligature_present)                                 \
-    {                                                     \
-      main_p = new_ligature(main_f, cur_l, link(cur_q));  \
-                                                          \
-      if (lft_hit)                                        \
-      {                                                   \
-        subtype(main_p) = 2;                              \
-        lft_hit = false;                                  \
-      }                                                   \
-                                                          \
-      if (a)                                              \
-        if (lig_stack == 0)                               \
-        {                                                 \
-          incr(subtype(main_p));                          \
-          rt_hit = false;                                 \
-        }                                                 \
-                                                          \
-      link(cur_q) = main_p;                               \
-      tail = main_p;                                      \
-      ligature_present = false;                           \
-    }                                                     \
-                                                          \
-    if (ins_disc)                                         \
-    {                                                     \
-      ins_disc = false;                                   \
-                                                          \
-      if (mode > 0)                                       \
-      {                                                   \
-        tail_append(new_disc());                          \
-      }                                                   \
-    }                                                     \
-  }                                                       \
-}
-/* sec 1045 */
-#define any_mode(a) vmode + a: case hmode + a: case mmode + a
-/* sec 1046 */
-#define non_math(a) vmode + a: case hmode + a
-/* sec 1058 */
-#define fil_code     0
-#define fill_code    1
-#define ss_code      2
-#define fil_neg_code 3
-#define skip_code    4
-#define mskip_code   5
-/* sec 1071 */
-#define box_flag      010000000000
-#define ship_out_flag (box_flag + 512)
-#define leader_flag   (box_flag + 513)
-#define box_code      0
-#define copy_code     1
-#define last_box_code 2
-#define vsplit_code   3
-#define vtop_code     4
-/* sec 1178 */
-#define above_code     0
-#define over_code      1
-#define atop_code      2
-#define delimited_code 3
-/* sec 1222 */
-#define char_def_code      0
-#define math_char_def_code 1
-#define count_def_code     2
-#define dimen_def_code     3
-#define skip_def_code      4
-#define mu_skip_def_code   5
-#define toks_def_code      6
-/* sec 1290 */
-#define show_code     0
-#define show_box_code 1
-#define show_the_code 2
-#define show_lists    3
-/* sec 1342 */
-#define write_node_size 2
-#define open_node_size  3
-#define open_node       0
-#define write_node      1
-#define close_node      2
-#define special_node    3
-#define language_node   4
-#define what_lang(s)    link(s+1)
-#define what_lhm(s)     type(s+1)
-#define what_rhm(s)     subtype(s+1)
-#define write_tokens(s) link(s+1)
-#define write_stream(s) info(s+1)
-#define open_name(s)    link(s+1)
-#define open_area(s)    info(s+2)
-#define open_ext(s)     link(s+2)
-/* sec 1344 */
-#define immediate_code    4
-#define set_language_code 5
-/* sec 1371 */
-#define end_write_token (cs_token_flag + end_write)
 /* sec 79 */
 extern void synch_h(void);
 extern void synch_v(void);
index bf330af..afa261b 100644 (file)
@@ -59,7 +59,7 @@ extern bool input_line (FILE *);
    passed in as a global variable, `name_of_file'.  */
    
 #define b_open_in(f)  open_input  (&(f), TFMFILEPATH, FOPEN_RBIN_MODE)
-#define w_open_in(f)  open_input  (&(f), dump_path, FOPEN_RBIN_MODE)
+#define w_open_in(f)  open_input  (&(f), TEXFORMATPATH, FOPEN_RBIN_MODE)
 #define b_open_out(f) open_output (&(f), FOPEN_WBIN_MODE)
 #define w_open_out    b_open_out
 #define b_close       a_close
diff --git a/src/texsourc/yandy_macros.h b/src/texsourc/yandy_macros.h
new file mode 100644 (file)
index 0000000..22d59df
--- /dev/null
@@ -0,0 +1,1300 @@
+/* Copyright 2014 Clerk Ma
+
+   This program 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.
+
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
+
+#define font_base 0
+/* sec 0022 */
+#define null_code       0     // 0
+#define carriage_return 015   // 13
+#define invalid_code    0177  // 127
+/* sec 0040 */
+#define length(s) (str_start[(s) + 1] - str_start[(s)])
+/* sec 0041 */
+#define cur_length (pool_ptr - str_start[str_ptr])
+/* sec 0054 */
+#define no_print     16
+#define term_only    17
+#define log_only     18
+#define term_and_log 19
+#define pseudo       20
+#define new_string   21
+#define max_selector 21
+/* sec 0073 */
+#define batch_mode      0
+#define nonstop_mode    1
+#define scroll_mode     2
+#define error_stop_mode 3
+/* sec 0076 */
+#define spotless             0
+#define warning_issued       1
+#define error_message_issued 2
+#define fatal_error_stop     3
+/* sec 0105 */
+#define nx_plux_y(...)   mult_and_add(..., 07777777777L)
+#define mult_integers(a) mult_and_add(a,0,017777777777L)
+/* sec 0108 */
+#define inf_bad 10000L
+/* sec 0109 */
+#define set_glue_ratio_zero(a) (a) = 0.0
+#define set_glue_ratio_one(a)  (a) = 1.0
+#define tex_float(a)           (a)
+#define unfloat(a)             (a)
+#define float_constant(a)      (float) (a)
+/* sec 0115*/
+#define pointer halfword
+#define null    min_halfword
+/* sec 0118 */
+#define link(p) mem[(p)].hh.v.RH
+#define info(p) mem[(p)].hh.v.LH
+/* sec 0124 */
+#define empty_flag  max_halfword
+#define is_empty(a) (link(a) = empty_flag)
+#define node_size   info
+#define llink(a)    info(a+1)
+#define rlink(a)    link(a+1)
+/* sec 0133 */
+#define type(a)    mem[a].hh.b0
+#define subtype(a) mem[a].hh.b1
+/* sec 0134 */
+#define is_char_node(a) (a >= hi_mem_min)
+#define font            type
+#define character       subtype
+/* sec 0135 */
+#define hlist_node      0
+#define box_node_size   7
+#define width_offset    1
+#define depth_offset    2
+#define height_offset   3
+#define width(a)        mem[a + width_offset].cint
+#define depth(a)        mem[a + depth_offset].cint
+#define height(a)       mem[a + height_offset].cint
+#define shift_amount(a) mem[a + 4].cint
+#define list_offset     5
+#define list_ptr(a)     link(a + list_offset)
+#define glue_order(a)   subtype(a + list_offset)
+#define glue_sign(a)    type(a + list_offset)
+#define normal          0
+#define stretching      1
+#define shrinking       2
+#define glue_offset     6
+#define glue_set(a)     mem[a + glue_offset].gr
+/* sec 0137 */
+#define vlist_node 1
+/* sec 0138 */
+#define rule_node      2
+#define rule_node_size 4
+#define null_flag      -010000000000L
+#define is_running(a)  (a = null_flag)
+/* sec 0140 */
+#define ins_node         3
+#define ins_node_size    5
+#define float_cost(a)    mem[a + 1].cint
+#define ins_ptr(a)       info(a + 4)
+#define split_top_ptr(a) link(a + 4)
+/* sec 0141 */
+#define mark_node       4
+#define small_node_size 2
+#define mark_ptr(a)     mem[a + 1].cint
+/* sec 0142 */
+#define adjust_node 5
+#define adjust_ptr  mark_ptr
+/* sec 0143 */
+#define ligature_node 6
+#define lig_char(a)   (a + 1)
+#define lig_ptr(a)    link(lig_char(a))
+/* sec 0145 */
+#define disc_node     7
+#define replace_count subtype
+#define pre_break     llink
+#define post_break    rlink
+/* sec 0146 */
+#define whatsit_node 8
+/* sec 0147 */
+#define math_node 9
+#define before    0
+#define after     1
+/* sec 0148 */
+#define precedes_break(a)  (type(a) < math_node)
+#define non_discardable(a) (type(a) < math_node)
+/* sec 0149 */
+#define glue_node      10
+#define cond_math_glue 98
+#define mu_glue        99
+#define a_leaders      100
+#define c_leaders      101
+#define x_leaders      102
+#define glue_ptr       llink
+#define leader_ptr     rlink
+/* sec 0150 */
+#define glue_spec_size    4
+#define glue_ref_count(a) link(a)
+#define stretch(a)        mem[a + 2].cint
+#define shrink(a)         mem[a + 3].cint
+#define stretch_order     type
+#define shrink_order      subtype
+#define fil               1
+#define fill              2
+#define filll             3
+/* sec 0155 */
+#define kern_node 11
+#define explicit  1
+#define acc_kern  2
+/* sec 0157 */
+#define penalty_node  12
+#define inf_penalty   inf_bad
+#define eject_penalty -inf_bad
+#define penalty(a)    mem[a + 1].cint
+/* sec 0159 */
+#define unset_node      13
+#define glue_stretch(a) mem[a + glue_offset].cint
+#define glue_shrink     shift_amount
+#define span_count      subtype
+/* sec 0162 */
+#define zero_glue         mem_bot // 0
+#define fil_glue          (zero_glue + glue_spec_size) // 4
+#define fill_glue         (fil_glue + glue_spec_size) // 8
+#define ss_glue           (fill_glue + glue_spec_size) // 12
+#define fil_neg_glue      (ss_glue + glue_spec_size) // 16
+#define lo_mem_stat_max   (fil_neg_glue + glue_spec_size - 1) // 19
+#define page_ins_head     mem_top
+#define contrib_head      (mem_top - 1)
+#define page_head         (mem_top - 2)
+#define temp_head         (mem_top - 3)
+#define hold_head         (mem_top - 4)
+#define adjust_head       (mem_top - 5)
+#define active            (mem_top - 7)
+#define align_head        (mem_top - 8)
+#define end_span          (mem_top - 9)
+#define omit_template     (mem_top - 10)
+#define null_list         (mem_top - 11)
+#define lig_trick         (mem_top - 12)
+#define garbage           (mem_top - 12)
+#define backup_head       (mem_top - 13)
+#define hi_mem_stat_min   (mem_top - 13)
+#define hi_mem_stat_usage 14
+/* sec 0200 */
+#define token_ref_count(a) info(a)
+/* sec 0203 */
+#define add_token_ref(a) incr(token_ref_count(a))
+#define add_glue_ref(a)  incr(glue_ref_count(a))
+/* sec 0207 */
+#define escape        0
+#define relax         0
+#define left_brace    1
+#define right_brace   2
+#define math_shift    3
+#define tab_mark      4
+#define car_ret       5
+#define out_param     5
+#define mac_param     6
+#define sup_mark      7
+#define sub_mark      8
+#define ignore        9
+#define endv          9
+#define spacer        10
+#define letter        11
+#define other_char    12
+#define active_char   13
+#define par_end       13
+#define match         13
+#define comment       14
+#define end_match     14
+#define stop          14
+#define invalid_char  15
+#define delim_num     15
+#define max_char_code 15
+/* sec 0208 */
+#define char_num      16
+#define math_char_num 17
+#define mark          18
+#define xray          19
+#define make_box      20
+#define hmove         21
+#define vmove         22
+#define un_hbox       23
+#define un_vbox       24
+#define remove_item   25
+#define hskip         26
+#define vskip         27
+#define mskip         28
+#define kern          29
+#define mkern         30
+#define leader_ship   31
+#define halign        32
+#define valign        33
+#define no_align      34
+#define vrule         35
+#define hrule         36
+#define insert        37
+#define vadjust       38
+#define ignore_spaces 39
+#define after_assignment 40
+#define after_group      41
+#define break_penalty    42
+#define start_par        43
+#define ital_corr        44
+#define accent           45
+#define math_accent      46
+#define discretionary    47
+#define eq_no            48
+#define left_right       49
+#define math_comp        50
+#define limit_switch     51
+#define above            52
+#define math_style       53
+#define math_choice      54
+#define non_script       55
+#define vcenter          56
+#define case_shift       57
+#define message          58
+#define extension        59
+#define in_stream        60
+#define begin_group      61
+#define end_group        62
+#define omit             63
+#define ex_space         64
+#define no_boundary      65
+#define radical          66
+#define end_cs_name      67
+#define min_internal     68
+#define char_given       68
+#define math_given       69
+#define last_item        70
+#define max_non_prefixed_command 70
+/* sec 0209 */
+#define toks_register 71
+#define assign_toks 72
+#define assign_int 73
+#define assign_dimen 74
+#define assign_glue 75
+#define assign_mu_glue 76
+#define assign_font_dimen 77
+#define assign_font_int 78
+#define set_aux 79
+#define set_prev_graf 80
+#define set_page_dimen 81
+#define set_page_int 82
+#define set_box_dimen 83
+#define set_shape 84
+#define def_code 85
+#define def_family 86
+#define set_font 87
+#define def_font 88
+#define tex_register 89
+#define max_internal 89
+#define advance 90
+#define multiply 91
+#define divide 92
+#define prefix 93
+#define let 94
+#define shorthand_def 95
+#define read_to_cs 96
+#define def 97
+#define set_box 98
+#define hyph_data 99
+#define set_interaction 100
+#define max_command 100
+/* sec 0210 */
+#define undefined_cs    (max_command + 1)
+#define expand_after    (max_command + 2)
+#define no_expand       (max_command + 3)
+#define input           (max_command + 4)
+#define if_test         (max_command + 5)
+#define fi_or_else      (max_command + 6)
+#define cs_name         (max_command + 7)
+#define convert         (max_command + 8)
+#define the             (max_command + 9)
+#define top_bot_mark    (max_command + 10)
+#define call            (max_command + 11)
+#define long_call       (max_command + 12)
+#define outer_call      (max_command + 13)
+#define long_outer_call (max_command + 14)
+#define end_template    (max_command + 15)
+#define dont_expand     (max_command + 16)
+#define glue_ref        (max_command + 17)
+#define shape_ref       (max_command + 18)
+#define box_ref         (max_command + 19) 
+#define data            (max_command + 20)
+/* sec 0211 */
+#define vmode 1
+#define hmode (vmode + max_command + 1)
+#define mmode (hmode + max_command + 1)
+/* sec 0212 */
+#define ignore_depth -65536000L
+/* sec 0213 */
+#define mode            cur_list.mode_field
+#define head            cur_list.head_field
+#define tail            cur_list.tail_field
+#define aux             cur_list.aux_field
+#define prev_depth      aux.cint
+#define space_factor    aux.hh.v.LH
+#define clang           aux.hh.v.RH
+#define incompleat_noad aux.cint
+#define prev_graf       cur_list.pg_field
+#define mode_line       cur_list.ml_field
+/* sec 0221 */
+#define eq_level_field(a) a.hh.b1
+#define eq_type_field(a)  a.hh.b0
+#define equiv_field(a)    a.hh.v.RH
+#define eq_level(a)       eq_level_field(eqtb[a])
+#define eq_type(a)        eq_type_field(eqtb[a])
+#define equiv(a)          equiv_field(eqtb[a])
+#define level_zero        min_quarterword
+#define level_one         level_zero + 1
+/* sec 0222 */
+#define active_base                   1                                    // 1
+#define single_base                   (active_base + 256)                  // 257
+#define null_cs                       (single_base + 256)                  // 513
+#define hash_base                     (null_cs + 1)                        // 514
+#define frozen_control_sequence       (hash_base + hash_size + hash_extra) // (hash_size + hash_extra + 514)
+#define frozen_protection             frozen_control_sequence              // (hash_size + hash_extra + 514)
+#define frozen_cr                     (frozen_control_sequence + 1)        // (hash_size + hash_extra + 515)
+#define frozen_end_group              (frozen_control_sequence + 2)        // (hash_size + hash_extra + 516)
+#define frozen_right                  (frozen_control_sequence + 3)        // (hash_size + hash_extra + 517)
+#define frozen_fi                     (frozen_control_sequence + 4)        // (hash_size + hash_extra + 518)
+#define frozen_end_template           (frozen_control_sequence + 5)        // (hash_size + hash_extra + 519)
+#define frozen_endv                   (frozen_control_sequence + 6)        // (hash_size + hash_extra + 520)
+#define frozen_relax                  (frozen_control_sequence + 7)        // (hash_size + hash_extra + 521)
+#define end_write                     (frozen_control_sequence + 8)        // (hash_size + hash_extra + 522)
+#define frozen_dont_expand            (frozen_control_sequence + 9)        // (hash_size + hash_extra + 523)
+#define frozen_null_font              (frozen_control_sequence + 10)       // (hash_size + hash_extra + 524)
+#define font_id_base                  (frozen_null_font - font_base)       // (hash_size + hash_extra + 524)
+#define undefined_control_sequence    (frozen_null_font + 1025)            // (hash_size + hash_extra + 781) = font_max + 2
+                                                                           // (hash_size + (255 - 1023) + 1025 + 524)
+                                                                           // (hash_size + 781)
+#define glue_base                     (undefined_control_sequence + 1)     // (hash_size + 782)
+/* sec 0224 */
+#define line_skip_code                0  // 782
+#define baseline_skip_code            1  // 783
+#define par_skip_code                 2  // 784
+#define above_display_skip_code       3  // 785
+#define below_display_skip_code       4  // 786
+#define above_display_short_skip_code 5  // 787
+#define below_display_short_skip_code 6  // 788
+#define left_skip_code                7  // 789
+#define right_skip_code               8  // 790
+#define top_skip_code                 9  // 791
+#define split_top_skip_code           10 // 792
+#define tab_skip_code                 11 // 793
+#define space_skip_code               12 // 794
+#define xspace_skip_code              13 // 795
+#define par_fill_skip_code            14 // 796
+#define thin_mu_skip_code             15 // 797
+#define med_mu_skip_code              16 // 798
+#define thick_mu_skip_code            17 // 799
+#define glue_pars                     18 // 800
+#define skip_base                     (glue_base + glue_pars) // 800
+#define mu_skip_base                  (skip_base + 256) // 1056
+#define local_base                    (mu_skip_base + 256) // 1312
+// #
+#define skip(a)                       equiv(skip_base + a)
+#define mu_skip(a)                    equiv(mu_skip_base + a)
+#define glue_par(a)                   equiv(glue_base + a)
+#define line_skip                     glue_par(line_skip_code)
+#define baseline_skip                 glue_par(baseline_skip_code)
+#define par_skip                      glue_par(par_skip_code)
+#define above_display_skip            glue_par(above_display_skip_code)
+#define below_display_skip            glue_par(below_display_skip_code)
+#define above_display_short_skip      glue_par(above_display_short_skip_code)
+#define below_display_short_skip      glue_par(below_display_short_skip_code)
+#define left_skip                     glue_par(left_skip_code)
+#define right_skip                    glue_par(right_skip_code)
+#define top_skip                      glue_par(top_skip_code)
+#define split_top_skip                glue_par(split_top_skip_code)
+#define tab_skip                      glue_par(tab_skip_code)
+#define space_skip                    glue_par(space_skip_code)
+#define xspace_skip                   glue_par(xspace_skip_code)
+#define par_fill_skip                 glue_par(par_fill_skip_code)
+#define thin_mu_skip                  glue_par(thin_mu_skip_code)
+#define med_mu_skip                   glue_par(med_mu_skip_code)
+#define thick_mu_skip                 glue_par(thick_mu_skip_code)
+/* sec 0230 */
+#define par_shape_loc                 local_base             // 1312
+#define output_routine_loc            (local_base + 1)       // 1313
+#define every_par_loc                 (local_base + 2)       // 1314
+#define every_math_loc                (local_base + 3)       // 1315
+#define every_display_loc             (local_base + 4)       // 1316
+#define every_hbox_loc                (local_base + 5)       // 1317
+#define every_vbox_loc                (local_base + 6)       // 1318
+#define every_job_loc                 (local_base + 7)       // 1319
+#define every_cr_loc                  (local_base + 8)       // 1320
+#define err_help_loc                  (local_base + 9)       // 1321
+#define toks_base                     (local_base + 10)      // 1322
+#define box_base                      (toks_base + 256)      // 1578
+#define cur_font_loc                  (box_base + 256)       // 1834
+#define math_font_base                (cur_font_loc + 1)     // 1835
+#define cat_code_base                 (math_font_base + 48)  // 1883
+#define lc_code_base                  (cat_code_base + 256)  // 2139
+#define uc_code_base                  (lc_code_base + 256)   // 2395
+#define sf_code_base                  (uc_code_base + 256)   // 2651
+#define math_code_base                (sf_code_base + 256)   // 2907
+#define int_base                      (math_code_base + 256) // 3163
+// #
+#define par_shape_ptr                 equiv(par_shape_loc)
+#define output_routine                equiv(output_routine_loc)
+#define every_par                     equiv(every_par_loc)
+#define every_math                    equiv(every_math_loc)
+#define every_display                 equiv(every_display_loc)
+#define every_hbox                    equiv(every_hbox_loc)
+#define every_vbox                    equiv(every_vbox_loc)
+#define every_job                     equiv(every_job_loc)
+#define every_cr                      equiv(every_cr_loc)
+#define err_help                      equiv(err_help_loc)
+#define toks(a)                       equiv(toks_base + a)
+#define box(a)                        equiv(box_base + a)
+#define cur_font                      equiv(cur_font_loc)
+#define fam_fnt(a)                    equiv(math_font_base + a)
+#define cat_code(a)                   equiv(cat_code_base + a)
+#define lc_code(a)                    equiv(lc_code_base + a)
+#define uc_code(a)                    equiv(uc_code_base + a)
+#define sf_code(a)                    equiv(sf_code_base + a)
+#define math_code(a)                  equiv(math_code_base + a)
+/* sec 0232 */
+#define null_font font_base
+#define var_code 070000
+/* sec 0236 */
+#define pretolerance_code             0  // 3163
+#define tolerance_code                1  // 3164
+#define line_penalty_code             2  // 3165
+#define hyphen_penalty_code           3  // 3166
+#define ex_hyphen_penalty_code        4  // 3167
+#define club_penalty_code             5  // 3168
+#define widow_penalty_code            6  // 3169
+#define display_widow_penalty_code    7  // 3170
+#define broken_penalty_code           8  // 3171
+#define bin_op_penalty_code           9  // 3172
+#define rel_penalty_code              10 // 3173
+#define pre_display_penalty_code      11 // 3174
+#define post_display_penalty_code     12 // 3175
+#define inter_line_penalty_code       13 // 3176
+#define double_hyphen_demerits_code   14 // 3177
+#define final_hyphen_demerits_code    15 // 3178
+#define adj_demerits_code             16 // 3179
+#define mag_code                      17 // 3180
+#define delimiter_factor_code         18 // 3181
+#define looseness_code                19 // 3182
+#define time_code                     20 // 3183
+#define day_code                      21 // 3184
+#define month_code                    22 // 3185
+#define year_code                     23 // 3186
+#define show_box_breadth_code         24 // 3187
+#define show_box_depth_code           25 // 3188
+#define hbadness_code                 26 // 3189
+#define vbadness_code                 27 // 3190
+#define pausing_code                  28 // 3191
+#define tracing_online_code           29 // 3192
+#define tracing_macros_code           30 // 3193
+#define tracing_stats_code            31 // 3194
+#define tracing_paragraphs_code       32 // 3195
+#define tracing_pages_code            33 // 3196
+#define tracing_output_code           34 // 3197
+#define tracing_lost_chars_code       35 // 3198
+#define tracing_commands_code         36 // 3199 
+#define tracing_restores_code         37 // 3200
+#define uc_hyph_code                  38 // 3201
+#define output_penalty_code           39 // 3202
+#define max_dead_cycles_code          40 // 3203
+#define hang_after_code               41 // 3204
+#define floating_penalty_code         42 // 3205
+#define global_defs_code              43 // 3206
+#define cur_fam_code                  44 // 3207
+#define escape_char_code              45 // 3208
+#define default_hyphen_char_code      46 // 3209
+#define default_skew_char_code        47 // 3210
+#define end_line_char_code            48 // 3211
+#define new_line_char_code            49 // 3212
+#define language_code                 50 // 3213
+#define left_hyphen_min_code          51 // 3214
+#define right_hyphen_min_code         52 // 3215
+#define holding_inserts_code          53 // 3216
+#define error_context_lines_code      54 // 3217
+#define int_pars                      55
+#define count_base                    (int_base + int_pars) // 3218
+#define del_code_base                 (count_base + 256)    // 3474
+#define dimen_base                    (del_code_base + 256) // 3730
+// #
+#define del_code(a)                   eqtb[del_code_base + a].cint
+#define count(a)                      eqtb[count_base + a].cint
+#define int_par(a)                    eqtb[int_base + a].cint
+#define pretolerance                  int_par(pretolerance_code)
+#define tolerance                     int_par(tolerance_code)
+#define line_penalty                  int_par(line_penalty_code)
+#define hyphen_penalty                int_par(hyphen_penalty_code)
+#define ex_hyphen_penalty             int_par(ex_hyphen_penalty_code)
+#define club_penalty                  int_par(club_penalty_code)
+#define widow_penalty                 int_par(widow_penalty_code)
+#define display_widow_penalty         int_par(display_widow_penalty_code)
+#define broken_penalty                int_par(broken_penalty_code)
+#define bin_op_penalty                int_par(bin_op_penalty_code)
+#define rel_penalty                   int_par(rel_penalty_code)
+#define pre_display_penalty           int_par(pre_display_penalty_code)
+#define post_display_penalty          int_par(post_display_penalty_code)
+#define inter_line_penalty            int_par(inter_line_penalty_code)
+#define double_hyphen_demerits        int_par(double_hyphen_demerits_code)
+#define final_hyphen_demerits         int_par(final_hyphen_demerits_code)
+#define adj_demerits                  int_par(adj_demerits_code)
+#define mag                           int_par(mag_code)
+#define delimiter_factor              int_par(delimiter_factor_code)
+#define looseness                     int_par(looseness_code)
+#define tex_time                      int_par(time_code)
+#define day                           int_par(day_code)
+#define month                         int_par(month_code)
+#define year                          int_par(year_code)
+#define show_box_breadth              int_par(show_box_breadth_code)
+#define show_box_depth                int_par(show_box_depth_code)
+#define hbadness                      int_par(hbadness_code)
+#define vbadness                      int_par(vbadness_code)
+#define pausing                       int_par(pausing_code)
+#define tracing_online                int_par(tracing_online_code)
+#define tracing_macros                int_par(tracing_macros_code)
+#define tracing_stats                 int_par(tracing_stats_code)
+#define tracing_paragraphs            int_par(tracing_paragraphs_code)
+#define tracing_pages                 int_par(tracing_pages_code)
+#define tracing_output                int_par(tracing_output_code)
+#define tracing_lost_chars            int_par(tracing_lost_chars_code)
+#define tracing_commands              int_par(tracing_commands_code)
+#define tracing_restores              int_par(tracing_restores_code)
+#define uc_hyph                       int_par(uc_hyph_code)
+#define output_penalty                int_par(output_penalty_code)
+#define max_dead_cycles               int_par(max_dead_cycles_code)
+#define hang_after                    int_par(hang_after_code)
+#define floating_penalty              int_par(floating_penalty_code)
+#define global_defs                   int_par(global_defs_code)
+#define cur_fam                       int_par(cur_fam_code)
+#define escape_char                   int_par(escape_char_code)
+#define default_hyphen_char           int_par(default_hyphen_char_code)
+#define default_skew_char             int_par(default_skew_char_code)
+#define end_line_char                 int_par(end_line_char_code)
+#define new_line_char                 int_par(new_line_char_code)
+#define language                      int_par(language_code)
+#define left_hyphen_min               int_par(left_hyphen_min_code)
+#define right_hyphen_min              int_par(right_hyphen_min_code)
+#define holding_inserts               int_par(holding_inserts_code)
+#define error_context_lines           int_par(error_context_lines_code)
+/* sec 0247 */
+#define par_indent_code               0  // 3730
+#define math_surround_code            1  // 3731
+#define line_skip_limit_code          2  // 3732
+#define hsize_code                    3  // 3733
+#define vsize_code                    4  // 3734
+#define max_depth_code                5  // 3735
+#define split_max_depth_code          6  // 3736
+#define box_max_depth_code            7  // 3737
+#define hfuzz_code                    8  // 3738
+#define vfuzz_code                    9  // 3739
+#define delimiter_shortfall_code      10 // 3740
+#define null_delimiter_space_code     11 // 3741
+#define script_space_code             12 // 3742
+#define pre_display_size_code         13 // 3743
+#define display_width_code            14 // 3744
+#define display_indent_code           15 // 3745
+#define overfull_rule_code            16 // 3746
+#define hang_indent_code              17 // 3747
+#define h_offset_code                 18 // 3748
+#define v_offset_code                 19 // 3749
+#define emergency_stretch_code        20 // 3750
+#define dimen_pars                    21
+#define scaled_base                   (dimen_base + dimen_pars) // 3751
+#define eqtb_size                     (scaled_base + 255) // 4006
+// #
+#define dimen(a)                      eqtb[scaled_base + a].cint
+#define dimen_par(a)                  eqtb[dimen_base + a].cint
+#define par_indent                    dimen_par(par_indent_code)
+#define math_surround                 dimen_par(math_surround_code)
+#define line_skip_limit               dimen_par(line_skip_limit_code)
+#define hsize                         dimen_par(hsize_code)
+#define vsize                         dimen_par(vsize_code)
+#define max_depth                     dimen_par(max_depth_code)
+#define split_max_depth               dimen_par(split_max_depth_code)
+#define box_max_depth                 dimen_par(box_max_depth_code)
+#define hfuzz                         dimen_par(hfuzz_code)
+#define vfuzz                         dimen_par(vfuzz_code)
+#define delimiter_shortfall           dimen_par(delimiter_shortfall_code)
+#define null_delimiter_space          dimen_par(null_delimiter_space_code)
+#define script_space                  dimen_par(script_space_code)
+#define pre_display_size              dimen_par(pre_display_size_code)
+#define display_width                 dimen_par(display_width_code)
+#define display_indent                dimen_par(display_indent_code)
+#define overfull_rule                 dimen_par(overfull_rule_code)
+#define hang_indent                   dimen_par(hang_indent_code)
+#define h_offset                      dimen_par(h_offset_code)
+#define v_offset                      dimen_par(v_offset_code)
+#define emergency_stretch             dimen_par(emergency_stretch_code)
+/* sec 0256 */
+#define text(a)         hash[a].v.RH
+#define next(a)         hash[a].v.LH
+#define hash_is_full    (hash_used == hash_base)
+#define font_id_text(a) text(font_id_base + a)
+/* sec 0268 */
+#define save_type(a)      save_stack[a].hh.b0
+#define save_level(a)     save_stack[a].hh.b1
+#define save_index(a)     save_stack[a].hh.v.RH
+#define restore_old_value 0
+#define restore_zero      1
+#define insert_token      2
+#define level_boundary    3
+/* sec 0269 */
+#define bottom_level      0
+#define simple_group      1
+#define hbox_group        2
+#define adjust_hbox_group 3
+#define vbox_group        4
+#define vtop_group        5
+#define align_group       6
+#define no_align_group    7
+#define output_group      8
+#define math_group        9
+#define disc_group        10
+#define insert_group      11
+#define vcenter_group     12
+#define math_choice_group 13
+#define semi_simple_group 14
+#define math_shift_group  15
+#define math_left_group   16
+#define max_group_code    16
+/* sec 0274 */
+#define saved(a) save_stack[save_ptr + (a)].cint
+/* sec 0289 */
+#define cs_token_flag     07777 // 4095
+#define left_brace_token  0400  // 256  = 2^8 * left_brace
+#define left_brace_limit  01000 // 512  = 2^8 * (left_brace + 1)
+#define right_brace_token 01000 // 512  = 2^8 * right_brace
+#define right_brace_limit 01400 // 768  = 2^8 * (right_brace + 1)
+#define math_shift_token  01400 // 768  = 2^8 * math_shift
+#define tab_token         02000 // 1024 = 2^8 * tab_mark
+#define out_param_token   02400 // 1280 = 2^8 * out_param
+#define space_token       05040 // 2592 = 2^8 * spacer + ' '
+#define letter_token      05400 // 2816 = 2^8 * letter
+#define other_token       06000 // 3072 = 2^8 * other_char
+#define match_token       06400 // 3328 = 2^8 * match
+#define end_match_token   07000 // 3584 = 2^8 * end_match
+/* sec 0303 */
+#define mid_line    1
+#define skip_blanks 2 + max_char_code // 17
+#define new_line    3 + max_char_code + max_char_code // 33
+/* sec 0305 */
+#define skipping  1
+#define defining  2
+#define matching  3
+#define aligning  4
+#define absorbing 5
+/* sec 0307 */
+#define token_list         0
+#define token_type         cur_input.index_field
+#define param_start        cur_input.limit_field
+#define parameter          0
+#define u_template         1
+#define v_template         2
+#define backed_up          3
+#define inserted           4
+#define macro              5
+#define output_text        6
+#define every_par_text     7
+#define every_math_text    8
+#define every_display_text 9
+#define every_hbox_text    10
+#define every_vbox_text    11
+#define every_job_text     12
+#define every_cr_text      13
+#define mark_text          14
+#define write_text         15
+/* sec 0323 */
+#define back_list(a) begin_token_list(a, backed_up)
+#define ins_list(a)  begin_token_list(a, inserted)
+/* sec 0344 */
+#define any_state_plus(a) mid_line + (a): case skip_blanks + (a): case new_line + (a)
+/* sec 0347 */
+#define add_delims_to(a) \
+  (a) + math_shift:      \
+  case (a) + tab_mark:   \
+  case (a) + mac_param:  \
+  case (a) + sub_mark:   \
+  case (a) + letter:     \
+  case (a) + other_char
+/* sec 0358 */
+#define no_expand_flag 257
+/* sec 0382 */
+#define top_mark_code         0
+#define first_mark_code       1
+#define bot_mark_code         2
+#define split_first_mark_code 3
+#define split_bot_mark_code   4
+#define top_mark              cur_mark[top_mark_code]
+#define first_mark            cur_mark[first_mark_code]
+#define bot_mark              cur_mark[bot_mark_code]
+#define split_first_mark      cur_mark[split_first_mark_code]
+#define split_bot_mark        cur_mark[split_bot_mark_code]
+/* sec 0400 */
+#define int_val   0
+#define dimen_val 1
+#define glue_val  2
+#define mu_val    3
+#define ident_val 4
+#define tok_val   5
+/* sec 0416 */
+#define input_line_no_code (glue_val + 1)
+#define badness_code       (glue_val + 2)
+/* sec 0421 */
+#define max_dimen 07777777777
+/* sec 0438 */
+#define octal_token             (other_token + '\'') // 3111
+#define hex_token               (other_token + '"' ) // 3106
+#define alpha_token             (other_token + '`' ) // 3168
+#define point_token             (other_token + '.' ) // 3118
+#define continental_point_token (other_token + ',' ) // 3116
+/* sec 0445 */
+#define zero_token    (other_token + '0')  // 3120
+#define A_token       (letter_token + 'A') // 2881
+#define other_A_token (other_token + 'A')  // 3137
+/* sec 0468 */
+#define number_code        0
+#define roman_numeral_code 1
+#define string_code        2
+#define meaning_code       3
+#define font_name_code     4
+#define job_name_code      5
+/* sec 0480 */
+#define closed    2
+#define just_open 1
+/* sec 0487 */
+#define if_char_code   0
+#define if_cat_code    1
+#define if_int_code    2
+#define if_dim_code    3
+#define if_odd_code    4
+#define if_vmode_code  5
+#define if_hmode_code  6
+#define if_mmode_code  7
+#define if_inner_code  8
+#define if_void_code   9
+#define if_hbox_code   10
+#define if_vbox_code   11
+#define ifx_code       12
+#define if_eof_code    13
+#define if_true_code   14
+#define if_false_code  15
+#define if_case_code   16
+/* sec 0489 */
+#define if_node_size     2
+#define if_line_field(a) mem[(a) + 1].cint
+#define if_code          1
+#define fi_code          2
+#define else_code        3
+#define or_code          4
+/* sec 0544 */
+#define no_tag   0
+#define lig_tag  1
+#define list_tag 2
+#define ext_tag  3
+/* sec 0545 */
+#define stop_flag    128
+#define kern_flag    128
+#define skip_byte(a) a.b0
+#define next_char(a) a.b1
+#define op_byte(a)   a.b2
+#define rem_byte(a)  a.b3
+/* sec 0546 */
+#define ext_top(a) a.b0
+#define ext_mid(a) a.b1
+#define ext_bot(a) a.b2
+#define ext_rep(a) a.b3
+/* sec 0547 */
+#define slant_code         1
+#define space_code         2
+#define space_stretch_code 3
+#define space_shrink_code  4
+#define x_height_code      5
+#define quad_code          6
+#define extra_space_code   7
+/* sec 0549 */
+#define non_char    256
+#define non_address 0
+/* sec 0554 */
+#define char_info(a, b)   font_info[char_base[a] + b].qqqq
+#define char_width(a, b)  font_info[width_base[a] + b.b0].cint
+#define char_exists(a)    (a.b0 > min_quarterword)
+#define char_italic(a, b) font_info[italic_base[a] + (b.b2) / 4].cint
+#define height_depth(a)   (a.b1)
+#define char_height(a, b) font_info[height_base[a] + (b) / 16].cint
+#define char_depth(a, b)  font_info[depth_base[a] + (b) % 16].cint
+#define char_tag(a)       (a.b2 % 4)
+/* sec 0557 */
+#define char_kern(a, b)        font_info[kern_base[a] + 256 * op_byte(b) + rem_byte(b)].cint
+#define kern_base_offset       (256 * (128 + min_quarterword))
+#define lig_kern_start(a, b)   lig_kern_base[a] + rem_byte(b)
+#define lig_kern_restart(a, b) lig_kern_base[a] + 256 * op_byte(b) + rem_byte(b) + 32768 - kern_base_offset
+/* sec 0558 */
+#define param(a, b)      font_info[a + param_base[b]].cint
+#define slant(f)         param(slant_code, f)
+#define space(f)         param(space_code, f)
+#define space_stretch(f) param(space_stretch_code, f)
+#define space_shrink(f)  param(space_shrink_code, f)
+#define x_height(f)      param(x_height_code, f)
+#define quad(f)          param(quad_code, f)
+#define extra_space(f)   param(extra_space_code, f)
+/* sec 0564 */
+/* sec 0585 */
+#define set1      128 // c[1]
+#define set2      129 // c[2]
+#define set3      130 // c[3]
+#define set4      131 // c[4]
+#define set_rule  132 // a[4] b[4]
+#define put1      133 // c[1]
+#define put2      134 // c[2]
+#define put3      135 // c[3]
+#define put4      136 // c[4]
+#define put_rule  137 // a[4] b[4]
+#define nop       138 // NULL
+#define bop       139 // c0[4] c1[4] ... c9[4] p[4]
+#define eop       140 // NULL
+//#define dvi_push 141
+//#define dvi_pop  142
+#define right1    143 // b[1]
+#define right2    144 // b[2]
+#define right3    145 // b[3]
+#define right4    146 // b[4]
+#define w0        147 //
+#define w1        148 // b[1]
+#define w2        149 // b[2]
+#define w3        150 // b[3]
+#define w4        151 // b[4]
+#define x0        152 //
+#define x1        153 // b[1]
+#define x2        154 // b[2]
+#define x3        155 // b[3]
+#define x4        156 // b[4]
+#define down1     157 // a[1]
+#define down2     158 // a[2]
+#define down3     159 // a[3]
+#define down4     160 // a[4]
+#define y0        161 //
+#define y1        162 // a[1]
+#define y2        163 // a[2]
+#define y3        164 // a[3]
+#define y4        165 // a[4]
+#define z0        166 //
+#define z1        167 // a[1]
+#define z2        168 // a[2]
+#define z3        169 // a[3]
+#define z4        170 // a[4]
+#define fnt_num_0 171 //
+#define fnt1      235 // k[1]
+#define fnt2      236 // k[2]
+#define fnt3      237 // k[3]
+#define fnt4      238 // k[4]
+#define xxx1      239 // k[1] x[k]
+#define xxx2      240 // k[2] x[k]
+#define xxx3      241 // k[3] x[k]
+#define xxx4      242 // k[4] x[k]
+#define fnt_def1  243 // k[1] c[4] s[4] d[4] a[1] l[1] n[a + l]
+#define fnt_def2  244 // k[2] c[4] s[4] d[4] a[1] l[1] n[a + l]
+#define fnt_def3  245 // k[3] c[4] s[4] d[4] a[1] l[1] n[a + l]
+#define fnt_def4  246 // k[4] c[4] s[4] d[4] a[1] l[1] n[a + l]
+#define pre       247 // i[1] num[4] den[4] mag[4] k[1] x[k]
+#define post      248 //
+#define post_post 249 //
+/* sec 0587 */
+#define id_byte 2
+/* sec 0605 */
+#define movement_node_size 3
+#define location(a) mem[a + 2].cint
+/* sec 0608 */
+#define y_here  1
+#define z_here  2
+#define yz_OK   3
+#define y_OK    4
+#define z_OK    5
+#define d_fixed 6
+/* sec 0611 */
+#define none_seen 0
+#define y_seen    6
+#define z_seen    12
+/* sec 0644 */
+#define exactly    0
+#define additional 1
+/* sec 0769 */
+#define u_part(a)     mem[(a) + height_offset].cint
+#define v_part(a)     mem[(a) + depth_offset].cint
+#define extra_info(a) info((a) + list_offset)
+/* sec 0681 */
+#define noad_size      4
+#define nucleus(a)     ((a) + 1)
+#define supscr(a)      ((a) + 2)
+#define subscr(a)      ((a) + 3)
+#define math_type      link
+#define fam            font
+#define math_char      1
+#define sub_box        2
+#define sub_mlist      3
+#define math_text_char 4
+/* sec 0682 */
+#define ord_noad   (unset_node + 3) // 16
+#define op_noad    (ord_noad + 1  ) // 17
+#define bin_noad   (ord_noad + 2  ) // 18
+#define rel_noad   (ord_noad + 3  ) // 19
+#define open_noad  (ord_noad + 4  ) // 20
+#define close_noad (ord_noad + 5  ) // 21
+#define punct_noad (ord_noad + 6  ) // 22
+#define inner_noad (ord_noad + 7  ) // 23
+#define limits    1
+#define no_limits 2
+/* sec 0683 */
+#define left_delimiter(a)  ((a) + 4)
+#define right_delimiter(a) ((a) + 5)
+#define radical_noad       (inner_noad + 1) // 24
+#define radical_noad_size  5
+#define fraction_noad      (radical_noad + 1) // 25
+#define fraction_noad_size 6
+#define small_fam(a)       mem[(a)].qqqq.b0
+#define small_char(a)      mem[(a)].qqqq.b1
+#define large_fam(a)       mem[(a)].qqqq.b2
+#define large_char(a)      mem[(a)].qqqq.b3
+#define thickness          width
+#define default_code       010000000000L
+#define numerator          supscr
+#define denominator        subscr
+/* sec 0687 */
+#define under_noad        (fraction_noad + 1) // 26
+#define over_noad         (under_noad + 1   ) // 27
+#define accent_noad       (over_noad + 1    ) // 28
+#define accent_noad_size  5
+#define accent_chr(a)     (a) + 4
+#define vcenter_noad      (accent_noad + 1  ) // 29
+#define left_noad         (vcenter_noad + 1 ) // 30
+#define right_noad        (left_noad + 1    ) // 31
+#define delimiter         nucleus
+#define script_allowed(a) ((type(a) >= ord_noad) && (type(a) < left_noad))
+/* sec 0688 */
+#define style_node          (unset_node + 1)
+#define style_node_size     3
+#define display_style       0
+#define text_style          2
+#define script_style        4
+#define script_script_style 6
+#define cramped             1
+/* sec 0689 */
+#define choice_node            (unset_node + 2)
+#define display_mlist(a)       info(a + 1)
+#define text_mlist(a)          link(a + 1)
+#define script_mlist(a)        info(a + 2)
+#define script_script_mlist(a) link(a + 2)
+/* sec 0699 */
+#define text_size          0
+#define script_size        16
+#define script_script_size 32
+/* sec 0700 */
+#define mathsy(a, b)        font_info[a + param_base[fam_fnt(2 + b)]].cint
+#define math_x_height(a)    mathsy(5, a)
+#define math_quad(a)        mathsy(6, a)
+#define num1(a)             mathsy(8, a)
+#define num2(a)             mathsy(9, a)
+#define num3(a)             mathsy(10, a)
+#define denom1(a)           mathsy(11, a)
+#define denom2(a)           mathsy(12, a)
+#define sup1(a)             mathsy(13, a)
+#define sup2(a)             mathsy(14, a)
+#define sup3(a)             mathsy(15, a)
+#define sub1(a)             mathsy(16, a)
+#define sub2(a)             mathsy(17, a)
+#define sup_drop(a)         mathsy(18, a)
+#define sub_drop(a)         mathsy(19, a)
+#define delim1(a)           mathsy(20, a)
+#define delim2(a)           mathsy(21, a)
+#define axis_height(a)      mathsy(22, a)
+#define total_mathsy_params 22
+/* sec 0701 */
+#define mathex(a)              font_info[(a) + param_base[fam_fnt(3 + cur_size)]].cint
+#define default_rule_thickness mathex(8)
+#define big_op_spacing1        mathex(9)
+#define big_op_spacing2        mathex(10)
+#define big_op_spacing3        mathex(11)
+#define big_op_spacing4        mathex(12)
+#define big_op_spacing5        mathex(13)
+#define total_mathex_params    13
+/* sec 0702 */
+#define cramped_style(a) (2 * ((a) / 2) + cramped)
+#define sub_style(a)     (2 * ((a) / 4) + script_style + cramped)
+#define sup_style(a)     (2 * ((a) / 4) + script_style + ((a) % 2))
+#define num_style(a)     ((a) + 2 - 2 * ((a) / 6))
+#define denom_style(a)   (2 * ((a) / 2) + cramped + 2 - 2 * ((a) / 6))
+/* sec 0725 */
+#define new_hlist(a) mem[nucleus(a)].cint
+/* sec 0770 */
+#define preamble              link(align_head)
+#define align_stack_node_size 5
+/* sec 0780 */
+#define span_code          256
+#define cr_code            257
+#define cr_cr_code         (cr_code + 1)
+#define end_template_token (cs_token_flag + frozen_end_template)
+/* sec 0797 */
+#define span_node_size 2
+/* sec 0817 */
+#define tight_fit      3
+#define loose_fit      1
+#define very_loose_fit 0
+#define decent_fit     2
+/* sec 0819 */
+#define active_node_size  3
+#define fitness           subtype
+#define break_node        rlink
+#define line_number       llink
+#define total_demerits(a) mem[a + 2].cint
+#define unhyphenated      0
+#define hyphenated        1
+#define last_active       active
+/* sec 0821 */
+#define passive_node_size 2
+#define cur_break         rlink
+#define prev_break        llink
+#define serial            info
+/* sec 0822 */
+#define delta_node_size 7
+#define delta_node      2
+/* sec 0823 */
+#define do_all_six(a) a(1); a(2); a(3); a(4); a(5); a(6)
+/* sec 0829 */
+#define copy_to_cur_active(a) cur_active_width[a] = active_width[a]
+/* sec 0832 */
+#define update_width(a) cur_active_width[a] = cur_active_width[a] + mem[r + (a)].cint
+/* sec 0833 */
+#define awful_bad 07777777777
+/* sec 0837 */
+#define set_break_width_to_background(a) break_width[a] = background[a]
+/* sec 0843 */
+#define convert_to_break_width(a)   mem[prev_r + (a)].cint = mem[prev_r + (a)].cint - cur_active_width[a] + break_width[a]
+#define store_break_width(a)        active_width[a] = break_width[a]
+#define new_delta_to_break_width(a) mem[q + (a)].cint = break_width[(a)] - cur_active_width[(a)]
+/* sec 0844 */
+#define new_delta_from_break_width(a) mem[q + (a)].cint = cur_active_width[(a)] - break_width[(a)]
+/* sec 0860 */
+#define combine_two_deltas(a) mem[prev_r + (a)].cint = mem[prev_r + (a)].cint + mem[r + (a)].cint
+#define downdate_width(a)     cur_active_width[(a)] = cur_active_width[(a)] - mem[prev_r + (a)].cint
+/* sec 0861 */
+#define update_active(a) active_width[(a)] = active_width[(a)] + mem[r + (a)].cint
+/* sec 0877 */
+#define next_break prev_break
+/* sec 0908 */
+#define append_charnode_to_t(a) \
+  {                             \
+    link(t) = get_avail();      \
+    t = link(t);                \
+    font(t) = hf;               \
+    character(t) = (a);         \
+  }
+#define set_cur_r()      \
+  {                      \
+    if (j < n)           \
+      cur_r = hu[j + 1]; \
+    else                 \
+      cur_r = bchar;     \
+                         \
+    if (odd(hyf[j]))     \
+      cur_rh = hchar;    \
+    else                 \
+      cur_rh = non_char; \
+  }
+/* sec 0910 */
+#define wrap_lig(a)                           \
+  if (ligature_present)                       \
+  {                                           \
+    p = new_ligature(hf, cur_l, link(cur_q)); \
+                                              \
+    if (lft_hit)                              \
+    {                                         \
+      subtype(p) = 2;                         \
+      lft_hit = false;                        \
+    }                                         \
+                                              \
+    if ((a))                                  \
+      if (lig_stack == 0)                     \
+      {                                       \
+        incr(subtype(p));                     \
+        rt_hit = false;                       \
+      }                                       \
+                                              \
+    link(cur_q) = p;                          \
+    t = p;                                    \
+    ligature_present = false;                 \
+  }
+#define pop_lig_stack()                       \
+  {                                           \
+    if (lig_ptr(lig_stack) != 0)              \
+    {                                         \
+      link(t) = lig_ptr(lig_stack);           \
+      t = link(t);                            \
+      incr(j);                                \
+    }                                         \
+                                              \
+    p = lig_stack;                            \
+    lig_stack = link(p);                      \
+    free_node(p, small_node_size);            \
+                                              \
+    if (lig_stack == 0)                       \
+    {                                         \
+      set_cur_r();                            \
+    }                                         \
+    else                                      \
+      cur_r = character(lig_stack);           \
+  }
+/* sec 0914 */
+#define advance_major_tail()       \
+  {                                \
+    major_tail = link(major_tail); \
+    incr(r_count);                 \
+  }
+/* sec 0970 */
+#define active_height      active_width
+#define cur_height         active_height[1]
+#define set_height_zero(a) active_width[(a)] = 0
+/* sec 0974 */
+#define deplorable 100000L
+/* sec 0980 */
+#define inserts_only 1
+#define box_there    2
+/* sec 0981 */
+#define page_ins_node_size 4
+#define inserting          0
+#define split_up           1
+#define broken_ptr(a)      link(a + 1)
+#define broken_ins(a)      info(a + 1)
+#define last_ins_ptr(a)    link(a + 2)
+#define best_ins_ptr(a)    info(a + 2)
+/* sec 0982 */
+#define page_goal   page_so_far[0]
+#define page_total  page_so_far[1]
+#define page_shrink page_so_far[6]
+#define page_depth  page_so_far[7]
+/* sec 0987 */
+#define set_page_so_far_zero(a) page_so_far[(a)] = 0
+/* sec 1034 */
+#define adjust_space_factor()   \
+{                               \
+  main_s = sf_code(cur_chr);    \
+  if (main_s == 1000)           \
+    space_factor = 1000;        \
+  else if (main_s < 1000)       \
+  {                             \
+    if (main_s > 0)             \
+      space_factor = main_s;    \
+  }                             \
+  else if (space_factor < 1000) \
+    space_factor = 1000;        \
+  else                          \
+    space_factor = main_s;      \
+}
+/* sec 1035 */
+/* -> false */
+#define wrapup(a)                                         \
+{                                                         \
+  if (cur_l < non_char)                                   \
+  {                                                       \
+    if (link(cur_q) != 0)                                 \
+      if (character(tail) == hyphen_char[main_f])         \
+        ins_disc = true;                                  \
+                                                          \
+    if (ligature_present)                                 \
+    {                                                     \
+      main_p = new_ligature(main_f, cur_l, link(cur_q));  \
+                                                          \
+      if (lft_hit)                                        \
+      {                                                   \
+        subtype(main_p) = 2;                              \
+        lft_hit = false;                                  \
+      }                                                   \
+                                                          \
+      if (a)                                              \
+        if (lig_stack == 0)                               \
+        {                                                 \
+          incr(subtype(main_p));                          \
+          rt_hit = false;                                 \
+        }                                                 \
+                                                          \
+      link(cur_q) = main_p;                               \
+      tail = main_p;                                      \
+      ligature_present = false;                           \
+    }                                                     \
+                                                          \
+    if (ins_disc)                                         \
+    {                                                     \
+      ins_disc = false;                                   \
+                                                          \
+      if (mode > 0)                                       \
+      {                                                   \
+        tail_append(new_disc());                          \
+      }                                                   \
+    }                                                     \
+  }                                                       \
+}
+/* sec 1045 */
+#define any_mode(a) vmode + a: case hmode + a: case mmode + a
+/* sec 1046 */
+#define non_math(a) vmode + a: case hmode + a
+/* sec 1058 */
+#define fil_code     0
+#define fill_code    1
+#define ss_code      2
+#define fil_neg_code 3
+#define skip_code    4
+#define mskip_code   5
+/* sec 1071 */
+#define box_flag      010000000000
+#define ship_out_flag (box_flag + 512)
+#define leader_flag   (box_flag + 513)
+#define box_code      0
+#define copy_code     1
+#define last_box_code 2
+#define vsplit_code   3
+#define vtop_code     4
+/* sec 1178 */
+#define above_code     0
+#define over_code      1
+#define atop_code      2
+#define delimited_code 3
+/* sec 1222 */
+#define char_def_code      0
+#define math_char_def_code 1
+#define count_def_code     2
+#define dimen_def_code     3
+#define skip_def_code      4
+#define mu_skip_def_code   5
+#define toks_def_code      6
+/* sec 1290 */
+#define show_code     0
+#define show_box_code 1
+#define show_the_code 2
+#define show_lists    3
+/* sec 1342 */
+#define write_node_size 2
+#define open_node_size  3
+#define open_node       0
+#define write_node      1
+#define close_node      2
+#define special_node    3
+#define language_node   4
+#define what_lang(s)    link(s+1)
+#define what_lhm(s)     type(s+1)
+#define what_rhm(s)     subtype(s+1)
+#define write_tokens(s) link(s+1)
+#define write_stream(s) info(s+1)
+#define open_name(s)    link(s+1)
+#define open_area(s)    info(s+2)
+#define open_ext(s)     link(s+2)
+/* sec 1344 */
+#define immediate_code    4
+#define set_language_code 5
+/* sec 1371 */
+#define end_write_token (cs_token_flag + end_write)
index aad1b69..75010a1 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301 USA.  */
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types
-#pragma warning(disable:4127) // conditional expression is constant
-
 #define EXTERN extern
 
 #include "texd.h"
index f5be7bd..6d52342 100644 (file)
@@ -1,10 +1,19 @@
+/* Copyright 2014 Clerk Ma
 
-#pragma warning(disable:4996)
-#pragma warning(disable:4131) // old style declarator
-#pragma warning(disable:4135) // conversion between different integral types 
-#pragma warning(disable:4127) // conditional expression is constant
+   This program 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.
 
-#include <time.h>
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.  */
 
 #define EXTERN extern
 
index 8141103..a81bea3 100644 (file)
@@ -43,8 +43,6 @@
 #endif
 
 
-/* following may be found in local.c --- used for key replacement */
-
 extern char * replacement[];    /* pointers to replacement strings */
 
 #ifdef FUNNY_CORE_DUMP
@@ -55,7 +53,7 @@ extern char * replacement[];    /* pointers to replacement strings */
 
 /* What we were invoked as and with.  */
 static char *program_name = NULL;
-int gargc;      /* number of args - set to zero after initialization */
+int    gargc;   /* number of args - set to zero after initialization */
 char **gargv;   /* char *gargv[] -- bkph ? */
 
 /* The entry point: set up for reading the command line, which will
index 2a60a95..1e4c5e7 100644 (file)
 
 #define WORDS_BIGENDIAN 0
 
+//#pragma warning(disable:4032)
 #pragma warning(disable:4996) //
 #pragma warning(disable:4701) //
-#pragma warning(disable:4100)
-#pragma warning(disable:4244)
+//#pragma warning(disable:4100)
+//#pragma warning(disable:4244)
 #pragma warning(disable:4131) // old style declarator
 #pragma warning(disable:4135) // conversion between different integral types
 #pragma warning(disable:4127) // conditional expression is constant
@@ -47,6 +48,7 @@
 #include <setjmp.h>
 #include <time.h>
 #include <signal.h>
+#include <conio.h>
 #include "hpdf.h"
 #include "avl.h"
 
@@ -97,11 +99,12 @@ typedef enum
 #define a_open_out(f)   open_output (&(f), FOPEN_W_MODE)
 #define a_close(f)     check_fclose (f)
 
+#define MAXLINE 256         // for log_line buffer
+
 extern bool trace_flag;
 extern bool open_trace_flag;
 
 extern integer zround (double);
-extern bool test_eof (FILE * file);
 extern bool eoln (FILE * file);
 extern bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode);
 extern bool open_output (FILE **f, char *fopen_mode);