[comp.unix.xenix] TeX for Xenix and SysV/3B2

samperi@mancol.UUCP (Dominick Samperi) (05/12/88)

In order to compile Pat Monardo's Common TeX 2.9 (written in C) under
SCO's Xenix, or under SysV/Release2+ on a 3b2, a few changes had to be
made. In the case of the 3b2, a long switch statement in eval.c had to
be broken up (into two pieces) in order to avoid a "switch table overflow"
internal compiler error. In the case of SCO Xenix, many integer constants
that could not be stored in a 16 bit int had to be converted to longs,
and a few other similar changes had to be made to insure that expressions
involving ints and longs were evaluated properly. (There may be other
inconsistent uses of int/long values that I missed - I did not use lint.)

Patches for the 3b2 (3b2.pat) and for SCO Xenix (xenix.pat) are contained
in the shell archive below. (Use Larry Wall's patch program to apply them.)
Apply the patch file to the distribution source. 3b2 users should compile
with -DBIG, and SCO users should use -M2h -LARGE (but note that the
file boxlists.c will not compile under SCO with optimization on). INITEX
is made by including -DINIT, and VIRTEX is made by leaving it out. Make
the format files (plain.fmt and lplain.fmt, for example) by using INITEX
(type 'initex plain', or 'initex lplain', then \dump when you get a single
'*' prompt), and run tex with a particular format file by using
virtex (type 'virtex &plain file', or 'virtex &lplain file', or use a
shell script, with the & escaped). Also, if you aren't sure what the
effect of the makefile variable VPATH is, then comment its definition
out, to avoid possible confusion.

INITEX compiled under MS-DOS, after a little hacking, but the resulting
executable was about 950K, much too large to run.

Comments, suggestions, etc. on the items below would be greatly
appreciated.

	1. It appears that "Common TeX" and "CTeX" are different
programs (judging from posted comments about CTeX that are not
true for the "Common TeX" source that I have - for example, there is
no "MS-DOS directory"). What is the difference between these two
programs, and are there other versions of TeX in C?

	2. Where can one find bibtex, the bibliography program that is
discussed in LaTeX, by Leslie Lamport?

	3. Where can one find TeX device drivers?

Thanks! 

				Dominick Samperi
				manhat!samperi@nyu.edu
				samperi@acf8.nyu.edu

#!/bin/sh
# to extract, remove the header and type "sh filename"
if `test ! -s ./3b2.pat`
then
echo "writing ./3b2.pat"
cat > ./3b2.pat << '\Rogue\Monster\'
*** ../DIST/eval.c	Wed May 11 20:56:57 1988
--- eval.c	Thu May  5 19:24:30 1988
***************
*** 60,65
      hword   r;
      int     s;
      int     t;
      bool    ligature_present;
  
  

--- 60,66 -----
      hword   r;
      int     s;
      int     t;
+     int	    sw_val;
      bool    ligature_present;
  
  
***************
*** 81,87
      if (tracing_commands > 0)
          show_cur_cmd_chr();
  
!     switch (abs(mode) + cur_cmd)
      {
      hmode(LETTER):
      hmode(OTHER_CHAR):

--- 82,89 -----
      if (tracing_commands > 0)
          show_cur_cmd_chr();
  
!     sw_val = abs(mode) + cur_cmd ;
!     switch (sw_val)
      {
      hmode(LETTER):
      hmode(OTHER_CHAR):
***************
*** 280,286
      any_mode(REMOVE_ITEM):
          delete_last();
          break;
!     
      vmode(UN_VBOX):
      hmode(UN_HBOX):
      mmode(UN_HBOX):

--- 282,296 -----
      any_mode(REMOVE_ITEM):
          delete_last();
          break;
!    
!     default:
! 	goto more_switch ;
!     }
!     goto end_switch ;
! 
! more_switch:
!     switch(sw_val)
!     { 
      vmode(UN_VBOX):
      hmode(UN_HBOX):
      mmode(UN_HBOX):
***************
*** 506,511
          do_extension();
          break;
      }
      goto big_switch;
  
  #define make_lig_disc() \

--- 516,522 -----
          do_extension();
          break;
      }
+ end_switch:
      goto big_switch;
  
  #define make_lig_disc() \
\Rogue\Monster\
else
  echo "will not over write ./3b2.pat"
fi
if `test ! -s ./xenix.pat`
then
echo "writing ./xenix.pat"
cat > ./xenix.pat << '\Rogue\Monster\'
*** ../DIST/align.c	Sun Mar 13 21:53:17 1988
--- align.c	Sat May  7 17:05:34 1988
***************
*** 71,77
      
      save_cs_ptr = cur_cs;
      push_alignment();
!     align_state = -1000000;
      if (mode == MMODE && (tail != head || incompleat_noad != NULL)) {
          print_err("Improper ");
          print_esc("halign");

--- 71,77 -----
      
      save_cs_ptr = cur_cs;
      push_alignment();
!     align_state = -1000000L;
      if (mode == MMODE && (tail != head || incompleat_noad != NULL)) {
          print_err("Improper ");
          print_esc("halign");
***************
*** 94,100
      cur_loop = NULL;
      scanner_status = ALIGNING;
      warning_index = save_cs_ptr;
!     align_state = -1000000;
      loop {
          link(cur_align) = new_param_glue(TAB_SKIP_CODE);
          cur_align = link(cur_align);

--- 94,100 -----
      cur_loop = NULL;
      scanner_status = ALIGNING;
      warning_index = save_cs_ptr;
!     align_state = -1000000L;
      loop {
          link(cur_align) = new_param_glue(TAB_SKIP_CODE);
          cur_align = link(cur_align);
***************
*** 108,114
                  break;
              if (cur_cmd <= CAR_RET &&
                  cur_cmd >= TAB_MARK &&
!                 align_state == -1000000) {
                  if (p == align_tokens &&
                      cur_loop == NULL &&
                      cur_cmd == TAB_MARK) {

--- 108,114 -----
                  break;
              if (cur_cmd <= CAR_RET &&
                  cur_cmd >= TAB_MARK &&
!                 align_state == -1000000L) {
                  if (p == align_tokens &&
                      cur_loop == NULL &&
                      cur_cmd == TAB_MARK) {
***************
*** 136,142
              get_preamble_token();
              if (cur_cmd <= CAR_RET &&
                  cur_cmd >= TAB_MARK &&
!                 align_state == -1000000)
                  break;
              if (cur_cmd == MAC_PARAM) {
                  print_err("Only one # is allowed per tab");

--- 136,142 -----
              get_preamble_token();
              if (cur_cmd <= CAR_RET &&
                  cur_cmd >= TAB_MARK &&
!                 align_state == -1000000L)
                  break;
              if (cur_cmd == MAC_PARAM) {
                  print_err("Only one # is allowed per tab");
***************
*** 184,190
  align_peek ()
  {
  restart:
!     align_state = 1000000;
      get_nbx_token();
      if (cur_cmd == NO_ALIGN) {
          scan_left_brace();

--- 184,190 -----
  align_peek ()
  {
  restart:
!     align_state = 1000000L;
      get_nbx_token();
      if (cur_cmd == NO_ALIGN) {
          scan_left_brace();
***************
*** 344,350
              return TRUE;
          init_span(p);
      }
!     align_state = 1000000;
      get_nbx_token();
      cur_align = p;
      init_col();

--- 344,350 -----
              return TRUE;
          init_span(p);
      }
!     align_state = 1000000L;
      get_nbx_token();
      cur_align = p;
      init_col();
*** ../DIST/arith.c	Sun Mar 13 21:53:19 1988
--- arith.c	Sat May  7 17:05:34 1988
***************
*** 52,58
      delta = 10;
      do {
          if (delta > UNITY)
!             s += 0100000 - (delta / 2);
          print_char('0' + s / UNITY);
          s = 10 * (s % UNITY);
          delta *= 10;

--- 52,58 -----
      delta = 10;
      do {
          if (delta > UNITY)
!             s += 0100000L - (delta / 2);
          print_char('0' + s / UNITY);
          s = 10 * (s % UNITY);
          delta *= 10;
***************
*** 71,78
      }
      if (n == 0)
          return y;
!     else if (x <= (07777777777 - y) / n &&
!             -x <= (07777777777 + y) / n)
          return (n * x + y);
      else {
          arith_error = TRUE;

--- 71,78 -----
      }
      if (n == 0)
          return y;
!     else if (x <= (07777777777L - y) / n &&
!             -x <= (07777777777L + y) / n)
          return (n * x + y);
      else {
          arith_error = TRUE;
***************
*** 128,137
          negate(x);
          positive = FALSE;
      }
!     t = (x % 0100000) * n;
!     u = (x / 0100000) * n + (t / 0100000);
!     v = (u % d) * 0100000 + (t % 0100000);
!     if (u / d >= 0100000)
          arith_error = TRUE;
      else u = 0100000 * (u / d) + (v / d);
      if (positive) {

--- 128,137 -----
          negate(x);
          positive = FALSE;
      }
!     t = (x % 0100000L) * n;
!     u = (x / 0100000L) * n + (t / 0100000L);
!     v = (u % d) * 0100000L + (t % 0100000L);
!     if (u / d >= 0100000L)
          arith_error = TRUE;
      else u = 0100000L * (u / d) + (v / d);
      if (positive) {
***************
*** 133,139
      v = (u % d) * 0100000 + (t % 0100000);
      if (u / d >= 0100000)
          arith_error = TRUE;
!     else u = 0100000 * (u / d) + (v / d);
      if (positive) {
          remainder = v % d;
          return u;

--- 133,139 -----
      v = (u % d) * 0100000L + (t % 0100000L);
      if (u / d >= 0100000L)
          arith_error = TRUE;
!     else u = 0100000L * (u / d) + (v / d);
      if (positive) {
          remainder = v % d;
          return u;
***************
*** 155,161
      else if (s <= 0)
          return INF_BAD;
      else {
!         if (t <= 7230584)
              r = (t * 297) / s;
          else if (s >= 1663497)
              r = t / (s / 297);

--- 155,161 -----
      else if (s <= 0)
          return INF_BAD;
      else {
!         if (t <= 7230584L)
              r = (t * 297) / s;
          else if (s >= 1663497L)
              r = t / (s / 297);
***************
*** 157,163
      else {
          if (t <= 7230584)
              r = (t * 297) / s;
!         else if (s >= 1663497)
              r = t / (s / 297);
          else r = t;
          if (r > 1290)

--- 157,163 -----
      else {
          if (t <= 7230584L)
              r = (t * 297) / s;
!         else if (s >= 1663497L)
              r = t / (s / 297);
          else r = t;
          if (r > 1290)
***************
*** 162,167
          else r = t;
          if (r > 1290)
              return INF_BAD;
!         else return ((r * r * r + 0400000) / 01000000);
      }
  }

--- 162,167 -----
          else r = t;
          if (r > 1290)
              return INF_BAD;
!         else return ((r * r * r + 0400000L) / 01000000L);
      }
  }
*** ../DIST/def.c	Sun Mar 13 21:53:31 1988
--- def.c	Sat May  7 17:05:37 1988
***************
*** 282,288
          if (cur_chr == CAT_CODE_BASE)
              n = MAX_CHAR_CODE;
          else if (cur_chr == MATH_CODE_BASE)
!             n = 0100000;
          else if (cur_chr == SF_CODE_BASE)
              n = 077777;
          else if (cur_chr == DEL_CODE_BASE)

--- 282,288 -----
          if (cur_chr == CAT_CODE_BASE)
              n = MAX_CHAR_CODE;
          else if (cur_chr == MATH_CODE_BASE)
!             n = 0100000L;
          else if (cur_chr == SF_CODE_BASE)
              n = 077777L;
          else if (cur_chr == DEL_CODE_BASE)
***************
*** 284,290
          else if (cur_chr == MATH_CODE_BASE)
              n = 0100000;
          else if (cur_chr == SF_CODE_BASE)
!             n = 077777;
          else if (cur_chr == DEL_CODE_BASE)
              n = 077777777;
          else n = 127;

--- 284,290 -----
          else if (cur_chr == MATH_CODE_BASE)
              n = 0100000L;
          else if (cur_chr == SF_CODE_BASE)
!             n = 077777L;
          else if (cur_chr == DEL_CODE_BASE)
              n = 077777777L;
          else n = 127;
***************
*** 286,292
          else if (cur_chr == SF_CODE_BASE)
              n = 077777;
          else if (cur_chr == DEL_CODE_BASE)
!             n = 077777777;
          else n = 127;
          p = cur_chr;
          scan_seven_bit_int();

--- 286,292 -----
          else if (cur_chr == SF_CODE_BASE)
              n = 077777L;
          else if (cur_chr == DEL_CODE_BASE)
!             n = 077777777L;
          else n = 127;
          p = cur_chr;
          scan_seven_bit_int();
***************
*** 675,681
      if (scan_keyword("at")) {
          scan_normal_dimen();
          s = cur_val;
!         if (s <= 0 || s >= 01000000000) {
              print_err("Improper `at' size (");
              print_scaled(s);
              print("pt), replaced by 10pt");

--- 675,681 -----
      if (scan_keyword("at")) {
          scan_normal_dimen();
          s = cur_val;
!         if (s <= 0 || s >= 01000000000L) {
              print_err("Improper `at' size (");
              print_scaled(s);
              print("pt), replaced by 10pt");
***************
*** 686,692
      } else if (scan_keyword("scaled")) {
          scan_int();
          s = -cur_val;
!         if (cur_val <= 0 || cur_val > 32768) {
              print_err("Illegal magnification has been changed to 1000");
              help_font_magnification();
              int_error(cur_val);

--- 686,692 -----
      } else if (scan_keyword("scaled")) {
          scan_int();
          s = -cur_val;
!         if (cur_val <= 0 || cur_val > 32768L) {
              print_err("Illegal magnification has been changed to 1000");
              help_font_magnification();
              int_error(cur_val);
***************
*** 690,696
              print_err("Illegal magnification has been changed to 1000");
              help_font_magnification();
              int_error(cur_val);
!             s = -1000;
          }
      } else {
          s = -1000;

--- 690,696 -----
              print_err("Illegal magnification has been changed to 1000");
              help_font_magnification();
              int_error(cur_val);
!             s = -1000L;
          }
      } else {
          s = -1000L;
***************
*** 693,699
              s = -1000;
          }
      } else {
!         s = -1000;
      }
      name_in_progress = FALSE;
      for (f = FONT_BASE + 1; f <= font_ptr; f++) {

--- 693,699 -----
              s = -1000L;
          }
      } else {
!         s = -1000L;
      }
      name_in_progress = FALSE;
      for (f = FONT_BASE + 1; f <= font_ptr; f++) {
***************
*** 726,732
          int_error(mag_set);
          geq_word_define((ptr) INT_BASE + MAG_CODE, mag_set);
      }
!     if (mag <= 0 || mag > 32768) {
          print_err("Illegal magnification has been changed to 1000");
          help_ill_mag();
          int_error(mag);

--- 726,732 -----
          int_error(mag_set);
          geq_word_define((ptr) INT_BASE + MAG_CODE, mag_set);
      }
!     if (mag <= 0 || mag > 32768L) {
          print_err("Illegal magnification has been changed to 1000");
          help_ill_mag();
          int_error(mag);
*** ../DIST/dvi.c	Sun Mar 13 21:53:34 1988
--- dvi.c	Sat May  7 17:05:38 1988
***************
*** 73,79
      val     x;
  {
      if (x >= 0) {
!         dvi_out(x / 0100000000);
      } else {
          x += 010000000000;
          x += 010000000000;

--- 73,79 -----
      val     x;
  {
      if (x >= 0) {
!         dvi_out(x / 0100000000L);
      } else {
          x += 010000000000L;
          x += 010000000000L;
***************
*** 75,83
      if (x >= 0) {
          dvi_out(x / 0100000000);
      } else {
!         x += 010000000000;
!         x += 010000000000;
!         dvi_out(x / 0100000000 + 128);
      }
      x %= 01000000000;
      dvi_out(x / 0200000);

--- 75,83 -----
      if (x >= 0) {
          dvi_out(x / 0100000000L);
      } else {
!         x += 010000000000L;
!         x += 010000000000L;
!         dvi_out(x / 0100000000L + 128);
      }
      x %= 01000000000L;
      dvi_out(x / 0200000L);
***************
*** 79,87
          x += 010000000000;
          dvi_out(x / 0100000000 + 128);
      }
!     x %= 01000000000;
!     dvi_out(x / 0200000);
!     x %= 0200000;
      dvi_out(x / 0400);
      dvi_out(x % 0400);
  }

--- 79,87 -----
          x += 010000000000L;
          dvi_out(x / 0100000000L + 128);
      }
!     x %= 01000000000L;
!     dvi_out(x / 0200000L);
!     x %= 0200000L;
      dvi_out(x / 0400);
      dvi_out(x % 0400);
  }
***************
*** 211,217
  
  not_found:
      info(q) = YZ_OK;
!     if (abs(w) >= 040000000) {
          dvi_out(o + 3);
          dvi_four(w);
          return;

--- 211,217 -----
  
  not_found:
      info(q) = YZ_OK;
!     if (abs(w) >= 040000000L) {
          dvi_out(o + 3);
          dvi_four(w);
          return;
***************
*** 216,222
          dvi_four(w);
          return;
      }
!     if (abs(w) >= 0100000) {
          dvi_out(o + 2);
          if (w < 0)
              w += 0100000000;

--- 216,222 -----
          dvi_four(w);
          return;
      }
!     if (abs(w) >= 0100000L) {
          dvi_out(o + 2);
          if (w < 0)
              w += 0100000000L;
***************
*** 219,228
      if (abs(w) >= 0100000) {
          dvi_out(o + 2);
          if (w < 0)
!             w += 0100000000;
!         dvi_out(w / 0200000);
!         w %= 0200000;
!         goto two;
      }
      if (abs(w) >= 0200) {
          dvi_out(o + 1);

--- 219,228 -----
      if (abs(w) >= 0100000L) {
          dvi_out(o + 2);
          if (w < 0)
!             w += 0100000000L;
!         dvi_out(w / 0200000L);
!         w %= 0200000L;
!         goto two;
      }
      if (abs(w) >= 0200) {
          dvi_out(o + 1);
***************
*** 227,233
      if (abs(w) >= 0200) {
          dvi_out(o + 1);
          if (w < 0)
!             w += 0200000;
          goto two;
      }
      dvi_out(o);

--- 227,233 -----
      if (abs(w) >= 0200) {
          dvi_out(o + 1);
          if (w < 0)
!             w += 0200000L;
          goto two;
      }
      dvi_out(o);
***************
*** 774,781
  
      dvi_out(PRE);
      dvi_out(ID_BYTE); 
!     dvi_four(25400000);
!     dvi_four(473628672);
      prepare_mag();
      dvi_four(mag); 
      old_setting = selector;

--- 774,781 -----
  
      dvi_out(PRE);
      dvi_out(ID_BYTE); 
!     dvi_four(25400000L);
!     dvi_four(473628672L);
      prepare_mag();
      dvi_four(mag); 
      old_setting = selector;
***************
*** 816,823
      dvi_out(POST);
      dvi_four(last_bop);
      last_bop = dvi_offset + dvi_ptr - 5;
!     dvi_four(25400000);
!     dvi_four(473628672);
      prepare_mag();
      dvi_four(mag);
      dvi_four(max_v);

--- 816,823 -----
      dvi_out(POST);
      dvi_four(last_bop);
      last_bop = dvi_offset + dvi_ptr - 5;
!     dvi_four(25400000L);
!     dvi_four(473628672L);
      prepare_mag();
      dvi_four(mag);
      dvi_four(max_v);
*** ../DIST/error.c	Sun Mar 13 21:53:39 1988
--- error.c	Sat May  7 17:05:39 1988
***************
*** 91,97
                  s2 = cur_cmd;
                  s3 = cur_chr;
                  s4 = align_state;
!                 align_state = 1000000;
                  OK_to_interrupt = FALSE;
                  if (last > first + 1 &&
                      buffer[first + 1] >= '0' &&

--- 91,97 -----
                  s2 = cur_cmd;
                  s3 = cur_chr;
                  s4 = align_state;
!                 align_state = 1000000L;
                  OK_to_interrupt = FALSE;
                  if (last > first + 1 &&
                      buffer[first + 1] >= '0' &&
*** ../DIST/eval.c	Sun Mar 13 21:53:41 1988
--- eval.c	Sat May  7 17:05:40 1988
***************
*** 378,384
  
      mmode(DELIM_NUM):
          scan_twenty_seven_bit_int();
!         set_math_char((hword) (cur_val / 010000));
          break;
      
      mmode(MATH_COMP):

--- 378,384 -----
  
      mmode(DELIM_NUM):
          scan_twenty_seven_bit_int();
!         set_math_char((hword) (cur_val / 010000L));
          break;
      
      mmode(MATH_COMP):
***************
*** 689,695
          tail_append(new_null_box());
          width(tail) = hsize;
          tail_append(new_glue(fill_glue));
!         tail_append(new_penalty(-010000000000));
          build_page();
      }
      return FALSE;

--- 689,695 -----
          tail_append(new_null_box());
          width(tail) = hsize;
          tail_append(new_glue(fill_glue));
!         tail_append(new_penalty(-010000000000L));
          build_page();
      }
      return FALSE;
*** ../DIST/heap.c	Sun Mar 13 21:53:51 1988
--- heap.c	Sat May  7 17:05:42 1988
***************
*** 90,96
          node_size(p) = q - p;
          p = rlink(p);
      } while (p != rover);
!     if (s == 010000000000)
          return MAX_HALFWORD;
      if (lo_mem_max + 2 < hi_mem_min && 
          lo_mem_max + 2 <= MEM_BOT + MAX_HALFWORD) {

--- 90,96 -----
          node_size(p) = q - p;
          p = rlink(p);
      } while (p != rover);
!     if (s == 010000000000L)
          return MAX_HALFWORD;
      if (lo_mem_max + 2 < hi_mem_min && 
          lo_mem_max + 2 <= MEM_BOT + MAX_HALFWORD) {
***************
*** 204,210
      ptr     old_rover;
  
  #ifdef INIT
!     get_node(010000000000);
      p = rlink(rover);
      rlink(rover) = MAX_HALFWORD;
      old_rover = rover;

--- 204,210 -----
      ptr     old_rover;
  
  #ifdef INIT
!     get_node(010000000000L);
      p = rlink(rover);
      rlink(rover) = MAX_HALFWORD;
      old_rover = rover;
*** ../DIST/mathlists.c	Sun Mar 13 21:53:59 1988
--- mathlists.c	Sat May  7 17:05:45 1988
***************
*** 174,180
  scan_math (p)
      ptr     p;
  {
!     int     c;
  
  restart:
      get_nbrx_token();

--- 174,180 -----
  scan_math (p)
      ptr     p;
  {
!     unsigned int     c;
  
  restart:
      get_nbrx_token();
***************
*** 238,244
  }
  
  set_math_char (c)
!     int     c;
  {
      ptr     p;
  

--- 238,244 -----
  }
  
  set_math_char (c)
!     unsigned int     c;
  {
      ptr     p;
  
*** ../DIST/page.c	Sun Mar 13 21:54:07 1988
--- page.c	Sat May  7 17:05:48 1988
***************
*** 227,233
                      c = b + pi + insert_penalties;
                  else c = DEPLORABLE;
              } else c = b;
!             if (insert_penalties >= 10000) c = AWFUL_BAD;
              if (tracing_pages > 0)
                  show_page_stats(b, pi, c);
              if (c <= least_page_cost) {

--- 227,233 -----
                      c = b + pi + insert_penalties;
                  else c = DEPLORABLE;
              } else c = b;
!             if (insert_penalties >= 10000L) c = AWFUL_BAD;
              if (tracing_pages > 0)
                  show_page_stats(b, pi, c);
              if (c <= least_page_cost) {
*** ../DIST/par.c	Sun Mar 13 21:54:08 1988
--- par.c	Sat May  7 17:05:49 1988
***************
*** 504,510
                  b = 0;
                  fit_class = DECENT_FIT;
              } else {
!                 if (shortfall > 7230584 && cur_active_width[2] < 1663497) {
                      b = INF_BAD;
                      fit_class = VERY_LOOSE_FIT;
                      goto done;

--- 504,510 -----
                  b = 0;
                  fit_class = DECENT_FIT;
              } else {
!                 if (shortfall > 7230584L && cur_active_width[2] < 1663497L) {
                      b = INF_BAD;
                      fit_class = VERY_LOOSE_FIT;
                      goto done;
*** ../DIST/print.c	Sun Mar 13 21:54:09 1988
--- print.c	Sat May  7 17:05:50 1988
***************
*** 229,235
      k = 0;
      if (n < 0)  {
          print_char('-');
!         if (n > -100000000) {
              negate(n);
          } else {
              m = -1 - n;

--- 229,235 -----
      k = 0;
      if (n < 0)  {
          print_char('-');
!         if (n > -100000000L) {
              negate(n);
          } else {
              m = -1 - n;
*** ../DIST/scan.c	Sun Mar 13 21:54:14 1988
--- scan.c	Sat May  7 17:05:51 1988
***************
*** 376,382
  scan_fifteen_bit_int ()
  {
      scan_int();
!     if (cur_val < 0 || cur_val > 077777) {
          print_err("Bad math code");
          help_mathchar();
          int_error(cur_val);

--- 376,382 -----
  scan_fifteen_bit_int ()
  {
      scan_int();
!     if (cur_val < 0 || cur_val > 077777L) {
          print_err("Bad math code");
          help_mathchar();
          int_error(cur_val);
***************
*** 387,393
  scan_twenty_seven_bit_int ()
  {
      scan_int();
!     if (cur_val < 0 || cur_val> 0777777777) {
          print_err("Bad delimiter code");
          help_del();
          int_error(cur_val);

--- 387,393 -----
  scan_twenty_seven_bit_int ()
  {
      scan_int();
!     if (cur_val < 0 || cur_val> 0777777777L) {
          print_err("Bad delimiter code");
          help_del();
          int_error(cur_val);
***************
*** 437,443
          scan_something_internal(INT_VAL, FALSE);
      } else {
          radix = 10;
!         m = 214748364;
          if (cur_tok == OCTAL_TOKEN) {
              radix = 8;
              m = 02000000000;

--- 437,443 -----
          scan_something_internal(INT_VAL, FALSE);
      } else {
          radix = 10;
!         m = 214748364L;
          if (cur_tok == OCTAL_TOKEN) {
              radix = 8;
              m = 02000000000L;
***************
*** 440,446
          m = 214748364;
          if (cur_tok == OCTAL_TOKEN) {
              radix = 8;
!             m = 02000000000;
              get_x_token();
          } else if (cur_tok == HEX_TOKEN) {
              radix = 16;

--- 440,446 -----
          m = 214748364L;
          if (cur_tok == OCTAL_TOKEN) {
              radix = 8;
!             m = 02000000000L;
              get_x_token();
          } else if (cur_tok == HEX_TOKEN) {
              radix = 16;
***************
*** 444,450
              get_x_token();
          } else if (cur_tok == HEX_TOKEN) {
              radix = 16;
!             m = 010000000000;
              get_x_token();
          }
          vacuous = TRUE;

--- 444,450 -----
              get_x_token();
          } else if (cur_tok == HEX_TOKEN) {
              radix = 16;
!             m = 010000000000L;
              get_x_token();
          }
          vacuous = TRUE;
***************
*** 618,626
          prepare_mag();
          if (mag != 1000) {
              cur_val = xn_over_d(cur_val, 1000L, mag);
!             f = (1000 * f + 0200000 * remainder) / mag;
!             cur_val += f / 0200000;
!             f %= 0200000;
          }
      }
      if (scan_keyword("pt"))

--- 618,626 -----
          prepare_mag();
          if (mag != 1000) {
              cur_val = xn_over_d(cur_val, 1000L, mag);
!             f = (1000 * f + 0200000L * remainder) / mag;
!             cur_val += f / 0200000L;
!             f %= 0200000L;
          }
      }
      if (scan_keyword("pt"))
***************
*** 641,649
          goto attach_fraction;
      }
      cur_val = xn_over_d(cur_val, num, denom);
!     f = (num * f + 0200000 * remainder) / denom;
!     cur_val += f / 0200000;
!     f %= 0200000;
  
  attach_fraction:
      if (cur_val >= 0400000)

--- 641,649 -----
          goto attach_fraction;
      }
      cur_val = xn_over_d(cur_val, num, denom);
!     f = (num * f + 0200000L * remainder) / denom;
!     cur_val += f / 0200000L;
!     f %= 0200000L;
  
  attach_fraction:
      if (cur_val >= 0400000L)
***************
*** 646,652
      f %= 0200000;
  
  attach_fraction:
!     if (cur_val >= 0400000)
          arith_error = TRUE;
      else cur_val = cur_val * UNITY + f;
  

--- 646,652 -----
      f %= 0200000L;
  
  attach_fraction:
!     if (cur_val >= 0400000L)
          arith_error = TRUE;
      else cur_val = cur_val * UNITY + f;
  
***************
*** 654,660
      scan_optional_space();
  
  attach_sign:
!     if (arith_error || abs(cur_val) >= 010000000000) {
          print_err("Dimension too large");
          help_big_dimen();
          error();

--- 654,660 -----
      scan_optional_space();
  
  attach_sign:
!     if (arith_error || abs(cur_val) >= 010000000000L) {
          print_err("Dimension too large");
          help_big_dimen();
          error();
*** ../DIST/tex.c	Sun Mar 13 21:54:15 1988
--- tex.c	Sat May  7 17:05:55 1988
***************
*** 27,33
  #include "page.h"
  
  char        banner[] = "This is Common TeX, Version 2.9";
! int         ready_already;
  
  main (argc, argv)
      int     argc;

--- 27,33 -----
  #include "page.h"
  
  char        banner[] = "This is Common TeX, Version 2.9";
! long         ready_already;
  
  main (argc, argv)
      int     argc;
***************
*** 50,56
      first = 1;
      state = NEW_LINE;
      start = 1;
!     if (ready_already != 314159) 
          initialize();
      ready_already = 314159;
      print(banner);

--- 50,56 -----
      first = 1;
      state = NEW_LINE;
      start = 1;
!     if (ready_already != 314159L) 
          initialize();
      ready_already = 314159L;
      print(banner);
***************
*** 52,58
      start = 1;
      if (ready_already != 314159) 
          initialize();
!     ready_already = 314159;
      print(banner);
      selector = TERM_ONLY;
      if (format_ident == 0)

--- 52,58 -----
      start = 1;
      if (ready_already != 314159L) 
          initialize();
!     ready_already = 314159L;
      print(banner);
      selector = TERM_ONLY;
      if (format_ident == 0)
***************
*** 160,166
  #undef time
  begintime()
  {
!     return (time(0));
  }
  
  final_cleanup ()

--- 160,166 -----
  #undef time
  begintime()
  {
!     return (time((long *)0));
  }
  
  final_cleanup ()
***************
*** 340,346
      char*   envedit;
      int     old_setting;
      char    edit[FILE_NAME_SIZE + 17];
!     char*   texedit = "/usr/ucb/vi +%d %s &";
      val getenv();
  
      if ((envedit = (char*) getenv("TEXEDIT")) != NULL)

--- 340,346 -----
      char*   envedit;
      int     old_setting;
      char    edit[FILE_NAME_SIZE + 17];
!     char*   texedit = "/bin/vi +%d %s &";
      val getenv();
  
      if ((envedit = (char*) getenv("TEXEDIT")) != NULL)
*** ../DIST/texext.c	Sun Mar 13 21:54:16 1988
--- texext.c	Sat May  7 17:05:55 1988
***************
*** 309,315
              selector = LOG_ONLY;
          print_nl("");
      }
!     show_token_list(token_link(def_ref), NULL, 10000000);
      print_ln();
      flush_list(def_ref);
      selector = old_setting;

--- 309,315 -----
              selector = LOG_ONLY;
          print_nl("");
      }
!     show_token_list(token_link(def_ref), NULL, 10000000L);
      print_ln();
      flush_list(def_ref);
      selector = old_setting;
*** ../DIST/tfm.c	Sun Mar 13 21:54:20 1988
--- tfm.c	Sat May  7 17:05:56 1988
***************
*** 228,234
   *  Read box dimensions
   */
      alpha = 16;
!     while (z >= 040000000) {
          z >>= 1;
          alpha <<= 1;
      }

--- 228,234 -----
   *  Read box dimensions
   */
      alpha = 16;
!     while (z >= 040000000L) {
          z >>= 1;
          alpha <<= 1;
      }
*** ../DIST/token.c	Sun Mar 13 21:54:23 1988
--- token.c	Sat May  7 17:05:56 1988
***************
*** 347,353
          if (cur_cmd == OMIT)
              begin_token_list(omit_template, (qword) V_TEMPLATE);
          else begin_token_list((ptr) v_part(cur_align), (qword) V_TEMPLATE);
!         align_state = 1000000;
          goto restart;
      }
  }

--- 347,353 -----
          if (cur_cmd == OMIT)
              begin_token_list(omit_template, (qword) V_TEMPLATE);
          else begin_token_list((ptr) v_part(cur_align), (qword) V_TEMPLATE);
!         align_state = 1000000L;
          goto restart;
      }
  }
***************
*** 398,404
                  p = new_token();
                  token_link(p) = q;
                  token(p) = CS_TOKEN_FLAG + FROZEN_CR;
!                 align_state = -1000000;
                  break;
  
              case ABSORBING:

--- 398,404 -----
                  p = new_token();
                  token_link(p) = q;
                  token(p) = CS_TOKEN_FLAG + FROZEN_CR;
!                 align_state = -1000000L;
                  break;
  
              case ABSORBING:
*** ../DIST/tokenlists.c	Sun Mar 13 21:54:26 1988
--- tokenlists.c	Sat May  7 17:05:57 1988
***************
*** 310,316
          m = 16;
      else m = n;
      s = align_state;
!     align_state = 1000000;
      do {
          begin_file_reading();
          name = m + 1;

--- 310,316 -----
          m = 16;
      else m = n;
      s = align_state;
!     align_state = 1000000L;
      do {
          begin_file_reading();
          name = m + 1;
***************
*** 339,345
              if (!input_ln(read_file[m], TRUE)) {
                  a_close(read_file[m]);
                  read_open[m] = CLOSED;
!                 if (align_state != 1000000) {
                      runaway();
                      print_err("File ended within ");
                      print_esc("read");

--- 339,345 -----
              if (!input_ln(read_file[m], TRUE)) {
                  a_close(read_file[m]);
                  read_open[m] = CLOSED;
!                 if (align_state != 1000000L) {
                      runaway();
                      print_err("File ended within ");
                      print_esc("read");
***************
*** 344,350
                      print_err("File ended within ");
                      print_esc("read");
                      help_read();
!                     align_state = 1000000;
                      error();
                  }
              }

--- 344,350 -----
                      print_err("File ended within ");
                      print_esc("read");
                      help_read();
!                     align_state = 1000000L;
                      error();
                  }
              }
***************
*** 363,369
              store_new_token(cur_tok);
          }
          end_file_reading();
!     } while (align_state != 1000000);
      cur_val = def_ref;
      scanner_status = NORMAL; 
      align_state = s;

--- 363,369 -----
              store_new_token(cur_tok);
          }
          end_file_reading();
!     } while (align_state != 1000000L);
      cur_val = def_ref;
      scanner_status = NORMAL; 
      align_state = s;
*** ../DIST/tokenstack.c	Sun Mar 13 21:54:27 1988
--- tokenstack.c	Sat May  7 17:05:57 1988
***************
*** 32,38
  ptr     param_ptr;
  ptr     max_param_stack;
  
! val     align_state = 1000000;
  ptr     base_ptr;
  ptr     def_ref;
  ptr     warning_index;

--- 32,38 -----
  ptr     param_ptr;
  ptr     max_param_stack;
  
! val     align_state = 1000000L;
  ptr     base_ptr;
  ptr     def_ref;
  ptr     warning_index;
***************
*** 229,235
      {l = tally; \
      tally = 0; \
      selector = PSEUDO; \
!     trick_count = 1000000;}
  
  show_context ()
  {

--- 229,235 -----
      {l = tally; \
      tally = 0; \
      selector = PSEUDO; \
!     trick_count = 1000000L;}
  
  show_context ()
  {
***************
*** 355,362
                  }
                  begin_pseudoprint();
                  if (token_type < MACRO)
!                     show_token_list(start, loc, 100000);
!                 else show_token_list(token_link(start), loc, 100000);
              }
              selector = old_setting;
              if (trick_count == 1000000)

--- 355,362 -----
                  }
                  begin_pseudoprint();
                  if (token_type < MACRO)
!                     show_token_list(start, loc, 100000L);
!                 else show_token_list(token_link(start), loc, 100000L);
              }
              selector = old_setting;
              if (trick_count == 1000000L)
***************
*** 359,365
                  else show_token_list(token_link(start), loc, 100000);
              }
              selector = old_setting;
!             if (trick_count == 1000000)
                  set_trick_count();
              if (tally < trick_count)
                  m = tally - first_count;

--- 359,365 -----
                  else show_token_list(token_link(start), loc, 100000L);
              }
              selector = old_setting;
!             if (trick_count == 1000000L)
                  set_trick_count();
              if (tally < trick_count)
                  m = tally - first_count;
*** ../DIST/arith.h	Sun Mar 13 21:53:19 1988
--- arith.h	Sat May  7 17:05:58 1988
***************
*** 10,17
   * 
   */
  
! #define UNITY           0200000
! #define TWO             0400000
  
  val     half();
  scal    round_decimals();

--- 10,17 -----
   * 
   */
  
! #define UNITY           0200000L
! #define TWO             0400000L
  
  val     half();
  scal    round_decimals();
*** ../DIST/box.h	Sun Mar 13 21:53:20 1988
--- box.h	Sat May  7 17:05:58 1988
***************
*** 46,52
  
  #define RULE_NODE           2
  #define RULE_NODE_SIZE      4
! #define NULL_FLAG           -010000000000
  #define is_running(R)       (R == NULL_FLAG)
  
  #define INS_NODE            3

--- 46,52 -----
  
  #define RULE_NODE           2
  #define RULE_NODE_SIZE      4
! #define NULL_FLAG           -010000000000L
  #define is_running(R)       (R == NULL_FLAG)
  
  #define INS_NODE            3
*** ../DIST/boxlists.h	Sun Mar 13 21:53:23 1988
--- boxlists.h	Sat May  7 17:05:58 1988
***************
*** 33,41
  
  int     box_end();
  
! #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

--- 33,41 -----
  
  int     box_end();
  
! #define BOX_FLAG            010000000000L
! #define SHIP_OUT_FLAG       (BOX_FLAG + 512L)
! #define LEADER_FLAG         (BOX_FLAG + 513L)
  #define BOX_CODE            0
  #define COPY_CODE           1
  #define LAST_BOX_CODE       2
*** ../DIST/evalstack.h	Sun Mar 13 21:53:42 1988
--- evalstack.h	Sat May  7 17:06:00 1988
***************
*** 18,24
  int     pop_nest();
  int     print_mode();
  
! #define IGNORE_DEPTH    -65536000
  
  typedef struct
  {

--- 18,24 -----
  int     pop_nest();
  int     print_mode();
  
! #define IGNORE_DEPTH    -65536000L
  
  typedef struct
  {
*** ../DIST/file.h	Sun Mar 13 21:53:48 1988
--- file.h	Sat May  7 17:06:00 1988
***************
*** 68,76
  
  int     set_paths();
  
! #define default_font_path       "."
! #define default_format_path     "."
! #define default_input_path      "."
  
  #define NO_FILE_PATH        0
  #define INPUT_FILE_PATH     1

--- 68,76 -----
  
  int     set_paths();
  
! #define default_font_path       "/usr/local/lib/tex/fonts"
! #define default_format_path     "/usr/local/lib/tex/formats"
! #define default_input_path      "/usr/local/lib/tex/inputs"
  
  #define NO_FILE_PATH        0
  #define INPUT_FILE_PATH     1
*** ../DIST/math.h	Sun Mar 13 21:53:56 1988
--- math.h	Sat May  7 17:06:03 1988
***************
*** 66,72
  #define RADICAL_NOAD_SIZE   5
  #define FRACTION_NOAD       (RADICAL_NOAD + 1)
  #define FRACTION_NOAD_SIZE  6
! #define DEFAULT_CODE        010000000000
  #define thickness           width
  #define numerator           supscr
  #define denominator         subscr

--- 66,72 -----
  #define RADICAL_NOAD_SIZE   5
  #define FRACTION_NOAD       (RADICAL_NOAD + 1)
  #define FRACTION_NOAD_SIZE  6
! #define DEFAULT_CODE        010000000000L
  #define thickness           width
  #define numerator           supscr
  #define denominator         subscr
*** ../DIST/page.h	Sun Mar 13 21:54:07 1988
--- page.h	Sat May  7 17:06:04 1988
***************
*** 18,24
  ptr     prune_page_top();
  
  global  scal    best_height_plus_depth;
! #define DEPLORABLE      100000
  
  ptr     vert_break();
  ptr     vsplit();

--- 18,24 -----
  ptr     prune_page_top();
  
  global  scal    best_height_plus_depth;
! #define DEPLORABLE      100000L
  
  ptr     vert_break();
  ptr     vsplit();
*** ../DIST/par.h	Sun Mar 13 21:54:08 1988
--- par.h	Sat May  7 17:06:04 1988
***************
*** 59,65
  
  int     try_break();
  
! #define AWFUL_BAD           07777777777
  
  global  val     minimal_demerits[];
  global  val     minimum_demerits;

--- 59,65 -----
  
  int     try_break();
  
! #define AWFUL_BAD           07777777777L
  
  global  val     minimal_demerits[];
  global  val     minimum_demerits;
*** ../DIST/scan.h	Sun Mar 13 21:54:15 1988
--- scan.h	Sat May  7 17:06:05 1988
***************
*** 34,40
  int     scan_twenty_seven_bit_int();
  
  int     scan_int();
! #define INFINITY    017777777777
  
  global  int     radix;
  

--- 34,40 -----
  int     scan_twenty_seven_bit_int();
  
  int     scan_int();
! #define INFINITY    017777777777L
  
  global  int     radix;
  
***************
*** 50,56
  #define EURO_POINT_TOKEN    (OTHER_TOKEN + ',')
  
  int     scan_dimen();
! #define MAX_DIMEN   07777777777
  
  #define scan_normal_dimen()     scan_dimen(FALSE, FALSE, FALSE)
  

--- 50,56 -----
  #define EURO_POINT_TOKEN    (OTHER_TOKEN + ',')
  
  int     scan_dimen();
! #define MAX_DIMEN   07777777777L
  
  #define scan_normal_dimen()     scan_dimen(FALSE, FALSE, FALSE)
  
*** ../DIST/tex.h	Sun Mar 13 21:54:16 1988
--- tex.h	Sat May  7 17:06:05 1988
***************
*** 106,112
  #define TOK_MAX             TOK_TOP
  #else
  #define MEM_MIN             0
! #define MEM_MAX             35000
  #define TOK_MIN             0
  #define TOK_MAX             35000
  #endif

--- 106,112 -----
  #define TOK_MAX             TOK_TOP
  #else
  #define MEM_MIN             0
! #define MEM_MAX             32000
  #define TOK_MIN             0
  #define TOK_MAX             32000
  #endif
***************
*** 108,114
  #define MEM_MIN             0
  #define MEM_MAX             35000
  #define TOK_MIN             0
! #define TOK_MAX             35000
  #endif
  #define MIN_QUARTERWORD     0
  #define MAX_QUARTERWORD     255

--- 108,114 -----
  #define MEM_MIN             0
  #define MEM_MAX             32000
  #define TOK_MIN             0
! #define TOK_MAX             32000
  #endif
  #define MIN_QUARTERWORD     0
  #define MAX_QUARTERWORD     255
***************
*** 113,119
  #define MIN_QUARTERWORD     0
  #define MAX_QUARTERWORD     255
  #define MIN_HALFWORD        0
! #define MAX_HALFWORD        65535
  #endif
  
  /*

--- 113,119 -----
  #define MIN_QUARTERWORD     0
  #define MAX_QUARTERWORD     255
  #define MIN_HALFWORD        0
! #define MAX_HALFWORD        ((unsigned)65535)
  #endif
  
  /*
***************
*** 173,179
   */
  
  global  char        banner[];
! global  int         ready_already;
  
  /*
   *  functions in the outer block

--- 173,179 -----
   */
  
  global  char        banner[];
! global  long        ready_already;
  
  /*
   *  functions in the outer block
\Rogue\Monster\
else
  echo "will not over write ./xenix.pat"
fi
echo "Finished archive 1 of 1"
exit
-- 
Dominick Samperi, Manhattan College, NYC
    manhat!samperi@NYU.EDU           ihnp4!rutgers!nyu.edu!manhat!samperi
    philabs!cmcl2!manhat!samperi     ihnp4!rutgers!hombre!samperi
              (^ that's an ell)      uunet!swlabs!mancol!samperi

exodus@uop.edu (G.Onufer) (05/15/88)

I am not sure why everybody became so confused.  When I mentioned CTeX (or
CommonTeX), and the "MS-DOS" directory, I meant the new tex.h in the INIT
directory that came with CommonTeX 2.8.  It was for MS-DOS machines (made
the arrays a little smaller here and there).  It came with the CommonTeX
I got of the Unix TeX distribution from the University of Washington.

The OTHER Tex in C is called CTeX (I guess) or more likely tex-to-c.  It
is a machine translation from the tex.web file to one or ten c files + headers
and extra.c.  It has been ported to the Amiga by one of the authors of the
program that converts it.  I just got it to run on my Atari ST (passes the
Trip test except for three floats that are off by .00001, but the resulting
dvi file has only two differences when diff'ed with the dvitype output of real
TeX) but it only works when compiled for Trip, when I try to compile it 
with larger arrays, the program crashes  (off to work I go trying to figure
out that one).

Greg Onufer
University of the Pacific

-- 
Greg Onufer   		GEnie: G.ONUFER		University of the Pacific
UUCP:						**POSTMASTER @ UOP**
"exodus" or "postmaster" or "exodusr" @uop.edu
AT&T: 209-944-7481	USMAIL: #300 Jesse Jackson, UoP, Stockton CA, 95211

finegan@ucqais.uc.edu (Mike Finegan) (05/16/88)

Where can ctex - the version you have, that runs on a 3B2 be gotten ?
Is it any better than the "latest" version of TeX - with makefiles for
the 3B2 ? Does it do everything TeX does ? Also - does anyone have the
pascal to c conversion program they use source - or know where it can
be anonymously ftp'ed ? Sorry to ask so many questions - but not too
many people are running TeX on a 3B2 - and I would like to be. The
U. of Wash. TeX distribution has some drivers - postscript, etc. I
think BiBTeX might be in there too.
					finegan@ucqais.uc.edu