LaTeX for Xenix (4 of 14)

G Geers glenn at extro.ucc.su.oz.au
Fri Feb 16 10:36:44 AEST 1990


---- Cut Here and unpack ----
#!/bin/sh
# this is part 4 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file boxlists.c continued
#
CurArch=4
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file boxlists.c"
sed 's/^X//' << 'SHAR_EOF' >> boxlists.c
X}
X
X
Xhelp_align_error ()
X{
X	help5("I can't figure out why you would want to use a tab mark",
X	"or \\cr or \\span just now. If something like a right brace",
X	"up above has ended a previous alignment prematurely,",
X	"you're probably due for more error messages, and you",
X	"might try typing `S' now just to see what is salvageable.");
X}
X
X
Xhelp_align_cr ()
X{
X	help1("I'm guessing that you meant to end an alignment here.");
X}
X	
X
Xhelp_fix_alignment ()
X{
X	help3("I've put in what seems to be necessary to fix",
X	"the current column of the current alignment.",
X	"Try to go on, since this might almost work.");
X}
X
X
Xhelp_noalign ()
X{
X	help2("I expect to see \\noalign only after the \\cr of",
X	"an alignment. Proceed, and I'll ignore this case.");
X}
X
X
Xhelp_omit ()
X{
X	help2("I expect to see \\omit only after tab marks or the \\cr of",
X	"an alignment. Proceed, and I'll ignore this case.");
X}
X
X
Xhelp_csname ()
X{
X	help1("I'm ignoring this, since I wasn't doing a \\csname.");
X}
SHAR_EOF
echo "File boxlists.c is complete"
chmod 0444 boxlists.c || echo "restore of boxlists.c fails"
set `wc -c boxlists.c`;Sum=$1
if test "$Sum" != "21019"
then echo original size 21019, current size $Sum;fi
echo "x - extracting boxlists.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > boxlists.h &&
X
X/*
X *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
X *    Copying of this file is granted according to the provisions 
X *    specified in the file COPYING which must accompany this file.
X */
X
X
X/*
X *		boxlists.h
X */
X
Xint	append_glue();
X
X#define	FIL_CODE			0
X#define	FILL_CODE			1
X#define	SS_CODE				2
X#define	FIL_NEG_CODE		3
X#define	SKIP_CODE			4
X#define	MSKIP_CODE			5
X
Xint	append_kern();
X
Xint	handle_right_brace();
Xint	extra_right_brace();
X
Xglobal	ptr		cur_box;
X
Xint	begin_box();
Xint	scan_box();
Xint	scan_spec();
Xint	package();
X
Xint	box_end();
X
X#define	BOX_FLAG			010000000000
X#define	SHIP_OUT_FLAG		(BOX_FLAG + 512)
X#define	LEADER_FLAG			(BOX_FLAG + 513)
X#define	BOX_CODE			0
X#define	COPY_CODE			1
X#define	LAST_BOX_CODE		2
X#define	VSPLIT_CODE			3
X#define	VTOP_CODE			4
X
Xint	normal_paragraph();
Xint	new_graf();
Xint	indent_in_hmode();
Xint	head_for_vmode();
Xint	end_graf();
Xint	append_to_vlist();
Xint	begin_insert_or_adjust();
Xint	make_mark();
Xint	append_penalty();
Xint	delete_skip();
Xint	unpackage();
Xint	append_italic_correction();
Xint	append_discretionary();
Xint	build_discretionary();
Xint	make_accent();
Xint	align_error();
Xint	no_align_error();
Xint	omit_error();
Xint	do_endv();
Xint	cs_error();
SHAR_EOF
chmod 0444 boxlists.h || echo "restore of boxlists.h fails"
set `wc -c boxlists.h`;Sum=$1
if test "$Sum" != "1217"
then echo original size 1217, current size $Sum;fi
echo "x - extracting char.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > char.c &&
X
X/*
X *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
X */
X
X
X/*
X *		char.c
X */
X
X#include	"tex.h"
X#include	"char.h"
X
X
Xascii	xord[128];
Xchar	xchr[128];
X
Xinit_char ()
X{
X	int		i;
X
X	xchr[040] = ' ';
X	xchr[041] = '!';
X	xchr[042] = '"';
X	xchr[043] = '#';
X	xchr[044] = '$';
X	xchr[045] = '%';
X	xchr[046] = '&';
X	xchr[047] = '\'';
X	xchr[050] = '(';
X	xchr[051] = ')';
X	xchr[052] = '*';
X	xchr[053] = '+';
X	xchr[054] = ',';
X	xchr[055] = '-';
X	xchr[056] = '.';
X	xchr[057] = '/';
X	xchr[060] = '0';
X	xchr[061] = '1';
X	xchr[062] = '2';
X	xchr[063] = '3';
X	xchr[064] = '4';
X	xchr[065] = '5';
X	xchr[066] = '6';
X	xchr[067] = '7';
X	xchr[070] = '8';
X	xchr[071] = '9';
X	xchr[072] = ':';
X	xchr[073] = ';';
X	xchr[074] = '<';
X	xchr[075] = '=';
X	xchr[076] = '>';
X	xchr[077] = '?';
X	xchr[0100] = '@';
X	xchr[0101] = 'A';
X	xchr[0102] = 'B';
X	xchr[0103] = 'C';
X	xchr[0104] = 'D';
X	xchr[0105] = 'E';
X	xchr[0106] = 'F';
X	xchr[0107] = 'G';
X	xchr[0110] = 'H';
X	xchr[0111] = 'I';
X	xchr[0112] = 'J';
X	xchr[0113] = 'K';
X	xchr[0114] = 'L';
X	xchr[0115] = 'M';
X	xchr[0116] = 'N';
X	xchr[0117] = 'O';
X	xchr[0120] = 'P';
X	xchr[0121] = 'Q';
X	xchr[0122] = 'R';
X	xchr[0123] = 'S';
X	xchr[0124] = 'T';
X	xchr[0125] = 'U';
X	xchr[0126] = 'V';
X	xchr[0127] = 'W';
X	xchr[0130] = 'X';
X	xchr[0131] = 'Y';
X	xchr[0132] = 'Z';
X	xchr[0133] = '[';
X	xchr[0134] = '\\';
X	xchr[0135] = ']';
X	xchr[0136] = '^';
X	xchr[0137] = '_';
X	xchr[0140] = '`';
X	xchr[0141] = 'a';
X	xchr[0142] = 'b';
X	xchr[0143] = 'c';
X	xchr[0144] = 'd';
X	xchr[0145] = 'e';
X	xchr[0146] = 'f';
X	xchr[0147] = 'g';
X	xchr[0150] = 'h';
X	xchr[0151] = 'i';
X	xchr[0152] = 'j';
X	xchr[0153] = 'k';
X	xchr[0154] = 'l';
X	xchr[0155] = 'm';
X	xchr[0156] = 'n';
X	xchr[0157] = 'o';
X	xchr[0160] = 'p';
X	xchr[0161] = 'q';
X	xchr[0162] = 'r';
X	xchr[0163] = 's';
X	xchr[0164] = 't';
X	xchr[0165] = 'u';
X	xchr[0166] = 'v';
X	xchr[0167] = 'w';
X	xchr[0170] = 'x';
X	xchr[0171] = 'y';
X	xchr[0172] = 'z';
X	xchr[0173] = '{';
X	xchr[0174] = '|';
X	xchr[0175] = '}';
X	xchr[0176] = '~';
X	xchr[0177] = xchr[000] = ' ';
X	for (i = 1; i <= 037; incr(i))
X		xchr[i] = ' ';
X	xchr[FORM_FEED] =  '\l';
X	xchr[TAB] = '\t';
X	xchr[NUL] = '\0';
X
X	for (i = FIRST_TEXT_CHAR; i <= LAST_TEXT_CHAR; incr(i))
X		xord[xchr[i]] = INVALID_CODE;
X	
X	for (i = 1; i <= 0176; incr(i))
X		xord[xchr[i]] = i;
X	xord[xchr[NULL_CODE]] = NULL_CODE;
X}
SHAR_EOF
chmod 0444 char.c || echo "restore of char.c fails"
set `wc -c char.c`;Sum=$1
if test "$Sum" != "2296"
then echo original size 2296, current size $Sum;fi
echo "x - extracting char.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > char.h &&
X
X/*
X *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
X *    Copying of this file is granted according to the provisions 
X *    specified in the file COPYING which must accompany this file.
X */
X
X
X/*
X *		char.h
X */
X
Xglobal	ascii	xord[];
X
X#define	FIRST_ASCII_CODE		0
X#define	LAST_ASCII_CODE			127
X
Xglobal 	char	xchr[];
X
X#define	FIRST_TEXT_CHAR			0
X#define	LAST_TEXT_CHAR			127
X
X#define	TAB						011
X#define FORM_FEED				014
X#define	CARRIAGE_RETURN			015
X#define	NULL_CODE				000
X#define	INVALID_CODE			0177
X
Xint	init_char();
SHAR_EOF
chmod 0444 char.h || echo "restore of char.h fails"
set `wc -c char.h`;Sum=$1
if test "$Sum" != "540"
then echo original size 540, current size $Sum;fi
echo "x - extracting cmds.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > cmds.c &&
X
X/*
X *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
X *    Copying of this file is granted according to the provisions 
X *    specified in the file COPYING which must accompany this file.
X */
X
X
X/*
X *		cmds.c
X */
X
X#include	"tex.h"
X#include	"texext.h"
X#include	"heap.h"
X#include	"eq.h"
X#include	"eqstack.h"
X#include	"str.h"
X#include	"hash.h"
X#include	"token.h"
X#include	"tokenlists.h"
X#include	"tokenstack.h"
X#include	"scan.h"
X#include	"evalstack.h"
X#include	"def.h"
X#include	"cond.h"
X#include	"expand.h"
X#include	"box.h"
X#include	"boxlists.h"
X#include	"tfm.h"
X#include	"math.h"
X#include	"mathlists.h"
X#include	"align.h"
X#include	"error.h"
X#include	"print.h"
X#include	"cmds.h"
X
X#define	chr_cmd(S) \
X	{print(S);  print_ASCII(chr_code);}
X
Xshow_cur_cmd_chr()
X{
X	begin_diagnostic();
X	print_nl("{");
X	if (mode != shown_mode) {
X		print_mode(mode);
X		print(": ");
X		shown_mode = mode;
X	}
X	print_cmd_chr(cur_cmd, cur_chr);
X	print_char('}'); 
X	end_diagnostic(FALSE);
X}
X
Xprint_cmd_chr (cmd, chr_code)
X	qword	cmd;
X	hword	chr_code;
X{
X	switch (cmd)
X	{
X	case RELAX:
X		print_esc("relax"); 
X		break;
X
X	case LEFT_BRACE:
X		chr_cmd("begin-group character "); 
X		break;
X
X	case RIGHT_BRACE:
X		chr_cmd("end-group character "); 
X		break;
X
X	case MATH_SHIFT:
X		chr_cmd("math shift character "); 
X		break;
X
X	case TAB_MARK:
X		 if (chr_code == SPAN_CODE)
X			print_esc("span");
X		else chr_cmd("alignment tab character "); 
X		break;
X
X	case CAR_RET:
X		 if (chr_code == CR_CODE)
X			print_esc("cr");
X		else print_esc("crcr"); 
X		break;
X
X	case MAC_PARAM:
X		chr_cmd("macro parameter character "); 
X		break;
X
X	case SUP_MARK:
X		chr_cmd("superscript character "); 
X		break;
X
X	case SUB_MARK:
X		chr_cmd("subscript character "); 
X		break;
X
X	case ENDV:
X		print("end of alignment template"); 
X		break;
X
X	case SPACER:
X		chr_cmd("blank space "); 
X		break;
X
X	case LETTER:
X		chr_cmd("the letter "); 
X		break;
X
X	case OTHER_CHAR:
X		chr_cmd("the character "); 
X		break;
X
X	case ASSIGN_GLUE:
X	case ASSIGN_MU_GLUE:
X		if (chr_code < SKIP_BASE)
X			print_skip_param(chr_code - GLUE_BASE);
X		else if (chr_code < MU_SKIP_BASE) {
X			print_esc("skip"); 
X			print_int(chr_code - SKIP_BASE);
X		} else {
X			print_esc("muskip");
X			print_int(chr_code - MU_SKIP_BASE);
X		} 
X		break;
X
X	case ASSIGN_TOKS:
X		if (chr_code >= TOKS_BASE) {
X			print_esc("toks");
X			print_int(chr_code - TOKS_BASE);
X		} else {
X			switch (chr_code)
X			{
X			case OUTPUT_ROUTINE_LOC:
X				print_esc("output"); 
X				break;
X
X			case EVERY_PAR_LOC:
X				print_esc("everypar"); 
X				break;
X
X			case EVERY_MATH_LOC:
X				print_esc("everymath"); 
X				break;
X
X			case EVERY_DISPLAY_LOC:
X				print_esc("everydisplay"); 
X				break;
X
X			case EVERY_HBOX_LOC:
X				print_esc("everyhbox"); 
X				break;
X
X			case EVERY_VBOX_LOC:
X				print_esc("everyvbox"); 
X				break;
X
X			case EVERY_JOB_LOC:
X				print_esc("everyjob"); 
X				break;
X
X			case EVERY_CR_LOC:
X				print_esc("everycr"); 
X				break;
X
X			default:
X				print_esc("errhelp"); 
X				break;
X			}
X		}
X		break;
X
X	case ASSIGN_INT:
X		if (chr_code < COUNT_BASE)
X			print_param(chr_code - INT_BASE);
X		else {
X			print_esc("count");
X			print_int(chr_code - COUNT_BASE);
X		} 
X		break;
X
X	case ASSIGN_DIMEN:
X		if (chr_code < SCALED_BASE)
X			print_length_param(chr_code - DIMEN_BASE);
X		else {
X			print_esc("dimen");
X			print_int(chr_code - SCALED_BASE);
X		} 
X		break;
X
X	case ACCENT:
X		print_esc("accent"); 
X		break;
X
X	case ADVANCE:
X		print_esc("advance"); 
X		break;
X
X	case AFTER_ASSIGNMENT:
X		print_esc("afterassignment"); 
X		break;
X
X	case AFTER_GROUP:
X		print_esc("aftergroup"); 
X		break;
X
X	case ASSIGN_FONT_DIMEN:
X		print_esc("fontdimen"); 
X		break;
X
X	case BEGIN_GROUP:
X		print_esc("begingroup"); 
X		break;
X
X	case BREAK_PENALTY:
X		print_esc("penalty"); 
X		break;
X
X	case CHAR_NUM:
X		print_esc("char"); 
X		break;
X
X	case CS_NAME:
X		print_esc("csname"); 
X		break;
X
X	case DEF_FONT:
X		print_esc("font"); 
X		break;
X
X	case DELIM_NUM:
X		print_esc("delimiter"); 
X		break;
X
X	case DIVIDE:
X		print_esc("divide"); 
X		break;
X
X	case END_CS_NAME:
X		print_esc("endcsname"); 
X		break;
X
X	case END_GROUP:
X		print_esc("endgroup"); 
X		break;
X
X	case EX_SPACE:
X		print_esc(" "); 
X		break;
X
X	case EXPAND_AFTER:
X		print_esc("expandafter"); 
X		break;
X
X	case INPUT:
X		 if (chr_code == 0)
X			print_esc("input");
X		else print_esc("endinput"); 
X		break;
X
X	case HALIGN:
X		print_esc("halign"); 
X		break;
X
X	case HRULE:
X		print_esc("hrule"); 
X		break;
X
X	case IGNORE_SPACES:
X		print_esc("ignorespaces"); 
X		break;
X
X	case INSERT:
X		print_esc("insert"); 
X		break;
X
X	case ITAL_CORR:
X		print_esc("/"); 
X		break;
X
X	case MARK:
X		print_esc("mark"); 
X		break;
X
X	case TOP_BOT_MARK:
X		switch (chr_code)
X		{
X		case TOP_MARK_CODE:
X			print_esc("topmark"); 
X			break;
X
X		case FIRST_MARK_CODE:
X			print_esc("firstmark"); 
X			break;
X
X		case BOT_MARK_CODE:
X			print_esc("botmark"); 
X			break;
X
X		case SPLIT_FIRST_MARK_CODE:
X			print_esc("splitfirstmark"); 
X			break;
X
X		case SPLIT_BOT_MARK_CODE:
X			print_esc("splitbotmark"); 
X			break;
X		}
X		break;
X
X	case MATH_ACCENT:
X		print_esc("mathaccent"); 
X		break;
X
X	case MATH_CHAR_NUM:
X		print_esc("mathchar"); 
X		break;
X
X	case MATH_CHOICE:
X		print_esc("mathchoice"); 
X		break;
X
X	case MULTIPLY:
X		print_esc("multiply"); 
X		break;
X
X	case NO_ALIGN:
X		print_esc("noalign"); 
X		break;
X
X	case NO_EXPAND:
X		print_esc("noexpand"); 
X		break;
X
X	case NON_SCRIPT:
X		print_esc("nonscript"); 
X		break;
X
X	case OMIT:
X		print_esc("omit"); 
X		break;
X
X	case RADICAL:
X		print_esc("radical"); 
X		break;
X
X	case READ_TO_CS:
X		print_esc("read"); 
X		break;
X
X	case SET_BOX:
X		print_esc("setbox"); 
X		break;
X
X	case SET_PREV_GRAF:
X		print_esc("prevgraf"); 
X		break;
X
X	case SET_SHAPE:
X		print_esc("parshape"); 
X		break;
X
X	case THE:
X		print_esc("the"); 
X		break;
X
X	case TOKS_REGISTER:
X		print_esc("toks"); 
X		break;
X
X	case VADJUST:
X		print_esc("vadjust"); 
X		break;
X
X	case VALIGN:
X		print_esc("valign"); 
X		break;
X
X	case VCENTER:
X		print_esc("vcenter"); 
X		break;
X
X	case VRULE:
X		print_esc("vrule"); 
X		break;
X
X	case PAR_END:
X		print_esc("par"); 
X		break;
X
X	case SET_AUX:
X		 if (chr_code == VMODE)
X			print_esc("prevdepth");
X		else print_esc("spacefactor"); 
X		break;
X
X	case SET_PAGE_INT:
X		 if (chr_code == 0)
X			print_esc("deadcycles");
X		else print_esc("insertpenalties"); 
X		break;
X
X	case SET_BOX_DIMEN:
X		if (chr_code == WIDTH_OFFSET)
X			print_esc("wd");
X		else if (chr_code == HEIGHT_OFFSET)
X			print_esc("ht");
X		else print_esc("dp"); 
X		break;
X
X	case SET_PAGE_DIMEN:
X		switch (chr_code)
X		{
X		case 0:
X			print_esc("pagegoal"); 
X			break;
X
X		case 1:
X			print_esc("pagetotal"); 
X			break;
X
X		case 2:
X			print_esc("pagestretch"); 
X			break;
X
X		case 3:
X			print_esc("pagefilstretch"); 
X			break;
X
X		case 4:
X			print_esc("pagefillstretch"); 
X			break;
X
X		case 5:
X			print_esc("pagefilllstretch"); 
X			break;
X
X		case 6:
X			print_esc("pageshrink"); 
X			break;
X		}
X		break;
X
X	case LAST_ITEM:
X		 if (chr_code == INT_VAL)
X			print_esc("lastpenalty");
X		else if (chr_code == DIMEN_VAL)
X			print_esc("lastkern");
X		else print_esc("lastskip"); 
X		break;
X
X	case REGISTER:
X		 if (chr_code == INT_VAL)
X			print_esc("count");
X		else if (chr_code == DIMEN_VAL)
X			print_esc("dimen");
X		else if (chr_code == GLUE_VAL)
X			print_esc("skip");
X		else print_esc("muskip"); 
X		break;
X
X	case CONVERT:
X		switch (chr_code)
X		{
X		case NUMBER_CODE:
X			print_esc("number"); 
X			break;
X
X		case ROMAN_NUMERAL_CODE:
X			print_esc("romannumeral"); 
X			break;
X
X		case STRING_CODE:
X			print_esc("string"); 
X			break;
X
X		case MEANING_CODE:
X			print_esc("meaning"); 
X			break;
X
X		case FONT_NAME_CODE:
X			print_esc("fontname"); 
X			break;
X
X		default:
X			print_esc("jobname"); 
X			break;
X		}
X		break;
X
X	case IF_TEST:
X		switch (chr_code)
X		{
X		case IF_CHAR_CODE:
X			print_esc("if"); 
X			break;
X
X		case IF_CAT_CODE:
X			print_esc("ifcat"); 
X			break;
X
X		case IF_INT_CODE:
X			print_esc("ifnum"); 
X			break;
X
X		case IF_DIM_CODE:
X			print_esc("ifdim"); 
X			break;
X
X		case IF_ODD_CODE:
X			print_esc("ifodd"); 
X			break;
X
X		case IF_VMODE_CODE:
X			print_esc("ifvmode"); 
X			break;
X
X		case IF_HMODE_CODE:
X			print_esc("ifhmode"); 
X			break;
X
X		case IF_MMODE_CODE:
X			print_esc("ifmmode"); 
X			break;
X
X		case IF_INNER_CODE:
X			print_esc("ifinner"); 
X			break;
X
X		case IF_VOID_CODE:
X			print_esc("ifvoid"); 
X			break;
X
X		case IF_HBOX_CODE:
X			print_esc("ifhbox"); 
X			break;
X
X		case IF_VBOX_CODE:
X			print_esc("ifvbox"); 
X			break;
X
X		case IFX_CODE:
X			print_esc("ifx"); 
X			break;
X
X		case IF_EOF_CODE:
X			print_esc("ifeof"); 
X			break;
X
X		case IF_TRUE_CODE:
X			print_esc("iftrue"); 
X			break;
X
X		case IF_FALSE_CODE:
X			print_esc("iffalse"); 
X			break;
X
X		case IF_CASE_CODE:
X			print_esc("ifcase"); 
X			break;
X		}
X		break;
X
X	case FI_OR_ELSE:
X		if (chr_code == FI_CODE)
X			print_esc("fi");
X		else if (chr_code == OR_CODE)
X			print_esc("or");
X		else print_esc("else"); 
X		break;
X
X	case PREFIX:
X		if (chr_code == 1)
X			print_esc("long");
X		else if (chr_code == 2)
X			print_esc("outer");
X		else print_esc("global"); 
X		break;
X
X	case DEF:
X		if (chr_code == 0)
X			print_esc("def");
X		else if (chr_code == 1)
X			print_esc("gdef");
X		else if (chr_code == 2)
X			print_esc("edef");
X		else print_esc("xdef");
X		break;
X
X	case LET:
X		if (chr_code != NORMAL)
X			print_esc("futurelet");
X		else print_esc("let"); 
X		break;
X
X	case SHORTHAND_DEF:
X		switch (chr_code)
X		{
X		case CHAR_DEF_CODE:
X			print_esc("chardef"); 
X			break;
X
X		case MATH_CHAR_DEF_CODE:
X			print_esc("mathchardef"); 
X			break;
X
X		case COUNT_DEF_CODE:
X			print_esc("countdef"); 
X			break;
X
X		case DIMEN_DEF_CODE:
X			print_esc("dimendef"); 
X			break;
X
X		case SKIP_DEF_CODE:
X			print_esc("skipdef"); 
X			break;
X
X		case MU_SKIP_DEF_CODE:
X			print_esc("muskipdef"); 
X			break;
X
X		default:
X			print_esc("toksdef"); 
X			break;
X		}
X		break;
X
X	case CHAR_GIVEN:
X		print_esc("char");
X		print_hex((val) chr_code); 
X		break;
X
X	case MATH_GIVEN:
X		print_esc("mathchar");
X		print_hex((val) chr_code); 
X		break;
X
X	case DEF_CODE:
X		if (chr_code == CAT_CODE_BASE)
X			print_esc("catcode");
X		else if (chr_code == MATH_CODE_BASE)
X			print_esc("mathcode");
X		else if (chr_code == LC_CODE_BASE)
X			print_esc("lccode");
X		else if (chr_code == UC_CODE_BASE)
X			print_esc("uccode");
X		else if (chr_code == SF_CODE_BASE)
X			print_esc("sfcode");
X		else print_esc("delcode"); 
X		break;
X
X	case DEF_FAMILY:
X		print_size(chr_code - MATH_FONT_BASE); 
X		break;
X
X	case SET_FONT:
X		print("select font ");
X		print_str(font_name[chr_code]);
X		if (font_size[chr_code] != font_dsize[chr_code]) {
X			print(" at ");
X			print_scaled(font_size[chr_code]);
X			print("pt");
X		} 
X		break;
X
X	case ASSIGN_FONT_INT:
X		if (chr_code == 1)
X			print_esc("skewchar");
X		else print_esc("hyphenchar"); 
X		break;
X
X	case HYPH_DATA:
X		if (chr_code == 1)
X			print_esc("patterns");
X		else print_esc("hyphenation"); 
X		break;
X
X	case SET_INTERACTION:
X		switch (chr_code)
X		{
X		case BATCH_MODE:
X			print_esc("batchmode"); 
X			break;
X
X		case NONSTOP_MODE:
X			print_esc("nonstop"); 
X			break;
X
X		case SCROLL_MODE:
X			print_esc("scrollmode"); 
X			break;
X
X		default:
X			print_esc("errorstopmode"); 
X			break;
X		}
X		break;
X
X	case IN_STREAM:
X		if (chr_code == 0)
X			print_esc("closein");
X		else print_esc("openin"); 
X		break;
X
X	case MESSAGE:
X		if (chr_code == 0)
X			print_esc("message");
X		else print_esc("errmessage"); 
X		break;
X
X	case CASE_SHIFT:
X		if (chr_code == LC_CODE_BASE)	
X			print_esc("lowercase");
X		else print_esc("uppercase"); 
X		break;
X
X	case XRAY:
X		switch (chr_code)
X		{
X		case SHOW_BOX_CODE:
X			print_esc("showbox"); 
X			break;
X
X		case SHOW_THE_CODE:
X			print_esc("showthe"); 
X			break;
X
X		case SHOW_LISTS:
X			print_esc("showlists"); 
X			break;
X
X		default:
X			print_esc("show"); 
X			break;
X		}
X		break;
X
X	case UNDEFINED_CS:
X		print("undefined"); 
X		break;
X
X	case CALL:
X		print("macro"); 
X		break;
X
X	case LONG_CALL:
X		print_esc("long macro"); 
X		break;
X
X	case OUTER_CALL:
X		print_esc("outer macro"); 
X		break;
X
X	case LONG_OUTER_CALL:
X		print_esc("long");
X		print_esc("outer macro"); 
X		break;
X
X	case END_TEMPLATE:
X		print_esc("outer endtemplate"); 
X		break;
X
X	case STOP:
X		if (chr_code == 1)
X			print_esc("dump"); 
X		else print_esc("end"); 
X		break;
X
X	case HSKIP:
X		switch (chr_code)
X		{
X		case SKIP_CODE:
X			print_esc("hskip"); 
X			break;
X
X		case FIL_CODE:
X			print_esc("hfil"); 
X			break;
X
X		case FILL_CODE:
X			print_esc("hfill"); 
X			break;
X
X		case SS_CODE:
X			print_esc("hss"); 
X			break;
X
X		default:
X			print_esc("hfilneg"); 
X			break;
X		}
X		break;
X
X	case VSKIP:
X		switch (chr_code)
X		{
X		case SKIP_CODE:
X			print_esc("vskip"); 
X			break;
X
X		case FIL_CODE:
X			print_esc("vfil"); 
X			break;
X
X		case FILL_CODE:
X			print_esc("vfill"); 
X			break;
X
X		case SS_CODE:
X			print_esc("vss"); 
X			break;
X
X		default:
X			print_esc("vfilneg"); 
X			break;
X		}
X		break;
X
X	case MSKIP:
X		print_esc("mskip"); 
X		break;
X
X	case KERN:
X		print_esc("kern"); 
X		break;
X
X	case MKERN:
X		print_esc("mkern"); 
X		break;
X
X	case HMOVE:
X		if (chr_code == 1)
X			print_esc("moveleft");
X		else print_esc("moveright"); 
X		break;
X
X	case VMOVE:
X		if (chr_code == 1)
X			print_esc("raise");
X		else print_esc("lower"); 
X		break;
X
X	case MAKE_BOX:
X		switch (chr_code)
X		{
X		case BOX_CODE:
X			print_esc("box"); 
X			break;
X
X		case COPY_CODE:
X			print_esc("copy"); 
X			break;
X
X		case LAST_BOX_CODE:
X			print_esc("lastbox"); 
X			break;
X
X		case VSPLIT_CODE:
X			print_esc("vsplit"); 
X			break;
X
X		case VTOP_CODE:
X			print_esc("vtop"); 
X			break;
X
X		case VTOP_CODE + VMODE:
X			print_esc("vbox"); 
X			break;
X
X		default:
X			print_esc("hbox");
X			break;
X		} 
X		break;
X
X	case LEADER_SHIP:
X		if (chr_code == A_LEADERS)
X			print_esc("leaders");
X		else if (chr_code == C_LEADERS)
X			print_esc("cleaders");
X		else if (chr_code == X_LEADERS)
X			print_esc("xleaders");
X		else print_esc("shipout"); 
X		break;
X
X	case START_PAR:
X		if (chr_code == 0)
X			print_esc("noindent");
X		else print_esc("indent"); 
X		break;
X
X	case REMOVE_ITEM:
X		if (chr_code == GLUE_NODE)
X			print_esc("unskip");
X		else if (chr_code == KERN_NODE)
X			print_esc("unkern");
X		else print_esc("unpenalty"); 
X		break;
X
X	case UN_HBOX:
X		if (chr_code == COPY_CODE)
X			print_esc("unhcopy");
X		else print_esc("unhbox"); 
X		break;
X
X	case UN_VBOX:
X		if (chr_code == COPY_CODE)
X			print_esc("unvcopy");
X		else print_esc("unvbox"); 
X		break;
X
X	case DISCRETIONARY:
X		if (chr_code == 1)
X			print_esc("-");  
X		else print_esc("discretionary"); 
X		break;
X
X	case EQ_NO:
X		if (chr_code == 1)
X			print_esc("leqno");
X		else print_esc("eqno"); 
X		break;
X
X	case MATH_COMP:
X		switch (chr_code)
X		{
X		case ORD_NOAD:
X			print_esc("mathord"); 
X			break;
X
X		case OP_NOAD:
X			print_esc("mathop"); 
X			break;
X
X		case BIN_NOAD:
X			print_esc("mathbin"); 
X			break;
X
X		case REL_NOAD:
X			print_esc("mathrel"); 
X			break;
X
X		case OPEN_NOAD:
X			print_esc("mathopen"); 
X			break;
X
X		case CLOSE_NOAD:
X			print_esc("mathclose"); 
X			break;
X
X		case PUNCT_NOAD:
X			print_esc("mathpunct"); 
X			break;
X
X		case INNER_NOAD:
X			print_esc("mathinner"); 
X			break;
X
X		case UNDER_NOAD:
X			print_esc("underline"); 
X			break;
X
X		default:
X			print_esc("overline"); 
X			break;
X		}
X		break;
X
X	case LIMIT_SWITCH:
X		 if (chr_code == LIMITS)
X			print_esc("limits");
X		else if (chr_code == NO_LIMITS)
X			print_esc("nolimits");
X		else print_esc("displaylimits"); 
X		break;
X
X	case MATH_STYLE:
X		print_style(chr_code); 
X		break;
X
X	case ABOVE:
X		switch (chr_code)
X		{
X		case OVER_CODE:
X			print_esc("over"); 
X			break;
X
X		case ATOP_CODE:
X			print_esc("atop"); 
X			break;
X
X		case DELIMITED_CODE + ABOVE_CODE:
X			print_esc("abovewithdelims"); 
X			break;
X
X		case DELIMITED_CODE + OVER_CODE:
X			print_esc("overwithdelims"); 
X			break;
X
X		case DELIMITED_CODE + ATOP_CODE:
X			print_esc("atopwithdelims"); 
X			break;
X
X		default:
X			print_esc("above"); 
X			break;
X		}
X		break;
X
X	case LEFT_RIGHT:
X		 if (chr_code == LEFT_NOAD)
X			print_esc("left");
X		else print_esc("right"); 
X		break;
X
X	case EXTENSION:
X		switch (chr_code) {
X		case OPEN_NODE:
X			print_esc("openout"); 
X			break;
X
X		case WRITE_NODE:
X			print_esc("write"); 
X			break;
X
X		case CLOSE_NODE:
X			print_esc("closeout"); 
X			break;
X
X		case SPECIAL_NODE:
X			print_esc("special"); 
X			break;
X
X		case IMMEDIATE_CODE:
X			print_esc("immediate"); 
X			break;
X		}
X		break;
X	}
X }
X
Xinit_cmds ()
X{
X#ifdef INIT
Xno_new_control_sequence = FALSE;
Xprimitive("lineskip", ASSIGN_GLUE, GLUE_BASE + LINE_SKIP_CODE); 
Xprimitive("baselineskip", ASSIGN_GLUE, GLUE_BASE + BASELINE_SKIP_CODE); 
Xprimitive("parskip", ASSIGN_GLUE, GLUE_BASE + PAR_SKIP_CODE); 
Xprimitive("abovedisplayskip", ASSIGN_GLUE,
XGLUE_BASE + ABOVE_DISPLAY_SKIP_CODE); 
Xprimitive("abovedisplayshortskip", ASSIGN_GLUE,
XGLUE_BASE + ABOVE_DISPLAY_SHORT_SKIP_CODE); 
Xprimitive("belowdisplayskip", ASSIGN_GLUE,
XGLUE_BASE + BELOW_DISPLAY_SKIP_CODE); 
Xprimitive("belowdisplayshortskip", ASSIGN_GLUE,
XGLUE_BASE + BELOW_DISPLAY_SHORT_SKIP_CODE); 
Xprimitive("leftskip", ASSIGN_GLUE, GLUE_BASE + LEFT_SKIP_CODE); 
Xprimitive("rightskip", ASSIGN_GLUE, GLUE_BASE + RIGHT_SKIP_CODE); 
Xprimitive("topskip", ASSIGN_GLUE, GLUE_BASE + TOP_SKIP_CODE); 
Xprimitive("splittopskip", ASSIGN_GLUE, GLUE_BASE + SPLIT_TOP_SKIP_CODE); 
Xprimitive("tabskip", ASSIGN_GLUE, GLUE_BASE + TAB_SKIP_CODE); 
Xprimitive("spaceskip", ASSIGN_GLUE, GLUE_BASE + SPACE_SKIP_CODE); 
Xprimitive("xspaceskip", ASSIGN_GLUE, GLUE_BASE + XSPACE_SKIP_CODE); 
Xprimitive("parfillskip", ASSIGN_GLUE, GLUE_BASE + PAR_FILL_SKIP_CODE); 
Xprimitive("thinmuskip", ASSIGN_MU_GLUE, GLUE_BASE + THIN_MU_SKIP_CODE); 
Xprimitive("medmuskip", ASSIGN_MU_GLUE, GLUE_BASE + MED_MU_SKIP_CODE); 
Xprimitive("thickmuskip", ASSIGN_MU_GLUE, GLUE_BASE + THICK_MU_SKIP_CODE); 
Xprimitive("output", ASSIGN_TOKS, OUTPUT_ROUTINE_LOC);
Xprimitive("everycr", ASSIGN_TOKS, EVERY_CR_LOC);
Xprimitive("everypar", ASSIGN_TOKS, EVERY_PAR_LOC);
Xprimitive("everymath", ASSIGN_TOKS, EVERY_MATH_LOC);
Xprimitive("everydisplay", ASSIGN_TOKS, EVERY_DISPLAY_LOC);
Xprimitive("everyhbox", ASSIGN_TOKS, EVERY_HBOX_LOC);
Xprimitive("everyvbox", ASSIGN_TOKS, EVERY_VBOX_LOC);
Xprimitive("everyjob", ASSIGN_TOKS, EVERY_JOB_LOC);
Xprimitive("errhelp", ASSIGN_TOKS, ERR_HELP_LOC);
Xprimitive("pretolerance", ASSIGN_INT, INT_BASE + PRETOLERANCE_CODE);
Xprimitive("tolerance", ASSIGN_INT, INT_BASE + TOLERANCE_CODE);
Xprimitive("linepenalty", ASSIGN_INT, INT_BASE + LINE_PENALTY_CODE);
Xprimitive("hyphenpenalty", ASSIGN_INT, INT_BASE + HYPHEN_PENALTY_CODE);
Xprimitive("exhyphenpenalty", ASSIGN_INT, INT_BASE + EX_HYPHEN_PENALTY_CODE);
Xprimitive("clubpenalty", ASSIGN_INT, INT_BASE + CLUB_PENALTY_CODE);
Xprimitive("widowpenalty", ASSIGN_INT, INT_BASE + WIDOW_PENALTY_CODE);
Xprimitive("displaywidowpenalty", ASSIGN_INT,
XINT_BASE + DISPLAY_WIDOW_PENALTY_CODE);
Xprimitive("brokenpenalty", ASSIGN_INT, INT_BASE + BROKEN_PENALTY_CODE);
Xprimitive("binoppenalty", ASSIGN_INT, INT_BASE + BIN_OP_PENALTY_CODE);
Xprimitive("relpenalty", ASSIGN_INT, INT_BASE + REL_PENALTY_CODE);
Xprimitive("predisplaypenalty", ASSIGN_INT,
XINT_BASE + PRE_DISPLAY_PENALTY_CODE);
Xprimitive("postdisplaypenalty", ASSIGN_INT,
XINT_BASE + POST_DISPLAY_PENALTY_CODE);
Xprimitive("interlinepenalty", ASSIGN_INT,
XINT_BASE + INTER_LINE_PENALTY_CODE);
Xprimitive("doublehyphendemerits", ASSIGN_INT,
XINT_BASE + DOUBLE_HYPHEN_DEMERITS_CODE);
Xprimitive("finalhyphendemerits", ASSIGN_INT,
XINT_BASE + FINAL_HYPHEN_DEMERITS_CODE);
Xprimitive("adjdemerits", ASSIGN_INT, INT_BASE + ADJ_DEMERITS_CODE);
Xprimitive("mag", ASSIGN_INT, INT_BASE + MAG_CODE);
Xprimitive("delimiterfactor", ASSIGN_INT, INT_BASE + DELIMITER_FACTOR_CODE);
Xprimitive("looseness", ASSIGN_INT, INT_BASE + LOOSENESS_CODE);
Xprimitive("time", ASSIGN_INT, INT_BASE + TIME_CODE);
Xprimitive("day", ASSIGN_INT, INT_BASE + DAY_CODE);
Xprimitive("month", ASSIGN_INT, INT_BASE + MONTH_CODE);
Xprimitive("year", ASSIGN_INT, INT_BASE + YEAR_CODE);
Xprimitive("showboxbreadth", ASSIGN_INT, INT_BASE + SHOW_BOX_BREADTH_CODE);
Xprimitive("showboxdepth", ASSIGN_INT, INT_BASE + SHOW_BOX_DEPTH_CODE);
Xprimitive("hbadness", ASSIGN_INT, INT_BASE + HBADNESS_CODE);
Xprimitive("vbadness", ASSIGN_INT, INT_BASE + VBADNESS_CODE);
Xprimitive("pausing", ASSIGN_INT, INT_BASE + PAUSING_CODE);
Xprimitive("tracingonline", ASSIGN_INT, INT_BASE + TRACING_ONLINE_CODE);
Xprimitive("tracingmacros", ASSIGN_INT, INT_BASE + TRACING_MACROS_CODE);
Xprimitive("tracingstats", ASSIGN_INT, INT_BASE + TRACING_STATS_CODE);
Xprimitive("tracingoutput", ASSIGN_INT, INT_BASE + TRACING_OUTPUT_CODE);
Xprimitive("tracingparagraphs", ASSIGN_INT, INT_BASE + TRACING_PARAGRAPHS_CODE);
Xprimitive("tracingpages", ASSIGN_INT, INT_BASE + TRACING_PAGES_CODE);
Xprimitive("tracinglostchars", ASSIGN_INT, INT_BASE + TRACING_LOST_CHARS_CODE);
Xprimitive("tracingcommands", ASSIGN_INT, INT_BASE + TRACING_COMMANDS_CODE);
Xprimitive("tracingrestores", ASSIGN_INT, INT_BASE + TRACING_RESTORES_CODE);
Xprimitive("uchyph", ASSIGN_INT, INT_BASE + UC_HYPH_CODE);
Xprimitive("outputpenalty", ASSIGN_INT, INT_BASE + OUTPUT_PENALTY_CODE);
Xprimitive("maxdeadcycles", ASSIGN_INT, INT_BASE + MAX_DEAD_CYCLES_CODE);
Xprimitive("floatingpenalty", ASSIGN_INT, INT_BASE + FLOATING_PENALTY_CODE);
Xprimitive("globaldefs", ASSIGN_INT, INT_BASE + GLOBAL_DEFS_CODE);
Xprimitive("fam", ASSIGN_INT, INT_BASE + CUR_FAM_CODE);
Xprimitive("escapechar", ASSIGN_INT, INT_BASE + ESCAPE_CHAR_CODE);
Xprimitive("defaulthyphenchar", ASSIGN_INT, INT_BASE + DEFAULT_HYPHEN_CHAR_CODE);
Xprimitive("defaultskewchar", ASSIGN_INT, INT_BASE + DEFAULT_SKEW_CHAR_CODE);
Xprimitive("endlinechar", ASSIGN_INT, INT_BASE + END_LINE_CHAR_CODE);
Xprimitive("newlinechar", ASSIGN_INT, INT_BASE + NEW_LINE_CHAR_CODE);
Xprimitive("parindent", ASSIGN_DIMEN, DIMEN_BASE + PAR_INDENT_CODE);
Xprimitive("mathsurround", ASSIGN_DIMEN, DIMEN_BASE + MATH_SURROUND_CODE);
Xprimitive("lineskiplimit", ASSIGN_DIMEN, DIMEN_BASE + LINE_SKIP_LIMIT_CODE);
Xprimitive("hsize", ASSIGN_DIMEN, DIMEN_BASE + HSIZE_CODE);
Xprimitive("vsize", ASSIGN_DIMEN, DIMEN_BASE + VSIZE_CODE);
Xprimitive("maxdepth", ASSIGN_DIMEN, DIMEN_BASE + MAX_DEPTH_CODE);
Xprimitive("splitmaxdepth", ASSIGN_DIMEN, DIMEN_BASE + SPLIT_MAX_DEPTH_CODE);
Xprimitive("boxmaxdepth", ASSIGN_DIMEN, DIMEN_BASE + BOX_MAX_DEPTH_CODE);
Xprimitive("hfuzz", ASSIGN_DIMEN, DIMEN_BASE + HFUZZ_CODE);
Xprimitive("vfuzz", ASSIGN_DIMEN, DIMEN_BASE + VFUZZ_CODE);
Xprimitive("delimitershortfall", ASSIGN_DIMEN,
XDIMEN_BASE + DELIMITER_SHORTFALL_CODE);
Xprimitive("nulldelimiterspace", ASSIGN_DIMEN,
XDIMEN_BASE + NULL_DELIMITER_SPACE_CODE);
Xprimitive("scriptspace", ASSIGN_DIMEN, DIMEN_BASE + SCRIPT_SPACE_CODE);
Xprimitive("predisplaysize", ASSIGN_DIMEN, DIMEN_BASE + PRE_DISPLAY_SIZE_CODE);
Xprimitive("displaywidth", ASSIGN_DIMEN, DIMEN_BASE + DISPLAY_WIDTH_CODE);
Xprimitive("displayindent", ASSIGN_DIMEN, DIMEN_BASE + DISPLAY_INDENT_CODE);
Xprimitive("overfullrule", ASSIGN_DIMEN, DIMEN_BASE + OVERFULL_RULE_CODE);
Xprimitive("hangafter", ASSIGN_INT, INT_BASE + HANG_AFTER_CODE);
Xprimitive("hangindent", ASSIGN_DIMEN, DIMEN_BASE + HANG_INDENT_CODE);
Xprimitive("hoffset", ASSIGN_DIMEN, DIMEN_BASE + H_OFFSET_CODE);
Xprimitive("voffset", ASSIGN_DIMEN, DIMEN_BASE + V_OFFSET_CODE);
Xprimitive(" ", EX_SPACE, 0);
Xprimitive("/", ITAL_CORR, 0);
Xprimitive("accent", ACCENT, 0);
Xprimitive("advance", ADVANCE, 0);
Xprimitive("afterassignment", AFTER_ASSIGNMENT, 0);
Xprimitive("aftergroup", AFTER_GROUP, 0);
Xprimitive("begingroup", BEGIN_GROUP, 0);
Xprimitive("char", CHAR_NUM, 0);
Xprimitive("csname", CS_NAME, 0);
Xprimitive("font", DEF_FONT, 0);
Xprimitive("fontdimen", ASSIGN_FONT_DIMEN, 0);
Xprimitive("nullfont", SET_FONT, NULL_FONT);
Xeqtb[FROZEN_NULL_FONT] = eqtb[cur_val];
Xfont_name[NULL_FONT] =
Xtext(FROZEN_NULL_FONT) = text(cur_val);
Xfont_area[NULL_FONT] = null_str;
Xprimitive("delimiter", DELIM_NUM, 0);
Xprimitive("divide", DIVIDE, 0);
Xprimitive("endcsname", END_CS_NAME, 0);
Xprimitive("endgroup", END_GROUP, 0);
Xtext(FROZEN_END_GROUP) = make_string_given("endgroup");
Xeqtb[FROZEN_END_GROUP] = eqtb[cur_val];
Xprimitive("expandafter", EXPAND_AFTER, 0);
Xprimitive("halign", HALIGN, 0);
Xprimitive("hrule", HRULE, 0);
Xprimitive("ignorespaces", IGNORE_SPACES, 0);
Xprimitive("insert", INSERT, 0);
Xprimitive("mark", MARK, 0);
Xprimitive("topmark", TOP_BOT_MARK, TOP_MARK_CODE);
Xprimitive("firstmark", TOP_BOT_MARK, FIRST_MARK_CODE);
Xprimitive("botmark", TOP_BOT_MARK, BOT_MARK_CODE);
Xprimitive("splitfirstmark", TOP_BOT_MARK, SPLIT_FIRST_MARK_CODE);
Xprimitive("splitbotmark", TOP_BOT_MARK, SPLIT_BOT_MARK_CODE);
Xprimitive("mathaccent", MATH_ACCENT, 0);
Xprimitive("mathchar", MATH_CHAR_NUM, 0);
Xprimitive("mathchoice", MATH_CHOICE, 0);
Xprimitive("multiply", MULTIPLY, 0);
Xprimitive("noalign", NO_ALIGN, 0);
Xprimitive("noexpand", NO_EXPAND, 0);
Xeq_type(FROZEN_DONT_EXPAND) = DONT_EXPAND;
Xtext(FROZEN_DONT_EXPAND) = make_string_given("notexpanded:");
Xprimitive("nonscript", NON_SCRIPT, 0);
Xprimitive("omit", OMIT, 0);
Xprimitive("parshape", SET_SHAPE, 0);
Xprimitive("penalty", BREAK_PENALTY, 0);
Xprimitive("prevgraf", SET_PREV_GRAF, 0);
Xprimitive("radical", RADICAL, 0);
Xprimitive("read", READ_TO_CS, 0);
Xprimitive("relax", RELAX, 256);
Xtext(FROZEN_RELAX) = make_string_given("relax");
Xeqtb[FROZEN_RELAX] = eqtb[cur_val];
Xprimitive("setbox", SET_BOX, 0);
Xprimitive("the", THE, 0);
Xprimitive("toks", TOKS_REGISTER, 0);
Xprimitive("vadjust", VADJUST, 0);
Xprimitive("valign", VALIGN, 0);
Xprimitive("vcenter", VCENTER, 0);
Xprimitive("vrule", VRULE, 0);
Xprimitive("par", PAR_END, 0);
Xpar_loc = cur_val; par_token = CS_TOKEN_FLAG + par_loc;
Xprimitive("count", REGISTER, INT_VAL);
Xprimitive("dimen", REGISTER, DIMEN_VAL);
Xprimitive("skip", REGISTER, GLUE_VAL);
Xprimitive("muskip", REGISTER, MU_VAL);
Xprimitive("spacefactor", SET_AUX, HMODE);
Xprimitive("prevdepth", SET_AUX, VMODE);
Xprimitive("deadcycles", SET_PAGE_INT, 0);
Xprimitive("insertpenalties", SET_PAGE_INT, 1);
Xprimitive("wd", SET_BOX_DIMEN, WIDTH_OFFSET);
Xprimitive("ht", SET_BOX_DIMEN, HEIGHT_OFFSET);
Xprimitive("dp", SET_BOX_DIMEN, DEPTH_OFFSET);
Xprimitive("pagegoal", SET_PAGE_DIMEN, 0);
Xprimitive("pagetotal", SET_PAGE_DIMEN, 1);
Xprimitive("pagestretch", SET_PAGE_DIMEN, 2);
Xprimitive("pagefilstretch", SET_PAGE_DIMEN, 3);
Xprimitive("pagefillstretch", SET_PAGE_DIMEN, 4);
Xprimitive("pagefilllstretch", SET_PAGE_DIMEN, 5);
Xprimitive("pageshrink", SET_PAGE_DIMEN, 6);
Xprimitive("pagedepth", SET_PAGE_DIMEN, 7);
Xprimitive("lastpenalty", LAST_ITEM, INT_VAL);
Xprimitive("lastkern", LAST_ITEM, DIMEN_VAL);
Xprimitive("lastskip", LAST_ITEM, GLUE_VAL);
Xprimitive("input", INPUT, 0);
Xprimitive("endinput", INPUT, 1);
Xprimitive("number", CONVERT, NUMBER_CODE);
Xprimitive("romannumeral", CONVERT, ROMAN_NUMERAL_CODE);
Xprimitive("string", CONVERT, STRING_CODE);
Xprimitive("meaning", CONVERT, MEANING_CODE);
Xprimitive("fontname", CONVERT, FONT_NAME_CODE);
Xprimitive("jobname", CONVERT, JOB_NAME_CODE);
Xprimitive("if", IF_TEST, IF_CHAR_CODE);
Xprimitive("ifcat", IF_TEST, IF_CAT_CODE);
Xprimitive("ifnum", IF_TEST, IF_INT_CODE);
Xprimitive("ifdim", IF_TEST, IF_DIM_CODE);
Xprimitive("ifodd", IF_TEST, IF_ODD_CODE);
Xprimitive("ifvmode", IF_TEST, IF_VMODE_CODE);
Xprimitive("ifhmode", IF_TEST, IF_HMODE_CODE);
Xprimitive("ifmmode", IF_TEST, IF_MMODE_CODE);
Xprimitive("ifinner", IF_TEST, IF_INNER_CODE);
Xprimitive("ifvoid", IF_TEST, IF_VOID_CODE);
Xprimitive("ifhbox", IF_TEST, IF_HBOX_CODE);
Xprimitive("ifvbox", IF_TEST, IF_VBOX_CODE);
Xprimitive("ifx", IF_TEST, IFX_CODE);
Xprimitive("ifeof", IF_TEST, IF_EOF_CODE);
Xprimitive("iftrue", IF_TEST, IF_TRUE_CODE);
Xprimitive("iffalse", IF_TEST, IF_FALSE_CODE);
Xprimitive("ifcase", IF_TEST, IF_CASE_CODE);
Xprimitive("fi", FI_OR_ELSE, FI_CODE); 
Xtext(FROZEN_FI) = make_string_given("fi");
Xeqtb[FROZEN_FI] = eqtb[cur_val];
Xprimitive("or", FI_OR_ELSE, OR_CODE);
Xprimitive("else", FI_OR_ELSE, ELSE_CODE);
Xprimitive("hskip", HSKIP, SKIP_CODE);
Xprimitive("hfil", HSKIP, FIL_CODE);
Xprimitive("hfill", HSKIP, FILL_CODE);
Xprimitive("hss", HSKIP, SS_CODE);
Xprimitive("hfilneg",  HSKIP, FIL_NEG_CODE);
Xprimitive("vskip", VSKIP, SKIP_CODE);
Xprimitive("vfil", VSKIP, FIL_CODE);
Xprimitive("vfill", VSKIP, FILL_CODE);
Xprimitive("vss", VSKIP, SS_CODE);
Xprimitive("vfilneg", VSKIP, FIL_NEG_CODE);
Xprimitive("mskip", MSKIP, MSKIP_CODE);
Xprimitive("kern", KERN, EXPLICIT);
Xprimitive("mkern", MKERN, MU_GLUE);
Xprimitive("moveleft", HMOVE, 1);
Xprimitive("moveright", HMOVE, 0);
Xprimitive("raise", VMOVE, 1);
Xprimitive("lower", VMOVE, 0);
Xprimitive("box", MAKE_BOX, BOX_CODE);
Xprimitive("copy", MAKE_BOX, COPY_CODE);
Xprimitive("lastbox", MAKE_BOX, LAST_BOX_CODE);
Xprimitive("vsplit", MAKE_BOX, VSPLIT_CODE);
Xprimitive("vtop", MAKE_BOX, VTOP_CODE);
Xprimitive("vbox", MAKE_BOX, VTOP_CODE + VMODE);
Xprimitive("hbox", MAKE_BOX, VTOP_CODE + HMODE);
Xprimitive("indent", START_PAR, 1);
Xprimitive("noindent", START_PAR, 0);
Xprimitive("shipout", LEADER_SHIP, A_LEADERS - 1);
Xprimitive("leaders", LEADER_SHIP, A_LEADERS);
Xprimitive("cleaders", LEADER_SHIP, C_LEADERS);
Xprimitive("xleaders", LEADER_SHIP, X_LEADERS);
Xprimitive("unpenalty", REMOVE_ITEM, PENALTY_NODE);
Xprimitive("unkern", REMOVE_ITEM, KERN_NODE);
Xprimitive("unskip", REMOVE_ITEM, GLUE_NODE);
Xprimitive("unhbox", UN_HBOX, BOX_CODE);
Xprimitive("unhcopy", UN_HBOX, COPY_CODE);
Xprimitive("unvbox", UN_VBOX, BOX_CODE);
Xprimitive("unvcopy", UN_VBOX, COPY_CODE);
Xprimitive("discretionary", DISCRETIONARY, 0);
Xprimitive("-", DISCRETIONARY, 1);
Xprimitive("eqno", EQ_NO, 0);
Xprimitive("leqno", EQ_NO, 1);
Xprimitive("mathord", MATH_COMP, ORD_NOAD);
Xprimitive("mathop", MATH_COMP, OP_NOAD);
Xprimitive("mathbin", MATH_COMP, BIN_NOAD);
Xprimitive("mathrel", MATH_COMP, REL_NOAD);
Xprimitive("mathopen", MATH_COMP, OPEN_NOAD);
Xprimitive("mathclose", MATH_COMP, CLOSE_NOAD);
Xprimitive("mathpunct", MATH_COMP, PUNCT_NOAD);
Xprimitive("mathinner", MATH_COMP, INNER_NOAD);
Xprimitive("underline", MATH_COMP, UNDER_NOAD);
Xprimitive("overline", MATH_COMP, OVER_NOAD);
Xprimitive("displaylimits", LIMIT_SWITCH, NORMAL);
Xprimitive("limits", LIMIT_SWITCH, LIMITS);
Xprimitive("nolimits", LIMIT_SWITCH, NO_LIMITS);
Xprimitive("displaystyle", MATH_STYLE, DISPLAY_STYLE);
Xprimitive("textstyle", MATH_STYLE, TEXT_STYLE);
Xprimitive("scriptstyle", MATH_STYLE, SCRIPT_STYLE);
Xprimitive("scriptscriptstyle", MATH_STYLE, SCRIPT_SCRIPT_STYLE);
Xprimitive("above", ABOVE, ABOVE_CODE);
Xprimitive("over", ABOVE, OVER_CODE);
Xprimitive("atop", ABOVE, ATOP_CODE);
Xprimitive("abovewithdelims", ABOVE, DELIMITED_CODE + ABOVE_CODE);
Xprimitive("overwithdelims", ABOVE, DELIMITED_CODE + OVER_CODE);
Xprimitive("atopwithdelims", ABOVE, DELIMITED_CODE + ATOP_CODE);
Xprimitive("left", LEFT_RIGHT, LEFT_NOAD);
Xprimitive("right", LEFT_RIGHT, RIGHT_NOAD);
Xtext(FROZEN_RIGHT) = make_string_given("right");
Xeqtb[FROZEN_RIGHT] = eqtb[cur_val];
Xprimitive("span", TAB_MARK, SPAN_CODE);
Xprimitive("cr", CAR_RET, CR_CODE);
Xtext(FROZEN_CR) = text(cur_val);
Xeqtb[FROZEN_CR] = eqtb[cur_val];
Xprimitive("crcr", CAR_RET, CR_CR_CODE);
Xtext(FROZEN_END_TEMPLATE) = make_string_given("endtemplate");
Xtext(FROZEN_ENDV) = text(FROZEN_END_TEMPLATE);
Xeq_type(FROZEN_ENDV) = ENDV;
Xequiv(FROZEN_ENDV) = null_list;
Xeq_level(FROZEN_ENDV) = LEVEL_ONE;
Xeqtb[FROZEN_END_TEMPLATE] = eqtb[FROZEN_ENDV];
Xeq_type(FROZEN_END_TEMPLATE) = END_TEMPLATE;
Xprimitive("long", PREFIX, 1);
Xprimitive("outer", PREFIX, 2);
Xprimitive("global", PREFIX, 4);
Xprimitive("def", DEF, 0);
Xprimitive("gdef", DEF, 1);
Xprimitive("edef", DEF, 2);
Xprimitive("xdef", DEF, 3);
Xprimitive("let", LET, NORMAL);
Xprimitive("futurelet", LET, NORMAL + 1);
Xprimitive("chardef", SHORTHAND_DEF, CHAR_DEF_CODE);
Xprimitive("mathchardef", SHORTHAND_DEF, MATH_CHAR_DEF_CODE);
Xprimitive("countdef", SHORTHAND_DEF, COUNT_DEF_CODE);
Xprimitive("dimendef", SHORTHAND_DEF, DIMEN_DEF_CODE);
Xprimitive("skipdef", SHORTHAND_DEF, SKIP_DEF_CODE);
Xprimitive("muskipdef", SHORTHAND_DEF, MU_SKIP_DEF_CODE);
Xprimitive("toksdef", SHORTHAND_DEF, TOKS_DEF_CODE);
Xprimitive("catcode", DEF_CODE, CAT_CODE_BASE);
Xprimitive("mathcode", DEF_CODE, MATH_CODE_BASE);
Xprimitive("lccode", DEF_CODE, LC_CODE_BASE);
Xprimitive("uccode", DEF_CODE, UC_CODE_BASE);
Xprimitive("sfcode", DEF_CODE, SF_CODE_BASE);
Xprimitive("delcode", DEF_CODE, DEL_CODE_BASE);
Xprimitive("textfont", DEF_FAMILY, MATH_FONT_BASE); 
Xprimitive("scriptfont", DEF_FAMILY, MATH_FONT_BASE + SCRIPT_SIZE);
Xprimitive("scriptscriptfont", DEF_FAMILY, MATH_FONT_BASE + SCRIPT_SCRIPT_SIZE);
Xprimitive("hyphenation", HYPH_DATA, 0);
Xprimitive("patterns", HYPH_DATA, 1);
Xprimitive("hyphenchar", ASSIGN_FONT_INT, 0);
Xprimitive("skewchar", ASSIGN_FONT_INT, 1);
Xprimitive("batchmode", SET_INTERACTION,  BATCH_MODE);
Xprimitive("nonstopmode", SET_INTERACTION, NONSTOP_MODE);
Xprimitive("scrollmode", SET_INTERACTION, SCROLL_MODE);
Xprimitive("errorstopmode", SET_INTERACTION, ERROR_STOP_MODE);
Xprimitive("closein", IN_STREAM, 0);
Xprimitive("openin", IN_STREAM, 1);
Xprimitive("message", MESSAGE, 0);
Xprimitive("errmessage", MESSAGE, 1);
Xprimitive("lowercase", CASE_SHIFT, LC_CODE_BASE);
Xprimitive("uppercase", CASE_SHIFT, UC_CODE_BASE);
Xprimitive("show", XRAY, SHOW_CODE);
Xprimitive("showbox", XRAY, SHOW_BOX_CODE);
Xprimitive("showthe", XRAY, SHOW_THE_CODE);
Xprimitive("showlists", XRAY, SHOW_LISTS);
Xprimitive("openout", EXTENSION, OPEN_NODE);
Xprimitive("write", EXTENSION, WRITE_NODE);
Xwrite_loc = cur_val;
Xtext(END_WRITE) = make_string_given("endwrite");
Xeq_level(END_WRITE) = LEVEL_ONE;
Xeq_type(END_WRITE) = OUTER_CALL;
Xequiv(END_WRITE) = NULL;
Xprimitive("closeout", EXTENSION, CLOSE_NODE);
Xprimitive("special", EXTENSION, SPECIAL_NODE);
Xprimitive("immediate", EXTENSION, IMMEDIATE_CODE);
Xprimitive("end", STOP, 0);
Xprimitive("dump", STOP, 1);
Xtext(FROZEN_PROTECTION) = make_string_given("inaccessible");
Xno_new_control_sequence = TRUE;
X#endif
X}
SHAR_EOF
chmod 0444 cmds.c || echo "restore of cmds.c fails"
set `wc -c cmds.c`;Sum=$1
if test "$Sum" != "33231"
then echo original size 33231, current size $Sum;fi
echo "x - extracting cmds.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > cmds.h &&
X
X/*
X *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
X *    Copying of this file is granted according to the provisions 
X *    specified in the file COPYING which must accompany this file.
X */
X
X
X/*
X *		cmds.h
X */
X
X#define	ESCAPE				0
X#define	RELAX				0
X#define	LEFT_BRACE			1
X#define	RIGHT_BRACE			2
X#define	MATH_SHIFT			3
X#define	TAB_MARK			4
X#define	CAR_RET				5
X#define	OUT_PARAM			5
X#define	MAC_PARAM			6
X#define	SUP_MARK			7
X#define	SUB_MARK			8
X#define	IGNORE				9
X#define	ENDV				9
X#define	SPACER				10
X#define	LETTER				11
X#define	OTHER_CHAR			12
X#define	ACTIVE_CHAR			13
X#define	PAR_END				13
X#define	MATCH				13
X#define	COMMENT				14
X#define	END_MATCH			14
X#define	STOP				14
X#define	INVALID_CHAR		15
X#define	DELIM_NUM			15
X#define	MAX_CHAR_CODE		15
X#define	CHAR_NUM			16
X#define	MATH_CHAR_NUM		17
X#define	MARK				18
X#define	XRAY				19
X#define	MAKE_BOX			20
X#define	HMOVE				21
X#define	VMOVE				22
X#define	UN_HBOX				23
X#define	UN_VBOX				24
X#define	REMOVE_ITEM			25
X#define	HSKIP				26
X#define	VSKIP				27
X#define	MSKIP				28
X#define	KERN				29
X#define	MKERN				30
X#define	LEADER_SHIP			31
X#define	HALIGN				32
X#define	VALIGN				33
X#define	NO_ALIGN			34
X#define	VRULE				35
X#define	HRULE				36
X#define	INSERT				37
X#define	VADJUST				38
X#define	IGNORE_SPACES		39
X#define	AFTER_ASSIGNMENT	40
X#define	AFTER_GROUP			41
X#define	BREAK_PENALTY		42
X#define	START_PAR			43
X#define	ITAL_CORR			44
X#define	ACCENT				45
X#define	MATH_ACCENT			46
X#define	DISCRETIONARY		47
X#define	EQ_NO				48
X#define	LEFT_RIGHT			49
X#define	MATH_COMP			50
X#define	LIMIT_SWITCH		51
X#define	ABOVE				52
X#define	MATH_STYLE			53
X#define	MATH_CHOICE			54
X#define	NON_SCRIPT			55
X#define	VCENTER				56
X#define	CASE_SHIFT			57
X#define	MESSAGE				58
X#define	EXTENSION			59
X#define	IN_STREAM			60
X#define	BEGIN_GROUP			61
X#define	END_GROUP			62
X#define	OMIT				63
X#define	EX_SPACE			64
X#define	RADICAL				65
X#define	END_CS_NAME			66
X#define	MIN_INTERNAL		67
X#define	CHAR_GIVEN			67
X#define	MATH_GIVEN			68
X#define	LAST_ITEM			69
X
X#define	MAX_NON_PREFIXED_COMMAND	69
X
X#define	TOKS_REGISTER		70
X#define	ASSIGN_TOKS			71
X#define	ASSIGN_INT			72
X#define	ASSIGN_DIMEN		73
X#define	ASSIGN_GLUE			74
X#define	ASSIGN_MU_GLUE		75
X#define	ASSIGN_FONT_DIMEN	76
X#define	ASSIGN_FONT_INT		77
X#define	SET_AUX				78
X#define	SET_PREV_GRAF		79
X#define	SET_PAGE_DIMEN		80
X#define	SET_PAGE_INT		81
X#define	SET_BOX_DIMEN		82
X#define	SET_SHAPE			83
X#define	DEF_CODE			84
X#define	DEF_FAMILY			85
X#define	SET_FONT			86
X#define	DEF_FONT			87
X#define	REGISTER			88
X#define	MAX_INTERNAL		88
X#define	ADVANCE				89
X#define	MULTIPLY			90
X#define	DIVIDE				91
X#define	PREFIX				92
X#define	LET					93
X#define	SHORTHAND_DEF		94
X#define	READ_TO_CS			95
X#define	DEF					96
X#define	SET_BOX				97
X#define	HYPH_DATA			98
X#define	SET_INTERACTION		99
X#define	MAX_COMMAND			99
X
X#define	UNDEFINED_CS		(MAX_COMMAND + 1)
X#define	EXPAND_AFTER		(MAX_COMMAND + 2)
X#define	NO_EXPAND			(MAX_COMMAND + 3)
X#define	INPUT				(MAX_COMMAND + 4)
X#define	IF_TEST				(MAX_COMMAND + 5)
X#define	FI_OR_ELSE			(MAX_COMMAND + 6)
X#define	CS_NAME				(MAX_COMMAND + 7)
X#define	CONVERT				(MAX_COMMAND + 8)
X#define	THE					(MAX_COMMAND + 9)
X#define	TOP_BOT_MARK		(MAX_COMMAND + 10)
SHAR_EOF
echo "End of part 4"
echo "File cmds.h is continued in part 5"
echo "5" > s2_seq_.tmp
exit 0



More information about the Comp.unix.xenix mailing list