Created
September 1, 2021 13:33
-
-
Save sbinet/0bb8000488ee75f56f66d8d40f5a8281 to your computer and use it in GitHub Desktop.
XeTeX
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* This file is auto-generated by makecpool. | |
* web2c/makecpool xetex | |
*/ | |
#define EXTERN extern | |
#include "xetexd.h" | |
#include <stdio.h> | |
#include <string.h> | |
static const char *poolfilearr[] = { | |
".6", | |
".999993", | |
"buffer size", | |
"pool size", | |
"number of strings", | |
"" "?" "?" "?", | |
"m2d5c2l5x2v5i", | |
"End of file on the terminal!", | |
"! ", | |
"(That makes 100 errors; please try again.)", | |
"" "? ", | |
"Type <return> to proceed, S to scroll future error messages,", | |
"R to run without stopping, Q to run quietly,", | |
"I to insert something, ", | |
"E to edit your file,", | |
"1 or ... or 9 to ignore the next 1 to 9 tokens of input,", | |
"H for help, X to quit.", | |
"OK, entering ", | |
"batchmode", | |
"nonstopmode", | |
"scrollmode", | |
"...", | |
"insert>", | |
"I have just deleted some text, as you asked.", | |
"You can now delete more, or insert, or whatever.", | |
"Sorry, I don't know how to help in this situation.", | |
"Maybe you should try asking a human" "?", | |
"Sorry, I already gave what help I could...", | |
"An error might have occurred before I noticed any problems.", | |
"``If all else fails, read the instructions.''", | |
" (", | |
"Emergency stop", | |
"TeX capacity exceeded, sorry [", | |
"If you really absolutely need more capacity,", | |
"you can ask a wizard to enlarge me.", | |
"This can't happen (", | |
"I'm broken. Please show this to someone who can fix can fix", | |
"I can't go on meeting you like this", | |
"One of your faux pas seems to have wounded me deeply...", | |
"in fact, I'm barely conscious. Please fix it and try again.", | |
"Interruption", | |
"You rang" "?", | |
"Try to insert an instruction for me (e.g., `I\\showlists'),", | |
"unless you just want to quit by typing `X'.", | |
"Logarithm of ", | |
" has been replaced by 0", | |
"Since I don't take logs of non-positive numbers,", | |
"I'm zeroing this one. Proceed, with fingers crossed.", | |
"main memory size", | |
"AVAIL list clobbered at ", | |
"Double-AVAIL list clobbered at ", | |
"Doubly free location at ", | |
"Bad flag at ", | |
"New busy locs:", | |
"LINK(", | |
"INFO(", | |
"Error", | |
": ", | |
"[]", | |
"CLOBBERED.", | |
"foul", | |
"fil", | |
" plus ", | |
" minus ", | |
" []", | |
"Bad link, display aborted.", | |
"etc.", | |
"kern", | |
" (left margin)", | |
" (right margin)", | |
"Unknown node type!", | |
"unset", | |
"box(", | |
")x", | |
", shifted ", | |
" columns)", | |
", stretch ", | |
", shrink ", | |
", glue set ", | |
"- ", | |
"< -", | |
"rule(", | |
"insert", | |
", natural size ", | |
"; split(", | |
"); float cost ", | |
"glue", | |
"nonscript", | |
"mskip", | |
"mu", | |
"", | |
"leaders ", | |
" (for accent)", | |
" (space adjustment)", | |
"mkern", | |
"end", | |
"begin", | |
"math", | |
"on", | |
"off", | |
", surrounded ", | |
" (ligature ", | |
"penalty ", | |
"discretionary", | |
" replacing ", | |
"mark", | |
"vadjust", | |
" pre ", | |
"flushing", | |
"copying", | |
"vertical mode", | |
"horizontal mode", | |
"display math mode", | |
"no mode", | |
"internal vertical mode", | |
"restricted horizontal mode", | |
"math mode", | |
"' in vertical mode", | |
"' in horizontal mode", | |
"' in display math mode", | |
"' in no mode", | |
"' in internal vertical mode", | |
"' in restricted horizontal mode", | |
"' in math mode", | |
"semantic nest size", | |
"### ", | |
" entered at line ", | |
" (language", | |
":hyphenmin", | |
" (\\output routine)", | |
"### recent contributions:", | |
"prevdepth ", | |
"ignored", | |
", prevgraf ", | |
" lines", | |
" line", | |
"spacefactor ", | |
", current language ", | |
"this will begin denominator of:", | |
"lineskip", | |
"baselineskip", | |
"parskip", | |
"abovedisplayskip", | |
"belowdisplayskip", | |
"abovedisplayshortskip", | |
"belowdisplayshortskip", | |
"leftskip", | |
"rightskip", | |
"topskip", | |
"splittopskip", | |
"tabskip", | |
"spaceskip", | |
"xspaceskip", | |
"parfillskip", | |
"XeTeXlinebreakskip", | |
"thinmuskip", | |
"medmuskip", | |
"thickmuskip", | |
"[unknown glue parameter!]", | |
"skip", | |
"muskip", | |
"pt", | |
"output", | |
"everypar", | |
"everymath", | |
"everydisplay", | |
"everyhbox", | |
"everyvbox", | |
"everyjob", | |
"everycr", | |
"errhelp", | |
"toks", | |
"ETC.", | |
"box", | |
"void", | |
"current font", | |
"textfont", | |
"scriptfont", | |
"scriptscriptfont", | |
"catcode", | |
"lccode", | |
"uccode", | |
"sfcode", | |
"mathcode", | |
"pretolerance", | |
"tolerance", | |
"linepenalty", | |
"hyphenpenalty", | |
"exhyphenpenalty", | |
"clubpenalty", | |
"widowpenalty", | |
"displaywidowpenalty", | |
"brokenpenalty", | |
"binoppenalty", | |
"relpenalty", | |
"predisplaypenalty", | |
"postdisplaypenalty", | |
"interlinepenalty", | |
"doublehyphendemerits", | |
"finalhyphendemerits", | |
"adjdemerits", | |
"mag", | |
"delimiterfactor", | |
"looseness", | |
"time", | |
"day", | |
"month", | |
"year", | |
"showboxbreadth", | |
"showboxdepth", | |
"hbadness", | |
"vbadness", | |
"pausing", | |
"tracingonline", | |
"tracingmacros", | |
"tracingstats", | |
"tracingparagraphs", | |
"tracingpages", | |
"tracingoutput", | |
"tracinglostchars", | |
"tracingcommands", | |
"tracingrestores", | |
"uchyph", | |
"outputpenalty", | |
"maxdeadcycles", | |
"hangafter", | |
"floatingpenalty", | |
"globaldefs", | |
"fam", | |
"escapechar", | |
"defaulthyphenchar", | |
"defaultskewchar", | |
"endlinechar", | |
"newlinechar", | |
"language", | |
"lefthyphenmin", | |
"righthyphenmin", | |
"holdinginserts", | |
"errorcontextlines", | |
"charsubdefmin", | |
"charsubdefmax", | |
"tracingcharsubdef", | |
"tracingstacklevels", | |
"XeTeXlinebreakpenalty", | |
"XeTeXprotrudechars", | |
"[unknown integer parameter!]", | |
"count", | |
"delcode", | |
"parindent", | |
"mathsurround", | |
"lineskiplimit", | |
"hsize", | |
"vsize", | |
"maxdepth", | |
"splitmaxdepth", | |
"boxmaxdepth", | |
"hfuzz", | |
"vfuzz", | |
"delimitershortfall", | |
"nulldelimiterspace", | |
"scriptspace", | |
"predisplaysize", | |
"displaywidth", | |
"displayindent", | |
"overfullrule", | |
"hangindent", | |
"hoffset", | |
"voffset", | |
"emergencystretch", | |
"pdfpagewidth", | |
"pdfpageheight", | |
"[unknown dimen parameter!]", | |
"dimen", | |
"EQUIV(", | |
"notexpanded:", | |
"primitive", | |
"hash size", | |
"primitive size", | |
"csname", | |
"endcsname", | |
"IMPOSSIBLE.", | |
"NONEXISTENT.", | |
"accent", | |
"advance", | |
"afterassignment", | |
"aftergroup", | |
"begingroup", | |
"char", | |
"delimiter", | |
"XeTeXdelimiter", | |
"Udelimiter", | |
"divide", | |
"endgroup", | |
"expandafter", | |
"font", | |
"fontdimen", | |
"halign", | |
"hrule", | |
"ignorespaces", | |
"mathaccent", | |
"XeTeXmathaccent", | |
"Umathaccent", | |
"mathchar", | |
"XeTeXmathcharnum", | |
"Umathcharnum", | |
"XeTeXmathchar", | |
"Umathchar", | |
"mathchoice", | |
"multiply", | |
"noalign", | |
"noboundary", | |
"noexpand", | |
"omit", | |
"parshape", | |
"penalty", | |
"prevgraf", | |
"radical", | |
"XeTeXradical", | |
"Uradical", | |
"read", | |
"relax", | |
"setbox", | |
"the", | |
"valign", | |
"vcenter", | |
"vrule", | |
"save size", | |
"grouping levels", | |
"reassigning", | |
"changing", | |
"into", | |
"globally changing", | |
"curlevel", | |
"retaining", | |
"restoring", | |
"SAVE(", | |
"Incompatible magnification (", | |
");", | |
" the previous value will be retained", | |
"I can handle only one magnification ratio per job. So I've", | |
"reverted to the magnification you used earlier on this run.", | |
"Illegal magnification has been changed to 1000", | |
"The magnification ratio must be between 1 and 32768.", | |
"BAD.", | |
"->", | |
"begin-group character ", | |
"end-group character ", | |
"math shift character ", | |
"macro parameter character ", | |
"superscript character ", | |
"subscript character ", | |
"end of alignment template", | |
"blank space ", | |
"the letter ", | |
"the character ", | |
"[unknown command code!]", | |
"(level ", | |
"Runaway definition", | |
"Runaway argument", | |
"Runaway preamble", | |
"Runaway text", | |
"<*>", | |
"<insert> ", | |
"<read ", | |
"l.", | |
"<argument> ", | |
"<template> ", | |
"<recently read> ", | |
"<to be read again> ", | |
"<inserted text> ", | |
"<output> ", | |
"<everypar> ", | |
"<everymath> ", | |
"<everydisplay> ", | |
"<everyhbox> ", | |
"<everyvbox> ", | |
"<everyjob> ", | |
"<everycr> ", | |
"<mark> ", | |
"<everyeof> ", | |
"<XeTeXinterchartoks> ", | |
"<write> ", | |
"input stack size", | |
"write", | |
"(interwoven alignment preambles are not allowed)", | |
"text input levels", | |
"par", | |
"Incomplete ", | |
"; all text was ignored after line ", | |
"A forbidden control sequence occurred in skipped text.", | |
"This kind of error happens when you say `\\if...' and forget", | |
"the matching `\\fi'. I've inserted a `\\fi'; this might work.", | |
"The file ended while I was skipping conditional text.", | |
"File ended", | |
"Forbidden control sequence found", | |
" of ", | |
"I suspect you have forgotten a `}', causing me", | |
"to read past where you wanted me to stop.", | |
"I'll try to recover; but if the error is serious,", | |
"you'd better type `E' or `X' now and fix your file.", | |
" while scanning definition", | |
" while scanning use", | |
" while scanning preamble", | |
" while scanning text", | |
"Text line contains an invalid character", | |
"A funny symbol that I can't read has just been input.", | |
"Continue, and I'll forget that it ever happened.", | |
"(Please type a command or say `\\end')", | |
"*** (job aborted, no legal \\end found)", | |
"=>", | |
"expansion depth", | |
"Undefined control sequence", | |
"The control sequence at the end of the top line", | |
"of your error message was never \\def'ed. If you have", | |
"misspelled it (e.g., `\\hobx'), type `I' and the correct", | |
"spelling (e.g., `I\\hbox'). Otherwise just continue,", | |
"and I'll forget about whatever was undefined.", | |
"Missing ", | |
" inserted", | |
"The control sequence marked <to be read again> should", | |
"not appear between \\csname and \\endcsname.", | |
"input", | |
"endinput", | |
"topmark", | |
"firstmark", | |
"botmark", | |
"splitfirstmark", | |
"splitbotmark", | |
"parameter stack size", | |
"Argument of ", | |
" has an extra }", | |
"I've run across a `}' that doesn't seem to match anything.", | |
"For example, `\\def\\a#1{...}' and `\\a}' would produce", | |
"this error. If you simply proceed now, the `\\par' that", | |
"I've just inserted will cause me to report a runaway", | |
"argument that might be the root of the problem. But if", | |
"your `}' was spurious, just type `2' and it will go away.", | |
"Paragraph ended before ", | |
" was complete", | |
"I suspect you've forgotten a `}', causing me to apply this", | |
"control sequence to too much text. How can we recover" "?", | |
"My plan is to forget the whole thing and hope for the best.", | |
"Use of ", | |
" doesn't match its definition", | |
"If you say, e.g., `\\def\\a1{...}', then you must always", | |
"put `1' after `\\a', since control sequence names are", | |
"made up of letters only. The macro here has not been", | |
"followed by the required stuff, so I'm ignoring it.", | |
"<-", | |
"Missing { inserted", | |
"A left brace was mandatory here, so I've put one in.", | |
"You might want to delete and/or insert some corrections", | |
"so that I will find a matching right brace soon.", | |
"(If you're confused by all this, try typing `I}' now.)", | |
"Incompatible glue units", | |
"I'm going to assume that 1mu=1pt when they're mixed.", | |
"Can't use \\Umathcode as a number (try \\Umathcodenum)", | |
"\\Umathcode is for setting a mathcode from separate values;", | |
"use \\Umathcodenum to access them as single values.", | |
"Can't use \\Udelcode as a number (try \\Udelcodenum)", | |
"\\Udelcode is for setting a delcode from separate values;", | |
"use \\Udelcodenum to access them as single values.", | |
"Extended mathchar used as mathchar", | |
"A mathchar number must be between 0 and \"7FFF.", | |
"I changed this one to zero.", | |
"Extended delcode used as delcode", | |
"A delimiter code must be between 0 and \"7FFFFFF.", | |
"Missing number, treated as zero", | |
"A number should have been here; I inserted `0'.", | |
"(If you can't figure out why I needed to see a number,", | |
"look up `weird error' in the index to The TeXbook.)", | |
"spacefactor", | |
"prevdepth", | |
"deadcycles", | |
"insertpenalties", | |
"wd", | |
"ht", | |
"dp", | |
"lastpenalty", | |
"lastkern", | |
"lastskip", | |
"inputlineno", | |
"badness", | |
"pdflastxpos", | |
"pdflastypos", | |
"elapsedtime", | |
"shellescape", | |
"randomseed", | |
"Improper ", | |
"You can refer to \\spacefactor only in horizontal mode;", | |
"you can refer to \\prevdepth only in vertical mode; and", | |
"neither of these is meaningful inside \\write. So", | |
"I'm forgetting what you said and using zero instead.", | |
"You can't use `", | |
"' after ", | |
"Bad character class", | |
"A character class must be between 0 and 4096.", | |
"A class for inter-character transitions must be between 0 and 4095.", | |
"Bad register code", | |
"A register code or char class must be between 0 and 255.", | |
"Bad character code", | |
"A Unicode scalar value must be between 0 and \"10FFFF.", | |
"A character number must be between 0 and 65535.", | |
"Bad active XeTeX math code", | |
"Since I ignore class and family for active math chars,", | |
"I changed this one to \"1FFFFF.", | |
"Bad XeTeX math character code", | |
"Since I expected a character number between 0 and \"10FFFF,", | |
"Bad math class", | |
"Since I expected to read a number between 0 and 7,", | |
"Bad math family", | |
"Since I expected to read a number between 0 and 255,", | |
"Bad number", | |
"Since I expected to read a number between 0 and 15,", | |
"Bad mathchar", | |
"A mathchar number must be between 0 and 32767.", | |
"Bad delimiter code", | |
"A numeric delimiter code must be between 0 and 2^{27}-1.", | |
"Improper alphabetic constant", | |
"A one-character control sequence belongs after a ` mark.", | |
"So I'm essentially inserting \\0 here.", | |
"Number too big", | |
"I can only go up to 2147483647='17777777777=\"7FFFFFFF,", | |
"so I'm using that number instead of yours.", | |
"true", | |
"Illegal unit of measure (", | |
"replaced by filll)", | |
"I dddon't go any higher than filll.", | |
"em", | |
"ex", | |
"mu inserted)", | |
"The unit of measurement in math glue must be mu.", | |
"To recover gracefully from this error, it's best to", | |
"delete the erroneous units; e.g., type `2' to delete", | |
"two letters. (See Chapter 27 of The TeXbook.)", | |
"in", | |
"pc", | |
"cm", | |
"mm", | |
"bp", | |
"dd", | |
"cc", | |
"sp", | |
"pt inserted)", | |
"Dimensions can be in units of em, ex, in, pt, pc,", | |
"cm, mm, dd, cc, bp, or sp; but yours is a new one!", | |
"I'll assume that you meant to say pt, for printer's points.", | |
"Dimension too large", | |
"I can't work with sizes bigger than about 19 feet.", | |
"Continue and I'll use the largest value I can.", | |
"plus", | |
"minus", | |
"width", | |
"height", | |
"depth", | |
"number", | |
"romannumeral", | |
"string", | |
"meaning", | |
"fontname", | |
"expanded", | |
"leftmarginkern", | |
"rightmarginkern", | |
"creationdate", | |
"filemoddate", | |
"filesize", | |
"mdfivesum", | |
"filedump", | |
"strcmp", | |
"uniformdeviate", | |
"normaldeviate", | |
"jobname", | |
"Uchar", | |
"Ucharcat", | |
"eTeXrevision", | |
"marginkern", | |
"a non-empty hbox expected", | |
"tokens", | |
"tokens_to_string() called while selector = new_string", | |
"file", | |
"offset", | |
"Bad file offset", | |
"A file offset must be between 0 and 2^{31}-1,", | |
"length", | |
"Bad dump length", | |
"A dump length must be between 0 and 2^{31}-1,", | |
"Invalid code (", | |
"), should be in the ranges 1..4, 6..8, 10..13", | |
"I'm going to use 12 instead of that illegal code value.", | |
" at ", | |
"Where was the left brace" "? You said something like `\\def\\a}',", | |
"which I'm going to interpret as `\\def\\a{}'.", | |
"You already have nine parameters", | |
"I'm going to ignore the # sign you just used,", | |
"as well as the token that followed it.", | |
"Parameters must be numbered consecutively", | |
"I've inserted the digit you should have used after the #.", | |
"Type `1' to delete what you did use.", | |
"Illegal parameter number in definition of ", | |
"You meant to type ## instead of #, right" "?", | |
"Or maybe a } was forgotten somewhere earlier, and things", | |
"are all screwed up" "? I'm going to assume that you meant ##.", | |
"*** (cannot \\read from terminal in nonstop modes)", | |
"File ended within ", | |
"This \\read has unbalanced braces.", | |
"if", | |
"ifcat", | |
"ifnum", | |
"ifdim", | |
"ifodd", | |
"ifvmode", | |
"ifhmode", | |
"ifmmode", | |
"ifinner", | |
"ifvoid", | |
"ifhbox", | |
"ifvbox", | |
"ifx", | |
"ifeof", | |
"iftrue", | |
"iffalse", | |
"ifcase", | |
"ifprimitive", | |
"unless", | |
"fi", | |
"or", | |
"else", | |
"Extra ", | |
"I'm ignoring this; it doesn't match any \\if.", | |
"{true}", | |
"{false}", | |
"Missing = inserted for ", | |
"I was expecting to see `<', `=', or `>'. Didn't.", | |
"{case ", | |
".fmt", | |
"input file name", | |
"I can't find file `", | |
"I can't write on file `", | |
"'.", | |
".tex", | |
"; default file extension is `", | |
"Please type another ", | |
"*** (job aborted, file error in nonstop mode)", | |
"file name for output", | |
".xdv", | |
".pdf", | |
"texput", | |
".fls", | |
".log", | |
"**", | |
"transcript file name", | |
" ", | |
"INPUT ", | |
"nullfont", | |
"Requested font \"", | |
" scaled ", | |
" -> font not found, using \"nullfont\"", | |
" -> ", | |
"Font ", | |
" not loadable: Bad metric (TFM) file", | |
" not loadable: Metric (TFM) file name too long", | |
" not loadable: Metric (TFM) file or installed font not found", | |
"I wasn't able to read the size data for this font,", | |
"so I will ignore the font specification.", | |
"[Wizards can fix TFM files using TFtoPL/PLtoTF.]", | |
"You might try inserting a different font spec;", | |
"e.g., type `I\\font<same font id>=<substitute font name>'.", | |
" not loaded: Not enough room left", | |
"I'm afraid I won't be able to make use of this font,", | |
"because my memory for character-size data is too small.", | |
"If you're really stuck, ask a wizard to enlarge me.", | |
"Or maybe try `I\\font<same font id>=<name of loaded font>'.", | |
"Missing font identifier", | |
"I was looking for a control sequence whose", | |
"current meaning has been defined by \\font.", | |
" has only ", | |
" fontdimen parameters", | |
"To increase the number of font parameters, you must", | |
"use \\fontdimen immediately after the \\font is loaded.", | |
"font memory", | |
"U+", | |
"Missing character: There is no ", | |
" in font ", | |
"dvi length exceeds \"7FFFFFFF", | |
" XeTeX output ", | |
"vlistout", | |
"Completed box being shipped out", | |
"Memory usage before: ", | |
" after: ", | |
"; still untouched: ", | |
"pdf:pagesize ", | |
"default", | |
"Huge page cannot be shipped out", | |
"The page just created is more than 18 feet tall or", | |
"more than 18 feet wide, so I suspect something went wrong.", | |
"The following box has been deleted:", | |
"No pages of output.", | |
"Output written on ", | |
" pages", | |
" page", | |
", ", | |
" bytes).", | |
").", | |
"Error ", | |
"driver return code", | |
") generating output;", | |
"file ", | |
" may not be valid.", | |
"to", | |
"spread", | |
"pre vadjust", | |
"Underfull", | |
"Loose", | |
" \\hbox (badness ", | |
") has occurred while \\output is active", | |
") in paragraph at lines ", | |
") in alignment at lines ", | |
"--", | |
") detected at line ", | |
"Overfull \\hbox (", | |
"pt too wide", | |
"Tight \\hbox (badness ", | |
"vpack", | |
" \\vbox (badness ", | |
"Overfull \\vbox (", | |
"pt too high", | |
"Tight \\vbox (badness ", | |
"{}", | |
"displaystyle", | |
"textstyle", | |
"scriptstyle", | |
"scriptscriptstyle", | |
"Unknown style!", | |
"mathord", | |
"mathop", | |
"mathbin", | |
"mathrel", | |
"mathopen", | |
"mathclose", | |
"mathpunct", | |
"mathinner", | |
"overline", | |
"underline", | |
"left", | |
"right", | |
"middle", | |
"limits", | |
"nolimits", | |
"fraction, thickness ", | |
"= default", | |
", left-delimiter ", | |
", right-delimiter ", | |
"Unknown ", | |
"selector `", | |
"' for ", | |
"feature `", | |
"' in font `", | |
"Loaded mapping `", | |
"Font mapping `", | |
"' for font `", | |
"' not found.", | |
"' not usable;", | |
"bad mapping file or incorrect mapping type.", | |
"Font `", | |
"' does not support Graphite. Trying OpenType layout instead.", | |
"Invalid UTF-8 byte or sequence", | |
" in terminal input", | |
" at line ", | |
" replaced by U+FFFD.", | |
" is undefined (character ", | |
"Somewhere in the math formula just ended, you used the", | |
"stated character from an undefined font family. For example,", | |
"plain TeX doesn't allow \\it or \\sl in subscripts. Proceed,", | |
"and I'll try to forget that I needed that character.", | |
"mlist1", | |
"mlist2", | |
"mlist3", | |
"0234000122*4000133**3**344*0400400*000000234000111*1111112341011", | |
"mlist4", | |
" inside $$'s", | |
"Displays can use special alignments (like \\eqalignno)", | |
"only if nothing but the alignment itself is between $$'s.", | |
"So I've deleted the formulas that preceded this alignment.", | |
"span", | |
"cr", | |
"crcr", | |
"endtemplate", | |
"alignment tab character ", | |
"Missing # inserted in alignment preamble", | |
"There should be exactly one # between &'s, when an", | |
"\\halign or \\valign is being set up. In this case you had", | |
"none, so I've put one in; maybe that will work.", | |
"Only one # is allowed per tab", | |
"more than one, so I'm ignoring all but the first.", | |
"endv", | |
"Extra alignment tab has been changed to ", | |
"You have given more \\span or & marks than there were", | |
"in the preamble to the \\halign or \\valign now in progress.", | |
"So I'll assume that you meant to type \\cr instead.", | |
"too many spans", | |
"align1", | |
"align0", | |
"Infinite glue shrinkage found in a paragraph", | |
"The paragraph just ended includes some glue that has", | |
"infinite shrinkability, e.g., `\\hskip 0pt minus 1fil'.", | |
"Such glue doesn't belong there---it allows a paragraph", | |
"of any length to fit on one line. But it's safe to proceed,", | |
"since the offensive shrinkability has been made finite.", | |
"push_node", | |
"stack overflow", | |
"pop_node", | |
"stack underflow (internal error)", | |
"disc1a", | |
"disc1", | |
"disc2a", | |
"disc2", | |
"@@", | |
": line ", | |
" t=", | |
" -> @@", | |
" via @@", | |
" b=", | |
" p=", | |
" d=", | |
"@firstpass", | |
"@secondpass", | |
"@emergencypass", | |
"paragraph", | |
"disc3a", | |
"disc3", | |
"disc4a", | |
"disc4", | |
"line breaking", | |
"HYPH(", | |
"hyphenation", | |
" will be flushed", | |
"Hyphenation exceptions must contain only letters", | |
"and hyphens. But continue; I'll forgive and forget.", | |
"Not a letter", | |
"Letters in \\hyphenation words must have \\lccode>0.", | |
"Proceed; I'll ignore the character I just read.", | |
"exception dictionary", | |
"pattern memory ops", | |
"pattern memory ops per language", | |
"pattern memory", | |
"Too late for ", | |
"patterns", | |
"All patterns must be given before typesetting begins.", | |
"Bad ", | |
"(See Appendix H.)", | |
"Nonletter", | |
"Duplicate pattern", | |
"pruning", | |
"vertbreak", | |
"Infinite glue shrinkage found in box being split", | |
"The box you are \\vsplitting contains some infinitely", | |
"shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.", | |
"Such glue doesn't belong there; but you can safely proceed,", | |
"vsplit", | |
" needs a ", | |
"vbox", | |
"The box you are trying to split is an \\hbox.", | |
"I can't split such a box, so I'll leave it alone.", | |
"pagegoal", | |
"pagetotal", | |
"pagestretch", | |
"pagefilstretch", | |
"pagefillstretch", | |
"pagefilllstretch", | |
"pageshrink", | |
"pagedepth", | |
"fill", | |
"filll", | |
"### current page:", | |
" (held over for next output)", | |
"total height ", | |
" goal height ", | |
" adds ", | |
", #", | |
" might split", | |
"%% goal height=", | |
", max depth=", | |
"Insertions can only be added to a vbox", | |
"Tut tut: You're trying to \\insert into a", | |
"\\box register that now contains an \\hbox.", | |
"Proceed, and I'll discard its present contents.", | |
"page", | |
"Infinite glue shrinkage found on current page", | |
"The page about to be output contains some infinitely", | |
" g=", | |
" c=", | |
"Infinite glue shrinkage inserted from ", | |
"The correction glue for page breaking with insertions", | |
"must have finite shrinkability. But you may proceed,", | |
"% split", | |
" to ", | |
"255 is not void", | |
"You shouldn't use \\box255 except in \\output routines.", | |
"Output loop---", | |
" consecutive dead cycles", | |
"I've concluded that your \\output is awry; it never does a", | |
"\\shipout, so I'm shipping \\box255 out myself. Next time", | |
"increase \\maxdeadcycles if you want me to be more patient!", | |
"Unbalanced output routine", | |
"Your sneaky output routine has problematic {'s and/or }'s.", | |
"I can't handle that very well; good luck.", | |
"Output routine didn't use all of ", | |
"Your \\output commands should empty \\box255,", | |
"e.g., by saying `\\shipout\\box255'.", | |
"Proceed; I'll discard its present contents.", | |
"Missing $ inserted", | |
"I've inserted a begin-math/end-math symbol since I think", | |
"you left one out. Proceed, with fingers crossed.", | |
"Sorry, but I'm not programmed to handle this case;", | |
"I'll just pretend that you didn't ask for it.", | |
"If you're in the wrong mode, you might be able to", | |
"return to the right one by typing `I}' or `I$' or `I\\par'.", | |
"dump", | |
"hskip", | |
"hfil", | |
"hfill", | |
"hss", | |
"hfilneg", | |
"vskip", | |
"vfil", | |
"vfill", | |
"vss", | |
"vfilneg", | |
"I've inserted something that you may have forgotten.", | |
"(See the <inserted text> above.)", | |
"With luck, this will get me unwedged. But if you", | |
"really didn't forget anything, try typing `2' now; then", | |
"my insertion and my current dilemma will both disappear.", | |
"right.", | |
"Things are pretty mixed up, but I think the worst is over.", | |
"Too many }'s", | |
"You've closed more groups than you opened.", | |
"Such booboos are generally harmless, so keep going.", | |
"rightbrace", | |
"Extra }, or forgotten ", | |
"I've deleted a group-closing symbol because it seems to be", | |
"spurious, as in `$x}$'. But perhaps the } is legitimate and", | |
"you forgot something else, as in `\\hbox{$x}'. In such cases", | |
"the way to recover is to insert both the forgotten and the", | |
"deleted material, e.g., by typing `I$}'.", | |
"moveleft", | |
"moveright", | |
"raise", | |
"lower", | |
"copy", | |
"lastbox", | |
"vtop", | |
"hbox", | |
"shipout", | |
"leaders", | |
"cleaders", | |
"xleaders", | |
"Leaders not followed by proper glue", | |
"You should say `\\leaders <box or rule><hskip or vskip>'.", | |
"I found the <box or rule>, but there's no suitable", | |
"<hskip or vskip>, so I'm ignoring these leaders.", | |
"tail1", | |
"Sorry; this \\lastbox will be void.", | |
"Sorry...I usually can't take things from the current page.", | |
"This \\lastbox will therefore be void.", | |
"Missing `to' inserted", | |
"I'm working on `\\vsplit<box number> to <dimen>';", | |
"will look for the <dimen> next.", | |
"A <box> was supposed to be here", | |
"I was expecting to see \\hbox or \\vbox or \\copy or \\box or", | |
"something like that. So you might find something missing in", | |
"your output. But keep trying; you can fix this later.", | |
"indent", | |
"noindent", | |
"' here except with leaders", | |
"To put a horizontal rule in an hbox or an alignment,", | |
"you should use \\leaders or \\hrulefill (see The TeXbook).", | |
"You can't ", | |
"I'm changing to \\insert0; box 255 is special.", | |
"pre", | |
"Try `I\\vskip-\\lastskip' instead.", | |
"Try `I\\kern-\\lastkern' instead.", | |
"Perhaps you can make the output routine do it.", | |
"unpenalty", | |
"unkern", | |
"unskip", | |
"unhbox", | |
"unhcopy", | |
"unvbox", | |
"unvcopy", | |
"Incompatible list can't be unboxed", | |
"Sorry, Pandora. (You sneaky devil.)", | |
"I refuse to unbox an \\hbox in vertical mode or vice versa.", | |
"And I can't open any boxes in math mode.", | |
"Illegal math ", | |
"Sorry: The third part of a discretionary break must be", | |
"empty, in math formulas. I had to delete your third part.", | |
"Discretionary list is too long", | |
"Wow---I never thought anybody would tweak me here.", | |
"You can't seriously need such a huge discretionary list" "?", | |
"Improper discretionary list", | |
"Discretionary lists must contain only boxes and kerns.", | |
"The following discretionary sublist has been deleted:", | |
"Missing } inserted", | |
"I've put in what seems to be necessary to fix", | |
"the current column of the current alignment.", | |
"Try to go on, since this might almost work.", | |
"Misplaced ", | |
"I can't figure out why you would want to use a tab mark", | |
"here. If you just want an ampersand, the remedy is", | |
"simple: Just type `I\\&' now. But if some right brace", | |
"up above has ended a previous alignment prematurely,", | |
"you're probably due for more error messages, and you", | |
"might try typing `S' now just to see what is salvageable.", | |
"or \\cr or \\span just now. If something like a right brace", | |
"I expect to see \\noalign only after the \\cr of", | |
"an alignment. Proceed, and I'll ignore this case.", | |
"I expect to see \\omit only after tab marks or the \\cr of", | |
"I'm guessing that you meant to end an alignment here.", | |
"I'm ignoring this, since I wasn't doing a \\csname.", | |
"eqno", | |
"leqno", | |
"displaylimits", | |
"Limit controls must follow a math operator", | |
"I'm ignoring this misplaced \\limits or \\nolimits command.", | |
"Missing delimiter (. inserted)", | |
"I was expecting to see something like `(' or `\\{' or", | |
"`\\}' here. If you typed, e.g., `{' instead of `\\{', you", | |
"should probably delete the `{' by typing `1' now, so that", | |
"braces don't get unbalanced. Otherwise just proceed.", | |
"Acceptable delimiters are characters whose \\delcode is", | |
"nonnegative, or you can use `\\delimiter <delimiter code>'.", | |
"fixed", | |
"bottom", | |
"Please use ", | |
" for accents in math mode", | |
"I'm changing \\accent to \\mathaccent here; wish me luck.", | |
"(Accents are not the same in formulas as they are in text.)", | |
"Double superscript", | |
"I treat `x^1^2' essentially like `x^1{}^2'.", | |
"Double subscript", | |
"I treat `x_1_2' essentially like `x_1{}_2'.", | |
"above", | |
"over", | |
"atop", | |
"abovewithdelims", | |
"overwithdelims", | |
"atopwithdelims", | |
"Ambiguous; you need another { and }", | |
"I'm ignoring this fraction specification, since I don't", | |
"know whether a construction like `x \\over y \\over z'", | |
"means `{x \\over y} \\over z' or `x \\over {y \\over z}'.", | |
"I'm ignoring a \\middle that had no matching \\left.", | |
"I'm ignoring a \\right that had no matching \\left.", | |
"Math formula deleted: Insufficient symbol fonts", | |
"Sorry, but I can't typeset math unless \\textfont 2", | |
"and \\scriptfont 2 and \\scriptscriptfont 2 have all", | |
"the \\fontdimen values needed in math symbol fonts.", | |
"Math formula deleted: Insufficient extension fonts", | |
"Sorry, but I can't typeset math unless \\textfont 3", | |
"and \\scriptfont 3 and \\scriptscriptfont 3 have all", | |
"the \\fontdimen values needed in math extension fonts.", | |
"Display math should end with $$", | |
"The `$' that I just saw supposedly matches a previous `$$'.", | |
"So I shall assume that you typed `$$' both times.", | |
"display", | |
"Missing $$ inserted", | |
"long", | |
"outer", | |
"global", | |
"def", | |
"gdef", | |
"edef", | |
"xdef", | |
"prefix", | |
"You can't use a prefix with `", | |
"I'll pretend you didn't say \\long or \\outer or \\global.", | |
"I'll pretend you didn't say \\long or \\outer or \\global or \\protected.", | |
"' or `", | |
"I'll pretend you didn't say \\long or \\outer here.", | |
"I'll pretend you didn't say \\long or \\outer or \\protected here.", | |
"protected", | |
"' with `", | |
"Missing control sequence inserted", | |
"Please don't say `\\def cs{...}', say `\\def\\cs{...}'.", | |
"I've inserted an inaccessible control sequence so that your", | |
"definition will be completed without mixing me up too badly.", | |
"You can recover graciously from this error, if you're", | |
"careful; see exercise 27.2 in The TeXbook.", | |
"inaccessible", | |
"let", | |
"futurelet", | |
"chardef", | |
"mathchardef", | |
"XeTeXmathcharnumdef", | |
"Umathcharnumdef", | |
"XeTeXmathchardef", | |
"Umathchardef", | |
"countdef", | |
"dimendef", | |
"skipdef", | |
"muskipdef", | |
"toksdef", | |
"charsubdef", | |
"New character substitution: ", | |
" = ", | |
"You should have said `\\read<number> to \\cs'.", | |
"I'm going to look for the \\cs now.", | |
"XeTeXmathcodenum", | |
"Umathcodenum", | |
"XeTeXmathcode", | |
"Umathcode", | |
"XeTeXcharclass", | |
"XeTeXdelcodenum", | |
"Udelcodenum", | |
"XeTeXdelcode", | |
"Udelcode", | |
"), should be in the range 0..", | |
"), should be at most ", | |
"I'm going to use 0 instead of that illegal code value.", | |
"by", | |
"Arithmetic overflow", | |
"I can't carry out that multiplication or division,", | |
"since the result is out of range.", | |
"I'm forgetting what you said and not changing anything.", | |
"Sorry, \\setbox is not allowed after \\halign in a display,", | |
"or between \\accent and an accented character.", | |
"Bad space factor", | |
"I allow only values in the range 1..32767 here.", | |
"I allow only nonnegative values here.", | |
"Patterns can be loaded only by INITEX", | |
"hyphenchar", | |
"skewchar", | |
"lpcode", | |
"rpcode", | |
"FONT", | |
"at", | |
"scaled", | |
"Improper `at' size (", | |
"pt), replaced by 10pt", | |
"I can only handle fonts at positive sizes that are", | |
"less than 2048pt, so I've changed what you said to 10pt.", | |
"select font ", | |
"errorstopmode", | |
"openin", | |
"closein", | |
"message", | |
"errmessage", | |
"(That was another \\errmessage.)", | |
"This error message was generated by an \\errmessage", | |
"command, so I can't give any explicit help.", | |
"Pretend that you're Hercule Poirot: Examine all clues,", | |
"and deduce the truth by order and method.", | |
"lowercase", | |
"uppercase", | |
"show", | |
"showbox", | |
"showthe", | |
"showlists", | |
"This isn't an error message; I'm just \\showing something.", | |
"Type `I\\show...' to show more (e.g., \\show\\cs,", | |
"\\showthe\\count10, \\showbox255, \\showlists).", | |
"And type `I\\tracingonline=1\\show...' to show boxes and", | |
"lists on your terminal as well as in the transcript file.", | |
"> ", | |
"undefined", | |
"macro", | |
"outer endtemplate", | |
"> \\box", | |
"OK", | |
" (see the transcript file)", | |
" (INITEX)", | |
"You can't dump inside a group", | |
"`{...\\dump}' is a no-no.", | |
" strings of total length ", | |
" memory locations dumped; current usage is ", | |
" multiletter control sequences", | |
" words of font info for ", | |
" preloaded fonts", | |
" preloaded font", | |
"\\font", | |
"Can't \\dump a format with native fonts or font-mappings", | |
"You really, really don't want to do this.", | |
"It won't work, and only confuses me.", | |
"(Load them at runtime, not as part of the format file.)", | |
" hyphenation exceptions", | |
" hyphenation exception", | |
"Hyphenation trie of length ", | |
" has ", | |
" ops", | |
" op", | |
" out of ", | |
" for language ", | |
" (preloaded format=", | |
"format file name", | |
"Beginning to dump on file ", | |
"Transcript written on ", | |
" )", | |
"end occurred ", | |
"inside a group at level ", | |
"when ", | |
" on line ", | |
" was incomplete)", | |
"(see the transcript file for additional information)", | |
"(\\dump is performed only by INITEX)", | |
"debug # (-1 to exit):", | |
"openout", | |
"closeout", | |
"special", | |
"immediate", | |
"setlanguage", | |
"resettimer", | |
"setrandomseed", | |
"XeTeXpicfile", | |
"XeTeXpdffile", | |
"XeTeXglyph", | |
"XeTeXlinebreaklocale", | |
"XeTeXinterchartoks", | |
"pdfsavepos", | |
"XeTeXinputencoding", | |
"XeTeXdefaultencoding", | |
"[unknown extension!]", | |
"ext1", | |
" (hyphenmin ", | |
" glyph#", | |
" \"", | |
"whatsit" "?", | |
"ext2", | |
"ext3", | |
"endwrite", | |
"runsystem(", | |
")...", | |
"clobbered", | |
"quotation error in system command", | |
"disabled (restricted)", | |
"executed", | |
"executed safely (allowed)", | |
"disabled", | |
"Unbalanced write command", | |
"On this page there's a \\write with fewer real {'s than }'s.", | |
"pdf:image ", | |
"matrix ", | |
"page ", | |
"pagebox cropbox ", | |
"pagebox mediabox ", | |
"pagebox bleedbox ", | |
"pagebox artbox ", | |
"pagebox trimbox ", | |
"ext4", | |
"output file name", | |
"\\openout", | |
" = `", | |
"Bad glyph number", | |
"A glyph number must be between 0 and 65535.", | |
"crop", | |
"media", | |
"bleed", | |
"trim", | |
"art", | |
"xscaled", | |
"yscaled", | |
"Improper image ", | |
"size (", | |
"pt) will be ignored", | |
"I can't scale images to zero or negative sizes,", | |
"so I'm ignoring this.", | |
"rotated", | |
"Unable to load picture or PDF file '", | |
"The requested image couldn't be read because", | |
"the file was not found.", | |
"it was not a recognized image format.", | |
"Encoding mode `auto' is not valid for \\XeTeXinputencoding", | |
"You can't use `auto' encoding here, only for \\XeTeXdefaultencoding.", | |
"I'll ignore this and leave the current encoding unchanged.", | |
"lastnodetype", | |
"eTeXversion", | |
"XeTeXversion", | |
"XeTeXrevision", | |
"XeTeXcountglyphs", | |
"XeTeXcountvariations", | |
"XeTeXvariation", | |
"XeTeXfindvariationbyname", | |
"XeTeXvariationmin", | |
"XeTeXvariationmax", | |
"XeTeXvariationdefault", | |
"XeTeXcountfeatures", | |
"XeTeXfeaturecode", | |
"XeTeXfindfeaturebyname", | |
"XeTeXisexclusivefeature", | |
"XeTeXcountselectors", | |
"XeTeXselectorcode", | |
"XeTeXfindselectorbyname", | |
"XeTeXisdefaultselector", | |
"XeTeXvariationname", | |
"XeTeXfeaturename", | |
"XeTeXselectorname", | |
"XeTeXOTcountscripts", | |
"XeTeXOTcountlanguages", | |
"XeTeXOTcountfeatures", | |
"XeTeXOTscripttag", | |
"XeTeXOTlanguagetag", | |
"XeTeXOTfeaturetag", | |
"XeTeXcharglyph", | |
"XeTeXglyphindex", | |
"XeTeXglyphbounds", | |
"XeTeXglyphname", | |
"XeTeXfonttype", | |
"XeTeXfirstfontchar", | |
"XeTeXlastfontchar", | |
"XeTeXpdfpagecount", | |
"Cannot use ", | |
" with ", | |
"; not an AAT font", | |
"; not an AAT or Graphite font", | |
"; not an OpenType Layout font", | |
"; not a native platform font", | |
"\\\\XeTeXglyphbounds requires an edge index from 1 to 4;", | |
"I don't know anything about edge ", | |
"Sorry, this optional e-TeX feature has been disabled.", | |
"everyeof", | |
"tracingassigns", | |
"tracinggroups", | |
"tracingifs", | |
"tracingscantokens", | |
"tracingnesting", | |
"predisplaydirection", | |
"lastlinefit", | |
"savingvdiscards", | |
"savinghyphcodes", | |
"bottom level", | |
"semi ", | |
"simple", | |
"adjusted ", | |
"no ", | |
"align", | |
"disc", | |
" choice", | |
" shift", | |
" left", | |
" group (level ", | |
"leaving ", | |
"entering ", | |
"currentgrouplevel", | |
"currentgrouptype", | |
"currentiflevel", | |
"currentiftype", | |
"currentifbranch", | |
"fontcharwd", | |
"fontcharht", | |
"fontchardp", | |
"fontcharic", | |
"parshapelength", | |
"parshapeindent", | |
"parshapedimen", | |
"showgroups", | |
"align entry", | |
"showtokens", | |
"unexpanded", | |
"detokenize", | |
"showifs", | |
" entered on line ", | |
"no active conditionals", | |
"### level ", | |
"interactionmode", | |
"Bad interaction mode", | |
"Modes are 0=batch, 1=nonstop, 2=scroll, and", | |
"3=errorstop. Proceed, and I'll ignore this case.", | |
"suppressfontnotfounderror", | |
"TeXXeTstate", | |
"XeTeXupwardsmode", | |
"XeTeXuseglyphmetrics", | |
"XeTeXinterchartokenstate", | |
"XeTeXdashbreakstate", | |
"XeTeXinputnormalization", | |
"XeTeXtracingfonts", | |
"XeTeXinterwordspaceshaping", | |
"XeTeXgenerateactualtext", | |
"XeTeXhyphenatablelength", | |
"beginL", | |
"endL", | |
"beginR", | |
"endR", | |
", display", | |
"LR1", | |
"\\endL or \\endR problem (", | |
" missing, ", | |
" extra", | |
"LR2", | |
"LR3", | |
"LR4", | |
"scantokens", | |
"( ", | |
"readline", | |
"ifdefined", | |
"ifcsname", | |
"iffontchar", | |
"ifincsname", | |
"' before `", | |
"Warning: end of ", | |
" of a different file", | |
"Warning: end of file when ", | |
" is incomplete", | |
"numexpr", | |
"dimexpr", | |
"glueexpr", | |
"muexpr", | |
"I can't evaluate this expression,", | |
"Missing ) inserted for expression", | |
"I was expecting to see `+', `-', `*', `/', or `)'. Didn't.", | |
"gluestretchorder", | |
"glueshrinkorder", | |
"gluestretch", | |
"glueshrink", | |
"mutoglue", | |
"gluetomu", | |
"marks", | |
"topmarks", | |
"firstmarks", | |
"botmarks", | |
"splitfirstmarks", | |
"splitbotmarks", | |
"A register number must be between 0 and 255.", | |
"A register number must be between 0 and 32767.", | |
" s=", | |
" a=", | |
"pagediscards", | |
"splitdiscards", | |
"interlinepenalties", | |
"clubpenalties", | |
"widowpenalties", | |
"displaywidowpenalties", | |
"substitution for ", | |
"Missing character: Incomplete substitution ", | |
"Using character substitution: ", | |
"synctex", | |
NULL }; | |
int loadpoolstrings (integer spare_size) { | |
const char *s; | |
strnumber g=0; | |
int i=0,j=0; | |
while ((s = poolfilearr[j++])) { | |
int l = strlen (s); | |
i += l; | |
if (i>=spare_size) return 0; | |
while (l-- > 0) strpool[poolptr++] = *s++; | |
g = makestring(); | |
} | |
return g; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define EXTERN extern | |
#include "xetexd.h" | |
void | |
println ( void ) | |
{ | |
println_regmem | |
switch ( selector ) | |
{case 19 : | |
{ | |
putc ('\n', stdout ); | |
putc ('\n', logfile ); | |
termoffset = 0 ; | |
fileoffset = 0 ; | |
} | |
break ; | |
case 18 : | |
{ | |
putc ('\n', logfile ); | |
fileoffset = 0 ; | |
} | |
break ; | |
case 17 : | |
{ | |
putc ('\n', stdout ); | |
termoffset = 0 ; | |
} | |
break ; | |
case 16 : | |
case 20 : | |
case 21 : | |
; | |
break ; | |
default: | |
putc ('\n', writefile [selector ]); | |
break ; | |
} | |
} | |
void | |
zprintrawchar ( UTF16code s , boolean incroffset ) | |
{ | |
/* 10 */ printrawchar_regmem | |
switch ( selector ) | |
{case 19 : | |
{ | |
putc ( Xchr (s ), stdout ); | |
putc ( Xchr (s ), logfile ); | |
if ( incroffset ) | |
{ | |
incr ( termoffset ) ; | |
incr ( fileoffset ) ; | |
} | |
if ( termoffset == maxprintline ) | |
{ | |
putc ('\n', stdout ); | |
termoffset = 0 ; | |
} | |
if ( fileoffset == maxprintline ) | |
{ | |
putc ('\n', logfile ); | |
fileoffset = 0 ; | |
} | |
} | |
break ; | |
case 18 : | |
{ | |
putc ( Xchr (s ), logfile ); | |
if ( incroffset ) | |
incr ( fileoffset ) ; | |
if ( fileoffset == maxprintline ) | |
println () ; | |
} | |
break ; | |
case 17 : | |
{ | |
putc ( Xchr (s ), stdout ); | |
if ( incroffset ) | |
incr ( termoffset ) ; | |
if ( termoffset == maxprintline ) | |
println () ; | |
} | |
break ; | |
case 16 : | |
; | |
break ; | |
case 20 : | |
if ( tally < trickcount ) | |
trickbuf [tally % errorline ]= s ; | |
break ; | |
case 21 : | |
{ | |
if ( poolptr < poolsize ) | |
{ | |
strpool [poolptr ]= s ; | |
incr ( poolptr ) ; | |
} | |
} | |
break ; | |
default: | |
putc ( Xchr (s ), writefile [selector ]); | |
break ; | |
} | |
incr ( tally ) ; | |
} | |
void | |
zprintchar ( integer s ) | |
{ | |
/* 10 */ printchar_regmem | |
smallnumber l ; | |
if ( ( selector > 20 ) && ( ! doingspecial ) ) | |
{ | |
if ( s >= 65536L ) | |
{ | |
printrawchar ( 55296L + ( s - 65536L ) / 1024 , true ) ; | |
printrawchar ( 56320L + ( s - 65536L ) % 1024 , true ) ; | |
} | |
else printrawchar ( s , true ) ; | |
return ; | |
} | |
if ( s == eqtb [8939289L ].cint ) { | |
if ( selector < 20 ) | |
{ | |
println () ; | |
return ; | |
} | |
} | |
if ( ( s < 32 ) && ( eightbitp == 0 ) && ( ! doingspecial ) ) | |
{ | |
printrawchar ( 94 , true ) ; | |
printrawchar ( 94 , true ) ; | |
printrawchar ( s + 64 , true ) ; | |
} | |
else if ( s < 127 ) | |
printrawchar ( s , true ) ; | |
else if ( ( s == 127 ) ) | |
{ | |
if ( ( eightbitp == 0 ) && ( ! doingspecial ) ) | |
{ | |
printrawchar ( 94 , true ) ; | |
printrawchar ( 94 , true ) ; | |
printrawchar ( 63 , true ) ; | |
} | |
else printrawchar ( s , true ) ; | |
} | |
else if ( ( s < 160 ) && ( eightbitp == 0 ) && ( ! doingspecial ) ) | |
{ | |
printrawchar ( 94 , true ) ; | |
printrawchar ( 94 , true ) ; | |
l = ( s % 256 ) / 16 ; | |
if ( l < 10 ) | |
printrawchar ( l + 48 , true ) ; | |
else printrawchar ( l + 87 , true ) ; | |
l = s % 16 ; | |
if ( l < 10 ) | |
printrawchar ( l + 48 , true ) ; | |
else printrawchar ( l + 87 , true ) ; | |
} | |
else if ( selector == 20 ) | |
printrawchar ( s , true ) ; | |
else { | |
if ( s < 2048 ) | |
{ | |
printrawchar ( 192 + s / 64 , false ) ; | |
printrawchar ( 128 + s % 64 , true ) ; | |
} | |
else if ( s < 65536L ) | |
{ | |
printrawchar ( 224 + ( s / 4096 ) , false ) ; | |
printrawchar ( 128 + ( s % 4096 ) / 64 , false ) ; | |
printrawchar ( 128 + ( s % 64 ) , true ) ; | |
} | |
else { | |
printrawchar ( 240 + ( s / 262144L ) , false ) ; | |
printrawchar ( 128 + ( s % 262144L ) / 4096 , false ) ; | |
printrawchar ( 128 + ( s % 4096 ) / 64 , false ) ; | |
printrawchar ( 128 + ( s % 64 ) , true ) ; | |
} | |
} | |
} | |
void | |
zprint ( integer s ) | |
{ | |
/* 10 */ print_regmem | |
poolpointer j ; | |
integer nl ; | |
if ( s >= strptr ) | |
s = 65541L ; | |
else if ( s < 65535L ) { | |
if ( s < 0 ) | |
s = 65541L ; | |
else { | |
if ( selector > 20 ) | |
{ | |
printchar ( s ) ; | |
return ; | |
} | |
if ( ( s == eqtb [8939289L ].cint ) ) { | |
if ( selector < 20 ) | |
{ | |
println () ; | |
return ; | |
} | |
} | |
nl = eqtb [8939289L ].cint ; | |
eqtb [8939289L ].cint = -1 ; | |
printchar ( s ) ; | |
eqtb [8939289L ].cint = nl ; | |
return ; | |
} | |
} | |
j = strstart [( s ) - 65536L ]; | |
while ( j < strstart [( s + 1 ) - 65536L ]) { | |
if ( ( strpool [j ]>= 55296L ) && ( strpool [j ]<= 56319L ) && ( j + 1 | |
< strstart [( s + 1 ) - 65536L ]) && ( strpool [j + 1 ]>= 56320L ) && | |
( strpool [j + 1 ]<= 57343L ) ) | |
{ | |
printchar ( 65536L + ( strpool [j ]- 55296L ) * 1024 + strpool [j + 1 | |
]- 56320L ) ; | |
j = j + 2 ; | |
} | |
else { | |
printchar ( strpool [j ]) ; | |
incr ( j ) ; | |
} | |
} | |
} | |
void | |
zprintnl ( strnumber s ) | |
{ | |
printnl_regmem | |
if ( ( ( termoffset > 0 ) && ( odd ( selector ) ) ) || ( ( fileoffset > 0 ) | |
&& ( selector >= 18 ) ) ) | |
println () ; | |
print ( s ) ; | |
} | |
void | |
zprintesc ( strnumber s ) | |
{ | |
printesc_regmem | |
integer c ; | |
c = eqtb [8939285L ].cint ; | |
if ( c >= 0 ) { | |
if ( c <= 1114111L ) | |
printchar ( c ) ; | |
} | |
print ( s ) ; | |
} | |
void | |
zprintthedigs ( eightbits k ) | |
{ | |
printthedigs_regmem | |
while ( k > 0 ) { | |
decr ( k ) ; | |
if ( dig [k ]< 10 ) | |
printchar ( 48 + dig [k ]) ; | |
else printchar ( 55 + dig [k ]) ; | |
} | |
} | |
void | |
zprintint ( integer n ) | |
{ | |
printint_regmem | |
unsigned char k ; | |
integer m ; | |
k = 0 ; | |
if ( n < 0 ) | |
{ | |
printchar ( 45 ) ; | |
if ( n > -100000000L ) | |
n = - (integer) n ; | |
else { | |
m = -1 - n ; | |
n = m / 10 ; | |
m = ( m % 10 ) + 1 ; | |
k = 1 ; | |
if ( m < 10 ) | |
dig [0 ]= m ; | |
else { | |
dig [0 ]= 0 ; | |
incr ( n ) ; | |
} | |
} | |
} | |
do { | |
dig [k ]= n % 10 ; | |
n = n / 10 ; | |
incr ( k ) ; | |
} while ( ! ( n == 0 ) ) ; | |
printthedigs ( k ) ; | |
} | |
void | |
zprintcs ( integer p ) | |
{ | |
printcs_regmem | |
if ( p < 2228226L ) { | |
if ( p >= 1114113L ) { | |
if ( p == 2228225L ) | |
{ | |
printesc ( 65814L ) ; | |
printesc ( 65815L ) ; | |
printchar ( 32 ) ; | |
} | |
else { | |
printesc ( p - 1114113L ) ; | |
if ( eqtb [2254568L + p - 1114113L ].hh .v.RH == 11 ) | |
printchar ( 32 ) ; | |
} | |
} | |
else if ( p < 1 ) | |
printesc ( 65816L ) ; | |
else printchar ( p - 1 ) ; | |
} | |
else if ( ( ( p >= 2252739L ) && ( p <= 10053971L ) ) || ( p > eqtbtop ) ) | |
printesc ( 65816L ) ; | |
else if ( ( hash [p ].v.RH >= strptr ) ) | |
printesc ( 65817L ) ; | |
else { | |
if ( ( p >= 2243238L ) && ( p < 2243738L ) ) | |
printesc ( prim [p - 2243238L ].v.RH - 1 ) ; | |
else printesc ( hash [p ].v.RH ) ; | |
printchar ( 32 ) ; | |
} | |
} | |
void | |
zsprintcs ( halfword p ) | |
{ | |
sprintcs_regmem | |
if ( p < 2228226L ) { | |
if ( p < 1114113L ) | |
printchar ( p - 1 ) ; | |
else if ( p < 2228225L ) | |
printesc ( p - 1114113L ) ; | |
else { | |
printesc ( 65814L ) ; | |
printesc ( 65815L ) ; | |
} | |
} | |
else if ( ( p >= 2243238L ) && ( p < 2243738L ) ) | |
printesc ( prim [p - 2243238L ].v.RH - 1 ) ; | |
else printesc ( hash [p ].v.RH ) ; | |
} | |
void | |
zprintfilename ( integer n , integer a , integer e ) | |
{ | |
printfilename_regmem | |
boolean mustquote ; | |
integer quotechar ; | |
poolpointer j ; | |
mustquote = false ; | |
quotechar = 0 ; | |
if ( a != 0 ) | |
{ | |
j = strstart [( a ) - 65536L ]; | |
while ( ( ( ! mustquote ) || ( quotechar == 0 ) ) && ( j < strstart [( a | |
+ 1 ) - 65536L ]) ) { | |
if ( strpool [j ]== 32 ) | |
mustquote = true ; | |
else if ( ( strpool [j ]== 34 ) || ( strpool [j ]== 39 ) ) | |
{ | |
mustquote = true ; | |
quotechar = 73 - strpool [j ]; | |
} | |
incr ( j ) ; | |
} | |
} | |
if ( n != 0 ) | |
{ | |
j = strstart [( n ) - 65536L ]; | |
while ( ( ( ! mustquote ) || ( quotechar == 0 ) ) && ( j < strstart [( n | |
+ 1 ) - 65536L ]) ) { | |
if ( strpool [j ]== 32 ) | |
mustquote = true ; | |
else if ( ( strpool [j ]== 34 ) || ( strpool [j ]== 39 ) ) | |
{ | |
mustquote = true ; | |
quotechar = 73 - strpool [j ]; | |
} | |
incr ( j ) ; | |
} | |
} | |
if ( e != 0 ) | |
{ | |
j = strstart [( e ) - 65536L ]; | |
while ( ( ( ! mustquote ) || ( quotechar == 0 ) ) && ( j < strstart [( e | |
+ 1 ) - 65536L ]) ) { | |
if ( strpool [j ]== 32 ) | |
mustquote = true ; | |
else if ( ( strpool [j ]== 34 ) || ( strpool [j ]== 39 ) ) | |
{ | |
mustquote = true ; | |
quotechar = 73 - strpool [j ]; | |
} | |
incr ( j ) ; | |
} | |
} | |
if ( mustquote ) | |
{ | |
if ( quotechar == 0 ) | |
quotechar = 34 ; | |
printchar ( quotechar ) ; | |
} | |
if ( a != 0 ) | |
{register integer for_end; j = strstart [( a ) - 65536L ];for_end = | |
strstart [( a + 1 ) - 65536L ]- 1 ; if ( j <= for_end) do | |
{ | |
if ( strpool [j ]== quotechar ) | |
{ | |
print ( quotechar ) ; | |
quotechar = 73 - quotechar ; | |
print ( quotechar ) ; | |
} | |
print ( strpool [j ]) ; | |
} | |
while ( j++ < for_end ) ;} | |
if ( n != 0 ) | |
{register integer for_end; j = strstart [( n ) - 65536L ];for_end = | |
strstart [( n + 1 ) - 65536L ]- 1 ; if ( j <= for_end) do | |
{ | |
if ( strpool [j ]== quotechar ) | |
{ | |
print ( quotechar ) ; | |
quotechar = 73 - quotechar ; | |
print ( quotechar ) ; | |
} | |
print ( strpool [j ]) ; | |
} | |
while ( j++ < for_end ) ;} | |
if ( e != 0 ) | |
{register integer for_end; j = strstart [( e ) - 65536L ];for_end = | |
strstart [( e + 1 ) - 65536L ]- 1 ; if ( j <= for_end) do | |
{ | |
if ( strpool [j ]== quotechar ) | |
{ | |
print ( quotechar ) ; | |
quotechar = 73 - quotechar ; | |
print ( quotechar ) ; | |
} | |
print ( strpool [j ]) ; | |
} | |
while ( j++ < for_end ) ;} | |
if ( quotechar != 0 ) | |
printchar ( quotechar ) ; | |
} | |
void | |
zprintsize ( integer s ) | |
{ | |
printsize_regmem | |
if ( s == 0 ) | |
printesc ( 65712L ) ; | |
else if ( s == 256 ) | |
printesc ( 65713L ) ; | |
else printesc ( 65714L ) ; | |
} | |
void | |
zprintwritewhatsit ( strnumber s , halfword p ) | |
{ | |
printwritewhatsit_regmem | |
printesc ( s ) ; | |
if ( mem [p + 1 ].hh .v.LH < 16 ) | |
printint ( mem [p + 1 ].hh .v.LH ) ; | |
else if ( mem [p + 1 ].hh .v.LH == 16 ) | |
printchar ( 42 ) ; | |
else printchar ( 45 ) ; | |
} | |
void | |
zprintnativeword ( halfword p ) | |
{ | |
printnativeword_regmem | |
integer i, c, cc ; | |
{register integer for_end; i = 0 ;for_end = mem [p + 4 ].qqqq .b2 - 1 | |
; if ( i <= for_end) do | |
{ | |
c = getnativechar ( p , i ) ; | |
if ( ( c >= 55296L ) && ( c <= 56319L ) ) | |
{ | |
if ( i < mem [p + 4 ].qqqq .b2 - 1 ) | |
{ | |
cc = getnativechar ( p , i + 1 ) ; | |
if ( ( cc >= 56320L ) && ( cc <= 57343L ) ) | |
{ | |
c = 65536L + ( c - 55296L ) * 1024 + ( cc - 56320L ) ; | |
printchar ( c ) ; | |
incr ( i ) ; | |
} | |
else print ( 46 ) ; | |
} | |
else print ( 46 ) ; | |
} | |
else printchar ( c ) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
void | |
zprintsanum ( halfword q ) | |
{ | |
printsanum_regmem | |
halfword n ; | |
if ( mem [q ].hh.b0 < 128 ) | |
n = mem [q + 1 ].hh .v.RH ; | |
else { | |
n = mem [q ].hh.b0 % 64 ; | |
q = mem [q ].hh .v.RH ; | |
n = n + 64 * mem [q ].hh.b0 ; | |
q = mem [q ].hh .v.RH ; | |
n = n + 64 * 64 * ( mem [q ].hh.b0 + 64 * mem [mem [q ].hh .v.RH ] | |
.hh.b0 ) ; | |
} | |
printint ( n ) ; | |
} | |
void | |
zprintcsnames ( integer hstart , integer hfinish ) | |
{ | |
printcsnames_regmem | |
integer c, h ; | |
fprintf ( stderr , "%s%ld%s%ld%c\n", "fmtdebug:csnames from " , (long)hstart , " to " , (long)hfinish , ':' ) ; | |
{register integer for_end; h = hstart ;for_end = hfinish ; if ( h <= | |
for_end) do | |
{ | |
if ( hash [h ].v.RH > 0 ) | |
{ | |
{register integer for_end; c = strstart [( hash [h ].v.RH ) - | |
65536L ];for_end = strstart [( hash [h ].v.RH + 1 ) - 65536L ]- | |
1 ; if ( c <= for_end) do | |
{ | |
putbyte ( strpool [c ], stderr ) ; | |
} | |
while ( c++ < for_end ) ;} | |
{ putc ( '|' , stderr ); putc ( '\n', stderr ); } | |
} | |
} | |
while ( h++ < for_end ) ;} | |
} | |
void | |
printfileline ( void ) | |
{ | |
printfileline_regmem | |
integer level ; | |
level = inopen ; | |
while ( ( level > 0 ) && ( fullsourcefilenamestack [level ]== 0 ) ) decr ( | |
level ) ; | |
if ( level == 0 ) | |
printnl ( 65544L ) ; | |
else { | |
printnl ( 65626L ) ; | |
print ( fullsourcefilenamestack [level ]) ; | |
print ( 58 ) ; | |
if ( level == inopen ) | |
printint ( line ) ; | |
else printint ( linestack [level + 1 ]) ; | |
print ( 65593L ) ; | |
} | |
} | |
#ifdef TEXMF_DEBUG | |
#endif /* TEXMF_DEBUG */ | |
void | |
jumpout ( void ) | |
{ | |
jumpout_regmem | |
closefilesandterminate () ; | |
{ | |
fflush ( stdout ) ; | |
readyalready = 0 ; | |
if ( ( history != 0 ) && ( history != 1 ) ) | |
uexit ( 1 ) ; | |
else uexit ( 0 ) ; | |
} | |
} | |
void | |
error ( void ) | |
{ | |
/* 22 10 */ error_regmem | |
UTF16code c ; | |
integer s1, s2, s3, s4 ; | |
if ( history < 2 ) | |
history = 2 ; | |
printchar ( 46 ) ; | |
showcontext () ; | |
if ( ( haltonerrorp ) ) | |
{ | |
history = 3 ; | |
jumpout () ; | |
} | |
if ( interaction == 3 ) | |
while ( true ) { | |
lab22: if ( interaction != 3 ) | |
return ; | |
clearforerrorprompt () ; | |
{ | |
; | |
print ( 65546L ) ; | |
terminput () ; | |
} | |
if ( last == first ) | |
return ; | |
c = buffer [first ]; | |
if ( c >= 97 ) | |
c = c - 32 ; | |
switch ( c ) | |
{case 48 : | |
case 49 : | |
case 50 : | |
case 51 : | |
case 52 : | |
case 53 : | |
case 54 : | |
case 55 : | |
case 56 : | |
case 57 : | |
if ( deletionsallowed ) | |
{ | |
s1 = curtok ; | |
s2 = curcmd ; | |
s3 = curchr ; | |
s4 = alignstate ; | |
alignstate = 1000000L ; | |
OKtointerrupt = false ; | |
if ( ( last > first + 1 ) && ( buffer [first + 1 ]>= 48 ) && ( | |
buffer [first + 1 ]<= 57 ) ) | |
c = c * 10 + buffer [first + 1 ]- 48 * 11 ; | |
else c = c - 48 ; | |
while ( c > 0 ) { | |
gettoken () ; | |
decr ( c ) ; | |
} | |
curtok = s1 ; | |
curcmd = s2 ; | |
curchr = s3 ; | |
alignstate = s4 ; | |
OKtointerrupt = true ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65559L ; | |
helpline [0 ]= 65560L ; | |
} | |
showcontext () ; | |
goto lab22 ; | |
} | |
break ; | |
; | |
#ifdef TEXMF_DEBUG | |
case 68 : | |
{ | |
debughelp () ; | |
goto lab22 ; | |
} | |
break ; | |
#endif /* TEXMF_DEBUG */ | |
case 69 : | |
if ( baseptr > 0 ) { | |
if ( inputstack [baseptr ].namefield >= 256 ) | |
{ | |
editnamestart = strstart [( inputstack [baseptr ].namefield ) - | |
65536L ]; | |
editnamelength = strstart [( inputstack [baseptr ].namefield + 1 | |
) - 65536L ]- strstart [( inputstack [baseptr ].namefield ) - | |
65536L ]; | |
editline = line ; | |
jumpout () ; | |
} | |
} | |
break ; | |
case 72 : | |
{ | |
if ( useerrhelp ) | |
{ | |
giveerrhelp () ; | |
useerrhelp = false ; | |
} | |
else { | |
if ( helpptr == 0 ) | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65561L ; | |
helpline [0 ]= 65562L ; | |
} | |
do { | |
decr ( helpptr ) ; | |
print ( helpline [helpptr ]) ; | |
println () ; | |
} while ( ! ( helpptr == 0 ) ) ; | |
} | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 65563L ; | |
helpline [2 ]= 65562L ; | |
helpline [1 ]= 65564L ; | |
helpline [0 ]= 65565L ; | |
} | |
goto lab22 ; | |
} | |
break ; | |
case 73 : | |
{ | |
beginfilereading () ; | |
if ( last > first + 1 ) | |
{ | |
curinput .locfield = first + 1 ; | |
buffer [first ]= 32 ; | |
} | |
else { | |
{ | |
; | |
print ( 65558L ) ; | |
terminput () ; | |
} | |
curinput .locfield = first ; | |
} | |
first = last ; | |
curinput .limitfield = last - 1 ; | |
return ; | |
} | |
break ; | |
case 81 : | |
case 82 : | |
case 83 : | |
{ | |
errorcount = 0 ; | |
interaction = 0 + c - 81 ; | |
print ( 65553L ) ; | |
switch ( c ) | |
{case 81 : | |
{ | |
printesc ( 65554L ) ; | |
decr ( selector ) ; | |
} | |
break ; | |
case 82 : | |
printesc ( 65555L ) ; | |
break ; | |
case 83 : | |
printesc ( 65556L ) ; | |
break ; | |
} | |
print ( 65557L ) ; | |
println () ; | |
fflush ( stdout ) ; | |
return ; | |
} | |
break ; | |
case 88 : | |
{ | |
interaction = 2 ; | |
jumpout () ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
{ | |
print ( 65547L ) ; | |
printnl ( 65548L ) ; | |
printnl ( 65549L ) ; | |
if ( baseptr > 0 ) { | |
if ( inputstack [baseptr ].namefield >= 256 ) | |
print ( 65550L ) ; | |
} | |
if ( deletionsallowed ) | |
printnl ( 65551L ) ; | |
printnl ( 65552L ) ; | |
} | |
} | |
incr ( errorcount ) ; | |
if ( errorcount == 100 ) | |
{ | |
printnl ( 65545L ) ; | |
history = 3 ; | |
jumpout () ; | |
} | |
if ( interaction > 0 ) | |
decr ( selector ) ; | |
if ( useerrhelp ) | |
{ | |
println () ; | |
giveerrhelp () ; | |
} | |
else while ( helpptr > 0 ) { | |
decr ( helpptr ) ; | |
printnl ( helpline [helpptr ]) ; | |
} | |
println () ; | |
if ( interaction > 0 ) | |
incr ( selector ) ; | |
println () ; | |
} | |
void | |
zfatalerror ( strnumber s ) | |
{ | |
fatalerror_regmem | |
normalizeselector () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65567L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= s ; | |
} | |
{ | |
if ( interaction == 3 ) | |
interaction = 2 ; | |
if ( logopened ) | |
error () ; | |
; | |
#ifdef TEXMF_DEBUG | |
if ( interaction > 0 ) | |
debughelp () ; | |
#endif /* TEXMF_DEBUG */ | |
history = 3 ; | |
jumpout () ; | |
} | |
} | |
void | |
zoverflow ( strnumber s , integer n ) | |
{ | |
overflow_regmem | |
normalizeselector () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65568L ) ; | |
} | |
print ( s ) ; | |
printchar ( 61 ) ; | |
printint ( n ) ; | |
printchar ( 93 ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65569L ; | |
helpline [0 ]= 65570L ; | |
} | |
{ | |
if ( interaction == 3 ) | |
interaction = 2 ; | |
if ( logopened ) | |
error () ; | |
; | |
#ifdef TEXMF_DEBUG | |
if ( interaction > 0 ) | |
debughelp () ; | |
#endif /* TEXMF_DEBUG */ | |
history = 3 ; | |
jumpout () ; | |
} | |
} | |
void | |
zconfusion ( strnumber s ) | |
{ | |
confusion_regmem | |
normalizeselector () ; | |
if ( history < 2 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65571L ) ; | |
} | |
print ( s ) ; | |
printchar ( 41 ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 65572L ; | |
} | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65573L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65574L ; | |
helpline [0 ]= 65575L ; | |
} | |
} | |
{ | |
if ( interaction == 3 ) | |
interaction = 2 ; | |
if ( logopened ) | |
error () ; | |
; | |
#ifdef TEXMF_DEBUG | |
if ( interaction > 0 ) | |
debughelp () ; | |
#endif /* TEXMF_DEBUG */ | |
history = 3 ; | |
jumpout () ; | |
} | |
} | |
boolean | |
initterminal ( void ) | |
{ | |
/* 10 */ register boolean Result; initterminal_regmem | |
topenin () ; | |
if ( last > first ) | |
{ | |
curinput .locfield = first ; | |
while ( ( curinput .locfield < last ) && ( buffer [curinput .locfield ] | |
== ' ' ) ) incr ( curinput .locfield ) ; | |
if ( curinput .locfield < last ) | |
{ | |
Result = true ; | |
return Result ; | |
} | |
} | |
while ( true ) { | |
; | |
Fputs ( stdout , "**" ) ; | |
fflush ( stdout ) ; | |
if ( ! inputln ( termin , true ) ) | |
{ | |
putc ('\n', stdout ); | |
fprintf ( stdout , "%s\n", "! End of file on the terminal... why?" ) ; | |
Result = false ; | |
return Result ; | |
} | |
curinput .locfield = first ; | |
while ( ( curinput .locfield < last ) && ( buffer [curinput .locfield ] | |
== 32 ) ) incr ( curinput .locfield ) ; | |
if ( curinput .locfield < last ) | |
{ | |
Result = true ; | |
return Result ; | |
} | |
fprintf ( stdout , "%s\n", "Please type the name of your input file." ) ; | |
} | |
return Result ; | |
} | |
integer | |
zlength ( strnumber s ) | |
{ | |
register integer Result; length_regmem | |
if ( ( s >= 65536L ) ) | |
Result = strstart [( s + 1 ) - 65536L ]- strstart [( s ) - 65536L ]; | |
else if ( ( s >= 32 ) && ( s < 127 ) ) | |
Result = 1 ; | |
else if ( ( s <= 127 ) ) | |
Result = 3 ; | |
else if ( ( s < 256 ) ) | |
Result = 4 ; | |
else Result = 8 ; | |
return Result ; | |
} | |
strnumber | |
makestring ( void ) | |
{ | |
register strnumber Result; makestring_regmem | |
if ( strptr == maxstrings ) | |
overflow ( 65540L , maxstrings - initstrptr ) ; | |
incr ( strptr ) ; | |
strstart [( strptr ) - 65536L ]= poolptr ; | |
Result = strptr - 1 ; | |
return Result ; | |
} | |
void | |
zappendstr ( strnumber s ) | |
{ | |
appendstr_regmem | |
integer i ; | |
poolpointer j ; | |
i = length ( s ) ; | |
{ | |
if ( poolptr + i > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
j = strstart [( s ) - 65536L ]; | |
while ( ( i > 0 ) ) { | |
{ | |
strpool [poolptr ]= strpool [j ]; | |
incr ( poolptr ) ; | |
} | |
incr ( j ) ; | |
decr ( i ) ; | |
} | |
} | |
boolean | |
zstreqbuf ( strnumber s , integer k ) | |
{ | |
/* 45 */ register boolean Result; streqbuf_regmem | |
poolpointer j ; | |
boolean result ; | |
j = strstart [( s ) - 65536L ]; | |
while ( j < strstart [( s + 1 ) - 65536L ]) { | |
if ( buffer [k ]>= 65536L ) { | |
if ( strpool [j ]!= 55296L + ( buffer [k ]- 65536L ) / 1024 ) | |
{ | |
result = false ; | |
goto lab45 ; | |
} | |
else if ( strpool [j + 1 ]!= 56320L + ( buffer [k ]- 65536L ) % 1024 | |
) | |
{ | |
result = false ; | |
goto lab45 ; | |
} | |
else incr ( j ) ; | |
} | |
else if ( strpool [j ]!= buffer [k ]) | |
{ | |
result = false ; | |
goto lab45 ; | |
} | |
incr ( j ) ; | |
incr ( k ) ; | |
} | |
result = true ; | |
lab45: Result = result ; | |
return Result ; | |
} | |
boolean | |
zstreqstr ( strnumber s , strnumber t ) | |
{ | |
/* 45 */ register boolean Result; streqstr_regmem | |
poolpointer j, k ; | |
boolean result ; | |
result = false ; | |
if ( length ( s ) != length ( t ) ) | |
goto lab45 ; | |
if ( ( length ( s ) == 1 ) ) | |
{ | |
if ( s < 65536L ) | |
{ | |
if ( t < 65536L ) | |
{ | |
if ( s != t ) | |
goto lab45 ; | |
} | |
else { | |
if ( s != strpool [strstart [( t ) - 65536L ]]) | |
goto lab45 ; | |
} | |
} | |
else { | |
if ( t < 65536L ) | |
{ | |
if ( strpool [strstart [( s ) - 65536L ]]!= t ) | |
goto lab45 ; | |
} | |
else { | |
if ( strpool [strstart [( s ) - 65536L ]]!= strpool [strstart [( | |
t ) - 65536L ]]) | |
goto lab45 ; | |
} | |
} | |
} | |
else { | |
j = strstart [( s ) - 65536L ]; | |
k = strstart [( t ) - 65536L ]; | |
while ( j < strstart [( s + 1 ) - 65536L ]) { | |
if ( strpool [j ]!= strpool [k ]) | |
goto lab45 ; | |
incr ( j ) ; | |
incr ( k ) ; | |
} | |
} | |
result = true ; | |
lab45: Result = result ; | |
return Result ; | |
} | |
strnumber | |
zsearchstring ( strnumber search ) | |
{ | |
/* 40 */ register strnumber Result; searchstring_regmem | |
strnumber result ; | |
strnumber s ; | |
integer len ; | |
result = 0 ; | |
len = length ( search ) ; | |
if ( len == 0 ) | |
{ | |
result = 65626L ; | |
goto lab40 ; | |
} | |
else { | |
s = search - 1 ; | |
while ( s > 65535L ) { | |
if ( length ( s ) == len ) { | |
if ( streqstr ( s , search ) ) | |
{ | |
result = s ; | |
goto lab40 ; | |
} | |
} | |
decr ( s ) ; | |
} | |
} | |
lab40: Result = result ; | |
return Result ; | |
} | |
strnumber | |
slowmakestring ( void ) | |
{ | |
/* 10 */ register strnumber Result; slowmakestring_regmem | |
strnumber s ; | |
strnumber t ; | |
t = makestring () ; | |
s = searchstring ( t ) ; | |
if ( s > 0 ) | |
{ | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
Result = s ; | |
return Result ; | |
} | |
Result = t ; | |
return Result ; | |
} | |
void | |
zprinttwo ( integer n ) | |
{ | |
printtwo_regmem | |
n = abs ( n ) % 100 ; | |
printchar ( 48 + ( n / 10 ) ) ; | |
printchar ( 48 + ( n % 10 ) ) ; | |
} | |
void | |
zprinthex ( integer n ) | |
{ | |
printhex_regmem | |
unsigned char k ; | |
k = 0 ; | |
printchar ( 34 ) ; | |
do { | |
dig [k ]= n % 16 ; | |
n = n / 16 ; | |
incr ( k ) ; | |
} while ( ! ( n == 0 ) ) ; | |
printthedigs ( k ) ; | |
} | |
void | |
zprintromanint ( integer n ) | |
{ | |
/* 10 */ printromanint_regmem | |
poolpointer j, k ; | |
nonnegativeinteger u, v ; | |
j = strstart [( 65542L ) - 65536L ]; | |
v = 1000 ; | |
while ( true ) { | |
while ( n >= v ) { | |
printchar ( strpool [j ]) ; | |
n = n - v ; | |
} | |
if ( n <= 0 ) | |
return ; | |
k = j + 2 ; | |
u = v / ( strpool [k - 1 ]- 48 ) ; | |
if ( strpool [k - 1 ]== 50 ) | |
{ | |
k = k + 2 ; | |
u = u / ( strpool [k - 1 ]- 48 ) ; | |
} | |
if ( n + u >= v ) | |
{ | |
printchar ( strpool [k ]) ; | |
n = n + u ; | |
} | |
else { | |
j = j + 2 ; | |
v = v / ( strpool [j - 1 ]- 48 ) ; | |
} | |
} | |
} | |
void | |
printcurrentstring ( void ) | |
{ | |
printcurrentstring_regmem | |
poolpointer j ; | |
j = strstart [( strptr ) - 65536L ]; | |
while ( j < poolptr ) { | |
printchar ( strpool [j ]) ; | |
incr ( j ) ; | |
} | |
} | |
void | |
terminput ( void ) | |
{ | |
terminput_regmem | |
integer k ; | |
fflush ( stdout ) ; | |
if ( ! inputln ( termin , true ) ) | |
fatalerror ( 65543L ) ; | |
termoffset = 0 ; | |
decr ( selector ) ; | |
if ( last != first ) | |
{register integer for_end; k = first ;for_end = last - 1 ; if ( k <= | |
for_end) do | |
print ( buffer [k ]) ; | |
while ( k++ < for_end ) ;} | |
println () ; | |
incr ( selector ) ; | |
} | |
void | |
zinterror ( integer n ) | |
{ | |
interror_regmem | |
print ( 65566L ) ; | |
printint ( n ) ; | |
printchar ( 41 ) ; | |
error () ; | |
} | |
void | |
normalizeselector ( void ) | |
{ | |
normalizeselector_regmem | |
if ( logopened ) | |
selector = 19 ; | |
else selector = 17 ; | |
if ( jobname == 0 ) | |
openlogfile () ; | |
if ( interaction == 0 ) | |
decr ( selector ) ; | |
} | |
void | |
pauseforinstructions ( void ) | |
{ | |
pauseforinstructions_regmem | |
if ( OKtointerrupt ) | |
{ | |
interaction = 3 ; | |
if ( ( selector == 18 ) || ( selector == 16 ) ) | |
incr ( selector ) ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65576L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 65577L ; | |
helpline [1 ]= 65578L ; | |
helpline [0 ]= 65579L ; | |
} | |
deletionsallowed = false ; | |
error () ; | |
deletionsallowed = true ; | |
interrupt = 0 ; | |
} | |
} | |
integer | |
zhalf ( integer x ) | |
{ | |
register integer Result; half_regmem | |
if ( odd ( x ) ) | |
Result = ( x + 1 ) / 2 ; | |
else Result = x / 2 ; | |
return Result ; | |
} | |
scaled | |
zrounddecimals ( smallnumber k ) | |
{ | |
register scaled Result; rounddecimals_regmem | |
integer a ; | |
a = 0 ; | |
while ( k > 0 ) { | |
decr ( k ) ; | |
a = ( a + dig [k ]* 131072L ) / 10 ; | |
} | |
Result = ( a + 1 ) / 2 ; | |
return Result ; | |
} | |
void | |
zprintscaled ( scaled s ) | |
{ | |
printscaled_regmem | |
scaled delta ; | |
if ( s < 0 ) | |
{ | |
printchar ( 45 ) ; | |
s = - (integer) s ; | |
} | |
printint ( s / 65536L ) ; | |
printchar ( 46 ) ; | |
s = 10 * ( s % 65536L ) + 5 ; | |
delta = 10 ; | |
do { | |
if ( delta > 65536L ) | |
s = s - 17232 ; | |
printchar ( 48 + ( s / 65536L ) ) ; | |
s = 10 * ( s % 65536L ) ; | |
delta = delta * 10 ; | |
} while ( ! ( s <= delta ) ) ; | |
} | |
scaled | |
zmultandadd ( integer n , scaled x , scaled y , scaled maxanswer ) | |
{ | |
register scaled Result; multandadd_regmem | |
if ( n < 0 ) | |
{ | |
x = - (integer) x ; | |
n = - (integer) n ; | |
} | |
if ( n == 0 ) | |
Result = y ; | |
else if ( ( ( x <= ( maxanswer - y ) / n ) && ( - (integer) x <= ( maxanswer | |
+ y ) / n ) ) ) | |
Result = n * x + y ; | |
else { | |
aritherror = true ; | |
Result = 0 ; | |
} | |
return Result ; | |
} | |
scaled | |
zxovern ( scaled x , integer n ) | |
{ | |
register scaled Result; xovern_regmem | |
boolean negative ; | |
negative = false ; | |
if ( n == 0 ) | |
{ | |
aritherror = true ; | |
Result = 0 ; | |
texremainder = x ; | |
} | |
else { | |
if ( n < 0 ) | |
{ | |
x = - (integer) x ; | |
n = - (integer) n ; | |
negative = true ; | |
} | |
if ( x >= 0 ) | |
{ | |
Result = x / n ; | |
texremainder = x % n ; | |
} | |
else { | |
Result = - (integer) ( ( - (integer) x ) / n ) ; | |
texremainder = - (integer) ( ( - (integer) x ) % n ) ; | |
} | |
} | |
if ( negative ) | |
texremainder = - (integer) texremainder ; | |
return Result ; | |
} | |
scaled | |
zxnoverd ( scaled x , integer n , integer d ) | |
{ | |
register scaled Result; xnoverd_regmem | |
boolean positive ; | |
nonnegativeinteger t, u, v ; | |
if ( x >= 0 ) | |
positive = true ; | |
else { | |
x = - (integer) x ; | |
positive = false ; | |
} | |
t = ( x % 32768L ) * n ; | |
u = ( x / 32768L ) * n + ( t / 32768L ) ; | |
v = ( u % d ) * 32768L + ( t % 32768L ) ; | |
if ( u / d >= 32768L ) | |
aritherror = true ; | |
else u = 32768L * ( u / d ) + ( v / d ) ; | |
if ( positive ) | |
{ | |
Result = u ; | |
texremainder = v % d ; | |
} | |
else { | |
Result = - (integer) u ; | |
texremainder = - (integer) ( v % d ) ; | |
} | |
return Result ; | |
} | |
halfword | |
zbadness ( scaled t , scaled s ) | |
{ | |
register halfword Result; badness_regmem | |
integer r ; | |
if ( t == 0 ) | |
Result = 0 ; | |
else if ( s <= 0 ) | |
Result = 10000 ; | |
else { | |
if ( t <= 7230584L ) | |
r = ( t * 297 ) / s ; | |
else if ( s >= 1663497L ) | |
r = t / ( s / 297 ) ; | |
else r = t ; | |
if ( r > 1290 ) | |
Result = 10000 ; | |
else Result = ( r * r * r + 131072L ) / 262144L ; | |
} | |
return Result ; | |
} | |
integer | |
zmakefrac ( integer p , integer q ) | |
{ | |
register integer Result; makefrac_regmem | |
integer f ; | |
integer n ; | |
boolean negative ; | |
integer becareful ; | |
if ( p >= 0 ) | |
negative = false ; | |
else { | |
p = - (integer) p ; | |
negative = true ; | |
} | |
if ( q <= 0 ) | |
{ | |
; | |
#ifdef TEXMF_DEBUG | |
if ( q == 0 ) | |
confusion ( 47 ) ; | |
#endif /* TEXMF_DEBUG */ | |
q = - (integer) q ; | |
negative = ! negative ; | |
} | |
n = p / q ; | |
p = p % q ; | |
if ( n >= 8 ) | |
{ | |
aritherror = true ; | |
if ( negative ) | |
Result = -2147483647L ; | |
else Result = 2147483647L ; | |
} | |
else { | |
n = ( n - 1 ) * 268435456L ; | |
f = 1 ; | |
do { | |
becareful = p - q ; | |
p = becareful + p ; | |
if ( p >= 0 ) | |
f = f + f + 1 ; | |
else { | |
f = f + f ; | |
p = p + q ; | |
} | |
} while ( ! ( f >= 268435456L ) ) ; | |
becareful = p - q ; | |
if ( becareful + p >= 0 ) | |
incr ( f ) ; | |
if ( negative ) | |
Result = - (integer) ( f + n ) ; | |
else Result = f + n ; | |
} | |
return Result ; | |
} | |
integer | |
ztakefrac ( integer q , integer f ) | |
{ | |
register integer Result; takefrac_regmem | |
integer p ; | |
boolean negative ; | |
integer n ; | |
integer becareful ; | |
if ( f >= 0 ) | |
negative = false ; | |
else { | |
f = - (integer) f ; | |
negative = true ; | |
} | |
if ( q < 0 ) | |
{ | |
q = - (integer) q ; | |
negative = ! negative ; | |
} | |
if ( f < 268435456L ) | |
n = 0 ; | |
else { | |
n = f / 268435456L ; | |
f = f % 268435456L ; | |
if ( q <= 2147483647L / n ) | |
n = n * q ; | |
else { | |
aritherror = true ; | |
n = 2147483647L ; | |
} | |
} | |
f = f + 268435456L ; | |
p = 134217728L ; | |
if ( q < 1073741824L ) | |
do { | |
if ( odd ( f ) ) | |
p = ( p + q ) / 2 ; | |
else p = ( p ) / 2 ; | |
f = ( f ) / 2 ; | |
} while ( ! ( f == 1 ) ) ; | |
else do { | |
if ( odd ( f ) ) | |
p = p + ( q - p ) / 2 ; | |
else p = ( p ) / 2 ; | |
f = ( f ) / 2 ; | |
} while ( ! ( f == 1 ) ) ; | |
becareful = n - 2147483647L ; | |
if ( becareful + p > 0 ) | |
{ | |
aritherror = true ; | |
n = 2147483647L - p ; | |
} | |
if ( negative ) | |
Result = - (integer) ( n + p ) ; | |
else Result = n + p ; | |
return Result ; | |
} | |
integer | |
zmlog ( integer x ) | |
{ | |
register integer Result; mlog_regmem | |
integer y, z ; | |
integer k ; | |
if ( x <= 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65580L ) ; | |
} | |
printscaled ( x ) ; | |
print ( 65581L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65582L ; | |
helpline [0 ]= 65583L ; | |
} | |
error () ; | |
Result = 0 ; | |
} | |
else { | |
y = 1302456860L ; | |
z = 6581195L ; | |
while ( x < 1073741824L ) { | |
x = x + x ; | |
y = y - 93032639L ; | |
z = z - 48782L ; | |
} | |
y = y + ( z / 65536L ) ; | |
k = 2 ; | |
while ( x > 1073741828L ) { | |
z = ( ( x - 1 ) / twotothe [k ]) + 1 ; | |
while ( x < 1073741824L + z ) { | |
z = ( z + 1 ) / 2 ; | |
k = k + 1 ; | |
} | |
y = y + speclog [k ]; | |
x = x - z ; | |
} | |
Result = y / 8 ; | |
} | |
return Result ; | |
} | |
integer | |
zabvscd ( integer a , integer b , integer c , integer d ) | |
{ | |
/* 10 */ register integer Result; abvscd_regmem | |
integer q, r ; | |
if ( a < 0 ) | |
{ | |
a = - (integer) a ; | |
b = - (integer) b ; | |
} | |
if ( c < 0 ) | |
{ | |
c = - (integer) c ; | |
d = - (integer) d ; | |
} | |
if ( d <= 0 ) | |
{ | |
if ( b >= 0 ) { | |
if ( ( ( a == 0 ) || ( b == 0 ) ) && ( ( c == 0 ) || ( d == 0 ) ) ) | |
{ | |
Result = 0 ; | |
return Result ; | |
} | |
else { | |
Result = 1 ; | |
return Result ; | |
} | |
} | |
if ( d == 0 ) { | |
if ( a == 0 ) | |
{ | |
Result = 0 ; | |
return Result ; | |
} | |
else { | |
Result = -1 ; | |
return Result ; | |
} | |
} | |
q = a ; | |
a = c ; | |
c = q ; | |
q = - (integer) b ; | |
b = - (integer) d ; | |
d = q ; | |
} | |
else if ( b <= 0 ) | |
{ | |
if ( b < 0 ) { | |
if ( a > 0 ) | |
{ | |
Result = -1 ; | |
return Result ; | |
} | |
} | |
if ( c == 0 ) | |
{ | |
Result = 0 ; | |
return Result ; | |
} | |
else { | |
Result = -1 ; | |
return Result ; | |
} | |
} | |
while ( true ) { | |
q = a / d ; | |
r = c / b ; | |
if ( q != r ) { | |
if ( q > r ) | |
{ | |
Result = 1 ; | |
return Result ; | |
} | |
else { | |
Result = -1 ; | |
return Result ; | |
} | |
} | |
q = a % d ; | |
r = c % b ; | |
if ( r == 0 ) { | |
if ( q == 0 ) | |
{ | |
Result = 0 ; | |
return Result ; | |
} | |
else { | |
Result = 1 ; | |
return Result ; | |
} | |
} | |
if ( q == 0 ) | |
{ | |
Result = -1 ; | |
return Result ; | |
} | |
a = b ; | |
b = q ; | |
c = d ; | |
d = r ; | |
} | |
return Result ; | |
} | |
void | |
newrandoms ( void ) | |
{ | |
newrandoms_regmem | |
unsigned char k ; | |
integer x ; | |
{register integer for_end; k = 0 ;for_end = 23 ; if ( k <= for_end) do | |
{ | |
x = randoms [k ]- randoms [k + 31 ]; | |
if ( x < 0 ) | |
x = x + 268435456L ; | |
randoms [k ]= x ; | |
} | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = 24 ;for_end = 54 ; if ( k <= for_end) do | |
{ | |
x = randoms [k ]- randoms [k - 24 ]; | |
if ( x < 0 ) | |
x = x + 268435456L ; | |
randoms [k ]= x ; | |
} | |
while ( k++ < for_end ) ;} | |
jrandom = 54 ; | |
} | |
void | |
zinitrandoms ( integer seed ) | |
{ | |
initrandoms_regmem | |
integer j, jj, k ; | |
unsigned char i ; | |
j = abs ( seed ) ; | |
while ( j >= 268435456L ) j = ( j ) / 2 ; | |
k = 1 ; | |
{register integer for_end; i = 0 ;for_end = 54 ; if ( i <= for_end) do | |
{ | |
jj = k ; | |
k = j - k ; | |
j = jj ; | |
if ( k < 0 ) | |
k = k + 268435456L ; | |
randoms [( i * 21 ) % 55 ]= j ; | |
} | |
while ( i++ < for_end ) ;} | |
newrandoms () ; | |
newrandoms () ; | |
newrandoms () ; | |
} | |
integer | |
zunifrand ( integer x ) | |
{ | |
register integer Result; unifrand_regmem | |
integer y ; | |
if ( jrandom == 0 ) | |
newrandoms () ; | |
else decr ( jrandom ) ; | |
y = takefrac ( abs ( x ) , randoms [jrandom ]) ; | |
if ( y == abs ( x ) ) | |
Result = 0 ; | |
else if ( x > 0 ) | |
Result = y ; | |
else Result = - (integer) y ; | |
return Result ; | |
} | |
integer | |
normrand ( void ) | |
{ | |
register integer Result; normrand_regmem | |
integer x, u, l ; | |
do { | |
do { if ( jrandom == 0 ) | |
newrandoms () ; | |
else decr ( jrandom ) ; | |
x = takefrac ( 112429L , randoms [jrandom ]- 134217728L ) ; | |
if ( jrandom == 0 ) | |
newrandoms () ; | |
else decr ( jrandom ) ; | |
u = randoms [jrandom ]; | |
} while ( ! ( abs ( x ) < u ) ) ; | |
x = makefrac ( x , u ) ; | |
l = 139548960L - mlog ( u ) ; | |
} while ( ! ( abvscd ( 1024 , l , x , x ) >= 0 ) ) ; | |
Result = x ; | |
return Result ; | |
} | |
#ifdef TEXMF_DEBUG | |
void | |
zprintword ( memoryword w ) | |
{ | |
printword_regmem | |
printint ( w .cint ) ; | |
printchar ( 32 ) ; | |
printscaled ( w .cint ) ; | |
printchar ( 32 ) ; | |
printscaled ( round ( 65536L * w .gr ) ) ; | |
println () ; | |
printint ( w .hh .v.LH ) ; | |
printchar ( 61 ) ; | |
printint ( w .hh.b0 ) ; | |
printchar ( 58 ) ; | |
printint ( w .hh.b1 ) ; | |
printchar ( 59 ) ; | |
printint ( w .hh .v.RH ) ; | |
printchar ( 32 ) ; | |
printint ( w .qqqq .b0 ) ; | |
printchar ( 58 ) ; | |
printint ( w .qqqq .b1 ) ; | |
printchar ( 58 ) ; | |
printint ( w .qqqq .b2 ) ; | |
printchar ( 58 ) ; | |
printint ( w .qqqq .b3 ) ; | |
} | |
#endif /* TEXMF_DEBUG */ | |
void | |
zshowtokenlist ( integer p , integer q , integer l ) | |
{ | |
/* 10 */ showtokenlist_regmem | |
integer m, c ; | |
integer matchchr ; | |
UTF16code n ; | |
matchchr = 35 ; | |
n = 48 ; | |
tally = 0 ; | |
while ( ( p != -268435455L ) && ( tally < l ) ) { | |
if ( p == q ) | |
{ | |
firstcount = tally ; | |
trickcount = tally + 1 + errorline - halferrorline ; | |
if ( trickcount < errorline ) | |
trickcount = errorline ; | |
} | |
if ( ( p < himemmin ) || ( p > memend ) ) | |
{ | |
printesc ( 65595L ) ; | |
return ; | |
} | |
if ( mem [p ].hh .v.LH >= 33554431L ) | |
printcs ( mem [p ].hh .v.LH - 33554431L ) ; | |
else { | |
m = mem [p ].hh .v.LH / 2097152L ; | |
c = mem [p ].hh .v.LH % 2097152L ; | |
if ( mem [p ].hh .v.LH < 0 ) | |
printesc ( 65879L ) ; | |
else switch ( m ) | |
{case 1 : | |
case 2 : | |
case 3 : | |
case 4 : | |
case 7 : | |
case 8 : | |
case 10 : | |
case 11 : | |
case 12 : | |
printchar ( c ) ; | |
break ; | |
case 6 : | |
{ | |
printchar ( c ) ; | |
printchar ( c ) ; | |
} | |
break ; | |
case 5 : | |
{ | |
printchar ( matchchr ) ; | |
if ( c <= 9 ) | |
printchar ( c + 48 ) ; | |
else { | |
printchar ( 33 ) ; | |
return ; | |
} | |
} | |
break ; | |
case 13 : | |
{ | |
matchchr = c ; | |
printchar ( c ) ; | |
incr ( n ) ; | |
printchar ( n ) ; | |
if ( n > 57 ) | |
return ; | |
} | |
break ; | |
case 14 : | |
if ( c == 0 ) | |
print ( 65880L ) ; | |
break ; | |
default: | |
printesc ( 65879L ) ; | |
break ; | |
} | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
if ( p != -268435455L ) | |
printesc ( 65708L ) ; | |
} | |
void | |
runaway ( void ) | |
{ | |
runaway_regmem | |
halfword p ; | |
if ( scannerstatus > 1 ) | |
{ | |
switch ( scannerstatus ) | |
{case 2 : | |
{ | |
printnl ( 65893L ) ; | |
p = defref ; | |
} | |
break ; | |
case 3 : | |
{ | |
printnl ( 65894L ) ; | |
p = memtop - 3 ; | |
} | |
break ; | |
case 4 : | |
{ | |
printnl ( 65895L ) ; | |
p = memtop - 4 ; | |
} | |
break ; | |
case 5 : | |
{ | |
printnl ( 65896L ) ; | |
p = defref ; | |
} | |
break ; | |
} | |
printchar ( 63 ) ; | |
println () ; | |
showtokenlist ( mem [p ].hh .v.RH , -268435455L , errorline - 10 ) ; | |
} | |
} | |
halfword | |
getavail ( void ) | |
{ | |
register halfword Result; getavail_regmem | |
halfword p ; | |
p = avail ; | |
if ( p != -268435455L ) | |
avail = mem [avail ].hh .v.RH ; | |
else if ( memend < memmax ) | |
{ | |
incr ( memend ) ; | |
p = memend ; | |
} | |
else { | |
decr ( himemmin ) ; | |
p = himemmin ; | |
if ( himemmin <= lomemmax ) | |
{ | |
runaway () ; | |
overflow ( 65584L , memmax + 1 - memmin ) ; | |
} | |
} | |
mem [p ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
incr ( dynused ) ; | |
#endif /* STAT */ | |
Result = p ; | |
return Result ; | |
} | |
void | |
zflushlist ( halfword p ) | |
{ | |
flushlist_regmem | |
halfword q, r ; | |
if ( p != -268435455L ) | |
{ | |
r = p ; | |
do { | |
q = r ; | |
r = mem [r ].hh .v.RH ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} while ( ! ( r == -268435455L ) ) ; | |
mem [q ].hh .v.RH = avail ; | |
avail = p ; | |
} | |
} | |
halfword | |
zgetnode ( integer s ) | |
{ | |
/* 40 10 20 */ register halfword Result; getnode_regmem | |
halfword p ; | |
halfword q ; | |
integer r ; | |
integer t ; | |
lab20: p = rover ; | |
do { | |
q = p + mem [p ].hh .v.LH ; | |
while ( ( mem [q ].hh .v.RH == 1073741823L ) ) { | |
t = mem [q + 1 ].hh .v.RH ; | |
if ( q == rover ) | |
rover = t ; | |
mem [t + 1 ].hh .v.LH = mem [q + 1 ].hh .v.LH ; | |
mem [mem [q + 1 ].hh .v.LH + 1 ].hh .v.RH = t ; | |
q = q + mem [q ].hh .v.LH ; | |
} | |
r = q - s ; | |
if ( r > p + 1 ) | |
{ | |
mem [p ].hh .v.LH = r - p ; | |
rover = p ; | |
goto lab40 ; | |
} | |
if ( r == p ) { | |
if ( mem [p + 1 ].hh .v.RH != p ) | |
{ | |
rover = mem [p + 1 ].hh .v.RH ; | |
t = mem [p + 1 ].hh .v.LH ; | |
mem [rover + 1 ].hh .v.LH = t ; | |
mem [t + 1 ].hh .v.RH = rover ; | |
goto lab40 ; | |
} | |
} | |
mem [p ].hh .v.LH = q - p ; | |
p = mem [p + 1 ].hh .v.RH ; | |
} while ( ! ( p == rover ) ) ; | |
if ( s == 1073741824L ) | |
{ | |
Result = 1073741823L ; | |
return Result ; | |
} | |
if ( lomemmax + 2 < himemmin ) { | |
if ( lomemmax + 2 <= membot + 1073741823L ) | |
{ | |
if ( himemmin - lomemmax >= 1998 ) | |
t = lomemmax + 1000 ; | |
else t = lomemmax + 1 + ( himemmin - lomemmax ) / 2 ; | |
p = mem [rover + 1 ].hh .v.LH ; | |
q = lomemmax ; | |
mem [p + 1 ].hh .v.RH = q ; | |
mem [rover + 1 ].hh .v.LH = q ; | |
if ( t > membot + 1073741823L ) | |
t = membot + 1073741823L ; | |
mem [q + 1 ].hh .v.RH = rover ; | |
mem [q + 1 ].hh .v.LH = p ; | |
mem [q ].hh .v.RH = 1073741823L ; | |
mem [q ].hh .v.LH = t - lomemmax ; | |
lomemmax = t ; | |
mem [lomemmax ].hh .v.RH = -268435455L ; | |
mem [lomemmax ].hh .v.LH = -268435455L ; | |
rover = q ; | |
goto lab20 ; | |
} | |
} | |
overflow ( 65584L , memmax + 1 - memmin ) ; | |
lab40: mem [r ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
varused = varused + s ; | |
#endif /* STAT */ | |
if ( s >= 3 ) | |
{ | |
mem [r + s - 1 ].hh .v.LH = curinput .synctextagfield ; | |
mem [r + s - 1 ].hh .v.RH = line ; | |
} | |
Result = r ; | |
return Result ; | |
} | |
void | |
zfreenode ( halfword p , halfword s ) | |
{ | |
freenode_regmem | |
halfword q ; | |
mem [p ].hh .v.LH = s ; | |
mem [p ].hh .v.RH = 1073741823L ; | |
q = mem [rover + 1 ].hh .v.LH ; | |
mem [p + 1 ].hh .v.LH = q ; | |
mem [p + 1 ].hh .v.RH = rover ; | |
mem [rover + 1 ].hh .v.LH = p ; | |
mem [q + 1 ].hh .v.RH = p ; | |
; | |
#ifdef STAT | |
varused = varused - s ; | |
#endif /* STAT */ | |
} | |
halfword | |
newnullbox ( void ) | |
{ | |
register halfword Result; newnullbox_regmem | |
halfword p ; | |
p = getnode ( 8 ) ; | |
mem [p ].hh.b0 = 0 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].cint = 0 ; | |
mem [p + 2 ].cint = 0 ; | |
mem [p + 3 ].cint = 0 ; | |
mem [p + 4 ].cint = 0 ; | |
mem [p + 5 ].hh .v.RH = -268435455L ; | |
mem [p + 5 ].hh.b0 = 0 ; | |
mem [p + 5 ].hh.b1 = 0 ; | |
mem [p + 6 ].gr = 0.0 ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
newrule ( void ) | |
{ | |
register halfword Result; newrule_regmem | |
halfword p ; | |
p = getnode ( 5 ) ; | |
mem [p ].hh.b0 = 2 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].cint = -1073741824L ; | |
mem [p + 2 ].cint = -1073741824L ; | |
mem [p + 3 ].cint = -1073741824L ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewligature ( internalfontnumber f , quarterword c , halfword q ) | |
{ | |
register halfword Result; newligature_regmem | |
halfword p ; | |
p = getnode ( 2 ) ; | |
mem [p ].hh.b0 = 6 ; | |
mem [p + 1 ].hh.b0 = f ; | |
mem [p + 1 ].hh.b1 = c ; | |
mem [p + 1 ].hh .v.RH = q ; | |
mem [p ].hh.b1 = 0 ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewligitem ( quarterword c ) | |
{ | |
register halfword Result; newligitem_regmem | |
halfword p ; | |
p = getnode ( 2 ) ; | |
mem [p ].hh.b1 = c ; | |
mem [p + 1 ].hh .v.RH = -268435455L ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
newdisc ( void ) | |
{ | |
register halfword Result; newdisc_regmem | |
halfword p ; | |
p = getnode ( 2 ) ; | |
mem [p ].hh.b0 = 7 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].hh .v.LH = -268435455L ; | |
mem [p + 1 ].hh .v.RH = -268435455L ; | |
Result = p ; | |
return Result ; | |
} | |
void | |
zcopynativeglyphinfo ( halfword src , halfword dest ) | |
{ | |
copynativeglyphinfo_regmem | |
integer glyphcount ; | |
if ( mem [src + 5 ].ptr != nullptr ) | |
{ | |
glyphcount = mem [src + 4 ].qqqq .b3 ; | |
mem [dest + 5 ].ptr = xmallocarray ( char , glyphcount * 10 ) ; | |
memcpy ( mem [dest + 5 ].ptr , mem [src + 5 ].ptr , glyphcount * 10 ) | |
; | |
mem [dest + 4 ].qqqq .b3 = glyphcount ; | |
} | |
} | |
halfword | |
znewmath ( scaled w , smallnumber s ) | |
{ | |
register halfword Result; newmath_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 9 ; | |
mem [p ].hh.b1 = s ; | |
mem [p + 1 ].cint = w ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewspec ( halfword p ) | |
{ | |
register halfword Result; newspec_regmem | |
halfword q ; | |
q = getnode ( 4 ) ; | |
mem [q ]= mem [p ]; | |
mem [q ].hh .v.RH = -268435455L ; | |
mem [q + 1 ].cint = mem [p + 1 ].cint ; | |
mem [q + 2 ].cint = mem [p + 2 ].cint ; | |
mem [q + 3 ].cint = mem [p + 3 ].cint ; | |
Result = q ; | |
return Result ; | |
} | |
halfword | |
znewparamglue ( smallnumber n ) | |
{ | |
register halfword Result; newparamglue_regmem | |
halfword p ; | |
halfword q ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 10 ; | |
mem [p ].hh.b1 = n + 1 ; | |
mem [p + 1 ].hh .v.RH = -268435455L ; | |
q = eqtb [2252740L + n ].hh .v.RH ; | |
mem [p + 1 ].hh .v.LH = q ; | |
incr ( mem [q ].hh .v.RH ) ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewglue ( halfword q ) | |
{ | |
register halfword Result; newglue_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 10 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].hh .v.RH = -268435455L ; | |
mem [p + 1 ].hh .v.LH = q ; | |
incr ( mem [q ].hh .v.RH ) ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewskipparam ( smallnumber n ) | |
{ | |
register halfword Result; newskipparam_regmem | |
halfword p ; | |
tempptr = newspec ( eqtb [2252740L + n ].hh .v.RH ) ; | |
p = newglue ( tempptr ) ; | |
mem [tempptr ].hh .v.RH = -268435455L ; | |
mem [p ].hh.b1 = n + 1 ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewkern ( scaled w ) | |
{ | |
register halfword Result; newkern_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 11 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].cint = w ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewpenalty ( integer m ) | |
{ | |
register halfword Result; newpenalty_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 12 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].cint = m ; | |
Result = p ; | |
return Result ; | |
} | |
#ifdef TEXMF_DEBUG | |
void | |
zcheckmem ( boolean printlocs ) | |
{ | |
/* 31 32 */ checkmem_regmem | |
halfword p, q ; | |
boolean clobbered ; | |
{register integer for_end; p = memmin ;for_end = lomemmax ; if ( p <= | |
for_end) do | |
freearr [p ]= false ; | |
while ( p++ < for_end ) ;} | |
{register integer for_end; p = himemmin ;for_end = memend ; if ( p <= | |
for_end) do | |
freearr [p ]= false ; | |
while ( p++ < for_end ) ;} | |
p = avail ; | |
q = -268435455L ; | |
clobbered = false ; | |
while ( p != -268435455L ) { | |
if ( ( p > memend ) || ( p < himemmin ) ) | |
clobbered = true ; | |
else if ( freearr [p ]) | |
clobbered = true ; | |
if ( clobbered ) | |
{ | |
printnl ( 65585L ) ; | |
printint ( q ) ; | |
goto lab31 ; | |
} | |
freearr [p ]= true ; | |
q = p ; | |
p = mem [q ].hh .v.RH ; | |
} | |
lab31: ; | |
p = rover ; | |
q = -268435455L ; | |
clobbered = false ; | |
do { | |
if ( ( p >= lomemmax ) || ( p < memmin ) ) | |
clobbered = true ; | |
else if ( ( mem [p + 1 ].hh .v.RH >= lomemmax ) || ( mem [p + 1 ].hh | |
.v.RH < memmin ) ) | |
clobbered = true ; | |
else if ( ! ( ( mem [p ].hh .v.RH == 1073741823L ) ) || ( mem [p ].hh | |
.v.LH < 2 ) || ( p + mem [p ].hh .v.LH > lomemmax ) || ( mem [mem [p + | |
1 ].hh .v.RH + 1 ].hh .v.LH != p ) ) | |
clobbered = true ; | |
if ( clobbered ) | |
{ | |
printnl ( 65586L ) ; | |
printint ( q ) ; | |
goto lab32 ; | |
} | |
{register integer for_end; q = p ;for_end = p + mem [p ].hh .v.LH - 1 | |
; if ( q <= for_end) do | |
{ | |
if ( freearr [q ]) | |
{ | |
printnl ( 65587L ) ; | |
printint ( q ) ; | |
goto lab32 ; | |
} | |
freearr [q ]= true ; | |
} | |
while ( q++ < for_end ) ;} | |
q = p ; | |
p = mem [p + 1 ].hh .v.RH ; | |
} while ( ! ( p == rover ) ) ; | |
lab32: ; | |
p = memmin ; | |
while ( p <= lomemmax ) { | |
if ( ( mem [p ].hh .v.RH == 1073741823L ) ) | |
{ | |
printnl ( 65588L ) ; | |
printint ( p ) ; | |
} | |
while ( ( p <= lomemmax ) && ! freearr [p ]) incr ( p ) ; | |
while ( ( p <= lomemmax ) && freearr [p ]) incr ( p ) ; | |
} | |
if ( printlocs ) | |
{ | |
printnl ( 65589L ) ; | |
{register integer for_end; p = memmin ;for_end = lomemmax ; if ( p <= | |
for_end) do | |
if ( ! freearr [p ]&& ( ( p > waslomax ) || wasfree [p ]) ) | |
{ | |
printchar ( 32 ) ; | |
printint ( p ) ; | |
} | |
while ( p++ < for_end ) ;} | |
{register integer for_end; p = himemmin ;for_end = memend ; if ( p <= | |
for_end) do | |
if ( ! freearr [p ]&& ( ( p < washimin ) || ( p > wasmemend ) || | |
wasfree [p ]) ) | |
{ | |
printchar ( 32 ) ; | |
printint ( p ) ; | |
} | |
while ( p++ < for_end ) ;} | |
} | |
{register integer for_end; p = memmin ;for_end = lomemmax ; if ( p <= | |
for_end) do | |
wasfree [p ]= freearr [p ]; | |
while ( p++ < for_end ) ;} | |
{register integer for_end; p = himemmin ;for_end = memend ; if ( p <= | |
for_end) do | |
wasfree [p ]= freearr [p ]; | |
while ( p++ < for_end ) ;} | |
wasmemend = memend ; | |
waslomax = lomemmax ; | |
washimin = himemmin ; | |
} | |
#endif /* TEXMF_DEBUG */ | |
#ifdef TEXMF_DEBUG | |
void | |
zsearchmem ( halfword p ) | |
{ | |
searchmem_regmem | |
integer q ; | |
{register integer for_end; q = memmin ;for_end = lomemmax ; if ( q <= | |
for_end) do | |
{ | |
if ( mem [q ].hh .v.RH == p ) | |
{ | |
printnl ( 65590L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
if ( mem [q ].hh .v.LH == p ) | |
{ | |
printnl ( 65591L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
} | |
while ( q++ < for_end ) ;} | |
{register integer for_end; q = himemmin ;for_end = memend ; if ( q <= | |
for_end) do | |
{ | |
if ( mem [q ].hh .v.RH == p ) | |
{ | |
printnl ( 65590L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
if ( mem [q ].hh .v.LH == p ) | |
{ | |
printnl ( 65591L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
} | |
while ( q++ < for_end ) ;} | |
{register integer for_end; q = 1 ;for_end = 2253798L ; if ( q <= for_end) | |
do | |
{ | |
if ( eqtb [q ].hh .v.RH == p ) | |
{ | |
printnl ( 65809L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
} | |
while ( q++ < for_end ) ;} | |
if ( saveptr > 0 ) | |
{register integer for_end; q = 0 ;for_end = saveptr - 1 ; if ( q <= | |
for_end) do | |
{ | |
if ( savestack [q ].hh .v.RH == p ) | |
{ | |
printnl ( 65871L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
} | |
while ( q++ < for_end ) ;} | |
{register integer for_end; q = 0 ;for_end = hyphsize ; if ( q <= for_end) | |
do | |
{ | |
if ( hyphlist [q ]== p ) | |
{ | |
printnl ( 66369L ) ; | |
printint ( q ) ; | |
printchar ( 41 ) ; | |
} | |
} | |
while ( q++ < for_end ) ;} | |
} | |
#endif /* TEXMF_DEBUG */ | |
void | |
zpdferror ( strnumber t , strnumber p ) | |
{ | |
pdferror_regmem | |
normalizeselector () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65592L ) ; | |
} | |
if ( t != 0 ) | |
{ | |
print ( 65566L ) ; | |
print ( t ) ; | |
print ( 41 ) ; | |
} | |
print ( 65593L ) ; | |
print ( p ) ; | |
{ | |
if ( interaction == 3 ) | |
interaction = 2 ; | |
if ( logopened ) | |
error () ; | |
; | |
#ifdef TEXMF_DEBUG | |
if ( interaction > 0 ) | |
debughelp () ; | |
#endif /* TEXMF_DEBUG */ | |
history = 3 ; | |
jumpout () ; | |
} | |
} | |
halfword | |
zprevrightmost ( halfword s , halfword e ) | |
{ | |
register halfword Result; prevrightmost_regmem | |
halfword p ; | |
Result = -268435455L ; | |
p = s ; | |
if ( p == -268435455L ) | |
return Result ; | |
while ( mem [p ].hh .v.RH != e ) { | |
p = mem [p ].hh .v.RH ; | |
if ( p == -268435455L ) | |
return Result ; | |
} | |
Result = p ; | |
return Result ; | |
} | |
scaled | |
zroundxnoverd ( scaled x , integer n , integer d ) | |
{ | |
register scaled Result; roundxnoverd_regmem | |
boolean positive ; | |
nonnegativeinteger t, u, v ; | |
if ( x >= 0 ) | |
positive = true ; | |
else { | |
x = - (integer) x ; | |
positive = false ; | |
} | |
t = ( x % 32768L ) * n ; | |
u = ( x / 32768L ) * n + ( t / 32768L ) ; | |
v = ( u % d ) * 32768L + ( t % 32768L ) ; | |
if ( u / d >= 32768L ) | |
aritherror = true ; | |
else u = 32768L * ( u / d ) + ( v / d ) ; | |
v = v % d ; | |
if ( 2 * v >= d ) | |
incr ( u ) ; | |
if ( positive ) | |
Result = u ; | |
else Result = - (integer) u ; | |
return Result ; | |
} | |
integer | |
getmicrointerval ( void ) | |
{ | |
register integer Result; getmicrointerval_regmem | |
integer s, m ; | |
secondsandmicros ( s , m ) ; | |
if ( ( s - epochseconds ) > 32767 ) | |
Result = 2147483647L ; | |
else if ( ( microseconds > m ) ) | |
Result = ( ( s - 1 - epochseconds ) * 65536L ) + ( ( ( m + 1000000L - | |
microseconds ) / ((double) 100 ) ) * 65536L ) / ((double) 10000 ) ; | |
else Result = ( ( s - epochseconds ) * 65536L ) + ( ( ( m - microseconds ) | |
/ ((double) 100 ) ) * 65536L ) / ((double) 10000 ) ; | |
return Result ; | |
} | |
void | |
zshortdisplay ( integer p ) | |
{ | |
shortdisplay_regmem | |
integer n ; | |
while ( p > memmin ) { | |
if ( ( p >= himemmin ) ) | |
{ | |
if ( p <= memend ) | |
{ | |
if ( mem [p ].hh.b0 != fontinshortdisplay ) | |
{ | |
if ( ( mem [p ].hh.b0 > fontmax ) ) | |
printchar ( 42 ) ; | |
else printesc ( hash [2243738L + mem [p ].hh.b0 ].v.RH ) ; | |
printchar ( 32 ) ; | |
fontinshortdisplay = mem [p ].hh.b0 ; | |
} | |
print ( mem [p ].hh.b1 ) ; | |
} | |
} | |
else switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 3 : | |
case 4 : | |
case 5 : | |
case 13 : | |
print ( 65594L ) ; | |
break ; | |
case 8 : | |
switch ( mem [p ].hh.b1 ) | |
{case 40 : | |
case 41 : | |
{ | |
if ( mem [p + 4 ].qqqq .b1 != fontinshortdisplay ) | |
{ | |
printesc ( hash [2243738L + mem [p + 4 ].qqqq .b1 ].v.RH ) ; | |
printchar ( 32 ) ; | |
fontinshortdisplay = mem [p + 4 ].qqqq .b1 ; | |
} | |
printnativeword ( p ) ; | |
} | |
break ; | |
default: | |
print ( 65594L ) ; | |
break ; | |
} | |
break ; | |
case 2 : | |
printchar ( 124 ) ; | |
break ; | |
case 10 : | |
if ( mem [p + 1 ].hh .v.LH != membot ) | |
printchar ( 32 ) ; | |
break ; | |
case 9 : | |
if ( mem [p ].hh.b1 >= 4 ) | |
print ( 65594L ) ; | |
else printchar ( 36 ) ; | |
break ; | |
case 6 : | |
shortdisplay ( mem [p + 1 ].hh .v.RH ) ; | |
break ; | |
case 7 : | |
{ | |
shortdisplay ( mem [p + 1 ].hh .v.LH ) ; | |
shortdisplay ( mem [p + 1 ].hh .v.RH ) ; | |
n = mem [p ].hh.b1 ; | |
while ( n > 0 ) { | |
if ( mem [p ].hh .v.RH != -268435455L ) | |
p = mem [p ].hh .v.RH ; | |
decr ( n ) ; | |
} | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
} | |
void | |
zprintfontandchar ( integer p ) | |
{ | |
printfontandchar_regmem | |
if ( p > memend ) | |
printesc ( 65595L ) ; | |
else { | |
if ( ( mem [p ].hh.b0 > fontmax ) ) | |
printchar ( 42 ) ; | |
else printesc ( hash [2243738L + mem [p ].hh.b0 ].v.RH ) ; | |
printchar ( 32 ) ; | |
print ( mem [p ].hh.b1 ) ; | |
} | |
} | |
void | |
zprintmark ( integer p ) | |
{ | |
printmark_regmem | |
printchar ( 123 ) ; | |
if ( ( p < himemmin ) || ( p > memend ) ) | |
printesc ( 65595L ) ; | |
else showtokenlist ( mem [p ].hh .v.RH , -268435455L , maxprintline - 10 ) | |
; | |
printchar ( 125 ) ; | |
} | |
void | |
zprintruledimen ( scaled d ) | |
{ | |
printruledimen_regmem | |
if ( ( d == -1073741824L ) ) | |
printchar ( 42 ) ; | |
else printscaled ( d ) ; | |
} | |
void | |
zprintglue ( scaled d , integer order , strnumber s ) | |
{ | |
printglue_regmem | |
printscaled ( d ) ; | |
if ( ( order < 0 ) || ( order > 3 ) ) | |
print ( 65596L ) ; | |
else if ( order > 0 ) | |
{ | |
print ( 65597L ) ; | |
while ( order > 1 ) { | |
printchar ( 108 ) ; | |
decr ( order ) ; | |
} | |
} | |
else if ( s != 0 ) | |
print ( s ) ; | |
} | |
void | |
zprintspec ( integer p , strnumber s ) | |
{ | |
printspec_regmem | |
if ( ( p < memmin ) || ( p >= lomemmax ) ) | |
printchar ( 42 ) ; | |
else { | |
printscaled ( mem [p + 1 ].cint ) ; | |
if ( s != 0 ) | |
print ( s ) ; | |
if ( mem [p + 2 ].cint != 0 ) | |
{ | |
print ( 65598L ) ; | |
printglue ( mem [p + 2 ].cint , mem [p ].hh.b0 , s ) ; | |
} | |
if ( mem [p + 3 ].cint != 0 ) | |
{ | |
print ( 65599L ) ; | |
printglue ( mem [p + 3 ].cint , mem [p ].hh.b1 , s ) ; | |
} | |
} | |
} | |
void | |
zprintfamandchar ( halfword p ) | |
{ | |
printfamandchar_regmem | |
integer c ; | |
printesc ( 65764L ) ; | |
printint ( ( mem [p ].hh.b0 % 256 ) % 256 ) ; | |
printchar ( 32 ) ; | |
c = ( casttoushort ( mem [p ].hh.b1 ) + ( ( mem [p ].hh.b0 / 256 ) * | |
65536L ) ) ; | |
if ( c < 65536L ) | |
print ( c ) ; | |
else printchar ( c ) ; | |
} | |
void | |
zprintdelimiter ( halfword p ) | |
{ | |
printdelimiter_regmem | |
integer a ; | |
a = ( mem [p ].qqqq .b0 % 256 ) * 256 + ( mem [p ].qqqq .b1 + ( mem [p | |
].qqqq .b0 / 256 ) * 65536L ) ; | |
a = a * 4096 + ( mem [p ].qqqq .b2 % 256 ) * 256 + ( mem [p ].qqqq .b3 + | |
( mem [p ].qqqq .b2 / 256 ) * 65536L ) ; | |
if ( a < 0 ) | |
printint ( a ) ; | |
else printhex ( a ) ; | |
} | |
void | |
zprintsubsidiarydata ( halfword p , UTF16code c ) | |
{ | |
printsubsidiarydata_regmem | |
if ( ( poolptr - strstart [( strptr ) - 65536L ]) >= depththreshold ) | |
{ | |
if ( mem [p ].hh .v.RH != 0 ) | |
print ( 65600L ) ; | |
} | |
else { | |
{ | |
strpool [poolptr ]= c ; | |
incr ( poolptr ) ; | |
} | |
tempptr = p ; | |
switch ( mem [p ].hh .v.RH ) | |
{case 1 : | |
{ | |
println () ; | |
printcurrentstring () ; | |
printfamandchar ( p ) ; | |
} | |
break ; | |
case 2 : | |
showinfo () ; | |
break ; | |
case 3 : | |
if ( mem [p ].hh .v.LH == -268435455L ) | |
{ | |
println () ; | |
printcurrentstring () ; | |
print ( 66263L ) ; | |
} | |
else showinfo () ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
decr ( poolptr ) ; | |
} | |
} | |
void | |
zprintstyle ( integer c ) | |
{ | |
printstyle_regmem | |
switch ( c / 2 ) | |
{case 0 : | |
printesc ( 66264L ) ; | |
break ; | |
case 1 : | |
printesc ( 66265L ) ; | |
break ; | |
case 2 : | |
printesc ( 66266L ) ; | |
break ; | |
case 3 : | |
printesc ( 66267L ) ; | |
break ; | |
default: | |
print ( 66268L ) ; | |
break ; | |
} | |
} | |
void | |
zprintskipparam ( integer n ) | |
{ | |
printskipparam_regmem | |
switch ( n ) | |
{case 0 : | |
printesc ( 65675L ) ; | |
break ; | |
case 1 : | |
printesc ( 65676L ) ; | |
break ; | |
case 2 : | |
printesc ( 65677L ) ; | |
break ; | |
case 3 : | |
printesc ( 65678L ) ; | |
break ; | |
case 4 : | |
printesc ( 65679L ) ; | |
break ; | |
case 5 : | |
printesc ( 65680L ) ; | |
break ; | |
case 6 : | |
printesc ( 65681L ) ; | |
break ; | |
case 7 : | |
printesc ( 65682L ) ; | |
break ; | |
case 8 : | |
printesc ( 65683L ) ; | |
break ; | |
case 9 : | |
printesc ( 65684L ) ; | |
break ; | |
case 10 : | |
printesc ( 65685L ) ; | |
break ; | |
case 11 : | |
printesc ( 65686L ) ; | |
break ; | |
case 12 : | |
printesc ( 65687L ) ; | |
break ; | |
case 13 : | |
printesc ( 65688L ) ; | |
break ; | |
case 14 : | |
printesc ( 65689L ) ; | |
break ; | |
case 15 : | |
printesc ( 65690L ) ; | |
break ; | |
case 16 : | |
printesc ( 65691L ) ; | |
break ; | |
case 17 : | |
printesc ( 65692L ) ; | |
break ; | |
case 18 : | |
printesc ( 65693L ) ; | |
break ; | |
default: | |
print ( 65694L ) ; | |
break ; | |
} | |
} | |
void | |
zshownodelist ( integer p ) | |
{ | |
/* 10 */ shownodelist_regmem | |
integer n ; | |
integer i ; | |
real g ; | |
if ( ( poolptr - strstart [( strptr ) - 65536L ]) > depththreshold ) | |
{ | |
if ( p > -268435455L ) | |
print ( 65600L ) ; | |
return ; | |
} | |
n = 0 ; | |
while ( p > memmin ) { | |
println () ; | |
printcurrentstring () ; | |
if ( p > memend ) | |
{ | |
print ( 65601L ) ; | |
return ; | |
} | |
incr ( n ) ; | |
if ( n > breadthmax ) | |
{ | |
print ( 65602L ) ; | |
return ; | |
} | |
if ( ( p >= himemmin ) ) | |
printfontandchar ( p ) ; | |
else switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 13 : | |
{ | |
if ( mem [p ].hh.b0 == 0 ) | |
printesc ( 104 ) ; | |
else if ( mem [p ].hh.b0 == 1 ) | |
printesc ( 118 ) ; | |
else printesc ( 65607L ) ; | |
print ( 65608L ) ; | |
printscaled ( mem [p + 3 ].cint ) ; | |
printchar ( 43 ) ; | |
printscaled ( mem [p + 2 ].cint ) ; | |
print ( 65609L ) ; | |
printscaled ( mem [p + 1 ].cint ) ; | |
if ( mem [p ].hh.b0 == 13 ) | |
{ | |
if ( mem [p ].hh.b1 != 0 ) | |
{ | |
print ( 65566L ) ; | |
printint ( mem [p ].hh.b1 + 1 ) ; | |
print ( 65611L ) ; | |
} | |
if ( mem [p + 6 ].cint != 0 ) | |
{ | |
print ( 65612L ) ; | |
printglue ( mem [p + 6 ].cint , mem [p + 5 ].hh.b1 , 0 ) ; | |
} | |
if ( mem [p + 4 ].cint != 0 ) | |
{ | |
print ( 65613L ) ; | |
printglue ( mem [p + 4 ].cint , mem [p + 5 ].hh.b0 , 0 ) ; | |
} | |
} | |
else { | |
g = mem [p + 6 ].gr ; | |
if ( ( g != 0.0 ) && ( mem [p + 5 ].hh.b0 != 0 ) ) | |
{ | |
print ( 65614L ) ; | |
if ( mem [p + 5 ].hh.b0 == 2 ) | |
print ( 65615L ) ; | |
if ( fabs ( g ) > 20000.0 ) | |
{ | |
if ( g > 0.0 ) | |
printchar ( 62 ) ; | |
else print ( 65616L ) ; | |
printglue ( 20000 * 65536L , mem [p + 5 ].hh.b1 , 0 ) ; | |
} | |
else printglue ( round ( 65536L * g ) , mem [p + 5 ].hh.b1 , 0 ) | |
; | |
} | |
if ( mem [p + 4 ].cint != 0 ) | |
{ | |
print ( 65610L ) ; | |
printscaled ( mem [p + 4 ].cint ) ; | |
} | |
if ( ( eTeXmode == 1 ) ) { | |
if ( ( mem [p ].hh.b0 == 0 ) && ( ( mem [p ].hh.b1 ) == 2 ) ) | |
print ( 66918L ) ; | |
} | |
} | |
{ | |
{ | |
strpool [poolptr ]= 46 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 5 ].hh .v.RH ) ; | |
decr ( poolptr ) ; | |
} | |
} | |
break ; | |
case 2 : | |
{ | |
printesc ( 65617L ) ; | |
printruledimen ( mem [p + 3 ].cint ) ; | |
printchar ( 43 ) ; | |
printruledimen ( mem [p + 2 ].cint ) ; | |
print ( 65609L ) ; | |
printruledimen ( mem [p + 1 ].cint ) ; | |
} | |
break ; | |
case 3 : | |
{ | |
printesc ( 65618L ) ; | |
printint ( mem [p ].hh.b1 ) ; | |
print ( 65619L ) ; | |
printscaled ( mem [p + 3 ].cint ) ; | |
print ( 65620L ) ; | |
printspec ( mem [p + 4 ].hh .v.RH , 0 ) ; | |
printchar ( 44 ) ; | |
printscaled ( mem [p + 2 ].cint ) ; | |
print ( 65621L ) ; | |
printint ( mem [p + 1 ].cint ) ; | |
{ | |
{ | |
strpool [poolptr ]= 46 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 4 ].hh .v.LH ) ; | |
decr ( poolptr ) ; | |
} | |
} | |
break ; | |
case 8 : | |
switch ( mem [p ].hh.b1 ) | |
{case 0 : | |
{ | |
printwritewhatsit ( 66742L , p ) ; | |
printchar ( 61 ) ; | |
printfilename ( mem [p + 1 ].hh .v.RH , mem [p + 2 ].hh .v.LH , | |
mem [p + 2 ].hh .v.RH ) ; | |
} | |
break ; | |
case 1 : | |
{ | |
printwritewhatsit ( 65919L , p ) ; | |
printmark ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 2 : | |
printwritewhatsit ( 66743L , p ) ; | |
break ; | |
case 3 : | |
{ | |
printesc ( 66744L ) ; | |
printmark ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 4 : | |
{ | |
printesc ( 66746L ) ; | |
printint ( mem [p + 1 ].hh .v.RH ) ; | |
print ( 66759L ) ; | |
printint ( mem [p + 1 ].hh.b0 ) ; | |
printchar ( 44 ) ; | |
printint ( mem [p + 1 ].hh.b1 ) ; | |
printchar ( 41 ) ; | |
} | |
break ; | |
case 21 : | |
printesc ( 66754L ) ; | |
break ; | |
case 40 : | |
case 41 : | |
{ | |
printesc ( hash [2243738L + mem [p + 4 ].qqqq .b1 ].v.RH ) ; | |
printchar ( 32 ) ; | |
printnativeword ( p ) ; | |
} | |
break ; | |
case 42 : | |
{ | |
printesc ( hash [2243738L + mem [p + 4 ].qqqq .b1 ].v.RH ) ; | |
print ( 66760L ) ; | |
printint ( mem [p + 4 ].qqqq .b2 ) ; | |
} | |
break ; | |
case 43 : | |
case 44 : | |
{ | |
if ( mem [p ].hh.b1 == 43 ) | |
printesc ( 66749L ) ; | |
else printesc ( 66750L ) ; | |
print ( 66761L ) ; | |
{register integer for_end; i = 0 ;for_end = mem [p + 4 ].hh.b0 - | |
1 ; if ( i <= for_end) do | |
printrawchar ( picpathbyte ( p , i ) , true ) ; | |
while ( i++ < for_end ) ;} | |
print ( 34 ) ; | |
} | |
break ; | |
default: | |
print ( 66762L ) ; | |
break ; | |
} | |
break ; | |
case 10 : | |
if ( mem [p ].hh.b1 >= 100 ) | |
{ | |
printesc ( 65626L ) ; | |
if ( mem [p ].hh.b1 == 101 ) | |
printchar ( 99 ) ; | |
else if ( mem [p ].hh.b1 == 102 ) | |
printchar ( 120 ) ; | |
print ( 65627L ) ; | |
printspec ( mem [p + 1 ].hh .v.LH , 0 ) ; | |
{ | |
{ | |
strpool [poolptr ]= 46 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 1 ].hh .v.RH ) ; | |
decr ( poolptr ) ; | |
} | |
} | |
else { | |
printesc ( 65622L ) ; | |
if ( mem [p ].hh.b1 != 0 ) | |
{ | |
printchar ( 40 ) ; | |
if ( mem [p ].hh.b1 < 98 ) | |
printskipparam ( mem [p ].hh.b1 - 1 ) ; | |
else if ( mem [p ].hh.b1 == 98 ) | |
printesc ( 65623L ) ; | |
else printesc ( 65624L ) ; | |
printchar ( 41 ) ; | |
} | |
if ( mem [p ].hh.b1 != 98 ) | |
{ | |
printchar ( 32 ) ; | |
if ( mem [p ].hh.b1 < 98 ) | |
printspec ( mem [p + 1 ].hh .v.LH , 0 ) ; | |
else printspec ( mem [p + 1 ].hh .v.LH , 65625L ) ; | |
} | |
} | |
break ; | |
case 11 : | |
if ( mem [p ].hh.b1 != 99 ) | |
{ | |
printesc ( 65603L ) ; | |
if ( mem [p ].hh.b1 != 0 ) | |
printchar ( 32 ) ; | |
printscaled ( mem [p + 1 ].cint ) ; | |
if ( mem [p ].hh.b1 == 2 ) | |
print ( 65628L ) ; | |
else if ( mem [p ].hh.b1 == 3 ) | |
print ( 65629L ) ; | |
} | |
else { | |
printesc ( 65630L ) ; | |
printscaled ( mem [p + 1 ].cint ) ; | |
print ( 65625L ) ; | |
} | |
break ; | |
case 40 : | |
{ | |
printesc ( 65603L ) ; | |
printscaled ( mem [p + 1 ].cint ) ; | |
if ( mem [p ].hh.b1 == 0 ) | |
print ( 65604L ) ; | |
else print ( 65605L ) ; | |
} | |
break ; | |
case 9 : | |
if ( mem [p ].hh.b1 > 1 ) | |
{ | |
if ( odd ( mem [p ].hh.b1 ) ) | |
printesc ( 65631L ) ; | |
else printesc ( 65632L ) ; | |
if ( mem [p ].hh.b1 > 8 ) | |
printchar ( 82 ) ; | |
else if ( mem [p ].hh.b1 > 4 ) | |
printchar ( 76 ) ; | |
else printchar ( 77 ) ; | |
} | |
else { | |
printesc ( 65633L ) ; | |
if ( mem [p ].hh.b1 == 0 ) | |
print ( 65634L ) ; | |
else print ( 65635L ) ; | |
if ( mem [p + 1 ].cint != 0 ) | |
{ | |
print ( 65636L ) ; | |
printscaled ( mem [p + 1 ].cint ) ; | |
} | |
} | |
break ; | |
case 6 : | |
{ | |
printfontandchar ( p + 1 ) ; | |
print ( 65637L ) ; | |
if ( mem [p ].hh.b1 > 1 ) | |
printchar ( 124 ) ; | |
fontinshortdisplay = mem [p + 1 ].hh.b0 ; | |
shortdisplay ( mem [p + 1 ].hh .v.RH ) ; | |
if ( odd ( mem [p ].hh.b1 ) ) | |
printchar ( 124 ) ; | |
printchar ( 41 ) ; | |
} | |
break ; | |
case 12 : | |
{ | |
printesc ( 65638L ) ; | |
printint ( mem [p + 1 ].cint ) ; | |
} | |
break ; | |
case 7 : | |
{ | |
printesc ( 65639L ) ; | |
if ( mem [p ].hh.b1 > 0 ) | |
{ | |
print ( 65640L ) ; | |
printint ( mem [p ].hh.b1 ) ; | |
} | |
{ | |
{ | |
strpool [poolptr ]= 46 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 1 ].hh .v.LH ) ; | |
decr ( poolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= 124 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 1 ].hh .v.RH ) ; | |
decr ( poolptr ) ; | |
} | |
break ; | |
case 4 : | |
{ | |
printesc ( 65641L ) ; | |
if ( mem [p + 1 ].hh .v.LH != 0 ) | |
{ | |
printchar ( 115 ) ; | |
printint ( mem [p + 1 ].hh .v.LH ) ; | |
} | |
printmark ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 5 : | |
{ | |
printesc ( 65642L ) ; | |
if ( mem [p ].hh.b1 != 0 ) | |
print ( 65643L ) ; | |
{ | |
{ | |
strpool [poolptr ]= 46 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 1 ].cint ) ; | |
decr ( poolptr ) ; | |
} | |
} | |
break ; | |
case 14 : | |
printstyle ( mem [p ].hh.b1 ) ; | |
break ; | |
case 15 : | |
{ | |
printesc ( 65843L ) ; | |
{ | |
strpool [poolptr ]= 68 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 1 ].hh .v.LH ) ; | |
decr ( poolptr ) ; | |
{ | |
strpool [poolptr ]= 84 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 1 ].hh .v.RH ) ; | |
decr ( poolptr ) ; | |
{ | |
strpool [poolptr ]= 83 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 2 ].hh .v.LH ) ; | |
decr ( poolptr ) ; | |
{ | |
strpool [poolptr ]= 115 ; | |
incr ( poolptr ) ; | |
} | |
shownodelist ( mem [p + 2 ].hh .v.RH ) ; | |
decr ( poolptr ) ; | |
} | |
break ; | |
case 16 : | |
case 17 : | |
case 18 : | |
case 19 : | |
case 20 : | |
case 21 : | |
case 22 : | |
case 23 : | |
case 24 : | |
case 27 : | |
case 26 : | |
case 29 : | |
case 28 : | |
case 30 : | |
case 31 : | |
{ | |
switch ( mem [p ].hh.b0 ) | |
{case 16 : | |
printesc ( 66269L ) ; | |
break ; | |
case 17 : | |
printesc ( 66270L ) ; | |
break ; | |
case 18 : | |
printesc ( 66271L ) ; | |
break ; | |
case 19 : | |
printesc ( 66272L ) ; | |
break ; | |
case 20 : | |
printesc ( 66273L ) ; | |
break ; | |
case 21 : | |
printesc ( 66274L ) ; | |
break ; | |
case 22 : | |
printesc ( 66275L ) ; | |
break ; | |
case 23 : | |
printesc ( 66276L ) ; | |
break ; | |
case 27 : | |
printesc ( 66277L ) ; | |
break ; | |
case 26 : | |
printesc ( 66278L ) ; | |
break ; | |
case 29 : | |
printesc ( 65860L ) ; | |
break ; | |
case 24 : | |
{ | |
printesc ( 65852L ) ; | |
printdelimiter ( p + 4 ) ; | |
} | |
break ; | |
case 28 : | |
{ | |
printesc ( 65818L ) ; | |
printfamandchar ( p + 4 ) ; | |
} | |
break ; | |
case 30 : | |
{ | |
printesc ( 66279L ) ; | |
printdelimiter ( p + 1 ) ; | |
} | |
break ; | |
case 31 : | |
{ | |
if ( mem [p ].hh.b1 == 0 ) | |
printesc ( 66280L ) ; | |
else printesc ( 66281L ) ; | |
printdelimiter ( p + 1 ) ; | |
} | |
break ; | |
} | |
if ( mem [p ].hh.b0 < 30 ) | |
{ | |
if ( mem [p ].hh.b1 != 0 ) { | |
if ( mem [p ].hh.b1 == 1 ) | |
printesc ( 66282L ) ; | |
else printesc ( 66283L ) ; | |
} | |
printsubsidiarydata ( p + 1 , 46 ) ; | |
} | |
printsubsidiarydata ( p + 2 , 94 ) ; | |
printsubsidiarydata ( p + 3 , 95 ) ; | |
} | |
break ; | |
case 25 : | |
{ | |
printesc ( 66284L ) ; | |
if ( mem [p + 1 ].cint == 1073741824L ) | |
print ( 66285L ) ; | |
else printscaled ( mem [p + 1 ].cint ) ; | |
if ( ( ( mem [p + 4 ].qqqq .b0 % 256 ) != 0 ) || ( ( mem [p + 4 ] | |
.qqqq .b1 + ( mem [p + 4 ].qqqq .b0 / 256 ) * 65536L ) != 0 ) || ( ( | |
mem [p + 4 ].qqqq .b2 % 256 ) != 0 ) || ( ( mem [p + 4 ].qqqq .b3 | |
+ ( mem [p + 4 ].qqqq .b2 / 256 ) * 65536L ) != 0 ) ) | |
{ | |
print ( 66286L ) ; | |
printdelimiter ( p + 4 ) ; | |
} | |
if ( ( ( mem [p + 5 ].qqqq .b0 % 256 ) != 0 ) || ( ( mem [p + 5 ] | |
.qqqq .b1 + ( mem [p + 5 ].qqqq .b0 / 256 ) * 65536L ) != 0 ) || ( ( | |
mem [p + 5 ].qqqq .b2 % 256 ) != 0 ) || ( ( mem [p + 5 ].qqqq .b3 | |
+ ( mem [p + 5 ].qqqq .b2 / 256 ) * 65536L ) != 0 ) ) | |
{ | |
print ( 66287L ) ; | |
printdelimiter ( p + 5 ) ; | |
} | |
printsubsidiarydata ( p + 2 , 92 ) ; | |
printsubsidiarydata ( p + 3 , 47 ) ; | |
} | |
break ; | |
default: | |
print ( 65606L ) ; | |
break ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
} | |
void | |
zshowbox ( halfword p ) | |
{ | |
showbox_regmem | |
depththreshold = eqtb [8939265L ].cint ; | |
breadthmax = eqtb [8939264L ].cint ; | |
if ( breadthmax <= 0 ) | |
breadthmax = 5 ; | |
if ( poolptr + depththreshold >= poolsize ) | |
depththreshold = poolsize - poolptr - 1 ; | |
shownodelist ( p ) ; | |
println () ; | |
} | |
void | |
zshortdisplayn ( integer p , integer m ) | |
{ | |
shortdisplayn_regmem | |
breadthmax = m ; | |
depththreshold = poolsize - poolptr - 1 ; | |
shownodelist ( p ) ; | |
} | |
void | |
zdeletetokenref ( halfword p ) | |
{ | |
deletetokenref_regmem | |
if ( mem [p ].hh .v.LH == -268435455L ) | |
flushlist ( p ) ; | |
else decr ( mem [p ].hh .v.LH ) ; | |
} | |
void | |
zdeleteglueref ( halfword p ) | |
{ | |
deleteglueref_regmem | |
if ( mem [p ].hh .v.RH == -268435455L ) | |
freenode ( p , 4 ) ; | |
else decr ( mem [p ].hh .v.RH ) ; | |
} | |
void | |
zflushnodelist ( halfword p ) | |
{ | |
/* 30 */ flushnodelist_regmem | |
halfword q ; | |
while ( p != -268435455L ) { | |
q = mem [p ].hh .v.RH ; | |
if ( ( p >= himemmin ) ) | |
{ | |
mem [p ].hh .v.RH = avail ; | |
avail = p ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
else { | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 13 : | |
{ | |
flushnodelist ( mem [p + 5 ].hh .v.RH ) ; | |
freenode ( p , 8 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 2 : | |
{ | |
freenode ( p , 5 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 3 : | |
{ | |
flushnodelist ( mem [p + 4 ].hh .v.LH ) ; | |
deleteglueref ( mem [p + 4 ].hh .v.RH ) ; | |
freenode ( p , 5 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 8 : | |
{ | |
switch ( mem [p ].hh.b1 ) | |
{case 0 : | |
freenode ( p , 3 ) ; | |
break ; | |
case 1 : | |
case 3 : | |
{ | |
deletetokenref ( mem [p + 1 ].hh .v.RH ) ; | |
freenode ( p , 2 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 2 : | |
case 4 : | |
freenode ( p , 2 ) ; | |
break ; | |
case 40 : | |
case 41 : | |
{ | |
{ | |
if ( mem [p + 5 ].ptr != nullptr ) | |
{ | |
libcfree ( mem [p + 5 ].ptr ) ; | |
mem [p + 5 ].ptr = nullptr ; | |
mem [p + 4 ].qqqq .b3 = 0 ; | |
} | |
} | |
freenode ( p , mem [p + 4 ].qqqq .b0 ) ; | |
} | |
break ; | |
case 42 : | |
freenode ( p , 5 ) ; | |
break ; | |
case 43 : | |
case 44 : | |
freenode ( p , ( 9 + ( mem [p + 4 ].hh.b0 + sizeof ( memoryword | |
) - 1 ) / sizeof ( memoryword ) ) ) ; | |
break ; | |
case 21 : | |
freenode ( p , 2 ) ; | |
break ; | |
default: | |
confusion ( 66764L ) ; | |
break ; | |
} | |
goto lab30 ; | |
} | |
break ; | |
case 10 : | |
{ | |
{ | |
if ( mem [mem [p + 1 ].hh .v.LH ].hh .v.RH == -268435455L ) | |
freenode ( mem [p + 1 ].hh .v.LH , 4 ) ; | |
else decr ( mem [mem [p + 1 ].hh .v.LH ].hh .v.RH ) ; | |
} | |
if ( mem [p + 1 ].hh .v.RH != -268435455L ) | |
flushnodelist ( mem [p + 1 ].hh .v.RH ) ; | |
freenode ( p , 3 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 11 : | |
case 9 : | |
case 12 : | |
{ | |
freenode ( p , 3 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 40 : | |
{ | |
freenode ( p , 3 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 6 : | |
flushnodelist ( mem [p + 1 ].hh .v.RH ) ; | |
break ; | |
case 4 : | |
deletetokenref ( mem [p + 1 ].hh .v.RH ) ; | |
break ; | |
case 7 : | |
{ | |
flushnodelist ( mem [p + 1 ].hh .v.LH ) ; | |
flushnodelist ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 5 : | |
flushnodelist ( mem [p + 1 ].cint ) ; | |
break ; | |
case 14 : | |
{ | |
freenode ( p , 3 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 15 : | |
{ | |
flushnodelist ( mem [p + 1 ].hh .v.LH ) ; | |
flushnodelist ( mem [p + 1 ].hh .v.RH ) ; | |
flushnodelist ( mem [p + 2 ].hh .v.LH ) ; | |
flushnodelist ( mem [p + 2 ].hh .v.RH ) ; | |
freenode ( p , 3 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 16 : | |
case 17 : | |
case 18 : | |
case 19 : | |
case 20 : | |
case 21 : | |
case 22 : | |
case 23 : | |
case 24 : | |
case 27 : | |
case 26 : | |
case 29 : | |
case 28 : | |
{ | |
if ( mem [p + 1 ].hh .v.RH >= 2 ) | |
flushnodelist ( mem [p + 1 ].hh .v.LH ) ; | |
if ( mem [p + 2 ].hh .v.RH >= 2 ) | |
flushnodelist ( mem [p + 2 ].hh .v.LH ) ; | |
if ( mem [p + 3 ].hh .v.RH >= 2 ) | |
flushnodelist ( mem [p + 3 ].hh .v.LH ) ; | |
if ( mem [p ].hh.b0 == 24 ) | |
freenode ( p , 5 ) ; | |
else if ( mem [p ].hh.b0 == 28 ) | |
freenode ( p , 5 ) ; | |
else freenode ( p , 4 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 30 : | |
case 31 : | |
{ | |
freenode ( p , 4 ) ; | |
goto lab30 ; | |
} | |
break ; | |
case 25 : | |
{ | |
flushnodelist ( mem [p + 2 ].hh .v.LH ) ; | |
flushnodelist ( mem [p + 3 ].hh .v.LH ) ; | |
freenode ( p , 6 ) ; | |
goto lab30 ; | |
} | |
break ; | |
default: | |
confusion ( 65644L ) ; | |
break ; | |
} | |
freenode ( p , 2 ) ; | |
lab30: ; | |
} | |
p = q ; | |
} | |
} | |
halfword | |
zcopynodelist ( halfword p ) | |
{ | |
register halfword Result; copynodelist_regmem | |
halfword h ; | |
halfword q ; | |
halfword r ; | |
unsigned char words ; | |
h = getavail () ; | |
q = h ; | |
while ( p != -268435455L ) { | |
words = 1 ; | |
if ( ( p >= himemmin ) ) | |
r = getavail () ; | |
else switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 13 : | |
{ | |
r = getnode ( 8 ) ; | |
mem [r + 7 ].hh .v.LH = mem [p + 7 ].hh .v.LH ; | |
mem [r + 7 ].hh .v.RH = mem [p + 7 ].hh .v.RH ; | |
mem [r + 6 ]= mem [p + 6 ]; | |
mem [r + 5 ]= mem [p + 5 ]; | |
mem [r + 5 ].hh .v.RH = copynodelist ( mem [p + 5 ].hh .v.RH ) ; | |
words = 5 ; | |
} | |
break ; | |
case 2 : | |
{ | |
r = getnode ( 5 ) ; | |
words = 4 ; | |
} | |
break ; | |
case 3 : | |
{ | |
r = getnode ( 5 ) ; | |
mem [r + 4 ]= mem [p + 4 ]; | |
incr ( mem [mem [p + 4 ].hh .v.RH ].hh .v.RH ) ; | |
mem [r + 4 ].hh .v.LH = copynodelist ( mem [p + 4 ].hh .v.LH ) ; | |
words = 4 ; | |
} | |
break ; | |
case 8 : | |
switch ( mem [p ].hh.b1 ) | |
{case 0 : | |
{ | |
r = getnode ( 3 ) ; | |
words = 3 ; | |
} | |
break ; | |
case 1 : | |
case 3 : | |
{ | |
r = getnode ( 2 ) ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
words = 2 ; | |
} | |
break ; | |
case 2 : | |
case 4 : | |
{ | |
r = getnode ( 2 ) ; | |
words = 2 ; | |
} | |
break ; | |
case 40 : | |
case 41 : | |
{ | |
words = mem [p + 4 ].qqqq .b0 ; | |
r = getnode ( words ) ; | |
while ( words > 0 ) { | |
decr ( words ) ; | |
mem [r + words ]= mem [p + words ]; | |
} | |
mem [r + 5 ].ptr = nullptr ; | |
mem [r + 4 ].qqqq .b3 = 0 ; | |
copynativeglyphinfo ( p , r ) ; | |
} | |
break ; | |
case 42 : | |
{ | |
r = getnode ( 5 ) ; | |
words = 5 ; | |
} | |
break ; | |
case 43 : | |
case 44 : | |
{ | |
words = ( 9 + ( mem [p + 4 ].hh.b0 + sizeof ( memoryword ) - 1 ) / | |
sizeof ( memoryword ) ) ; | |
r = getnode ( words ) ; | |
} | |
break ; | |
case 21 : | |
r = getnode ( 2 ) ; | |
break ; | |
default: | |
confusion ( 66763L ) ; | |
break ; | |
} | |
break ; | |
case 10 : | |
{ | |
r = getnode ( 3 ) ; | |
incr ( mem [mem [p + 1 ].hh .v.LH ].hh .v.RH ) ; | |
mem [r + 2 ].hh .v.LH = mem [p + 2 ].hh .v.LH ; | |
mem [r + 2 ].hh .v.RH = mem [p + 2 ].hh .v.RH ; | |
mem [r + 1 ].hh .v.LH = mem [p + 1 ].hh .v.LH ; | |
mem [r + 1 ].hh .v.RH = copynodelist ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 11 : | |
case 9 : | |
case 12 : | |
{ | |
r = getnode ( 3 ) ; | |
words = 3 ; | |
} | |
break ; | |
case 40 : | |
{ | |
r = getnode ( 3 ) ; | |
words = 3 ; | |
} | |
break ; | |
case 6 : | |
{ | |
r = getnode ( 2 ) ; | |
mem [r + 1 ]= mem [p + 1 ]; | |
mem [r + 1 ].hh .v.RH = copynodelist ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 7 : | |
{ | |
r = getnode ( 2 ) ; | |
mem [r + 1 ].hh .v.LH = copynodelist ( mem [p + 1 ].hh .v.LH ) ; | |
mem [r + 1 ].hh .v.RH = copynodelist ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
break ; | |
case 4 : | |
{ | |
r = getnode ( 2 ) ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
words = 2 ; | |
} | |
break ; | |
case 5 : | |
{ | |
r = getnode ( 2 ) ; | |
mem [r + 1 ].cint = copynodelist ( mem [p + 1 ].cint ) ; | |
} | |
break ; | |
default: | |
confusion ( 65645L ) ; | |
break ; | |
} | |
while ( words > 0 ) { | |
decr ( words ) ; | |
mem [r + words ]= mem [p + words ]; | |
} | |
mem [q ].hh .v.RH = r ; | |
q = r ; | |
p = mem [p ].hh .v.RH ; | |
} | |
mem [q ].hh .v.RH = -268435455L ; | |
q = mem [h ].hh .v.RH ; | |
{ | |
mem [h ].hh .v.RH = avail ; | |
avail = h ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
Result = q ; | |
return Result ; | |
} | |
void | |
zprintmode ( integer m ) | |
{ | |
printmode_regmem | |
if ( m > 0 ) | |
switch ( m / ( 103 ) ) | |
{case 0 : | |
print ( 65646L ) ; | |
break ; | |
case 1 : | |
print ( 65647L ) ; | |
break ; | |
case 2 : | |
print ( 65648L ) ; | |
break ; | |
} | |
else if ( m == 0 ) | |
print ( 65649L ) ; | |
else switch ( ( - (integer) m ) / ( 103 ) ) | |
{case 0 : | |
print ( 65650L ) ; | |
break ; | |
case 1 : | |
print ( 65651L ) ; | |
break ; | |
case 2 : | |
print ( 65652L ) ; | |
break ; | |
} | |
} | |
void | |
zprintinmode ( integer m ) | |
{ | |
printinmode_regmem | |
if ( m > 0 ) | |
switch ( m / ( 103 ) ) | |
{case 0 : | |
print ( 65653L ) ; | |
break ; | |
case 1 : | |
print ( 65654L ) ; | |
break ; | |
case 2 : | |
print ( 65655L ) ; | |
break ; | |
} | |
else if ( m == 0 ) | |
print ( 65656L ) ; | |
else switch ( ( - (integer) m ) / ( 103 ) ) | |
{case 0 : | |
print ( 65657L ) ; | |
break ; | |
case 1 : | |
print ( 65658L ) ; | |
break ; | |
case 2 : | |
print ( 65659L ) ; | |
break ; | |
} | |
} | |
void | |
pushnest ( void ) | |
{ | |
pushnest_regmem | |
if ( nestptr > maxneststack ) | |
{ | |
maxneststack = nestptr ; | |
if ( nestptr == nestsize ) | |
overflow ( 65660L , nestsize ) ; | |
} | |
nest [nestptr ]= curlist ; | |
incr ( nestptr ) ; | |
curlist .headfield = getavail () ; | |
curlist .tailfield = curlist .headfield ; | |
curlist .pgfield = 0 ; | |
curlist .mlfield = line ; | |
curlist .eTeXauxfield = -268435455L ; | |
} | |
void | |
popnest ( void ) | |
{ | |
popnest_regmem | |
{ | |
mem [curlist .headfield ].hh .v.RH = avail ; | |
avail = curlist .headfield ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
decr ( nestptr ) ; | |
curlist = nest [nestptr ]; | |
} | |
void | |
showactivities ( void ) | |
{ | |
showactivities_regmem | |
integer p ; | |
short m ; | |
memoryword a ; | |
halfword q, r ; | |
integer t ; | |
nest [nestptr ]= curlist ; | |
printnl ( 65626L ) ; | |
println () ; | |
{register integer for_end; p = nestptr ;for_end = 0 ; if ( p >= for_end) | |
do | |
{ | |
m = nest [p ].modefield ; | |
a = nest [p ].auxfield ; | |
printnl ( 65661L ) ; | |
printmode ( m ) ; | |
print ( 65662L ) ; | |
printint ( abs ( nest [p ].mlfield ) ) ; | |
if ( m == 104 ) { | |
if ( nest [p ].pgfield != 8585216L ) | |
{ | |
print ( 65663L ) ; | |
printint ( nest [p ].pgfield % 65536L ) ; | |
print ( 65664L ) ; | |
printint ( nest [p ].pgfield / 4194304L ) ; | |
printchar ( 44 ) ; | |
printint ( ( nest [p ].pgfield / 65536L ) % 64 ) ; | |
printchar ( 41 ) ; | |
} | |
} | |
if ( nest [p ].mlfield < 0 ) | |
print ( 65665L ) ; | |
if ( p == 0 ) | |
{ | |
if ( memtop - 2 != pagetail ) | |
{ | |
printnl ( 66409L ) ; | |
if ( outputactive ) | |
print ( 66410L ) ; | |
showbox ( mem [memtop - 2 ].hh .v.RH ) ; | |
if ( pagecontents > 0 ) | |
{ | |
printnl ( 66411L ) ; | |
printtotals () ; | |
printnl ( 66412L ) ; | |
printscaled ( pagesofar [0 ]) ; | |
r = mem [memtop ].hh .v.RH ; | |
while ( r != memtop ) { | |
println () ; | |
printesc ( 65618L ) ; | |
t = mem [r ].hh.b1 ; | |
printint ( t ) ; | |
print ( 66413L ) ; | |
if ( eqtb [8939325L + t ].cint == 1000 ) | |
t = mem [r + 3 ].cint ; | |
else t = xovern ( mem [r + 3 ].cint , 1000 ) * eqtb [8939325L | |
+ t ].cint ; | |
printscaled ( t ) ; | |
if ( mem [r ].hh.b0 == 1 ) | |
{ | |
q = memtop - 2 ; | |
t = 0 ; | |
do { | |
q = mem [q ].hh .v.RH ; | |
if ( ( mem [q ].hh.b0 == 3 ) && ( mem [q ].hh.b1 == mem | |
[r ].hh.b1 ) ) | |
incr ( t ) ; | |
} while ( ! ( q == mem [r + 1 ].hh .v.LH ) ) ; | |
print ( 66414L ) ; | |
printint ( t ) ; | |
print ( 66415L ) ; | |
} | |
r = mem [r ].hh .v.RH ; | |
} | |
} | |
} | |
if ( mem [memtop - 1 ].hh .v.RH != -268435455L ) | |
printnl ( 65666L ) ; | |
} | |
showbox ( mem [nest [p ].headfield ].hh .v.RH ) ; | |
switch ( abs ( m ) / ( 103 ) ) | |
{case 0 : | |
{ | |
printnl ( 65667L ) ; | |
if ( a .cint <= -65536000L ) | |
print ( 65668L ) ; | |
else printscaled ( a .cint ) ; | |
if ( nest [p ].pgfield != 0 ) | |
{ | |
print ( 65669L ) ; | |
printint ( nest [p ].pgfield ) ; | |
if ( nest [p ].pgfield != 1 ) | |
print ( 65670L ) ; | |
else print ( 65671L ) ; | |
} | |
} | |
break ; | |
case 1 : | |
{ | |
printnl ( 65672L ) ; | |
printint ( a .hh .v.LH ) ; | |
if ( m > 0 ) { | |
if ( a .hh .v.RH > 0 ) | |
{ | |
print ( 65673L ) ; | |
printint ( a .hh .v.RH ) ; | |
} | |
} | |
} | |
break ; | |
case 2 : | |
if ( a .cint != -268435455L ) | |
{ | |
print ( 65674L ) ; | |
showbox ( a .cint ) ; | |
} | |
break ; | |
} | |
} | |
while ( p-- > for_end ) ;} | |
} | |
void | |
zprintparam ( integer n ) | |
{ | |
printparam_regmem | |
switch ( n ) | |
{case 0 : | |
printesc ( 65720L ) ; | |
break ; | |
case 1 : | |
printesc ( 65721L ) ; | |
break ; | |
case 2 : | |
printesc ( 65722L ) ; | |
break ; | |
case 3 : | |
printesc ( 65723L ) ; | |
break ; | |
case 4 : | |
printesc ( 65724L ) ; | |
break ; | |
case 5 : | |
printesc ( 65725L ) ; | |
break ; | |
case 6 : | |
printesc ( 65726L ) ; | |
break ; | |
case 7 : | |
printesc ( 65727L ) ; | |
break ; | |
case 8 : | |
printesc ( 65728L ) ; | |
break ; | |
case 9 : | |
printesc ( 65729L ) ; | |
break ; | |
case 10 : | |
printesc ( 65730L ) ; | |
break ; | |
case 11 : | |
printesc ( 65731L ) ; | |
break ; | |
case 12 : | |
printesc ( 65732L ) ; | |
break ; | |
case 13 : | |
printesc ( 65733L ) ; | |
break ; | |
case 14 : | |
printesc ( 65734L ) ; | |
break ; | |
case 15 : | |
printesc ( 65735L ) ; | |
break ; | |
case 16 : | |
printesc ( 65736L ) ; | |
break ; | |
case 17 : | |
printesc ( 65737L ) ; | |
break ; | |
case 18 : | |
printesc ( 65738L ) ; | |
break ; | |
case 19 : | |
printesc ( 65739L ) ; | |
break ; | |
case 20 : | |
printesc ( 65740L ) ; | |
break ; | |
case 21 : | |
printesc ( 65741L ) ; | |
break ; | |
case 22 : | |
printesc ( 65742L ) ; | |
break ; | |
case 23 : | |
printesc ( 65743L ) ; | |
break ; | |
case 24 : | |
printesc ( 65744L ) ; | |
break ; | |
case 25 : | |
printesc ( 65745L ) ; | |
break ; | |
case 26 : | |
printesc ( 65746L ) ; | |
break ; | |
case 27 : | |
printesc ( 65747L ) ; | |
break ; | |
case 28 : | |
printesc ( 65748L ) ; | |
break ; | |
case 29 : | |
printesc ( 65749L ) ; | |
break ; | |
case 30 : | |
printesc ( 65750L ) ; | |
break ; | |
case 31 : | |
printesc ( 65751L ) ; | |
break ; | |
case 32 : | |
printesc ( 65752L ) ; | |
break ; | |
case 33 : | |
printesc ( 65753L ) ; | |
break ; | |
case 34 : | |
printesc ( 65754L ) ; | |
break ; | |
case 35 : | |
printesc ( 65755L ) ; | |
break ; | |
case 36 : | |
printesc ( 65756L ) ; | |
break ; | |
case 37 : | |
printesc ( 65757L ) ; | |
break ; | |
case 38 : | |
printesc ( 65758L ) ; | |
break ; | |
case 39 : | |
printesc ( 65759L ) ; | |
break ; | |
case 40 : | |
printesc ( 65760L ) ; | |
break ; | |
case 41 : | |
printesc ( 65761L ) ; | |
break ; | |
case 42 : | |
printesc ( 65762L ) ; | |
break ; | |
case 43 : | |
printesc ( 65763L ) ; | |
break ; | |
case 44 : | |
printesc ( 65764L ) ; | |
break ; | |
case 45 : | |
printesc ( 65765L ) ; | |
break ; | |
case 46 : | |
printesc ( 65766L ) ; | |
break ; | |
case 47 : | |
printesc ( 65767L ) ; | |
break ; | |
case 48 : | |
printesc ( 65768L ) ; | |
break ; | |
case 49 : | |
printesc ( 65769L ) ; | |
break ; | |
case 50 : | |
printesc ( 65770L ) ; | |
break ; | |
case 51 : | |
printesc ( 65771L ) ; | |
break ; | |
case 52 : | |
printesc ( 65772L ) ; | |
break ; | |
case 53 : | |
printesc ( 65773L ) ; | |
break ; | |
case 54 : | |
printesc ( 65774L ) ; | |
break ; | |
case 55 : | |
printesc ( 65775L ) ; | |
break ; | |
case 56 : | |
printesc ( 65776L ) ; | |
break ; | |
case 57 : | |
printesc ( 65777L ) ; | |
break ; | |
case 58 : | |
printesc ( 65778L ) ; | |
break ; | |
case 70 : | |
printesc ( 65779L ) ; | |
break ; | |
case 71 : | |
printesc ( 65780L ) ; | |
break ; | |
case 84 : | |
printesc ( 66970L ) ; | |
break ; | |
case 59 : | |
printesc ( 66856L ) ; | |
break ; | |
case 60 : | |
printesc ( 66857L ) ; | |
break ; | |
case 61 : | |
printesc ( 66858L ) ; | |
break ; | |
case 62 : | |
printesc ( 66859L ) ; | |
break ; | |
case 63 : | |
printesc ( 66860L ) ; | |
break ; | |
case 64 : | |
printesc ( 66861L ) ; | |
break ; | |
case 65 : | |
printesc ( 66862L ) ; | |
break ; | |
case 66 : | |
printesc ( 66863L ) ; | |
break ; | |
case 67 : | |
printesc ( 66864L ) ; | |
break ; | |
case 68 : | |
printesc ( 66903L ) ; | |
break ; | |
case 72 : | |
printesc ( 66904L ) ; | |
break ; | |
case 74 : | |
printesc ( 66905L ) ; | |
break ; | |
case 75 : | |
printesc ( 66906L ) ; | |
break ; | |
case 76 : | |
printesc ( 66907L ) ; | |
break ; | |
case 73 : | |
printesc ( 66908L ) ; | |
break ; | |
case 77 : | |
printesc ( 66909L ) ; | |
break ; | |
case 80 : | |
printesc ( 66910L ) ; | |
break ; | |
case 81 : | |
printesc ( 66911L ) ; | |
break ; | |
case 82 : | |
printesc ( 66912L ) ; | |
break ; | |
case 83 : | |
printesc ( 66913L ) ; | |
break ; | |
default: | |
print ( 65781L ) ; | |
break ; | |
} | |
} | |
void | |
fixdateandtime ( void ) | |
{ | |
fixdateandtime_regmem | |
dateandtime ( systime , sysday , sysmonth , sysyear ) ; | |
eqtb [8939260L ].cint = systime ; | |
eqtb [8939261L ].cint = sysday ; | |
eqtb [8939262L ].cint = sysmonth ; | |
eqtb [8939263L ].cint = sysyear ; | |
} | |
void | |
begindiagnostic ( void ) | |
{ | |
begindiagnostic_regmem | |
oldsetting = selector ; | |
if ( ( eqtb [8939269L ].cint <= 0 ) && ( selector == 19 ) ) | |
{ | |
decr ( selector ) ; | |
if ( history == 0 ) | |
history = 1 ; | |
} | |
} | |
void | |
zenddiagnostic ( boolean blankline ) | |
{ | |
enddiagnostic_regmem | |
printnl ( 65626L ) ; | |
if ( blankline ) | |
println () ; | |
selector = oldsetting ; | |
} | |
void | |
zprintlengthparam ( integer n ) | |
{ | |
printlengthparam_regmem | |
switch ( n ) | |
{case 0 : | |
printesc ( 65784L ) ; | |
break ; | |
case 1 : | |
printesc ( 65785L ) ; | |
break ; | |
case 2 : | |
printesc ( 65786L ) ; | |
break ; | |
case 3 : | |
printesc ( 65787L ) ; | |
break ; | |
case 4 : | |
printesc ( 65788L ) ; | |
break ; | |
case 5 : | |
printesc ( 65789L ) ; | |
break ; | |
case 6 : | |
printesc ( 65790L ) ; | |
break ; | |
case 7 : | |
printesc ( 65791L ) ; | |
break ; | |
case 8 : | |
printesc ( 65792L ) ; | |
break ; | |
case 9 : | |
printesc ( 65793L ) ; | |
break ; | |
case 10 : | |
printesc ( 65794L ) ; | |
break ; | |
case 11 : | |
printesc ( 65795L ) ; | |
break ; | |
case 12 : | |
printesc ( 65796L ) ; | |
break ; | |
case 13 : | |
printesc ( 65797L ) ; | |
break ; | |
case 14 : | |
printesc ( 65798L ) ; | |
break ; | |
case 15 : | |
printesc ( 65799L ) ; | |
break ; | |
case 16 : | |
printesc ( 65800L ) ; | |
break ; | |
case 17 : | |
printesc ( 65801L ) ; | |
break ; | |
case 18 : | |
printesc ( 65802L ) ; | |
break ; | |
case 19 : | |
printesc ( 65803L ) ; | |
break ; | |
case 20 : | |
printesc ( 65804L ) ; | |
break ; | |
case 21 : | |
printesc ( 65805L ) ; | |
break ; | |
case 22 : | |
printesc ( 65806L ) ; | |
break ; | |
default: | |
print ( 65807L ) ; | |
break ; | |
} | |
} | |
void | |
zprintcmdchr ( quarterword cmd , halfword chrcode ) | |
{ | |
printcmdchr_regmem | |
integer n ; | |
strnumber fontnamestr ; | |
UTF16code quotechar ; | |
switch ( cmd ) | |
{case 1 : | |
{ | |
print ( 65881L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 2 : | |
{ | |
print ( 65882L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 3 : | |
{ | |
print ( 65883L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 6 : | |
{ | |
print ( 65884L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 7 : | |
{ | |
print ( 65885L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 8 : | |
{ | |
print ( 65886L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 9 : | |
print ( 65887L ) ; | |
break ; | |
case 10 : | |
{ | |
print ( 65888L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 11 : | |
{ | |
print ( 65889L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 12 : | |
{ | |
print ( 65890L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 76 : | |
case 77 : | |
if ( chrcode < 2252759L ) | |
printskipparam ( chrcode - 2252740L ) ; | |
else if ( chrcode < 2253015L ) | |
{ | |
printesc ( 65695L ) ; | |
printint ( chrcode - 2252759L ) ; | |
} | |
else { | |
printesc ( 65696L ) ; | |
printint ( chrcode - 2253015L ) ; | |
} | |
break ; | |
case 73 : | |
if ( chrcode >= 2253283L ) | |
{ | |
printesc ( 65707L ) ; | |
printint ( chrcode - 2253283L ) ; | |
} | |
else switch ( chrcode ) | |
{case 2253272 : | |
printesc ( 65698L ) ; | |
break ; | |
case 2253273 : | |
printesc ( 65699L ) ; | |
break ; | |
case 2253274 : | |
printesc ( 65700L ) ; | |
break ; | |
case 2253275 : | |
printesc ( 65701L ) ; | |
break ; | |
case 2253276 : | |
printesc ( 65702L ) ; | |
break ; | |
case 2253277 : | |
printesc ( 65703L ) ; | |
break ; | |
case 2253278 : | |
printesc ( 65704L ) ; | |
break ; | |
case 2253279 : | |
printesc ( 65705L ) ; | |
break ; | |
case 2253281 : | |
printesc ( 66855L ) ; | |
break ; | |
case 2253282 : | |
printesc ( 66753L ) ; | |
break ; | |
default: | |
printesc ( 65706L ) ; | |
break ; | |
} | |
break ; | |
case 74 : | |
if ( chrcode < 8939325L ) | |
printparam ( chrcode - 8939240L ) ; | |
else { | |
printesc ( 65782L ) ; | |
printint ( chrcode - 8939325L ) ; | |
} | |
break ; | |
case 75 : | |
if ( chrcode < 10053716L ) | |
printlengthparam ( chrcode - 10053693L ) ; | |
else { | |
printesc ( 65808L ) ; | |
printint ( chrcode - 10053716L ) ; | |
} | |
break ; | |
case 45 : | |
printesc ( 65818L ) ; | |
break ; | |
case 92 : | |
printesc ( 65819L ) ; | |
break ; | |
case 40 : | |
printesc ( 65820L ) ; | |
break ; | |
case 41 : | |
printesc ( 65821L ) ; | |
break ; | |
case 78 : | |
printesc ( 65831L ) ; | |
break ; | |
case 61 : | |
printesc ( 65822L ) ; | |
break ; | |
case 42 : | |
printesc ( 65850L ) ; | |
break ; | |
case 16 : | |
printesc ( 65823L ) ; | |
break ; | |
case 109 : | |
printesc ( 65814L ) ; | |
break ; | |
case 90 : | |
printesc ( 65830L ) ; | |
break ; | |
case 15 : | |
if ( chrcode == 1 ) | |
printesc ( 65826L ) ; | |
else printesc ( 65824L ) ; | |
break ; | |
case 94 : | |
printesc ( 65827L ) ; | |
break ; | |
case 67 : | |
printesc ( 65815L ) ; | |
break ; | |
case 62 : | |
printesc ( 65828L ) ; | |
break ; | |
case 64 : | |
printesc ( 32 ) ; | |
break ; | |
case 104 : | |
if ( chrcode == 0 ) | |
printesc ( 65829L ) ; | |
else printesc ( 66159L ) ; | |
break ; | |
case 32 : | |
printesc ( 65832L ) ; | |
break ; | |
case 36 : | |
printesc ( 65833L ) ; | |
break ; | |
case 39 : | |
if ( chrcode == 0 ) | |
printesc ( 65834L ) ; | |
else printesc ( 65811L ) ; | |
break ; | |
case 37 : | |
printesc ( 65618L ) ; | |
break ; | |
case 44 : | |
printesc ( 47 ) ; | |
break ; | |
case 18 : | |
{ | |
printesc ( 65641L ) ; | |
if ( chrcode > 0 ) | |
printchar ( 115 ) ; | |
} | |
break ; | |
case 46 : | |
if ( chrcode == 1 ) | |
printesc ( 65837L ) ; | |
else printesc ( 65835L ) ; | |
break ; | |
case 17 : | |
if ( chrcode == 2 ) | |
printesc ( 65842L ) ; | |
else if ( chrcode == 1 ) | |
printesc ( 65840L ) ; | |
else printesc ( 65838L ) ; | |
break ; | |
case 54 : | |
printesc ( 65843L ) ; | |
break ; | |
case 93 : | |
printesc ( 65844L ) ; | |
break ; | |
case 34 : | |
printesc ( 65845L ) ; | |
break ; | |
case 65 : | |
printesc ( 65846L ) ; | |
break ; | |
case 105 : | |
if ( chrcode == 0 ) | |
printesc ( 65847L ) ; | |
else printesc ( 65811L ) ; | |
break ; | |
case 55 : | |
printesc ( 65623L ) ; | |
break ; | |
case 63 : | |
printesc ( 65848L ) ; | |
break ; | |
case 66 : | |
if ( chrcode == 1 ) | |
printesc ( 65854L ) ; | |
else printesc ( 65852L ) ; | |
break ; | |
case 98 : | |
if ( chrcode == 0 ) | |
printesc ( 65855L ) ; | |
else printesc ( 66928L ) ; | |
break ; | |
case 0 : | |
printesc ( 65856L ) ; | |
break ; | |
case 100 : | |
printesc ( 65857L ) ; | |
break ; | |
case 81 : | |
printesc ( 65851L ) ; | |
break ; | |
case 85 : | |
switch ( chrcode ) | |
{case 2253271 : | |
printesc ( 65849L ) ; | |
break ; | |
case 2253539 : | |
printesc ( 66963L ) ; | |
break ; | |
case 2253540 : | |
printesc ( 66964L ) ; | |
break ; | |
case 2253541 : | |
printesc ( 66965L ) ; | |
break ; | |
case 2253542 : | |
printesc ( 66966L ) ; | |
break ; | |
} | |
break ; | |
case 111 : | |
if ( chrcode == 0 ) | |
printesc ( 65858L ) ; | |
else if ( chrcode == 1 ) | |
printesc ( 66893L ) ; | |
else printesc ( 66894L ) ; | |
break ; | |
case 72 : | |
{ | |
printesc ( 65707L ) ; | |
if ( chrcode != membot ) | |
printsanum ( chrcode ) ; | |
} | |
break ; | |
case 38 : | |
printesc ( 65642L ) ; | |
break ; | |
case 33 : | |
if ( chrcode == 0 ) | |
printesc ( 65859L ) ; | |
else switch ( chrcode ) | |
{case 6 : | |
printesc ( 66914L ) ; | |
break ; | |
case 7 : | |
printesc ( 66915L ) ; | |
break ; | |
case 10 : | |
printesc ( 66916L ) ; | |
break ; | |
default: | |
printesc ( 66917L ) ; | |
break ; | |
} | |
break ; | |
case 56 : | |
printesc ( 65860L ) ; | |
break ; | |
case 35 : | |
printesc ( 65861L ) ; | |
break ; | |
case 13 : | |
printesc ( 65922L ) ; | |
break ; | |
case 106 : | |
if ( chrcode == 0 ) | |
printesc ( 65957L ) ; | |
else if ( chrcode == 2 ) | |
printesc ( 66926L ) ; | |
else printesc ( 65958L ) ; | |
break ; | |
case 112 : | |
{ | |
switch ( ( chrcode % 5 ) ) | |
{case 1 : | |
printesc ( 65960L ) ; | |
break ; | |
case 2 : | |
printesc ( 65961L ) ; | |
break ; | |
case 3 : | |
printesc ( 65962L ) ; | |
break ; | |
case 4 : | |
printesc ( 65963L ) ; | |
break ; | |
default: | |
printesc ( 65959L ) ; | |
break ; | |
} | |
if ( chrcode >= 5 ) | |
printchar ( 115 ) ; | |
} | |
break ; | |
case 91 : | |
{ | |
if ( ( chrcode < membot ) || ( chrcode > membot + 19 ) ) | |
cmd = ( mem [chrcode ].hh.b0 / 64 ) ; | |
else { | |
cmd = chrcode - membot ; | |
chrcode = -268435455L ; | |
} | |
if ( cmd == 0 ) | |
printesc ( 65782L ) ; | |
else if ( cmd == 1 ) | |
printesc ( 65808L ) ; | |
else if ( cmd == 2 ) | |
printesc ( 65695L ) ; | |
else printesc ( 65696L ) ; | |
if ( chrcode != -268435455L ) | |
printsanum ( chrcode ) ; | |
} | |
break ; | |
case 80 : | |
if ( chrcode == 1 ) | |
printesc ( 66008L ) ; | |
else printesc ( 66007L ) ; | |
break ; | |
case 83 : | |
if ( chrcode == 0 ) | |
printesc ( 66009L ) ; | |
else if ( chrcode == 2 ) | |
printesc ( 66899L ) ; | |
else printesc ( 66010L ) ; | |
break ; | |
case 84 : | |
if ( chrcode == 1 ) | |
printesc ( 66011L ) ; | |
else if ( chrcode == 3 ) | |
printesc ( 66012L ) ; | |
else printesc ( 66013L ) ; | |
break ; | |
case 71 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 66014L ) ; | |
break ; | |
case 1 : | |
printesc ( 66015L ) ; | |
break ; | |
case 2 : | |
printesc ( 66016L ) ; | |
break ; | |
case 4 : | |
printesc ( 66017L ) ; | |
break ; | |
case 3 : | |
printesc ( 66810L ) ; | |
break ; | |
case 19 : | |
printesc ( 66811L ) ; | |
break ; | |
case 27 : | |
printesc ( 66812L ) ; | |
break ; | |
case 28 : | |
printesc ( 66814L ) ; | |
break ; | |
case 29 : | |
printesc ( 66815L ) ; | |
break ; | |
case 30 : | |
printesc ( 66816L ) ; | |
break ; | |
case 31 : | |
printesc ( 66817L ) ; | |
break ; | |
case 32 : | |
printesc ( 66818L ) ; | |
break ; | |
case 33 : | |
printesc ( 66819L ) ; | |
break ; | |
case 34 : | |
printesc ( 66820L ) ; | |
break ; | |
case 35 : | |
printesc ( 66821L ) ; | |
break ; | |
case 36 : | |
printesc ( 66822L ) ; | |
break ; | |
case 37 : | |
printesc ( 66823L ) ; | |
break ; | |
case 38 : | |
printesc ( 66824L ) ; | |
break ; | |
case 39 : | |
printesc ( 66825L ) ; | |
break ; | |
case 40 : | |
printesc ( 66826L ) ; | |
break ; | |
case 41 : | |
printesc ( 66827L ) ; | |
break ; | |
case 42 : | |
printesc ( 66828L ) ; | |
break ; | |
case 43 : | |
printesc ( 66832L ) ; | |
break ; | |
case 44 : | |
printesc ( 66833L ) ; | |
break ; | |
case 45 : | |
printesc ( 66834L ) ; | |
break ; | |
case 46 : | |
printesc ( 66835L ) ; | |
break ; | |
case 47 : | |
printesc ( 66836L ) ; | |
break ; | |
case 48 : | |
printesc ( 66837L ) ; | |
break ; | |
case 49 : | |
printesc ( 66838L ) ; | |
break ; | |
case 50 : | |
printesc ( 66839L ) ; | |
break ; | |
case 55 : | |
printesc ( 66840L ) ; | |
break ; | |
case 51 : | |
printesc ( 66842L ) ; | |
break ; | |
case 52 : | |
printesc ( 66843L ) ; | |
break ; | |
case 53 : | |
printesc ( 66844L ) ; | |
break ; | |
case 54 : | |
printesc ( 66845L ) ; | |
break ; | |
case 20 : | |
printesc ( 66878L ) ; | |
break ; | |
case 21 : | |
printesc ( 66879L ) ; | |
break ; | |
case 22 : | |
printesc ( 66880L ) ; | |
break ; | |
case 23 : | |
printesc ( 66881L ) ; | |
break ; | |
case 24 : | |
printesc ( 66882L ) ; | |
break ; | |
case 56 : | |
printesc ( 66883L ) ; | |
break ; | |
case 57 : | |
printesc ( 66884L ) ; | |
break ; | |
case 58 : | |
printesc ( 66885L ) ; | |
break ; | |
case 59 : | |
printesc ( 66886L ) ; | |
break ; | |
case 60 : | |
printesc ( 66887L ) ; | |
break ; | |
case 61 : | |
printesc ( 66888L ) ; | |
break ; | |
case 62 : | |
printesc ( 66889L ) ; | |
break ; | |
case 67 : | |
printesc ( 66938L ) ; | |
break ; | |
case 68 : | |
printesc ( 66939L ) ; | |
break ; | |
case 69 : | |
printesc ( 66940L ) ; | |
break ; | |
case 70 : | |
printesc ( 66941L ) ; | |
break ; | |
case 25 : | |
printesc ( 66945L ) ; | |
break ; | |
case 26 : | |
printesc ( 66946L ) ; | |
break ; | |
case 63 : | |
printesc ( 66947L ) ; | |
break ; | |
case 64 : | |
printesc ( 66948L ) ; | |
break ; | |
case 65 : | |
printesc ( 66949L ) ; | |
break ; | |
case 66 : | |
printesc ( 66950L ) ; | |
break ; | |
case 12 : | |
printesc ( 66019L ) ; | |
break ; | |
case 13 : | |
printesc ( 66020L ) ; | |
break ; | |
case 16 : | |
printesc ( 66021L ) ; | |
break ; | |
case 17 : | |
printesc ( 66022L ) ; | |
break ; | |
case 18 : | |
printesc ( 66023L ) ; | |
break ; | |
default: | |
printesc ( 66018L ) ; | |
break ; | |
} | |
break ; | |
case 110 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 66091L ) ; | |
break ; | |
case 1 : | |
printesc ( 66092L ) ; | |
break ; | |
case 2 : | |
printesc ( 66093L ) ; | |
break ; | |
case 3 : | |
printesc ( 66094L ) ; | |
break ; | |
case 4 : | |
printesc ( 66095L ) ; | |
break ; | |
case 5 : | |
printesc ( 66110L ) ; | |
break ; | |
case 6 : | |
printesc ( 66096L ) ; | |
break ; | |
case 16 : | |
printesc ( 66097L ) ; | |
break ; | |
case 17 : | |
printesc ( 66098L ) ; | |
break ; | |
case 22 : | |
printesc ( 66099L ) ; | |
break ; | |
case 23 : | |
printesc ( 66100L ) ; | |
break ; | |
case 24 : | |
printesc ( 66101L ) ; | |
break ; | |
case 25 : | |
printesc ( 66102L ) ; | |
break ; | |
case 26 : | |
printesc ( 66103L ) ; | |
break ; | |
case 18 : | |
printesc ( 66104L ) ; | |
break ; | |
case 29 : | |
printesc ( 66105L ) ; | |
break ; | |
case 30 : | |
printesc ( 66106L ) ; | |
break ; | |
case 33 : | |
printesc ( 66813L ) ; | |
break ; | |
case 34 : | |
printesc ( 66829L ) ; | |
break ; | |
case 35 : | |
printesc ( 66830L ) ; | |
break ; | |
case 36 : | |
printesc ( 66831L ) ; | |
break ; | |
case 37 : | |
printesc ( 66841L ) ; | |
break ; | |
case 38 : | |
printesc ( 66108L ) ; | |
break ; | |
case 39 : | |
printesc ( 66109L ) ; | |
break ; | |
default: | |
printesc ( 66107L ) ; | |
break ; | |
} | |
break ; | |
case 107 : | |
{ | |
if ( chrcode >= 32 ) | |
printesc ( 66159L ) ; | |
switch ( chrcode % 32 ) | |
{case 1 : | |
printesc ( 66142L ) ; | |
break ; | |
case 2 : | |
printesc ( 66143L ) ; | |
break ; | |
case 3 : | |
printesc ( 66144L ) ; | |
break ; | |
case 4 : | |
printesc ( 66145L ) ; | |
break ; | |
case 5 : | |
printesc ( 66146L ) ; | |
break ; | |
case 6 : | |
printesc ( 66147L ) ; | |
break ; | |
case 7 : | |
printesc ( 66148L ) ; | |
break ; | |
case 8 : | |
printesc ( 66149L ) ; | |
break ; | |
case 9 : | |
printesc ( 66150L ) ; | |
break ; | |
case 10 : | |
printesc ( 66151L ) ; | |
break ; | |
case 11 : | |
printesc ( 66152L ) ; | |
break ; | |
case 12 : | |
printesc ( 66153L ) ; | |
break ; | |
case 13 : | |
printesc ( 66154L ) ; | |
break ; | |
case 14 : | |
printesc ( 66155L ) ; | |
break ; | |
case 15 : | |
printesc ( 66156L ) ; | |
break ; | |
case 16 : | |
printesc ( 66157L ) ; | |
break ; | |
case 21 : | |
printesc ( 66158L ) ; | |
break ; | |
case 17 : | |
printesc ( 66929L ) ; | |
break ; | |
case 18 : | |
printesc ( 66930L ) ; | |
break ; | |
case 19 : | |
printesc ( 66931L ) ; | |
break ; | |
case 20 : | |
printesc ( 66932L ) ; | |
break ; | |
default: | |
printesc ( 66141L ) ; | |
break ; | |
} | |
} | |
break ; | |
case 108 : | |
if ( chrcode == 2 ) | |
printesc ( 66160L ) ; | |
else if ( chrcode == 4 ) | |
printesc ( 66161L ) ; | |
else printesc ( 66162L ) ; | |
break ; | |
case 4 : | |
if ( chrcode == 1114113L ) | |
printesc ( 66319L ) ; | |
else { | |
print ( 66323L ) ; | |
if ( chrcode < 65536L ) | |
print ( chrcode ) ; | |
else printchar ( chrcode ) ; | |
} | |
break ; | |
case 5 : | |
if ( chrcode == 1114114L ) | |
printesc ( 66320L ) ; | |
else printesc ( 66321L ) ; | |
break ; | |
case 82 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 66399L ) ; | |
break ; | |
case 1 : | |
printesc ( 66400L ) ; | |
break ; | |
case 2 : | |
printesc ( 66401L ) ; | |
break ; | |
case 3 : | |
printesc ( 66402L ) ; | |
break ; | |
case 4 : | |
printesc ( 66403L ) ; | |
break ; | |
case 5 : | |
printesc ( 66404L ) ; | |
break ; | |
case 6 : | |
printesc ( 66405L ) ; | |
break ; | |
default: | |
printesc ( 66406L ) ; | |
break ; | |
} | |
break ; | |
case 14 : | |
if ( chrcode == 1 ) | |
printesc ( 66453L ) ; | |
else printesc ( 65631L ) ; | |
break ; | |
case 26 : | |
switch ( chrcode ) | |
{case 4 : | |
printesc ( 66454L ) ; | |
break ; | |
case 0 : | |
printesc ( 66455L ) ; | |
break ; | |
case 1 : | |
printesc ( 66456L ) ; | |
break ; | |
case 2 : | |
printesc ( 66457L ) ; | |
break ; | |
default: | |
printesc ( 66458L ) ; | |
break ; | |
} | |
break ; | |
case 27 : | |
switch ( chrcode ) | |
{case 4 : | |
printesc ( 66459L ) ; | |
break ; | |
case 0 : | |
printesc ( 66460L ) ; | |
break ; | |
case 1 : | |
printesc ( 66461L ) ; | |
break ; | |
case 2 : | |
printesc ( 66462L ) ; | |
break ; | |
default: | |
printesc ( 66463L ) ; | |
break ; | |
} | |
break ; | |
case 28 : | |
printesc ( 65624L ) ; | |
break ; | |
case 29 : | |
printesc ( 65603L ) ; | |
break ; | |
case 30 : | |
printesc ( 65630L ) ; | |
break ; | |
case 21 : | |
if ( chrcode == 1 ) | |
printesc ( 66481L ) ; | |
else printesc ( 66482L ) ; | |
break ; | |
case 22 : | |
if ( chrcode == 1 ) | |
printesc ( 66483L ) ; | |
else printesc ( 66484L ) ; | |
break ; | |
case 20 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 65709L ) ; | |
break ; | |
case 1 : | |
printesc ( 66485L ) ; | |
break ; | |
case 2 : | |
printesc ( 66486L ) ; | |
break ; | |
case 3 : | |
printesc ( 66394L ) ; | |
break ; | |
case 4 : | |
printesc ( 66487L ) ; | |
break ; | |
case 5 : | |
printesc ( 66396L ) ; | |
break ; | |
default: | |
printesc ( 66488L ) ; | |
break ; | |
} | |
break ; | |
case 31 : | |
if ( chrcode == 100 ) | |
printesc ( 66490L ) ; | |
else if ( chrcode == 101 ) | |
printesc ( 66491L ) ; | |
else if ( chrcode == 102 ) | |
printesc ( 66492L ) ; | |
else printesc ( 66489L ) ; | |
break ; | |
case 43 : | |
if ( chrcode == 0 ) | |
printesc ( 66509L ) ; | |
else printesc ( 66508L ) ; | |
break ; | |
case 25 : | |
if ( chrcode == 10 ) | |
printesc ( 66521L ) ; | |
else if ( chrcode == 11 ) | |
printesc ( 66520L ) ; | |
else printesc ( 66519L ) ; | |
break ; | |
case 23 : | |
if ( chrcode == 1 ) | |
printesc ( 66523L ) ; | |
else printesc ( 66522L ) ; | |
break ; | |
case 24 : | |
if ( chrcode == 1 ) | |
printesc ( 66525L ) ; | |
else if ( chrcode == 2 ) | |
printesc ( 66961L ) ; | |
else if ( chrcode == 3 ) | |
printesc ( 66962L ) ; | |
else printesc ( 66524L ) ; | |
break ; | |
case 47 : | |
if ( chrcode == 1 ) | |
printesc ( 45 ) ; | |
else printesc ( 65639L ) ; | |
break ; | |
case 48 : | |
if ( chrcode == 1 ) | |
printesc ( 66557L ) ; | |
else printesc ( 66556L ) ; | |
break ; | |
case 50 : | |
switch ( chrcode ) | |
{case 16 : | |
printesc ( 66269L ) ; | |
break ; | |
case 17 : | |
printesc ( 66270L ) ; | |
break ; | |
case 18 : | |
printesc ( 66271L ) ; | |
break ; | |
case 19 : | |
printesc ( 66272L ) ; | |
break ; | |
case 20 : | |
printesc ( 66273L ) ; | |
break ; | |
case 21 : | |
printesc ( 66274L ) ; | |
break ; | |
case 22 : | |
printesc ( 66275L ) ; | |
break ; | |
case 23 : | |
printesc ( 66276L ) ; | |
break ; | |
case 26 : | |
printesc ( 66278L ) ; | |
break ; | |
default: | |
printesc ( 66277L ) ; | |
break ; | |
} | |
break ; | |
case 51 : | |
if ( chrcode == 1 ) | |
printesc ( 66282L ) ; | |
else if ( chrcode == 2 ) | |
printesc ( 66283L ) ; | |
else printesc ( 66558L ) ; | |
break ; | |
case 53 : | |
printstyle ( chrcode ) ; | |
break ; | |
case 52 : | |
switch ( chrcode ) | |
{case 1 : | |
printesc ( 66579L ) ; | |
break ; | |
case 2 : | |
printesc ( 66580L ) ; | |
break ; | |
case 3 : | |
printesc ( 66581L ) ; | |
break ; | |
case 4 : | |
printesc ( 66582L ) ; | |
break ; | |
case 5 : | |
printesc ( 66583L ) ; | |
break ; | |
default: | |
printesc ( 66578L ) ; | |
break ; | |
} | |
break ; | |
case 49 : | |
if ( chrcode == 30 ) | |
printesc ( 66279L ) ; | |
else if ( chrcode == 1 ) | |
printesc ( 66281L ) ; | |
else printesc ( 66280L ) ; | |
break ; | |
case 95 : | |
if ( chrcode == 1 ) | |
printesc ( 66603L ) ; | |
else if ( chrcode == 2 ) | |
printesc ( 66604L ) ; | |
else if ( chrcode == 8 ) | |
printesc ( 66617L ) ; | |
else printesc ( 66605L ) ; | |
break ; | |
case 99 : | |
if ( chrcode == 0 ) | |
printesc ( 66606L ) ; | |
else if ( chrcode == 1 ) | |
printesc ( 66607L ) ; | |
else if ( chrcode == 2 ) | |
printesc ( 66608L ) ; | |
else printesc ( 66609L ) ; | |
break ; | |
case 96 : | |
if ( chrcode != 0 ) | |
printesc ( 66627L ) ; | |
else printesc ( 66626L ) ; | |
break ; | |
case 97 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 66628L ) ; | |
break ; | |
case 1 : | |
printesc ( 66629L ) ; | |
break ; | |
case 9 : | |
printesc ( 66633L ) ; | |
break ; | |
case 8 : | |
printesc ( 66631L ) ; | |
break ; | |
case 2 : | |
printesc ( 66634L ) ; | |
break ; | |
case 3 : | |
printesc ( 66635L ) ; | |
break ; | |
case 4 : | |
printesc ( 66636L ) ; | |
break ; | |
case 5 : | |
printesc ( 66637L ) ; | |
break ; | |
case 7 : | |
printesc ( 66639L ) ; | |
break ; | |
default: | |
printesc ( 66638L ) ; | |
break ; | |
} | |
break ; | |
case 68 : | |
{ | |
printesc ( 65823L ) ; | |
printhex ( chrcode ) ; | |
} | |
break ; | |
case 69 : | |
{ | |
printesc ( 65838L ) ; | |
printhex ( chrcode ) ; | |
} | |
break ; | |
case 70 : | |
{ | |
printesc ( 65842L ) ; | |
printhex ( mathclassfield ( chrcode ) ) ; | |
printhex ( mathfamfield ( chrcode ) ) ; | |
printhex ( mathcharfield ( chrcode ) ) ; | |
} | |
break ; | |
case 86 : | |
if ( chrcode == 2254568L ) | |
printesc ( 65715L ) ; | |
else if ( chrcode == 6711016L ) | |
printesc ( 65719L ) ; | |
else if ( chrcode == 3368680L ) | |
printesc ( 65716L ) ; | |
else if ( chrcode == 4482792L ) | |
printesc ( 65717L ) ; | |
else if ( chrcode == 5596904L ) | |
printesc ( 65718L ) ; | |
else printesc ( 65783L ) ; | |
break ; | |
case 87 : | |
if ( chrcode == 5596904L ) | |
printesc ( 66648L ) ; | |
else if ( chrcode == 6711016L ) | |
printesc ( 66645L ) ; | |
else if ( chrcode == 6711017L ) | |
printesc ( 66647L ) ; | |
else if ( chrcode == 8939581L ) | |
printesc ( 66650L ) ; | |
else printesc ( 66652L ) ; | |
break ; | |
case 88 : | |
printsize ( chrcode - 2253800L ) ; | |
break ; | |
case 101 : | |
if ( chrcode == 1 ) | |
printesc ( 66382L ) ; | |
else printesc ( 66370L ) ; | |
break ; | |
case 79 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 66667L ) ; | |
break ; | |
case 1 : | |
printesc ( 66668L ) ; | |
break ; | |
case 2 : | |
printesc ( 66669L ) ; | |
break ; | |
case 3 : | |
printesc ( 66670L ) ; | |
break ; | |
} | |
break ; | |
case 89 : | |
{ | |
print ( 66678L ) ; | |
fontnamestr = fontname [chrcode ]; | |
if ( ( ( fontarea [chrcode ]== 65535L ) || ( fontarea [chrcode ]== | |
65534L ) ) ) | |
{ | |
quotechar = 34 ; | |
{register integer for_end; n = 0 ;for_end = length ( fontnamestr ) - | |
1 ; if ( n <= for_end) do | |
if ( strpool [strstart [( fontnamestr ) - 65536L ]+ n ]== 34 ) | |
quotechar = 39 ; | |
while ( n++ < for_end ) ;} | |
printchar ( quotechar ) ; | |
print ( fontnamestr ) ; | |
printchar ( quotechar ) ; | |
} | |
else print ( fontnamestr ) ; | |
if ( fontsize [chrcode ]!= fontdsize [chrcode ]) | |
{ | |
print ( 66125L ) ; | |
printscaled ( fontsize [chrcode ]) ; | |
print ( 65697L ) ; | |
} | |
} | |
break ; | |
case 102 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 65554L ) ; | |
break ; | |
case 1 : | |
printesc ( 65555L ) ; | |
break ; | |
case 2 : | |
printesc ( 65556L ) ; | |
break ; | |
default: | |
printesc ( 66679L ) ; | |
break ; | |
} | |
break ; | |
case 60 : | |
if ( chrcode == 0 ) | |
printesc ( 66681L ) ; | |
else printesc ( 66680L ) ; | |
break ; | |
case 58 : | |
if ( chrcode == 0 ) | |
printesc ( 66682L ) ; | |
else printesc ( 66683L ) ; | |
break ; | |
case 57 : | |
if ( chrcode == 3368680L ) | |
printesc ( 66689L ) ; | |
else printesc ( 66690L ) ; | |
break ; | |
case 19 : | |
switch ( chrcode ) | |
{case 1 : | |
printesc ( 66692L ) ; | |
break ; | |
case 2 : | |
printesc ( 66693L ) ; | |
break ; | |
case 3 : | |
printesc ( 66694L ) ; | |
break ; | |
case 4 : | |
printesc ( 66890L ) ; | |
break ; | |
case 5 : | |
printesc ( 66892L ) ; | |
break ; | |
case 6 : | |
printesc ( 66895L ) ; | |
break ; | |
default: | |
printesc ( 66691L ) ; | |
break ; | |
} | |
break ; | |
case 103 : | |
print ( 66701L ) ; | |
break ; | |
case 113 : | |
case 114 : | |
case 115 : | |
case 116 : | |
{ | |
n = cmd - 113 ; | |
if ( mem [mem [chrcode ].hh .v.RH ].hh .v.LH == 29360129L ) | |
n = n + 4 ; | |
if ( odd ( n / 4 ) ) | |
printesc ( 66617L ) ; | |
if ( odd ( n ) ) | |
printesc ( 66603L ) ; | |
if ( odd ( n / 2 ) ) | |
printesc ( 66604L ) ; | |
if ( n > 0 ) | |
printchar ( 32 ) ; | |
print ( 66702L ) ; | |
} | |
break ; | |
case 117 : | |
printesc ( 66703L ) ; | |
break ; | |
case 59 : | |
switch ( chrcode ) | |
{case 0 : | |
printesc ( 66742L ) ; | |
break ; | |
case 1 : | |
printesc ( 65919L ) ; | |
break ; | |
case 2 : | |
printesc ( 66743L ) ; | |
break ; | |
case 3 : | |
printesc ( 66744L ) ; | |
break ; | |
case 4 : | |
printesc ( 66745L ) ; | |
break ; | |
case 5 : | |
printesc ( 66746L ) ; | |
break ; | |
case 21 : | |
printesc ( 66754L ) ; | |
break ; | |
case 31 : | |
printesc ( 66747L ) ; | |
break ; | |
case 33 : | |
printesc ( 66748L ) ; | |
break ; | |
case 41 : | |
printesc ( 66749L ) ; | |
break ; | |
case 42 : | |
printesc ( 66750L ) ; | |
break ; | |
case 43 : | |
printesc ( 66751L ) ; | |
break ; | |
case 46 : | |
printesc ( 66752L ) ; | |
break ; | |
case 44 : | |
printesc ( 66755L ) ; | |
break ; | |
case 45 : | |
printesc ( 66756L ) ; | |
break ; | |
default: | |
print ( 66757L ) ; | |
break ; | |
} | |
break ; | |
default: | |
print ( 65891L ) ; | |
break ; | |
} | |
} | |
void | |
znotaatfonterror ( integer cmd , integer c , integer f ) | |
{ | |
notaatfonterror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66846L ) ; | |
} | |
printcmdchr ( cmd , c ) ; | |
print ( 66847L ) ; | |
print ( fontname [f ]) ; | |
print ( 66848L ) ; | |
error () ; | |
} | |
void | |
znotaatgrfonterror ( integer cmd , integer c , integer f ) | |
{ | |
notaatgrfonterror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66846L ) ; | |
} | |
printcmdchr ( cmd , c ) ; | |
print ( 66847L ) ; | |
print ( fontname [f ]) ; | |
print ( 66849L ) ; | |
error () ; | |
} | |
void | |
znototfonterror ( integer cmd , integer c , integer f ) | |
{ | |
nototfonterror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66846L ) ; | |
} | |
printcmdchr ( cmd , c ) ; | |
print ( 66847L ) ; | |
print ( fontname [f ]) ; | |
print ( 66850L ) ; | |
error () ; | |
} | |
void | |
znotnativefonterror ( integer cmd , integer c , integer f ) | |
{ | |
notnativefonterror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66846L ) ; | |
} | |
printcmdchr ( cmd , c ) ; | |
print ( 66847L ) ; | |
print ( fontname [f ]) ; | |
print ( 66851L ) ; | |
error () ; | |
} | |
#ifdef STAT | |
void | |
zshoweqtb ( halfword n ) | |
{ | |
showeqtb_regmem | |
if ( n < 1 ) | |
printchar ( 63 ) ; | |
else if ( ( n < 2252740L ) || ( ( n > 10053971L ) && ( n <= eqtbtop ) ) ) | |
{ | |
sprintcs ( n ) ; | |
printchar ( 61 ) ; | |
printcmdchr ( eqtb [n ].hh.b0 , eqtb [n ].hh .v.RH ) ; | |
if ( eqtb [n ].hh.b0 >= 113 ) | |
{ | |
printchar ( 58 ) ; | |
showtokenlist ( mem [eqtb [n ].hh .v.RH ].hh .v.RH , -268435455L , | |
32 ) ; | |
} | |
} | |
else if ( n < 2253271L ) { | |
if ( n < 2252759L ) | |
{ | |
printskipparam ( n - 2252740L ) ; | |
printchar ( 61 ) ; | |
if ( n < 2252756L ) | |
printspec ( eqtb [n ].hh .v.RH , 65697L ) ; | |
else printspec ( eqtb [n ].hh .v.RH , 65625L ) ; | |
} | |
else if ( n < 2253015L ) | |
{ | |
printesc ( 65695L ) ; | |
printint ( n - 2252759L ) ; | |
printchar ( 61 ) ; | |
printspec ( eqtb [n ].hh .v.RH , 65697L ) ; | |
} | |
else { | |
printesc ( 65696L ) ; | |
printint ( n - 2253015L ) ; | |
printchar ( 61 ) ; | |
printspec ( eqtb [n ].hh .v.RH , 65625L ) ; | |
} | |
} | |
else if ( n < 8939240L ) { | |
if ( ( n == 2253271L ) || ( ( n >= 2253539L ) && ( n < 2253543L ) ) ) | |
{ | |
printcmdchr ( 85 , n ) ; | |
printchar ( 61 ) ; | |
if ( eqtb [n ].hh .v.RH == -268435455L ) | |
printchar ( 48 ) ; | |
else if ( n > 2253271L ) | |
{ | |
printint ( mem [eqtb [n ].hh .v.RH + 1 ].cint ) ; | |
printchar ( 32 ) ; | |
printint ( mem [eqtb [n ].hh .v.RH + 2 ].cint ) ; | |
if ( mem [eqtb [n ].hh .v.RH + 1 ].cint > 1 ) | |
printesc ( 65708L ) ; | |
} | |
else printint ( mem [eqtb [2253271L ].hh .v.RH ].hh .v.LH ) ; | |
} | |
else if ( n < 2253283L ) | |
{ | |
printcmdchr ( 73 , n ) ; | |
printchar ( 61 ) ; | |
if ( eqtb [n ].hh .v.RH != -268435455L ) | |
showtokenlist ( mem [eqtb [n ].hh .v.RH ].hh .v.RH , -268435455L , | |
32 ) ; | |
} | |
else if ( n < 2253543L ) | |
{ | |
printesc ( 65707L ) ; | |
printint ( n - 2253283L ) ; | |
printchar ( 61 ) ; | |
if ( eqtb [n ].hh .v.RH != -268435455L ) | |
showtokenlist ( mem [eqtb [n ].hh .v.RH ].hh .v.RH , -268435455L , | |
32 ) ; | |
} | |
else if ( n < 2253799L ) | |
{ | |
printesc ( 65709L ) ; | |
printint ( n - 2253543L ) ; | |
printchar ( 61 ) ; | |
if ( eqtb [n ].hh .v.RH == -268435455L ) | |
print ( 65710L ) ; | |
else { | |
depththreshold = 0 ; | |
breadthmax = 1 ; | |
shownodelist ( eqtb [n ].hh .v.RH ) ; | |
} | |
} | |
else if ( n < 2254568L ) | |
{ | |
if ( n == 2253799L ) | |
print ( 65711L ) ; | |
else if ( n < 2254056L ) | |
{ | |
printesc ( 65712L ) ; | |
printint ( n - 2253800L ) ; | |
} | |
else if ( n < 2254312L ) | |
{ | |
printesc ( 65713L ) ; | |
printint ( n - 2254056L ) ; | |
} | |
else { | |
printesc ( 65714L ) ; | |
printint ( n - 2254312L ) ; | |
} | |
printchar ( 61 ) ; | |
printesc ( hash [2243738L + eqtb [n ].hh .v.RH ].v.RH ) ; | |
} | |
else if ( n < 6711016L ) | |
{ | |
if ( n < 3368680L ) | |
{ | |
printesc ( 65715L ) ; | |
printint ( n - 2254568L ) ; | |
} | |
else if ( n < 4482792L ) | |
{ | |
printesc ( 65716L ) ; | |
printint ( n - 3368680L ) ; | |
} | |
else if ( n < 5596904L ) | |
{ | |
printesc ( 65717L ) ; | |
printint ( n - 4482792L ) ; | |
} | |
else { | |
printesc ( 65718L ) ; | |
printint ( n - 5596904L ) ; | |
} | |
printchar ( 61 ) ; | |
printint ( eqtb [n ].hh .v.RH ) ; | |
} | |
else { | |
printesc ( 65719L ) ; | |
printint ( n - 6711016L ) ; | |
printchar ( 61 ) ; | |
printint ( eqtb [n ].hh .v.RH ) ; | |
} | |
} | |
else if ( n < 10053693L ) | |
{ | |
if ( n < 8939325L ) | |
printparam ( n - 8939240L ) ; | |
else if ( n < 8939581L ) | |
{ | |
printesc ( 65782L ) ; | |
printint ( n - 8939325L ) ; | |
} | |
else { | |
printesc ( 65783L ) ; | |
printint ( n - 8939581L ) ; | |
} | |
printchar ( 61 ) ; | |
printint ( eqtb [n ].cint ) ; | |
} | |
else if ( n <= 10053971L ) | |
{ | |
if ( n < 10053716L ) | |
printlengthparam ( n - 10053693L ) ; | |
else { | |
printesc ( 65808L ) ; | |
printint ( n - 10053716L ) ; | |
} | |
printchar ( 61 ) ; | |
printscaled ( eqtb [n ].cint ) ; | |
print ( 65697L ) ; | |
} | |
else printchar ( 63 ) ; | |
} | |
#endif /* STAT */ | |
halfword | |
zidlookup ( integer j , integer l ) | |
{ | |
/* 40 */ register halfword Result; idlookup_regmem | |
integer h ; | |
integer d ; | |
halfword p ; | |
halfword k ; | |
integer ll ; | |
h = 0 ; | |
{register integer for_end; k = j ;for_end = j + l - 1 ; if ( k <= for_end) | |
do | |
{ | |
h = h + h + buffer [k ]; | |
while ( h >= 8501 ) h = h - 8501 ; | |
} | |
while ( k++ < for_end ) ;} | |
p = h + 2228226L ; | |
ll = l ; | |
{register integer for_end; d = 0 ;for_end = l - 1 ; if ( d <= for_end) do | |
if ( buffer [j + d ]>= 65536L ) | |
incr ( ll ) ; | |
while ( d++ < for_end ) ;} | |
while ( true ) { | |
if ( hash [p ].v.RH > 0 ) { | |
if ( length ( hash [p ].v.RH ) == ll ) { | |
if ( streqbuf ( hash [p ].v.RH , j ) ) | |
goto lab40 ; | |
} | |
} | |
if ( hash [p ].v.LH == 0 ) | |
{ | |
if ( nonewcontrolsequence ) | |
p = 2252739L ; | |
else { | |
if ( hash [p ].v.RH > 0 ) | |
{ | |
if ( hashhigh < hashextra ) | |
{ | |
incr ( hashhigh ) ; | |
hash [p ].v.LH = hashhigh + 10053971L ; | |
p = hashhigh + 10053971L ; | |
} | |
else { | |
do { | |
if ( ( hashused == 2228226L ) ) | |
overflow ( 65812L , 15000 + hashextra ) ; | |
decr ( hashused ) ; | |
} while ( ! ( hash [hashused ].v.RH == 0 ) ) ; | |
hash [p ].v.LH = hashused ; | |
p = hashused ; | |
} | |
} | |
{ | |
if ( poolptr + ll > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
d = ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
while ( poolptr > strstart [( strptr ) - 65536L ]) { | |
decr ( poolptr ) ; | |
strpool [poolptr + l ]= strpool [poolptr ]; | |
} | |
{register integer for_end; k = j ;for_end = j + l - 1 ; if ( k <= | |
for_end) do | |
{ | |
if ( buffer [k ]< 65536L ) | |
{ | |
strpool [poolptr ]= buffer [k ]; | |
incr ( poolptr ) ; | |
} | |
else { | |
{ | |
strpool [poolptr ]= 55296L + ( buffer [k ]- 65536L ) / | |
1024 ; | |
incr ( poolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= 56320L + ( buffer [k ]- 65536L ) % | |
1024 ; | |
incr ( poolptr ) ; | |
} | |
} | |
} | |
while ( k++ < for_end ) ;} | |
hash [p ].v.RH = makestring () ; | |
poolptr = poolptr + d ; | |
; | |
#ifdef STAT | |
incr ( cscount ) ; | |
#endif /* STAT */ | |
} | |
goto lab40 ; | |
} | |
p = hash [p ].v.LH ; | |
} | |
lab40: Result = p ; | |
return Result ; | |
} | |
halfword | |
zprimlookup ( strnumber s ) | |
{ | |
/* 40 */ register halfword Result; primlookup_regmem | |
integer h ; | |
halfword p ; | |
halfword k ; | |
integer j, l ; | |
if ( s <= 65535L ) | |
{ | |
if ( s < 0 ) | |
{ | |
p = 0 ; | |
goto lab40 ; | |
} | |
else p = ( s % 431 ) + 1 ; | |
} | |
else { | |
j = strstart [( s ) - 65536L ]; | |
if ( s == strptr ) | |
l = ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
else l = length ( s ) ; | |
h = strpool [j ]; | |
{register integer for_end; k = j + 1 ;for_end = j + l - 1 ; if ( k <= | |
for_end) do | |
{ | |
h = h + h + strpool [k ]; | |
while ( h >= 431 ) h = h - 431 ; | |
} | |
while ( k++ < for_end ) ;} | |
p = h + 1 ; | |
} | |
while ( true ) { | |
if ( prim [p ].v.RH > 65536L ) | |
{ | |
if ( length ( prim [p ].v.RH - 1 ) == l ) { | |
if ( streqstr ( prim [p ].v.RH - 1 , s ) ) | |
goto lab40 ; | |
} | |
} | |
else if ( prim [p ].v.RH == 1 + s ) | |
goto lab40 ; | |
if ( prim [p ].v.LH == 0 ) | |
{ | |
if ( nonewcontrolsequence ) | |
p = 0 ; | |
else { | |
if ( prim [p ].v.RH > 0 ) | |
{ | |
do { | |
if ( ( primused == 1 ) ) | |
overflow ( 65813L , 500 ) ; | |
decr ( primused ) ; | |
} while ( ! ( prim [primused ].v.RH == 0 ) ) ; | |
prim [p ].v.LH = primused ; | |
p = primused ; | |
} | |
prim [p ].v.RH = s + 1 ; | |
} | |
goto lab40 ; | |
} | |
p = prim [p ].v.LH ; | |
} | |
lab40: Result = p ; | |
return Result ; | |
} | |
#ifdef STAT | |
void | |
zrestoretrace ( halfword p , strnumber s ) | |
{ | |
restoretrace_regmem | |
begindiagnostic () ; | |
printchar ( 123 ) ; | |
print ( s ) ; | |
printchar ( 32 ) ; | |
showeqtb ( p ) ; | |
printchar ( 125 ) ; | |
enddiagnostic ( false ) ; | |
} | |
#endif /* STAT */ | |
void | |
zprintgroup ( boolean e ) | |
{ | |
/* 10 */ printgroup_regmem | |
switch ( curgroup ) | |
{case 0 : | |
{ | |
print ( 66865L ) ; | |
return ; | |
} | |
break ; | |
case 1 : | |
case 14 : | |
{ | |
if ( curgroup == 14 ) | |
print ( 66866L ) ; | |
print ( 66867L ) ; | |
} | |
break ; | |
case 2 : | |
case 3 : | |
{ | |
if ( curgroup == 3 ) | |
print ( 66868L ) ; | |
print ( 66488L ) ; | |
} | |
break ; | |
case 4 : | |
print ( 66396L ) ; | |
break ; | |
case 5 : | |
print ( 66487L ) ; | |
break ; | |
case 6 : | |
case 7 : | |
{ | |
if ( curgroup == 7 ) | |
print ( 66869L ) ; | |
print ( 66870L ) ; | |
} | |
break ; | |
case 8 : | |
print ( 65698L ) ; | |
break ; | |
case 10 : | |
print ( 66871L ) ; | |
break ; | |
case 11 : | |
print ( 65618L ) ; | |
break ; | |
case 12 : | |
print ( 65860L ) ; | |
break ; | |
case 9 : | |
case 13 : | |
case 15 : | |
case 16 : | |
{ | |
print ( 65633L ) ; | |
if ( curgroup == 13 ) | |
print ( 66872L ) ; | |
else if ( curgroup == 15 ) | |
print ( 66873L ) ; | |
else if ( curgroup == 16 ) | |
print ( 66874L ) ; | |
} | |
break ; | |
} | |
print ( 66875L ) ; | |
printint ( curlevel ) ; | |
printchar ( 41 ) ; | |
if ( savestack [saveptr - 1 ].cint != 0 ) | |
{ | |
if ( e ) | |
print ( 65662L ) ; | |
else print ( 66303L ) ; | |
printint ( savestack [saveptr - 1 ].cint ) ; | |
} | |
} | |
#ifdef STAT | |
void | |
zgrouptrace ( boolean e ) | |
{ | |
grouptrace_regmem | |
begindiagnostic () ; | |
printchar ( 123 ) ; | |
if ( e ) | |
print ( 66876L ) ; | |
else print ( 66877L ) ; | |
printgroup ( e ) ; | |
printchar ( 125 ) ; | |
enddiagnostic ( false ) ; | |
} | |
#endif /* STAT */ | |
boolean | |
pseudoinput ( void ) | |
{ | |
register boolean Result; pseudoinput_regmem | |
halfword p ; | |
integer sz ; | |
fourquarters w ; | |
halfword r ; | |
last = first ; | |
p = mem [pseudofiles ].hh .v.LH ; | |
if ( p == -268435455L ) | |
Result = false ; | |
else { | |
mem [pseudofiles ].hh .v.LH = mem [p ].hh .v.RH ; | |
sz = mem [p ].hh .v.LH ; | |
if ( 4 * sz - 3 >= bufsize - last ) | |
{ | |
curinput .locfield = first ; | |
curinput .limitfield = last - 1 ; | |
overflow ( 65538L , bufsize ) ; | |
} | |
last = first ; | |
{register integer for_end; r = p + 1 ;for_end = p + sz - 1 ; if ( r <= | |
for_end) do | |
{ | |
w = mem [r ].qqqq ; | |
buffer [last ]= w .b0 ; | |
buffer [last + 1 ]= w .b1 ; | |
buffer [last + 2 ]= w .b2 ; | |
buffer [last + 3 ]= w .b3 ; | |
last = last + 4 ; | |
} | |
while ( r++ < for_end ) ;} | |
if ( last >= maxbufstack ) | |
maxbufstack = last + 1 ; | |
while ( ( last > first ) && ( buffer [last - 1 ]== 32 ) ) decr ( last ) | |
; | |
freenode ( p , sz ) ; | |
Result = true ; | |
} | |
return Result ; | |
} | |
void | |
pseudoclose ( void ) | |
{ | |
pseudoclose_regmem | |
halfword p, q ; | |
p = mem [pseudofiles ].hh .v.RH ; | |
q = mem [pseudofiles ].hh .v.LH ; | |
{ | |
mem [pseudofiles ].hh .v.RH = avail ; | |
avail = pseudofiles ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
pseudofiles = p ; | |
while ( q != -268435455L ) { | |
p = q ; | |
q = mem [p ].hh .v.RH ; | |
freenode ( p , mem [p ].hh .v.LH ) ; | |
} | |
} | |
void | |
groupwarning ( void ) | |
{ | |
groupwarning_regmem | |
integer i ; | |
boolean w ; | |
baseptr = inputptr ; | |
inputstack [baseptr ]= curinput ; | |
i = inopen ; | |
w = false ; | |
while ( ( grpstack [i ]== curboundary ) && ( i > 0 ) ) { | |
if ( eqtb [8939303L ].cint > 0 ) | |
{ | |
while ( ( inputstack [baseptr ].statefield == 0 ) || ( inputstack [ | |
baseptr ].indexfield > i ) ) decr ( baseptr ) ; | |
if ( inputstack [baseptr ].namefield > 17 ) | |
w = true ; | |
} | |
grpstack [i ]= savestack [saveptr ].hh .v.RH ; | |
decr ( i ) ; | |
} | |
if ( w ) | |
{ | |
printnl ( 66934L ) ; | |
printgroup ( true ) ; | |
print ( 66935L ) ; | |
println () ; | |
if ( eqtb [8939303L ].cint > 1 ) | |
showcontext () ; | |
if ( history == 0 ) | |
history = 1 ; | |
} | |
} | |
void | |
ifwarning ( void ) | |
{ | |
ifwarning_regmem | |
integer i ; | |
boolean w ; | |
baseptr = inputptr ; | |
inputstack [baseptr ]= curinput ; | |
i = inopen ; | |
w = false ; | |
while ( ifstack [i ]== condptr ) { | |
if ( eqtb [8939303L ].cint > 0 ) | |
{ | |
while ( ( inputstack [baseptr ].statefield == 0 ) || ( inputstack [ | |
baseptr ].indexfield > i ) ) decr ( baseptr ) ; | |
if ( inputstack [baseptr ].namefield > 17 ) | |
w = true ; | |
} | |
ifstack [i ]= mem [condptr ].hh .v.RH ; | |
decr ( i ) ; | |
} | |
if ( w ) | |
{ | |
printnl ( 66934L ) ; | |
printcmdchr ( 107 , curif ) ; | |
if ( ifline != 0 ) | |
{ | |
print ( 66896L ) ; | |
printint ( ifline ) ; | |
} | |
print ( 66935L ) ; | |
println () ; | |
if ( eqtb [8939303L ].cint > 1 ) | |
showcontext () ; | |
if ( history == 0 ) | |
history = 1 ; | |
} | |
} | |
void | |
filewarning ( void ) | |
{ | |
filewarning_regmem | |
halfword p ; | |
quarterword l ; | |
quarterword c ; | |
integer i ; | |
p = saveptr ; | |
l = curlevel ; | |
c = curgroup ; | |
saveptr = curboundary ; | |
while ( grpstack [inopen ]!= saveptr ) { | |
decr ( curlevel ) ; | |
printnl ( 66936L ) ; | |
printgroup ( true ) ; | |
print ( 66937L ) ; | |
curgroup = savestack [saveptr ].hh.b1 ; | |
saveptr = savestack [saveptr ].hh .v.RH ; | |
} | |
saveptr = p ; | |
curlevel = l ; | |
curgroup = c ; | |
p = condptr ; | |
l = iflimit ; | |
c = curif ; | |
i = ifline ; | |
while ( ifstack [inopen ]!= condptr ) { | |
printnl ( 66936L ) ; | |
printcmdchr ( 107 , curif ) ; | |
if ( iflimit == 2 ) | |
printesc ( 66162L ) ; | |
if ( ifline != 0 ) | |
{ | |
print ( 66896L ) ; | |
printint ( ifline ) ; | |
} | |
print ( 66937L ) ; | |
ifline = mem [condptr + 1 ].cint ; | |
curif = mem [condptr ].hh.b1 ; | |
iflimit = mem [condptr ].hh.b0 ; | |
condptr = mem [condptr ].hh .v.RH ; | |
} | |
condptr = p ; | |
iflimit = l ; | |
curif = c ; | |
ifline = i ; | |
println () ; | |
if ( eqtb [8939303L ].cint > 1 ) | |
showcontext () ; | |
if ( history == 0 ) | |
history = 1 ; | |
} | |
void | |
zdeletesaref ( halfword q ) | |
{ | |
/* 10 */ deletesaref_regmem | |
halfword p ; | |
smallnumber i ; | |
smallnumber s ; | |
decr ( mem [q + 1 ].hh .v.LH ) ; | |
if ( mem [q + 1 ].hh .v.LH != -268435455L ) | |
return ; | |
if ( mem [q ].hh.b0 < 128 ) { | |
if ( mem [q + 2 ].cint == 0 ) | |
s = 3 ; | |
else return ; | |
} | |
else { | |
if ( mem [q ].hh.b0 < 256 ) { | |
if ( mem [q + 1 ].hh .v.RH == membot ) | |
deleteglueref ( membot ) ; | |
else return ; | |
} | |
else if ( mem [q + 1 ].hh .v.RH != -268435455L ) | |
return ; | |
s = 2 ; | |
} | |
do { | |
i = mem [q ].hh.b0 % 64 ; | |
p = q ; | |
q = mem [p ].hh .v.RH ; | |
freenode ( p , s ) ; | |
if ( q == -268435455L ) | |
{ | |
saroot [i ]= -268435455L ; | |
return ; | |
} | |
{ | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = -268435455L ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = -268435455L ; | |
decr ( mem [q ].hh.b1 ) ; | |
} | |
s = 33 ; | |
} while ( ! ( mem [q ].hh.b1 > 0 ) ) ; | |
} | |
#ifdef STAT | |
void | |
zshowsa ( halfword p , strnumber s ) | |
{ | |
showsa_regmem | |
smallnumber t ; | |
begindiagnostic () ; | |
printchar ( 123 ) ; | |
print ( s ) ; | |
printchar ( 32 ) ; | |
if ( p == -268435455L ) | |
printchar ( 63 ) ; | |
else { | |
t = ( mem [p ].hh.b0 / 64 ) ; | |
if ( t < 4 ) | |
printcmdchr ( 91 , p ) ; | |
else if ( t == 4 ) | |
{ | |
printesc ( 65709L ) ; | |
printsanum ( p ) ; | |
} | |
else if ( t == 5 ) | |
printcmdchr ( 72 , p ) ; | |
else printchar ( 63 ) ; | |
printchar ( 61 ) ; | |
if ( t == 0 ) | |
printint ( mem [p + 2 ].cint ) ; | |
else if ( t == 1 ) | |
{ | |
printscaled ( mem [p + 2 ].cint ) ; | |
print ( 65697L ) ; | |
} | |
else { | |
p = mem [p + 1 ].hh .v.RH ; | |
if ( t == 2 ) | |
printspec ( p , 65697L ) ; | |
else if ( t == 3 ) | |
printspec ( p , 65625L ) ; | |
else if ( t == 4 ) { | |
if ( p == -268435455L ) | |
print ( 65710L ) ; | |
else { | |
depththreshold = 0 ; | |
breadthmax = 1 ; | |
shownodelist ( p ) ; | |
} | |
} | |
else if ( t == 5 ) | |
{ | |
if ( p != -268435455L ) | |
showtokenlist ( mem [p ].hh .v.RH , -268435455L , 32 ) ; | |
} | |
else printchar ( 63 ) ; | |
} | |
} | |
printchar ( 125 ) ; | |
enddiagnostic ( false ) ; | |
} | |
#endif /* STAT */ | |
void | |
zsasave ( halfword p ) | |
{ | |
sasave_regmem | |
halfword q ; | |
quarterword i ; | |
if ( curlevel != salevel ) | |
{ | |
if ( saveptr > maxsavestack ) | |
{ | |
maxsavestack = saveptr ; | |
if ( maxsavestack > savesize - 7 ) | |
overflow ( 65862L , savesize ) ; | |
} | |
savestack [saveptr ].hh.b0 = 4 ; | |
savestack [saveptr ].hh.b1 = salevel ; | |
savestack [saveptr ].hh .v.RH = sachain ; | |
incr ( saveptr ) ; | |
sachain = -268435455L ; | |
salevel = curlevel ; | |
} | |
i = mem [p ].hh.b0 ; | |
if ( i < 128 ) | |
{ | |
if ( mem [p + 2 ].cint == 0 ) | |
{ | |
q = getnode ( 2 ) ; | |
i = 384 ; | |
} | |
else { | |
q = getnode ( 3 ) ; | |
mem [q + 2 ].cint = mem [p + 2 ].cint ; | |
} | |
mem [q + 1 ].hh .v.RH = -268435455L ; | |
} | |
else { | |
q = getnode ( 2 ) ; | |
mem [q + 1 ].hh .v.RH = mem [p + 1 ].hh .v.RH ; | |
} | |
mem [q + 1 ].hh .v.LH = p ; | |
mem [q ].hh.b0 = i ; | |
mem [q ].hh.b1 = mem [p ].hh.b1 ; | |
mem [q ].hh .v.RH = sachain ; | |
sachain = q ; | |
incr ( mem [p + 1 ].hh .v.LH ) ; | |
} | |
void | |
zsadestroy ( halfword p ) | |
{ | |
sadestroy_regmem | |
if ( mem [p ].hh.b0 < 256 ) | |
deleteglueref ( mem [p + 1 ].hh .v.RH ) ; | |
else if ( mem [p + 1 ].hh .v.RH != -268435455L ) { | |
if ( mem [p ].hh.b0 < 320 ) | |
flushnodelist ( mem [p + 1 ].hh .v.RH ) ; | |
else deletetokenref ( mem [p + 1 ].hh .v.RH ) ; | |
} | |
} | |
void | |
zsadef ( halfword p , halfword e ) | |
{ | |
sadef_regmem | |
incr ( mem [p + 1 ].hh .v.LH ) ; | |
if ( mem [p + 1 ].hh .v.RH == e ) | |
{ | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65864L ) ; | |
#endif /* STAT */ | |
sadestroy ( p ) ; | |
} | |
else { | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65865L ) ; | |
#endif /* STAT */ | |
if ( mem [p ].hh.b1 == curlevel ) | |
sadestroy ( p ) ; | |
else sasave ( p ) ; | |
mem [p ].hh.b1 = curlevel ; | |
mem [p + 1 ].hh .v.RH = e ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65866L ) ; | |
#endif /* STAT */ | |
} | |
deletesaref ( p ) ; | |
} | |
void | |
zsawdef ( halfword p , integer w ) | |
{ | |
sawdef_regmem | |
incr ( mem [p + 1 ].hh .v.LH ) ; | |
if ( mem [p + 2 ].cint == w ) | |
{ | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65864L ) ; | |
#endif /* STAT */ | |
} | |
else { | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65865L ) ; | |
#endif /* STAT */ | |
if ( mem [p ].hh.b1 != curlevel ) | |
sasave ( p ) ; | |
mem [p ].hh.b1 = curlevel ; | |
mem [p + 2 ].cint = w ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65866L ) ; | |
#endif /* STAT */ | |
} | |
deletesaref ( p ) ; | |
} | |
void | |
zgsadef ( halfword p , halfword e ) | |
{ | |
gsadef_regmem | |
incr ( mem [p + 1 ].hh .v.LH ) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65867L ) ; | |
#endif /* STAT */ | |
sadestroy ( p ) ; | |
mem [p ].hh.b1 = 1 ; | |
mem [p + 1 ].hh .v.RH = e ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65866L ) ; | |
#endif /* STAT */ | |
deletesaref ( p ) ; | |
} | |
void | |
zgsawdef ( halfword p , integer w ) | |
{ | |
gsawdef_regmem | |
incr ( mem [p + 1 ].hh .v.LH ) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65867L ) ; | |
#endif /* STAT */ | |
mem [p ].hh.b1 = 1 ; | |
mem [p + 2 ].cint = w ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
showsa ( p , 65866L ) ; | |
#endif /* STAT */ | |
deletesaref ( p ) ; | |
} | |
void | |
sarestore ( void ) | |
{ | |
sarestore_regmem | |
halfword p ; | |
do { | |
p = mem [sachain + 1 ].hh .v.LH ; | |
if ( mem [p ].hh.b1 == 1 ) | |
{ | |
if ( mem [p ].hh.b0 >= 128 ) | |
sadestroy ( sachain ) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939277L ].cint > 0 ) | |
showsa ( p , 65869L ) ; | |
#endif /* STAT */ | |
} | |
else { | |
if ( mem [p ].hh.b0 < 128 ) { | |
if ( mem [sachain ].hh.b0 < 128 ) | |
mem [p + 2 ].cint = mem [sachain + 2 ].cint ; | |
else mem [p + 2 ].cint = 0 ; | |
} | |
else { | |
sadestroy ( p ) ; | |
mem [p + 1 ].hh .v.RH = mem [sachain + 1 ].hh .v.RH ; | |
} | |
mem [p ].hh.b1 = mem [sachain ].hh.b1 ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939277L ].cint > 0 ) | |
showsa ( p , 65870L ) ; | |
#endif /* STAT */ | |
} | |
deletesaref ( p ) ; | |
p = sachain ; | |
sachain = mem [p ].hh .v.RH ; | |
if ( mem [p ].hh.b0 < 128 ) | |
freenode ( p , 3 ) ; | |
else freenode ( p , 2 ) ; | |
} while ( ! ( sachain == -268435455L ) ) ; | |
} | |
void | |
znewsavelevel ( groupcode c ) | |
{ | |
newsavelevel_regmem | |
if ( saveptr > maxsavestack ) | |
{ | |
maxsavestack = saveptr ; | |
if ( maxsavestack > savesize - 7 ) | |
overflow ( 65862L , savesize ) ; | |
} | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
savestack [saveptr + 0 ].cint = line ; | |
incr ( saveptr ) ; | |
} | |
savestack [saveptr ].hh.b0 = 3 ; | |
savestack [saveptr ].hh.b1 = curgroup ; | |
savestack [saveptr ].hh .v.RH = curboundary ; | |
if ( curlevel == 65535L ) | |
overflow ( 65863L , 65535L ) ; | |
curboundary = saveptr ; | |
curgroup = c ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939300L ].cint > 0 ) | |
grouptrace ( false ) ; | |
#endif /* STAT */ | |
incr ( curlevel ) ; | |
incr ( saveptr ) ; | |
} | |
void | |
zeqdestroy ( memoryword w ) | |
{ | |
eqdestroy_regmem | |
halfword q ; | |
switch ( w .hh.b0 ) | |
{case 113 : | |
case 114 : | |
case 115 : | |
case 116 : | |
deletetokenref ( w .hh .v.RH ) ; | |
break ; | |
case 119 : | |
deleteglueref ( w .hh .v.RH ) ; | |
break ; | |
case 120 : | |
{ | |
q = w .hh .v.RH ; | |
if ( q != -268435455L ) | |
freenode ( q , mem [q ].hh .v.LH + mem [q ].hh .v.LH + 1 ) ; | |
} | |
break ; | |
case 121 : | |
flushnodelist ( w .hh .v.RH ) ; | |
break ; | |
case 72 : | |
case 91 : | |
if ( ( w .hh .v.RH < membot ) || ( w .hh .v.RH > membot + 19 ) ) | |
deletesaref ( w .hh .v.RH ) ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
void | |
zeqsave ( halfword p , quarterword l ) | |
{ | |
eqsave_regmem | |
if ( saveptr > maxsavestack ) | |
{ | |
maxsavestack = saveptr ; | |
if ( maxsavestack > savesize - 7 ) | |
overflow ( 65862L , savesize ) ; | |
} | |
if ( l == 0 ) | |
savestack [saveptr ].hh.b0 = 1 ; | |
else { | |
savestack [saveptr ]= eqtb [p ]; | |
incr ( saveptr ) ; | |
savestack [saveptr ].hh.b0 = 0 ; | |
} | |
savestack [saveptr ].hh.b1 = l ; | |
savestack [saveptr ].hh .v.RH = p ; | |
incr ( saveptr ) ; | |
} | |
void | |
zeqdefine ( halfword p , quarterword t , halfword e ) | |
{ | |
/* 10 */ eqdefine_regmem | |
if ( ( eTeXmode == 1 ) && ( eqtb [p ].hh.b0 == t ) && ( eqtb [p ].hh | |
.v.RH == e ) ) | |
{ | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65864L ) ; | |
#endif /* STAT */ | |
eqdestroy ( eqtb [p ]) ; | |
return ; | |
} | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65865L ) ; | |
#endif /* STAT */ | |
if ( eqtb [p ].hh.b1 == curlevel ) | |
eqdestroy ( eqtb [p ]) ; | |
else if ( curlevel > 1 ) | |
eqsave ( p , eqtb [p ].hh.b1 ) ; | |
eqtb [p ].hh.b1 = curlevel ; | |
eqtb [p ].hh.b0 = t ; | |
eqtb [p ].hh .v.RH = e ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65866L ) ; | |
#endif /* STAT */ | |
} | |
void | |
zeqworddefine ( halfword p , integer w ) | |
{ | |
/* 10 */ eqworddefine_regmem | |
if ( ( eTeXmode == 1 ) && ( eqtb [p ].cint == w ) ) | |
{ | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65864L ) ; | |
#endif /* STAT */ | |
return ; | |
} | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65865L ) ; | |
#endif /* STAT */ | |
if ( xeqlevel [p ]!= curlevel ) | |
{ | |
eqsave ( p , xeqlevel [p ]) ; | |
xeqlevel [p ]= curlevel ; | |
} | |
eqtb [p ].cint = w ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65866L ) ; | |
#endif /* STAT */ | |
} | |
void | |
zgeqdefine ( halfword p , quarterword t , halfword e ) | |
{ | |
geqdefine_regmem | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65867L ) ; | |
#endif /* STAT */ | |
{ | |
eqdestroy ( eqtb [p ]) ; | |
eqtb [p ].hh.b1 = 1 ; | |
eqtb [p ].hh.b0 = t ; | |
eqtb [p ].hh .v.RH = e ; | |
} | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65866L ) ; | |
#endif /* STAT */ | |
} | |
void | |
zgeqworddefine ( halfword p , integer w ) | |
{ | |
geqworddefine_regmem | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65867L ) ; | |
#endif /* STAT */ | |
{ | |
eqtb [p ].cint = w ; | |
xeqlevel [p ]= 1 ; | |
} | |
; | |
#ifdef STAT | |
if ( eqtb [8939299L ].cint > 0 ) | |
restoretrace ( p , 65866L ) ; | |
#endif /* STAT */ | |
} | |
void | |
zsaveforafter ( halfword t ) | |
{ | |
saveforafter_regmem | |
if ( curlevel > 1 ) | |
{ | |
if ( saveptr > maxsavestack ) | |
{ | |
maxsavestack = saveptr ; | |
if ( maxsavestack > savesize - 7 ) | |
overflow ( 65862L , savesize ) ; | |
} | |
savestack [saveptr ].hh.b0 = 2 ; | |
savestack [saveptr ].hh.b1 = 0 ; | |
savestack [saveptr ].hh .v.RH = t ; | |
incr ( saveptr ) ; | |
} | |
} | |
void | |
unsave ( void ) | |
{ | |
/* 30 */ unsave_regmem | |
halfword p ; | |
quarterword l ; | |
halfword t ; | |
boolean a ; | |
a = false ; | |
if ( curlevel > 1 ) | |
{ | |
decr ( curlevel ) ; | |
while ( true ) { | |
decr ( saveptr ) ; | |
if ( savestack [saveptr ].hh.b0 == 3 ) | |
goto lab30 ; | |
p = savestack [saveptr ].hh .v.RH ; | |
if ( savestack [saveptr ].hh.b0 == 2 ) | |
{ | |
t = curtok ; | |
curtok = p ; | |
if ( a ) | |
{ | |
p = getavail () ; | |
mem [p ].hh .v.LH = curtok ; | |
mem [p ].hh .v.RH = curinput .locfield ; | |
curinput .locfield = p ; | |
curinput .startfield = p ; | |
if ( curtok < 6291456L ) { | |
if ( curtok < 4194304L ) | |
decr ( alignstate ) ; | |
else incr ( alignstate ) ; | |
} | |
} | |
else { | |
backinput () ; | |
a = ( eTeXmode == 1 ) ; | |
} | |
curtok = t ; | |
} | |
else if ( savestack [saveptr ].hh.b0 == 4 ) | |
{ | |
sarestore () ; | |
sachain = p ; | |
salevel = savestack [saveptr ].hh.b1 ; | |
} | |
else { | |
if ( savestack [saveptr ].hh.b0 == 0 ) | |
{ | |
l = savestack [saveptr ].hh.b1 ; | |
decr ( saveptr ) ; | |
} | |
else savestack [saveptr ]= eqtb [2252739L ]; | |
if ( ( p < 8939240L ) || ( p > 10053971L ) ) { | |
if ( eqtb [p ].hh.b1 == 1 ) | |
{ | |
eqdestroy ( savestack [saveptr ]) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939277L ].cint > 0 ) | |
restoretrace ( p , 65869L ) ; | |
#endif /* STAT */ | |
} | |
else { | |
eqdestroy ( eqtb [p ]) ; | |
eqtb [p ]= savestack [saveptr ]; | |
; | |
#ifdef STAT | |
if ( eqtb [8939277L ].cint > 0 ) | |
restoretrace ( p , 65870L ) ; | |
#endif /* STAT */ | |
} | |
} | |
else if ( xeqlevel [p ]!= 1 ) | |
{ | |
eqtb [p ]= savestack [saveptr ]; | |
xeqlevel [p ]= l ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939277L ].cint > 0 ) | |
restoretrace ( p , 65870L ) ; | |
#endif /* STAT */ | |
} | |
else { | |
; | |
#ifdef STAT | |
if ( eqtb [8939277L ].cint > 0 ) | |
restoretrace ( p , 65869L ) ; | |
#endif /* STAT */ | |
} | |
} | |
} | |
lab30: | |
; | |
#ifdef STAT | |
if ( eqtb [8939300L ].cint > 0 ) | |
grouptrace ( true ) ; | |
#endif /* STAT */ | |
if ( grpstack [inopen ]== curboundary ) | |
groupwarning () ; | |
curgroup = savestack [saveptr ].hh.b1 ; | |
curboundary = savestack [saveptr ].hh .v.RH ; | |
if ( ( eTeXmode == 1 ) ) | |
decr ( saveptr ) ; | |
} | |
else confusion ( 65868L ) ; | |
} | |
void | |
preparemag ( void ) | |
{ | |
preparemag_regmem | |
if ( ( magset > 0 ) && ( eqtb [8939257L ].cint != magset ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65872L ) ; | |
} | |
printint ( eqtb [8939257L ].cint ) ; | |
print ( 65873L ) ; | |
printnl ( 65874L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65875L ; | |
helpline [0 ]= 65876L ; | |
} | |
interror ( magset ) ; | |
geqworddefine ( 8939257L , magset ) ; | |
} | |
if ( ( eqtb [8939257L ].cint <= 0 ) || ( eqtb [8939257L ].cint > 32768L | |
) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65877L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 65878L ; | |
} | |
interror ( eqtb [8939257L ].cint ) ; | |
geqworddefine ( 8939257L , 1000 ) ; | |
} | |
magset = eqtb [8939257L ].cint ; | |
} | |
void | |
ztokenshow ( halfword p ) | |
{ | |
tokenshow_regmem | |
if ( p != -268435455L ) | |
showtokenlist ( mem [p ].hh .v.RH , -268435455L , 10000000L ) ; | |
} | |
void | |
printmeaning ( void ) | |
{ | |
printmeaning_regmem | |
printcmdchr ( curcmd , curchr ) ; | |
if ( curcmd >= 113 ) | |
{ | |
printchar ( 58 ) ; | |
println () ; | |
tokenshow ( curchr ) ; | |
} | |
else if ( ( curcmd == 112 ) && ( curchr < 5 ) ) | |
{ | |
printchar ( 58 ) ; | |
println () ; | |
tokenshow ( curmark [curchr ]) ; | |
} | |
} | |
void | |
showcurcmdchr ( void ) | |
{ | |
showcurcmdchr_regmem | |
integer n ; | |
integer l ; | |
halfword p ; | |
begindiagnostic () ; | |
printnl ( 123 ) ; | |
if ( curlist .modefield != shownmode ) | |
{ | |
printmode ( curlist .modefield ) ; | |
print ( 65593L ) ; | |
shownmode = curlist .modefield ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
if ( eqtb [8939301L ].cint > 0 ) { | |
if ( curcmd >= 107 ) { | |
if ( curcmd <= 108 ) | |
{ | |
print ( 65593L ) ; | |
if ( curcmd == 108 ) | |
{ | |
printcmdchr ( 107 , curif ) ; | |
printchar ( 32 ) ; | |
n = 0 ; | |
l = ifline ; | |
} | |
else { | |
n = 1 ; | |
l = line ; | |
} | |
p = condptr ; | |
while ( p != -268435455L ) { | |
incr ( n ) ; | |
p = mem [p ].hh .v.RH ; | |
} | |
print ( 65892L ) ; | |
printint ( n ) ; | |
printchar ( 41 ) ; | |
if ( l != 0 ) | |
{ | |
print ( 66896L ) ; | |
printint ( l ) ; | |
} | |
} | |
} | |
} | |
printchar ( 125 ) ; | |
enddiagnostic ( false ) ; | |
} | |
void | |
showcontext ( void ) | |
{ | |
/* 30 */ showcontext_regmem | |
unsigned char oldsetting ; | |
integer nn ; | |
boolean bottomline ; | |
integer i ; | |
integer j ; | |
integer l ; | |
integer m ; | |
integer n ; | |
integer p ; | |
integer q ; | |
baseptr = inputptr ; | |
inputstack [baseptr ]= curinput ; | |
nn = -1 ; | |
bottomline = false ; | |
while ( true ) { | |
curinput = inputstack [baseptr ]; | |
if ( ( curinput .statefield != 0 ) ) { | |
if ( ( curinput .namefield > 19 ) || ( baseptr == 0 ) ) | |
bottomline = true ; | |
} | |
if ( ( baseptr == inputptr ) || bottomline || ( nn < eqtb [8939294L ] | |
.cint ) ) | |
{ | |
if ( ( baseptr == inputptr ) || ( curinput .statefield != 0 ) || ( | |
curinput .indexfield != 3 ) || ( curinput .locfield != -268435455L ) ) | |
{ | |
tally = 0 ; | |
oldsetting = selector ; | |
if ( curinput .statefield != 0 ) | |
{ | |
if ( curinput .namefield <= 17 ) { | |
if ( ( curinput .namefield == 0 ) ) { | |
if ( baseptr == 0 ) | |
printnl ( 65897L ) ; | |
else printnl ( 65898L ) ; | |
} | |
else { | |
printnl ( 65899L ) ; | |
if ( curinput .namefield == 17 ) | |
printchar ( 42 ) ; | |
else printint ( curinput .namefield - 1 ) ; | |
printchar ( 62 ) ; | |
} | |
} | |
else { | |
printnl ( 65900L ) ; | |
if ( curinput .indexfield == inopen ) | |
printint ( line ) ; | |
else printint ( linestack [curinput .indexfield + 1 ]) ; | |
} | |
printchar ( 32 ) ; | |
{ | |
l = tally ; | |
tally = 0 ; | |
selector = 20 ; | |
trickcount = 1000000L ; | |
} | |
if ( buffer [curinput .limitfield ]== eqtb [8939288L ].cint ) | |
j = curinput .limitfield ; | |
else j = curinput .limitfield + 1 ; | |
if ( j > 0 ) | |
{register integer for_end; i = curinput .startfield ;for_end = j - | |
1 ; if ( i <= for_end) do | |
{ | |
if ( i == curinput .locfield ) | |
{ | |
firstcount = tally ; | |
trickcount = tally + 1 + errorline - halferrorline ; | |
if ( trickcount < errorline ) | |
trickcount = errorline ; | |
} | |
printchar ( buffer [i ]) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
else { | |
switch ( curinput .indexfield ) | |
{case 0 : | |
printnl ( 65901L ) ; | |
break ; | |
case 1 : | |
case 2 : | |
printnl ( 65902L ) ; | |
break ; | |
case 3 : | |
case 4 : | |
if ( curinput .locfield == -268435455L ) | |
printnl ( 65903L ) ; | |
else printnl ( 65904L ) ; | |
break ; | |
case 5 : | |
printnl ( 65905L ) ; | |
break ; | |
case 6 : | |
{ | |
println () ; | |
printcs ( curinput .namefield ) ; | |
} | |
break ; | |
case 7 : | |
printnl ( 65906L ) ; | |
break ; | |
case 8 : | |
printnl ( 65907L ) ; | |
break ; | |
case 9 : | |
printnl ( 65908L ) ; | |
break ; | |
case 10 : | |
printnl ( 65909L ) ; | |
break ; | |
case 11 : | |
printnl ( 65910L ) ; | |
break ; | |
case 12 : | |
printnl ( 65911L ) ; | |
break ; | |
case 13 : | |
printnl ( 65912L ) ; | |
break ; | |
case 14 : | |
printnl ( 65913L ) ; | |
break ; | |
case 15 : | |
printnl ( 65914L ) ; | |
break ; | |
case 16 : | |
printnl ( 65915L ) ; | |
break ; | |
case 17 : | |
printnl ( 65916L ) ; | |
break ; | |
case 18 : | |
printnl ( 65917L ) ; | |
break ; | |
default: | |
printnl ( 63 ) ; | |
break ; | |
} | |
{ | |
l = tally ; | |
tally = 0 ; | |
selector = 20 ; | |
trickcount = 1000000L ; | |
} | |
if ( curinput .indexfield < 6 ) | |
showtokenlist ( curinput .startfield , curinput .locfield , 100000L | |
) ; | |
else showtokenlist ( mem [curinput .startfield ].hh .v.RH , | |
curinput .locfield , 100000L ) ; | |
} | |
selector = oldsetting ; | |
if ( trickcount == 1000000L ) | |
{ | |
firstcount = tally ; | |
trickcount = tally + 1 + errorline - halferrorline ; | |
if ( trickcount < errorline ) | |
trickcount = errorline ; | |
} | |
if ( tally < trickcount ) | |
m = tally - firstcount ; | |
else m = trickcount - firstcount ; | |
if ( l + firstcount <= halferrorline ) | |
{ | |
p = 0 ; | |
n = l + firstcount ; | |
} | |
else { | |
print ( 65557L ) ; | |
p = l + firstcount - halferrorline + 3 ; | |
n = halferrorline ; | |
} | |
{register integer for_end; q = p ;for_end = firstcount - 1 ; if ( q | |
<= for_end) do | |
printchar ( trickbuf [q % errorline ]) ; | |
while ( q++ < for_end ) ;} | |
println () ; | |
{register integer for_end; q = 1 ;for_end = n ; if ( q <= for_end) | |
do | |
printrawchar ( 32 , true ) ; | |
while ( q++ < for_end ) ;} | |
if ( m + n <= errorline ) | |
p = firstcount + m ; | |
else p = firstcount + ( errorline - n - 3 ) ; | |
{register integer for_end; q = firstcount ;for_end = p - 1 ; if ( q | |
<= for_end) do | |
printchar ( trickbuf [q % errorline ]) ; | |
while ( q++ < for_end ) ;} | |
if ( m + n > errorline ) | |
print ( 65557L ) ; | |
incr ( nn ) ; | |
} | |
} | |
else if ( nn == eqtb [8939294L ].cint ) | |
{ | |
printnl ( 65557L ) ; | |
incr ( nn ) ; | |
} | |
if ( bottomline ) | |
goto lab30 ; | |
decr ( baseptr ) ; | |
} | |
lab30: curinput = inputstack [inputptr ]; | |
} | |
void | |
zbegintokenlist ( halfword p , quarterword t ) | |
{ | |
begintokenlist_regmem | |
{ | |
if ( inputptr > maxinstack ) | |
{ | |
maxinstack = inputptr ; | |
if ( inputptr == stacksize ) | |
overflow ( 65918L , stacksize ) ; | |
} | |
inputstack [inputptr ]= curinput ; | |
incr ( inputptr ) ; | |
} | |
curinput .statefield = 0 ; | |
curinput .startfield = p ; | |
curinput .indexfield = t ; | |
if ( t >= 6 ) | |
{ | |
incr ( mem [p ].hh .v.LH ) ; | |
if ( t == 6 ) | |
curinput .limitfield = paramptr ; | |
else { | |
curinput .locfield = mem [p ].hh .v.RH ; | |
if ( eqtb [8939270L ].cint > 1 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 65626L ) ; | |
switch ( t ) | |
{case 15 : | |
printesc ( 65641L ) ; | |
break ; | |
case 18 : | |
printesc ( 65919L ) ; | |
break ; | |
default: | |
printcmdchr ( 73 , t + 2253265L ) ; | |
break ; | |
} | |
print ( 65880L ) ; | |
tokenshow ( p ) ; | |
enddiagnostic ( false ) ; | |
} | |
} | |
} | |
else curinput .locfield = p ; | |
} | |
void | |
endtokenlist ( void ) | |
{ | |
endtokenlist_regmem | |
if ( curinput .indexfield >= 3 ) | |
{ | |
if ( curinput .indexfield <= 5 ) | |
flushlist ( curinput .startfield ) ; | |
else { | |
deletetokenref ( curinput .startfield ) ; | |
if ( curinput .indexfield == 6 ) | |
while ( paramptr > curinput .limitfield ) { | |
decr ( paramptr ) ; | |
flushlist ( paramstack [paramptr ]) ; | |
} | |
} | |
} | |
else if ( curinput .indexfield == 1 ) { | |
if ( alignstate > 500000L ) | |
alignstate = 0 ; | |
else fatalerror ( 65920L ) ; | |
} | |
{ | |
decr ( inputptr ) ; | |
curinput = inputstack [inputptr ]; | |
} | |
{ | |
if ( interrupt != 0 ) | |
pauseforinstructions () ; | |
} | |
} | |
void | |
backinput ( void ) | |
{ | |
backinput_regmem | |
halfword p ; | |
while ( ( curinput .statefield == 0 ) && ( curinput .locfield == -268435455L | |
) && ( curinput .indexfield != 2 ) ) endtokenlist () ; | |
p = getavail () ; | |
mem [p ].hh .v.LH = curtok ; | |
if ( curtok < 6291456L ) { | |
if ( curtok < 4194304L ) | |
decr ( alignstate ) ; | |
else incr ( alignstate ) ; | |
} | |
{ | |
if ( inputptr > maxinstack ) | |
{ | |
maxinstack = inputptr ; | |
if ( inputptr == stacksize ) | |
overflow ( 65918L , stacksize ) ; | |
} | |
inputstack [inputptr ]= curinput ; | |
incr ( inputptr ) ; | |
} | |
curinput .statefield = 0 ; | |
curinput .startfield = p ; | |
curinput .indexfield = 3 ; | |
curinput .locfield = p ; | |
} | |
void | |
backerror ( void ) | |
{ | |
backerror_regmem | |
OKtointerrupt = false ; | |
backinput () ; | |
OKtointerrupt = true ; | |
error () ; | |
} | |
void | |
inserror ( void ) | |
{ | |
inserror_regmem | |
OKtointerrupt = false ; | |
backinput () ; | |
curinput .indexfield = 5 ; | |
OKtointerrupt = true ; | |
error () ; | |
} | |
void | |
beginfilereading ( void ) | |
{ | |
beginfilereading_regmem | |
if ( inopen == maxinopen ) | |
overflow ( 65921L , maxinopen ) ; | |
if ( first == bufsize ) | |
overflow ( 65538L , bufsize ) ; | |
incr ( inopen ) ; | |
{ | |
if ( inputptr > maxinstack ) | |
{ | |
maxinstack = inputptr ; | |
if ( inputptr == stacksize ) | |
overflow ( 65918L , stacksize ) ; | |
} | |
inputstack [inputptr ]= curinput ; | |
incr ( inputptr ) ; | |
} | |
curinput .indexfield = inopen ; | |
sourcefilenamestack [curinput .indexfield ]= 0 ; | |
fullsourcefilenamestack [curinput .indexfield ]= 0 ; | |
eofseen [curinput .indexfield ]= false ; | |
grpstack [curinput .indexfield ]= curboundary ; | |
ifstack [curinput .indexfield ]= condptr ; | |
linestack [curinput .indexfield ]= line ; | |
curinput .startfield = first ; | |
curinput .statefield = 1 ; | |
curinput .namefield = 0 ; | |
curinput .synctextagfield = 0 ; | |
} | |
void | |
endfilereading ( void ) | |
{ | |
endfilereading_regmem | |
first = curinput .startfield ; | |
line = linestack [curinput .indexfield ]; | |
if ( ( curinput .namefield == 18 ) || ( curinput .namefield == 19 ) ) | |
pseudoclose () ; | |
else if ( curinput .namefield > 17 ) | |
uclose ( inputfile [curinput .indexfield ]) ; | |
{ | |
decr ( inputptr ) ; | |
curinput = inputstack [inputptr ]; | |
} | |
decr ( inopen ) ; | |
} | |
void | |
clearforerrorprompt ( void ) | |
{ | |
clearforerrorprompt_regmem | |
while ( ( curinput .statefield != 0 ) && ( curinput .namefield == 0 ) && ( | |
inputptr > 0 ) && ( curinput .locfield > curinput .limitfield ) ) | |
endfilereading () ; | |
println () ; | |
} | |
void | |
checkoutervalidity ( void ) | |
{ | |
checkoutervalidity_regmem | |
halfword p ; | |
halfword q ; | |
if ( scannerstatus != 0 ) | |
{ | |
deletionsallowed = false ; | |
if ( curcs != 0 ) | |
{ | |
if ( ( curinput .statefield == 0 ) || ( curinput .namefield < 1 ) || ( | |
curinput .namefield > 17 ) ) | |
{ | |
p = getavail () ; | |
mem [p ].hh .v.LH = 33554431L + curcs ; | |
begintokenlist ( p , 3 ) ; | |
} | |
curcmd = 10 ; | |
curchr = 32 ; | |
} | |
if ( scannerstatus > 1 ) | |
{ | |
runaway () ; | |
if ( curcs == 0 ) | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65929L ) ; | |
} | |
else { | |
curcs = 0 ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65930L ) ; | |
} | |
} | |
p = getavail () ; | |
switch ( scannerstatus ) | |
{case 2 : | |
{ | |
print ( 65936L ) ; | |
mem [p ].hh .v.LH = 4194429L ; | |
} | |
break ; | |
case 3 : | |
{ | |
print ( 65937L ) ; | |
mem [p ].hh .v.LH = partoken ; | |
longstate = 115 ; | |
} | |
break ; | |
case 4 : | |
{ | |
print ( 65938L ) ; | |
mem [p ].hh .v.LH = 4194429L ; | |
q = p ; | |
p = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [p ].hh .v.LH = 35797658L ; | |
alignstate = -1000000L ; | |
} | |
break ; | |
case 5 : | |
{ | |
print ( 65939L ) ; | |
mem [p ].hh .v.LH = 4194429L ; | |
} | |
break ; | |
} | |
begintokenlist ( p , 5 ) ; | |
print ( 65931L ) ; | |
sprintcs ( warningindex ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 65932L ; | |
helpline [2 ]= 65933L ; | |
helpline [1 ]= 65934L ; | |
helpline [0 ]= 65935L ; | |
} | |
error () ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65923L ) ; | |
} | |
printcmdchr ( 107 , curif ) ; | |
print ( 65924L ) ; | |
printint ( skipline ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 65925L ; | |
helpline [1 ]= 65926L ; | |
helpline [0 ]= 65927L ; | |
} | |
if ( curcs != 0 ) | |
curcs = 0 ; | |
else helpline [2 ]= 65928L ; | |
curtok = 35797661L ; | |
inserror () ; | |
} | |
deletionsallowed = true ; | |
} | |
} | |
void | |
getnext ( void ) | |
{ | |
/* 20 25 21 26 40 27 10 */ getnext_regmem | |
integer k ; | |
halfword t ; | |
unsigned char cat ; | |
UnicodeScalar c ; | |
UTF16code lower ; | |
smallnumber d ; | |
smallnumber supcount ; | |
lab20: curcs = 0 ; | |
if ( curinput .statefield != 0 ) | |
{ | |
lab25: if ( curinput .locfield <= curinput .limitfield ) | |
{ | |
curchr = buffer [curinput .locfield ]; | |
incr ( curinput .locfield ) ; | |
if ( ( curchr >= 55296L ) && ( curchr < 56320L ) && ( curinput .locfield | |
<= curinput .limitfield ) && ( buffer [curinput .locfield ]>= 56320L ) | |
&& ( buffer [curinput .locfield ]< 57344L ) ) | |
{ | |
lower = buffer [curinput .locfield ]- 56320L ; | |
incr ( curinput .locfield ) ; | |
curchr = 65536L + ( curchr - 55296L ) * 1024 + lower ; | |
} | |
lab21: curcmd = eqtb [2254568L + curchr ].hh .v.RH ; | |
switch ( curinput .statefield + curcmd ) | |
{case 10 : | |
case 26 : | |
case 42 : | |
case 27 : | |
case 43 : | |
goto lab25 ; | |
break ; | |
case 1 : | |
case 17 : | |
case 33 : | |
{ | |
if ( curinput .locfield > curinput .limitfield ) | |
curcs = 2228225L ; | |
else { | |
lab26: k = curinput .locfield ; | |
curchr = buffer [k ]; | |
cat = eqtb [2254568L + curchr ].hh .v.RH ; | |
incr ( k ) ; | |
if ( cat == 11 ) | |
curinput .statefield = 17 ; | |
else if ( cat == 10 ) | |
curinput .statefield = 17 ; | |
else curinput .statefield = 1 ; | |
if ( ( cat == 11 ) && ( k <= curinput .limitfield ) ) | |
{ | |
do { | |
curchr = buffer [k ]; | |
cat = eqtb [2254568L + curchr ].hh .v.RH ; | |
incr ( k ) ; | |
} while ( ! ( ( cat != 11 ) || ( k > curinput .limitfield ) ) ) | |
; | |
{ | |
if ( ( cat == 7 ) && ( buffer [k ]== curchr ) && ( k < | |
curinput .limitfield ) ) | |
{ | |
supcount = 2 ; | |
while ( ( supcount < 6 ) && ( k + 2 * supcount - 2 <= | |
curinput .limitfield ) && ( buffer [k + supcount - 1 ]== | |
curchr ) ) incr ( supcount ) ; | |
{register integer for_end; d = 1 ;for_end = supcount | |
; if ( d <= for_end) do | |
if ( ! ( ( ( buffer [k + supcount - 2 + d ]>= 48 ) && ( | |
buffer [k + supcount - 2 + d ]<= 57 ) ) || ( ( buffer [ | |
k + supcount - 2 + d ]>= 97 ) && ( buffer [k + supcount | |
- 2 + d ]<= 102 ) ) ) ) | |
{ | |
c = buffer [k + 1 ]; | |
if ( c < 128 ) | |
{ | |
if ( c < 64 ) | |
buffer [k - 1 ]= c + 64 ; | |
else buffer [k - 1 ]= c - 64 ; | |
d = 2 ; | |
curinput .limitfield = curinput .limitfield - d ; | |
while ( k <= curinput .limitfield ) { | |
buffer [k ]= buffer [k + d ]; | |
incr ( k ) ; | |
} | |
goto lab26 ; | |
} | |
else supcount = 0 ; | |
} | |
while ( d++ < for_end ) ;} | |
if ( supcount > 0 ) | |
{ | |
curchr = 0 ; | |
{register integer for_end; d = 1 ;for_end = supcount | |
; if ( d <= for_end) do | |
{ | |
c = buffer [k + supcount - 2 + d ]; | |
if ( c <= 57 ) | |
curchr = 16 * curchr + c - 48 ; | |
else curchr = 16 * curchr + c - 87 ; | |
} | |
while ( d++ < for_end ) ;} | |
if ( curchr > 1114111L ) | |
curchr = buffer [k ]; | |
else { | |
buffer [k - 1 ]= curchr ; | |
d = 2 * supcount - 1 ; | |
curinput .limitfield = curinput .limitfield - d ; | |
while ( k <= curinput .limitfield ) { | |
buffer [k ]= buffer [k + d ]; | |
incr ( k ) ; | |
} | |
goto lab26 ; | |
} | |
} | |
} | |
} | |
if ( cat != 11 ) | |
decr ( k ) ; | |
if ( k > curinput .locfield + 1 ) | |
{ | |
curcs = idlookup ( curinput .locfield , k - curinput .locfield | |
) ; | |
curinput .locfield = k ; | |
goto lab40 ; | |
} | |
} | |
else { | |
if ( ( cat == 7 ) && ( buffer [k ]== curchr ) && ( k < | |
curinput .limitfield ) ) | |
{ | |
supcount = 2 ; | |
while ( ( supcount < 6 ) && ( k + 2 * supcount - 2 <= curinput | |
.limitfield ) && ( buffer [k + supcount - 1 ]== curchr ) ) | |
incr ( supcount ) ; | |
{register integer for_end; d = 1 ;for_end = supcount ; if ( | |
d <= for_end) do | |
if ( ! ( ( ( buffer [k + supcount - 2 + d ]>= 48 ) && ( | |
buffer [k + supcount - 2 + d ]<= 57 ) ) || ( ( buffer [k | |
+ supcount - 2 + d ]>= 97 ) && ( buffer [k + supcount - 2 | |
+ d ]<= 102 ) ) ) ) | |
{ | |
c = buffer [k + 1 ]; | |
if ( c < 128 ) | |
{ | |
if ( c < 64 ) | |
buffer [k - 1 ]= c + 64 ; | |
else buffer [k - 1 ]= c - 64 ; | |
d = 2 ; | |
curinput .limitfield = curinput .limitfield - d ; | |
while ( k <= curinput .limitfield ) { | |
buffer [k ]= buffer [k + d ]; | |
incr ( k ) ; | |
} | |
goto lab26 ; | |
} | |
else supcount = 0 ; | |
} | |
while ( d++ < for_end ) ;} | |
if ( supcount > 0 ) | |
{ | |
curchr = 0 ; | |
{register integer for_end; d = 1 ;for_end = supcount | |
; if ( d <= for_end) do | |
{ | |
c = buffer [k + supcount - 2 + d ]; | |
if ( c <= 57 ) | |
curchr = 16 * curchr + c - 48 ; | |
else curchr = 16 * curchr + c - 87 ; | |
} | |
while ( d++ < for_end ) ;} | |
if ( curchr > 1114111L ) | |
curchr = buffer [k ]; | |
else { | |
buffer [k - 1 ]= curchr ; | |
d = 2 * supcount - 1 ; | |
curinput .limitfield = curinput .limitfield - d ; | |
while ( k <= curinput .limitfield ) { | |
buffer [k ]= buffer [k + d ]; | |
incr ( k ) ; | |
} | |
goto lab26 ; | |
} | |
} | |
} | |
} | |
if ( buffer [curinput .locfield ]> 65535L ) | |
{ | |
curcs = idlookup ( curinput .locfield , 1 ) ; | |
incr ( curinput .locfield ) ; | |
goto lab40 ; | |
} | |
curcs = 1114113L + buffer [curinput .locfield ]; | |
incr ( curinput .locfield ) ; | |
} | |
lab40: curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
if ( curcmd >= 115 ) | |
checkoutervalidity () ; | |
} | |
break ; | |
case 14 : | |
case 30 : | |
case 46 : | |
{ | |
curcs = curchr + 1 ; | |
curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
curinput .statefield = 1 ; | |
if ( curcmd >= 115 ) | |
checkoutervalidity () ; | |
} | |
break ; | |
case 8 : | |
case 24 : | |
case 40 : | |
{ | |
if ( curchr == buffer [curinput .locfield ]) { | |
if ( curinput .locfield < curinput .limitfield ) | |
{ | |
supcount = 2 ; | |
while ( ( supcount < 6 ) && ( curinput .locfield + 2 * supcount | |
- 2 <= curinput .limitfield ) && ( curchr == buffer [curinput | |
.locfield + supcount - 1 ]) ) incr ( supcount ) ; | |
{register integer for_end; d = 1 ;for_end = supcount ; if ( d | |
<= for_end) do | |
if ( ! ( ( ( buffer [curinput .locfield + supcount - 2 + d ] | |
>= 48 ) && ( buffer [curinput .locfield + supcount - 2 + d ] | |
<= 57 ) ) || ( ( buffer [curinput .locfield + supcount - 2 + | |
d ]>= 97 ) && ( buffer [curinput .locfield + supcount - 2 + | |
d ]<= 102 ) ) ) ) | |
{ | |
c = buffer [curinput .locfield + 1 ]; | |
if ( c < 128 ) | |
{ | |
curinput .locfield = curinput .locfield + 2 ; | |
if ( c < 64 ) | |
curchr = c + 64 ; | |
else curchr = c - 64 ; | |
goto lab21 ; | |
} | |
goto lab27 ; | |
} | |
while ( d++ < for_end ) ;} | |
curchr = 0 ; | |
{register integer for_end; d = 1 ;for_end = supcount ; if ( d | |
<= for_end) do | |
{ | |
c = buffer [curinput .locfield + supcount - 2 + d ]; | |
if ( c <= 57 ) | |
curchr = 16 * curchr + c - 48 ; | |
else curchr = 16 * curchr + c - 87 ; | |
} | |
while ( d++ < for_end ) ;} | |
if ( curchr > 1114111L ) | |
{ | |
curchr = buffer [curinput .locfield ]; | |
goto lab27 ; | |
} | |
curinput .locfield = curinput .locfield + 2 * supcount - 1 ; | |
goto lab21 ; | |
} | |
} | |
lab27: curinput .statefield = 1 ; | |
} | |
break ; | |
case 16 : | |
case 32 : | |
case 48 : | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65940L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65941L ; | |
helpline [0 ]= 65942L ; | |
} | |
deletionsallowed = false ; | |
error () ; | |
deletionsallowed = true ; | |
goto lab20 ; | |
} | |
break ; | |
case 11 : | |
{ | |
curinput .statefield = 17 ; | |
curchr = 32 ; | |
} | |
break ; | |
case 6 : | |
{ | |
curinput .locfield = curinput .limitfield + 1 ; | |
curcmd = 10 ; | |
curchr = 32 ; | |
} | |
break ; | |
case 22 : | |
case 15 : | |
case 31 : | |
case 47 : | |
{ | |
curinput .locfield = curinput .limitfield + 1 ; | |
goto lab25 ; | |
} | |
break ; | |
case 38 : | |
{ | |
curinput .locfield = curinput .limitfield + 1 ; | |
curcs = parloc ; | |
curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
if ( curcmd >= 115 ) | |
checkoutervalidity () ; | |
} | |
break ; | |
case 2 : | |
incr ( alignstate ) ; | |
break ; | |
case 18 : | |
case 34 : | |
{ | |
curinput .statefield = 1 ; | |
incr ( alignstate ) ; | |
} | |
break ; | |
case 3 : | |
decr ( alignstate ) ; | |
break ; | |
case 19 : | |
case 35 : | |
{ | |
curinput .statefield = 1 ; | |
decr ( alignstate ) ; | |
} | |
break ; | |
case 20 : | |
case 21 : | |
case 23 : | |
case 25 : | |
case 28 : | |
case 29 : | |
case 36 : | |
case 37 : | |
case 39 : | |
case 41 : | |
case 44 : | |
case 45 : | |
curinput .statefield = 1 ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
else { | |
curinput .statefield = 33 ; | |
if ( curinput .namefield > 17 ) | |
{ | |
incr ( line ) ; | |
first = curinput .startfield ; | |
if ( ! forceeof ) { | |
if ( curinput .namefield <= 19 ) | |
{ | |
if ( pseudoinput () ) | |
firmuptheline () ; | |
else if ( ( eqtb [2253281L ].hh .v.RH != -268435455L ) && ! | |
eofseen [curinput .indexfield ]) | |
{ | |
curinput .limitfield = first - 1 ; | |
eofseen [curinput .indexfield ]= true ; | |
begintokenlist ( eqtb [2253281L ].hh .v.RH , 16 ) ; | |
goto lab20 ; | |
} | |
else forceeof = true ; | |
} | |
else { | |
if ( inputln ( inputfile [curinput .indexfield ], true ) ) | |
firmuptheline () ; | |
else if ( ( eqtb [2253281L ].hh .v.RH != -268435455L ) && ! | |
eofseen [curinput .indexfield ]) | |
{ | |
curinput .limitfield = first - 1 ; | |
eofseen [curinput .indexfield ]= true ; | |
begintokenlist ( eqtb [2253281L ].hh .v.RH , 16 ) ; | |
goto lab20 ; | |
} | |
else forceeof = true ; | |
} | |
} | |
if ( forceeof ) | |
{ | |
if ( eqtb [8939303L ].cint > 0 ) { | |
if ( ( grpstack [inopen ]!= curboundary ) || ( ifstack [inopen | |
]!= condptr ) ) | |
filewarning () ; | |
} | |
if ( curinput .namefield >= 19 ) | |
{ | |
printchar ( 41 ) ; | |
decr ( openparens ) ; | |
fflush ( stdout ) ; | |
} | |
forceeof = false ; | |
endfilereading () ; | |
checkoutervalidity () ; | |
goto lab20 ; | |
} | |
if ( ( eqtb [8939288L ].cint < 0 ) || ( eqtb [8939288L ].cint > | |
255 ) ) | |
decr ( curinput .limitfield ) ; | |
else buffer [curinput .limitfield ]= eqtb [8939288L ].cint ; | |
first = curinput .limitfield + 1 ; | |
curinput .locfield = curinput .startfield ; | |
} | |
else { | |
if ( ! ( curinput .namefield == 0 ) ) | |
{ | |
curcmd = 0 ; | |
curchr = 0 ; | |
return ; | |
} | |
if ( inputptr > 0 ) | |
{ | |
endfilereading () ; | |
goto lab20 ; | |
} | |
if ( selector < 18 ) | |
openlogfile () ; | |
if ( interaction > 1 ) | |
{ | |
if ( ( eqtb [8939288L ].cint < 0 ) || ( eqtb [8939288L ].cint > | |
255 ) ) | |
incr ( curinput .limitfield ) ; | |
if ( curinput .limitfield == curinput .startfield ) | |
printnl ( 65943L ) ; | |
println () ; | |
first = curinput .startfield ; | |
{ | |
; | |
print ( 42 ) ; | |
terminput () ; | |
} | |
curinput .limitfield = last ; | |
if ( ( eqtb [8939288L ].cint < 0 ) || ( eqtb [8939288L ].cint > | |
255 ) ) | |
decr ( curinput .limitfield ) ; | |
else buffer [curinput .limitfield ]= eqtb [8939288L ].cint ; | |
first = curinput .limitfield + 1 ; | |
curinput .locfield = curinput .startfield ; | |
} | |
else fatalerror ( 65944L ) ; | |
} | |
{ | |
if ( interrupt != 0 ) | |
pauseforinstructions () ; | |
} | |
goto lab25 ; | |
} | |
} | |
else if ( curinput .locfield != -268435455L ) | |
{ | |
t = mem [curinput .locfield ].hh .v.LH ; | |
curinput .locfield = mem [curinput .locfield ].hh .v.RH ; | |
if ( t >= 33554431L ) | |
{ | |
curcs = t - 33554431L ; | |
curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
if ( curcmd >= 115 ) { | |
if ( curcmd == 118 ) | |
{ | |
curcs = mem [curinput .locfield ].hh .v.LH - 33554431L ; | |
curinput .locfield = -268435455L ; | |
curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
if ( curcmd > 102 ) | |
{ | |
curcmd = 0 ; | |
curchr = 1114113L ; | |
} | |
} | |
else checkoutervalidity () ; | |
} | |
} | |
else { | |
curcmd = t / 2097152L ; | |
curchr = t % 2097152L ; | |
switch ( curcmd ) | |
{case 1 : | |
incr ( alignstate ) ; | |
break ; | |
case 2 : | |
decr ( alignstate ) ; | |
break ; | |
case 5 : | |
{ | |
begintokenlist ( paramstack [curinput .limitfield + curchr - 1 ], | |
0 ) ; | |
goto lab20 ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
} | |
else { | |
endtokenlist () ; | |
goto lab20 ; | |
} | |
if ( curcmd <= 5 ) { | |
if ( curcmd >= 4 ) { | |
if ( alignstate == 0 ) | |
{ | |
if ( ( scannerstatus == 4 ) || ( curalign == -268435455L ) ) | |
fatalerror ( 65920L ) ; | |
curcmd = mem [curalign + 5 ].hh .v.LH ; | |
mem [curalign + 5 ].hh .v.LH = curchr ; | |
if ( curcmd == 63 ) | |
begintokenlist ( memtop - 10 , 2 ) ; | |
else begintokenlist ( mem [curalign + 2 ].cint , 2 ) ; | |
alignstate = 1000000L ; | |
goto lab20 ; | |
} | |
} | |
} | |
} | |
void | |
firmuptheline ( void ) | |
{ | |
firmuptheline_regmem | |
integer k ; | |
curinput .limitfield = last ; | |
if ( eqtb [8939268L ].cint > 0 ) { | |
if ( interaction > 1 ) | |
{ | |
; | |
println () ; | |
if ( curinput .startfield < curinput .limitfield ) | |
{register integer for_end; k = curinput .startfield ;for_end = | |
curinput .limitfield - 1 ; if ( k <= for_end) do | |
print ( buffer [k ]) ; | |
while ( k++ < for_end ) ;} | |
first = curinput .limitfield ; | |
{ | |
; | |
print ( 65945L ) ; | |
terminput () ; | |
} | |
if ( last > first ) | |
{ | |
{register integer for_end; k = first ;for_end = last - 1 ; if ( k <= | |
for_end) do | |
buffer [k + curinput .startfield - first ]= buffer [k ]; | |
while ( k++ < for_end ) ;} | |
curinput .limitfield = curinput .startfield + last - first ; | |
} | |
} | |
} | |
} | |
void | |
gettoken ( void ) | |
{ | |
gettoken_regmem | |
nonewcontrolsequence = false ; | |
getnext () ; | |
nonewcontrolsequence = true ; | |
if ( curcs == 0 ) | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
else curtok = 33554431L + curcs ; | |
} | |
void | |
macrocall ( void ) | |
{ | |
/* 10 22 30 31 40 */ macrocall_regmem | |
halfword r ; | |
halfword p ; | |
halfword q ; | |
halfword s ; | |
halfword t ; | |
halfword u, v ; | |
halfword rbraceptr ; | |
smallnumber n ; | |
halfword unbalance ; | |
halfword m ; | |
halfword refcount ; | |
smallnumber savescannerstatus ; | |
halfword savewarningindex ; | |
UTF16code matchchr ; | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
warningindex = curcs ; | |
refcount = curchr ; | |
r = mem [refcount ].hh .v.RH ; | |
n = 0 ; | |
if ( eqtb [8939270L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
if ( eqtb [8939298L ].cint > 0 ) { | |
if ( inputptr < eqtb [8939298L ].cint ) | |
{ | |
v = inputptr ; | |
println () ; | |
printchar ( 126 ) ; | |
while ( v > 0 ) { | |
printchar ( 46 ) ; | |
decr ( v ) ; | |
} | |
printcs ( warningindex ) ; | |
tokenshow ( refcount ) ; | |
} | |
else { | |
printchar ( 126 ) ; | |
printchar ( 126 ) ; | |
printcs ( warningindex ) ; | |
} | |
} | |
else { | |
println () ; | |
printcs ( warningindex ) ; | |
tokenshow ( refcount ) ; | |
} | |
enddiagnostic ( false ) ; | |
} | |
if ( mem [r ].hh .v.LH == 29360129L ) | |
r = mem [r ].hh .v.RH ; | |
if ( mem [r ].hh .v.LH != 29360128L ) | |
{ | |
scannerstatus = 3 ; | |
unbalance = 0 ; | |
longstate = eqtb [curcs ].hh.b0 ; | |
if ( longstate >= 115 ) | |
longstate = longstate - 2 ; | |
do { | |
mem [memtop - 3 ].hh .v.RH = -268435455L ; | |
if ( ( mem [r ].hh .v.LH >= 29360128L ) || ( mem [r ].hh .v.LH < | |
27262976L ) ) | |
s = -268435455L ; | |
else { | |
matchchr = mem [r ].hh .v.LH - 27262976L ; | |
s = mem [r ].hh .v.RH ; | |
r = s ; | |
p = memtop - 3 ; | |
m = 0 ; | |
} | |
lab22: gettoken () ; | |
if ( curtok == mem [r ].hh .v.LH ) | |
{ | |
r = mem [r ].hh .v.RH ; | |
if ( ( mem [r ].hh .v.LH >= 27262976L ) && ( mem [r ].hh .v.LH <= | |
29360128L ) ) | |
{ | |
if ( curtok < 4194304L ) | |
decr ( alignstate ) ; | |
goto lab40 ; | |
} | |
else goto lab22 ; | |
} | |
if ( s != r ) { | |
if ( s == -268435455L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65978L ) ; | |
} | |
sprintcs ( warningindex ) ; | |
print ( 65979L ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 65980L ; | |
helpline [2 ]= 65981L ; | |
helpline [1 ]= 65982L ; | |
helpline [0 ]= 65983L ; | |
} | |
error () ; | |
goto lab10 ; | |
} | |
else { | |
t = s ; | |
do { | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = mem [t ].hh .v.LH ; | |
p = q ; | |
} | |
incr ( m ) ; | |
u = mem [t ].hh .v.RH ; | |
v = s ; | |
while ( true ) { | |
if ( u == r ) { | |
if ( curtok != mem [v ].hh .v.LH ) | |
goto lab30 ; | |
else { | |
r = mem [v ].hh .v.RH ; | |
goto lab22 ; | |
} | |
} | |
if ( mem [u ].hh .v.LH != mem [v ].hh .v.LH ) | |
goto lab30 ; | |
u = mem [u ].hh .v.RH ; | |
v = mem [v ].hh .v.RH ; | |
} | |
lab30: t = mem [t ].hh .v.RH ; | |
} while ( ! ( t == r ) ) ; | |
r = s ; | |
} | |
} | |
if ( curtok == partoken ) { | |
if ( longstate != 114 ) | |
{ | |
if ( longstate == 113 ) | |
{ | |
runaway () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65973L ) ; | |
} | |
sprintcs ( warningindex ) ; | |
print ( 65974L ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 65975L ; | |
helpline [1 ]= 65976L ; | |
helpline [0 ]= 65977L ; | |
} | |
backerror () ; | |
} | |
pstack [n ]= mem [memtop - 3 ].hh .v.RH ; | |
alignstate = alignstate - unbalance ; | |
{register integer for_end; m = 0 ;for_end = n ; if ( m <= for_end) | |
do | |
flushlist ( pstack [m ]) ; | |
while ( m++ < for_end ) ;} | |
goto lab10 ; | |
} | |
} | |
if ( curtok < 6291456L ) { | |
if ( curtok < 4194304L ) | |
{ | |
unbalance = 1 ; | |
while ( true ) { | |
{ | |
{ | |
q = avail ; | |
if ( q == -268435455L ) | |
q = getavail () ; | |
else { | |
avail = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
incr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
gettoken () ; | |
if ( curtok == partoken ) { | |
if ( longstate != 114 ) | |
{ | |
if ( longstate == 113 ) | |
{ | |
runaway () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65973L ) ; | |
} | |
sprintcs ( warningindex ) ; | |
print ( 65974L ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 65975L ; | |
helpline [1 ]= 65976L ; | |
helpline [0 ]= 65977L ; | |
} | |
backerror () ; | |
} | |
pstack [n ]= mem [memtop - 3 ].hh .v.RH ; | |
alignstate = alignstate - unbalance ; | |
{register integer for_end; m = 0 ;for_end = n ; if ( m <= | |
for_end) do | |
flushlist ( pstack [m ]) ; | |
while ( m++ < for_end ) ;} | |
goto lab10 ; | |
} | |
} | |
if ( curtok < 6291456L ) { | |
if ( curtok < 4194304L ) | |
incr ( unbalance ) ; | |
else { | |
decr ( unbalance ) ; | |
if ( unbalance == 0 ) | |
goto lab31 ; | |
} | |
} | |
} | |
lab31: rbraceptr = p ; | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
else { | |
backinput () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65965L ) ; | |
} | |
sprintcs ( warningindex ) ; | |
print ( 65966L ) ; | |
{ | |
helpptr = 6 ; | |
helpline [5 ]= 65967L ; | |
helpline [4 ]= 65968L ; | |
helpline [3 ]= 65969L ; | |
helpline [2 ]= 65970L ; | |
helpline [1 ]= 65971L ; | |
helpline [0 ]= 65972L ; | |
} | |
incr ( alignstate ) ; | |
longstate = 113 ; | |
curtok = partoken ; | |
inserror () ; | |
goto lab22 ; | |
} | |
} | |
else { | |
if ( curtok == 20971552L ) { | |
if ( mem [r ].hh .v.LH <= 29360128L ) { | |
if ( mem [r ].hh .v.LH >= 27262976L ) | |
goto lab22 ; | |
} | |
} | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
incr ( m ) ; | |
if ( mem [r ].hh .v.LH > 29360128L ) | |
goto lab22 ; | |
if ( mem [r ].hh .v.LH < 27262976L ) | |
goto lab22 ; | |
lab40: if ( s != -268435455L ) | |
{ | |
if ( ( m == 1 ) && ( mem [p ].hh .v.LH < 6291456L ) ) | |
{ | |
mem [rbraceptr ].hh .v.RH = -268435455L ; | |
{ | |
mem [p ].hh .v.RH = avail ; | |
avail = p ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
p = mem [memtop - 3 ].hh .v.RH ; | |
pstack [n ]= mem [p ].hh .v.RH ; | |
{ | |
mem [p ].hh .v.RH = avail ; | |
avail = p ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
else pstack [n ]= mem [memtop - 3 ].hh .v.RH ; | |
incr ( n ) ; | |
if ( eqtb [8939270L ].cint > 0 ) { | |
if ( ( eqtb [8939298L ].cint == 0 ) || ( inputptr < eqtb [ | |
8939298L ].cint ) ) | |
{ | |
begindiagnostic () ; | |
printnl ( matchchr ) ; | |
printint ( n ) ; | |
print ( 65984L ) ; | |
showtokenlist ( pstack [n - 1 ], -268435455L , 1000 ) ; | |
enddiagnostic ( false ) ; | |
} | |
} | |
} | |
} while ( ! ( mem [r ].hh .v.LH == 29360128L ) ) ; | |
} | |
while ( ( curinput .statefield == 0 ) && ( curinput .locfield == -268435455L | |
) && ( curinput .indexfield != 2 ) ) endtokenlist () ; | |
begintokenlist ( refcount , 6 ) ; | |
curinput .namefield = warningindex ; | |
curinput .locfield = mem [r ].hh .v.RH ; | |
if ( n > 0 ) | |
{ | |
if ( paramptr + n > maxparamstack ) | |
{ | |
maxparamstack = paramptr + n ; | |
if ( maxparamstack > paramsize ) | |
overflow ( 65964L , paramsize ) ; | |
} | |
{register integer for_end; m = 0 ;for_end = n - 1 ; if ( m <= for_end) | |
do | |
paramstack [paramptr + m ]= pstack [m ]; | |
while ( m++ < for_end ) ;} | |
paramptr = paramptr + n ; | |
} | |
lab10: scannerstatus = savescannerstatus ; | |
warningindex = savewarningindex ; | |
} | |
void | |
insertrelax ( void ) | |
{ | |
insertrelax_regmem | |
curtok = 33554431L + curcs ; | |
backinput () ; | |
curtok = 35797664L ; | |
backinput () ; | |
curinput .indexfield = 5 ; | |
} | |
void | |
znewindex ( quarterword i , halfword q ) | |
{ | |
newindex_regmem | |
smallnumber k ; | |
curptr = getnode ( 33 ) ; | |
mem [curptr ].hh.b0 = i ; | |
mem [curptr ].hh.b1 = 0 ; | |
mem [curptr ].hh .v.RH = q ; | |
{register integer for_end; k = 1 ;for_end = 32 ; if ( k <= for_end) do | |
mem [curptr + k ]= sanull ; | |
while ( k++ < for_end ) ;} | |
} | |
void | |
zfindsaelement ( smallnumber t , halfword n , boolean w ) | |
{ | |
/* 45 46 47 48 49 10 */ findsaelement_regmem | |
halfword q ; | |
smallnumber i ; | |
curptr = saroot [t ]; | |
{ | |
if ( curptr == -268435455L ) { | |
if ( w ) | |
goto lab45 ; | |
else return ; | |
} | |
} | |
q = curptr ; | |
i = n / 262144L ; | |
if ( odd ( i ) ) | |
curptr = mem [q + ( i / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [q + ( i / 2 ) + 1 ].hh .v.LH ; | |
{ | |
if ( curptr == -268435455L ) { | |
if ( w ) | |
goto lab46 ; | |
else return ; | |
} | |
} | |
q = curptr ; | |
i = ( n / 4096 ) % 64 ; | |
if ( odd ( i ) ) | |
curptr = mem [q + ( i / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [q + ( i / 2 ) + 1 ].hh .v.LH ; | |
{ | |
if ( curptr == -268435455L ) { | |
if ( w ) | |
goto lab47 ; | |
else return ; | |
} | |
} | |
q = curptr ; | |
i = ( n / 64 ) % 64 ; | |
if ( odd ( i ) ) | |
curptr = mem [q + ( i / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [q + ( i / 2 ) + 1 ].hh .v.LH ; | |
{ | |
if ( curptr == -268435455L ) { | |
if ( w ) | |
goto lab48 ; | |
else return ; | |
} | |
} | |
q = curptr ; | |
i = n % 64 ; | |
if ( odd ( i ) ) | |
curptr = mem [q + ( i / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [q + ( i / 2 ) + 1 ].hh .v.LH ; | |
if ( ( curptr == -268435455L ) && w ) | |
goto lab49 ; | |
return ; | |
lab45: newindex ( t , -268435455L ) ; | |
saroot [t ]= curptr ; | |
q = curptr ; | |
i = n / 262144L ; | |
lab46: newindex ( i , q ) ; | |
{ | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = curptr ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = curptr ; | |
incr ( mem [q ].hh.b1 ) ; | |
} | |
q = curptr ; | |
i = ( n / 4096 ) % 64 ; | |
lab47: newindex ( i , q ) ; | |
{ | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = curptr ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = curptr ; | |
incr ( mem [q ].hh.b1 ) ; | |
} | |
q = curptr ; | |
i = ( n / 64 ) % 64 ; | |
lab48: newindex ( i , q ) ; | |
{ | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = curptr ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = curptr ; | |
incr ( mem [q ].hh.b1 ) ; | |
} | |
q = curptr ; | |
i = n % 64 ; | |
lab49: if ( t == 7 ) | |
{ | |
curptr = getnode ( 4 ) ; | |
mem [curptr + 1 ]= sanull ; | |
mem [curptr + 2 ]= sanull ; | |
mem [curptr + 3 ]= sanull ; | |
} | |
else { | |
if ( t <= 1 ) | |
{ | |
curptr = getnode ( 3 ) ; | |
mem [curptr + 2 ].cint = 0 ; | |
mem [curptr + 1 ].hh .v.RH = n ; | |
} | |
else { | |
curptr = getnode ( 2 ) ; | |
if ( t <= 3 ) | |
{ | |
mem [curptr + 1 ].hh .v.RH = membot ; | |
incr ( mem [membot ].hh .v.RH ) ; | |
} | |
else mem [curptr + 1 ].hh .v.RH = -268435455L ; | |
} | |
mem [curptr + 1 ].hh .v.LH = -268435455L ; | |
} | |
mem [curptr ].hh.b0 = 64 * t + i ; | |
mem [curptr ].hh.b1 = 1 ; | |
mem [curptr ].hh .v.RH = q ; | |
{ | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = curptr ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = curptr ; | |
incr ( mem [q ].hh.b1 ) ; | |
} | |
} | |
void | |
expand ( void ) | |
{ | |
/* 21 */ expand_regmem | |
halfword t ; | |
boolean b ; | |
halfword p, q, r ; | |
integer j ; | |
integer cvbackup ; | |
smallnumber cvlbackup, radixbackup, cobackup ; | |
halfword backupbackup ; | |
smallnumber savescannerstatus ; | |
incr ( expanddepthcount ) ; | |
if ( expanddepthcount >= expanddepth ) | |
overflow ( 65946L , expanddepth ) ; | |
cvbackup = curval ; | |
cvlbackup = curvallevel ; | |
radixbackup = radix ; | |
cobackup = curorder ; | |
backupbackup = mem [memtop - 13 ].hh .v.RH ; | |
lab21: if ( curcmd < 113 ) | |
{ | |
if ( eqtb [8939276L ].cint > 1 ) | |
showcurcmdchr () ; | |
switch ( curcmd ) | |
{case 112 : | |
{ | |
t = curchr % 5 ; | |
if ( curchr >= 5 ) | |
scanregisternum () ; | |
else curval = 0 ; | |
if ( curval == 0 ) | |
curptr = curmark [t ]; | |
else { | |
findsaelement ( 7 , curval , false ) ; | |
if ( curptr != -268435455L ) { | |
if ( odd ( t ) ) | |
curptr = mem [curptr + ( t / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [curptr + ( t / 2 ) + 1 ].hh .v.LH ; | |
} | |
} | |
if ( curptr != -268435455L ) | |
begintokenlist ( curptr , 15 ) ; | |
} | |
break ; | |
case 104 : | |
if ( curchr == 0 ) | |
{ | |
gettoken () ; | |
t = curtok ; | |
gettoken () ; | |
if ( curcmd > 102 ) | |
expand () ; | |
else backinput () ; | |
curtok = t ; | |
backinput () ; | |
} | |
else { | |
gettoken () ; | |
if ( ( curcmd == 107 ) && ( curchr != 16 ) ) | |
{ | |
curchr = curchr + 32 ; | |
goto lab21 ; | |
} | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66029L ) ; | |
} | |
printesc ( 66159L ) ; | |
print ( 66933L ) ; | |
printcmdchr ( curcmd , curchr ) ; | |
printchar ( 39 ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 65942L ; | |
} | |
backerror () ; | |
} | |
break ; | |
case 105 : | |
if ( curchr == 0 ) | |
{ | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 0 ; | |
gettoken () ; | |
scannerstatus = savescannerstatus ; | |
t = curtok ; | |
backinput () ; | |
if ( t >= 33554431L ) | |
{ | |
p = getavail () ; | |
mem [p ].hh .v.LH = 35797666L ; | |
mem [p ].hh .v.RH = curinput .locfield ; | |
curinput .startfield = p ; | |
curinput .locfield = p ; | |
} | |
} | |
else { | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 0 ; | |
gettoken () ; | |
scannerstatus = savescannerstatus ; | |
if ( curcs < 2228226L ) | |
curcs = primlookup ( curcs - 1114113L ) ; | |
else curcs = primlookup ( hash [curcs ].v.RH ) ; | |
if ( curcs != 0 ) | |
{ | |
t = eqtb [2243238L + curcs ].hh.b0 ; | |
if ( t > 102 ) | |
{ | |
curcmd = t ; | |
curchr = eqtb [2243238L + curcs ].hh .v.RH ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
curcs = 0 ; | |
goto lab21 ; | |
} | |
else { | |
backinput () ; | |
p = getavail () ; | |
mem [p ].hh .v.LH = 35797668L ; | |
mem [p ].hh .v.RH = curinput .locfield ; | |
curinput .locfield = p ; | |
curinput .startfield = p ; | |
} | |
} | |
} | |
break ; | |
case 109 : | |
{ | |
r = getavail () ; | |
p = r ; | |
b = isincsname ; | |
isincsname = true ; | |
do { | |
getxtoken () ; | |
if ( curcs == 0 ) | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} while ( ! ( curcs != 0 ) ) ; | |
if ( curcmd != 67 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65953L ) ; | |
} | |
printesc ( 65815L ) ; | |
print ( 65954L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65955L ; | |
helpline [0 ]= 65956L ; | |
} | |
backerror () ; | |
} | |
isincsname = b ; | |
j = first ; | |
p = mem [r ].hh .v.RH ; | |
while ( p != -268435455L ) { | |
if ( j >= maxbufstack ) | |
{ | |
maxbufstack = j + 1 ; | |
if ( maxbufstack == bufsize ) | |
overflow ( 65538L , bufsize ) ; | |
} | |
buffer [j ]= mem [p ].hh .v.LH % 2097152L ; | |
incr ( j ) ; | |
p = mem [p ].hh .v.RH ; | |
} | |
if ( ( j > first + 1 ) || ( buffer [first ]> 65535L ) ) | |
{ | |
nonewcontrolsequence = false ; | |
curcs = idlookup ( first , j - first ) ; | |
nonewcontrolsequence = true ; | |
} | |
else if ( j == first ) | |
curcs = 2228225L ; | |
else curcs = 1114113L + buffer [first ]; | |
flushlist ( r ) ; | |
if ( eqtb [curcs ].hh.b0 == 103 ) | |
{ | |
eqdefine ( curcs , 0 , 1114112L ) ; | |
} | |
curtok = curcs + 33554431L ; | |
backinput () ; | |
} | |
break ; | |
case 110 : | |
convtoks () ; | |
break ; | |
case 111 : | |
insthetoks () ; | |
break ; | |
case 107 : | |
conditional () ; | |
break ; | |
case 108 : | |
{ | |
if ( eqtb [8939301L ].cint > 0 ) { | |
if ( eqtb [8939276L ].cint <= 1 ) | |
showcurcmdchr () ; | |
} | |
if ( curchr > iflimit ) { | |
if ( iflimit == 1 ) | |
insertrelax () ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66163L ) ; | |
} | |
printcmdchr ( 108 , curchr ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66164L ; | |
} | |
error () ; | |
} | |
} | |
else { | |
while ( curchr != 2 ) passtext () ; | |
{ | |
if ( ifstack [inopen ]== condptr ) | |
ifwarning () ; | |
p = condptr ; | |
ifline = mem [p + 1 ].cint ; | |
curif = mem [p ].hh.b1 ; | |
iflimit = mem [p ].hh.b0 ; | |
condptr = mem [p ].hh .v.RH ; | |
freenode ( p , 2 ) ; | |
} | |
} | |
} | |
break ; | |
case 106 : | |
if ( curchr == 1 ) | |
forceeof = true ; | |
else if ( curchr == 2 ) | |
pseudostart () ; | |
else if ( nameinprogress ) | |
insertrelax () ; | |
else startinput () ; | |
break ; | |
default: | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65947L ) ; | |
} | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 65948L ; | |
helpline [3 ]= 65949L ; | |
helpline [2 ]= 65950L ; | |
helpline [1 ]= 65951L ; | |
helpline [0 ]= 65952L ; | |
} | |
error () ; | |
} | |
break ; | |
} | |
} | |
else if ( curcmd < 117 ) | |
macrocall () ; | |
else { | |
curtok = 35797663L ; | |
backinput () ; | |
} | |
curval = cvbackup ; | |
curvallevel = cvlbackup ; | |
radix = radixbackup ; | |
curorder = cobackup ; | |
mem [memtop - 13 ].hh .v.RH = backupbackup ; | |
decr ( expanddepthcount ) ; | |
} | |
void | |
getxtoken ( void ) | |
{ | |
/* 20 30 */ getxtoken_regmem | |
lab20: getnext () ; | |
if ( curcmd <= 102 ) | |
goto lab30 ; | |
if ( curcmd >= 113 ) { | |
if ( curcmd < 117 ) | |
macrocall () ; | |
else { | |
curcs = 2243232L ; | |
curcmd = 9 ; | |
goto lab30 ; | |
} | |
} | |
else expand () ; | |
goto lab20 ; | |
lab30: if ( curcs == 0 ) | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
else curtok = 33554431L + curcs ; | |
} | |
void | |
xtoken ( void ) | |
{ | |
xtoken_regmem | |
while ( curcmd > 102 ) { | |
expand () ; | |
getnext () ; | |
} | |
if ( curcs == 0 ) | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
else curtok = 33554431L + curcs ; | |
} | |
void | |
scanleftbrace ( void ) | |
{ | |
scanleftbrace_regmem | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
if ( curcmd != 1 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65985L ) ; | |
} | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 65986L ; | |
helpline [2 ]= 65987L ; | |
helpline [1 ]= 65988L ; | |
helpline [0 ]= 65989L ; | |
} | |
backerror () ; | |
curtok = 2097275L ; | |
curcmd = 1 ; | |
curchr = 123 ; | |
incr ( alignstate ) ; | |
} | |
} | |
void | |
scanoptionalequals ( void ) | |
{ | |
scanoptionalequals_regmem | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok != 25165885L ) | |
backinput () ; | |
} | |
boolean | |
zscankeyword ( strnumber s ) | |
{ | |
/* 10 */ register boolean Result; scankeyword_regmem | |
halfword p ; | |
halfword q ; | |
poolpointer k ; | |
halfword savecurcs ; | |
p = memtop - 13 ; | |
mem [p ].hh .v.RH = -268435455L ; | |
if ( s < 65536L ) | |
{ | |
while ( true ) { | |
getxtoken () ; | |
if ( ( curcs == 0 ) && ( ( curchr == s ) || ( curchr == s - 32 ) ) ) | |
{ | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
flushlist ( mem [memtop - 13 ].hh .v.RH ) ; | |
Result = true ; | |
return Result ; | |
} | |
else if ( ( curcmd != 10 ) || ( p != memtop - 13 ) ) | |
{ | |
backinput () ; | |
if ( p != memtop - 13 ) | |
begintokenlist ( mem [memtop - 13 ].hh .v.RH , 3 ) ; | |
Result = false ; | |
return Result ; | |
} | |
} | |
} | |
k = strstart [( s ) - 65536L ]; | |
savecurcs = curcs ; | |
while ( k < strstart [( s + 1 ) - 65536L ]) { | |
getxtoken () ; | |
if ( ( curcs == 0 ) && ( ( curchr == strpool [k ]) || ( curchr == | |
strpool [k ]- 32 ) ) ) | |
{ | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
incr ( k ) ; | |
} | |
else if ( ( curcmd != 10 ) || ( p != memtop - 13 ) ) | |
{ | |
backinput () ; | |
if ( p != memtop - 13 ) | |
begintokenlist ( mem [memtop - 13 ].hh .v.RH , 3 ) ; | |
curcs = savecurcs ; | |
Result = false ; | |
return Result ; | |
} | |
} | |
flushlist ( mem [memtop - 13 ].hh .v.RH ) ; | |
Result = true ; | |
return Result ; | |
} | |
void | |
muerror ( void ) | |
{ | |
muerror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65990L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 65991L ; | |
} | |
error () ; | |
} | |
void | |
zscanglyphnumber ( internalfontnumber f ) | |
{ | |
scanglyphnumber_regmem | |
if ( scankeyword ( 47 ) ) | |
{ | |
scanandpackname () ; | |
{ | |
curval = mapglyphtoindex ( f ) ; | |
curvallevel = 0 ; | |
} | |
} | |
else if ( scankeyword ( 117 ) ) | |
{ | |
scancharnum () ; | |
{ | |
curval = mapchartoglyph ( f , curval ) ; | |
curvallevel = 0 ; | |
} | |
} | |
else scanint () ; | |
} | |
void | |
scancharclass ( void ) | |
{ | |
scancharclass_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 4096 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66031L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66032L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scancharclassnotignored ( void ) | |
{ | |
scancharclassnotignored_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 4096 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66031L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66033L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scaneightbitint ( void ) | |
{ | |
scaneightbitint_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 255 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66034L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66035L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanusvnum ( void ) | |
{ | |
scanusvnum_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 1114111L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66036L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66037L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scancharnum ( void ) | |
{ | |
scancharnum_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 65535L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66036L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66038L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanxetexmathcharint ( void ) | |
{ | |
scanxetexmathcharint_regmem | |
scanint () ; | |
if ( mathcharfield ( curval ) == 2097151L ) | |
{ | |
if ( curval != 2097151L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66039L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66040L ; | |
helpline [0 ]= 66041L ; | |
} | |
interror ( curval ) ; | |
curval = 2097151L ; | |
} | |
} | |
else if ( mathcharfield ( curval ) > 1114111L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66042L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66043L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanmathclassint ( void ) | |
{ | |
scanmathclassint_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 7 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66044L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66045L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanmathfamint ( void ) | |
{ | |
scanmathfamint_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 255 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66046L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66047L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanfourbitint ( void ) | |
{ | |
scanfourbitint_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 15 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66048L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66049L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanfifteenbitint ( void ) | |
{ | |
scanfifteenbitint_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 32767 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66050L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66051L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scandelimiterint ( void ) | |
{ | |
scandelimiterint_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 134217727L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66052L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66053L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanregisternum ( void ) | |
{ | |
scanregisternum_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > maxregnum ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66034L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= maxreghelpline ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
scanfourbitintor18 ( void ) | |
{ | |
scanfourbitintor18_regmem | |
scanint () ; | |
if ( ( curval < 0 ) || ( ( curval > 15 ) && ( curval != 18 ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66048L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66049L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
void | |
getxorprotected ( void ) | |
{ | |
/* 10 */ getxorprotected_regmem | |
while ( true ) { | |
gettoken () ; | |
if ( curcmd <= 102 ) | |
return ; | |
if ( ( curcmd >= 113 ) && ( curcmd < 117 ) ) { | |
if ( mem [mem [curchr ].hh .v.RH ].hh .v.LH == 29360129L ) | |
return ; | |
} | |
expand () ; | |
} | |
} | |
integer | |
zeffectivechar ( boolean errp , internalfontnumber f , quarterword c ) | |
{ | |
/* 40 */ register integer Result; effectivechar_regmem | |
integer basec ; | |
integer result ; | |
if ( ( ! xtxligaturepresent ) && ( fontmapping [f ]!= nil ) ) | |
c = applytfmfontmapping ( fontmapping [f ], c ) ; | |
xtxligaturepresent = false ; | |
result = c ; | |
if ( ! mltexenabledp ) | |
goto lab40 ; | |
if ( fontec [f ]>= c ) { | |
if ( fontbc [f ]<= c ) { | |
if ( ( fontinfo [charbase [f ]+ c ].qqqq .b0 > 0 ) ) | |
goto lab40 ; | |
} | |
} | |
if ( c >= eqtb [8939295L ].cint ) { | |
if ( c <= eqtb [8939296L ].cint ) { | |
if ( ( eqtb [7825128L + c ].hh .v.RH > 0 ) ) | |
{ | |
basec = ( eqtb [7825128L + c ].hh .v.RH % 256 ) ; | |
result = basec ; | |
if ( ! errp ) | |
goto lab40 ; | |
if ( fontec [f ]>= basec ) { | |
if ( fontbc [f ]<= basec ) { | |
if ( ( fontinfo [charbase [f ]+ basec ].qqqq .b0 > 0 ) ) | |
goto lab40 ; | |
} | |
} | |
} | |
} | |
} | |
if ( errp ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66217L ) ; | |
print ( 66967L ) ; | |
print ( c ) ; | |
print ( 66218L ) ; | |
print ( fontname [f ]) ; | |
printchar ( 33 ) ; | |
enddiagnostic ( false ) ; | |
result = fontbc [f ]; | |
} | |
lab40: Result = result ; | |
return Result ; | |
} | |
void | |
scanfontident ( void ) | |
{ | |
scanfontident_regmem | |
internalfontnumber f ; | |
halfword m ; | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curcmd == 90 ) | |
f = eqtb [2253799L ].hh .v.RH ; | |
else if ( curcmd == 89 ) | |
f = curchr ; | |
else if ( curcmd == 88 ) | |
{ | |
m = curchr ; | |
scanmathfamint () ; | |
f = eqtb [m + curval ].hh .v.RH ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66208L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66209L ; | |
helpline [0 ]= 66210L ; | |
} | |
backerror () ; | |
f = 0 ; | |
} | |
curval = f ; | |
} | |
void | |
zfindfontdimen ( boolean writing ) | |
{ | |
findfontdimen_regmem | |
internalfontnumber f ; | |
integer n ; | |
scanint () ; | |
n = curval ; | |
scanfontident () ; | |
f = curval ; | |
if ( n <= 0 ) | |
curval = fmemptr ; | |
else { | |
if ( writing && ( n <= 4 ) && ( n >= 2 ) && ( fontglue [f ]!= | |
-268435455L ) ) | |
{ | |
deleteglueref ( fontglue [f ]) ; | |
fontglue [f ]= -268435455L ; | |
} | |
if ( n > fontparams [f ]) { | |
if ( f < fontptr ) | |
curval = fmemptr ; | |
else { | |
do { | |
if ( fmemptr == fontmemsize ) | |
overflow ( 66215L , fontmemsize ) ; | |
fontinfo [fmemptr ].cint = 0 ; | |
incr ( fmemptr ) ; | |
incr ( fontparams [f ]) ; | |
} while ( ! ( n == fontparams [f ]) ) ; | |
curval = fmemptr - 1 ; | |
} | |
} | |
else curval = n + parambase [f ]; | |
} | |
if ( curval == fmemptr ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66194L ) ; | |
} | |
printesc ( hash [2243738L + f ].v.RH ) ; | |
print ( 66211L ) ; | |
printint ( fontparams [f ]) ; | |
print ( 66212L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66213L ; | |
helpline [0 ]= 66214L ; | |
} | |
error () ; | |
} | |
} | |
void | |
zscansomethinginternal ( smallnumber level , boolean negative ) | |
{ | |
/* 10 20 */ scansomethinginternal_regmem | |
halfword m ; | |
integer n, k, kk ; | |
halfword q, r ; | |
halfword tx ; | |
fourquarters i ; | |
integer p ; | |
lab20: m = curchr ; | |
switch ( curcmd ) | |
{case 86 : | |
{ | |
scanusvnum () ; | |
if ( m == 6711016L ) | |
{ | |
curval1 = eqtb [6711016L + curval ].hh .v.RH ; | |
if ( mathcharfield ( curval1 ) == 2097151L ) | |
curval1 = 32768L ; | |
else if ( ( mathclassfield ( curval1 ) > 7 ) || ( mathfamfield ( | |
curval1 ) > 15 ) || ( mathcharfield ( curval1 ) > 255 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65998L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65999L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval1 ) ; | |
curval1 = 0 ; | |
} | |
curval1 = ( mathclassfield ( curval1 ) * 4096 ) + ( mathfamfield ( | |
curval1 ) * 256 ) + mathcharfield ( curval1 ) ; | |
{ | |
curval = curval1 ; | |
curvallevel = 0 ; | |
} | |
} | |
else if ( m == 8939581L ) | |
{ | |
curval1 = eqtb [8939581L + curval ].cint ; | |
if ( curval1 >= 1073741824L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66001L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66002L ; | |
helpline [0 ]= 66000L ; | |
} | |
error () ; | |
{ | |
curval = 0 ; | |
curvallevel = 0 ; | |
} | |
} | |
else { | |
{ | |
curval = curval1 ; | |
curvallevel = 0 ; | |
} | |
} | |
} | |
else if ( m < 5596904L ) | |
{ | |
curval = eqtb [m + curval ].hh .v.RH ; | |
curvallevel = 0 ; | |
} | |
else if ( m < 6711016L ) | |
{ | |
curval = eqtb [m + curval ].hh .v.RH % 65536L ; | |
curvallevel = 0 ; | |
} | |
else { | |
curval = eqtb [m + curval ].cint ; | |
curvallevel = 0 ; | |
} | |
} | |
break ; | |
case 87 : | |
{ | |
scanusvnum () ; | |
if ( m == 5596904L ) | |
{ | |
{ | |
curval = eqtb [5596904L + curval ].hh .v.RH / 65536L ; | |
curvallevel = 0 ; | |
} | |
} | |
else if ( m == 6711016L ) | |
{ | |
{ | |
curval = eqtb [6711016L + curval ].hh .v.RH ; | |
curvallevel = 0 ; | |
} | |
} | |
else if ( m == 6711017L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65992L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65993L ; | |
helpline [0 ]= 65994L ; | |
} | |
error () ; | |
{ | |
curval = 0 ; | |
curvallevel = 0 ; | |
} | |
} | |
else if ( m == 8939581L ) | |
{ | |
{ | |
curval = eqtb [8939581L + curval ].cint ; | |
curvallevel = 0 ; | |
} | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65995L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65996L ; | |
helpline [0 ]= 65997L ; | |
} | |
error () ; | |
{ | |
curval = 0 ; | |
curvallevel = 0 ; | |
} | |
} | |
} | |
break ; | |
case 72 : | |
case 73 : | |
case 88 : | |
case 89 : | |
case 90 : | |
if ( level != 5 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66003L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66004L ; | |
helpline [1 ]= 66005L ; | |
helpline [0 ]= 66006L ; | |
} | |
backerror () ; | |
{ | |
curval = 0 ; | |
curvallevel = 1 ; | |
} | |
} | |
else if ( curcmd <= 73 ) | |
{ | |
if ( curcmd < 73 ) { | |
if ( m == membot ) | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
curval = eqtb [2253283L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 5 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
curval = -268435455L ; | |
else curval = mem [curptr + 1 ].hh .v.RH ; | |
} | |
} | |
else curval = mem [m + 1 ].hh .v.RH ; | |
} | |
else if ( curchr == 2253282L ) | |
{ | |
scancharclassnotignored () ; | |
curptr = curval ; | |
scancharclassnotignored () ; | |
findsaelement ( 6 , curptr * 4096 + curval , false ) ; | |
if ( curptr == -268435455L ) | |
curval = -268435455L ; | |
else curval = mem [curptr + 1 ].hh .v.RH ; | |
} | |
else curval = eqtb [m ].hh .v.RH ; | |
curvallevel = 5 ; | |
} | |
else { | |
backinput () ; | |
scanfontident () ; | |
{ | |
curval = 2243738L + curval ; | |
curvallevel = 4 ; | |
} | |
} | |
break ; | |
case 74 : | |
{ | |
curval = eqtb [m ].cint ; | |
curvallevel = 0 ; | |
} | |
break ; | |
case 75 : | |
{ | |
curval = eqtb [m ].cint ; | |
curvallevel = 1 ; | |
} | |
break ; | |
case 76 : | |
{ | |
curval = eqtb [m ].hh .v.RH ; | |
curvallevel = 2 ; | |
} | |
break ; | |
case 77 : | |
{ | |
curval = eqtb [m ].hh .v.RH ; | |
curvallevel = 3 ; | |
} | |
break ; | |
case 80 : | |
if ( abs ( curlist .modefield ) != m ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66024L ) ; | |
} | |
printcmdchr ( 80 , m ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66025L ; | |
helpline [2 ]= 66026L ; | |
helpline [1 ]= 66027L ; | |
helpline [0 ]= 66028L ; | |
} | |
error () ; | |
if ( level != 5 ) | |
{ | |
curval = 0 ; | |
curvallevel = 1 ; | |
} | |
else { | |
curval = 0 ; | |
curvallevel = 0 ; | |
} | |
} | |
else if ( m == 1 ) | |
{ | |
curval = curlist .auxfield .cint ; | |
curvallevel = 1 ; | |
} | |
else { | |
curval = curlist .auxfield .hh .v.LH ; | |
curvallevel = 0 ; | |
} | |
break ; | |
case 81 : | |
if ( curlist .modefield == 0 ) | |
{ | |
curval = 0 ; | |
curvallevel = 0 ; | |
} | |
else { | |
nest [nestptr ]= curlist ; | |
p = nestptr ; | |
while ( abs ( nest [p ].modefield ) != 1 ) decr ( p ) ; | |
{ | |
curval = nest [p ].pgfield ; | |
curvallevel = 0 ; | |
} | |
} | |
break ; | |
case 83 : | |
{ | |
if ( m == 0 ) | |
curval = deadcycles ; | |
else if ( m == 2 ) | |
curval = interaction ; | |
else curval = insertpenalties ; | |
curvallevel = 0 ; | |
} | |
break ; | |
case 82 : | |
{ | |
if ( ( pagecontents == 0 ) && ( ! outputactive ) ) { | |
if ( m == 0 ) | |
curval = 1073741823L ; | |
else curval = 0 ; | |
} | |
else curval = pagesofar [m ]; | |
curvallevel = 1 ; | |
} | |
break ; | |
case 85 : | |
{ | |
if ( m > 2253271L ) | |
{ | |
scanint () ; | |
if ( ( eqtb [m ].hh .v.RH == -268435455L ) || ( curval < 0 ) ) | |
curval = 0 ; | |
else { | |
if ( curval > mem [eqtb [m ].hh .v.RH + 1 ].cint ) | |
curval = mem [eqtb [m ].hh .v.RH + 1 ].cint ; | |
curval = mem [eqtb [m ].hh .v.RH + curval + 1 ].cint ; | |
} | |
} | |
else if ( eqtb [2253271L ].hh .v.RH == -268435455L ) | |
curval = 0 ; | |
else curval = mem [eqtb [2253271L ].hh .v.RH ].hh .v.LH ; | |
curvallevel = 0 ; | |
} | |
break ; | |
case 84 : | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
q = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
q = -268435455L ; | |
else q = mem [curptr + 1 ].hh .v.RH ; | |
} | |
if ( q == -268435455L ) | |
curval = 0 ; | |
else curval = mem [q + m ].cint ; | |
curvallevel = 1 ; | |
} | |
break ; | |
case 68 : | |
case 69 : | |
case 70 : | |
{ | |
curval = curchr ; | |
curvallevel = 0 ; | |
} | |
break ; | |
case 78 : | |
{ | |
findfontdimen ( false ) ; | |
fontinfo [fmemptr ].cint = 0 ; | |
{ | |
curval = fontinfo [curval ].cint ; | |
curvallevel = 1 ; | |
} | |
} | |
break ; | |
case 79 : | |
{ | |
scanfontident () ; | |
if ( m == 0 ) | |
{ | |
curval = hyphenchar [curval ]; | |
curvallevel = 0 ; | |
} | |
else if ( m == 1 ) | |
{ | |
curval = skewchar [curval ]; | |
curvallevel = 0 ; | |
} | |
else { | |
n = curval ; | |
if ( ( ( fontarea [n ]== 65535L ) || ( fontarea [n ]== 65534L ) ) | |
) | |
scanglyphnumber ( n ) ; | |
else scancharnum () ; | |
k = curval ; | |
switch ( m ) | |
{case 2 : | |
{ | |
curval = getcpcode ( n , k , 0 ) ; | |
curvallevel = 0 ; | |
} | |
break ; | |
case 3 : | |
{ | |
curval = getcpcode ( n , k , 1 ) ; | |
curvallevel = 0 ; | |
} | |
break ; | |
} | |
} | |
} | |
break ; | |
case 91 : | |
{ | |
if ( ( m < membot ) || ( m > membot + 19 ) ) | |
{ | |
curvallevel = ( mem [m ].hh.b0 / 64 ) ; | |
if ( curvallevel < 2 ) | |
curval = mem [m + 2 ].cint ; | |
else curval = mem [m + 1 ].hh .v.RH ; | |
} | |
else { | |
scanregisternum () ; | |
curvallevel = m - membot ; | |
if ( curval > 255 ) | |
{ | |
findsaelement ( curvallevel , curval , false ) ; | |
if ( curptr == -268435455L ) { | |
if ( curvallevel < 2 ) | |
curval = 0 ; | |
else curval = membot ; | |
} | |
else if ( curvallevel < 2 ) | |
curval = mem [curptr + 2 ].cint ; | |
else curval = mem [curptr + 1 ].hh .v.RH ; | |
} | |
else switch ( curvallevel ) | |
{case 0 : | |
curval = eqtb [8939325L + curval ].cint ; | |
break ; | |
case 1 : | |
curval = eqtb [10053716L + curval ].cint ; | |
break ; | |
case 2 : | |
curval = eqtb [2252759L + curval ].hh .v.RH ; | |
break ; | |
case 3 : | |
curval = eqtb [2253015L + curval ].hh .v.RH ; | |
break ; | |
} | |
} | |
} | |
break ; | |
case 71 : | |
if ( m >= 4 ) { | |
if ( m >= 65 ) | |
{ | |
if ( m < 66 ) | |
{ | |
switch ( m ) | |
{case 65 : | |
scanmuglue () ; | |
break ; | |
} | |
curvallevel = 2 ; | |
} | |
else if ( m < 67 ) | |
{ | |
switch ( m ) | |
{case 66 : | |
scannormalglue () ; | |
break ; | |
} | |
curvallevel = 3 ; | |
} | |
else { | |
curvallevel = m - 67 ; | |
scanexpr () ; | |
} | |
while ( curvallevel > level ) { | |
if ( curvallevel == 2 ) | |
{ | |
m = curval ; | |
curval = mem [m + 1 ].cint ; | |
deleteglueref ( m ) ; | |
} | |
else if ( curvallevel == 3 ) | |
muerror () ; | |
decr ( curvallevel ) ; | |
} | |
if ( negative ) { | |
if ( curvallevel >= 2 ) | |
{ | |
m = curval ; | |
curval = newspec ( m ) ; | |
deleteglueref ( m ) ; | |
{ | |
mem [curval + 1 ].cint = - (integer) mem [curval + 1 ].cint | |
; | |
mem [curval + 2 ].cint = - (integer) mem [curval + 2 ].cint | |
; | |
mem [curval + 3 ].cint = - (integer) mem [curval + 3 ].cint | |
; | |
} | |
} | |
else curval = - (integer) curval ; | |
} | |
return ; | |
} | |
else if ( m >= 55 ) | |
{ | |
switch ( m ) | |
{case 55 : | |
{ | |
if ( ( ( fontarea [eqtb [2253799L ].hh .v.RH ]== 65535L ) || ( | |
fontarea [eqtb [2253799L ].hh .v.RH ]== 65534L ) ) ) | |
{ | |
scanint () ; | |
n = curval ; | |
if ( ( n < 1 ) || ( n > 4 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66852L ) ; | |
} | |
printnl ( 66853L ) ; | |
printint ( n ) ; | |
error () ; | |
curval = 0 ; | |
} | |
else { | |
scanint () ; | |
curval = getglyphbounds ( eqtb [2253799L ].hh .v.RH , n , | |
curval ) ; | |
} | |
} | |
else { | |
notnativefonterror ( 71 , m , eqtb [2253799L ].hh .v.RH ) ; | |
curval = 0 ; | |
} | |
} | |
break ; | |
case 56 : | |
case 57 : | |
case 58 : | |
case 59 : | |
{ | |
scanfontident () ; | |
q = curval ; | |
scanusvnum () ; | |
if ( ( ( fontarea [q ]== 65535L ) || ( fontarea [q ]== 65534L | |
) ) ) | |
{ | |
switch ( m ) | |
{case 56 : | |
curval = getnativecharwd ( q , curval ) ; | |
break ; | |
case 57 : | |
curval = getnativecharht ( q , curval ) ; | |
break ; | |
case 58 : | |
curval = getnativechardp ( q , curval ) ; | |
break ; | |
case 59 : | |
curval = getnativecharic ( q , curval ) ; | |
break ; | |
} | |
} | |
else { | |
if ( ( fontbc [q ]<= curval ) && ( fontec [q ]>= curval ) ) | |
{ | |
i = fontinfo [charbase [q ]+ effectivechar ( true , q , | |
curval ) ].qqqq ; | |
switch ( m ) | |
{case 56 : | |
curval = fontinfo [widthbase [q ]+ i .b0 ].cint ; | |
break ; | |
case 57 : | |
curval = fontinfo [heightbase [q ]+ ( i .b1 ) / 16 ] | |
.cint ; | |
break ; | |
case 58 : | |
curval = fontinfo [depthbase [q ]+ ( i .b1 ) % 16 ].cint | |
; | |
break ; | |
case 59 : | |
curval = fontinfo [italicbase [q ]+ ( i .b2 ) / 4 ].cint | |
; | |
break ; | |
} | |
} | |
else curval = 0 ; | |
} | |
} | |
break ; | |
case 60 : | |
case 61 : | |
case 62 : | |
{ | |
q = curchr - 60 ; | |
scanint () ; | |
if ( ( eqtb [2253271L ].hh .v.RH == -268435455L ) || ( curval <= | |
0 ) ) | |
curval = 0 ; | |
else { | |
if ( q == 2 ) | |
{ | |
q = curval % 2 ; | |
curval = ( curval + q ) / 2 ; | |
} | |
if ( curval > mem [eqtb [2253271L ].hh .v.RH ].hh .v.LH ) | |
curval = mem [eqtb [2253271L ].hh .v.RH ].hh .v.LH ; | |
curval = mem [eqtb [2253271L ].hh .v.RH + 2 * curval - q ] | |
.cint ; | |
} | |
curvallevel = 1 ; | |
} | |
break ; | |
case 63 : | |
case 64 : | |
{ | |
scannormalglue () ; | |
q = curval ; | |
if ( m == 63 ) | |
curval = mem [q + 2 ].cint ; | |
else curval = mem [q + 3 ].cint ; | |
deleteglueref ( q ) ; | |
} | |
break ; | |
} | |
curvallevel = 1 ; | |
} | |
else { | |
switch ( m ) | |
{case 4 : | |
curval = line ; | |
break ; | |
case 5 : | |
curval = lastbadness ; | |
break ; | |
case 16 : | |
curval = getmicrointerval () ; | |
break ; | |
case 18 : | |
curval = randomseed ; | |
break ; | |
case 17 : | |
{ | |
if ( shellenabledp ) | |
{ | |
if ( restrictedshell ) | |
curval = 2 ; | |
else curval = 1 ; | |
} | |
else curval = 0 ; | |
} | |
break ; | |
case 19 : | |
curval = 2 ; | |
break ; | |
case 27 : | |
curval = 0 ; | |
break ; | |
case 28 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
curval = aatfontget ( m - 27 , fontlayoutengine [n ]) ; | |
else if ( ( fontarea [n ]== 65534L ) ) | |
curval = otfontget ( m - 27 , fontlayoutengine [n ]) ; | |
else curval = 0 ; | |
} | |
break ; | |
case 35 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
curval = aatfontget ( m - 27 , fontlayoutengine [n ]) ; | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [n ]) ) ) ) | |
curval = otfontget ( m - 27 , fontlayoutengine [n ]) ; | |
else curval = 0 ; | |
} | |
break ; | |
case 30 : | |
case 32 : | |
case 33 : | |
case 34 : | |
case 29 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
curval = 0 ; | |
} | |
break ; | |
case 36 : | |
case 38 : | |
case 39 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
curval = aatfontget1 ( m - 27 , fontlayoutengine [n ], k ) ; | |
} | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
curval = otfontget1 ( m - 27 , fontlayoutengine [n ], k ) ; | |
} | |
else { | |
notaatgrfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 40 : | |
case 42 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
scanint () ; | |
curval = aatfontget2 ( m - 27 , fontlayoutengine [n ], k , | |
curval ) ; | |
} | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
scanint () ; | |
curval = otfontget2 ( m - 27 , fontlayoutengine [n ], k , | |
curval ) ; | |
} | |
else { | |
notaatgrfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 31 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
{ | |
scanandpackname () ; | |
curval = aatfontgetnamed ( m - 27 , fontlayoutengine [n ]) ; | |
} | |
else { | |
notaatfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 37 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
{ | |
scanandpackname () ; | |
curval = aatfontgetnamed ( m - 27 , fontlayoutengine [n ]) ; | |
} | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanandpackname () ; | |
curval = grfontgetnamed ( m - 27 , fontlayoutengine [n ]) ; | |
} | |
else { | |
notaatgrfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 41 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
scanandpackname () ; | |
curval = aatfontgetnamed1 ( m - 27 , fontlayoutengine [n ], k | |
) ; | |
} | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
scanandpackname () ; | |
curval = grfontgetnamed1 ( m - 27 , fontlayoutengine [n ], k ) | |
; | |
} | |
else { | |
notaatgrfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 43 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( ( fontarea [n ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [n ]) ) ) ) | |
curval = otfontget ( m - 27 , fontlayoutengine [n ]) ; | |
else { | |
curval = 0 ; | |
} | |
} | |
break ; | |
case 44 : | |
case 46 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( ( fontarea [n ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanint () ; | |
curval = otfontget1 ( m - 27 , fontlayoutengine [n ], curval ) | |
; | |
} | |
else { | |
nototfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 45 : | |
case 47 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( ( fontarea [n ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
scanint () ; | |
curval = otfontget2 ( m - 27 , fontlayoutengine [n ], k , | |
curval ) ; | |
} | |
else { | |
nototfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 48 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( ( fontarea [n ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [n ]) ) ) ) | |
{ | |
scanint () ; | |
k = curval ; | |
scanint () ; | |
kk = curval ; | |
scanint () ; | |
curval = otfontget3 ( m - 27 , fontlayoutengine [n ], k , kk , | |
curval ) ; | |
} | |
else { | |
nototfonterror ( 71 , m , n ) ; | |
curval = -1 ; | |
} | |
} | |
break ; | |
case 49 : | |
{ | |
if ( ( ( fontarea [eqtb [2253799L ].hh .v.RH ]== 65535L ) || ( | |
fontarea [eqtb [2253799L ].hh .v.RH ]== 65534L ) ) ) | |
{ | |
scanint () ; | |
n = curval ; | |
curval = mapchartoglyph ( eqtb [2253799L ].hh .v.RH , n ) ; | |
} | |
else { | |
notnativefonterror ( 71 , m , eqtb [2253799L ].hh .v.RH ) ; | |
curval = 0 ; | |
} | |
} | |
break ; | |
case 50 : | |
{ | |
if ( ( ( fontarea [eqtb [2253799L ].hh .v.RH ]== 65535L ) || ( | |
fontarea [eqtb [2253799L ].hh .v.RH ]== 65534L ) ) ) | |
{ | |
scanandpackname () ; | |
curval = mapglyphtoindex ( eqtb [2253799L ].hh .v.RH ) ; | |
} | |
else { | |
notnativefonterror ( 71 , m , eqtb [2253799L ].hh .v.RH ) ; | |
curval = 0 ; | |
} | |
} | |
break ; | |
case 51 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( fontarea [n ]== 65535L ) ) | |
curval = 1 ; | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [n ]) ) ) ) | |
curval = 2 ; | |
else if ( ( ( fontarea [n ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [n ]) ) ) ) | |
curval = 3 ; | |
else curval = 0 ; | |
} | |
break ; | |
case 52 : | |
case 53 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
if ( ( ( fontarea [n ]== 65535L ) || ( fontarea [n ]== 65534L | |
) ) ) | |
curval = getfontcharrange ( n , m == 52 ) ; | |
else { | |
if ( m == 52 ) | |
curval = fontbc [n ]; | |
else curval = fontec [n ]; | |
} | |
} | |
break ; | |
case 12 : | |
curval = pdflastxpos ; | |
break ; | |
case 13 : | |
curval = pdflastypos ; | |
break ; | |
case 54 : | |
{ | |
scanandpackname () ; | |
curval = countpdffilepages () ; | |
} | |
break ; | |
case 20 : | |
curval = curlevel - 1 ; | |
break ; | |
case 21 : | |
curval = curgroup ; | |
break ; | |
case 22 : | |
{ | |
q = condptr ; | |
curval = 0 ; | |
while ( q != -268435455L ) { | |
incr ( curval ) ; | |
q = mem [q ].hh .v.RH ; | |
} | |
} | |
break ; | |
case 23 : | |
if ( condptr == -268435455L ) | |
curval = 0 ; | |
else if ( curif < 32 ) | |
curval = curif + 1 ; | |
else curval = - (integer) ( curif - 31 ) ; | |
break ; | |
case 24 : | |
if ( ( iflimit == 4 ) || ( iflimit == 3 ) ) | |
curval = 1 ; | |
else if ( iflimit == 2 ) | |
curval = -1 ; | |
else curval = 0 ; | |
break ; | |
case 25 : | |
case 26 : | |
{ | |
scannormalglue () ; | |
q = curval ; | |
if ( m == 25 ) | |
curval = mem [q ].hh.b0 ; | |
else curval = mem [q ].hh.b1 ; | |
deleteglueref ( q ) ; | |
} | |
break ; | |
} | |
curvallevel = 0 ; | |
} | |
} | |
else { | |
if ( curchr == 2 ) | |
curval = membot ; | |
else curval = 0 ; | |
tx = curlist .tailfield ; | |
if ( ! ( tx >= himemmin ) ) { | |
if ( ( mem [tx ].hh.b0 == 9 ) && ( mem [tx ].hh.b1 == 3 ) ) | |
{ | |
r = curlist .headfield ; | |
do { | |
q = r ; | |
r = mem [q ].hh .v.RH ; | |
} while ( ! ( r == tx ) ) ; | |
tx = q ; | |
} | |
} | |
if ( curchr == 3 ) | |
{ | |
curvallevel = 0 ; | |
if ( ( tx == curlist .headfield ) || ( curlist .modefield == 0 ) ) | |
curval = -1 ; | |
} | |
else curvallevel = curchr ; | |
if ( ! ( tx >= himemmin ) && ( curlist .modefield != 0 ) ) | |
switch ( curchr ) | |
{case 0 : | |
if ( mem [tx ].hh.b0 == 12 ) | |
curval = mem [tx + 1 ].cint ; | |
break ; | |
case 1 : | |
if ( mem [tx ].hh.b0 == 11 ) | |
curval = mem [tx + 1 ].cint ; | |
break ; | |
case 2 : | |
if ( mem [tx ].hh.b0 == 10 ) | |
{ | |
curval = mem [tx + 1 ].hh .v.LH ; | |
if ( mem [tx ].hh.b1 == 99 ) | |
curvallevel = 3 ; | |
} | |
break ; | |
case 3 : | |
if ( mem [tx ].hh.b0 <= 13 ) | |
curval = mem [tx ].hh.b0 + 1 ; | |
else curval = 15 ; | |
break ; | |
} | |
else if ( ( curlist .modefield == 1 ) && ( tx == curlist .headfield ) ) | |
switch ( curchr ) | |
{case 0 : | |
curval = lastpenalty ; | |
break ; | |
case 1 : | |
curval = lastkern ; | |
break ; | |
case 2 : | |
if ( lastglue != 1073741823L ) | |
curval = lastglue ; | |
break ; | |
case 3 : | |
curval = lastnodetype ; | |
break ; | |
} | |
} | |
break ; | |
case 39 : | |
if ( curchr == 1 ) | |
{ | |
gettoken () ; | |
if ( curcs < 2228226L ) | |
curcs = primlookup ( curcs - 1114113L ) ; | |
else curcs = primlookup ( hash [curcs ].v.RH ) ; | |
if ( curcs != 0 ) | |
{ | |
curcmd = eqtb [2243238L + curcs ].hh.b0 ; | |
curchr = eqtb [2243238L + curcs ].hh .v.RH ; | |
curcs = 2243238L + curcs ; | |
curtok = 33554431L + curcs ; | |
} | |
else { | |
curcmd = 0 ; | |
curchr = 0 ; | |
curtok = 35797664L ; | |
curcs = 2243233L ; | |
} | |
goto lab20 ; | |
} | |
break ; | |
default: | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66029L ) ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
print ( 66030L ) ; | |
printesc ( 65858L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66028L ; | |
} | |
error () ; | |
if ( level != 5 ) | |
{ | |
curval = 0 ; | |
curvallevel = 1 ; | |
} | |
else { | |
curval = 0 ; | |
curvallevel = 0 ; | |
} | |
} | |
break ; | |
} | |
while ( curvallevel > level ) { | |
if ( curvallevel == 2 ) | |
curval = mem [curval + 1 ].cint ; | |
else if ( curvallevel == 3 ) | |
muerror () ; | |
decr ( curvallevel ) ; | |
} | |
if ( negative ) { | |
if ( curvallevel >= 2 ) | |
{ | |
curval = newspec ( curval ) ; | |
{ | |
mem [curval + 1 ].cint = - (integer) mem [curval + 1 ].cint ; | |
mem [curval + 2 ].cint = - (integer) mem [curval + 2 ].cint ; | |
mem [curval + 3 ].cint = - (integer) mem [curval + 3 ].cint ; | |
} | |
} | |
else curval = - (integer) curval ; | |
} | |
else if ( ( curvallevel >= 2 ) && ( curvallevel <= 3 ) ) | |
incr ( mem [curval ].hh .v.RH ) ; | |
} | |
void | |
scanint ( void ) | |
{ | |
/* 30 20 */ scanint_regmem | |
boolean negative ; | |
integer m ; | |
smallnumber d ; | |
boolean vacuous ; | |
boolean OKsofar ; | |
radix = 0 ; | |
OKsofar = true ; | |
negative = false ; | |
do { | |
do { getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok == 25165869L ) | |
{ | |
negative = ! negative ; | |
curtok = 25165867L ; | |
} | |
} while ( ! ( curtok != 25165867L ) ) ; | |
lab20: if ( curtok == 25165920L ) | |
{ | |
gettoken () ; | |
if ( curtok < 33554431L ) | |
{ | |
curval = curchr ; | |
if ( curcmd <= 2 ) { | |
if ( curcmd == 2 ) | |
incr ( alignstate ) ; | |
else decr ( alignstate ) ; | |
} | |
} | |
else if ( curtok < 34668544L ) | |
curval = curtok - 33554432L ; | |
else curval = curtok - 34668544L ; | |
if ( curval > 1114111L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66054L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66055L ; | |
helpline [0 ]= 66056L ; | |
} | |
curval = 48 ; | |
backerror () ; | |
} | |
else { | |
getxtoken () ; | |
if ( curcmd != 10 ) | |
backinput () ; | |
} | |
} | |
else if ( curtok == 35797668L ) | |
{ | |
gettoken () ; | |
if ( curcs < 2228226L ) | |
curcs = primlookup ( curcs - 1114113L ) ; | |
else curcs = primlookup ( hash [curcs ].v.RH ) ; | |
if ( curcs != 0 ) | |
{ | |
curcmd = eqtb [2243238L + curcs ].hh.b0 ; | |
curchr = eqtb [2243238L + curcs ].hh .v.RH ; | |
curcs = 2243238L + curcs ; | |
curtok = 33554431L + curcs ; | |
} | |
else { | |
curcmd = 0 ; | |
curchr = 0 ; | |
curtok = 35797664L ; | |
curcs = 2243233L ; | |
} | |
goto lab20 ; | |
} | |
else if ( ( curcmd >= 68 ) && ( curcmd <= 91 ) ) | |
scansomethinginternal ( 0 , false ) ; | |
else { | |
radix = 10 ; | |
m = 214748364L ; | |
if ( curtok == 25165863L ) | |
{ | |
radix = 8 ; | |
m = 268435456L ; | |
getxtoken () ; | |
} | |
else if ( curtok == 25165858L ) | |
{ | |
radix = 16 ; | |
m = 134217728L ; | |
getxtoken () ; | |
} | |
vacuous = true ; | |
curval = 0 ; | |
while ( true ) { | |
if ( ( curtok < 25165872L + radix ) && ( curtok >= 25165872L ) && ( | |
curtok <= 25165881L ) ) | |
d = curtok - 25165872L ; | |
else if ( radix == 16 ) { | |
if ( ( curtok <= 23068742L ) && ( curtok >= 23068737L ) ) | |
d = curtok - 23068727L ; | |
else if ( ( curtok <= 25165894L ) && ( curtok >= 25165889L ) ) | |
d = curtok - 25165879L ; | |
else goto lab30 ; | |
} | |
else goto lab30 ; | |
vacuous = false ; | |
if ( ( curval >= m ) && ( ( curval > m ) || ( d > 7 ) || ( radix != 10 ) | |
) ) | |
{ | |
if ( OKsofar ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66057L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66058L ; | |
helpline [0 ]= 66059L ; | |
} | |
error () ; | |
curval = 2147483647L ; | |
OKsofar = false ; | |
} | |
} | |
else curval = curval * radix + d ; | |
getxtoken () ; | |
} | |
lab30: ; | |
if ( vacuous ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66003L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66004L ; | |
helpline [1 ]= 66005L ; | |
helpline [0 ]= 66006L ; | |
} | |
backerror () ; | |
} | |
else if ( curcmd != 10 ) | |
backinput () ; | |
} | |
if ( negative ) | |
curval = - (integer) curval ; | |
} | |
void | |
zxetexscandimen ( boolean mu , boolean inf , boolean shortcut , boolean | |
requiresunits ) | |
{ | |
/* 30 31 32 40 45 88 89 */ xetexscandimen_regmem | |
boolean negative ; | |
integer f ; | |
integer num, denom ; | |
smallnumber k, kk ; | |
halfword p, q ; | |
scaled v ; | |
integer savecurval ; | |
f = 0 ; | |
aritherror = false ; | |
curorder = 0 ; | |
negative = false ; | |
if ( ! shortcut ) | |
{ | |
negative = false ; | |
do { | |
do { getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok == 25165869L ) | |
{ | |
negative = ! negative ; | |
curtok = 25165867L ; | |
} | |
} while ( ! ( curtok != 25165867L ) ) ; | |
if ( ( curcmd >= 68 ) && ( curcmd <= 91 ) ) { | |
if ( mu ) | |
{ | |
scansomethinginternal ( 3 , false ) ; | |
if ( curvallevel >= 2 ) | |
{ | |
v = mem [curval + 1 ].cint ; | |
deleteglueref ( curval ) ; | |
curval = v ; | |
} | |
if ( curvallevel == 3 ) | |
goto lab89 ; | |
if ( curvallevel != 0 ) | |
muerror () ; | |
} | |
else { | |
scansomethinginternal ( 1 , false ) ; | |
if ( curvallevel == 1 ) | |
goto lab89 ; | |
} | |
} | |
else { | |
backinput () ; | |
if ( curtok == 25165868L ) | |
curtok = 25165870L ; | |
if ( curtok != 25165870L ) | |
scanint () ; | |
else { | |
radix = 10 ; | |
curval = 0 ; | |
} | |
if ( curtok == 25165868L ) | |
curtok = 25165870L ; | |
if ( ( radix == 10 ) && ( curtok == 25165870L ) ) | |
{ | |
k = 0 ; | |
p = -268435455L ; | |
gettoken () ; | |
while ( true ) { | |
getxtoken () ; | |
if ( ( curtok > 25165881L ) || ( curtok < 25165872L ) ) | |
goto lab31 ; | |
if ( k < 17 ) | |
{ | |
q = getavail () ; | |
mem [q ].hh .v.RH = p ; | |
mem [q ].hh .v.LH = curtok - 25165872L ; | |
p = q ; | |
incr ( k ) ; | |
} | |
} | |
lab31: { | |
register integer for_end; kk = k ;for_end = 1 ; if ( kk >= | |
for_end) do | |
{ | |
dig [kk - 1 ]= mem [p ].hh .v.LH ; | |
q = p ; | |
p = mem [p ].hh .v.RH ; | |
{ | |
mem [q ].hh .v.RH = avail ; | |
avail = q ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
while ( kk-- > for_end ) ;} | |
f = rounddecimals ( k ) ; | |
if ( curcmd != 10 ) | |
backinput () ; | |
} | |
} | |
} | |
if ( curval < 0 ) | |
{ | |
negative = ! negative ; | |
curval = - (integer) curval ; | |
} | |
if ( requiresunits ) | |
{ | |
if ( inf ) { | |
if ( scankeyword ( 65597L ) ) | |
{ | |
curorder = 1 ; | |
while ( scankeyword ( 108 ) ) { | |
if ( curorder == 3 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66061L ) ; | |
} | |
print ( 66062L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66063L ; | |
} | |
error () ; | |
} | |
else incr ( curorder ) ; | |
} | |
goto lab88 ; | |
} | |
} | |
savecurval = curval ; | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( ( curcmd < 68 ) || ( curcmd > 91 ) ) | |
backinput () ; | |
else { | |
if ( mu ) | |
{ | |
scansomethinginternal ( 3 , false ) ; | |
if ( curvallevel >= 2 ) | |
{ | |
v = mem [curval + 1 ].cint ; | |
deleteglueref ( curval ) ; | |
curval = v ; | |
} | |
if ( curvallevel != 3 ) | |
muerror () ; | |
} | |
else scansomethinginternal ( 1 , false ) ; | |
v = curval ; | |
goto lab40 ; | |
} | |
if ( mu ) | |
goto lab45 ; | |
if ( scankeyword ( 66064L ) ) | |
v = ( fontinfo [6 + parambase [eqtb [2253799L ].hh .v.RH ]].cint ) ; | |
else if ( scankeyword ( 66065L ) ) | |
v = ( fontinfo [5 + parambase [eqtb [2253799L ].hh .v.RH ]].cint ) ; | |
else goto lab45 ; | |
{ | |
getxtoken () ; | |
if ( curcmd != 10 ) | |
backinput () ; | |
} | |
lab40: curval = multandadd ( savecurval , v , xnoverd ( v , f , 65536L ) , | |
1073741823L ) ; | |
goto lab89 ; | |
lab45: ; | |
if ( mu ) { | |
if ( scankeyword ( 65625L ) ) | |
goto lab88 ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66061L ) ; | |
} | |
print ( 66066L ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66067L ; | |
helpline [2 ]= 66068L ; | |
helpline [1 ]= 66069L ; | |
helpline [0 ]= 66070L ; | |
} | |
error () ; | |
goto lab88 ; | |
} | |
} | |
if ( scankeyword ( 66060L ) ) | |
{ | |
preparemag () ; | |
if ( eqtb [8939257L ].cint != 1000 ) | |
{ | |
curval = xnoverd ( curval , 1000 , eqtb [8939257L ].cint ) ; | |
f = ( 1000 * f + 65536L * texremainder ) / eqtb [8939257L ].cint ; | |
curval = curval + ( f / 65536L ) ; | |
f = f % 65536L ; | |
} | |
} | |
if ( scankeyword ( 65697L ) ) | |
goto lab88 ; | |
if ( scankeyword ( 66071L ) ) | |
{ | |
num = 7227 ; | |
denom = 100 ; | |
} | |
else if ( scankeyword ( 66072L ) ) | |
{ | |
num = 12 ; | |
denom = 1 ; | |
} | |
else if ( scankeyword ( 66073L ) ) | |
{ | |
num = 7227 ; | |
denom = 254 ; | |
} | |
else if ( scankeyword ( 66074L ) ) | |
{ | |
num = 7227 ; | |
denom = 2540 ; | |
} | |
else if ( scankeyword ( 66075L ) ) | |
{ | |
num = 7227 ; | |
denom = 7200 ; | |
} | |
else if ( scankeyword ( 66076L ) ) | |
{ | |
num = 1238 ; | |
denom = 1157 ; | |
} | |
else if ( scankeyword ( 66077L ) ) | |
{ | |
num = 14856 ; | |
denom = 1157 ; | |
} | |
else if ( scankeyword ( 66078L ) ) | |
goto lab30 ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66061L ) ; | |
} | |
print ( 66079L ) ; | |
{ | |
helpptr = 6 ; | |
helpline [5 ]= 66080L ; | |
helpline [4 ]= 66081L ; | |
helpline [3 ]= 66082L ; | |
helpline [2 ]= 66068L ; | |
helpline [1 ]= 66069L ; | |
helpline [0 ]= 66070L ; | |
} | |
error () ; | |
goto lab32 ; | |
} | |
curval = xnoverd ( curval , num , denom ) ; | |
f = ( num * f + 65536L * texremainder ) / denom ; | |
curval = curval + ( f / 65536L ) ; | |
f = f % 65536L ; | |
lab32: ; | |
lab88: if ( curval >= 16384 ) | |
aritherror = true ; | |
else curval = curval * 65536L + f ; | |
lab30: ; | |
{ | |
getxtoken () ; | |
if ( curcmd != 10 ) | |
backinput () ; | |
} | |
} | |
else { | |
if ( curval >= 16384 ) | |
aritherror = true ; | |
else curval = curval * 65536L + f ; | |
} | |
lab89: if ( aritherror || ( abs ( curval ) >= 1073741824L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66083L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66084L ; | |
helpline [0 ]= 66085L ; | |
} | |
error () ; | |
curval = 1073741823L ; | |
aritherror = false ; | |
} | |
if ( negative ) | |
curval = - (integer) curval ; | |
} | |
void | |
zscandimen ( boolean mu , boolean inf , boolean shortcut ) | |
{ | |
scandimen_regmem | |
xetexscandimen ( mu , inf , shortcut , true ) ; | |
} | |
void | |
scandecimal ( void ) | |
{ | |
scandecimal_regmem | |
xetexscandimen ( false , false , false , false ) ; | |
} | |
void | |
zscanglue ( smallnumber level ) | |
{ | |
/* 10 */ scanglue_regmem | |
boolean negative ; | |
halfword q ; | |
boolean mu ; | |
mu = ( level == 3 ) ; | |
negative = false ; | |
do { | |
do { getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok == 25165869L ) | |
{ | |
negative = ! negative ; | |
curtok = 25165867L ; | |
} | |
} while ( ! ( curtok != 25165867L ) ) ; | |
if ( ( curcmd >= 68 ) && ( curcmd <= 91 ) ) | |
{ | |
scansomethinginternal ( level , negative ) ; | |
if ( curvallevel >= 2 ) | |
{ | |
if ( curvallevel != level ) | |
muerror () ; | |
return ; | |
} | |
if ( curvallevel == 0 ) | |
scandimen ( mu , false , true ) ; | |
else if ( level == 3 ) | |
muerror () ; | |
} | |
else { | |
backinput () ; | |
scandimen ( mu , false , false ) ; | |
if ( negative ) | |
curval = - (integer) curval ; | |
} | |
q = newspec ( membot ) ; | |
mem [q + 1 ].cint = curval ; | |
if ( scankeyword ( 66086L ) ) | |
{ | |
scandimen ( mu , true , false ) ; | |
mem [q + 2 ].cint = curval ; | |
mem [q ].hh.b0 = curorder ; | |
} | |
if ( scankeyword ( 66087L ) ) | |
{ | |
scandimen ( mu , true , false ) ; | |
mem [q + 3 ].cint = curval ; | |
mem [q ].hh.b1 = curorder ; | |
} | |
curval = q ; | |
} | |
integer | |
zaddorsub ( integer x , integer y , integer maxanswer , boolean negative ) | |
{ | |
register integer Result; addorsub_regmem | |
integer a ; | |
if ( negative ) | |
y = - (integer) y ; | |
if ( x >= 0 ) { | |
if ( y <= maxanswer - x ) | |
a = x + y ; | |
else { | |
aritherror = true ; | |
a = 0 ; | |
} | |
} | |
else if ( y >= - (integer) maxanswer - x ) | |
a = x + y ; | |
else { | |
aritherror = true ; | |
a = 0 ; | |
} | |
Result = a ; | |
return Result ; | |
} | |
integer | |
zquotient ( integer n , integer d ) | |
{ | |
register integer Result; quotient_regmem | |
boolean negative ; | |
integer a ; | |
if ( d == 0 ) | |
{ | |
aritherror = true ; | |
a = 0 ; | |
} | |
else { | |
if ( d > 0 ) | |
negative = false ; | |
else { | |
d = - (integer) d ; | |
negative = true ; | |
} | |
if ( n < 0 ) | |
{ | |
n = - (integer) n ; | |
negative = ! negative ; | |
} | |
a = n / d ; | |
n = n - a * d ; | |
d = n - d ; | |
if ( d + n >= 0 ) | |
incr ( a ) ; | |
if ( negative ) | |
a = - (integer) a ; | |
} | |
Result = a ; | |
return Result ; | |
} | |
integer | |
zfract ( integer x , integer n , integer d , integer maxanswer ) | |
{ | |
/* 40 41 88 30 */ register integer Result; fract_regmem | |
boolean negative ; | |
integer a ; | |
integer f ; | |
integer h ; | |
integer r ; | |
integer t ; | |
if ( d == 0 ) | |
goto lab88 ; | |
a = 0 ; | |
if ( d > 0 ) | |
negative = false ; | |
else { | |
d = - (integer) d ; | |
negative = true ; | |
} | |
if ( x < 0 ) | |
{ | |
x = - (integer) x ; | |
negative = ! negative ; | |
} | |
else if ( x == 0 ) | |
goto lab30 ; | |
if ( n < 0 ) | |
{ | |
n = - (integer) n ; | |
negative = ! negative ; | |
} | |
t = n / d ; | |
if ( t > maxanswer / x ) | |
goto lab88 ; | |
a = t * x ; | |
n = n - t * d ; | |
if ( n == 0 ) | |
goto lab40 ; | |
t = x / d ; | |
if ( t > ( maxanswer - a ) / n ) | |
goto lab88 ; | |
a = a + t * n ; | |
x = x - t * d ; | |
if ( x == 0 ) | |
goto lab40 ; | |
if ( x < n ) | |
{ | |
t = x ; | |
x = n ; | |
n = t ; | |
} | |
f = 0 ; | |
r = ( d / 2 ) - d ; | |
h = - (integer) r ; | |
while ( true ) { | |
if ( odd ( n ) ) | |
{ | |
r = r + x ; | |
if ( r >= 0 ) | |
{ | |
r = r - d ; | |
incr ( f ) ; | |
} | |
} | |
n = n / 2 ; | |
if ( n == 0 ) | |
goto lab41 ; | |
if ( x < h ) | |
x = x + x ; | |
else { | |
t = x - d ; | |
x = t + x ; | |
f = f + n ; | |
if ( x < n ) | |
{ | |
if ( x == 0 ) | |
goto lab41 ; | |
t = x ; | |
x = n ; | |
n = t ; | |
} | |
} | |
} | |
lab41: if ( f > ( maxanswer - a ) ) | |
goto lab88 ; | |
a = a + f ; | |
lab40: if ( negative ) | |
a = - (integer) a ; | |
goto lab30 ; | |
lab88: { | |
aritherror = true ; | |
a = 0 ; | |
} | |
lab30: Result = a ; | |
return Result ; | |
} | |
void | |
scanexpr ( void ) | |
{ | |
/* 20 22 40 */ scanexpr_regmem | |
boolean a, b ; | |
smallnumber l ; | |
smallnumber r ; | |
smallnumber s ; | |
smallnumber o ; | |
integer e ; | |
integer t ; | |
integer f ; | |
integer n ; | |
halfword p ; | |
halfword q ; | |
l = curvallevel ; | |
a = aritherror ; | |
b = false ; | |
p = -268435455L ; | |
incr ( expanddepthcount ) ; | |
if ( expanddepthcount >= expanddepth ) | |
overflow ( 65946L , expanddepth ) ; | |
lab20: r = 0 ; | |
e = 0 ; | |
s = 0 ; | |
t = 0 ; | |
n = 0 ; | |
lab22: if ( s == 0 ) | |
o = l ; | |
else o = 0 ; | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok == 25165864L ) | |
{ | |
q = getnode ( 4 ) ; | |
mem [q ].hh .v.RH = p ; | |
mem [q ].hh.b0 = l ; | |
mem [q ].hh.b1 = 4 * s + r ; | |
mem [q + 1 ].cint = e ; | |
mem [q + 2 ].cint = t ; | |
mem [q + 3 ].cint = n ; | |
p = q ; | |
l = o ; | |
goto lab20 ; | |
} | |
backinput () ; | |
if ( o == 0 ) | |
scanint () ; | |
else if ( o == 1 ) | |
scandimen ( false , false , false ) ; | |
else if ( o == 2 ) | |
scannormalglue () ; | |
else scanmuglue () ; | |
f = curval ; | |
lab40: do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok == 25165867L ) | |
o = 1 ; | |
else if ( curtok == 25165869L ) | |
o = 2 ; | |
else if ( curtok == 25165866L ) | |
o = 3 ; | |
else if ( curtok == 25165871L ) | |
o = 4 ; | |
else { | |
o = 0 ; | |
if ( p == -268435455L ) | |
{ | |
if ( curcmd != 0 ) | |
backinput () ; | |
} | |
else if ( curtok != 25165865L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66943L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66944L ; | |
} | |
backerror () ; | |
} | |
} | |
aritherror = b ; | |
if ( ( l == 0 ) || ( s > 2 ) ) | |
{ | |
if ( ( f > 2147483647L ) || ( f < -2147483647L ) ) | |
{ | |
aritherror = true ; | |
f = 0 ; | |
} | |
} | |
else if ( l == 1 ) | |
{ | |
if ( abs ( f ) > 1073741823L ) | |
{ | |
aritherror = true ; | |
f = 0 ; | |
} | |
} | |
else { | |
if ( ( abs ( mem [f + 1 ].cint ) > 1073741823L ) || ( abs ( mem [f + 2 | |
].cint ) > 1073741823L ) || ( abs ( mem [f + 3 ].cint ) > 1073741823L ) | |
) | |
{ | |
aritherror = true ; | |
deleteglueref ( f ) ; | |
f = newspec ( membot ) ; | |
} | |
} | |
switch ( s ) | |
{case 0 : | |
if ( ( l >= 2 ) && ( o != 0 ) ) | |
{ | |
t = newspec ( f ) ; | |
deleteglueref ( f ) ; | |
if ( mem [t + 2 ].cint == 0 ) | |
mem [t ].hh.b0 = 0 ; | |
if ( mem [t + 3 ].cint == 0 ) | |
mem [t ].hh.b1 = 0 ; | |
} | |
else t = f ; | |
break ; | |
case 3 : | |
if ( o == 4 ) | |
{ | |
n = f ; | |
o = 5 ; | |
} | |
else if ( l == 0 ) | |
t = multandadd ( t , f , 0 , 2147483647L ) ; | |
else if ( l == 1 ) | |
t = multandadd ( t , f , 0 , 1073741823L ) ; | |
else { | |
mem [t + 1 ].cint = multandadd ( mem [t + 1 ].cint , f , 0 , | |
1073741823L ) ; | |
mem [t + 2 ].cint = multandadd ( mem [t + 2 ].cint , f , 0 , | |
1073741823L ) ; | |
mem [t + 3 ].cint = multandadd ( mem [t + 3 ].cint , f , 0 , | |
1073741823L ) ; | |
} | |
break ; | |
case 4 : | |
if ( l < 2 ) | |
t = quotient ( t , f ) ; | |
else { | |
mem [t + 1 ].cint = quotient ( mem [t + 1 ].cint , f ) ; | |
mem [t + 2 ].cint = quotient ( mem [t + 2 ].cint , f ) ; | |
mem [t + 3 ].cint = quotient ( mem [t + 3 ].cint , f ) ; | |
} | |
break ; | |
case 5 : | |
if ( l == 0 ) | |
t = fract ( t , n , f , 2147483647L ) ; | |
else if ( l == 1 ) | |
t = fract ( t , n , f , 1073741823L ) ; | |
else { | |
mem [t + 1 ].cint = fract ( mem [t + 1 ].cint , n , f , 1073741823L | |
) ; | |
mem [t + 2 ].cint = fract ( mem [t + 2 ].cint , n , f , 1073741823L | |
) ; | |
mem [t + 3 ].cint = fract ( mem [t + 3 ].cint , n , f , 1073741823L | |
) ; | |
} | |
break ; | |
} | |
if ( o > 2 ) | |
s = o ; | |
else { | |
s = 0 ; | |
if ( r == 0 ) | |
e = t ; | |
else if ( l == 0 ) | |
e = addorsub ( e , t , 2147483647L , r == 2 ) ; | |
else if ( l == 1 ) | |
e = addorsub ( e , t , 1073741823L , r == 2 ) ; | |
else { | |
mem [e + 1 ].cint = addorsub ( mem [e + 1 ].cint , mem [t + 1 ] | |
.cint , 1073741823L , r == 2 ) ; | |
if ( mem [e ].hh.b0 == mem [t ].hh.b0 ) | |
mem [e + 2 ].cint = addorsub ( mem [e + 2 ].cint , mem [t + 2 ] | |
.cint , 1073741823L , r == 2 ) ; | |
else if ( ( mem [e ].hh.b0 < mem [t ].hh.b0 ) && ( mem [t + 2 ] | |
.cint != 0 ) ) | |
{ | |
mem [e + 2 ].cint = mem [t + 2 ].cint ; | |
mem [e ].hh.b0 = mem [t ].hh.b0 ; | |
} | |
if ( mem [e ].hh.b1 == mem [t ].hh.b1 ) | |
mem [e + 3 ].cint = addorsub ( mem [e + 3 ].cint , mem [t + 3 ] | |
.cint , 1073741823L , r == 2 ) ; | |
else if ( ( mem [e ].hh.b1 < mem [t ].hh.b1 ) && ( mem [t + 3 ] | |
.cint != 0 ) ) | |
{ | |
mem [e + 3 ].cint = mem [t + 3 ].cint ; | |
mem [e ].hh.b1 = mem [t ].hh.b1 ; | |
} | |
deleteglueref ( t ) ; | |
if ( mem [e + 2 ].cint == 0 ) | |
mem [e ].hh.b0 = 0 ; | |
if ( mem [e + 3 ].cint == 0 ) | |
mem [e ].hh.b1 = 0 ; | |
} | |
r = o ; | |
} | |
b = aritherror ; | |
if ( o != 0 ) | |
goto lab22 ; | |
if ( p != -268435455L ) | |
{ | |
f = e ; | |
q = p ; | |
e = mem [q + 1 ].cint ; | |
t = mem [q + 2 ].cint ; | |
n = mem [q + 3 ].cint ; | |
s = mem [q ].hh.b1 / 4 ; | |
r = mem [q ].hh.b1 % 4 ; | |
l = mem [q ].hh.b0 ; | |
p = mem [q ].hh .v.RH ; | |
freenode ( q , 4 ) ; | |
goto lab40 ; | |
} | |
decr ( expanddepthcount ) ; | |
if ( b ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66657L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66942L ; | |
helpline [0 ]= 66659L ; | |
} | |
error () ; | |
if ( l >= 2 ) | |
{ | |
deleteglueref ( e ) ; | |
e = membot ; | |
incr ( mem [e ].hh .v.RH ) ; | |
} | |
else e = 0 ; | |
} | |
aritherror = a ; | |
curval = e ; | |
curvallevel = l ; | |
} | |
void | |
scannormalglue ( void ) | |
{ | |
scannormalglue_regmem | |
scanglue ( 2 ) ; | |
} | |
void | |
scanmuglue ( void ) | |
{ | |
scanmuglue_regmem | |
scanglue ( 3 ) ; | |
} | |
halfword | |
scanrulespec ( void ) | |
{ | |
/* 21 */ register halfword Result; scanrulespec_regmem | |
halfword q ; | |
q = newrule () ; | |
if ( curcmd == 35 ) | |
mem [q + 1 ].cint = 26214 ; | |
else { | |
mem [q + 3 ].cint = 26214 ; | |
mem [q + 2 ].cint = 0 ; | |
} | |
lab21: if ( scankeyword ( 66088L ) ) | |
{ | |
scandimen ( false , false , false ) ; | |
mem [q + 1 ].cint = curval ; | |
goto lab21 ; | |
} | |
if ( scankeyword ( 66089L ) ) | |
{ | |
scandimen ( false , false , false ) ; | |
mem [q + 3 ].cint = curval ; | |
goto lab21 ; | |
} | |
if ( scankeyword ( 66090L ) ) | |
{ | |
scandimen ( false , false , false ) ; | |
mem [q + 2 ].cint = curval ; | |
goto lab21 ; | |
} | |
Result = q ; | |
return Result ; | |
} | |
void | |
scangeneraltext ( void ) | |
{ | |
/* 40 */ scangeneraltext_regmem | |
unsigned char s ; | |
halfword w ; | |
halfword d ; | |
halfword p ; | |
halfword q ; | |
halfword unbalance ; | |
s = scannerstatus ; | |
w = warningindex ; | |
d = defref ; | |
scannerstatus = 5 ; | |
warningindex = curcs ; | |
defref = getavail () ; | |
mem [defref ].hh .v.LH = -268435455L ; | |
p = defref ; | |
scanleftbrace () ; | |
unbalance = 1 ; | |
while ( true ) { | |
gettoken () ; | |
if ( curtok < 6291456L ) { | |
if ( curcmd < 2 ) | |
incr ( unbalance ) ; | |
else { | |
decr ( unbalance ) ; | |
if ( unbalance == 0 ) | |
goto lab40 ; | |
} | |
} | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
lab40: q = mem [defref ].hh .v.RH ; | |
{ | |
mem [defref ].hh .v.RH = avail ; | |
avail = defref ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
if ( q == -268435455L ) | |
curval = memtop - 3 ; | |
else curval = p ; | |
mem [memtop - 3 ].hh .v.RH = q ; | |
scannerstatus = s ; | |
warningindex = w ; | |
defref = d ; | |
} | |
void | |
pseudostart ( void ) | |
{ | |
pseudostart_regmem | |
unsigned char oldsetting ; | |
strnumber s ; | |
poolpointer l, m ; | |
halfword p, q, r ; | |
fourquarters w ; | |
integer nl, sz ; | |
scangeneraltext () ; | |
oldsetting = selector ; | |
selector = 21 ; | |
tokenshow ( memtop - 3 ) ; | |
selector = oldsetting ; | |
flushlist ( mem [memtop - 3 ].hh .v.RH ) ; | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
s = makestring () ; | |
strpool [poolptr ]= 32 ; | |
l = strstart [( s ) - 65536L ]; | |
nl = eqtb [8939289L ].cint ; | |
p = getavail () ; | |
q = p ; | |
while ( l < poolptr ) { | |
m = l ; | |
while ( ( l < poolptr ) && ( strpool [l ]!= nl ) ) incr ( l ) ; | |
sz = ( l - m + 7 ) / 4 ; | |
if ( sz == 1 ) | |
sz = 2 ; | |
r = getnode ( sz ) ; | |
mem [q ].hh .v.RH = r ; | |
q = r ; | |
mem [q ].hh .v.LH = sz ; | |
while ( sz > 2 ) { | |
decr ( sz ) ; | |
incr ( r ) ; | |
w .b0 = strpool [m ]; | |
w .b1 = strpool [m + 1 ]; | |
w .b2 = strpool [m + 2 ]; | |
w .b3 = strpool [m + 3 ]; | |
mem [r ].qqqq = w ; | |
m = m + 4 ; | |
} | |
w .b0 = 32 ; | |
w .b1 = 32 ; | |
w .b2 = 32 ; | |
w .b3 = 32 ; | |
if ( l > m ) | |
{ | |
w .b0 = strpool [m ]; | |
if ( l > m + 1 ) | |
{ | |
w .b1 = strpool [m + 1 ]; | |
if ( l > m + 2 ) | |
{ | |
w .b2 = strpool [m + 2 ]; | |
if ( l > m + 3 ) | |
w .b3 = strpool [m + 3 ]; | |
} | |
} | |
} | |
mem [r + 1 ].qqqq = w ; | |
if ( strpool [l ]== nl ) | |
incr ( l ) ; | |
} | |
mem [p ].hh .v.LH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = pseudofiles ; | |
pseudofiles = p ; | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
beginfilereading () ; | |
line = 0 ; | |
curinput .limitfield = curinput .startfield ; | |
curinput .locfield = curinput .limitfield + 1 ; | |
if ( eqtb [8939302L ].cint > 0 ) | |
{ | |
if ( termoffset > maxprintline - 3 ) | |
println () ; | |
else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) | |
printchar ( 32 ) ; | |
curinput .namefield = 19 ; | |
print ( 66927L ) ; | |
incr ( openparens ) ; | |
fflush ( stdout ) ; | |
} | |
else { | |
curinput .namefield = 18 ; | |
curinput .synctextagfield = 0 ; | |
} | |
} | |
halfword | |
zstrtokscat ( poolpointer b , smallnumber cat ) | |
{ | |
register halfword Result; strtokscat_regmem | |
halfword p ; | |
halfword q ; | |
halfword t ; | |
poolpointer k ; | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
p = memtop - 3 ; | |
mem [p ].hh .v.RH = -268435455L ; | |
k = b ; | |
while ( k < poolptr ) { | |
t = strpool [k ]; | |
if ( ( t == 32 ) && ( cat == 0 ) ) | |
t = 20971552L ; | |
else { | |
if ( ( t >= 55296L ) && ( t <= 56319L ) && ( k + 1 < poolptr ) && ( | |
strpool [k + 1 ]>= 56320L ) && ( strpool [k + 1 ]<= 57343L ) ) | |
{ | |
incr ( k ) ; | |
t = 65536L + ( t - 55296L ) * 1024 + ( strpool [k ]- 56320L ) ; | |
} | |
if ( cat == 0 ) | |
t = 25165824L + t ; | |
else if ( cat == 13 ) | |
t = 33554432L + t ; | |
else t = 2097152L * cat + t ; | |
} | |
{ | |
{ | |
q = avail ; | |
if ( q == -268435455L ) | |
q = getavail () ; | |
else { | |
avail = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
incr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = t ; | |
p = q ; | |
} | |
incr ( k ) ; | |
} | |
poolptr = b ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
zstrtoks ( poolpointer b ) | |
{ | |
register halfword Result; strtoks_regmem | |
Result = strtokscat ( b , 0 ) ; | |
return Result ; | |
} | |
halfword | |
thetoks ( void ) | |
{ | |
/* 10 */ register halfword Result; thetoks_regmem | |
unsigned char oldsetting ; | |
halfword p, q, r ; | |
poolpointer b ; | |
smallnumber c ; | |
if ( odd ( curchr ) ) | |
{ | |
c = curchr ; | |
scangeneraltext () ; | |
if ( c == 1 ) | |
Result = curval ; | |
else { | |
oldsetting = selector ; | |
selector = 21 ; | |
b = poolptr ; | |
p = getavail () ; | |
mem [p ].hh .v.RH = mem [memtop - 3 ].hh .v.RH ; | |
tokenshow ( p ) ; | |
flushlist ( p ) ; | |
selector = oldsetting ; | |
Result = strtoks ( b ) ; | |
} | |
return Result ; | |
} | |
getxtoken () ; | |
scansomethinginternal ( 5 , false ) ; | |
if ( curvallevel >= 4 ) | |
{ | |
p = memtop - 3 ; | |
mem [p ].hh .v.RH = -268435455L ; | |
if ( curvallevel == 4 ) | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = 33554431L + curval ; | |
p = q ; | |
} | |
else if ( curval != -268435455L ) | |
{ | |
r = mem [curval ].hh .v.RH ; | |
while ( r != -268435455L ) { | |
{ | |
{ | |
q = avail ; | |
if ( q == -268435455L ) | |
q = getavail () ; | |
else { | |
avail = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
incr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = mem [r ].hh .v.LH ; | |
p = q ; | |
} | |
r = mem [r ].hh .v.RH ; | |
} | |
} | |
Result = p ; | |
} | |
else { | |
oldsetting = selector ; | |
selector = 21 ; | |
b = poolptr ; | |
switch ( curvallevel ) | |
{case 0 : | |
printint ( curval ) ; | |
break ; | |
case 1 : | |
{ | |
printscaled ( curval ) ; | |
print ( 65697L ) ; | |
} | |
break ; | |
case 2 : | |
{ | |
printspec ( curval , 65697L ) ; | |
deleteglueref ( curval ) ; | |
} | |
break ; | |
case 3 : | |
{ | |
printspec ( curval , 65625L ) ; | |
deleteglueref ( curval ) ; | |
} | |
break ; | |
} | |
selector = oldsetting ; | |
Result = strtoks ( b ) ; | |
} | |
return Result ; | |
} | |
void | |
insthetoks ( void ) | |
{ | |
insthetoks_regmem | |
mem [memtop - 12 ].hh .v.RH = thetoks () ; | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
} | |
void | |
convtoks ( void ) | |
{ | |
convtoks_regmem | |
unsigned char oldsetting ; | |
halfword savewarningindex, savedefref ; | |
boolean boolvar ; | |
strnumber s ; | |
strnumber u ; | |
integer j ; | |
smallnumber c ; | |
smallnumber savescannerstatus ; | |
poolpointer b ; | |
integer fnt, arg1, arg2 ; | |
strnumber fontnamestr ; | |
smallnumber i ; | |
UTF16code quotechar ; | |
smallnumber cat ; | |
UnicodeScalar savedchr ; | |
halfword p, q ; | |
cat = 0 ; | |
c = curchr ; | |
switch ( c ) | |
{case 0 : | |
case 1 : | |
scanint () ; | |
break ; | |
case 2 : | |
case 3 : | |
{ | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 0 ; | |
gettoken () ; | |
scannerstatus = savescannerstatus ; | |
} | |
break ; | |
case 4 : | |
scanfontident () ; | |
break ; | |
case 5 : | |
; | |
break ; | |
case 6 : | |
{ | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
savedefref = defref ; | |
if ( strstart [( strptr ) - 65536L ]< poolptr ) | |
u = makestring () ; | |
else u = 0 ; | |
scanpdfexttoks () ; | |
warningindex = savewarningindex ; | |
scannerstatus = savescannerstatus ; | |
begintokenlist ( mem [defref ].hh .v.RH , 5 ) ; | |
{ | |
mem [defref ].hh .v.RH = avail ; | |
avail = defref ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
defref = savedefref ; | |
if ( u != 0 ) | |
decr ( strptr ) ; | |
return ; | |
} | |
break ; | |
case 16 : | |
case 17 : | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
p = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
p = -268435455L ; | |
else p = mem [curptr + 1 ].hh .v.RH ; | |
} | |
if ( ( p == -268435455L ) || ( mem [p ].hh.b0 != 0 ) ) | |
pdferror ( 66111L , 66112L ) ; | |
} | |
break ; | |
case 22 : | |
{ | |
b = poolptr ; | |
getcreationdate () ; | |
mem [memtop - 12 ].hh .v.RH = strtoks ( b ) ; | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
return ; | |
} | |
break ; | |
case 23 : | |
{ | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
savedefref = defref ; | |
if ( strstart [( strptr ) - 65536L ]< poolptr ) | |
u = makestring () ; | |
else u = 0 ; | |
scanpdfexttoks () ; | |
if ( selector == 21 ) | |
pdferror ( 66113L , 66114L ) ; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [defref ].hh .v.RH , -268435455L , poolsize - | |
poolptr ) ; | |
selector = oldsetting ; | |
s = makestring () ; | |
deletetokenref ( defref ) ; | |
defref = savedefref ; | |
warningindex = savewarningindex ; | |
scannerstatus = savescannerstatus ; | |
b = poolptr ; | |
getfilemoddate ( s ) ; | |
mem [memtop - 12 ].hh .v.RH = strtoks ( b ) ; | |
if ( ( s == strptr - 1 ) ) | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
if ( u != 0 ) | |
decr ( strptr ) ; | |
return ; | |
} | |
break ; | |
case 24 : | |
{ | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
savedefref = defref ; | |
if ( strstart [( strptr ) - 65536L ]< poolptr ) | |
u = makestring () ; | |
else u = 0 ; | |
scanpdfexttoks () ; | |
if ( selector == 21 ) | |
pdferror ( 66113L , 66114L ) ; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [defref ].hh .v.RH , -268435455L , poolsize - | |
poolptr ) ; | |
selector = oldsetting ; | |
s = makestring () ; | |
deletetokenref ( defref ) ; | |
defref = savedefref ; | |
warningindex = savewarningindex ; | |
scannerstatus = savescannerstatus ; | |
b = poolptr ; | |
getfilesize ( s ) ; | |
mem [memtop - 12 ].hh .v.RH = strtoks ( b ) ; | |
if ( ( s == strptr - 1 ) ) | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
if ( u != 0 ) | |
decr ( strptr ) ; | |
return ; | |
} | |
break ; | |
case 25 : | |
{ | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
savedefref = defref ; | |
if ( strstart [( strptr ) - 65536L ]< poolptr ) | |
u = makestring () ; | |
else u = 0 ; | |
boolvar = scankeyword ( 66115L ) ; | |
scanpdfexttoks () ; | |
if ( selector == 21 ) | |
pdferror ( 66113L , 66114L ) ; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [defref ].hh .v.RH , -268435455L , poolsize - | |
poolptr ) ; | |
selector = oldsetting ; | |
s = makestring () ; | |
deletetokenref ( defref ) ; | |
defref = savedefref ; | |
warningindex = savewarningindex ; | |
scannerstatus = savescannerstatus ; | |
b = poolptr ; | |
getmd5sum ( s , boolvar ) ; | |
mem [memtop - 12 ].hh .v.RH = strtoks ( b ) ; | |
if ( ( s == strptr - 1 ) ) | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
if ( u != 0 ) | |
decr ( strptr ) ; | |
return ; | |
} | |
break ; | |
case 26 : | |
{ | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
savedefref = defref ; | |
if ( strstart [( strptr ) - 65536L ]< poolptr ) | |
u = makestring () ; | |
else u = 0 ; | |
curval = 0 ; | |
if ( ( scankeyword ( 66116L ) ) ) | |
{ | |
scanint () ; | |
if ( ( curval < 0 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66117L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66118L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
i = curval ; | |
curval = 0 ; | |
if ( ( scankeyword ( 66119L ) ) ) | |
{ | |
scanint () ; | |
if ( ( curval < 0 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66120L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66121L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
} | |
j = curval ; | |
scanpdfexttoks () ; | |
if ( selector == 21 ) | |
pdferror ( 66113L , 66114L ) ; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [defref ].hh .v.RH , -268435455L , poolsize - | |
poolptr ) ; | |
selector = oldsetting ; | |
s = makestring () ; | |
deletetokenref ( defref ) ; | |
defref = savedefref ; | |
warningindex = savewarningindex ; | |
scannerstatus = savescannerstatus ; | |
b = poolptr ; | |
getfiledump ( s , i , j ) ; | |
mem [memtop - 12 ].hh .v.RH = strtoks ( b ) ; | |
if ( ( s == strptr - 1 ) ) | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
if ( u != 0 ) | |
decr ( strptr ) ; | |
return ; | |
} | |
break ; | |
case 18 : | |
{ | |
savescannerstatus = scannerstatus ; | |
savewarningindex = warningindex ; | |
savedefref = defref ; | |
if ( strstart [( strptr ) - 65536L ]< poolptr ) | |
u = makestring () ; | |
else u = 0 ; | |
comparestrings () ; | |
defref = savedefref ; | |
warningindex = savewarningindex ; | |
scannerstatus = savescannerstatus ; | |
if ( u != 0 ) | |
decr ( strptr ) ; | |
} | |
break ; | |
case 38 : | |
scanusvnum () ; | |
break ; | |
case 39 : | |
{ | |
scanusvnum () ; | |
savedchr = curval ; | |
scanint () ; | |
if ( ( curval < 1 ) || ( curval > 13 ) || ( curval == 5 ) || ( curval == | |
9 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66122L ) ; | |
} | |
printint ( curval ) ; | |
print ( 66123L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66124L ; | |
} | |
error () ; | |
cat = 12 ; | |
} | |
else cat = curval ; | |
curval = savedchr ; | |
} | |
break ; | |
case 33 : | |
; | |
break ; | |
case 34 : | |
{ | |
scanfontident () ; | |
fnt = curval ; | |
if ( ( fontarea [fnt ]== 65535L ) ) | |
{ | |
scanint () ; | |
arg1 = curval ; | |
arg2 = 0 ; | |
} | |
else notaatfonterror ( 110 , c , fnt ) ; | |
} | |
break ; | |
case 35 : | |
{ | |
scanfontident () ; | |
fnt = curval ; | |
if ( ( fontarea [fnt ]== 65535L ) || ( ( fontarea [fnt ]== 65534L ) | |
&& ( usingGraphite ( fontlayoutengine [fnt ]) ) ) ) | |
{ | |
scanint () ; | |
arg1 = curval ; | |
arg2 = 0 ; | |
} | |
else notaatgrfonterror ( 110 , c , fnt ) ; | |
} | |
break ; | |
case 36 : | |
{ | |
scanfontident () ; | |
fnt = curval ; | |
if ( ( fontarea [fnt ]== 65535L ) || ( ( fontarea [fnt ]== 65534L ) | |
&& ( usingGraphite ( fontlayoutengine [fnt ]) ) ) ) | |
{ | |
scanint () ; | |
arg1 = curval ; | |
scanint () ; | |
arg2 = curval ; | |
} | |
else notaatgrfonterror ( 110 , c , fnt ) ; | |
} | |
break ; | |
case 37 : | |
{ | |
scanfontident () ; | |
fnt = curval ; | |
if ( ( ( fontarea [fnt ]== 65535L ) || ( fontarea [fnt ]== 65534L ) | |
) ) | |
{ | |
scanint () ; | |
arg1 = curval ; | |
} | |
else notnativefonterror ( 110 , c , fnt ) ; | |
} | |
break ; | |
case 40 : | |
if ( jobname == 0 ) | |
openlogfile () ; | |
break ; | |
case 29 : | |
scanint () ; | |
break ; | |
case 30 : | |
; | |
break ; | |
} | |
oldsetting = selector ; | |
selector = 21 ; | |
b = poolptr ; | |
switch ( c ) | |
{case 0 : | |
printint ( curval ) ; | |
break ; | |
case 1 : | |
printromanint ( curval ) ; | |
break ; | |
case 2 : | |
if ( curcs != 0 ) | |
sprintcs ( curcs ) ; | |
else printchar ( curchr ) ; | |
break ; | |
case 3 : | |
printmeaning () ; | |
break ; | |
case 4 : | |
{ | |
fontnamestr = fontname [curval ]; | |
if ( ( ( fontarea [curval ]== 65535L ) || ( fontarea [curval ]== | |
65534L ) ) ) | |
{ | |
quotechar = 34 ; | |
{register integer for_end; i = 0 ;for_end = length ( fontnamestr ) - | |
1 ; if ( i <= for_end) do | |
if ( strpool [strstart [( fontnamestr ) - 65536L ]+ i ]== 34 ) | |
quotechar = 39 ; | |
while ( i++ < for_end ) ;} | |
printchar ( quotechar ) ; | |
print ( fontnamestr ) ; | |
printchar ( quotechar ) ; | |
} | |
else print ( fontnamestr ) ; | |
if ( fontsize [curval ]!= fontdsize [curval ]) | |
{ | |
print ( 66125L ) ; | |
printscaled ( fontsize [curval ]) ; | |
print ( 65697L ) ; | |
} | |
} | |
break ; | |
case 5 : | |
print ( 65536L ) ; | |
break ; | |
case 16 : | |
{ | |
p = mem [p + 5 ].hh .v.RH ; | |
while ( ( p != -268435455L ) && ( ( ! ( p >= himemmin ) && ( ( mem [p ] | |
.hh.b0 == 3 ) || ( mem [p ].hh.b0 == 4 ) || ( mem [p ].hh.b0 == 5 ) | |
|| ( mem [p ].hh.b0 == 12 ) || ( ( mem [p ].hh.b0 == 7 ) && ( mem [ | |
p + 1 ].hh .v.LH == -268435455L ) && ( mem [p + 1 ].hh .v.RH == | |
-268435455L ) && ( mem [p ].hh.b1 == 0 ) ) || ( ( mem [p ].hh.b0 == | |
9 ) && ( mem [p + 1 ].cint == 0 ) ) || ( ( mem [p ].hh.b0 == 11 ) && | |
( ( mem [p + 1 ].cint == 0 ) || ( mem [p ].hh.b1 == 0 ) ) ) || ( ( | |
mem [p ].hh.b0 == 10 ) && ( mem [p + 1 ].hh .v.LH == membot ) ) || ( | |
( mem [p ].hh.b0 == 0 ) && ( mem [p + 1 ].cint == 0 ) && ( mem [p + | |
3 ].cint == 0 ) && ( mem [p + 2 ].cint == 0 ) && ( mem [p + 5 ].hh | |
.v.RH == -268435455L ) ) ) ) || ( ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 10 ) && ( mem [p ].hh.b1 == 8 ) ) ) ) p = mem [p ].hh | |
.v.RH ; | |
if ( ( p != -268435455L ) && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 40 ) && ( mem [p ].hh.b1 == 0 ) ) | |
printscaled ( mem [p + 1 ].cint ) ; | |
else print ( 48 ) ; | |
print ( 65697L ) ; | |
} | |
break ; | |
case 17 : | |
{ | |
q = mem [p + 5 ].hh .v.RH ; | |
p = prevrightmost ( q , -268435455L ) ; | |
while ( ( p != -268435455L ) && ( ( ! ( p >= himemmin ) && ( ( mem [p ] | |
.hh.b0 == 3 ) || ( mem [p ].hh.b0 == 4 ) || ( mem [p ].hh.b0 == 5 ) | |
|| ( mem [p ].hh.b0 == 12 ) || ( ( mem [p ].hh.b0 == 7 ) && ( mem [ | |
p + 1 ].hh .v.LH == -268435455L ) && ( mem [p + 1 ].hh .v.RH == | |
-268435455L ) && ( mem [p ].hh.b1 == 0 ) ) || ( ( mem [p ].hh.b0 == | |
9 ) && ( mem [p + 1 ].cint == 0 ) ) || ( ( mem [p ].hh.b0 == 11 ) && | |
( ( mem [p + 1 ].cint == 0 ) || ( mem [p ].hh.b1 == 0 ) ) ) || ( ( | |
mem [p ].hh.b0 == 10 ) && ( mem [p + 1 ].hh .v.LH == membot ) ) || ( | |
( mem [p ].hh.b0 == 0 ) && ( mem [p + 1 ].cint == 0 ) && ( mem [p + | |
3 ].cint == 0 ) && ( mem [p + 2 ].cint == 0 ) && ( mem [p + 5 ].hh | |
.v.RH == -268435455L ) ) ) ) || ( ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 10 ) && ( mem [p ].hh.b1 == 9 ) ) ) ) p = prevrightmost ( q | |
, p ) ; | |
if ( ( p != -268435455L ) && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 40 ) && ( mem [p ].hh.b1 == 1 ) ) | |
printscaled ( mem [p + 1 ].cint ) ; | |
else print ( 48 ) ; | |
print ( 65697L ) ; | |
} | |
break ; | |
case 18 : | |
printint ( curval ) ; | |
break ; | |
case 29 : | |
printint ( unifrand ( curval ) ) ; | |
break ; | |
case 30 : | |
printint ( normrand () ) ; | |
break ; | |
case 38 : | |
case 39 : | |
printchar ( curval ) ; | |
break ; | |
case 33 : | |
print ( 65537L ) ; | |
break ; | |
case 34 : | |
if ( ( fontarea [fnt ]== 65535L ) ) | |
aatprintfontname ( c , fontlayoutengine [fnt ], arg1 , arg2 ) ; | |
break ; | |
case 35 : | |
case 36 : | |
if ( ( fontarea [fnt ]== 65535L ) ) | |
aatprintfontname ( c , fontlayoutengine [fnt ], arg1 , arg2 ) ; | |
else if ( ( ( fontarea [fnt ]== 65534L ) && ( usingGraphite ( | |
fontlayoutengine [fnt ]) ) ) ) | |
grprintfontname ( c , fontlayoutengine [fnt ], arg1 , arg2 ) ; | |
break ; | |
case 37 : | |
if ( ( ( fontarea [fnt ]== 65535L ) || ( fontarea [fnt ]== 65534L ) ) | |
) | |
printglyphname ( fnt , arg1 ) ; | |
break ; | |
case 40 : | |
printfilename ( jobname , 0 , 0 ) ; | |
break ; | |
} | |
selector = oldsetting ; | |
mem [memtop - 12 ].hh .v.RH = strtokscat ( b , cat ) ; | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
} | |
halfword | |
zscantoks ( boolean macrodef , boolean xpand ) | |
{ | |
/* 40 22 30 31 32 */ register halfword Result; scantoks_regmem | |
halfword t ; | |
halfword s ; | |
halfword p ; | |
halfword q ; | |
halfword unbalance ; | |
halfword hashbrace ; | |
if ( macrodef ) | |
scannerstatus = 2 ; | |
else scannerstatus = 5 ; | |
warningindex = curcs ; | |
defref = getavail () ; | |
mem [defref ].hh .v.LH = -268435455L ; | |
p = defref ; | |
hashbrace = 0 ; | |
t = 25165872L ; | |
if ( macrodef ) | |
{ | |
while ( true ) { | |
lab22: gettoken () ; | |
if ( curtok < 6291456L ) | |
goto lab31 ; | |
if ( curcmd == 6 ) | |
{ | |
s = 27262976L + curchr ; | |
gettoken () ; | |
if ( curtok < 4194304L ) | |
{ | |
hashbrace = curtok ; | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = 29360128L ; | |
p = q ; | |
} | |
goto lab30 ; | |
} | |
if ( t == 25165881L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66128L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66129L ; | |
helpline [0 ]= 66130L ; | |
} | |
error () ; | |
goto lab22 ; | |
} | |
else { | |
incr ( t ) ; | |
if ( curtok != t ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66131L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66132L ; | |
helpline [0 ]= 66133L ; | |
} | |
backerror () ; | |
} | |
curtok = s ; | |
} | |
} | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
lab31: { | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = 29360128L ; | |
p = q ; | |
} | |
if ( curcmd == 2 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65985L ) ; | |
} | |
incr ( alignstate ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66126L ; | |
helpline [0 ]= 66127L ; | |
} | |
error () ; | |
goto lab40 ; | |
} | |
lab30: ; | |
} | |
else scanleftbrace () ; | |
unbalance = 1 ; | |
while ( true ) { | |
if ( xpand ) | |
{ | |
while ( true ) { | |
getnext () ; | |
if ( curcmd >= 113 ) { | |
if ( mem [mem [curchr ].hh .v.RH ].hh .v.LH == 29360129L ) | |
{ | |
curcmd = 0 ; | |
curchr = 1114113L ; | |
} | |
} | |
if ( curcmd <= 102 ) | |
goto lab32 ; | |
if ( curcmd != 111 ) | |
expand () ; | |
else { | |
q = thetoks () ; | |
if ( mem [memtop - 3 ].hh .v.RH != -268435455L ) | |
{ | |
mem [p ].hh .v.RH = mem [memtop - 3 ].hh .v.RH ; | |
p = q ; | |
} | |
} | |
} | |
lab32: xtoken () ; | |
} | |
else gettoken () ; | |
if ( curtok < 6291456L ) { | |
if ( curcmd < 2 ) | |
incr ( unbalance ) ; | |
else { | |
decr ( unbalance ) ; | |
if ( unbalance == 0 ) | |
goto lab40 ; | |
} | |
} | |
else if ( curcmd == 6 ) { | |
if ( macrodef ) | |
{ | |
s = curtok ; | |
if ( xpand ) | |
getxtoken () ; | |
else gettoken () ; | |
if ( curcmd != 6 ) { | |
if ( ( curtok <= 25165872L ) || ( curtok > t ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66134L ) ; | |
} | |
sprintcs ( warningindex ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66135L ; | |
helpline [1 ]= 66136L ; | |
helpline [0 ]= 66137L ; | |
} | |
backerror () ; | |
curtok = s ; | |
} | |
else curtok = 10485712L + curchr ; | |
} | |
} | |
} | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
lab40: scannerstatus = 0 ; | |
if ( hashbrace != 0 ) | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = hashbrace ; | |
p = q ; | |
} | |
Result = p ; | |
return Result ; | |
} | |
void | |
zreadtoks ( integer n , halfword r , halfword j ) | |
{ | |
/* 30 */ readtoks_regmem | |
halfword p ; | |
halfword q ; | |
integer s ; | |
smallnumber m ; | |
scannerstatus = 2 ; | |
warningindex = r ; | |
defref = getavail () ; | |
mem [defref ].hh .v.LH = -268435455L ; | |
p = defref ; | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = 29360128L ; | |
p = q ; | |
} | |
if ( ( n < 0 ) || ( n > 15 ) ) | |
m = 16 ; | |
else m = n ; | |
s = alignstate ; | |
alignstate = 1000000L ; | |
do { | |
beginfilereading () ; | |
curinput .namefield = m + 1 ; | |
if ( readopen [m ]== 2 ) { | |
if ( interaction > 1 ) { | |
if ( n < 0 ) | |
{ | |
; | |
print ( 65626L ) ; | |
terminput () ; | |
} | |
else { | |
; | |
println () ; | |
sprintcs ( r ) ; | |
{ | |
; | |
print ( 61 ) ; | |
terminput () ; | |
} | |
n = -1 ; | |
} | |
} | |
else fatalerror ( 66138L ) ; | |
} | |
else if ( readopen [m ]== 1 ) { | |
if ( inputln ( readfile [m ], false ) ) | |
readopen [m ]= 0 ; | |
else { | |
uclose ( readfile [m ]) ; | |
readopen [m ]= 2 ; | |
} | |
} | |
else { | |
if ( ! inputln ( readfile [m ], true ) ) | |
{ | |
uclose ( readfile [m ]) ; | |
readopen [m ]= 2 ; | |
if ( alignstate != 1000000L ) | |
{ | |
runaway () ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66139L ) ; | |
} | |
printesc ( 65855L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66140L ; | |
} | |
alignstate = 1000000L ; | |
curinput .limitfield = 0 ; | |
error () ; | |
} | |
} | |
} | |
curinput .limitfield = last ; | |
if ( ( eqtb [8939288L ].cint < 0 ) || ( eqtb [8939288L ].cint > 255 ) | |
) | |
decr ( curinput .limitfield ) ; | |
else buffer [curinput .limitfield ]= eqtb [8939288L ].cint ; | |
first = curinput .limitfield + 1 ; | |
curinput .locfield = curinput .startfield ; | |
curinput .statefield = 33 ; | |
if ( j == 1 ) | |
{ | |
while ( curinput .locfield <= curinput .limitfield ) { | |
curchr = buffer [curinput .locfield ]; | |
incr ( curinput .locfield ) ; | |
if ( curchr == 32 ) | |
curtok = 20971552L ; | |
else curtok = curchr + 25165824L ; | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
goto lab30 ; | |
} | |
while ( true ) { | |
gettoken () ; | |
if ( curtok == 0 ) | |
goto lab30 ; | |
if ( alignstate < 1000000L ) | |
{ | |
do { | |
gettoken () ; | |
} while ( ! ( curtok == 0 ) ) ; | |
alignstate = 1000000L ; | |
goto lab30 ; | |
} | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} | |
lab30: endfilereading () ; | |
} while ( ! ( alignstate == 1000000L ) ) ; | |
curval = defref ; | |
scannerstatus = 0 ; | |
alignstate = s ; | |
} | |
void | |
passtext ( void ) | |
{ | |
/* 30 */ passtext_regmem | |
integer l ; | |
smallnumber savescannerstatus ; | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 1 ; | |
l = 0 ; | |
skipline = line ; | |
while ( true ) { | |
getnext () ; | |
if ( curcmd == 108 ) | |
{ | |
if ( l == 0 ) | |
goto lab30 ; | |
if ( curchr == 2 ) | |
decr ( l ) ; | |
} | |
else if ( curcmd == 107 ) | |
incr ( l ) ; | |
} | |
lab30: scannerstatus = savescannerstatus ; | |
if ( eqtb [8939301L ].cint > 0 ) | |
showcurcmdchr () ; | |
} | |
void | |
zchangeiflimit ( smallnumber l , halfword p ) | |
{ | |
/* 10 */ changeiflimit_regmem | |
halfword q ; | |
if ( p == condptr ) | |
iflimit = l ; | |
else { | |
q = condptr ; | |
while ( true ) { | |
if ( q == -268435455L ) | |
confusion ( 66141L ) ; | |
if ( mem [q ].hh .v.RH == p ) | |
{ | |
mem [q ].hh.b0 = l ; | |
return ; | |
} | |
q = mem [q ].hh .v.RH ; | |
} | |
} | |
} | |
void | |
conditional ( void ) | |
{ | |
/* 10 50 */ conditional_regmem | |
boolean b ; | |
boolean e ; | |
unsigned char r ; | |
integer m, n ; | |
halfword p, q ; | |
smallnumber savescannerstatus ; | |
halfword savecondptr ; | |
smallnumber thisif ; | |
boolean isunless ; | |
if ( eqtb [8939301L ].cint > 0 ) { | |
if ( eqtb [8939276L ].cint <= 1 ) | |
showcurcmdchr () ; | |
} | |
{ | |
p = getnode ( 2 ) ; | |
mem [p ].hh .v.RH = condptr ; | |
mem [p ].hh.b0 = iflimit ; | |
mem [p ].hh.b1 = curif ; | |
mem [p + 1 ].cint = ifline ; | |
condptr = p ; | |
curif = curchr ; | |
iflimit = 1 ; | |
ifline = line ; | |
} | |
savecondptr = condptr ; | |
isunless = ( curchr >= 32 ) ; | |
thisif = curchr % 32 ; | |
switch ( thisif ) | |
{case 0 : | |
case 1 : | |
{ | |
{ | |
getxtoken () ; | |
if ( curcmd == 0 ) { | |
if ( curchr == 1114113L ) | |
{ | |
curcmd = 13 ; | |
curchr = curtok - 33554432L ; | |
} | |
} | |
} | |
if ( ( curcmd > 13 ) || ( curchr > 1114111L ) ) | |
{ | |
m = 0 ; | |
n = 1114112L ; | |
} | |
else { | |
m = curcmd ; | |
n = curchr ; | |
} | |
{ | |
getxtoken () ; | |
if ( curcmd == 0 ) { | |
if ( curchr == 1114113L ) | |
{ | |
curcmd = 13 ; | |
curchr = curtok - 33554432L ; | |
} | |
} | |
} | |
if ( ( curcmd > 13 ) || ( curchr > 1114111L ) ) | |
{ | |
curcmd = 0 ; | |
curchr = 1114112L ; | |
} | |
if ( thisif == 0 ) | |
b = ( n == curchr ) ; | |
else b = ( m == curcmd ) ; | |
} | |
break ; | |
case 2 : | |
case 3 : | |
{ | |
if ( thisif == 2 ) | |
scanint () ; | |
else scandimen ( false , false , false ) ; | |
n = curval ; | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( ( curtok >= 25165884L ) && ( curtok <= 25165886L ) ) | |
r = curtok - 25165824L ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66167L ) ; | |
} | |
printcmdchr ( 107 , thisif ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66168L ; | |
} | |
backerror () ; | |
r = 61 ; | |
} | |
if ( thisif == 2 ) | |
scanint () ; | |
else scandimen ( false , false , false ) ; | |
switch ( r ) | |
{case 60 : | |
b = ( n < curval ) ; | |
break ; | |
case 61 : | |
b = ( n == curval ) ; | |
break ; | |
case 62 : | |
b = ( n > curval ) ; | |
break ; | |
} | |
} | |
break ; | |
case 4 : | |
{ | |
scanint () ; | |
b = odd ( curval ) ; | |
} | |
break ; | |
case 5 : | |
b = ( abs ( curlist .modefield ) == 1 ) ; | |
break ; | |
case 6 : | |
b = ( abs ( curlist .modefield ) == 104 ) ; | |
break ; | |
case 7 : | |
b = ( abs ( curlist .modefield ) == 207 ) ; | |
break ; | |
case 8 : | |
b = ( curlist .modefield < 0 ) ; | |
break ; | |
case 9 : | |
case 10 : | |
case 11 : | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
p = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
p = -268435455L ; | |
else p = mem [curptr + 1 ].hh .v.RH ; | |
} | |
if ( thisif == 9 ) | |
b = ( p == -268435455L ) ; | |
else if ( p == -268435455L ) | |
b = false ; | |
else if ( thisif == 10 ) | |
b = ( mem [p ].hh.b0 == 0 ) ; | |
else b = ( mem [p ].hh.b0 == 1 ) ; | |
} | |
break ; | |
case 12 : | |
{ | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 0 ; | |
getnext () ; | |
n = curcs ; | |
p = curcmd ; | |
q = curchr ; | |
getnext () ; | |
if ( curcmd != p ) | |
b = false ; | |
else if ( curcmd < 113 ) | |
b = ( curchr == q ) ; | |
else { | |
p = mem [curchr ].hh .v.RH ; | |
q = mem [eqtb [n ].hh .v.RH ].hh .v.RH ; | |
if ( p == q ) | |
b = true ; | |
else { | |
while ( ( p != -268435455L ) && ( q != -268435455L ) ) if ( mem [p | |
].hh .v.LH != mem [q ].hh .v.LH ) | |
p = -268435455L ; | |
else { | |
p = mem [p ].hh .v.RH ; | |
q = mem [q ].hh .v.RH ; | |
} | |
b = ( ( p == -268435455L ) && ( q == -268435455L ) ) ; | |
} | |
} | |
scannerstatus = savescannerstatus ; | |
} | |
break ; | |
case 13 : | |
{ | |
scanfourbitintor18 () ; | |
if ( curval == 18 ) | |
b = ! shellenabledp ; | |
else b = ( readopen [curval ]== 2 ) ; | |
} | |
break ; | |
case 14 : | |
b = true ; | |
break ; | |
case 15 : | |
b = false ; | |
break ; | |
case 17 : | |
{ | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 0 ; | |
getnext () ; | |
b = ( curcmd != 103 ) ; | |
scannerstatus = savescannerstatus ; | |
} | |
break ; | |
case 18 : | |
{ | |
n = getavail () ; | |
p = n ; | |
e = isincsname ; | |
isincsname = true ; | |
do { | |
getxtoken () ; | |
if ( curcs == 0 ) | |
{ | |
q = getavail () ; | |
mem [p ].hh .v.RH = q ; | |
mem [q ].hh .v.LH = curtok ; | |
p = q ; | |
} | |
} while ( ! ( curcs != 0 ) ) ; | |
if ( curcmd != 67 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65953L ) ; | |
} | |
printesc ( 65815L ) ; | |
print ( 65954L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 65955L ; | |
helpline [0 ]= 65956L ; | |
} | |
backerror () ; | |
} | |
m = first ; | |
p = mem [n ].hh .v.RH ; | |
while ( p != -268435455L ) { | |
if ( m >= maxbufstack ) | |
{ | |
maxbufstack = m + 1 ; | |
if ( maxbufstack == bufsize ) | |
overflow ( 65538L , bufsize ) ; | |
} | |
buffer [m ]= mem [p ].hh .v.LH % 2097152L ; | |
incr ( m ) ; | |
p = mem [p ].hh .v.RH ; | |
} | |
if ( m > first + 1 ) | |
curcs = idlookup ( first , m - first ) ; | |
else if ( m == first ) | |
curcs = 2228225L ; | |
else curcs = 1114113L + buffer [first ]; | |
flushlist ( n ) ; | |
b = ( eqtb [curcs ].hh.b0 != 103 ) ; | |
isincsname = e ; | |
} | |
break ; | |
case 20 : | |
b = isincsname ; | |
break ; | |
case 19 : | |
{ | |
scanfontident () ; | |
n = curval ; | |
scanusvnum () ; | |
if ( ( ( fontarea [n ]== 65535L ) || ( fontarea [n ]== 65534L ) ) ) | |
b = ( mapchartoglyph ( n , curval ) > 0 ) ; | |
else { | |
if ( ( fontbc [n ]<= curval ) && ( fontec [n ]>= curval ) ) | |
b = ( fontinfo [charbase [n ]+ effectivechar ( true , n , curval ) | |
].qqqq .b0 > 0 ) ; | |
else b = false ; | |
} | |
} | |
break ; | |
case 16 : | |
{ | |
scanint () ; | |
n = curval ; | |
if ( eqtb [8939276L ].cint > 1 ) | |
{ | |
begindiagnostic () ; | |
print ( 66169L ) ; | |
printint ( n ) ; | |
printchar ( 125 ) ; | |
enddiagnostic ( false ) ; | |
} | |
while ( n != 0 ) { | |
passtext () ; | |
if ( condptr == savecondptr ) { | |
if ( curchr == 4 ) | |
decr ( n ) ; | |
else goto lab50 ; | |
} | |
else if ( curchr == 2 ) | |
{ | |
if ( ifstack [inopen ]== condptr ) | |
ifwarning () ; | |
p = condptr ; | |
ifline = mem [p + 1 ].cint ; | |
curif = mem [p ].hh.b1 ; | |
iflimit = mem [p ].hh.b0 ; | |
condptr = mem [p ].hh .v.RH ; | |
freenode ( p , 2 ) ; | |
} | |
} | |
changeiflimit ( 4 , savecondptr ) ; | |
return ; | |
} | |
break ; | |
case 21 : | |
{ | |
savescannerstatus = scannerstatus ; | |
scannerstatus = 0 ; | |
getnext () ; | |
scannerstatus = savescannerstatus ; | |
if ( curcs < 2228226L ) | |
m = primlookup ( curcs - 1114113L ) ; | |
else m = primlookup ( hash [curcs ].v.RH ) ; | |
b = ( ( curcmd != 103 ) && ( m != 0 ) && ( curcmd == eqtb [2243238L + m | |
].hh.b0 ) && ( curchr == eqtb [2243238L + m ].hh .v.RH ) ) ; | |
} | |
break ; | |
} | |
if ( isunless ) | |
b = ! b ; | |
if ( eqtb [8939276L ].cint > 1 ) | |
{ | |
begindiagnostic () ; | |
if ( b ) | |
print ( 66165L ) ; | |
else print ( 66166L ) ; | |
enddiagnostic ( false ) ; | |
} | |
if ( b ) | |
{ | |
changeiflimit ( 3 , savecondptr ) ; | |
return ; | |
} | |
while ( true ) { | |
passtext () ; | |
if ( condptr == savecondptr ) | |
{ | |
if ( curchr != 4 ) | |
goto lab50 ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66163L ) ; | |
} | |
printesc ( 66161L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66164L ; | |
} | |
error () ; | |
} | |
else if ( curchr == 2 ) | |
{ | |
if ( ifstack [inopen ]== condptr ) | |
ifwarning () ; | |
p = condptr ; | |
ifline = mem [p + 1 ].cint ; | |
curif = mem [p ].hh.b1 ; | |
iflimit = mem [p ].hh.b0 ; | |
condptr = mem [p ].hh .v.RH ; | |
freenode ( p , 2 ) ; | |
} | |
} | |
lab50: if ( curchr == 2 ) | |
{ | |
if ( ifstack [inopen ]== condptr ) | |
ifwarning () ; | |
p = condptr ; | |
ifline = mem [p + 1 ].cint ; | |
curif = mem [p ].hh.b1 ; | |
iflimit = mem [p ].hh.b0 ; | |
condptr = mem [p ].hh .v.RH ; | |
freenode ( p , 2 ) ; | |
} | |
else iflimit = 2 ; | |
} | |
void | |
beginname ( void ) | |
{ | |
beginname_regmem | |
areadelimiter = 0 ; | |
extdelimiter = 0 ; | |
quotedfilename = false ; | |
filenamequotechar = 0 ; | |
} | |
boolean | |
zmorename ( UTF16code c ) | |
{ | |
register boolean Result; morename_regmem | |
if ( stopatspace && ( c == 32 ) && ( filenamequotechar == 0 ) ) | |
Result = false ; | |
else if ( stopatspace && ( filenamequotechar != 0 ) && ( c == | |
filenamequotechar ) ) | |
{ | |
filenamequotechar = 0 ; | |
Result = true ; | |
} | |
else if ( stopatspace && ( filenamequotechar == 0 ) && ( ( c == 34 ) || ( c | |
== 39 ) ) ) | |
{ | |
filenamequotechar = c ; | |
quotedfilename = true ; | |
Result = true ; | |
} | |
else { | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= c ; | |
incr ( poolptr ) ; | |
} | |
if ( ISDIRSEP ( c ) ) | |
{ | |
areadelimiter = ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
extdelimiter = 0 ; | |
} | |
else if ( c == 46 ) | |
extdelimiter = ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
Result = true ; | |
} | |
return Result ; | |
} | |
void | |
endname ( void ) | |
{ | |
endname_regmem | |
strnumber tempstr ; | |
poolpointer j ; | |
if ( strptr + 3 > maxstrings ) | |
overflow ( 65540L , maxstrings - initstrptr ) ; | |
if ( areadelimiter == 0 ) | |
curarea = 65626L ; | |
else { | |
curarea = strptr ; | |
strstart [( strptr + 1 ) - 65536L ]= strstart [( strptr ) - 65536L ]+ | |
areadelimiter ; | |
incr ( strptr ) ; | |
tempstr = searchstring ( curarea ) ; | |
if ( tempstr > 0 ) | |
{ | |
curarea = tempstr ; | |
decr ( strptr ) ; | |
{register integer for_end; j = strstart [( strptr + 1 ) - 65536L ]; | |
for_end = poolptr - 1 ; if ( j <= for_end) do | |
{ | |
strpool [j - areadelimiter ]= strpool [j ]; | |
} | |
while ( j++ < for_end ) ;} | |
poolptr = poolptr - areadelimiter ; | |
} | |
} | |
if ( extdelimiter == 0 ) | |
{ | |
curext = 65626L ; | |
curname = slowmakestring () ; | |
} | |
else { | |
curname = strptr ; | |
strstart [( strptr + 1 ) - 65536L ]= strstart [( strptr ) - 65536L ]+ | |
extdelimiter - areadelimiter - 1 ; | |
incr ( strptr ) ; | |
curext = makestring () ; | |
decr ( strptr ) ; | |
tempstr = searchstring ( curname ) ; | |
if ( tempstr > 0 ) | |
{ | |
curname = tempstr ; | |
decr ( strptr ) ; | |
{register integer for_end; j = strstart [( strptr + 1 ) - 65536L ]; | |
for_end = poolptr - 1 ; if ( j <= for_end) do | |
{ | |
strpool [j - extdelimiter + areadelimiter + 1 ]= strpool [j ]; | |
} | |
while ( j++ < for_end ) ;} | |
poolptr = poolptr - extdelimiter + areadelimiter + 1 ; | |
} | |
curext = slowmakestring () ; | |
} | |
} | |
void | |
zpackfilename ( strnumber n , strnumber a , strnumber e ) | |
{ | |
packfilename_regmem | |
integer k ; | |
UTF16code c ; | |
poolpointer j ; | |
k = 0 ; | |
if ( nameoffile ) | |
libcfree ( nameoffile ) ; | |
nameoffile = xmallocarray ( UTF8code , ( length ( a ) + length ( n ) + | |
length ( e ) ) * 3 + 1 ) ; | |
{register integer for_end; j = strstart [( a ) - 65536L ];for_end = | |
strstart [( a + 1 ) - 65536L ]- 1 ; if ( j <= for_end) do | |
{ | |
c = strpool [j ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = strstart [( n ) - 65536L ];for_end = | |
strstart [( n + 1 ) - 65536L ]- 1 ; if ( j <= for_end) do | |
{ | |
c = strpool [j ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = strstart [( e ) - 65536L ];for_end = | |
strstart [( e + 1 ) - 65536L ]- 1 ; if ( j <= for_end) do | |
{ | |
c = strpool [j ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( j++ < for_end ) ;} | |
if ( k <= maxint ) | |
namelength = k ; | |
else namelength = maxint ; | |
nameoffile [namelength + 1 ]= 0 ; | |
} | |
void | |
zpackbufferedname ( smallnumber n , integer a , integer b ) | |
{ | |
packbufferedname_regmem | |
integer k ; | |
UTF16code c ; | |
integer j ; | |
if ( n + b - a + 5 > maxint ) | |
b = a + maxint - n - 5 ; | |
k = 0 ; | |
if ( nameoffile ) | |
libcfree ( nameoffile ) ; | |
nameoffile = xmallocarray ( UTF8code , n + ( b - a + 1 ) + 5 ) ; | |
{register integer for_end; j = 1 ;for_end = n ; if ( j <= for_end) do | |
{ | |
c = TEXformatdefault [j ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = a ;for_end = b ; if ( j <= for_end) do | |
{ | |
c = buffer [j ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = formatdefaultlength - 3 ;for_end = | |
formatdefaultlength ; if ( j <= for_end) do | |
{ | |
c = TEXformatdefault [j ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( j++ < for_end ) ;} | |
if ( k <= maxint ) | |
namelength = k ; | |
else namelength = maxint ; | |
nameoffile [namelength + 1 ]= 0 ; | |
} | |
strnumber | |
makenamestring ( void ) | |
{ | |
register strnumber Result; makenamestring_regmem | |
integer k ; | |
poolpointer saveareadelimiter, saveextdelimiter ; | |
boolean savenameinprogress, savestopatspace ; | |
if ( ( poolptr + namelength > poolsize ) || ( strptr == maxstrings ) || ( ( | |
poolptr - strstart [( strptr ) - 65536L ]) > 0 ) ) | |
Result = 63 ; | |
else { | |
makeutf16name () ; | |
{register integer for_end; k = 0 ;for_end = namelength16 - 1 ; if ( k <= | |
for_end) do | |
{ | |
strpool [poolptr ]= nameoffile16 [k ]; | |
incr ( poolptr ) ; | |
} | |
while ( k++ < for_end ) ;} | |
Result = makestring () ; | |
saveareadelimiter = areadelimiter ; | |
saveextdelimiter = extdelimiter ; | |
savenameinprogress = nameinprogress ; | |
savestopatspace = stopatspace ; | |
nameinprogress = true ; | |
beginname () ; | |
stopatspace = false ; | |
k = 0 ; | |
while ( ( k < namelength16 ) && ( morename ( nameoffile16 [k ]) ) ) incr | |
( k ) ; | |
stopatspace = savestopatspace ; | |
endname () ; | |
nameinprogress = savenameinprogress ; | |
areadelimiter = saveareadelimiter ; | |
extdelimiter = saveextdelimiter ; | |
} | |
return Result ; | |
} | |
strnumber | |
zzumakenamestring ( unicodefile * f ) | |
{ | |
register strnumber Result; umakenamestring_regmem | |
Result = makenamestring () ; | |
return Result ; | |
} | |
strnumber | |
zamakenamestring ( alphafile f ) | |
{ | |
register strnumber Result; amakenamestring_regmem | |
Result = makenamestring () ; | |
return Result ; | |
} | |
strnumber | |
zbmakenamestring ( bytefile f ) | |
{ | |
register strnumber Result; bmakenamestring_regmem | |
Result = makenamestring () ; | |
return Result ; | |
} | |
strnumber | |
zzwmakenamestring ( wordfile * f ) | |
{ | |
register strnumber Result; wmakenamestring_regmem | |
Result = makenamestring () ; | |
return Result ; | |
} | |
void | |
scanfilename ( void ) | |
{ | |
/* 30 */ scanfilename_regmem | |
halfword savewarningindex ; | |
savewarningindex = warningindex ; | |
warningindex = curcs ; | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
backinput () ; | |
if ( curcmd == 1 ) | |
scanfilenamebraced () ; | |
else { | |
nameinprogress = true ; | |
beginname () ; | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
while ( true ) { | |
if ( ( curcmd > 12 ) || ( curchr > 65535L ) ) | |
{ | |
backinput () ; | |
goto lab30 ; | |
} | |
if ( ! morename ( curchr ) ) | |
goto lab30 ; | |
getxtoken () ; | |
} | |
} | |
lab30: endname () ; | |
nameinprogress = false ; | |
warningindex = savewarningindex ; | |
} | |
void | |
zpackjobname ( strnumber s ) | |
{ | |
packjobname_regmem | |
curarea = 65626L ; | |
curext = s ; | |
curname = jobname ; | |
packfilename ( curname , curarea , curext ) ; | |
} | |
void | |
zpromptfilename ( strnumber s , strnumber e ) | |
{ | |
/* 30 */ promptfilename_regmem | |
integer k ; | |
strnumber savedcurname ; | |
strnumber savedcurext ; | |
strnumber savedcurarea ; | |
if ( interaction == 2 ) | |
; | |
if ( s == 66171L ) | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66172L ) ; | |
} | |
else { | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66173L ) ; | |
} | |
printfilename ( curname , curarea , curext ) ; | |
print ( 66174L ) ; | |
if ( ( e == 66175L ) || ( e == 65626L ) ) | |
showcontext () ; | |
println () ; | |
printcstring ( promptfilenamehelpmsg ) ; | |
if ( ( e != 65626L ) ) | |
{ | |
print ( 66176L ) ; | |
print ( e ) ; | |
print ( 39 ) ; | |
} | |
print ( 41 ) ; | |
println () ; | |
printnl ( 66177L ) ; | |
print ( s ) ; | |
if ( interaction < 2 ) | |
fatalerror ( 66178L ) ; | |
savedcurname = curname ; | |
savedcurext = curext ; | |
savedcurarea = curarea ; | |
{ | |
; | |
print ( 65593L ) ; | |
terminput () ; | |
} | |
{ | |
beginname () ; | |
k = first ; | |
while ( ( buffer [k ]== 32 ) && ( k < last ) ) incr ( k ) ; | |
while ( true ) { | |
if ( k == last ) | |
goto lab30 ; | |
if ( ! morename ( buffer [k ]) ) | |
goto lab30 ; | |
incr ( k ) ; | |
} | |
lab30: endname () ; | |
} | |
if ( ( length ( curname ) == 0 ) && ( curext == 65626L ) && ( curarea == | |
65626L ) ) | |
{ | |
curname = savedcurname ; | |
curext = savedcurext ; | |
curarea = savedcurarea ; | |
} | |
else if ( curext == 65626L ) | |
curext = e ; | |
packfilename ( curname , curarea , curext ) ; | |
} | |
void | |
openlogfile ( void ) | |
{ | |
openlogfile_regmem | |
unsigned char oldsetting ; | |
integer k ; | |
integer l ; | |
constcstring months ; | |
oldsetting = selector ; | |
if ( jobname == 0 ) | |
jobname = getjobname ( 66182L ) ; | |
packjobname ( 66183L ) ; | |
recorderchangefilename ( stringcast ( nameoffile + 1 ) ) ; | |
packjobname ( 66184L ) ; | |
while ( ! aopenout ( logfile ) ) { | |
selector = 17 ; | |
promptfilename ( 66186L , 66184L ) ; | |
} | |
texmflogname = amakenamestring ( logfile ) ; | |
selector = 18 ; | |
logopened = true ; | |
{ | |
if ( srcspecialsp || filelineerrorstylep || parsefirstlinep ) | |
fprintf ( logfile , "%s%s%s", "This is XeTeX, Version 3.141592653" , "-2.6" , "-0.999993" ) ; | |
else | |
fprintf ( logfile , "%s%s%s", "This is XeTeX, Version 3.141592653" , "-2.6" , "-0.999993" ) ; | |
Fputs ( logfile , versionstring ) ; | |
print ( formatident ) ; | |
print ( 66187L ) ; | |
printint ( sysday ) ; | |
printchar ( 32 ) ; | |
months = " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" ; | |
{register integer for_end; k = 3 * sysmonth - 2 ;for_end = 3 * sysmonth | |
; if ( k <= for_end) do | |
putc ( months [k ], logfile ); | |
while ( k++ < for_end ) ;} | |
printchar ( 32 ) ; | |
printint ( sysyear ) ; | |
printchar ( 32 ) ; | |
printtwo ( systime / 60 ) ; | |
printchar ( 58 ) ; | |
printtwo ( systime % 60 ) ; | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
; | |
putc ('\n', logfile ); | |
Fputs ( logfile , "entering extended mode" ) ; | |
} | |
if ( shellenabledp ) | |
{ | |
putc ('\n', logfile ); | |
putc ( ' ' , logfile ); | |
if ( restrictedshell ) | |
{ | |
Fputs ( logfile , "restricted " ) ; | |
} | |
Fputs ( logfile , "\\write18 enabled." ) ; | |
} | |
if ( srcspecialsp ) | |
{ | |
putc ('\n', logfile ); | |
Fputs ( logfile , " Source specials enabled." ) ; | |
} | |
if ( filelineerrorstylep ) | |
{ | |
putc ('\n', logfile ); | |
Fputs ( logfile , " file:line:error style messages enabled." ) ; | |
} | |
if ( parsefirstlinep ) | |
{ | |
putc ('\n', logfile ); | |
Fputs ( logfile , " %&-line parsing enabled." ) ; | |
} | |
if ( translatefilename ) | |
{ | |
putc ('\n', logfile ); | |
Fputs ( logfile , " (WARNING: translate-file \"" ) ; | |
fputs ( translatefilename , logfile ) ; | |
Fputs ( logfile , "\" ignored)" ) ; | |
} | |
} | |
if ( mltexenabledp ) | |
{ | |
putc ('\n', logfile ); | |
Fputs ( logfile , "MLTeX v2.2 enabled" ) ; | |
} | |
inputstack [inputptr ]= curinput ; | |
printnl ( 66185L ) ; | |
l = inputstack [0 ].limitfield ; | |
if ( buffer [l ]== eqtb [8939288L ].cint ) | |
decr ( l ) ; | |
{register integer for_end; k = 1 ;for_end = l ; if ( k <= for_end) do | |
print ( buffer [k ]) ; | |
while ( k++ < for_end ) ;} | |
println () ; | |
selector = oldsetting + 2 ; | |
} | |
void | |
startinput ( void ) | |
{ | |
/* 30 */ startinput_regmem | |
strnumber tempstr ; | |
halfword v ; | |
integer k ; | |
scanfilename () ; | |
packfilename ( curname , curarea , curext ) ; | |
while ( true ) { | |
beginfilereading () ; | |
texinputtype = 1 ; | |
if ( kpseinnameok ( stringcast ( nameoffile + 1 ) ) && uopenin ( inputfile | |
[curinput .indexfield ], kpsetexformat , eqtb [8939318L ].cint , eqtb | |
[8939319L ].cint ) ) | |
{ | |
makeutf16name () ; | |
nameinprogress = true ; | |
beginname () ; | |
stopatspace = false ; | |
k = 0 ; | |
while ( ( k < namelength16 ) && ( morename ( nameoffile16 [k ]) ) ) | |
incr ( k ) ; | |
stopatspace = true ; | |
endname () ; | |
nameinprogress = false ; | |
goto lab30 ; | |
} | |
endfilereading () ; | |
promptfilename ( 66171L , 65626L ) ; | |
} | |
lab30: curinput .namefield = amakenamestring ( inputfile [curinput | |
.indexfield ]) ; | |
sourcefilenamestack [inopen ]= curinput .namefield ; | |
fullsourcefilenamestack [inopen ]= makefullnamestring () ; | |
if ( curinput .namefield == strptr - 1 ) | |
{ | |
tempstr = searchstring ( curinput .namefield ) ; | |
if ( tempstr > 0 ) | |
{ | |
curinput .namefield = tempstr ; | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
} | |
} | |
if ( jobname == 0 ) | |
{ | |
jobname = getjobname ( curname ) ; | |
openlogfile () ; | |
} | |
if ( termoffset + length ( fullsourcefilenamestack [inopen ]) > | |
maxprintline - 2 ) | |
println () ; | |
else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) | |
printchar ( 32 ) ; | |
printchar ( 40 ) ; | |
incr ( openparens ) ; | |
print ( fullsourcefilenamestack [inopen ]) ; | |
fflush ( stdout ) ; | |
if ( eqtb [8939298L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
println () ; | |
printchar ( 126 ) ; | |
v = inputptr - 1 ; | |
if ( v < eqtb [8939298L ].cint ) | |
while ( v > 0 ) { | |
printchar ( 46 ) ; | |
decr ( v ) ; | |
} | |
else printchar ( 126 ) ; | |
print ( 66188L ) ; | |
print ( curname ) ; | |
print ( curext ) ; | |
println () ; | |
enddiagnostic ( false ) ; | |
} | |
curinput .statefield = 33 ; | |
synctexstartinput () ; | |
{ | |
line = 1 ; | |
if ( inputln ( inputfile [curinput .indexfield ], false ) ) | |
; | |
firmuptheline () ; | |
if ( ( eqtb [8939288L ].cint < 0 ) || ( eqtb [8939288L ].cint > 255 ) | |
) | |
decr ( curinput .limitfield ) ; | |
else buffer [curinput .limitfield ]= eqtb [8939288L ].cint ; | |
first = curinput .limitfield + 1 ; | |
curinput .locfield = curinput .startfield ; | |
} | |
} | |
fourquarters | |
zeffectivecharinfo ( internalfontnumber f , quarterword c ) | |
{ | |
/* 10 */ register fourquarters Result; effectivecharinfo_regmem | |
fourquarters ci ; | |
integer basec ; | |
if ( ( ! xtxligaturepresent ) && ( fontmapping [f ]!= nil ) ) | |
c = applytfmfontmapping ( fontmapping [f ], c ) ; | |
xtxligaturepresent = false ; | |
if ( ! mltexenabledp ) | |
{ | |
Result = fontinfo [charbase [f ]+ c ].qqqq ; | |
return Result ; | |
} | |
if ( fontec [f ]>= c ) { | |
if ( fontbc [f ]<= c ) | |
{ | |
ci = fontinfo [charbase [f ]+ c ].qqqq ; | |
if ( ( ci .b0 > 0 ) ) | |
{ | |
Result = ci ; | |
return Result ; | |
} | |
} | |
} | |
if ( c >= eqtb [8939295L ].cint ) { | |
if ( c <= eqtb [8939296L ].cint ) { | |
if ( ( eqtb [7825128L + c ].hh .v.RH > 0 ) ) | |
{ | |
basec = ( eqtb [7825128L + c ].hh .v.RH % 256 ) ; | |
if ( fontec [f ]>= basec ) { | |
if ( fontbc [f ]<= basec ) | |
{ | |
ci = fontinfo [charbase [f ]+ basec ].qqqq ; | |
if ( ( ci .b0 > 0 ) ) | |
{ | |
Result = ci ; | |
return Result ; | |
} | |
} | |
} | |
} | |
} | |
} | |
Result = nullcharacter ; | |
return Result ; | |
} | |
void | |
zprintucscode ( UnicodeScalar n ) | |
{ | |
printucscode_regmem | |
unsigned char k ; | |
k = 0 ; | |
print ( 66216L ) ; | |
do { | |
dig [k ]= n % 16 ; | |
n = n / 16 ; | |
incr ( k ) ; | |
} while ( ! ( n == 0 ) ) ; | |
while ( k < 4 ) { | |
dig [k ]= 0 ; | |
incr ( k ) ; | |
} | |
printthedigs ( k ) ; | |
} | |
void | |
zcharwarning ( internalfontnumber f , integer c ) | |
{ | |
charwarning_regmem | |
integer oldsetting ; | |
if ( eqtb [8939275L ].cint > 0 ) | |
{ | |
oldsetting = eqtb [8939269L ].cint ; | |
if ( ( eTeXmode == 1 ) && ( eqtb [8939275L ].cint > 1 ) ) | |
eqtb [8939269L ].cint = 1 ; | |
if ( eqtb [8939275L ].cint > 2 ) | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66217L ) ; | |
} | |
else { | |
begindiagnostic () ; | |
printnl ( 66217L ) ; | |
} | |
if ( c < 65536L ) | |
print ( c ) ; | |
else printchar ( c ) ; | |
print ( 65566L ) ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
printucscode ( c ) ; | |
else printhex ( c ) ; | |
print ( 41 ) ; | |
print ( 66218L ) ; | |
print ( fontname [f ]) ; | |
if ( eqtb [8939275L ].cint < 3 ) | |
printchar ( 33 ) ; | |
eqtb [8939269L ].cint = oldsetting ; | |
if ( eqtb [8939275L ].cint > 2 ) | |
{ | |
helpptr = 0 ; | |
error () ; | |
} | |
else enddiagnostic ( false ) ; | |
} | |
} | |
halfword | |
znewnativewordnode ( internalfontnumber f , integer n ) | |
{ | |
register halfword Result; newnativewordnode_regmem | |
integer l ; | |
halfword q ; | |
l = 6 + ( n * sizeof ( UTF16code ) + sizeof ( memoryword ) - 1 ) / sizeof ( | |
memoryword ) ; | |
q = getnode ( l ) ; | |
mem [q ].hh.b0 = 8 ; | |
if ( ( eqtb [8939322L ].cint > 0 ) ) | |
mem [q ].hh.b1 = 41 ; | |
else mem [q ].hh.b1 = 40 ; | |
mem [q + 4 ].qqqq .b0 = l ; | |
mem [q + 4 ].qqqq .b1 = f ; | |
mem [q + 4 ].qqqq .b2 = n ; | |
mem [q + 4 ].qqqq .b3 = 0 ; | |
mem [q + 5 ].ptr = nullptr ; | |
Result = q ; | |
return Result ; | |
} | |
halfword | |
znewnativecharacter ( internalfontnumber f , UnicodeScalar c ) | |
{ | |
register halfword Result; newnativecharacter_regmem | |
halfword p ; | |
integer i, len ; | |
if ( fontmapping [f ]!= 0 ) | |
{ | |
if ( c > 65535L ) | |
{ | |
{ | |
if ( poolptr + 2 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= ( c - 65536L ) / 1024 + 55296L ; | |
incr ( poolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= ( c - 65536L ) % 1024 + 56320L ; | |
incr ( poolptr ) ; | |
} | |
} | |
else { | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= c ; | |
incr ( poolptr ) ; | |
} | |
} | |
len = applymapping ( fontmapping [f ], addressof ( strpool [strstart [ | |
( strptr ) - 65536L ]]) , ( poolptr - strstart [( strptr ) - 65536L ]) | |
) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
i = 0 ; | |
while ( i < len ) { | |
if ( ( mappedtext [i ]>= 55296L ) && ( mappedtext [i ]< 56320L ) ) | |
{ | |
c = ( mappedtext [i ]- 55296L ) * 1024 + mappedtext [i + 1 ]+ 9216 | |
; | |
if ( mapchartoglyph ( f , c ) == 0 ) | |
{ | |
charwarning ( f , c ) ; | |
} | |
i = i + 2 ; | |
} | |
else { | |
if ( mapchartoglyph ( f , mappedtext [i ]) == 0 ) | |
{ | |
charwarning ( f , mappedtext [i ]) ; | |
} | |
i = i + 1 ; | |
} | |
} | |
p = newnativewordnode ( f , len ) ; | |
{register integer for_end; i = 0 ;for_end = len - 1 ; if ( i <= for_end) | |
do | |
{ | |
setnativechar ( p , i , mappedtext [i ]) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
else { | |
if ( eqtb [8939275L ].cint > 0 ) { | |
if ( mapchartoglyph ( f , c ) == 0 ) | |
{ | |
charwarning ( f , c ) ; | |
} | |
} | |
p = getnode ( 7 ) ; | |
mem [p ].hh.b0 = 8 ; | |
mem [p ].hh.b1 = 40 ; | |
mem [p + 4 ].qqqq .b0 = 7 ; | |
mem [p + 4 ].qqqq .b3 = 0 ; | |
mem [p + 5 ].ptr = nullptr ; | |
mem [p + 4 ].qqqq .b1 = f ; | |
if ( c > 65535L ) | |
{ | |
mem [p + 4 ].qqqq .b2 = 2 ; | |
setnativechar ( p , 0 , ( c - 65536L ) / 1024 + 55296L ) ; | |
setnativechar ( p , 1 , ( c - 65536L ) % 1024 + 56320L ) ; | |
} | |
else { | |
mem [p + 4 ].qqqq .b2 = 1 ; | |
setnativechar ( p , 0 , c ) ; | |
} | |
} | |
setnativemetrics ( p , ( eqtb [8939315L ].cint > 0 ) ) ; | |
Result = p ; | |
return Result ; | |
} | |
void | |
zfontfeaturewarning ( voidpointer featureNameP , integer featLen , voidpointer | |
settingNameP , integer setLen ) | |
{ | |
fontfeaturewarning_regmem | |
integer i ; | |
begindiagnostic () ; | |
printnl ( 66288L ) ; | |
if ( setLen > 0 ) | |
{ | |
print ( 66289L ) ; | |
printutf8str ( settingNameP , setLen ) ; | |
print ( 66290L ) ; | |
} | |
print ( 66291L ) ; | |
printutf8str ( featureNameP , featLen ) ; | |
print ( 66292L ) ; | |
i = 1 ; | |
while ( ord ( nameoffile [i ]) != 0 ) { | |
printrawchar ( nameoffile [i ], true ) ; | |
incr ( i ) ; | |
} | |
print ( 66174L ) ; | |
enddiagnostic ( false ) ; | |
} | |
void | |
zfontmappingwarning ( voidpointer mappingNameP , integer mappingNameLen , | |
integer warningType ) | |
{ | |
fontmappingwarning_regmem | |
integer i ; | |
begindiagnostic () ; | |
if ( warningType == 0 ) | |
printnl ( 66293L ) ; | |
else printnl ( 66294L ) ; | |
printutf8str ( mappingNameP , mappingNameLen ) ; | |
print ( 66295L ) ; | |
i = 1 ; | |
while ( ord ( nameoffile [i ]) != 0 ) { | |
printrawchar ( nameoffile [i ], true ) ; | |
incr ( i ) ; | |
} | |
switch ( warningType ) | |
{case 1 : | |
print ( 66296L ) ; | |
break ; | |
case 2 : | |
{ | |
print ( 66297L ) ; | |
printnl ( 66298L ) ; | |
} | |
break ; | |
default: | |
print ( 66174L ) ; | |
break ; | |
} | |
enddiagnostic ( false ) ; | |
} | |
void | |
graphitewarning ( void ) | |
{ | |
graphitewarning_regmem | |
integer i ; | |
begindiagnostic () ; | |
printnl ( 66299L ) ; | |
i = 1 ; | |
while ( ord ( nameoffile [i ]) != 0 ) { | |
printrawchar ( nameoffile [i ], true ) ; | |
incr ( i ) ; | |
} | |
print ( 66300L ) ; | |
enddiagnostic ( false ) ; | |
} | |
internalfontnumber | |
zloadnativefont ( halfword u , strnumber nom , strnumber aire , scaled s ) | |
{ | |
/* 30 */ | |
#define firstmathfontdimen ( 10 ) | |
register internalfontnumber Result; loadnativefont_regmem | |
integer k, numfontdimens ; | |
voidpointer fontengine ; | |
scaled actualsize ; | |
halfword p ; | |
scaled ascent, descent, fontslant, xht, capht ; | |
internalfontnumber f ; | |
strnumber fullname ; | |
Result = 0 ; | |
fontengine = findnativefont ( nameoffile + 1 , s ) ; | |
if ( fontengine == 0 ) | |
goto lab30 ; | |
if ( s >= 0 ) | |
actualsize = s ; | |
else { | |
if ( ( s != -1000 ) ) | |
actualsize = xnoverd ( loadedfontdesignsize , - (integer) s , 1000 ) ; | |
else actualsize = loadedfontdesignsize ; | |
} | |
{ | |
if ( poolptr + namelength > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
{register integer for_end; k = 1 ;for_end = namelength ; if ( k <= | |
for_end) do | |
{ | |
strpool [poolptr ]= nameoffile [k ]; | |
incr ( poolptr ) ; | |
} | |
while ( k++ < for_end ) ;} | |
fullname = makestring () ; | |
{register integer for_end; f = 1 ;for_end = fontptr ; if ( f <= for_end) | |
do | |
if ( ( fontarea [f ]== nativefonttypeflag ) && streqstr ( fontname [f ] | |
, fullname ) && ( fontsize [f ]== actualsize ) ) | |
{ | |
releasefontengine ( fontengine , nativefonttypeflag ) ; | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
Result = f ; | |
goto lab30 ; | |
} | |
while ( f++ < for_end ) ;} | |
if ( ( nativefonttypeflag == 65534L ) && isOpenTypeMathFont ( fontengine ) ) | |
numfontdimens = firstmathfontdimen + 55 ; | |
else numfontdimens = 8 ; | |
if ( ( fontptr == fontmax ) || ( fmemptr + numfontdimens > fontmemsize ) ) | |
{ | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66194L ) ; | |
} | |
sprintcs ( u ) ; | |
printchar ( 61 ) ; | |
if ( filenamequotechar != 0 ) | |
printchar ( filenamequotechar ) ; | |
printfilename ( nom , aire , curext ) ; | |
if ( filenamequotechar != 0 ) | |
printchar ( filenamequotechar ) ; | |
if ( s >= 0 ) | |
{ | |
print ( 66125L ) ; | |
printscaled ( s ) ; | |
print ( 65697L ) ; | |
} | |
else if ( s != -1000 ) | |
{ | |
print ( 66191L ) ; | |
printint ( - (integer) s ) ; | |
} | |
print ( 66203L ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66204L ; | |
helpline [2 ]= 66205L ; | |
helpline [1 ]= 66206L ; | |
helpline [0 ]= 66207L ; | |
} | |
error () ; | |
goto lab30 ; | |
} | |
} | |
incr ( fontptr ) ; | |
fontarea [fontptr ]= nativefonttypeflag ; | |
fontname [fontptr ]= fullname ; | |
fontcheck [fontptr ].b0 = 0 ; | |
fontcheck [fontptr ].b1 = 0 ; | |
fontcheck [fontptr ].b2 = 0 ; | |
fontcheck [fontptr ].b3 = 0 ; | |
fontglue [fontptr ]= -268435455L ; | |
fontdsize [fontptr ]= loadedfontdesignsize ; | |
fontsize [fontptr ]= actualsize ; | |
if ( ( nativefonttypeflag == 65535L ) ) | |
{ | |
aatgetfontmetrics ( fontengine , addressof ( ascent ) , addressof ( | |
descent ) , addressof ( xht ) , addressof ( capht ) , addressof ( | |
fontslant ) ) ; | |
} | |
else { | |
otgetfontmetrics ( fontengine , addressof ( ascent ) , addressof ( descent | |
) , addressof ( xht ) , addressof ( capht ) , addressof ( fontslant ) ) ; | |
} | |
heightbase [fontptr ]= ascent ; | |
depthbase [fontptr ]= - (integer) descent ; | |
fontparams [fontptr ]= numfontdimens ; | |
fontbc [fontptr ]= 0 ; | |
fontec [fontptr ]= 65535L ; | |
fontused [fontptr ]= false ; | |
hyphenchar [fontptr ]= eqtb [8939286L ].cint ; | |
skewchar [fontptr ]= eqtb [8939287L ].cint ; | |
parambase [fontptr ]= fmemptr - 1 ; | |
fontlayoutengine [fontptr ]= fontengine ; | |
fontmapping [fontptr ]= 0 ; | |
fontletterspace [fontptr ]= loadedfontletterspace ; | |
p = newnativecharacter ( fontptr , 32 ) ; | |
s = mem [p + 1 ].cint + loadedfontletterspace ; | |
freenode ( p , mem [p + 4 ].qqqq .b0 ) ; | |
fontinfo [fmemptr ].cint = fontslant ; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = s ; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = s / 2 ; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = s / 3 ; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = xht ; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = fontsize [fontptr ]; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = s / 3 ; | |
incr ( fmemptr ) ; | |
fontinfo [fmemptr ].cint = capht ; | |
incr ( fmemptr ) ; | |
if ( numfontdimens == firstmathfontdimen + 55 ) | |
{ | |
fontinfo [fmemptr ].cint = numfontdimens ; | |
incr ( fmemptr ) ; | |
{register integer for_end; k = 0 ;for_end = 55 ; if ( k <= for_end) do | |
{ | |
fontinfo [fmemptr ].cint = getotmathconstant ( fontptr , k ) ; | |
incr ( fmemptr ) ; | |
} | |
while ( k++ < for_end ) ;} | |
} | |
fontmapping [fontptr ]= loadedfontmapping ; | |
fontflags [fontptr ]= loadedfontflags ; | |
Result = fontptr ; | |
lab30: ; | |
return Result ; | |
} | |
void | |
zdolocalelinebreaks ( integer s , integer len ) | |
{ | |
dolocalelinebreaks_regmem | |
integer offs, prevOffs, i ; | |
boolean usepenalty, useskip ; | |
if ( ( eqtb [8939309L ].cint == 0 ) || ( len == 1 ) ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnativewordnode ( mainf , len ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
{register integer for_end; i = 0 ;for_end = len - 1 ; if ( i <= for_end) | |
do | |
setnativechar ( curlist .tailfield , i , nativetext [s + i ]) ; | |
while ( i++ < for_end ) ;} | |
setnativemetrics ( curlist .tailfield , ( eqtb [8939315L ].cint > 0 ) ) | |
; | |
} | |
else { | |
useskip = eqtb [2252755L ].hh .v.RH != membot ; | |
usepenalty = eqtb [8939310L ].cint != 0 || ! useskip ; | |
linebreakstart ( mainf , eqtb [8939309L ].cint , nativetext + s , len ) | |
; | |
offs = 0 ; | |
do { | |
prevOffs = offs ; | |
offs = linebreaknext () ; | |
if ( offs > 0 ) | |
{ | |
if ( prevOffs != 0 ) | |
{ | |
if ( usepenalty ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( eqtb [ | |
8939310L ].cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( useskip ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( 15 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
mem [curlist .tailfield ].hh .v.RH = newnativewordnode ( mainf , | |
offs - prevOffs ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
{register integer for_end; i = prevOffs ;for_end = offs - 1 ; if ( i | |
<= for_end) do | |
setnativechar ( curlist .tailfield , i - prevOffs , nativetext [s + | |
i ]) ; | |
while ( i++ < for_end ) ;} | |
setnativemetrics ( curlist .tailfield , ( eqtb [8939315L ].cint > 0 | |
) ) ; | |
} | |
} while ( ! ( offs < 0 ) ) ; | |
} | |
} | |
void | |
badutf8warning ( void ) | |
{ | |
badutf8warning_regmem | |
begindiagnostic () ; | |
printnl ( 66301L ) ; | |
if ( ( curinput .namefield == 0 ) ) | |
print ( 66302L ) ; | |
else { | |
print ( 66303L ) ; | |
printint ( line ) ; | |
} | |
print ( 66304L ) ; | |
enddiagnostic ( false ) ; | |
} | |
integer | |
getinputnormalizationstate ( void ) | |
{ | |
register integer Result; getinputnormalizationstate_regmem | |
if ( eqtb == nil ) | |
Result = 0 ; | |
else Result = eqtb [8939317L ].cint ; | |
return Result ; | |
} | |
integer | |
gettracingfontsstate ( void ) | |
{ | |
register integer Result; gettracingfontsstate_regmem | |
Result = eqtb [8939320L ].cint ; | |
return Result ; | |
} | |
internalfontnumber | |
zreadfontinfo ( halfword u , strnumber nom , strnumber aire , scaled s ) | |
{ | |
/* 30 11 45 */ register internalfontnumber Result; readfontinfo_regmem | |
fontindex k ; | |
boolean nametoolong ; | |
boolean fileopened ; | |
halfword lf, lh, bc, ec, nw, nh, nd, ni, nl, nk, ne, np ; | |
internalfontnumber f ; | |
internalfontnumber g ; | |
eightbits a, b, c, d ; | |
fourquarters qw ; | |
scaled sw ; | |
integer bchlabel ; | |
short bchar ; | |
scaled z ; | |
integer alpha ; | |
unsigned char beta ; | |
g = 0 ; | |
fileopened = false ; | |
packfilename ( nom , aire , curext ) ; | |
if ( eqtb [8939320L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66190L ) ; | |
printcstring ( stringcast ( nameoffile + 1 ) ) ; | |
print ( '"' ) ; | |
if ( s < 0 ) | |
{ | |
print ( 66191L ) ; | |
printint ( - (integer) s ) ; | |
} | |
else { | |
print ( 66125L ) ; | |
printscaled ( s ) ; | |
print ( 65697L ) ; | |
} | |
enddiagnostic ( false ) ; | |
} | |
if ( quotedfilename ) | |
{ | |
g = loadnativefont ( u , nom , aire , s ) ; | |
if ( g != 0 ) | |
goto lab30 ; | |
} | |
nametoolong = ( length ( nom ) > 255 ) || ( length ( aire ) > 255 ) ; | |
if ( nametoolong ) | |
goto lab11 ; | |
packfilename ( nom , aire , 65626L ) ; | |
checkfortfmfontmapping () ; | |
if ( bopenin ( tfmfile ) ) | |
{ | |
fileopened = true ; | |
{ | |
{ | |
lf = tfmtemp ; | |
if ( lf > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
lf = lf * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
lh = tfmtemp ; | |
if ( lh > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
lh = lh * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
bc = tfmtemp ; | |
if ( bc > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
bc = bc * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
ec = tfmtemp ; | |
if ( ec > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
ec = ec * 256 + tfmtemp ; | |
} | |
if ( ( bc > ec + 1 ) || ( ec > 255 ) ) | |
goto lab11 ; | |
if ( bc > 255 ) | |
{ | |
bc = 1 ; | |
ec = 0 ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
nw = tfmtemp ; | |
if ( nw > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
nw = nw * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
nh = tfmtemp ; | |
if ( nh > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
nh = nh * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
nd = tfmtemp ; | |
if ( nd > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
nd = nd * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
ni = tfmtemp ; | |
if ( ni > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
ni = ni * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
nl = tfmtemp ; | |
if ( nl > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
nl = nl * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
nk = tfmtemp ; | |
if ( nk > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
nk = nk * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
ne = tfmtemp ; | |
if ( ne > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
ne = ne * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
np = tfmtemp ; | |
if ( np > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
np = np * 256 + tfmtemp ; | |
} | |
if ( lf != 6 + lh + ( ec - bc + 1 ) + nw + nh + nd + ni + nl + nk + ne + | |
np ) | |
goto lab11 ; | |
if ( ( nw == 0 ) || ( nh == 0 ) || ( nd == 0 ) || ( ni == 0 ) ) | |
goto lab11 ; | |
} | |
lf = lf - 6 - lh ; | |
if ( np < 7 ) | |
lf = lf + 7 - np ; | |
if ( ( fontptr == fontmax ) || ( fmemptr + lf > fontmemsize ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66194L ) ; | |
} | |
sprintcs ( u ) ; | |
printchar ( 61 ) ; | |
if ( filenamequotechar != 0 ) | |
printchar ( filenamequotechar ) ; | |
printfilename ( nom , aire , curext ) ; | |
if ( filenamequotechar != 0 ) | |
printchar ( filenamequotechar ) ; | |
if ( s >= 0 ) | |
{ | |
print ( 66125L ) ; | |
printscaled ( s ) ; | |
print ( 65697L ) ; | |
} | |
else if ( s != -1000 ) | |
{ | |
print ( 66191L ) ; | |
printint ( - (integer) s ) ; | |
} | |
print ( 66203L ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66204L ; | |
helpline [2 ]= 66205L ; | |
helpline [1 ]= 66206L ; | |
helpline [0 ]= 66207L ; | |
} | |
error () ; | |
goto lab30 ; | |
} | |
f = fontptr + 1 ; | |
charbase [f ]= fmemptr - bc ; | |
widthbase [f ]= charbase [f ]+ ec + 1 ; | |
heightbase [f ]= widthbase [f ]+ nw ; | |
depthbase [f ]= heightbase [f ]+ nh ; | |
italicbase [f ]= depthbase [f ]+ nd ; | |
ligkernbase [f ]= italicbase [f ]+ ni ; | |
kernbase [f ]= ligkernbase [f ]+ nl - 256 * ( 128 ) ; | |
extenbase [f ]= kernbase [f ]+ 256 * ( 128 ) + nk ; | |
parambase [f ]= extenbase [f ]+ ne ; | |
{ | |
if ( lh < 2 ) | |
goto lab11 ; | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
qw .b0 = a ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
qw .b1 = b ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
qw .b2 = c ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
qw .b3 = d ; | |
fontcheck [f ]= qw ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
{ | |
z = tfmtemp ; | |
if ( z > 127 ) | |
goto lab11 ; | |
tfmtemp = getc ( tfmfile ) ; | |
z = z * 256 + tfmtemp ; | |
} | |
tfmtemp = getc ( tfmfile ) ; | |
z = z * 256 + tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
z = ( z * 16 ) + ( tfmtemp / 16 ) ; | |
if ( z < 65536L ) | |
goto lab11 ; | |
while ( lh > 2 ) { | |
tfmtemp = getc ( tfmfile ) ; | |
tfmtemp = getc ( tfmfile ) ; | |
tfmtemp = getc ( tfmfile ) ; | |
tfmtemp = getc ( tfmfile ) ; | |
decr ( lh ) ; | |
} | |
fontdsize [f ]= z ; | |
if ( s != -1000 ) { | |
if ( s >= 0 ) | |
z = s ; | |
else z = xnoverd ( z , - (integer) s , 1000 ) ; | |
} | |
fontsize [f ]= z ; | |
} | |
{register integer for_end; k = fmemptr ;for_end = widthbase [f ]- 1 | |
; if ( k <= for_end) do | |
{ | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
qw .b0 = a ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
qw .b1 = b ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
qw .b2 = c ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
qw .b3 = d ; | |
fontinfo [k ].qqqq = qw ; | |
} | |
if ( ( a >= nw ) || ( b / 16 >= nh ) || ( b % 16 >= nd ) || ( c / 4 >= | |
ni ) ) | |
goto lab11 ; | |
switch ( c % 4 ) | |
{case 1 : | |
if ( d >= nl ) | |
goto lab11 ; | |
break ; | |
case 3 : | |
if ( d >= ne ) | |
goto lab11 ; | |
break ; | |
case 2 : | |
{ | |
{ | |
if ( ( d < bc ) || ( d > ec ) ) | |
goto lab11 ; | |
} | |
while ( d < k + bc - fmemptr ) { | |
qw = fontinfo [charbase [f ]+ d ].qqqq ; | |
if ( ( ( qw .b2 ) % 4 ) != 2 ) | |
goto lab45 ; | |
d = qw .b3 ; | |
} | |
if ( d == k + bc - fmemptr ) | |
goto lab11 ; | |
lab45: ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
while ( k++ < for_end ) ;} | |
{ | |
{ | |
alpha = 16 ; | |
while ( z >= 8388608L ) { | |
z = z / 2 ; | |
alpha = alpha + alpha ; | |
} | |
beta = 256 / alpha ; | |
alpha = alpha * z ; | |
} | |
{register integer for_end; k = widthbase [f ];for_end = ligkernbase | |
[f ]- 1 ; if ( k <= for_end) do | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / | |
beta ; | |
if ( a == 0 ) | |
fontinfo [k ].cint = sw ; | |
else if ( a == 255 ) | |
fontinfo [k ].cint = sw - alpha ; | |
else goto lab11 ; | |
} | |
while ( k++ < for_end ) ;} | |
if ( fontinfo [widthbase [f ]].cint != 0 ) | |
goto lab11 ; | |
if ( fontinfo [heightbase [f ]].cint != 0 ) | |
goto lab11 ; | |
if ( fontinfo [depthbase [f ]].cint != 0 ) | |
goto lab11 ; | |
if ( fontinfo [italicbase [f ]].cint != 0 ) | |
goto lab11 ; | |
} | |
bchlabel = 32767 ; | |
bchar = 256 ; | |
if ( nl > 0 ) | |
{ | |
{register integer for_end; k = ligkernbase [f ];for_end = kernbase [ | |
f ]+ 256 * ( 128 ) - 1 ; if ( k <= for_end) do | |
{ | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
qw .b0 = a ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
qw .b1 = b ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
qw .b2 = c ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
qw .b3 = d ; | |
fontinfo [k ].qqqq = qw ; | |
} | |
if ( a > 128 ) | |
{ | |
if ( 256 * c + d >= nl ) | |
goto lab11 ; | |
if ( a == 255 ) { | |
if ( k == ligkernbase [f ]) | |
bchar = b ; | |
} | |
} | |
else { | |
if ( b != bchar ) | |
{ | |
{ | |
if ( ( b < bc ) || ( b > ec ) ) | |
goto lab11 ; | |
} | |
qw = fontinfo [charbase [f ]+ b ].qqqq ; | |
if ( ! ( qw .b0 > 0 ) ) | |
goto lab11 ; | |
} | |
if ( c < 128 ) | |
{ | |
{ | |
if ( ( d < bc ) || ( d > ec ) ) | |
goto lab11 ; | |
} | |
qw = fontinfo [charbase [f ]+ d ].qqqq ; | |
if ( ! ( qw .b0 > 0 ) ) | |
goto lab11 ; | |
} | |
else if ( 256 * ( c - 128 ) + d >= nk ) | |
goto lab11 ; | |
if ( a < 128 ) { | |
if ( k - ligkernbase [f ]+ a + 1 >= nl ) | |
goto lab11 ; | |
} | |
} | |
} | |
while ( k++ < for_end ) ;} | |
if ( a == 255 ) | |
bchlabel = 256 * c + d ; | |
} | |
{register integer for_end; k = kernbase [f ]+ 256 * ( 128 ) ;for_end = | |
extenbase [f ]- 1 ; if ( k <= for_end) do | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / | |
beta ; | |
if ( a == 0 ) | |
fontinfo [k ].cint = sw ; | |
else if ( a == 255 ) | |
fontinfo [k ].cint = sw - alpha ; | |
else goto lab11 ; | |
} | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = extenbase [f ];for_end = parambase [f | |
]- 1 ; if ( k <= for_end) do | |
{ | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
qw .b0 = a ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
qw .b1 = b ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
qw .b2 = c ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
qw .b3 = d ; | |
fontinfo [k ].qqqq = qw ; | |
} | |
if ( a != 0 ) | |
{ | |
{ | |
if ( ( a < bc ) || ( a > ec ) ) | |
goto lab11 ; | |
} | |
qw = fontinfo [charbase [f ]+ a ].qqqq ; | |
if ( ! ( qw .b0 > 0 ) ) | |
goto lab11 ; | |
} | |
if ( b != 0 ) | |
{ | |
{ | |
if ( ( b < bc ) || ( b > ec ) ) | |
goto lab11 ; | |
} | |
qw = fontinfo [charbase [f ]+ b ].qqqq ; | |
if ( ! ( qw .b0 > 0 ) ) | |
goto lab11 ; | |
} | |
if ( c != 0 ) | |
{ | |
{ | |
if ( ( c < bc ) || ( c > ec ) ) | |
goto lab11 ; | |
} | |
qw = fontinfo [charbase [f ]+ c ].qqqq ; | |
if ( ! ( qw .b0 > 0 ) ) | |
goto lab11 ; | |
} | |
{ | |
{ | |
if ( ( d < bc ) || ( d > ec ) ) | |
goto lab11 ; | |
} | |
qw = fontinfo [charbase [f ]+ d ].qqqq ; | |
if ( ! ( qw .b0 > 0 ) ) | |
goto lab11 ; | |
} | |
} | |
while ( k++ < for_end ) ;} | |
{ | |
{register integer for_end; k = 1 ;for_end = np ; if ( k <= for_end) do | |
if ( k == 1 ) | |
{ | |
tfmtemp = getc ( tfmfile ) ; | |
sw = tfmtemp ; | |
if ( sw > 127 ) | |
sw = sw - 256 ; | |
tfmtemp = getc ( tfmfile ) ; | |
sw = sw * 256 + tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
sw = sw * 256 + tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
fontinfo [parambase [f ]].cint = ( sw * 16 ) + ( tfmtemp / 16 ) | |
; | |
} | |
else { | |
tfmtemp = getc ( tfmfile ) ; | |
a = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
b = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
c = tfmtemp ; | |
tfmtemp = getc ( tfmfile ) ; | |
d = tfmtemp ; | |
sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / | |
beta ; | |
if ( a == 0 ) | |
fontinfo [parambase [f ]+ k - 1 ].cint = sw ; | |
else if ( a == 255 ) | |
fontinfo [parambase [f ]+ k - 1 ].cint = sw - alpha ; | |
else goto lab11 ; | |
} | |
while ( k++ < for_end ) ;} | |
if ( feof ( tfmfile ) ) | |
goto lab11 ; | |
{register integer for_end; k = np + 1 ;for_end = 7 ; if ( k <= | |
for_end) do | |
fontinfo [parambase [f ]+ k - 1 ].cint = 0 ; | |
while ( k++ < for_end ) ;} | |
} | |
if ( np >= 7 ) | |
fontparams [f ]= np ; | |
else fontparams [f ]= 7 ; | |
hyphenchar [f ]= eqtb [8939286L ].cint ; | |
skewchar [f ]= eqtb [8939287L ].cint ; | |
if ( bchlabel < nl ) | |
bcharlabel [f ]= bchlabel + ligkernbase [f ]; | |
else bcharlabel [f ]= 0 ; | |
fontbchar [f ]= bchar ; | |
fontfalsebchar [f ]= bchar ; | |
if ( bchar <= ec ) { | |
if ( bchar >= bc ) | |
{ | |
qw = fontinfo [charbase [f ]+ bchar ].qqqq ; | |
if ( ( qw .b0 > 0 ) ) | |
fontfalsebchar [f ]= 65536L ; | |
} | |
} | |
fontname [f ]= nom ; | |
fontarea [f ]= aire ; | |
fontbc [f ]= bc ; | |
fontec [f ]= ec ; | |
fontglue [f ]= -268435455L ; | |
charbase [f ]= charbase [f ]; | |
widthbase [f ]= widthbase [f ]; | |
ligkernbase [f ]= ligkernbase [f ]; | |
kernbase [f ]= kernbase [f ]; | |
extenbase [f ]= extenbase [f ]; | |
decr ( parambase [f ]) ; | |
fmemptr = fmemptr + lf ; | |
fontptr = f ; | |
g = f ; | |
fontmapping [f ]= loadtfmfontmapping () ; | |
goto lab30 ; | |
} | |
if ( g != 0 ) | |
goto lab30 ; | |
if ( ! quotedfilename ) | |
{ | |
g = loadnativefont ( u , nom , aire , s ) ; | |
if ( g != 0 ) | |
goto lab30 ; | |
} | |
lab11: if ( eqtb [8939308L ].cint == 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66194L ) ; | |
} | |
sprintcs ( u ) ; | |
printchar ( 61 ) ; | |
if ( filenamequotechar != 0 ) | |
printchar ( filenamequotechar ) ; | |
printfilename ( nom , aire , curext ) ; | |
if ( filenamequotechar != 0 ) | |
printchar ( filenamequotechar ) ; | |
if ( s >= 0 ) | |
{ | |
print ( 66125L ) ; | |
printscaled ( s ) ; | |
print ( 65697L ) ; | |
} | |
else if ( s != -1000 ) | |
{ | |
print ( 66191L ) ; | |
printint ( - (integer) s ) ; | |
} | |
if ( fileopened ) | |
print ( 66195L ) ; | |
else if ( nametoolong ) | |
print ( 66196L ) ; | |
else print ( 66197L ) ; | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66198L ; | |
helpline [3 ]= 66199L ; | |
helpline [2 ]= 66200L ; | |
helpline [1 ]= 66201L ; | |
helpline [0 ]= 66202L ; | |
} | |
error () ; | |
} | |
lab30: if ( fileopened ) | |
bclose ( tfmfile ) ; | |
if ( eqtb [8939320L ].cint > 0 ) | |
{ | |
if ( g == 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66192L ) ; | |
enddiagnostic ( false ) ; | |
} | |
else if ( fileopened ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66193L ) ; | |
printcstring ( stringcast ( nameoffile + 1 ) ) ; | |
enddiagnostic ( false ) ; | |
} | |
} | |
Result = g ; | |
return Result ; | |
} | |
halfword | |
znewcharacter ( internalfontnumber f , UTF16code c ) | |
{ | |
/* 10 */ register halfword Result; newcharacter_regmem | |
halfword p ; | |
quarterword ec ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
{ | |
Result = newnativecharacter ( f , c ) ; | |
return Result ; | |
} | |
ec = effectivechar ( false , f , c ) ; | |
if ( fontbc [f ]<= ec ) { | |
if ( fontec [f ]>= ec ) { | |
if ( ( fontinfo [charbase [f ]+ ec ].qqqq .b0 > 0 ) ) | |
{ | |
p = getavail () ; | |
mem [p ].hh.b0 = f ; | |
mem [p ].hh.b1 = c ; | |
Result = p ; | |
return Result ; | |
} | |
} | |
} | |
charwarning ( f , c ) ; | |
Result = -268435455L ; | |
return Result ; | |
} | |
void | |
dviswap ( void ) | |
{ | |
dviswap_regmem | |
if ( dviptr > ( 2147483647L - dvioffset ) ) | |
{ | |
curs = -2 ; | |
fatalerror ( 66219L ) ; | |
} | |
if ( dvilimit == dvibufsize ) | |
{ | |
writedvi ( 0 , halfbuf - 1 ) ; | |
dvilimit = halfbuf ; | |
dvioffset = dvioffset + dvibufsize ; | |
dviptr = 0 ; | |
} | |
else { | |
writedvi ( halfbuf , dvibufsize - 1 ) ; | |
dvilimit = dvibufsize ; | |
} | |
dvigone = dvigone + halfbuf ; | |
} | |
void | |
zdvifour ( integer x ) | |
{ | |
dvifour_regmem | |
if ( x >= 0 ) | |
{ | |
dvibuf [dviptr ]= x / 16777216L ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
else { | |
x = x + 1073741824L ; | |
x = x + 1073741824L ; | |
{ | |
dvibuf [dviptr ]= ( x / 16777216L ) + 128 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
x = x % 16777216L ; | |
{ | |
dvibuf [dviptr ]= x / 65536L ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
x = x % 65536L ; | |
{ | |
dvibuf [dviptr ]= x / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= x % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
void | |
zdvitwo ( UTF16code s ) | |
{ | |
dvitwo_regmem | |
{ | |
dvibuf [dviptr ]= s / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= s % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
void | |
zdvipop ( integer l ) | |
{ | |
dvipop_regmem | |
if ( ( l == dvioffset + dviptr ) && ( dviptr > 0 ) ) | |
decr ( dviptr ) ; | |
else { | |
dvibuf [dviptr ]= 142 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
void | |
zdvinativefontdef ( internalfontnumber f ) | |
{ | |
dvinativefontdef_regmem | |
integer fontdeflength, i ; | |
{ | |
dvibuf [dviptr ]= 252 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( f - 1 ) ; | |
fontdeflength = makefontdef ( f ) ; | |
{register integer for_end; i = 0 ;for_end = fontdeflength - 1 ; if ( i <= | |
for_end) do | |
{ | |
dvibuf [dviptr ]= xdvbuffer [i ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
void | |
zdvifontdef ( internalfontnumber f ) | |
{ | |
dvifontdef_regmem | |
poolpointer k ; | |
integer l ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
dvinativefontdef ( f ) ; | |
else { | |
if ( f <= 256 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 243 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= f - 1 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 244 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
{ | |
dvibuf [dviptr ]= fontcheck [f ].b0 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= fontcheck [f ].b1 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= fontcheck [f ].b2 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= fontcheck [f ].b3 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( fontsize [f ]) ; | |
dvifour ( fontdsize [f ]) ; | |
{ | |
dvibuf [dviptr ]= length ( fontarea [f ]) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
l = 0 ; | |
k = strstart [( fontname [f ]) - 65536L ]; | |
while ( ( l == 0 ) && ( k < strstart [( fontname [f ]+ 1 ) - 65536L ]) | |
) { | |
if ( strpool [k ]== 58 ) | |
l = k - strstart [( fontname [f ]) - 65536L ]; | |
incr ( k ) ; | |
} | |
if ( l == 0 ) | |
l = length ( fontname [f ]) ; | |
{ | |
dvibuf [dviptr ]= l ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{register integer for_end; k = strstart [( fontarea [f ]) - 65536L ]; | |
for_end = strstart [( fontarea [f ]+ 1 ) - 65536L ]- 1 ; if ( k <= | |
for_end) do | |
{ | |
dvibuf [dviptr ]= strpool [k ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = strstart [( fontname [f ]) - 65536L ]; | |
for_end = strstart [( fontname [f ]) - 65536L ]+ l - 1 ; if ( k <= | |
for_end) do | |
{ | |
dvibuf [dviptr ]= strpool [k ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( k++ < for_end ) ;} | |
} | |
} | |
void | |
zmovement ( scaled w , eightbits o ) | |
{ | |
/* 10 40 45 2 1 */ movement_regmem | |
smallnumber mstate ; | |
halfword p, q ; | |
integer k ; | |
q = getnode ( 3 ) ; | |
mem [q + 1 ].cint = w ; | |
mem [q + 2 ].cint = dvioffset + dviptr ; | |
if ( o == 157 ) | |
{ | |
mem [q ].hh .v.RH = downptr ; | |
downptr = q ; | |
} | |
else { | |
mem [q ].hh .v.RH = rightptr ; | |
rightptr = q ; | |
} | |
p = mem [q ].hh .v.RH ; | |
mstate = 0 ; | |
while ( p != -268435455L ) { | |
if ( mem [p + 1 ].cint == w ) | |
switch ( mstate + mem [p ].hh .v.LH ) | |
{case 3 : | |
case 4 : | |
case 15 : | |
case 16 : | |
if ( mem [p + 2 ].cint < dvigone ) | |
goto lab45 ; | |
else { | |
k = mem [p + 2 ].cint - dvioffset ; | |
if ( k < 0 ) | |
k = k + dvibufsize ; | |
dvibuf [k ]= dvibuf [k ]+ 5 ; | |
mem [p ].hh .v.LH = 1 ; | |
goto lab40 ; | |
} | |
break ; | |
case 5 : | |
case 9 : | |
case 11 : | |
if ( mem [p + 2 ].cint < dvigone ) | |
goto lab45 ; | |
else { | |
k = mem [p + 2 ].cint - dvioffset ; | |
if ( k < 0 ) | |
k = k + dvibufsize ; | |
dvibuf [k ]= dvibuf [k ]+ 10 ; | |
mem [p ].hh .v.LH = 2 ; | |
goto lab40 ; | |
} | |
break ; | |
case 1 : | |
case 2 : | |
case 8 : | |
case 13 : | |
goto lab40 ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
else switch ( mstate + mem [p ].hh .v.LH ) | |
{case 1 : | |
mstate = 6 ; | |
break ; | |
case 2 : | |
mstate = 12 ; | |
break ; | |
case 8 : | |
case 13 : | |
goto lab45 ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
lab45: ; | |
mem [q ].hh .v.LH = 3 ; | |
if ( abs ( w ) >= 8388608L ) | |
{ | |
{ | |
dvibuf [dviptr ]= o + 3 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( w ) ; | |
return ; | |
} | |
if ( abs ( w ) >= 32768L ) | |
{ | |
{ | |
dvibuf [dviptr ]= o + 2 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
if ( w < 0 ) | |
w = w + 16777216L ; | |
{ | |
dvibuf [dviptr ]= w / 65536L ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
w = w % 65536L ; | |
goto lab2 ; | |
} | |
if ( abs ( w ) >= 128 ) | |
{ | |
{ | |
dvibuf [dviptr ]= o + 1 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
if ( w < 0 ) | |
w = w + 65536L ; | |
goto lab2 ; | |
} | |
{ | |
dvibuf [dviptr ]= o ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
if ( w < 0 ) | |
w = w + 256 ; | |
goto lab1 ; | |
lab2: { | |
dvibuf [dviptr ]= w / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
lab1: { | |
dvibuf [dviptr ]= w % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
return ; | |
lab40: mem [q ].hh .v.LH = mem [p ].hh .v.LH ; | |
if ( mem [q ].hh .v.LH == 1 ) | |
{ | |
{ | |
dvibuf [dviptr ]= o + 4 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( mem [q ].hh .v.RH != p ) { | |
q = mem [q ].hh .v.RH ; | |
switch ( mem [q ].hh .v.LH ) | |
{case 3 : | |
mem [q ].hh .v.LH = 5 ; | |
break ; | |
case 4 : | |
mem [q ].hh .v.LH = 6 ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= o + 9 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( mem [q ].hh .v.RH != p ) { | |
q = mem [q ].hh .v.RH ; | |
switch ( mem [q ].hh .v.LH ) | |
{case 3 : | |
mem [q ].hh .v.LH = 4 ; | |
break ; | |
case 5 : | |
mem [q ].hh .v.LH = 6 ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
} | |
} | |
void | |
zprunemovements ( integer l ) | |
{ | |
/* 30 10 */ prunemovements_regmem | |
halfword p ; | |
while ( downptr != -268435455L ) { | |
if ( mem [downptr + 2 ].cint < l ) | |
goto lab30 ; | |
p = downptr ; | |
downptr = mem [p ].hh .v.RH ; | |
freenode ( p , 3 ) ; | |
} | |
lab30: while ( rightptr != -268435455L ) { | |
if ( mem [rightptr + 2 ].cint < l ) | |
return ; | |
p = rightptr ; | |
rightptr = mem [p ].hh .v.RH ; | |
freenode ( p , 3 ) ; | |
} | |
} | |
void | |
zspecialout ( halfword p ) | |
{ | |
specialout_regmem | |
unsigned char oldsetting ; | |
poolpointer k ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
doingspecial = true ; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [mem [p + 1 ].hh .v.RH ].hh .v.RH , -268435455L , | |
poolsize - poolptr ) ; | |
selector = oldsetting ; | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
if ( ( poolptr - strstart [( strptr ) - 65536L ]) < 256 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 239 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 242 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( ( poolptr - strstart [( strptr ) - 65536L ]) ) ; | |
} | |
{register integer for_end; k = strstart [( strptr ) - 65536L ];for_end = | |
poolptr - 1 ; if ( k <= for_end) do | |
{ | |
dvibuf [dviptr ]= strpool [k ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( k++ < for_end ) ;} | |
poolptr = strstart [( strptr ) - 65536L ]; | |
doingspecial = false ; | |
} | |
void | |
zwriteout ( halfword p ) | |
{ | |
writeout_regmem | |
unsigned char oldsetting ; | |
integer oldmode ; | |
smallnumber j ; | |
integer k ; | |
halfword q, r ; | |
integer d ; | |
boolean clobbered ; | |
integer runsystemret ; | |
q = getavail () ; | |
mem [q ].hh .v.LH = 4194429L ; | |
r = getavail () ; | |
mem [q ].hh .v.RH = r ; | |
mem [r ].hh .v.LH = 35797665L ; | |
begintokenlist ( q , 5 ) ; | |
begintokenlist ( mem [p + 1 ].hh .v.RH , 18 ) ; | |
q = getavail () ; | |
mem [q ].hh .v.LH = 2097275L ; | |
begintokenlist ( q , 5 ) ; | |
oldmode = curlist .modefield ; | |
curlist .modefield = 0 ; | |
curcs = writeloc ; | |
q = scantoks ( false , true ) ; | |
gettoken () ; | |
if ( curtok != 35797665L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66774L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66775L ; | |
helpline [0 ]= 66441L ; | |
} | |
error () ; | |
do { | |
gettoken () ; | |
} while ( ! ( curtok == 35797665L ) ) ; | |
} | |
curlist .modefield = oldmode ; | |
endtokenlist () ; | |
oldsetting = selector ; | |
j = mem [p + 1 ].hh .v.LH ; | |
if ( j == 18 ) | |
selector = 21 ; | |
else if ( writeopen [j ]) | |
selector = j ; | |
else { | |
if ( ( j == 17 ) && ( selector == 19 ) ) | |
selector = 18 ; | |
printnl ( 65626L ) ; | |
} | |
tokenshow ( defref ) ; | |
println () ; | |
flushlist ( defref ) ; | |
if ( j == 18 ) | |
{ | |
if ( ( eqtb [8939269L ].cint <= 0 ) ) | |
selector = 18 ; | |
else selector = 19 ; | |
if ( ! logopened ) | |
selector = 17 ; | |
printnl ( 66766L ) ; | |
{register integer for_end; d = 0 ;for_end = ( poolptr - strstart [( | |
strptr ) - 65536L ]) - 1 ; if ( d <= for_end) do | |
{ | |
print ( strpool [strstart [( strptr ) - 65536L ]+ d ]) ; | |
} | |
while ( d++ < for_end ) ;} | |
print ( 66767L ) ; | |
if ( shellenabledp ) | |
{ | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
{ | |
strpool [poolptr ]= 0 ; | |
incr ( poolptr ) ; | |
} | |
clobbered = false ; | |
{register integer for_end; d = 0 ;for_end = ( poolptr - strstart [( | |
strptr ) - 65536L ]) - 1 ; if ( d <= for_end) do | |
{ | |
if ( ( strpool [strstart [( strptr ) - 65536L ]+ d ]== 0 ) && ( | |
d < ( poolptr - strstart [( strptr ) - 65536L ]) - 1 ) ) | |
clobbered = true ; | |
} | |
while ( d++ < for_end ) ;} | |
if ( clobbered ) | |
print ( 66768L ) ; | |
else { | |
if ( nameoffile ) | |
libcfree ( nameoffile ) ; | |
nameoffile = xmalloc ( ( poolptr - strstart [( strptr ) - 65536L ]) | |
* 3 + 2 ) ; | |
k = 0 ; | |
{register integer for_end; d = 0 ;for_end = ( poolptr - strstart [( | |
strptr ) - 65536L ]) - 1 ; if ( d <= for_end) do | |
{ | |
c = strpool [strstart [( strptr ) - 65536L ]+ d ]; | |
incr ( k ) ; | |
if ( k <= maxint ) | |
{ | |
if ( ( c < 128 ) ) | |
nameoffile [k ]= c ; | |
else if ( ( c < 2048 ) ) | |
{ | |
nameoffile [k ]= 192 + c / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + c % 64 ; | |
} | |
else { | |
nameoffile [k ]= 224 + c / 4096 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) / 64 ; | |
incr ( k ) ; | |
nameoffile [k ]= 128 + ( c % 4096 ) % 64 ; | |
} | |
} | |
} | |
while ( d++ < for_end ) ;} | |
nameoffile [k + 1 ]= 0 ; | |
runsystemret = runsystem ( conststringcast ( nameoffile + 1 ) ) ; | |
if ( runsystemret == -1 ) | |
print ( 66769L ) ; | |
else if ( runsystemret == 0 ) | |
print ( 66770L ) ; | |
else if ( runsystemret == 1 ) | |
print ( 66771L ) ; | |
else if ( runsystemret == 2 ) | |
print ( 66772L ) ; | |
} | |
} | |
else { | |
print ( 66773L ) ; | |
} | |
printchar ( 46 ) ; | |
printnl ( 65626L ) ; | |
println () ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
selector = oldsetting ; | |
} | |
void | |
zpicout ( halfword p ) | |
{ | |
picout_regmem | |
unsigned char oldsetting ; | |
integer i ; | |
poolpointer k ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
oldsetting = selector ; | |
selector = 21 ; | |
print ( 66776L ) ; | |
print ( 66777L ) ; | |
printscaled ( mem [p + 5 ].hh .v.LH ) ; | |
print ( 32 ) ; | |
printscaled ( mem [p + 5 ].hh .v.RH ) ; | |
print ( 32 ) ; | |
printscaled ( mem [p + 6 ].hh .v.LH ) ; | |
print ( 32 ) ; | |
printscaled ( mem [p + 6 ].hh .v.RH ) ; | |
print ( 32 ) ; | |
printscaled ( mem [p + 7 ].hh .v.LH ) ; | |
print ( 32 ) ; | |
printscaled ( mem [p + 7 ].hh .v.RH ) ; | |
print ( 32 ) ; | |
print ( 66778L ) ; | |
printint ( mem [p + 4 ].hh.b1 ) ; | |
print ( 32 ) ; | |
switch ( mem [p + 8 ].hh.b0 ) | |
{case 1 : | |
print ( 66779L ) ; | |
break ; | |
case 2 : | |
print ( 66780L ) ; | |
break ; | |
case 3 : | |
print ( 66781L ) ; | |
break ; | |
case 5 : | |
print ( 66782L ) ; | |
break ; | |
case 4 : | |
print ( 66783L ) ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
print ( 40 ) ; | |
{register integer for_end; i = 0 ;for_end = mem [p + 4 ].hh.b0 - 1 | |
; if ( i <= for_end) do | |
printrawchar ( picpathbyte ( p , i ) , true ) ; | |
while ( i++ < for_end ) ;} | |
print ( 41 ) ; | |
selector = oldsetting ; | |
if ( ( poolptr - strstart [( strptr ) - 65536L ]) < 256 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 239 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 242 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( ( poolptr - strstart [( strptr ) - 65536L ]) ) ; | |
} | |
{register integer for_end; k = strstart [( strptr ) - 65536L ];for_end = | |
poolptr - 1 ; if ( k <= for_end) do | |
{ | |
dvibuf [dviptr ]= strpool [k ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( k++ < for_end ) ;} | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
void | |
zoutwhat ( halfword p ) | |
{ | |
outwhat_regmem | |
smallnumber j ; | |
unsigned char oldsetting ; | |
switch ( mem [p ].hh.b1 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
if ( ! doingleaders ) | |
{ | |
j = mem [p + 1 ].hh .v.LH ; | |
if ( mem [p ].hh.b1 == 1 ) | |
writeout ( p ) ; | |
else { | |
if ( writeopen [j ]) | |
{ | |
aclose ( writefile [j ]) ; | |
writeopen [j ]= false ; | |
} | |
if ( mem [p ].hh.b1 == 2 ) | |
; | |
else if ( j < 16 ) | |
{ | |
curname = mem [p + 1 ].hh .v.RH ; | |
curarea = mem [p + 2 ].hh .v.LH ; | |
curext = mem [p + 2 ].hh .v.RH ; | |
if ( curext == 65626L ) | |
curext = 66175L ; | |
packfilename ( curname , curarea , curext ) ; | |
while ( ! kpseoutnameok ( stringcast ( nameoffile + 1 ) ) || ! | |
aopenout ( writefile [j ]) ) promptfilename ( 66785L , 66175L ) ; | |
writeopen [j ]= true ; | |
if ( logopened && texmfyesno ( "log_openout" ) ) | |
{ | |
oldsetting = selector ; | |
if ( ( eqtb [8939269L ].cint <= 0 ) ) | |
selector = 18 ; | |
else selector = 19 ; | |
printnl ( 66786L ) ; | |
printint ( j ) ; | |
print ( 66787L ) ; | |
printfilename ( curname , curarea , curext ) ; | |
print ( 66174L ) ; | |
printnl ( 65626L ) ; | |
println () ; | |
selector = oldsetting ; | |
} | |
} | |
} | |
} | |
break ; | |
case 3 : | |
specialout ( p ) ; | |
break ; | |
case 4 : | |
; | |
break ; | |
default: | |
confusion ( 66784L ) ; | |
break ; | |
} | |
} | |
halfword | |
znewedge ( smallnumber s , scaled w ) | |
{ | |
register halfword Result; newedge_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 14 ; | |
mem [p ].hh.b1 = s ; | |
mem [p + 1 ].cint = w ; | |
mem [p + 2 ].cint = 0 ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
zzreverse ( halfword thisbox , halfword t , scaled * curg , real * curglue ) | |
{ | |
/* 21 15 30 */ register halfword Result; reverse_regmem | |
halfword l ; | |
halfword p ; | |
halfword q ; | |
glueord gorder ; | |
unsigned char gsign ; | |
real gluetemp ; | |
halfword m, n ; | |
gorder = mem [thisbox + 5 ].hh.b1 ; | |
gsign = mem [thisbox + 5 ].hh.b0 ; | |
l = t ; | |
p = tempptr ; | |
m = -268435455L ; | |
n = -268435455L ; | |
while ( true ) { | |
while ( p != -268435455L ) lab21: if ( ( p >= himemmin ) ) | |
do { | |
f = mem [p ].hh.b0 ; | |
c = mem [p ].hh.b1 ; | |
curh = curh + fontinfo [widthbase [f ]+ fontinfo [charbase [f ]+ | |
effectivechar ( true , f , c ) ].qqqq .b0 ].cint ; | |
q = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = l ; | |
l = p ; | |
p = q ; | |
} while ( ! ( ! ( p >= himemmin ) ) ) ; | |
else { | |
q = mem [p ].hh .v.RH ; | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
case 11 : | |
rulewd = mem [p + 1 ].cint ; | |
break ; | |
case 8 : | |
if ( ( ( ( mem [p ].hh.b1 >= 40 ) && ( mem [p ].hh.b1 <= 41 ) ) ) | |
|| ( mem [p ].hh.b1 == 42 ) || ( mem [p ].hh.b1 == 43 ) || ( mem [ | |
p ].hh.b1 == 44 ) ) | |
rulewd = mem [p + 1 ].cint ; | |
else goto lab15 ; | |
break ; | |
case 10 : | |
{ | |
g = mem [p + 1 ].hh .v.LH ; | |
rulewd = mem [g + 1 ].cint - *curg ; | |
if ( gsign != 0 ) | |
{ | |
if ( gsign == 1 ) | |
{ | |
if ( mem [g ].hh.b0 == gorder ) | |
{ | |
* curglue = *curglue + mem [g + 2 ].cint ; | |
gluetemp = mem [thisbox + 6 ].gr * *curglue ; | |
if ( gluetemp > 1000000000.0 ) | |
gluetemp = 1000000000.0 ; | |
else if ( gluetemp < -1000000000.0 ) | |
gluetemp = -1000000000.0 ; | |
* curg = round ( gluetemp ) ; | |
} | |
} | |
else if ( mem [g ].hh.b1 == gorder ) | |
{ | |
* curglue = *curglue - mem [g + 3 ].cint ; | |
gluetemp = mem [thisbox + 6 ].gr * *curglue ; | |
if ( gluetemp > 1000000000.0 ) | |
gluetemp = 1000000000.0 ; | |
else if ( gluetemp < -1000000000.0 ) | |
gluetemp = -1000000000.0 ; | |
* curg = round ( gluetemp ) ; | |
} | |
} | |
rulewd = rulewd + *curg ; | |
if ( ( ( ( gsign == 1 ) && ( mem [g ].hh.b0 == gorder ) ) || ( ( | |
gsign == 2 ) && ( mem [g ].hh.b1 == gorder ) ) ) ) | |
{ | |
{ | |
if ( mem [g ].hh .v.RH == -268435455L ) | |
freenode ( g , 4 ) ; | |
else decr ( mem [g ].hh .v.RH ) ; | |
} | |
if ( mem [p ].hh.b1 < 100 ) | |
{ | |
mem [p ].hh.b0 = 11 ; | |
mem [p + 1 ].cint = rulewd ; | |
} | |
else { | |
g = getnode ( 4 ) ; | |
mem [g ].hh.b0 = 4 ; | |
mem [g ].hh.b1 = 4 ; | |
mem [g + 1 ].cint = rulewd ; | |
mem [g + 2 ].cint = 0 ; | |
mem [g + 3 ].cint = 0 ; | |
mem [p + 1 ].hh .v.LH = g ; | |
} | |
} | |
} | |
break ; | |
case 6 : | |
{ | |
flushnodelist ( mem [p + 1 ].hh .v.RH ) ; | |
tempptr = p ; | |
p = getavail () ; | |
mem [p ]= mem [tempptr + 1 ]; | |
mem [p ].hh .v.RH = q ; | |
freenode ( tempptr , 2 ) ; | |
goto lab21 ; | |
} | |
break ; | |
case 9 : | |
{ | |
rulewd = mem [p + 1 ].cint ; | |
if ( odd ( mem [p ].hh.b1 ) ) { | |
if ( mem [LRptr ].hh .v.LH != ( 4 * ( mem [p ].hh.b1 / 4 ) + 3 | |
) ) | |
{ | |
mem [p ].hh.b0 = 11 ; | |
incr ( LRproblems ) ; | |
} | |
else { | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
if ( n > -268435455L ) | |
{ | |
decr ( n ) ; | |
decr ( mem [p ].hh.b1 ) ; | |
} | |
else { | |
mem [p ].hh.b0 = 11 ; | |
if ( m > -268435455L ) | |
decr ( m ) ; | |
else { | |
freenode ( p , 3 ) ; | |
mem [t ].hh .v.RH = q ; | |
mem [t + 1 ].cint = rulewd ; | |
mem [t + 2 ].cint = - (integer) curh - rulewd ; | |
goto lab30 ; | |
} | |
} | |
} | |
} | |
else { | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [p ].hh.b1 / 4 ) + 3 ) | |
; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
if ( ( n > -268435455L ) || ( ( mem [p ].hh.b1 / 8 ) != curdir ) | |
) | |
{ | |
incr ( n ) ; | |
incr ( mem [p ].hh.b1 ) ; | |
} | |
else { | |
mem [p ].hh.b0 = 11 ; | |
incr ( m ) ; | |
} | |
} | |
} | |
break ; | |
case 14 : | |
confusion ( 66923L ) ; | |
break ; | |
default: | |
goto lab15 ; | |
break ; | |
} | |
curh = curh + rulewd ; | |
lab15: mem [p ].hh .v.RH = l ; | |
if ( mem [p ].hh.b0 == 11 ) { | |
if ( ( rulewd == 0 ) || ( l == -268435455L ) ) | |
{ | |
freenode ( p , 3 ) ; | |
p = l ; | |
} | |
} | |
l = p ; | |
p = q ; | |
} | |
if ( ( t == -268435455L ) && ( m == -268435455L ) && ( n == -268435455L ) | |
) | |
goto lab30 ; | |
p = newmath ( 0 , mem [LRptr ].hh .v.LH ) ; | |
LRproblems = LRproblems + 10000 ; | |
} | |
lab30: Result = l ; | |
return Result ; | |
} | |
void | |
hlistout ( void ) | |
{ | |
/* 21 13 14 15 22 40 1236 1237 */ hlistout_regmem | |
scaled baseline ; | |
scaled leftedge ; | |
scaled saveh, savev ; | |
halfword thisbox ; | |
glueord gorder ; | |
unsigned char gsign ; | |
halfword p ; | |
integer saveloc ; | |
halfword leaderbox ; | |
scaled leaderwd ; | |
scaled lx ; | |
boolean outerdoingleaders ; | |
scaled edge ; | |
halfword prevp ; | |
integer len ; | |
halfword q, r ; | |
integer k, j ; | |
real gluetemp ; | |
real curglue ; | |
scaled curg ; | |
curg = 0 ; | |
curglue = 0.0 ; | |
thisbox = tempptr ; | |
gorder = mem [thisbox + 5 ].hh.b1 ; | |
gsign = mem [thisbox + 5 ].hh.b0 ; | |
if ( eqtb [8939321L ].cint > 1 ) | |
{ | |
p = mem [thisbox + 5 ].hh .v.RH ; | |
prevp = thisbox + 5 ; | |
while ( p != -268435455L ) { | |
if ( mem [p ].hh .v.RH != -268435455L ) | |
{ | |
if ( ( ( ( p ) != -268435455L ) && ( ! ( p >= himemmin ) ) && ( mem [ | |
p ].hh.b0 == 8 ) && ( ( ( mem [p ].hh.b1 >= 40 ) && ( mem [p ] | |
.hh.b1 <= 41 ) ) ) ) && ( fontletterspace [mem [p + 4 ].qqqq .b1 ] | |
== 0 ) ) | |
{ | |
r = p ; | |
k = mem [r + 4 ].qqqq .b2 ; | |
q = mem [p ].hh .v.RH ; | |
lab1236: while ( ( q != -268435455L ) && ! ( q >= himemmin ) && ( ( | |
mem [q ].hh.b0 == 12 ) || ( mem [q ].hh.b0 == 3 ) || ( mem [q ] | |
.hh.b0 == 4 ) || ( mem [q ].hh.b0 == 5 ) || ( ( mem [q ].hh.b0 | |
== 8 ) && ( mem [q ].hh.b1 <= 4 ) ) ) ) q = mem [q ].hh .v.RH ; | |
if ( ( q != -268435455L ) && ! ( q >= himemmin ) ) | |
{ | |
if ( ( mem [q ].hh.b0 == 10 ) && ( mem [q ].hh.b1 == 0 ) ) | |
{ | |
if ( ( mem [q + 1 ].hh .v.LH == fontglue [mem [r + 4 ].qqqq | |
.b1 ]) ) | |
{ | |
q = mem [q ].hh .v.RH ; | |
while ( ( q != -268435455L ) && ! ( q >= himemmin ) && ( ( mem | |
[q ].hh.b0 == 12 ) || ( mem [q ].hh.b0 == 3 ) || ( mem [q | |
].hh.b0 == 4 ) || ( mem [q ].hh.b0 == 5 ) || ( ( mem [q ] | |
.hh.b0 == 8 ) && ( mem [q ].hh.b1 <= 4 ) ) ) ) q = mem [q ] | |
.hh .v.RH ; | |
if ( ( ( ( q ) != -268435455L ) && ( ! ( q >= himemmin ) ) && | |
( mem [q ].hh.b0 == 8 ) && ( ( ( mem [q ].hh.b1 >= 40 ) && | |
( mem [q ].hh.b1 <= 41 ) ) ) ) && ( mem [q + 4 ].qqqq .b1 | |
== mem [r + 4 ].qqqq .b1 ) ) | |
{ | |
p = q ; | |
k = k + 1 + mem [q + 4 ].qqqq .b2 ; | |
q = mem [q ].hh .v.RH ; | |
goto lab1236 ; | |
} | |
} | |
else q = mem [q ].hh .v.RH ; | |
if ( ( q != -268435455L ) && ! ( q >= himemmin ) && ( mem [q ] | |
.hh.b0 == 11 ) && ( mem [q ].hh.b1 == 3 ) ) | |
{ | |
q = mem [q ].hh .v.RH ; | |
while ( ( q != -268435455L ) && ! ( q >= himemmin ) && ( ( mem | |
[q ].hh.b0 == 12 ) || ( mem [q ].hh.b0 == 3 ) || ( mem [q | |
].hh.b0 == 4 ) || ( mem [q ].hh.b0 == 5 ) || ( ( mem [q ] | |
.hh.b0 == 8 ) && ( mem [q ].hh.b1 <= 4 ) ) ) ) q = mem [q ] | |
.hh .v.RH ; | |
if ( ( ( ( q ) != -268435455L ) && ( ! ( q >= himemmin ) ) && | |
( mem [q ].hh.b0 == 8 ) && ( ( ( mem [q ].hh.b1 >= 40 ) && | |
( mem [q ].hh.b1 <= 41 ) ) ) ) && ( mem [q + 4 ].qqqq .b1 | |
== mem [r + 4 ].qqqq .b1 ) ) | |
{ | |
p = q ; | |
k = k + 1 + mem [q + 4 ].qqqq .b2 ; | |
q = mem [q ].hh .v.RH ; | |
goto lab1236 ; | |
} | |
} | |
goto lab1237 ; | |
} | |
if ( ( ( ( q ) != -268435455L ) && ( ! ( q >= himemmin ) ) && ( | |
mem [q ].hh.b0 == 8 ) && ( ( ( mem [q ].hh.b1 >= 40 ) && ( mem | |
[q ].hh.b1 <= 41 ) ) ) ) && ( mem [q + 4 ].qqqq .b1 == mem [r | |
+ 4 ].qqqq .b1 ) ) | |
{ | |
p = q ; | |
q = mem [q ].hh .v.RH ; | |
goto lab1236 ; | |
} | |
} | |
lab1237: if ( p != r ) | |
{ | |
{ | |
if ( poolptr + k > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
k = 0 ; | |
q = r ; | |
while ( true ) { | |
if ( mem [q ].hh.b0 == 8 ) | |
{ | |
if ( ( ( ( mem [q ].hh.b1 >= 40 ) && ( mem [q ].hh.b1 <= | |
41 ) ) ) ) | |
{ | |
{register integer for_end; j = 0 ;for_end = mem [q + 4 ] | |
.qqqq .b2 - 1 ; if ( j <= for_end) do | |
{ | |
strpool [poolptr ]= getnativechar ( q , j ) ; | |
incr ( poolptr ) ; | |
} | |
while ( j++ < for_end ) ;} | |
k = k + mem [q + 1 ].cint ; | |
} | |
} | |
else if ( mem [q ].hh.b0 == 10 ) | |
{ | |
{ | |
strpool [poolptr ]= 32 ; | |
incr ( poolptr ) ; | |
} | |
g = mem [q + 1 ].hh .v.LH ; | |
k = k + mem [g + 1 ].cint ; | |
if ( gsign != 0 ) | |
{ | |
if ( gsign == 1 ) | |
{ | |
if ( mem [g ].hh.b0 == gorder ) | |
{ | |
k = k + round ( mem [thisbox + 6 ].gr * mem [g + 2 ] | |
.cint ) ; | |
} | |
} | |
else { | |
if ( mem [g ].hh.b1 == gorder ) | |
{ | |
k = k - round ( mem [thisbox + 6 ].gr * mem [g + 3 ] | |
.cint ) ; | |
} | |
} | |
} | |
} | |
else if ( mem [q ].hh.b0 == 11 ) | |
{ | |
k = k + mem [q + 1 ].cint ; | |
} | |
if ( q == p ) | |
break ; | |
else q = mem [q ].hh .v.RH ; | |
} | |
q = newnativewordnode ( mem [r + 4 ].qqqq .b1 , ( poolptr - | |
strstart [( strptr ) - 65536L ]) ) ; | |
mem [q ].hh.b1 = mem [r ].hh.b1 ; | |
{register integer for_end; j = 0 ;for_end = ( poolptr - strstart | |
[( strptr ) - 65536L ]) - 1 ; if ( j <= for_end) do | |
setnativechar ( q , j , strpool [strstart [( strptr ) - 65536L | |
]+ j ]) ; | |
while ( j++ < for_end ) ;} | |
mem [q + 1 ].cint = k ; | |
setjustifiednativeglyphs ( q ) ; | |
mem [prevp ].hh .v.RH = q ; | |
mem [q ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
prevp = r ; | |
p = mem [r ].hh .v.RH ; | |
while ( p != -268435455L ) { | |
if ( ! ( p >= himemmin ) && ( ( mem [p ].hh.b0 == 12 ) || ( | |
mem [p ].hh.b0 == 3 ) || ( mem [p ].hh.b0 == 4 ) || ( mem [ | |
p ].hh.b0 == 5 ) || ( ( mem [p ].hh.b0 == 8 ) && ( mem [p ] | |
.hh.b1 <= 4 ) ) ) ) | |
{ | |
mem [prevp ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = p ; | |
q = p ; | |
} | |
prevp = p ; | |
p = mem [p ].hh .v.RH ; | |
} | |
flushnodelist ( r ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
p = q ; | |
} | |
} | |
prevp = p ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
} | |
p = mem [thisbox + 5 ].hh .v.RH ; | |
incr ( curs ) ; | |
if ( curs > 0 ) | |
{ | |
dvibuf [dviptr ]= 141 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
if ( curs > maxpush ) | |
maxpush = curs ; | |
saveloc = dvioffset + dviptr ; | |
baseline = curv ; | |
prevp = thisbox + 5 ; | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = 0 ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
if ( ( mem [thisbox ].hh.b1 ) == 2 ) { | |
if ( curdir == 1 ) | |
{ | |
curdir = 0 ; | |
curh = curh - mem [thisbox + 1 ].cint ; | |
} | |
else mem [thisbox ].hh.b1 = 0 ; | |
} | |
if ( ( curdir == 1 ) && ( ( mem [thisbox ].hh.b1 ) != 1 ) ) | |
{ | |
saveh = curh ; | |
tempptr = p ; | |
p = newkern ( 0 ) ; | |
mem [p + 2 ].hh .v.LH = 0 ; | |
mem [prevp ].hh .v.RH = p ; | |
curh = 0 ; | |
mem [p ].hh .v.RH = reverse ( thisbox , -268435455L , curg , curglue ) | |
; | |
mem [p + 1 ].cint = - (integer) curh ; | |
curh = saveh ; | |
mem [thisbox ].hh.b1 = 1 ; | |
} | |
} | |
leftedge = curh ; | |
synctexhlist ( thisbox ) ; | |
while ( p != -268435455L ) lab21: if ( ( p >= himemmin ) ) | |
{ | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
do { | |
f = mem [p ].hh.b0 ; | |
c = mem [p ].hh.b1 ; | |
if ( ( p != memtop - 12 ) && ( fontmapping [f ]!= nil ) ) | |
c = applytfmfontmapping ( fontmapping [f ], c ) ; | |
if ( f != dvif ) | |
{ | |
if ( ! fontused [f ]) | |
{ | |
dvifontdef ( f ) ; | |
fontused [f ]= true ; | |
} | |
if ( f <= 64 ) | |
{ | |
dvibuf [dviptr ]= f + 170 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
else if ( f <= 256 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 235 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= f - 1 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 236 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
dvif = f ; | |
} | |
if ( fontec [f ]>= c ) { | |
if ( fontbc [f ]<= c ) { | |
if ( ( fontinfo [charbase [f ]+ c ].qqqq .b0 > 0 ) ) | |
{ | |
if ( c >= 128 ) | |
{ | |
dvibuf [dviptr ]= 128 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= c ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
curh = curh + fontinfo [widthbase [f ]+ fontinfo [charbase [f | |
]+ c ].qqqq .b0 ].cint ; | |
goto lab22 ; | |
} | |
} | |
} | |
if ( mltexenabledp ) | |
{ | |
if ( c >= eqtb [8939295L ].cint ) { | |
if ( c <= eqtb [8939296L ].cint ) { | |
if ( ( eqtb [7825128L + c ].hh .v.RH > 0 ) ) | |
{ | |
basec = ( eqtb [7825128L + c ].hh .v.RH % 256 ) ; | |
accentc = ( eqtb [7825128L + c ].hh .v.RH / 256 ) ; | |
if ( ( fontec [f ]>= basec ) ) { | |
if ( ( fontbc [f ]<= basec ) ) { | |
if ( ( fontec [f ]>= accentc ) ) { | |
if ( ( fontbc [f ]<= accentc ) ) | |
{ | |
iac = fontinfo [charbase [f ]+ effectivechar ( true , | |
f , accentc ) ].qqqq ; | |
ibc = fontinfo [charbase [f ]+ effectivechar ( true , | |
f , basec ) ].qqqq ; | |
if ( ( ibc .b0 > 0 ) ) { | |
if ( ( iac .b0 > 0 ) ) | |
goto lab40 ; | |
} | |
} | |
} | |
} | |
} | |
begindiagnostic () ; | |
printnl ( 66968L ) ; | |
print ( c ) ; | |
print ( 66641L ) ; | |
print ( accentc ) ; | |
print ( 32 ) ; | |
print ( basec ) ; | |
print ( 66218L ) ; | |
print ( fontname [f ]) ; | |
printchar ( 33 ) ; | |
enddiagnostic ( false ) ; | |
goto lab22 ; | |
} | |
} | |
} | |
begindiagnostic () ; | |
printnl ( 66217L ) ; | |
print ( 66967L ) ; | |
print ( c ) ; | |
print ( 66218L ) ; | |
print ( fontname [f ]) ; | |
printchar ( 33 ) ; | |
enddiagnostic ( false ) ; | |
goto lab22 ; | |
lab40: if ( eqtb [8939275L ].cint > 99 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66969L ) ; | |
print ( c ) ; | |
print ( 66641L ) ; | |
print ( accentc ) ; | |
print ( 32 ) ; | |
print ( basec ) ; | |
print ( 66218L ) ; | |
print ( fontname [f ]) ; | |
printchar ( 46 ) ; | |
enddiagnostic ( false ) ; | |
} | |
basexheight = fontinfo [5 + parambase [f ]].cint ; | |
baseslant = fontinfo [1 + parambase [f ]].cint / ((double) 65536.0 | |
) ; | |
accentslant = baseslant ; | |
basewidth = fontinfo [widthbase [f ]+ ibc .b0 ].cint ; | |
baseheight = fontinfo [heightbase [f ]+ ( ibc .b1 ) / 16 ].cint ; | |
accentwidth = fontinfo [widthbase [f ]+ iac .b0 ].cint ; | |
accentheight = fontinfo [heightbase [f ]+ ( iac .b1 ) / 16 ].cint | |
; | |
delta = round ( ( basewidth - accentwidth ) / ((double) 2.0 ) + | |
baseheight * baseslant - basexheight * accentslant ) ; | |
dvih = curh ; | |
curh = curh + delta ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( ( ( baseheight != basexheight ) && ( accentheight > 0 ) ) ) | |
{ | |
curv = baseline + ( basexheight - baseheight ) ; | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
if ( accentc >= 128 ) | |
{ | |
dvibuf [dviptr ]= 128 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= accentc ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
curv = baseline ; | |
} | |
else { | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
if ( accentc >= 128 ) | |
{ | |
dvibuf [dviptr ]= 128 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= accentc ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
curh = curh + accentwidth ; | |
dvih = curh ; | |
curh = curh + ( - (integer) accentwidth - delta ) ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
if ( basec >= 128 ) | |
{ | |
dvibuf [dviptr ]= 128 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= basec ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
curh = curh + basewidth ; | |
dvih = curh ; | |
} | |
lab22: prevp = mem [prevp ].hh .v.RH ; | |
p = mem [p ].hh .v.RH ; | |
} while ( ! ( ! ( p >= himemmin ) ) ) ; | |
synctexcurrent () ; | |
dvih = curh ; | |
} | |
else { | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
if ( mem [p + 5 ].hh .v.RH == -268435455L ) | |
{ | |
if ( mem [p ].hh.b0 == 1 ) | |
{ | |
synctexvoidvlist ( p , thisbox ) ; | |
} | |
else { | |
synctexvoidhlist ( p , thisbox ) ; | |
} | |
curh = curh + mem [p + 1 ].cint ; | |
} | |
else { | |
saveh = dvih ; | |
savev = dviv ; | |
curv = baseline + mem [p + 4 ].cint ; | |
tempptr = p ; | |
edge = curh + mem [p + 1 ].cint ; | |
if ( curdir == 1 ) | |
curh = edge ; | |
if ( mem [p ].hh.b0 == 1 ) | |
vlistout () ; | |
else hlistout () ; | |
dvih = saveh ; | |
dviv = savev ; | |
curh = edge ; | |
curv = baseline ; | |
} | |
break ; | |
case 2 : | |
{ | |
ruleht = mem [p + 3 ].cint ; | |
ruledp = mem [p + 2 ].cint ; | |
rulewd = mem [p + 1 ].cint ; | |
goto lab14 ; | |
} | |
break ; | |
case 8 : | |
{ | |
switch ( mem [p ].hh.b1 ) | |
{case 40 : | |
case 41 : | |
case 42 : | |
{ | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
f = mem [p + 4 ].qqqq .b1 ; | |
if ( f != dvif ) | |
{ | |
if ( ! fontused [f ]) | |
{ | |
dvifontdef ( f ) ; | |
fontused [f ]= true ; | |
} | |
if ( f <= 64 ) | |
{ | |
dvibuf [dviptr ]= f + 170 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
else if ( f <= 256 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 235 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= f - 1 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 236 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
dvif = f ; | |
} | |
if ( mem [p ].hh.b1 == 42 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 253 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( mem [p + 1 ].cint ) ; | |
dvitwo ( 1 ) ; | |
dvifour ( 0 ) ; | |
dvifour ( 0 ) ; | |
dvitwo ( mem [p + 4 ].qqqq .b2 ) ; | |
curh = curh + mem [p + 1 ].cint ; | |
} | |
else { | |
if ( mem [p ].hh.b1 == 41 ) | |
{ | |
if ( ( mem [p + 4 ].qqqq .b2 > 0 ) || ( mem [p + 5 ].ptr | |
!= nullptr ) ) | |
{ | |
{ | |
dvibuf [dviptr ]= 254 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
len = mem [p + 4 ].qqqq .b2 ; | |
dvitwo ( len ) ; | |
{register integer for_end; k = 0 ;for_end = len - 1 ; if ( | |
k <= for_end) do | |
{ | |
dvitwo ( getnativechar ( p , k ) ) ; | |
} | |
while ( k++ < for_end ) ;} | |
len = makexdvglypharraydata ( p ) ; | |
{register integer for_end; k = 0 ;for_end = len - 1 ; if ( | |
k <= for_end) do | |
{ | |
dvibuf [dviptr ]= xdvbufferbyte ( k ) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( k++ < for_end ) ;} | |
} | |
} | |
else { | |
if ( mem [p + 5 ].ptr != nullptr ) | |
{ | |
{ | |
dvibuf [dviptr ]= 253 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
len = makexdvglypharraydata ( p ) ; | |
{register integer for_end; k = 0 ;for_end = len - 1 ; if ( | |
k <= for_end) do | |
{ | |
dvibuf [dviptr ]= xdvbufferbyte ( k ) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( k++ < for_end ) ;} | |
} | |
} | |
curh = curh + mem [p + 1 ].cint ; | |
} | |
dvih = curh ; | |
} | |
break ; | |
case 43 : | |
case 44 : | |
{ | |
saveh = dvih ; | |
savev = dviv ; | |
curv = baseline ; | |
edge = curh + mem [p + 1 ].cint ; | |
picout ( p ) ; | |
dvih = saveh ; | |
dviv = savev ; | |
curh = edge ; | |
curv = baseline ; | |
} | |
break ; | |
case 21 : | |
{ | |
pdflastxpos = curh + 4736286L ; | |
pdflastypos = curpageheight - curv - 4736286L ; | |
} | |
break ; | |
default: | |
outwhat ( p ) ; | |
break ; | |
} | |
} | |
break ; | |
case 10 : | |
{ | |
g = mem [p + 1 ].hh .v.LH ; | |
rulewd = mem [g + 1 ].cint - curg ; | |
if ( gsign != 0 ) | |
{ | |
if ( gsign == 1 ) | |
{ | |
if ( mem [g ].hh.b0 == gorder ) | |
{ | |
curglue = curglue + mem [g + 2 ].cint ; | |
gluetemp = mem [thisbox + 6 ].gr * curglue ; | |
if ( gluetemp > 1000000000.0 ) | |
gluetemp = 1000000000.0 ; | |
else if ( gluetemp < -1000000000.0 ) | |
gluetemp = -1000000000.0 ; | |
curg = round ( gluetemp ) ; | |
} | |
} | |
else if ( mem [g ].hh.b1 == gorder ) | |
{ | |
curglue = curglue - mem [g + 3 ].cint ; | |
gluetemp = mem [thisbox + 6 ].gr * curglue ; | |
if ( gluetemp > 1000000000.0 ) | |
gluetemp = 1000000000.0 ; | |
else if ( gluetemp < -1000000000.0 ) | |
gluetemp = -1000000000.0 ; | |
curg = round ( gluetemp ) ; | |
} | |
} | |
rulewd = rulewd + curg ; | |
if ( ( eTeXmode == 1 ) ) { | |
if ( ( ( ( gsign == 1 ) && ( mem [g ].hh.b0 == gorder ) ) || ( ( | |
gsign == 2 ) && ( mem [g ].hh.b1 == gorder ) ) ) ) | |
{ | |
{ | |
if ( mem [g ].hh .v.RH == -268435455L ) | |
freenode ( g , 4 ) ; | |
else decr ( mem [g ].hh .v.RH ) ; | |
} | |
if ( mem [p ].hh.b1 < 100 ) | |
{ | |
mem [p ].hh.b0 = 11 ; | |
mem [p + 1 ].cint = rulewd ; | |
} | |
else { | |
g = getnode ( 4 ) ; | |
mem [g ].hh.b0 = 4 ; | |
mem [g ].hh.b1 = 4 ; | |
mem [g + 1 ].cint = rulewd ; | |
mem [g + 2 ].cint = 0 ; | |
mem [g + 3 ].cint = 0 ; | |
mem [p + 1 ].hh .v.LH = g ; | |
} | |
} | |
} | |
if ( mem [p ].hh.b1 >= 100 ) | |
{ | |
leaderbox = mem [p + 1 ].hh .v.RH ; | |
if ( mem [leaderbox ].hh.b0 == 2 ) | |
{ | |
ruleht = mem [leaderbox + 3 ].cint ; | |
ruledp = mem [leaderbox + 2 ].cint ; | |
goto lab14 ; | |
} | |
leaderwd = mem [leaderbox + 1 ].cint ; | |
if ( ( leaderwd > 0 ) && ( rulewd > 0 ) ) | |
{ | |
rulewd = rulewd + 10 ; | |
if ( curdir == 1 ) | |
curh = curh - 10 ; | |
edge = curh + rulewd ; | |
lx = 0 ; | |
if ( mem [p ].hh.b1 == 100 ) | |
{ | |
saveh = curh ; | |
curh = leftedge + leaderwd * ( ( curh - leftedge ) / leaderwd ) | |
; | |
if ( curh < saveh ) | |
curh = curh + leaderwd ; | |
} | |
else { | |
lq = rulewd / leaderwd ; | |
lr = rulewd % leaderwd ; | |
if ( mem [p ].hh.b1 == 101 ) | |
curh = curh + ( lr / 2 ) ; | |
else { | |
lx = lr / ( lq + 1 ) ; | |
curh = curh + ( ( lr - ( lq - 1 ) * lx ) / 2 ) ; | |
} | |
} | |
while ( curh + leaderwd <= edge ) { | |
curv = baseline + mem [leaderbox + 4 ].cint ; | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
savev = dviv ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
saveh = dvih ; | |
tempptr = leaderbox ; | |
if ( curdir == 1 ) | |
curh = curh + leaderwd ; | |
outerdoingleaders = doingleaders ; | |
doingleaders = true ; | |
if ( mem [leaderbox ].hh.b0 == 1 ) | |
vlistout () ; | |
else hlistout () ; | |
doingleaders = outerdoingleaders ; | |
dviv = savev ; | |
dvih = saveh ; | |
curv = baseline ; | |
curh = saveh + leaderwd + lx ; | |
} | |
if ( curdir == 1 ) | |
curh = edge ; | |
else curh = edge - 10 ; | |
goto lab15 ; | |
} | |
} | |
goto lab13 ; | |
} | |
break ; | |
case 40 : | |
{ | |
curh = curh + mem [p + 1 ].cint ; | |
} | |
break ; | |
case 11 : | |
{ | |
synctexkern ( p , thisbox ) ; | |
curh = curh + mem [p + 1 ].cint ; | |
} | |
break ; | |
case 9 : | |
{ | |
synctexmath ( p , thisbox ) ; | |
{ | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
if ( odd ( mem [p ].hh.b1 ) ) { | |
if ( mem [LRptr ].hh .v.LH == ( 4 * ( mem [p ].hh.b1 / 4 ) + | |
3 ) ) | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
else { | |
if ( mem [p ].hh.b1 > 4 ) | |
incr ( LRproblems ) ; | |
} | |
} | |
else { | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [p ].hh.b1 / 4 ) + 3 | |
) ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
if ( ( mem [p ].hh.b1 / 8 ) != curdir ) | |
{ | |
saveh = curh ; | |
tempptr = mem [p ].hh .v.RH ; | |
rulewd = mem [p + 1 ].cint ; | |
freenode ( p , 3 ) ; | |
curdir = 1 - curdir ; | |
p = newedge ( curdir , rulewd ) ; | |
mem [prevp ].hh .v.RH = p ; | |
curh = curh - leftedge + rulewd ; | |
mem [p ].hh .v.RH = reverse ( thisbox , newedge ( 1 - curdir | |
, 0 ) , curg , curglue ) ; | |
mem [p + 2 ].cint = curh ; | |
curdir = 1 - curdir ; | |
curh = saveh ; | |
goto lab21 ; | |
} | |
} | |
mem [p ].hh.b0 = 11 ; | |
} | |
curh = curh + mem [p + 1 ].cint ; | |
} | |
} | |
break ; | |
case 6 : | |
{ | |
mem [memtop - 12 ]= mem [p + 1 ]; | |
mem [memtop - 12 ].hh .v.RH = mem [p ].hh .v.RH ; | |
p = memtop - 12 ; | |
xtxligaturepresent = true ; | |
goto lab21 ; | |
} | |
break ; | |
case 14 : | |
{ | |
curh = curh + mem [p + 1 ].cint ; | |
leftedge = curh + mem [p + 2 ].cint ; | |
curdir = mem [p ].hh.b1 ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
goto lab15 ; | |
lab14: if ( ( ruleht == -1073741824L ) ) | |
ruleht = mem [thisbox + 3 ].cint ; | |
if ( ( ruledp == -1073741824L ) ) | |
ruledp = mem [thisbox + 2 ].cint ; | |
ruleht = ruleht + ruledp ; | |
if ( ( ruleht > 0 ) && ( rulewd > 0 ) ) | |
{ | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
curv = baseline + ruledp ; | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
{ | |
dvibuf [dviptr ]= 132 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( ruleht ) ; | |
dvifour ( rulewd ) ; | |
curv = baseline ; | |
dvih = dvih + rulewd ; | |
} | |
lab13: { | |
curh = curh + rulewd ; | |
synctexhorizontalruleorglue ( p , thisbox ) ; | |
} | |
lab15: prevp = p ; | |
p = mem [p ].hh .v.RH ; | |
} | |
synctextsilh ( thisbox ) ; | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
{ | |
while ( mem [LRptr ].hh .v.LH != 0 ) { | |
if ( mem [LRptr ].hh .v.LH > 4 ) | |
LRproblems = LRproblems + 10000 ; | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
} | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
} | |
if ( ( mem [thisbox ].hh.b1 ) == 2 ) | |
curdir = 1 ; | |
} | |
prunemovements ( saveloc ) ; | |
if ( curs > 0 ) | |
dvipop ( saveloc ) ; | |
decr ( curs ) ; | |
} | |
void | |
vlistout ( void ) | |
{ | |
/* 13 14 15 */ vlistout_regmem | |
scaled leftedge ; | |
scaled topedge ; | |
scaled saveh, savev ; | |
halfword thisbox ; | |
glueord gorder ; | |
unsigned char gsign ; | |
halfword p ; | |
integer saveloc ; | |
halfword leaderbox ; | |
scaled leaderht ; | |
scaled lx ; | |
boolean outerdoingleaders ; | |
scaled edge ; | |
real gluetemp ; | |
real curglue ; | |
scaled curg ; | |
boolean upwards ; | |
curg = 0 ; | |
curglue = 0.0 ; | |
thisbox = tempptr ; | |
gorder = mem [thisbox + 5 ].hh.b1 ; | |
gsign = mem [thisbox + 5 ].hh.b0 ; | |
p = mem [thisbox + 5 ].hh .v.RH ; | |
upwards = ( mem [thisbox ].hh.b1 == 1 ) ; | |
incr ( curs ) ; | |
if ( curs > 0 ) | |
{ | |
dvibuf [dviptr ]= 141 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
if ( curs > maxpush ) | |
maxpush = curs ; | |
saveloc = dvioffset + dviptr ; | |
leftedge = curh ; | |
synctexvlist ( thisbox ) ; | |
if ( upwards ) | |
curv = curv + mem [thisbox + 2 ].cint ; | |
else curv = curv - mem [thisbox + 3 ].cint ; | |
topedge = curv ; | |
while ( p != -268435455L ) { | |
if ( ( p >= himemmin ) ) | |
confusion ( 66221L ) ; | |
else { | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
if ( mem [p + 5 ].hh .v.RH == -268435455L ) | |
{ | |
if ( upwards ) | |
curv = curv - mem [p + 2 ].cint ; | |
else curv = curv + mem [p + 3 ].cint ; | |
if ( mem [p ].hh.b0 == 1 ) | |
{ | |
synctexvoidvlist ( p , thisbox ) ; | |
} | |
else { | |
synctexvoidhlist ( p , thisbox ) ; | |
} | |
if ( upwards ) | |
curv = curv - mem [p + 3 ].cint ; | |
else curv = curv + mem [p + 2 ].cint ; | |
} | |
else { | |
if ( upwards ) | |
curv = curv - mem [p + 2 ].cint ; | |
else curv = curv + mem [p + 3 ].cint ; | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
saveh = dvih ; | |
savev = dviv ; | |
if ( curdir == 1 ) | |
curh = leftedge - mem [p + 4 ].cint ; | |
else curh = leftedge + mem [p + 4 ].cint ; | |
tempptr = p ; | |
if ( mem [p ].hh.b0 == 1 ) | |
vlistout () ; | |
else hlistout () ; | |
dvih = saveh ; | |
dviv = savev ; | |
if ( upwards ) | |
curv = savev - mem [p + 3 ].cint ; | |
else curv = savev + mem [p + 2 ].cint ; | |
curh = leftedge ; | |
} | |
break ; | |
case 2 : | |
{ | |
ruleht = mem [p + 3 ].cint ; | |
ruledp = mem [p + 2 ].cint ; | |
rulewd = mem [p + 1 ].cint ; | |
goto lab14 ; | |
} | |
break ; | |
case 8 : | |
{ | |
switch ( mem [p ].hh.b1 ) | |
{case 42 : | |
{ | |
curv = curv + mem [p + 3 ].cint ; | |
curh = leftedge ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
f = mem [p + 4 ].qqqq .b1 ; | |
if ( f != dvif ) | |
{ | |
if ( ! fontused [f ]) | |
{ | |
dvifontdef ( f ) ; | |
fontused [f ]= true ; | |
} | |
if ( f <= 64 ) | |
{ | |
dvibuf [dviptr ]= f + 170 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
else if ( f <= 256 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 235 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= f - 1 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 236 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( f - 1 ) % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
} | |
dvif = f ; | |
} | |
{ | |
dvibuf [dviptr ]= 253 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( 0 ) ; | |
dvitwo ( 1 ) ; | |
dvifour ( 0 ) ; | |
dvifour ( 0 ) ; | |
dvitwo ( mem [p + 4 ].qqqq .b2 ) ; | |
curv = curv + mem [p + 2 ].cint ; | |
curh = leftedge ; | |
} | |
break ; | |
case 43 : | |
case 44 : | |
{ | |
saveh = dvih ; | |
savev = dviv ; | |
curv = curv + mem [p + 3 ].cint ; | |
picout ( p ) ; | |
dvih = saveh ; | |
dviv = savev ; | |
curv = savev + mem [p + 2 ].cint ; | |
curh = leftedge ; | |
} | |
break ; | |
case 21 : | |
{ | |
pdflastxpos = curh + 4736286L ; | |
pdflastypos = curpageheight - curv - 4736286L ; | |
} | |
break ; | |
default: | |
outwhat ( p ) ; | |
break ; | |
} | |
} | |
break ; | |
case 10 : | |
{ | |
g = mem [p + 1 ].hh .v.LH ; | |
ruleht = mem [g + 1 ].cint - curg ; | |
if ( gsign != 0 ) | |
{ | |
if ( gsign == 1 ) | |
{ | |
if ( mem [g ].hh.b0 == gorder ) | |
{ | |
curglue = curglue + mem [g + 2 ].cint ; | |
gluetemp = mem [thisbox + 6 ].gr * curglue ; | |
if ( gluetemp > 1000000000.0 ) | |
gluetemp = 1000000000.0 ; | |
else if ( gluetemp < -1000000000.0 ) | |
gluetemp = -1000000000.0 ; | |
curg = round ( gluetemp ) ; | |
} | |
} | |
else if ( mem [g ].hh.b1 == gorder ) | |
{ | |
curglue = curglue - mem [g + 3 ].cint ; | |
gluetemp = mem [thisbox + 6 ].gr * curglue ; | |
if ( gluetemp > 1000000000.0 ) | |
gluetemp = 1000000000.0 ; | |
else if ( gluetemp < -1000000000.0 ) | |
gluetemp = -1000000000.0 ; | |
curg = round ( gluetemp ) ; | |
} | |
} | |
ruleht = ruleht + curg ; | |
if ( mem [p ].hh.b1 >= 100 ) | |
{ | |
leaderbox = mem [p + 1 ].hh .v.RH ; | |
if ( mem [leaderbox ].hh.b0 == 2 ) | |
{ | |
rulewd = mem [leaderbox + 1 ].cint ; | |
ruledp = 0 ; | |
goto lab14 ; | |
} | |
leaderht = mem [leaderbox + 3 ].cint + mem [leaderbox + 2 ] | |
.cint ; | |
if ( ( leaderht > 0 ) && ( ruleht > 0 ) ) | |
{ | |
ruleht = ruleht + 10 ; | |
edge = curv + ruleht ; | |
lx = 0 ; | |
if ( mem [p ].hh.b1 == 100 ) | |
{ | |
savev = curv ; | |
curv = topedge + leaderht * ( ( curv - topedge ) / leaderht ) | |
; | |
if ( curv < savev ) | |
curv = curv + leaderht ; | |
} | |
else { | |
lq = ruleht / leaderht ; | |
lr = ruleht % leaderht ; | |
if ( mem [p ].hh.b1 == 101 ) | |
curv = curv + ( lr / 2 ) ; | |
else { | |
lx = lr / ( lq + 1 ) ; | |
curv = curv + ( ( lr - ( lq - 1 ) * lx ) / 2 ) ; | |
} | |
} | |
while ( curv + leaderht <= edge ) { | |
if ( curdir == 1 ) | |
curh = leftedge - mem [leaderbox + 4 ].cint ; | |
else curh = leftedge + mem [leaderbox + 4 ].cint ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
saveh = dvih ; | |
curv = curv + mem [leaderbox + 3 ].cint ; | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
savev = dviv ; | |
tempptr = leaderbox ; | |
outerdoingleaders = doingleaders ; | |
doingleaders = true ; | |
if ( mem [leaderbox ].hh.b0 == 1 ) | |
vlistout () ; | |
else hlistout () ; | |
doingleaders = outerdoingleaders ; | |
dviv = savev ; | |
dvih = saveh ; | |
curh = leftedge ; | |
curv = savev - mem [leaderbox + 3 ].cint + leaderht + lx ; | |
} | |
curv = edge - 10 ; | |
goto lab15 ; | |
} | |
} | |
goto lab13 ; | |
} | |
break ; | |
case 11 : | |
if ( upwards ) | |
curv = curv - mem [p + 1 ].cint ; | |
else curv = curv + mem [p + 1 ].cint ; | |
break ; | |
default: | |
; | |
break ; | |
} | |
goto lab15 ; | |
lab14: if ( ( rulewd == -1073741824L ) ) | |
rulewd = mem [thisbox + 1 ].cint ; | |
ruleht = ruleht + ruledp ; | |
if ( upwards ) | |
curv = curv - ruleht ; | |
else curv = curv + ruleht ; | |
if ( ( ruleht > 0 ) && ( rulewd > 0 ) ) | |
{ | |
if ( curdir == 1 ) | |
curh = curh - rulewd ; | |
if ( curh != dvih ) | |
{ | |
movement ( curh - dvih , 143 ) ; | |
dvih = curh ; | |
} | |
if ( curv != dviv ) | |
{ | |
movement ( curv - dviv , 157 ) ; | |
dviv = curv ; | |
} | |
{ | |
dvibuf [dviptr ]= 137 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( ruleht ) ; | |
dvifour ( rulewd ) ; | |
curh = leftedge ; | |
} | |
goto lab15 ; | |
lab13: if ( upwards ) | |
curv = curv - ruleht ; | |
else curv = curv + ruleht ; | |
} | |
lab15: p = mem [p ].hh .v.RH ; | |
} | |
synctextsilv ( thisbox ) ; | |
prunemovements ( saveloc ) ; | |
if ( curs > 0 ) | |
dvipop ( saveloc ) ; | |
decr ( curs ) ; | |
} | |
void | |
zshipout ( halfword p ) | |
{ | |
/* 30 */ shipout_regmem | |
integer pageloc ; | |
unsigned char j, k ; | |
poolpointer s ; | |
unsigned char oldsetting ; | |
synctexsheet ( eqtb [8939257L ].cint ) ; | |
{ | |
if ( jobname == 0 ) | |
openlogfile () ; | |
if ( eqtb [8939274L ].cint > 0 ) | |
{ | |
printnl ( 65626L ) ; | |
println () ; | |
print ( 66222L ) ; | |
} | |
if ( termoffset > maxprintline - 9 ) | |
println () ; | |
else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) | |
printchar ( 32 ) ; | |
printchar ( 91 ) ; | |
j = 9 ; | |
while ( ( eqtb [8939325L + j ].cint == 0 ) && ( j > 0 ) ) decr ( j ) ; | |
{register integer for_end; k = 0 ;for_end = j ; if ( k <= for_end) do | |
{ | |
printint ( eqtb [8939325L + k ].cint ) ; | |
if ( k < j ) | |
printchar ( 46 ) ; | |
} | |
while ( k++ < for_end ) ;} | |
fflush ( stdout ) ; | |
if ( eqtb [8939274L ].cint > 0 ) | |
{ | |
printchar ( 93 ) ; | |
begindiagnostic () ; | |
showbox ( p ) ; | |
enddiagnostic ( true ) ; | |
} | |
if ( ( mem [p + 3 ].cint > 1073741823L ) || ( mem [p + 2 ].cint > | |
1073741823L ) || ( mem [p + 3 ].cint + mem [p + 2 ].cint + eqtb [ | |
10053712L ].cint > 1073741823L ) || ( mem [p + 1 ].cint + eqtb [ | |
10053711L ].cint > 1073741823L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66228L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66229L ; | |
helpline [0 ]= 66230L ; | |
} | |
error () ; | |
if ( eqtb [8939274L ].cint <= 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66231L ) ; | |
showbox ( p ) ; | |
enddiagnostic ( true ) ; | |
} | |
goto lab30 ; | |
} | |
if ( mem [p + 3 ].cint + mem [p + 2 ].cint + eqtb [10053712L ].cint | |
> maxv ) | |
maxv = mem [p + 3 ].cint + mem [p + 2 ].cint + eqtb [10053712L ] | |
.cint ; | |
if ( mem [p + 1 ].cint + eqtb [10053711L ].cint > maxh ) | |
maxh = mem [p + 1 ].cint + eqtb [10053711L ].cint ; | |
dvih = 0 ; | |
dviv = 0 ; | |
curh = eqtb [10053711L ].cint ; | |
dvif = 0 ; | |
curhoffset = eqtb [10053711L ].cint + ( 65536L * 7227 ) / ((double) 100 | |
) ; | |
curvoffset = eqtb [10053712L ].cint + ( 65536L * 7227 ) / ((double) 100 | |
) ; | |
if ( eqtb [10053714L ].cint != 0 ) | |
curpagewidth = eqtb [10053714L ].cint ; | |
else curpagewidth = mem [p + 1 ].cint + 2 * curhoffset ; | |
if ( eqtb [10053715L ].cint != 0 ) | |
curpageheight = eqtb [10053715L ].cint ; | |
else curpageheight = mem [p + 3 ].cint + mem [p + 2 ].cint + 2 * | |
curvoffset ; | |
if ( outputfilename == 0 ) | |
{ | |
if ( jobname == 0 ) | |
openlogfile () ; | |
packjobname ( outputfileextension ) ; | |
while ( ! dviopenout ( dvifile ) ) promptfilename ( 66179L , | |
outputfileextension ) ; | |
outputfilename = bmakenamestring ( dvifile ) ; | |
} | |
if ( totalpages == 0 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 247 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= 7 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( 25400000L ) ; | |
dvifour ( 473628672L ) ; | |
preparemag () ; | |
dvifour ( eqtb [8939257L ].cint ) ; | |
if ( outputcomment ) | |
{ | |
l = strlen ( outputcomment ) ; | |
{ | |
dvibuf [dviptr ]= l ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{register integer for_end; s = 0 ;for_end = l - 1 ; if ( s <= | |
for_end) do | |
{ | |
dvibuf [dviptr ]= outputcomment [s ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( s++ < for_end ) ;} | |
} | |
else { | |
oldsetting = selector ; | |
selector = 21 ; | |
print ( 66220L ) ; | |
printint ( eqtb [8939263L ].cint ) ; | |
printchar ( 46 ) ; | |
printtwo ( eqtb [8939262L ].cint ) ; | |
printchar ( 46 ) ; | |
printtwo ( eqtb [8939261L ].cint ) ; | |
printchar ( 58 ) ; | |
printtwo ( eqtb [8939260L ].cint / 60 ) ; | |
printtwo ( eqtb [8939260L ].cint % 60 ) ; | |
selector = oldsetting ; | |
{ | |
dvibuf [dviptr ]= ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{register integer for_end; s = strstart [( strptr ) - 65536L ]; | |
for_end = poolptr - 1 ; if ( s <= for_end) do | |
{ | |
dvibuf [dviptr ]= strpool [s ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( s++ < for_end ) ;} | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
} | |
pageloc = dvioffset + dviptr ; | |
{ | |
dvibuf [dviptr ]= 139 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{register integer for_end; k = 0 ;for_end = 9 ; if ( k <= for_end) do | |
dvifour ( eqtb [8939325L + k ].cint ) ; | |
while ( k++ < for_end ) ;} | |
dvifour ( lastbop ) ; | |
lastbop = pageloc ; | |
oldsetting = selector ; | |
selector = 21 ; | |
print ( 66226L ) ; | |
if ( ( eqtb [10053714L ].cint > 0 ) && ( eqtb [10053715L ].cint > 0 ) | |
) | |
{ | |
print ( 66088L ) ; | |
print ( 32 ) ; | |
printscaled ( eqtb [10053714L ].cint ) ; | |
print ( 65697L ) ; | |
print ( 32 ) ; | |
print ( 66089L ) ; | |
print ( 32 ) ; | |
printscaled ( eqtb [10053715L ].cint ) ; | |
print ( 65697L ) ; | |
} | |
else print ( 66227L ) ; | |
selector = oldsetting ; | |
{ | |
dvibuf [dviptr ]= 239 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( poolptr - strstart [( strptr ) - 65536L ]) ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{register integer for_end; s = strstart [( strptr ) - 65536L ];for_end | |
= poolptr - 1 ; if ( s <= for_end) do | |
{ | |
dvibuf [dviptr ]= strpool [s ]; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( s++ < for_end ) ;} | |
poolptr = strstart [( strptr ) - 65536L ]; | |
curv = mem [p + 3 ].cint + eqtb [10053712L ].cint ; | |
tempptr = p ; | |
if ( mem [p ].hh.b0 == 1 ) | |
vlistout () ; | |
else hlistout () ; | |
{ | |
dvibuf [dviptr ]= 140 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
incr ( totalpages ) ; | |
curs = -1 ; | |
if ( ! nopdfoutput ) | |
fflush ( dvifile ) ; | |
; | |
#ifdef IPC | |
if ( ipcon > 0 ) | |
{ | |
if ( dvilimit == halfbuf ) | |
{ | |
writedvi ( halfbuf , dvibufsize - 1 ) ; | |
flushdvi () ; | |
dvigone = dvigone + halfbuf ; | |
} | |
if ( dviptr > ( 2147483647L - dvioffset ) ) | |
{ | |
curs = -2 ; | |
fatalerror ( 66219L ) ; | |
} | |
if ( dviptr > 0 ) | |
{ | |
writedvi ( 0 , dviptr - 1 ) ; | |
flushdvi () ; | |
dvioffset = dvioffset + dviptr ; | |
dvigone = dvigone + dviptr ; | |
} | |
dviptr = 0 ; | |
dvilimit = dvibufsize ; | |
ipcpage ( dvigone ) ; | |
} | |
#endif /* IPC */ | |
lab30: ; | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
if ( LRproblems > 0 ) | |
{ | |
{ | |
println () ; | |
printnl ( 66920L ) ; | |
printint ( LRproblems / 10000 ) ; | |
print ( 66921L ) ; | |
printint ( LRproblems % 10000 ) ; | |
print ( 66922L ) ; | |
LRproblems = 0 ; | |
} | |
printchar ( 41 ) ; | |
println () ; | |
} | |
if ( ( LRptr != -268435455L ) || ( curdir != 0 ) ) | |
confusion ( 66924L ) ; | |
} | |
if ( eqtb [8939274L ].cint <= 0 ) | |
printchar ( 93 ) ; | |
deadcycles = 0 ; | |
fflush ( stdout ) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939271L ].cint > 1 ) | |
{ | |
printnl ( 66223L ) ; | |
printint ( varused ) ; | |
printchar ( 38 ) ; | |
printint ( dynused ) ; | |
printchar ( 59 ) ; | |
} | |
#endif /* STAT */ | |
flushnodelist ( p ) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939271L ].cint > 1 ) | |
{ | |
print ( 66224L ) ; | |
printint ( varused ) ; | |
printchar ( 38 ) ; | |
printint ( dynused ) ; | |
print ( 66225L ) ; | |
printint ( himemmin - lomemmax - 1 ) ; | |
println () ; | |
} | |
#endif /* STAT */ | |
} | |
synctexteehs () ; | |
} | |
void | |
zscanspec ( groupcode c , boolean threecodes ) | |
{ | |
/* 40 */ scanspec_regmem | |
integer s ; | |
unsigned char speccode ; | |
if ( threecodes ) | |
s = savestack [saveptr + 0 ].cint ; | |
if ( scankeyword ( 66244L ) ) | |
speccode = 0 ; | |
else if ( scankeyword ( 66245L ) ) | |
speccode = 1 ; | |
else { | |
speccode = 1 ; | |
curval = 0 ; | |
goto lab40 ; | |
} | |
scandimen ( false , false , false ) ; | |
lab40: if ( threecodes ) | |
{ | |
savestack [saveptr + 0 ].cint = s ; | |
incr ( saveptr ) ; | |
} | |
savestack [saveptr + 0 ].cint = speccode ; | |
savestack [saveptr + 1 ].cint = curval ; | |
saveptr = saveptr + 2 ; | |
newsavelevel ( c ) ; | |
scanleftbrace () ; | |
} | |
scaled | |
zcharpw ( halfword p , smallnumber side ) | |
{ | |
register scaled Result; charpw_regmem | |
internalfontnumber f ; | |
integer c ; | |
Result = 0 ; | |
if ( side == 0 ) | |
lastleftmostchar = -268435455L ; | |
else lastrightmostchar = -268435455L ; | |
if ( p == -268435455L ) | |
return Result ; | |
if ( ( ( ( p ) != -268435455L ) && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 8 ) && ( ( ( mem [p ].hh.b1 >= 40 ) && ( mem [p ].hh.b1 <= 41 | |
) ) ) ) ) | |
{ | |
if ( mem [p + 5 ].ptr != nullptr ) | |
{ | |
f = mem [p + 4 ].qqqq .b1 ; | |
Result = roundxnoverd ( fontinfo [6 + parambase [f ]].cint , | |
getnativewordcp ( p , side ) , 1000 ) ; | |
} | |
return Result ; | |
} | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
f = mem [p + 4 ].qqqq .b1 ; | |
Result = roundxnoverd ( fontinfo [6 + parambase [f ]].cint , getcpcode | |
( f , mem [p + 4 ].qqqq .b2 , side ) , 1000 ) ; | |
return Result ; | |
} | |
if ( ! ( p >= himemmin ) ) | |
{ | |
if ( mem [p ].hh.b0 == 6 ) | |
p = p + 1 ; | |
else return Result ; | |
} | |
f = mem [p ].hh.b0 ; | |
c = getcpcode ( f , mem [p ].hh.b1 , side ) ; | |
switch ( side ) | |
{case 0 : | |
lastleftmostchar = p ; | |
break ; | |
case 1 : | |
lastrightmostchar = p ; | |
break ; | |
} | |
if ( c == 0 ) | |
return Result ; | |
Result = roundxnoverd ( fontinfo [6 + parambase [f ]].cint , c , 1000 ) | |
; | |
return Result ; | |
} | |
halfword | |
znewmarginkern ( scaled w , halfword p , smallnumber side ) | |
{ | |
register halfword Result; newmarginkern_regmem | |
halfword k ; | |
k = getnode ( 3 ) ; | |
mem [k ].hh.b0 = 40 ; | |
mem [k ].hh.b1 = side ; | |
mem [k + 1 ].cint = w ; | |
Result = k ; | |
return Result ; | |
} | |
halfword | |
zhpack ( halfword p , scaled w , smallnumber m ) | |
{ | |
/* 21 50 10 20 */ register halfword Result; hpack_regmem | |
halfword r ; | |
halfword q ; | |
scaled h, d, x ; | |
scaled s ; | |
halfword g ; | |
glueord o ; | |
internalfontnumber f ; | |
fourquarters i ; | |
eightbits hd ; | |
halfword pp, ppp ; | |
integer totalchars, k ; | |
lastbadness = 0 ; | |
r = getnode ( 8 ) ; | |
mem [r ].hh.b0 = 0 ; | |
mem [r ].hh.b1 = 0 ; | |
mem [r + 4 ].cint = 0 ; | |
q = r + 5 ; | |
mem [q ].hh .v.RH = p ; | |
h = 0 ; | |
d = 0 ; | |
x = 0 ; | |
totalstretch [0 ]= 0 ; | |
totalshrink [0 ]= 0 ; | |
totalstretch [1 ]= 0 ; | |
totalshrink [1 ]= 0 ; | |
totalstretch [2 ]= 0 ; | |
totalshrink [2 ]= 0 ; | |
totalstretch [3 ]= 0 ; | |
totalshrink [3 ]= 0 ; | |
if ( ( eqtb [8939312L ].cint > 0 ) ) | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = 0 ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
while ( p != -268435455L ) { | |
lab21: while ( ( p >= himemmin ) ) { | |
f = mem [p ].hh.b0 ; | |
i = fontinfo [charbase [f ]+ effectivechar ( true , f , mem [p ] | |
.hh.b1 ) ].qqqq ; | |
hd = i .b1 ; | |
x = x + fontinfo [widthbase [f ]+ i .b0 ].cint ; | |
s = fontinfo [heightbase [f ]+ ( hd ) / 16 ].cint ; | |
if ( s > h ) | |
h = s ; | |
s = fontinfo [depthbase [f ]+ ( hd ) % 16 ].cint ; | |
if ( s > d ) | |
d = s ; | |
p = mem [p ].hh .v.RH ; | |
} | |
if ( p != -268435455L ) | |
{ | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
case 13 : | |
{ | |
x = x + mem [p + 1 ].cint ; | |
if ( mem [p ].hh.b0 >= 2 ) | |
s = 0 ; | |
else s = mem [p + 4 ].cint ; | |
if ( mem [p + 3 ].cint - s > h ) | |
h = mem [p + 3 ].cint - s ; | |
if ( mem [p + 2 ].cint + s > d ) | |
d = mem [p + 2 ].cint + s ; | |
} | |
break ; | |
case 3 : | |
case 4 : | |
case 5 : | |
if ( ( adjusttail != -268435455L ) || ( preadjusttail != -268435455L ) | |
) | |
{ | |
while ( mem [q ].hh .v.RH != p ) q = mem [q ].hh .v.RH ; | |
if ( mem [p ].hh.b0 == 5 ) | |
{ | |
if ( mem [p ].hh.b1 != 0 ) | |
{ | |
if ( preadjusttail == -268435455L ) | |
confusion ( 66246L ) ; | |
mem [preadjusttail ].hh .v.RH = mem [p + 1 ].cint ; | |
while ( mem [preadjusttail ].hh .v.RH != -268435455L ) | |
preadjusttail = mem [preadjusttail ].hh .v.RH ; | |
} | |
else { | |
if ( adjusttail == -268435455L ) | |
confusion ( 66246L ) ; | |
mem [adjusttail ].hh .v.RH = mem [p + 1 ].cint ; | |
while ( mem [adjusttail ].hh .v.RH != -268435455L ) adjusttail | |
= mem [adjusttail ].hh .v.RH ; | |
} | |
p = mem [p ].hh .v.RH ; | |
freenode ( mem [q ].hh .v.RH , 2 ) ; | |
} | |
else { | |
mem [adjusttail ].hh .v.RH = p ; | |
adjusttail = p ; | |
p = mem [p ].hh .v.RH ; | |
} | |
mem [q ].hh .v.RH = p ; | |
p = q ; | |
} | |
break ; | |
case 8 : | |
{ | |
switch ( mem [p ].hh.b1 ) | |
{case 40 : | |
case 41 : | |
{ | |
if ( ( q != r + 5 ) && ( mem [q ].hh.b0 == 7 ) ) | |
k = mem [q ].hh.b1 ; | |
else k = 0 ; | |
while ( ( mem [q ].hh .v.RH != p ) ) { | |
decr ( k ) ; | |
q = mem [q ].hh .v.RH ; | |
if ( mem [q ].hh.b0 == 7 ) | |
k = mem [q ].hh.b1 ; | |
} | |
pp = mem [p ].hh .v.RH ; | |
lab20: if ( ( k <= 0 ) && ( pp != -268435455L ) && ( ! ( pp >= | |
himemmin ) ) ) | |
{ | |
if ( ( mem [pp ].hh.b0 == 8 ) && ( ( ( mem [pp ].hh.b1 >= | |
40 ) && ( mem [pp ].hh.b1 <= 41 ) ) ) && ( mem [pp + 4 ] | |
.qqqq .b1 == mem [p + 4 ].qqqq .b1 ) ) | |
{ | |
pp = mem [pp ].hh .v.RH ; | |
goto lab20 ; | |
} | |
else if ( ( mem [pp ].hh.b0 == 7 ) ) | |
{ | |
ppp = mem [pp ].hh .v.RH ; | |
if ( ( ( ( ppp ) != -268435455L ) && ( ! ( ppp >= himemmin ) | |
) && ( mem [ppp ].hh.b0 == 8 ) && ( ( ( mem [ppp ].hh.b1 | |
>= 40 ) && ( mem [ppp ].hh.b1 <= 41 ) ) ) ) && ( mem [ppp | |
+ 4 ].qqqq .b1 == mem [p + 4 ].qqqq .b1 ) ) | |
{ | |
pp = mem [ppp ].hh .v.RH ; | |
goto lab20 ; | |
} | |
} | |
} | |
if ( ( pp != mem [p ].hh .v.RH ) ) | |
{ | |
totalchars = 0 ; | |
p = mem [q ].hh .v.RH ; | |
while ( ( p != pp ) ) { | |
if ( ( mem [p ].hh.b0 == 8 ) ) | |
totalchars = totalchars + mem [p + 4 ].qqqq .b2 ; | |
ppp = p ; | |
p = mem [p ].hh .v.RH ; | |
} | |
p = mem [q ].hh .v.RH ; | |
pp = newnativewordnode ( mem [p + 4 ].qqqq .b1 , totalchars | |
) ; | |
mem [pp ].hh.b1 = mem [p ].hh.b1 ; | |
mem [q ].hh .v.RH = pp ; | |
mem [pp ].hh .v.RH = mem [ppp ].hh .v.RH ; | |
mem [ppp ].hh .v.RH = -268435455L ; | |
totalchars = 0 ; | |
ppp = p ; | |
do { | |
if ( ( mem [ppp ].hh.b0 == 8 ) ) | |
{register integer for_end; k = 0 ;for_end = mem [ppp + 4 | |
].qqqq .b2 - 1 ; if ( k <= for_end) do | |
{ | |
setnativechar ( pp , totalchars , getnativechar ( ppp , | |
k ) ) ; | |
incr ( totalchars ) ; | |
} | |
while ( k++ < for_end ) ;} | |
ppp = mem [ppp ].hh .v.RH ; | |
} while ( ! ( ( ppp == -268435455L ) ) ) ; | |
flushnodelist ( p ) ; | |
p = mem [q ].hh .v.RH ; | |
setnativemetrics ( p , ( eqtb [8939315L ].cint > 0 ) ) ; | |
} | |
if ( mem [p + 3 ].cint > h ) | |
h = mem [p + 3 ].cint ; | |
if ( mem [p + 2 ].cint > d ) | |
d = mem [p + 2 ].cint ; | |
x = x + mem [p + 1 ].cint ; | |
} | |
break ; | |
case 42 : | |
case 43 : | |
case 44 : | |
{ | |
if ( mem [p + 3 ].cint > h ) | |
h = mem [p + 3 ].cint ; | |
if ( mem [p + 2 ].cint > d ) | |
d = mem [p + 2 ].cint ; | |
x = x + mem [p + 1 ].cint ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
} | |
break ; | |
case 10 : | |
{ | |
g = mem [p + 1 ].hh .v.LH ; | |
x = x + mem [g + 1 ].cint ; | |
o = mem [g ].hh.b0 ; | |
totalstretch [o ]= totalstretch [o ]+ mem [g + 2 ].cint ; | |
o = mem [g ].hh.b1 ; | |
totalshrink [o ]= totalshrink [o ]+ mem [g + 3 ].cint ; | |
if ( mem [p ].hh.b1 >= 100 ) | |
{ | |
g = mem [p + 1 ].hh .v.RH ; | |
if ( mem [g + 3 ].cint > h ) | |
h = mem [g + 3 ].cint ; | |
if ( mem [g + 2 ].cint > d ) | |
d = mem [g + 2 ].cint ; | |
} | |
} | |
break ; | |
case 11 : | |
x = x + mem [p + 1 ].cint ; | |
break ; | |
case 40 : | |
x = x + mem [p + 1 ].cint ; | |
break ; | |
case 9 : | |
{ | |
x = x + mem [p + 1 ].cint ; | |
if ( ( eqtb [8939312L ].cint > 0 ) ) { | |
if ( odd ( mem [p ].hh.b1 ) ) { | |
if ( mem [LRptr ].hh .v.LH == ( 4 * ( mem [p ].hh.b1 / 4 ) + | |
3 ) ) | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
else { | |
incr ( LRproblems ) ; | |
mem [p ].hh.b0 = 11 ; | |
mem [p ].hh.b1 = 1 ; | |
} | |
} | |
else { | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [p ].hh.b1 / 4 ) + 3 ) | |
; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
} | |
} | |
break ; | |
case 6 : | |
{ | |
mem [memtop - 12 ]= mem [p + 1 ]; | |
mem [memtop - 12 ].hh .v.RH = mem [p ].hh .v.RH ; | |
p = memtop - 12 ; | |
xtxligaturepresent = true ; | |
goto lab21 ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
} | |
if ( adjusttail != -268435455L ) | |
mem [adjusttail ].hh .v.RH = -268435455L ; | |
if ( preadjusttail != -268435455L ) | |
mem [preadjusttail ].hh .v.RH = -268435455L ; | |
mem [r + 3 ].cint = h ; | |
mem [r + 2 ].cint = d ; | |
if ( m == 1 ) | |
w = x + w ; | |
mem [r + 1 ].cint = w ; | |
x = w - x ; | |
if ( x == 0 ) | |
{ | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 5 ].hh.b1 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
goto lab10 ; | |
} | |
else if ( x > 0 ) | |
{ | |
if ( totalstretch [3 ]!= 0 ) | |
o = 3 ; | |
else if ( totalstretch [2 ]!= 0 ) | |
o = 2 ; | |
else if ( totalstretch [1 ]!= 0 ) | |
o = 1 ; | |
else o = 0 ; | |
mem [r + 5 ].hh.b1 = o ; | |
mem [r + 5 ].hh.b0 = 1 ; | |
if ( totalstretch [o ]!= 0 ) | |
mem [r + 6 ].gr = x / ((double) totalstretch [o ]) ; | |
else { | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
} | |
if ( o == 0 ) { | |
if ( mem [r + 5 ].hh .v.RH != -268435455L ) | |
{ | |
lastbadness = badness ( x , totalstretch [0 ]) ; | |
if ( lastbadness > eqtb [8939266L ].cint ) | |
{ | |
println () ; | |
if ( lastbadness > 100 ) | |
printnl ( 66247L ) ; | |
else printnl ( 66248L ) ; | |
print ( 66249L ) ; | |
printint ( lastbadness ) ; | |
goto lab50 ; | |
} | |
} | |
} | |
goto lab10 ; | |
} | |
else { | |
if ( totalshrink [3 ]!= 0 ) | |
o = 3 ; | |
else if ( totalshrink [2 ]!= 0 ) | |
o = 2 ; | |
else if ( totalshrink [1 ]!= 0 ) | |
o = 1 ; | |
else o = 0 ; | |
mem [r + 5 ].hh.b1 = o ; | |
mem [r + 5 ].hh.b0 = 2 ; | |
if ( totalshrink [o ]!= 0 ) | |
mem [r + 6 ].gr = ( - (integer) x ) / ((double) totalshrink [o ]) ; | |
else { | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
} | |
if ( ( totalshrink [o ]< - (integer) x ) && ( o == 0 ) && ( mem [r + 5 | |
].hh .v.RH != -268435455L ) ) | |
{ | |
lastbadness = 1000000L ; | |
mem [r + 6 ].gr = 1.0 ; | |
if ( ( - (integer) x - totalshrink [0 ]> eqtb [10053701L ].cint ) || | |
( eqtb [8939266L ].cint < 100 ) ) | |
{ | |
if ( ( eqtb [10053709L ].cint > 0 ) && ( - (integer) x - totalshrink | |
[0 ]> eqtb [10053701L ].cint ) ) | |
{ | |
while ( mem [q ].hh .v.RH != -268435455L ) q = mem [q ].hh .v.RH | |
; | |
mem [q ].hh .v.RH = newrule () ; | |
mem [mem [q ].hh .v.RH + 1 ].cint = eqtb [10053709L ].cint ; | |
} | |
println () ; | |
printnl ( 66255L ) ; | |
printscaled ( - (integer) x - totalshrink [0 ]) ; | |
print ( 66256L ) ; | |
goto lab50 ; | |
} | |
} | |
else if ( o == 0 ) { | |
if ( mem [r + 5 ].hh .v.RH != -268435455L ) | |
{ | |
lastbadness = badness ( - (integer) x , totalshrink [0 ]) ; | |
if ( lastbadness > eqtb [8939266L ].cint ) | |
{ | |
println () ; | |
printnl ( 66257L ) ; | |
printint ( lastbadness ) ; | |
goto lab50 ; | |
} | |
} | |
} | |
goto lab10 ; | |
} | |
lab50: if ( outputactive ) | |
print ( 66250L ) ; | |
else { | |
if ( packbeginline != 0 ) | |
{ | |
if ( packbeginline > 0 ) | |
print ( 66251L ) ; | |
else print ( 66252L ) ; | |
printint ( abs ( packbeginline ) ) ; | |
print ( 66253L ) ; | |
} | |
else print ( 66254L ) ; | |
printint ( line ) ; | |
} | |
println () ; | |
fontinshortdisplay = 0 ; | |
shortdisplay ( mem [r + 5 ].hh .v.RH ) ; | |
println () ; | |
begindiagnostic () ; | |
showbox ( r ) ; | |
enddiagnostic ( true ) ; | |
lab10: if ( ( eqtb [8939312L ].cint > 0 ) ) | |
{ | |
if ( mem [LRptr ].hh .v.LH != 0 ) | |
{ | |
while ( mem [q ].hh .v.RH != -268435455L ) q = mem [q ].hh .v.RH ; | |
do { | |
tempptr = q ; | |
q = newmath ( 0 , mem [LRptr ].hh .v.LH ) ; | |
mem [tempptr ].hh .v.RH = q ; | |
LRproblems = LRproblems + 10000 ; | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
} while ( ! ( mem [LRptr ].hh .v.LH == 0 ) ) ; | |
} | |
if ( LRproblems > 0 ) | |
{ | |
{ | |
println () ; | |
printnl ( 66920L ) ; | |
printint ( LRproblems / 10000 ) ; | |
print ( 66921L ) ; | |
printint ( LRproblems % 10000 ) ; | |
print ( 66922L ) ; | |
LRproblems = 0 ; | |
} | |
goto lab50 ; | |
} | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
if ( LRptr != -268435455L ) | |
confusion ( 66919L ) ; | |
} | |
Result = r ; | |
return Result ; | |
} | |
halfword | |
zvpackage ( halfword p , scaled h , smallnumber m , scaled l ) | |
{ | |
/* 50 10 */ register halfword Result; vpackage_regmem | |
halfword r ; | |
scaled w, d, x ; | |
scaled s ; | |
halfword g ; | |
glueord o ; | |
lastbadness = 0 ; | |
r = getnode ( 8 ) ; | |
mem [r ].hh.b0 = 1 ; | |
if ( ( eqtb [8939314L ].cint > 0 ) ) | |
mem [r ].hh.b1 = 1 ; | |
else mem [r ].hh.b1 = 0 ; | |
mem [r + 4 ].cint = 0 ; | |
mem [r + 5 ].hh .v.RH = p ; | |
w = 0 ; | |
d = 0 ; | |
x = 0 ; | |
totalstretch [0 ]= 0 ; | |
totalshrink [0 ]= 0 ; | |
totalstretch [1 ]= 0 ; | |
totalshrink [1 ]= 0 ; | |
totalstretch [2 ]= 0 ; | |
totalshrink [2 ]= 0 ; | |
totalstretch [3 ]= 0 ; | |
totalshrink [3 ]= 0 ; | |
while ( p != -268435455L ) { | |
if ( ( p >= himemmin ) ) | |
confusion ( 66258L ) ; | |
else switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
case 13 : | |
{ | |
x = x + d + mem [p + 3 ].cint ; | |
d = mem [p + 2 ].cint ; | |
if ( mem [p ].hh.b0 >= 2 ) | |
s = 0 ; | |
else s = mem [p + 4 ].cint ; | |
if ( mem [p + 1 ].cint + s > w ) | |
w = mem [p + 1 ].cint + s ; | |
} | |
break ; | |
case 8 : | |
{ | |
if ( ( mem [p ].hh.b1 == 43 ) || ( mem [p ].hh.b1 == 44 ) ) | |
{ | |
x = x + d + mem [p + 3 ].cint ; | |
d = mem [p + 2 ].cint ; | |
if ( mem [p + 1 ].cint > w ) | |
w = mem [p + 1 ].cint ; | |
} | |
} | |
break ; | |
case 10 : | |
{ | |
x = x + d ; | |
d = 0 ; | |
g = mem [p + 1 ].hh .v.LH ; | |
x = x + mem [g + 1 ].cint ; | |
o = mem [g ].hh.b0 ; | |
totalstretch [o ]= totalstretch [o ]+ mem [g + 2 ].cint ; | |
o = mem [g ].hh.b1 ; | |
totalshrink [o ]= totalshrink [o ]+ mem [g + 3 ].cint ; | |
if ( mem [p ].hh.b1 >= 100 ) | |
{ | |
g = mem [p + 1 ].hh .v.RH ; | |
if ( mem [g + 1 ].cint > w ) | |
w = mem [g + 1 ].cint ; | |
} | |
} | |
break ; | |
case 11 : | |
{ | |
x = x + d + mem [p + 1 ].cint ; | |
d = 0 ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
mem [r + 1 ].cint = w ; | |
if ( d > l ) | |
{ | |
x = x + d - l ; | |
mem [r + 2 ].cint = l ; | |
} | |
else mem [r + 2 ].cint = d ; | |
if ( m == 1 ) | |
h = x + h ; | |
mem [r + 3 ].cint = h ; | |
x = h - x ; | |
if ( x == 0 ) | |
{ | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 5 ].hh.b1 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
goto lab10 ; | |
} | |
else if ( x > 0 ) | |
{ | |
if ( totalstretch [3 ]!= 0 ) | |
o = 3 ; | |
else if ( totalstretch [2 ]!= 0 ) | |
o = 2 ; | |
else if ( totalstretch [1 ]!= 0 ) | |
o = 1 ; | |
else o = 0 ; | |
mem [r + 5 ].hh.b1 = o ; | |
mem [r + 5 ].hh.b0 = 1 ; | |
if ( totalstretch [o ]!= 0 ) | |
mem [r + 6 ].gr = x / ((double) totalstretch [o ]) ; | |
else { | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
} | |
if ( o == 0 ) { | |
if ( mem [r + 5 ].hh .v.RH != -268435455L ) | |
{ | |
lastbadness = badness ( x , totalstretch [0 ]) ; | |
if ( lastbadness > eqtb [8939267L ].cint ) | |
{ | |
println () ; | |
if ( lastbadness > 100 ) | |
printnl ( 66247L ) ; | |
else printnl ( 66248L ) ; | |
print ( 66259L ) ; | |
printint ( lastbadness ) ; | |
goto lab50 ; | |
} | |
} | |
} | |
goto lab10 ; | |
} | |
else { | |
if ( totalshrink [3 ]!= 0 ) | |
o = 3 ; | |
else if ( totalshrink [2 ]!= 0 ) | |
o = 2 ; | |
else if ( totalshrink [1 ]!= 0 ) | |
o = 1 ; | |
else o = 0 ; | |
mem [r + 5 ].hh.b1 = o ; | |
mem [r + 5 ].hh.b0 = 2 ; | |
if ( totalshrink [o ]!= 0 ) | |
mem [r + 6 ].gr = ( - (integer) x ) / ((double) totalshrink [o ]) ; | |
else { | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
} | |
if ( ( totalshrink [o ]< - (integer) x ) && ( o == 0 ) && ( mem [r + 5 | |
].hh .v.RH != -268435455L ) ) | |
{ | |
lastbadness = 1000000L ; | |
mem [r + 6 ].gr = 1.0 ; | |
if ( ( - (integer) x - totalshrink [0 ]> eqtb [10053702L ].cint ) || | |
( eqtb [8939267L ].cint < 100 ) ) | |
{ | |
println () ; | |
printnl ( 66260L ) ; | |
printscaled ( - (integer) x - totalshrink [0 ]) ; | |
print ( 66261L ) ; | |
goto lab50 ; | |
} | |
} | |
else if ( o == 0 ) { | |
if ( mem [r + 5 ].hh .v.RH != -268435455L ) | |
{ | |
lastbadness = badness ( - (integer) x , totalshrink [0 ]) ; | |
if ( lastbadness > eqtb [8939267L ].cint ) | |
{ | |
println () ; | |
printnl ( 66262L ) ; | |
printint ( lastbadness ) ; | |
goto lab50 ; | |
} | |
} | |
} | |
goto lab10 ; | |
} | |
lab50: if ( outputactive ) | |
print ( 66250L ) ; | |
else { | |
if ( packbeginline != 0 ) | |
{ | |
print ( 66252L ) ; | |
printint ( abs ( packbeginline ) ) ; | |
print ( 66253L ) ; | |
} | |
else print ( 66254L ) ; | |
printint ( line ) ; | |
println () ; | |
} | |
begindiagnostic () ; | |
showbox ( r ) ; | |
enddiagnostic ( true ) ; | |
lab10: Result = r ; | |
return Result ; | |
} | |
void | |
zappendtovlist ( halfword b ) | |
{ | |
appendtovlist_regmem | |
scaled d ; | |
halfword p ; | |
boolean upwards ; | |
upwards = ( eqtb [8939314L ].cint > 0 ) ; | |
if ( curlist .auxfield .cint > -65536000L ) | |
{ | |
if ( upwards ) | |
d = mem [eqtb [2252741L ].hh .v.RH + 1 ].cint - curlist .auxfield | |
.cint - mem [b + 2 ].cint ; | |
else d = mem [eqtb [2252741L ].hh .v.RH + 1 ].cint - curlist .auxfield | |
.cint - mem [b + 3 ].cint ; | |
if ( d < eqtb [10053695L ].cint ) | |
p = newparamglue ( 0 ) ; | |
else { | |
p = newskipparam ( 1 ) ; | |
mem [tempptr + 1 ].cint = d ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = p ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = b ; | |
curlist .tailfield = b ; | |
if ( upwards ) | |
curlist .auxfield .cint = mem [b + 3 ].cint ; | |
else curlist .auxfield .cint = mem [b + 2 ].cint ; | |
} | |
halfword | |
newnoad ( void ) | |
{ | |
register halfword Result; newnoad_regmem | |
halfword p ; | |
p = getnode ( 4 ) ; | |
mem [p ].hh.b0 = 16 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].hh = emptyfield ; | |
mem [p + 3 ].hh = emptyfield ; | |
mem [p + 2 ].hh = emptyfield ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
znewstyle ( smallnumber s ) | |
{ | |
register halfword Result; newstyle_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 14 ; | |
mem [p ].hh.b1 = s ; | |
mem [p + 1 ].cint = 0 ; | |
mem [p + 2 ].cint = 0 ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
newchoice ( void ) | |
{ | |
register halfword Result; newchoice_regmem | |
halfword p ; | |
p = getnode ( 3 ) ; | |
mem [p ].hh.b0 = 15 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].hh .v.LH = -268435455L ; | |
mem [p + 1 ].hh .v.RH = -268435455L ; | |
mem [p + 2 ].hh .v.LH = -268435455L ; | |
mem [p + 2 ].hh .v.RH = -268435455L ; | |
Result = p ; | |
return Result ; | |
} | |
void | |
showinfo ( void ) | |
{ | |
showinfo_regmem | |
shownodelist ( mem [tempptr ].hh .v.LH ) ; | |
} | |
scaled | |
zmathxheight ( integer sizecode ) | |
{ | |
register scaled Result; mathxheight_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 5 ) ; | |
else rval = fontinfo [5 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zmathquad ( integer sizecode ) | |
{ | |
register scaled Result; mathquad_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 6 ) ; | |
else rval = fontinfo [6 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
znum1 ( integer sizecode ) | |
{ | |
register scaled Result; num1_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 8 ) ; | |
else rval = fontinfo [8 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
znum2 ( integer sizecode ) | |
{ | |
register scaled Result; num2_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 9 ) ; | |
else rval = fontinfo [9 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
znum3 ( integer sizecode ) | |
{ | |
register scaled Result; num3_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 10 ) ; | |
else rval = fontinfo [10 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zdenom1 ( integer sizecode ) | |
{ | |
register scaled Result; denom1_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 11 ) ; | |
else rval = fontinfo [11 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zdenom2 ( integer sizecode ) | |
{ | |
register scaled Result; denom2_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 12 ) ; | |
else rval = fontinfo [12 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsup1 ( integer sizecode ) | |
{ | |
register scaled Result; sup1_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 13 ) ; | |
else rval = fontinfo [13 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsup2 ( integer sizecode ) | |
{ | |
register scaled Result; sup2_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 14 ) ; | |
else rval = fontinfo [14 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsup3 ( integer sizecode ) | |
{ | |
register scaled Result; sup3_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 15 ) ; | |
else rval = fontinfo [15 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsub1 ( integer sizecode ) | |
{ | |
register scaled Result; sub1_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 16 ) ; | |
else rval = fontinfo [16 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsub2 ( integer sizecode ) | |
{ | |
register scaled Result; sub2_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 17 ) ; | |
else rval = fontinfo [17 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsupdrop ( integer sizecode ) | |
{ | |
register scaled Result; supdrop_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 18 ) ; | |
else rval = fontinfo [18 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zsubdrop ( integer sizecode ) | |
{ | |
register scaled Result; subdrop_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 19 ) ; | |
else rval = fontinfo [19 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zdelim1 ( integer sizecode ) | |
{ | |
register scaled Result; delim1_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 20 ) ; | |
else rval = fontinfo [20 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zdelim2 ( integer sizecode ) | |
{ | |
register scaled Result; delim2_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 21 ) ; | |
else rval = fontinfo [21 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
zaxisheight ( integer sizecode ) | |
{ | |
register scaled Result; axisheight_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253802L + sizecode ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathsyparam ( f , 22 ) ; | |
else rval = fontinfo [22 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
defaultrulethickness ( void ) | |
{ | |
register scaled Result; defaultrulethickness_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253803L + cursize ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathexparam ( f , 8 ) ; | |
else rval = fontinfo [8 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
bigopspacing1 ( void ) | |
{ | |
register scaled Result; bigopspacing1_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253803L + cursize ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathexparam ( f , 9 ) ; | |
else rval = fontinfo [9 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
bigopspacing2 ( void ) | |
{ | |
register scaled Result; bigopspacing2_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253803L + cursize ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathexparam ( f , 10 ) ; | |
else rval = fontinfo [10 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
bigopspacing3 ( void ) | |
{ | |
register scaled Result; bigopspacing3_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253803L + cursize ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathexparam ( f , 11 ) ; | |
else rval = fontinfo [11 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
bigopspacing4 ( void ) | |
{ | |
register scaled Result; bigopspacing4_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253803L + cursize ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathexparam ( f , 12 ) ; | |
else rval = fontinfo [12 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
scaled | |
bigopspacing5 ( void ) | |
{ | |
register scaled Result; bigopspacing5_regmem | |
integer f ; | |
scaled rval ; | |
f = eqtb [2253803L + cursize ].hh .v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rval = getnativemathexparam ( f , 13 ) ; | |
else rval = fontinfo [13 + parambase [f ]].cint ; | |
Result = rval ; | |
return Result ; | |
} | |
halfword | |
zfractionrule ( scaled t ) | |
{ | |
register halfword Result; fractionrule_regmem | |
halfword p ; | |
p = newrule () ; | |
mem [p + 3 ].cint = t ; | |
mem [p + 2 ].cint = 0 ; | |
Result = p ; | |
return Result ; | |
} | |
halfword | |
zoverbar ( halfword b , scaled k , scaled t ) | |
{ | |
register halfword Result; overbar_regmem | |
halfword p, q ; | |
p = newkern ( k ) ; | |
mem [p ].hh .v.RH = b ; | |
q = fractionrule ( t ) ; | |
mem [q ].hh .v.RH = p ; | |
p = newkern ( t ) ; | |
mem [p ].hh .v.RH = q ; | |
Result = vpackage ( p , 0 , 1 , 1073741823L ) ; | |
return Result ; | |
} | |
halfword | |
zcharbox ( internalfontnumber f , integer c ) | |
{ | |
register halfword Result; charbox_regmem | |
fourquarters q ; | |
eightbits hd ; | |
halfword b, p ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
{ | |
b = newnullbox () ; | |
p = newnativecharacter ( f , c ) ; | |
mem [b + 5 ].hh .v.RH = p ; | |
mem [b + 3 ].cint = mem [p + 3 ].cint ; | |
mem [b + 1 ].cint = mem [p + 1 ].cint ; | |
if ( mem [p + 2 ].cint < 0 ) | |
mem [b + 2 ].cint = 0 ; | |
else mem [b + 2 ].cint = mem [p + 2 ].cint ; | |
} | |
else { | |
q = fontinfo [charbase [f ]+ effectivechar ( true , f , c ) ].qqqq ; | |
hd = q .b1 ; | |
b = newnullbox () ; | |
mem [b + 1 ].cint = fontinfo [widthbase [f ]+ q .b0 ].cint + | |
fontinfo [italicbase [f ]+ ( q .b2 ) / 4 ].cint ; | |
mem [b + 3 ].cint = fontinfo [heightbase [f ]+ ( hd ) / 16 ].cint ; | |
mem [b + 2 ].cint = fontinfo [depthbase [f ]+ ( hd ) % 16 ].cint ; | |
p = getavail () ; | |
mem [p ].hh.b1 = c ; | |
mem [p ].hh.b0 = f ; | |
} | |
mem [b + 5 ].hh .v.RH = p ; | |
Result = b ; | |
return Result ; | |
} | |
void | |
zstackintobox ( halfword b , internalfontnumber f , quarterword c ) | |
{ | |
stackintobox_regmem | |
halfword p ; | |
p = charbox ( f , c ) ; | |
mem [p ].hh .v.RH = mem [b + 5 ].hh .v.RH ; | |
mem [b + 5 ].hh .v.RH = p ; | |
mem [b + 3 ].cint = mem [p + 3 ].cint ; | |
} | |
scaled | |
zheightplusdepth ( internalfontnumber f , quarterword c ) | |
{ | |
register scaled Result; heightplusdepth_regmem | |
fourquarters q ; | |
eightbits hd ; | |
q = fontinfo [charbase [f ]+ effectivechar ( true , f , c ) ].qqqq ; | |
hd = q .b1 ; | |
Result = fontinfo [heightbase [f ]+ ( hd ) / 16 ].cint + fontinfo [ | |
depthbase [f ]+ ( hd ) % 16 ].cint ; | |
return Result ; | |
} | |
void | |
zstackglyphintobox ( halfword b , internalfontnumber f , integer g ) | |
{ | |
stackglyphintobox_regmem | |
halfword p, q ; | |
p = getnode ( 5 ) ; | |
mem [p ].hh.b0 = 8 ; | |
mem [p ].hh.b1 = 42 ; | |
mem [p + 4 ].qqqq .b1 = f ; | |
mem [p + 4 ].qqqq .b2 = g ; | |
setnativeglyphmetrics ( p , 1 ) ; | |
if ( mem [b ].hh.b0 == 0 ) | |
{ | |
q = mem [b + 5 ].hh .v.RH ; | |
if ( q == -268435455L ) | |
mem [b + 5 ].hh .v.RH = p ; | |
else { | |
while ( mem [q ].hh .v.RH != -268435455L ) q = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = p ; | |
if ( ( mem [b + 3 ].cint < mem [p + 3 ].cint ) ) | |
mem [b + 3 ].cint = mem [p + 3 ].cint ; | |
if ( ( mem [b + 2 ].cint < mem [p + 2 ].cint ) ) | |
mem [b + 2 ].cint = mem [p + 2 ].cint ; | |
} | |
} | |
else { | |
mem [p ].hh .v.RH = mem [b + 5 ].hh .v.RH ; | |
mem [b + 5 ].hh .v.RH = p ; | |
mem [b + 3 ].cint = mem [p + 3 ].cint ; | |
if ( ( mem [b + 1 ].cint < mem [p + 1 ].cint ) ) | |
mem [b + 1 ].cint = mem [p + 1 ].cint ; | |
} | |
} | |
void | |
zstackglueintobox ( halfword b , scaled min , scaled max ) | |
{ | |
stackglueintobox_regmem | |
halfword p, q ; | |
q = newspec ( membot ) ; | |
mem [q + 1 ].cint = min ; | |
mem [q + 2 ].cint = max - min ; | |
p = newglue ( q ) ; | |
if ( mem [b ].hh.b0 == 0 ) | |
{ | |
q = mem [b + 5 ].hh .v.RH ; | |
if ( q == -268435455L ) | |
mem [b + 5 ].hh .v.RH = p ; | |
else { | |
while ( mem [q ].hh .v.RH != -268435455L ) q = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = p ; | |
} | |
} | |
else { | |
mem [p ].hh .v.RH = mem [b + 5 ].hh .v.RH ; | |
mem [b + 5 ].hh .v.RH = p ; | |
mem [b + 3 ].cint = mem [p + 3 ].cint ; | |
mem [b + 1 ].cint = mem [p + 1 ].cint ; | |
} | |
} | |
halfword | |
zbuildopentypeassembly ( internalfontnumber f , voidpointer a , scaled s , | |
boolean horiz ) | |
{ | |
register halfword Result; buildopentypeassembly_regmem | |
halfword b ; | |
integer n ; | |
integer i, j ; | |
integer g ; | |
halfword p ; | |
scaled smax, o, oo, prevo, mino ; | |
boolean noextenders ; | |
scaled nat, str ; | |
b = newnullbox () ; | |
if ( horiz ) | |
mem [b ].hh.b0 = 0 ; | |
else mem [b ].hh.b0 = 1 ; | |
n = -1 ; | |
noextenders = true ; | |
mino = otminconnectoroverlap ( f ) ; | |
do { | |
n = n + 1 ; | |
smax = 0 ; | |
prevo = 0 ; | |
{register integer for_end; i = 0 ;for_end = otpartcount ( a ) - 1 ; if ( | |
i <= for_end) do | |
{ | |
if ( otpartisextender ( a , i ) ) | |
{ | |
noextenders = false ; | |
{register integer for_end; j = 1 ;for_end = n ; if ( j <= for_end) | |
do | |
{ | |
o = otpartstartconnector ( f , a , i ) ; | |
if ( mino < o ) | |
o = mino ; | |
if ( prevo < o ) | |
o = prevo ; | |
smax = smax - o + otpartfulladvance ( f , a , i ) ; | |
prevo = otpartendconnector ( f , a , i ) ; | |
} | |
while ( j++ < for_end ) ;} | |
} | |
else { | |
o = otpartstartconnector ( f , a , i ) ; | |
if ( mino < o ) | |
o = mino ; | |
if ( prevo < o ) | |
o = prevo ; | |
smax = smax - o + otpartfulladvance ( f , a , i ) ; | |
prevo = otpartendconnector ( f , a , i ) ; | |
} | |
} | |
while ( i++ < for_end ) ;} | |
} while ( ! ( ( smax >= s ) || noextenders ) ) ; | |
prevo = 0 ; | |
{register integer for_end; i = 0 ;for_end = otpartcount ( a ) - 1 ; if ( i | |
<= for_end) do | |
{ | |
if ( otpartisextender ( a , i ) ) | |
{ | |
{register integer for_end; j = 1 ;for_end = n ; if ( j <= for_end) | |
do | |
{ | |
o = otpartstartconnector ( f , a , i ) ; | |
if ( prevo < o ) | |
o = prevo ; | |
oo = o ; | |
if ( mino < o ) | |
o = mino ; | |
if ( oo > 0 ) | |
stackglueintobox ( b , - (integer) oo , - (integer) o ) ; | |
g = otpartglyph ( a , i ) ; | |
stackglyphintobox ( b , f , g ) ; | |
prevo = otpartendconnector ( f , a , i ) ; | |
} | |
while ( j++ < for_end ) ;} | |
} | |
else { | |
o = otpartstartconnector ( f , a , i ) ; | |
if ( prevo < o ) | |
o = prevo ; | |
oo = o ; | |
if ( mino < o ) | |
o = mino ; | |
if ( oo > 0 ) | |
stackglueintobox ( b , - (integer) oo , - (integer) o ) ; | |
g = otpartglyph ( a , i ) ; | |
stackglyphintobox ( b , f , g ) ; | |
prevo = otpartendconnector ( f , a , i ) ; | |
} | |
} | |
while ( i++ < for_end ) ;} | |
p = mem [b + 5 ].hh .v.RH ; | |
nat = 0 ; | |
str = 0 ; | |
while ( p != -268435455L ) { | |
if ( mem [p ].hh.b0 == 8 ) | |
{ | |
if ( horiz ) | |
nat = nat + mem [p + 1 ].cint ; | |
else nat = nat + mem [p + 3 ].cint + mem [p + 2 ].cint ; | |
} | |
else if ( mem [p ].hh.b0 == 10 ) | |
{ | |
nat = nat + mem [mem [p + 1 ].hh .v.LH + 1 ].cint ; | |
str = str + mem [mem [p + 1 ].hh .v.LH + 2 ].cint ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
o = 0 ; | |
if ( ( s > nat ) && ( str > 0 ) ) | |
{ | |
o = ( s - nat ) ; | |
if ( ( o > str ) ) | |
o = str ; | |
mem [b + 5 ].hh.b1 = 0 ; | |
mem [b + 5 ].hh.b0 = 1 ; | |
mem [b + 6 ].gr = o / ((double) str ) ; | |
if ( horiz ) | |
mem [b + 1 ].cint = nat + round ( str * mem [b + 6 ].gr ) ; | |
else mem [b + 3 ].cint = nat + round ( str * mem [b + 6 ].gr ) ; | |
} | |
else if ( horiz ) | |
mem [b + 1 ].cint = nat ; | |
else mem [b + 3 ].cint = nat ; | |
Result = b ; | |
return Result ; | |
} | |
halfword | |
zvardelimiter ( halfword d , integer s , scaled v ) | |
{ | |
/* 40 22 */ register halfword Result; vardelimiter_regmem | |
halfword b ; | |
voidpointer otassemblyptr ; | |
internalfontnumber f, g ; | |
quarterword c, x, y ; | |
integer m, n ; | |
scaled u ; | |
scaled w ; | |
fourquarters q ; | |
eightbits hd ; | |
fourquarters r ; | |
integer z ; | |
boolean largeattempt ; | |
f = 0 ; | |
w = 0 ; | |
largeattempt = false ; | |
z = ( mem [d ].qqqq .b0 % 256 ) ; | |
x = ( mem [d ].qqqq .b1 + ( mem [d ].qqqq .b0 / 256 ) * 65536L ) ; | |
otassemblyptr = nil ; | |
while ( true ) { | |
if ( ( z != 0 ) || ( x != 0 ) ) | |
{ | |
z = z + s + 256 ; | |
do { | |
z = z - 256 ; | |
g = eqtb [2253800L + z ].hh .v.RH ; | |
if ( g != 0 ) { | |
if ( ( ( fontarea [g ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [g ]) ) ) ) | |
{ | |
x = mapchartoglyph ( g , x ) ; | |
f = g ; | |
c = x ; | |
w = 0 ; | |
n = 0 ; | |
do { | |
y = getotmathvariant ( g , x , n , addressof ( u ) , 0 ) ; | |
if ( u > w ) | |
{ | |
c = y ; | |
w = u ; | |
if ( u >= v ) | |
goto lab40 ; | |
} | |
n = n + 1 ; | |
} while ( ! ( u < 0 ) ) ; | |
otassemblyptr = getotassemblyptr ( g , x , 0 ) ; | |
if ( otassemblyptr != nil ) | |
goto lab40 ; | |
} | |
else { | |
y = x ; | |
if ( ( y >= fontbc [g ]) && ( y <= fontec [g ]) ) | |
{ | |
lab22: q = fontinfo [charbase [g ]+ y ].qqqq ; | |
if ( ( q .b0 > 0 ) ) | |
{ | |
if ( ( ( q .b2 ) % 4 ) == 3 ) | |
{ | |
f = g ; | |
c = y ; | |
goto lab40 ; | |
} | |
hd = q .b1 ; | |
u = fontinfo [heightbase [g ]+ ( hd ) / 16 ].cint + | |
fontinfo [depthbase [g ]+ ( hd ) % 16 ].cint ; | |
if ( u > w ) | |
{ | |
f = g ; | |
c = y ; | |
w = u ; | |
if ( u >= v ) | |
goto lab40 ; | |
} | |
if ( ( ( q .b2 ) % 4 ) == 2 ) | |
{ | |
y = q .b3 ; | |
goto lab22 ; | |
} | |
} | |
} | |
} | |
} | |
} while ( ! ( z < 256 ) ) ; | |
} | |
if ( largeattempt ) | |
goto lab40 ; | |
largeattempt = true ; | |
z = ( mem [d ].qqqq .b2 % 256 ) ; | |
x = ( mem [d ].qqqq .b3 + ( mem [d ].qqqq .b2 / 256 ) * 65536L ) ; | |
} | |
lab40: if ( f != 0 ) | |
{ | |
if ( ! ( ( fontarea [f ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [f ]) ) ) ) { | |
if ( ( ( q .b2 ) % 4 ) == 3 ) | |
{ | |
b = newnullbox () ; | |
mem [b ].hh.b0 = 1 ; | |
r = fontinfo [extenbase [f ]+ q .b3 ].qqqq ; | |
c = r .b3 ; | |
u = heightplusdepth ( f , c ) ; | |
w = 0 ; | |
q = fontinfo [charbase [f ]+ effectivechar ( true , f , c ) ].qqqq | |
; | |
mem [b + 1 ].cint = fontinfo [widthbase [f ]+ q .b0 ].cint + | |
fontinfo [italicbase [f ]+ ( q .b2 ) / 4 ].cint ; | |
c = r .b2 ; | |
if ( c != 0 ) | |
w = w + heightplusdepth ( f , c ) ; | |
c = r .b1 ; | |
if ( c != 0 ) | |
w = w + heightplusdepth ( f , c ) ; | |
c = r .b0 ; | |
if ( c != 0 ) | |
w = w + heightplusdepth ( f , c ) ; | |
n = 0 ; | |
if ( u > 0 ) | |
while ( w < v ) { | |
w = w + u ; | |
incr ( n ) ; | |
if ( r .b1 != 0 ) | |
w = w + u ; | |
} | |
c = r .b2 ; | |
if ( c != 0 ) | |
stackintobox ( b , f , c ) ; | |
c = r .b3 ; | |
{register integer for_end; m = 1 ;for_end = n ; if ( m <= for_end) | |
do | |
stackintobox ( b , f , c ) ; | |
while ( m++ < for_end ) ;} | |
c = r .b1 ; | |
if ( c != 0 ) | |
{ | |
stackintobox ( b , f , c ) ; | |
c = r .b3 ; | |
{register integer for_end; m = 1 ;for_end = n ; if ( m <= for_end) | |
do | |
stackintobox ( b , f , c ) ; | |
while ( m++ < for_end ) ;} | |
} | |
c = r .b0 ; | |
if ( c != 0 ) | |
stackintobox ( b , f , c ) ; | |
mem [b + 2 ].cint = w - mem [b + 3 ].cint ; | |
} | |
else b = charbox ( f , c ) ; | |
} | |
else { | |
if ( otassemblyptr != nil ) | |
b = buildopentypeassembly ( f , otassemblyptr , v , 0 ) ; | |
else { | |
b = newnullbox () ; | |
mem [b ].hh.b0 = 1 ; | |
mem [b + 5 ].hh .v.RH = getnode ( 5 ) ; | |
mem [mem [b + 5 ].hh .v.RH ].hh.b0 = 8 ; | |
mem [mem [b + 5 ].hh .v.RH ].hh.b1 = 42 ; | |
mem [mem [b + 5 ].hh .v.RH + 4 ].qqqq .b1 = f ; | |
mem [mem [b + 5 ].hh .v.RH + 4 ].qqqq .b2 = c ; | |
setnativeglyphmetrics ( mem [b + 5 ].hh .v.RH , 1 ) ; | |
mem [b + 1 ].cint = mem [mem [b + 5 ].hh .v.RH + 1 ].cint ; | |
mem [b + 3 ].cint = mem [mem [b + 5 ].hh .v.RH + 3 ].cint ; | |
mem [b + 2 ].cint = mem [mem [b + 5 ].hh .v.RH + 2 ].cint ; | |
} | |
} | |
} | |
else { | |
b = newnullbox () ; | |
mem [b + 1 ].cint = eqtb [10053704L ].cint ; | |
} | |
mem [b + 4 ].cint = half ( mem [b + 3 ].cint - mem [b + 2 ].cint ) - | |
axisheight ( s ) ; | |
freeotassembly ( otassemblyptr ) ; | |
Result = b ; | |
return Result ; | |
} | |
halfword | |
zrebox ( halfword b , scaled w ) | |
{ | |
register halfword Result; rebox_regmem | |
halfword p ; | |
internalfontnumber f ; | |
scaled v ; | |
if ( ( mem [b + 1 ].cint != w ) && ( mem [b + 5 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( mem [b ].hh.b0 == 1 ) | |
b = hpack ( b , 0 , 1 ) ; | |
p = mem [b + 5 ].hh .v.RH ; | |
if ( ( ( p >= himemmin ) ) && ( mem [p ].hh .v.RH == -268435455L ) ) | |
{ | |
f = mem [p ].hh.b0 ; | |
v = fontinfo [widthbase [f ]+ fontinfo [charbase [f ]+ | |
effectivechar ( true , f , mem [p ].hh.b1 ) ].qqqq .b0 ].cint ; | |
if ( v != mem [b + 1 ].cint ) | |
mem [p ].hh .v.RH = newkern ( mem [b + 1 ].cint - v ) ; | |
} | |
freenode ( b , 8 ) ; | |
b = newglue ( membot + 12 ) ; | |
mem [b ].hh .v.RH = p ; | |
while ( mem [p ].hh .v.RH != -268435455L ) p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = newglue ( membot + 12 ) ; | |
Result = hpack ( b , w , 0 ) ; | |
} | |
else { | |
mem [b + 1 ].cint = w ; | |
Result = b ; | |
} | |
return Result ; | |
} | |
halfword | |
zmathglue ( halfword g , scaled m ) | |
{ | |
register halfword Result; mathglue_regmem | |
halfword p ; | |
integer n ; | |
scaled f ; | |
n = xovern ( m , 65536L ) ; | |
f = texremainder ; | |
if ( f < 0 ) | |
{ | |
decr ( n ) ; | |
f = f + 65536L ; | |
} | |
p = getnode ( 4 ) ; | |
mem [p + 1 ].cint = multandadd ( n , mem [g + 1 ].cint , xnoverd ( mem [ | |
g + 1 ].cint , f , 65536L ) , 1073741823L ) ; | |
mem [p ].hh.b0 = mem [g ].hh.b0 ; | |
if ( mem [p ].hh.b0 == 0 ) | |
mem [p + 2 ].cint = multandadd ( n , mem [g + 2 ].cint , xnoverd ( mem [ | |
g + 2 ].cint , f , 65536L ) , 1073741823L ) ; | |
else mem [p + 2 ].cint = mem [g + 2 ].cint ; | |
mem [p ].hh.b1 = mem [g ].hh.b1 ; | |
if ( mem [p ].hh.b1 == 0 ) | |
mem [p + 3 ].cint = multandadd ( n , mem [g + 3 ].cint , xnoverd ( mem [ | |
g + 3 ].cint , f , 65536L ) , 1073741823L ) ; | |
else mem [p + 3 ].cint = mem [g + 3 ].cint ; | |
Result = p ; | |
return Result ; | |
} | |
void | |
zmathkern ( halfword p , scaled m ) | |
{ | |
mathkern_regmem | |
integer n ; | |
scaled f ; | |
if ( mem [p ].hh.b1 == 99 ) | |
{ | |
n = xovern ( m , 65536L ) ; | |
f = texremainder ; | |
if ( f < 0 ) | |
{ | |
decr ( n ) ; | |
f = f + 65536L ; | |
} | |
mem [p + 1 ].cint = multandadd ( n , mem [p + 1 ].cint , xnoverd ( mem | |
[p + 1 ].cint , f , 65536L ) , 1073741823L ) ; | |
mem [p ].hh.b1 = 1 ; | |
} | |
} | |
void | |
flushmath ( void ) | |
{ | |
flushmath_regmem | |
flushnodelist ( mem [curlist .headfield ].hh .v.RH ) ; | |
flushnodelist ( curlist .auxfield .cint ) ; | |
mem [curlist .headfield ].hh .v.RH = -268435455L ; | |
curlist .tailfield = curlist .headfield ; | |
curlist .auxfield .cint = -268435455L ; | |
} | |
halfword | |
zcleanbox ( halfword p , smallnumber s ) | |
{ | |
/* 40 */ register halfword Result; cleanbox_regmem | |
halfword q ; | |
smallnumber savestyle ; | |
halfword x ; | |
halfword r ; | |
switch ( mem [p ].hh .v.RH ) | |
{case 1 : | |
{ | |
curmlist = newnoad () ; | |
mem [curmlist + 1 ]= mem [p ]; | |
} | |
break ; | |
case 2 : | |
{ | |
q = mem [p ].hh .v.LH ; | |
goto lab40 ; | |
} | |
break ; | |
case 3 : | |
curmlist = mem [p ].hh .v.LH ; | |
break ; | |
default: | |
{ | |
q = newnullbox () ; | |
goto lab40 ; | |
} | |
break ; | |
} | |
savestyle = curstyle ; | |
curstyle = s ; | |
mlistpenalties = false ; | |
mlisttohlist () ; | |
q = mem [memtop - 3 ].hh .v.RH ; | |
curstyle = savestyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
lab40: if ( ( q >= himemmin ) || ( q == -268435455L ) ) | |
x = hpack ( q , 0 , 1 ) ; | |
else if ( ( mem [q ].hh .v.RH == -268435455L ) && ( mem [q ].hh.b0 <= 1 | |
) && ( mem [q + 4 ].cint == 0 ) ) | |
x = q ; | |
else x = hpack ( q , 0 , 1 ) ; | |
q = mem [x + 5 ].hh .v.RH ; | |
if ( ( q >= himemmin ) ) | |
{ | |
r = mem [q ].hh .v.RH ; | |
if ( r != -268435455L ) { | |
if ( mem [r ].hh .v.RH == -268435455L ) { | |
if ( ! ( r >= himemmin ) ) { | |
if ( mem [r ].hh.b0 == 11 ) | |
{ | |
freenode ( r , 3 ) ; | |
mem [q ].hh .v.RH = -268435455L ; | |
} | |
} | |
} | |
} | |
} | |
Result = x ; | |
return Result ; | |
} | |
void | |
zfetch ( halfword a ) | |
{ | |
fetch_regmem | |
curc = casttoushort ( mem [a ].hh.b1 ) ; | |
curf = eqtb [2253800L + ( mem [a ].hh.b0 % 256 ) + cursize ].hh .v.RH ; | |
curc = curc + ( mem [a ].hh.b0 / 256 ) * 65536L ; | |
if ( curf == 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65626L ) ; | |
} | |
printsize ( cursize ) ; | |
printchar ( 32 ) ; | |
printint ( ( mem [a ].hh.b0 % 256 ) ) ; | |
print ( 66305L ) ; | |
print ( curc ) ; | |
printchar ( 41 ) ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66306L ; | |
helpline [2 ]= 66307L ; | |
helpline [1 ]= 66308L ; | |
helpline [0 ]= 66309L ; | |
} | |
error () ; | |
curi = nullcharacter ; | |
mem [a ].hh .v.RH = 0 ; | |
} | |
else if ( ( ( fontarea [curf ]== 65535L ) || ( fontarea [curf ]== 65534L | |
) ) ) | |
{ | |
curi = nullcharacter ; | |
} | |
else { | |
if ( ( curc >= fontbc [curf ]) && ( curc <= fontec [curf ]) ) | |
curi = fontinfo [charbase [curf ]+ curc ].qqqq ; | |
else curi = nullcharacter ; | |
if ( ! ( ( curi .b0 > 0 ) ) ) | |
{ | |
charwarning ( curf , curc ) ; | |
mem [a ].hh .v.RH = 0 ; | |
curi = nullcharacter ; | |
} | |
} | |
} | |
void | |
zmakeover ( halfword q ) | |
{ | |
makeover_regmem | |
mem [q + 1 ].hh .v.LH = overbar ( cleanbox ( q + 1 , 2 * ( curstyle / 2 ) | |
+ 1 ) , 3 * defaultrulethickness () , defaultrulethickness () ) ; | |
mem [q + 1 ].hh .v.RH = 2 ; | |
} | |
void | |
zmakeunder ( halfword q ) | |
{ | |
makeunder_regmem | |
halfword p, x, y ; | |
scaled delta ; | |
x = cleanbox ( q + 1 , curstyle ) ; | |
p = newkern ( 3 * defaultrulethickness () ) ; | |
mem [x ].hh .v.RH = p ; | |
mem [p ].hh .v.RH = fractionrule ( defaultrulethickness () ) ; | |
y = vpackage ( x , 0 , 1 , 1073741823L ) ; | |
delta = mem [y + 3 ].cint + mem [y + 2 ].cint + defaultrulethickness () | |
; | |
mem [y + 3 ].cint = mem [x + 3 ].cint ; | |
mem [y + 2 ].cint = delta - mem [y + 3 ].cint ; | |
mem [q + 1 ].hh .v.LH = y ; | |
mem [q + 1 ].hh .v.RH = 2 ; | |
} | |
void | |
zmakevcenter ( halfword q ) | |
{ | |
makevcenter_regmem | |
halfword v ; | |
scaled delta ; | |
v = mem [q + 1 ].hh .v.LH ; | |
if ( mem [v ].hh.b0 != 1 ) | |
confusion ( 65860L ) ; | |
delta = mem [v + 3 ].cint + mem [v + 2 ].cint ; | |
mem [v + 3 ].cint = axisheight ( cursize ) + half ( delta ) ; | |
mem [v + 2 ].cint = delta - mem [v + 3 ].cint ; | |
} | |
void | |
zmakeradical ( halfword q ) | |
{ | |
makeradical_regmem | |
halfword x, y ; | |
internalfontnumber f ; | |
scaled rulethickness ; | |
scaled delta, clr ; | |
f = eqtb [2253800L + ( mem [q + 4 ].qqqq .b0 % 256 ) + cursize ].hh | |
.v.RH ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
rulethickness = getotmathconstant ( f , 51 ) ; | |
else rulethickness = defaultrulethickness () ; | |
x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
{ | |
if ( curstyle < 2 ) | |
clr = getotmathconstant ( f , 50 ) ; | |
else clr = getotmathconstant ( f , 49 ) ; | |
} | |
else { | |
if ( curstyle < 2 ) | |
clr = rulethickness + ( abs ( mathxheight ( cursize ) ) / 4 ) ; | |
else { | |
clr = rulethickness ; | |
clr = clr + ( abs ( clr ) / 4 ) ; | |
} | |
} | |
y = vardelimiter ( q + 4 , cursize , mem [x + 3 ].cint + mem [x + 2 ] | |
.cint + clr + rulethickness ) ; | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) | |
{ | |
mem [y + 2 ].cint = mem [y + 3 ].cint + mem [y + 2 ].cint - | |
rulethickness ; | |
mem [y + 3 ].cint = rulethickness ; | |
} | |
delta = mem [y + 2 ].cint - ( mem [x + 3 ].cint + mem [x + 2 ].cint + | |
clr ) ; | |
if ( delta > 0 ) | |
clr = clr + half ( delta ) ; | |
mem [y + 4 ].cint = - (integer) ( mem [x + 3 ].cint + clr ) ; | |
mem [y ].hh .v.RH = overbar ( x , clr , mem [y + 3 ].cint ) ; | |
mem [q + 1 ].hh .v.LH = hpack ( y , 0 , 1 ) ; | |
mem [q + 1 ].hh .v.RH = 2 ; | |
} | |
scaled | |
zcomputeotmathaccentpos ( halfword p ) | |
{ | |
register scaled Result; computeotmathaccentpos_regmem | |
halfword q, r ; | |
scaled s, g ; | |
if ( ( mem [p + 1 ].hh .v.RH == 1 ) ) | |
{ | |
fetch ( p + 1 ) ; | |
q = newnativecharacter ( curf , curc ) ; | |
g = getnativeglyph ( q , 0 ) ; | |
s = getotmathaccentpos ( curf , g ) ; | |
} | |
else { | |
if ( ( mem [p + 1 ].hh .v.RH == 3 ) ) | |
{ | |
r = mem [p + 1 ].hh .v.LH ; | |
if ( ( r != -268435455L ) && ( mem [r ].hh.b0 == 28 ) ) | |
s = computeotmathaccentpos ( r ) ; | |
else s = 2147483647L ; | |
} | |
else s = 2147483647L ; | |
} | |
Result = s ; | |
return Result ; | |
} | |
void | |
zmakemathaccent ( halfword q ) | |
{ | |
/* 30 31 */ makemathaccent_regmem | |
halfword p, x, y ; | |
integer a ; | |
integer c, g ; | |
internalfontnumber f ; | |
fourquarters i ; | |
scaled s, sa ; | |
scaled h ; | |
scaled delta ; | |
scaled w, w2 ; | |
voidpointer otassemblyptr ; | |
fetch ( q + 4 ) ; | |
x = -268435455L ; | |
otassemblyptr = nil ; | |
if ( ( ( fontarea [curf ]== 65535L ) || ( fontarea [curf ]== 65534L ) ) | |
) | |
{ | |
c = curc ; | |
f = curf ; | |
if ( ! ( ( mem [q ].hh.b1 == 2 ) || ( mem [q ].hh.b1 == 3 ) ) ) | |
s = computeotmathaccentpos ( q ) ; | |
else s = 0 ; | |
x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ; | |
w = mem [x + 1 ].cint ; | |
h = mem [x + 3 ].cint ; | |
} | |
else if ( ( curi .b0 > 0 ) ) | |
{ | |
i = curi ; | |
c = curc ; | |
f = curf ; | |
s = 0 ; | |
if ( mem [q + 1 ].hh .v.RH == 1 ) | |
{ | |
fetch ( q + 1 ) ; | |
if ( ( ( curi .b2 ) % 4 ) == 1 ) | |
{ | |
a = ligkernbase [curf ]+ curi .b3 ; | |
curi = fontinfo [a ].qqqq ; | |
if ( curi .b0 > 128 ) | |
{ | |
a = ligkernbase [curf ]+ 256 * curi .b2 + curi .b3 + 32768L - 256 | |
* ( 128 ) ; | |
curi = fontinfo [a ].qqqq ; | |
} | |
while ( true ) { | |
if ( curi .b1 == skewchar [curf ]) | |
{ | |
if ( curi .b2 >= 128 ) { | |
if ( curi .b0 <= 128 ) | |
s = fontinfo [kernbase [curf ]+ 256 * curi .b2 + curi .b3 ] | |
.cint ; | |
} | |
goto lab31 ; | |
} | |
if ( curi .b0 >= 128 ) | |
goto lab31 ; | |
a = a + curi .b0 + 1 ; | |
curi = fontinfo [a ].qqqq ; | |
} | |
} | |
} | |
lab31: ; | |
x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ; | |
w = mem [x + 1 ].cint ; | |
h = mem [x + 3 ].cint ; | |
while ( true ) { | |
if ( ( ( i .b2 ) % 4 ) != 2 ) | |
goto lab30 ; | |
y = i .b3 ; | |
i = fontinfo [charbase [f ]+ y ].qqqq ; | |
if ( ! ( i .b0 > 0 ) ) | |
goto lab30 ; | |
if ( fontinfo [widthbase [f ]+ i .b0 ].cint > w ) | |
goto lab30 ; | |
c = y ; | |
} | |
lab30: ; | |
} | |
if ( x != -268435455L ) | |
{ | |
if ( ( ( fontarea [f ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [f ]) ) ) ) { | |
if ( ( ( mem [q ].hh.b1 == 2 ) || ( mem [q ].hh.b1 == 3 ) ) ) | |
delta = 0 ; | |
else if ( h < getotmathconstant ( f , 6 ) ) | |
delta = h ; | |
else delta = getotmathconstant ( f , 6 ) ; | |
} | |
else if ( h < fontinfo [5 + parambase [f ]].cint ) | |
delta = h ; | |
else delta = fontinfo [5 + parambase [f ]].cint ; | |
if ( ( mem [q + 2 ].hh .v.RH != 0 ) || ( mem [q + 3 ].hh .v.RH != 0 ) | |
) { | |
if ( mem [q + 1 ].hh .v.RH == 1 ) | |
{ | |
flushnodelist ( x ) ; | |
x = newnoad () ; | |
mem [x + 1 ]= mem [q + 1 ]; | |
mem [x + 2 ]= mem [q + 2 ]; | |
mem [x + 3 ]= mem [q + 3 ]; | |
mem [q + 2 ].hh = emptyfield ; | |
mem [q + 3 ].hh = emptyfield ; | |
mem [q + 1 ].hh .v.RH = 3 ; | |
mem [q + 1 ].hh .v.LH = x ; | |
x = cleanbox ( q + 1 , curstyle ) ; | |
delta = delta + mem [x + 3 ].cint - h ; | |
h = mem [x + 3 ].cint ; | |
} | |
} | |
y = charbox ( f , c ) ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
{ | |
p = getnode ( 5 ) ; | |
mem [p ].hh.b0 = 8 ; | |
mem [p ].hh.b1 = 42 ; | |
mem [p + 4 ].qqqq .b1 = f ; | |
mem [p + 4 ].qqqq .b2 = getnativeglyph ( mem [y + 5 ].hh .v.RH , 0 ) | |
; | |
setnativeglyphmetrics ( p , 1 ) ; | |
freenode ( mem [y + 5 ].hh .v.RH , mem [mem [y + 5 ].hh .v.RH + 4 ] | |
.qqqq .b0 ) ; | |
mem [y + 5 ].hh .v.RH = p ; | |
if ( odd ( mem [q ].hh.b1 ) ) | |
setnativeglyphmetrics ( p , 1 ) ; | |
else { | |
c = mem [p + 4 ].qqqq .b2 ; | |
a = 0 ; | |
do { | |
g = getotmathvariant ( f , c , a , addressof ( w2 ) , 1 ) ; | |
if ( ( w2 > 0 ) && ( w2 <= w ) ) | |
{ | |
mem [p + 4 ].qqqq .b2 = g ; | |
setnativeglyphmetrics ( p , 1 ) ; | |
incr ( a ) ; | |
} | |
} while ( ! ( ( w2 < 0 ) || ( w2 >= w ) ) ) ; | |
if ( ( w2 < 0 ) ) | |
{ | |
otassemblyptr = getotassemblyptr ( f , c , 1 ) ; | |
if ( otassemblyptr != nil ) | |
{ | |
freenode ( p , 5 ) ; | |
p = buildopentypeassembly ( f , otassemblyptr , w , 1 ) ; | |
mem [y + 5 ].hh .v.RH = p ; | |
goto lab40 ; | |
} | |
} | |
else setnativeglyphmetrics ( p , 1 ) ; | |
} | |
lab40: mem [y + 1 ].cint = mem [p + 1 ].cint ; | |
mem [y + 3 ].cint = mem [p + 3 ].cint ; | |
mem [y + 2 ].cint = mem [p + 2 ].cint ; | |
if ( ( ( mem [q ].hh.b1 == 2 ) || ( mem [q ].hh.b1 == 3 ) ) ) | |
{ | |
if ( mem [y + 3 ].cint < 0 ) | |
mem [y + 3 ].cint = 0 ; | |
} | |
else if ( mem [y + 2 ].cint < 0 ) | |
mem [y + 2 ].cint = 0 ; | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
sa = getotmathaccentpos ( f , mem [p + 4 ].qqqq .b2 ) ; | |
if ( sa == 2147483647L ) | |
sa = half ( mem [y + 1 ].cint ) ; | |
} | |
else sa = half ( mem [y + 1 ].cint ) ; | |
if ( ( ( mem [q ].hh.b1 == 2 ) || ( mem [q ].hh.b1 == 3 ) ) || ( s | |
== 2147483647L ) ) | |
s = half ( w ) ; | |
mem [y + 4 ].cint = s - sa ; | |
} | |
else mem [y + 4 ].cint = s + half ( w - mem [y + 1 ].cint ) ; | |
mem [y + 1 ].cint = 0 ; | |
if ( ( ( mem [q ].hh.b1 == 2 ) || ( mem [q ].hh.b1 == 3 ) ) ) | |
{ | |
mem [x ].hh .v.RH = y ; | |
y = vpackage ( x , 0 , 1 , 1073741823L ) ; | |
mem [y + 4 ].cint = - (integer) ( h - mem [y + 3 ].cint ) ; | |
} | |
else { | |
p = newkern ( - (integer) delta ) ; | |
mem [p ].hh .v.RH = x ; | |
mem [y ].hh .v.RH = p ; | |
y = vpackage ( y , 0 , 1 , 1073741823L ) ; | |
if ( mem [y + 3 ].cint < h ) | |
{ | |
p = newkern ( h - mem [y + 3 ].cint ) ; | |
mem [p ].hh .v.RH = mem [y + 5 ].hh .v.RH ; | |
mem [y + 5 ].hh .v.RH = p ; | |
mem [y + 3 ].cint = h ; | |
} | |
} | |
mem [y + 1 ].cint = mem [x + 1 ].cint ; | |
mem [q + 1 ].hh .v.LH = y ; | |
mem [q + 1 ].hh .v.RH = 2 ; | |
} | |
freeotassembly ( otassemblyptr ) ; | |
} | |
void | |
zmakefraction ( halfword q ) | |
{ | |
makefraction_regmem | |
halfword p, v, x, y, z ; | |
scaled delta, delta1, delta2, shiftup, shiftdown, clr ; | |
if ( mem [q + 1 ].cint == 1073741824L ) | |
mem [q + 1 ].cint = defaultrulethickness () ; | |
x = cleanbox ( q + 2 , curstyle + 2 - 2 * ( curstyle / 6 ) ) ; | |
z = cleanbox ( q + 3 , 2 * ( curstyle / 2 ) + 3 - 2 * ( curstyle / 6 ) ) ; | |
if ( mem [x + 1 ].cint < mem [z + 1 ].cint ) | |
x = rebox ( x , mem [z + 1 ].cint ) ; | |
else z = rebox ( z , mem [x + 1 ].cint ) ; | |
if ( curstyle < 2 ) | |
{ | |
shiftup = num1 ( cursize ) ; | |
shiftdown = denom1 ( cursize ) ; | |
} | |
else { | |
shiftdown = denom2 ( cursize ) ; | |
if ( mem [q + 1 ].cint != 0 ) | |
shiftup = num2 ( cursize ) ; | |
else shiftup = num3 ( cursize ) ; | |
} | |
if ( mem [q + 1 ].cint == 0 ) | |
{ | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
if ( curstyle < 2 ) | |
clr = getotmathconstant ( curf , 27 ) ; | |
else clr = getotmathconstant ( curf , 26 ) ; | |
} | |
else { | |
if ( curstyle < 2 ) | |
clr = 7 * defaultrulethickness () ; | |
else clr = 3 * defaultrulethickness () ; | |
} | |
delta = half ( clr - ( ( shiftup - mem [x + 2 ].cint ) - ( mem [z + 3 ] | |
.cint - shiftdown ) ) ) ; | |
if ( delta > 0 ) | |
{ | |
shiftup = shiftup + delta ; | |
shiftdown = shiftdown + delta ; | |
} | |
} | |
else { | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
delta = half ( mem [q + 1 ].cint ) ; | |
if ( curstyle < 2 ) | |
clr = getotmathconstant ( curf , 37 ) ; | |
else clr = getotmathconstant ( curf , 36 ) ; | |
delta1 = clr - ( ( shiftup - mem [x + 2 ].cint ) - ( axisheight ( | |
cursize ) + delta ) ) ; | |
if ( curstyle < 2 ) | |
clr = getotmathconstant ( curf , 40 ) ; | |
else clr = getotmathconstant ( curf , 39 ) ; | |
delta2 = clr - ( ( axisheight ( cursize ) - delta ) - ( mem [z + 3 ] | |
.cint - shiftdown ) ) ; | |
} | |
else { | |
if ( curstyle < 2 ) | |
clr = 3 * mem [q + 1 ].cint ; | |
else clr = mem [q + 1 ].cint ; | |
delta = half ( mem [q + 1 ].cint ) ; | |
delta1 = clr - ( ( shiftup - mem [x + 2 ].cint ) - ( axisheight ( | |
cursize ) + delta ) ) ; | |
delta2 = clr - ( ( axisheight ( cursize ) - delta ) - ( mem [z + 3 ] | |
.cint - shiftdown ) ) ; | |
} | |
if ( delta1 > 0 ) | |
shiftup = shiftup + delta1 ; | |
if ( delta2 > 0 ) | |
shiftdown = shiftdown + delta2 ; | |
} | |
v = newnullbox () ; | |
mem [v ].hh.b0 = 1 ; | |
mem [v + 3 ].cint = shiftup + mem [x + 3 ].cint ; | |
mem [v + 2 ].cint = mem [z + 2 ].cint + shiftdown ; | |
mem [v + 1 ].cint = mem [x + 1 ].cint ; | |
if ( mem [q + 1 ].cint == 0 ) | |
{ | |
p = newkern ( ( shiftup - mem [x + 2 ].cint ) - ( mem [z + 3 ].cint - | |
shiftdown ) ) ; | |
mem [p ].hh .v.RH = z ; | |
} | |
else { | |
y = fractionrule ( mem [q + 1 ].cint ) ; | |
p = newkern ( ( axisheight ( cursize ) - delta ) - ( mem [z + 3 ].cint - | |
shiftdown ) ) ; | |
mem [y ].hh .v.RH = p ; | |
mem [p ].hh .v.RH = z ; | |
p = newkern ( ( shiftup - mem [x + 2 ].cint ) - ( axisheight ( cursize ) | |
+ delta ) ) ; | |
mem [p ].hh .v.RH = y ; | |
} | |
mem [x ].hh .v.RH = p ; | |
mem [v + 5 ].hh .v.RH = x ; | |
if ( curstyle < 2 ) | |
delta = delim1 ( cursize ) ; | |
else delta = delim2 ( cursize ) ; | |
x = vardelimiter ( q + 4 , cursize , delta ) ; | |
mem [x ].hh .v.RH = v ; | |
z = vardelimiter ( q + 5 , cursize , delta ) ; | |
mem [v ].hh .v.RH = z ; | |
mem [q + 1 ].cint = hpack ( x , 0 , 1 ) ; | |
} | |
scaled | |
zmakeop ( halfword q ) | |
{ | |
/* 40 */ register scaled Result; makeop_regmem | |
scaled delta ; | |
halfword p, v, x, y, z ; | |
quarterword c ; | |
fourquarters i ; | |
scaled shiftup, shiftdown ; | |
scaled h1, h2 ; | |
integer n, g ; | |
voidpointer otassemblyptr ; | |
internalfontnumber savef ; | |
if ( ( mem [q ].hh.b1 == 0 ) && ( curstyle < 2 ) ) | |
mem [q ].hh.b1 = 1 ; | |
delta = 0 ; | |
otassemblyptr = nil ; | |
if ( mem [q + 1 ].hh .v.RH == 1 ) | |
{ | |
fetch ( q + 1 ) ; | |
if ( ! ( ( fontarea [curf ]== 65534L ) && ( usingOpenType ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
if ( ( curstyle < 2 ) && ( ( ( curi .b2 ) % 4 ) == 2 ) ) | |
{ | |
c = curi .b3 ; | |
i = fontinfo [charbase [curf ]+ c ].qqqq ; | |
if ( ( i .b0 > 0 ) ) | |
{ | |
curc = c ; | |
curi = i ; | |
mem [q + 1 ].hh.b1 = c ; | |
} | |
} | |
delta = fontinfo [italicbase [curf ]+ ( curi .b2 ) / 4 ].cint ; | |
} | |
x = cleanbox ( q + 1 , curstyle ) ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
p = mem [x + 5 ].hh .v.RH ; | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
if ( curstyle < 2 ) | |
{ | |
h1 = getotmathconstant ( curf , 3 ) ; | |
if ( h1 < ( mem [p + 3 ].cint + mem [p + 2 ].cint ) * 5 | |
/ ((double) 4 ) ) | |
h1 = ( mem [p + 3 ].cint + mem [p + 2 ].cint ) * 5 / ((double) 4 | |
) ; | |
c = mem [p + 4 ].qqqq .b2 ; | |
n = 0 ; | |
do { | |
g = getotmathvariant ( curf , c , n , addressof ( h2 ) , 0 ) ; | |
if ( h2 > 0 ) | |
{ | |
mem [p + 4 ].qqqq .b2 = g ; | |
setnativeglyphmetrics ( p , 1 ) ; | |
} | |
incr ( n ) ; | |
} while ( ! ( ( h2 < 0 ) || ( h2 >= h1 ) ) ) ; | |
if ( ( h2 < 0 ) ) | |
{ | |
otassemblyptr = getotassemblyptr ( curf , c , 0 ) ; | |
if ( otassemblyptr != nil ) | |
{ | |
freenode ( p , 5 ) ; | |
p = buildopentypeassembly ( curf , otassemblyptr , h1 , 0 ) ; | |
mem [x + 5 ].hh .v.RH = p ; | |
delta = 0 ; | |
goto lab40 ; | |
} | |
} | |
else setnativeglyphmetrics ( p , 1 ) ; | |
} | |
delta = getotmathitalcorr ( curf , mem [p + 4 ].qqqq .b2 ) ; | |
lab40: mem [x + 1 ].cint = mem [p + 1 ].cint ; | |
mem [x + 3 ].cint = mem [p + 3 ].cint ; | |
mem [x + 2 ].cint = mem [p + 2 ].cint ; | |
} | |
} | |
if ( ( mem [q + 3 ].hh .v.RH != 0 ) && ( mem [q ].hh.b1 != 1 ) ) | |
mem [x + 1 ].cint = mem [x + 1 ].cint - delta ; | |
mem [x + 4 ].cint = half ( mem [x + 3 ].cint - mem [x + 2 ].cint ) - | |
axisheight ( cursize ) ; | |
mem [q + 1 ].hh .v.RH = 2 ; | |
mem [q + 1 ].hh .v.LH = x ; | |
} | |
savef = curf ; | |
if ( mem [q ].hh.b1 == 1 ) | |
{ | |
x = cleanbox ( q + 2 , 2 * ( curstyle / 4 ) + 4 + ( curstyle % 2 ) ) ; | |
y = cleanbox ( q + 1 , curstyle ) ; | |
z = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ; | |
v = newnullbox () ; | |
mem [v ].hh.b0 = 1 ; | |
mem [v + 1 ].cint = mem [y + 1 ].cint ; | |
if ( mem [x + 1 ].cint > mem [v + 1 ].cint ) | |
mem [v + 1 ].cint = mem [x + 1 ].cint ; | |
if ( mem [z + 1 ].cint > mem [v + 1 ].cint ) | |
mem [v + 1 ].cint = mem [z + 1 ].cint ; | |
x = rebox ( x , mem [v + 1 ].cint ) ; | |
y = rebox ( y , mem [v + 1 ].cint ) ; | |
z = rebox ( z , mem [v + 1 ].cint ) ; | |
mem [x + 4 ].cint = half ( delta ) ; | |
mem [z + 4 ].cint = - (integer) mem [x + 4 ].cint ; | |
mem [v + 3 ].cint = mem [y + 3 ].cint ; | |
mem [v + 2 ].cint = mem [y + 2 ].cint ; | |
curf = savef ; | |
if ( mem [q + 2 ].hh .v.RH == 0 ) | |
{ | |
freenode ( x , 8 ) ; | |
mem [v + 5 ].hh .v.RH = y ; | |
} | |
else { | |
shiftup = bigopspacing3 () - mem [x + 2 ].cint ; | |
if ( shiftup < bigopspacing1 () ) | |
shiftup = bigopspacing1 () ; | |
p = newkern ( shiftup ) ; | |
mem [p ].hh .v.RH = y ; | |
mem [x ].hh .v.RH = p ; | |
p = newkern ( bigopspacing5 () ) ; | |
mem [p ].hh .v.RH = x ; | |
mem [v + 5 ].hh .v.RH = p ; | |
mem [v + 3 ].cint = mem [v + 3 ].cint + bigopspacing5 () + mem [x + | |
3 ].cint + mem [x + 2 ].cint + shiftup ; | |
} | |
if ( mem [q + 3 ].hh .v.RH == 0 ) | |
freenode ( z , 8 ) ; | |
else { | |
shiftdown = bigopspacing4 () - mem [z + 3 ].cint ; | |
if ( shiftdown < bigopspacing2 () ) | |
shiftdown = bigopspacing2 () ; | |
p = newkern ( shiftdown ) ; | |
mem [y ].hh .v.RH = p ; | |
mem [p ].hh .v.RH = z ; | |
p = newkern ( bigopspacing5 () ) ; | |
mem [z ].hh .v.RH = p ; | |
mem [v + 2 ].cint = mem [v + 2 ].cint + bigopspacing5 () + mem [z + | |
3 ].cint + mem [z + 2 ].cint + shiftdown ; | |
} | |
mem [q + 1 ].cint = v ; | |
} | |
freeotassembly ( otassemblyptr ) ; | |
Result = delta ; | |
return Result ; | |
} | |
void | |
zmakeord ( halfword q ) | |
{ | |
/* 20 10 */ makeord_regmem | |
integer a ; | |
halfword p, r ; | |
lab20: if ( mem [q + 3 ].hh .v.RH == 0 ) { | |
if ( mem [q + 2 ].hh .v.RH == 0 ) { | |
if ( mem [q + 1 ].hh .v.RH == 1 ) | |
{ | |
p = mem [q ].hh .v.RH ; | |
if ( p != -268435455L ) { | |
if ( ( mem [p ].hh.b0 >= 16 ) && ( mem [p ].hh.b0 <= 22 ) ) { | |
if ( mem [p + 1 ].hh .v.RH == 1 ) { | |
if ( ( mem [p + 1 ].hh.b0 % 256 ) == ( mem [q + 1 ].hh.b0 % | |
256 ) ) | |
{ | |
mem [q + 1 ].hh .v.RH = 4 ; | |
fetch ( q + 1 ) ; | |
if ( ( ( curi .b2 ) % 4 ) == 1 ) | |
{ | |
a = ligkernbase [curf ]+ curi .b3 ; | |
curc = mem [p + 1 ].hh.b1 ; | |
curi = fontinfo [a ].qqqq ; | |
if ( curi .b0 > 128 ) | |
{ | |
a = ligkernbase [curf ]+ 256 * curi .b2 + curi .b3 + | |
32768L - 256 * ( 128 ) ; | |
curi = fontinfo [a ].qqqq ; | |
} | |
while ( true ) { | |
if ( curi .b1 == curc ) { | |
if ( curi .b0 <= 128 ) { | |
if ( curi .b2 >= 128 ) | |
{ | |
p = newkern ( fontinfo [kernbase [curf ]+ 256 * | |
curi .b2 + curi .b3 ].cint ) ; | |
mem [p ].hh .v.RH = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = p ; | |
return ; | |
} | |
else { | |
{ | |
if ( interrupt != 0 ) | |
pauseforinstructions () ; | |
} | |
switch ( curi .b2 ) | |
{case 1 : | |
case 5 : | |
mem [q + 1 ].hh.b1 = curi .b3 ; | |
break ; | |
case 2 : | |
case 6 : | |
mem [p + 1 ].hh.b1 = curi .b3 ; | |
break ; | |
case 3 : | |
case 7 : | |
case 11 : | |
{ | |
r = newnoad () ; | |
mem [r + 1 ].hh.b1 = curi .b3 ; | |
mem [r + 1 ].hh.b0 = ( mem [q + 1 ].hh.b0 % | |
256 ) ; | |
mem [q ].hh .v.RH = r ; | |
mem [r ].hh .v.RH = p ; | |
if ( curi .b2 < 11 ) | |
mem [r + 1 ].hh .v.RH = 1 ; | |
else mem [r + 1 ].hh .v.RH = 4 ; | |
} | |
break ; | |
default: | |
{ | |
mem [q ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [q + 1 ].hh.b1 = curi .b3 ; | |
mem [q + 3 ]= mem [p + 3 ]; | |
mem [q + 2 ]= mem [p + 2 ]; | |
freenode ( p , 4 ) ; | |
} | |
break ; | |
} | |
if ( curi .b2 > 3 ) | |
return ; | |
mem [q + 1 ].hh .v.RH = 1 ; | |
goto lab20 ; | |
} | |
} | |
} | |
if ( curi .b0 >= 128 ) | |
return ; | |
a = a + curi .b0 + 1 ; | |
curi = fontinfo [a ].qqqq ; | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
halfword | |
zattachhkerntonewhlist ( halfword q , scaled delta ) | |
{ | |
register halfword Result; attachhkerntonewhlist_regmem | |
halfword y, z ; | |
z = newkern ( delta ) ; | |
if ( mem [q + 1 ].cint == -268435455L ) | |
mem [q + 1 ].cint = z ; | |
else { | |
y = mem [q + 1 ].cint ; | |
while ( mem [y ].hh .v.RH != -268435455L ) y = mem [y ].hh .v.RH ; | |
mem [y ].hh .v.RH = z ; | |
} | |
Result = mem [q + 1 ].cint ; | |
return Result ; | |
} | |
void | |
zmakescripts ( halfword q , scaled delta ) | |
{ | |
makescripts_regmem | |
halfword p, x, y, z ; | |
scaled shiftup, shiftdown, clr, subkern, supkern ; | |
halfword scriptc ; | |
quarterword scriptg ; | |
internalfontnumber scriptf ; | |
quarterword supg ; | |
internalfontnumber supf ; | |
quarterword subg ; | |
internalfontnumber subf ; | |
integer t ; | |
internalfontnumber savef ; | |
halfword scripthead ; | |
halfword scriptptr ; | |
smallnumber savedmathstyle ; | |
smallnumber thismathstyle ; | |
p = mem [q + 1 ].cint ; | |
scriptc = -268435455L ; | |
scriptg = 0 ; | |
scriptf = 0 ; | |
supkern = 0 ; | |
subkern = 0 ; | |
if ( ( p >= himemmin ) || ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) | |
) && ( mem [p ].hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
shiftup = 0 ; | |
shiftdown = 0 ; | |
} | |
else { | |
z = hpack ( p , 0 , 1 ) ; | |
if ( curstyle < 4 ) | |
t = 256 ; | |
else t = 512 ; | |
shiftup = mem [z + 3 ].cint - supdrop ( t ) ; | |
shiftdown = mem [z + 2 ].cint + subdrop ( t ) ; | |
freenode ( z , 8 ) ; | |
} | |
if ( mem [q + 2 ].hh .v.RH == 0 ) | |
{ | |
scripthead = q + 3 ; | |
scriptc = -268435455L ; | |
scriptg = 0 ; | |
scriptf = 0 ; | |
thismathstyle = 2 * ( curstyle / 4 ) + 5 ; | |
if ( mem [scripthead ].hh .v.RH == 3 ) | |
{ | |
scriptptr = mem [scripthead ].hh .v.LH ; | |
scripthead = -268435455L ; | |
while ( ( ( scriptptr >= memmin ) && ( scriptptr <= memend ) ) ) { | |
switch ( mem [scriptptr ].hh.b0 ) | |
{case 11 : | |
case 10 : | |
; | |
break ; | |
case 14 : | |
{ | |
thismathstyle = mem [scriptptr ].hh.b1 ; | |
} | |
break ; | |
case 15 : | |
; | |
break ; | |
case 16 : | |
case 17 : | |
case 18 : | |
case 19 : | |
case 20 : | |
case 21 : | |
case 22 : | |
{ | |
scripthead = scriptptr + 1 ; | |
scriptptr = -268435455L ; | |
} | |
break ; | |
default: | |
scriptptr = -268435455L ; | |
break ; | |
} | |
if ( ( ( scriptptr >= memmin ) && ( scriptptr <= memend ) ) ) { | |
if ( mem [scriptptr ].hh.b0 == 15 ) | |
switch ( thismathstyle / 2 ) | |
{case 0 : | |
scriptptr = mem [scriptptr + 1 ].hh .v.LH ; | |
break ; | |
case 1 : | |
scriptptr = mem [scriptptr + 1 ].hh .v.RH ; | |
break ; | |
case 2 : | |
scriptptr = mem [scriptptr + 2 ].hh .v.LH ; | |
break ; | |
case 3 : | |
scriptptr = mem [scriptptr + 2 ].hh .v.RH ; | |
break ; | |
} | |
else scriptptr = mem [scriptptr ].hh .v.RH ; | |
} | |
} | |
} | |
if ( ( ( scripthead >= memmin ) && ( scripthead <= memend ) ) && mem [ | |
scripthead ].hh .v.RH == 1 ) | |
{ | |
savef = curf ; | |
savedmathstyle = curstyle ; | |
curstyle = thismathstyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
fetch ( scripthead ) ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
scriptc = newnativecharacter ( curf , curc ) ; | |
scriptg = getnativeglyph ( scriptc , 0 ) ; | |
scriptf = curf ; | |
} | |
curf = savef ; | |
curstyle = savedmathstyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
} | |
subg = scriptg ; | |
subf = scriptf ; | |
savef = curf ; | |
x = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ; | |
curf = savef ; | |
mem [x + 1 ].cint = mem [x + 1 ].cint + eqtb [10053705L ].cint ; | |
if ( shiftdown < sub1 ( cursize ) ) | |
shiftdown = sub1 ( cursize ) ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
clr = mem [x + 3 ].cint - getotmathconstant ( curf , 9 ) ; | |
else clr = mem [x + 3 ].cint - ( abs ( mathxheight ( cursize ) * 4 ) / 5 | |
) ; | |
if ( shiftdown < clr ) | |
shiftdown = clr ; | |
mem [x + 4 ].cint = shiftdown ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem [p ] | |
.hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
subkern = getotmathkern ( mem [p + 4 ].qqqq .b1 , mem [p + 4 ] | |
.qqqq .b2 , subf , subg , 1 , shiftdown ) ; | |
if ( subkern != 0 ) | |
p = attachhkerntonewhlist ( q , subkern ) ; | |
} | |
} | |
} | |
else { | |
{ | |
scripthead = q + 2 ; | |
scriptc = -268435455L ; | |
scriptg = 0 ; | |
scriptf = 0 ; | |
thismathstyle = 2 * ( curstyle / 4 ) + 5 ; | |
if ( mem [scripthead ].hh .v.RH == 3 ) | |
{ | |
scriptptr = mem [scripthead ].hh .v.LH ; | |
scripthead = -268435455L ; | |
while ( ( ( scriptptr >= memmin ) && ( scriptptr <= memend ) ) ) { | |
switch ( mem [scriptptr ].hh.b0 ) | |
{case 11 : | |
case 10 : | |
; | |
break ; | |
case 14 : | |
{ | |
thismathstyle = mem [scriptptr ].hh.b1 ; | |
} | |
break ; | |
case 15 : | |
; | |
break ; | |
case 16 : | |
case 17 : | |
case 18 : | |
case 19 : | |
case 20 : | |
case 21 : | |
case 22 : | |
{ | |
scripthead = scriptptr + 1 ; | |
scriptptr = -268435455L ; | |
} | |
break ; | |
default: | |
scriptptr = -268435455L ; | |
break ; | |
} | |
if ( ( ( scriptptr >= memmin ) && ( scriptptr <= memend ) ) ) { | |
if ( mem [scriptptr ].hh.b0 == 15 ) | |
switch ( thismathstyle / 2 ) | |
{case 0 : | |
scriptptr = mem [scriptptr + 1 ].hh .v.LH ; | |
break ; | |
case 1 : | |
scriptptr = mem [scriptptr + 1 ].hh .v.RH ; | |
break ; | |
case 2 : | |
scriptptr = mem [scriptptr + 2 ].hh .v.LH ; | |
break ; | |
case 3 : | |
scriptptr = mem [scriptptr + 2 ].hh .v.RH ; | |
break ; | |
} | |
else scriptptr = mem [scriptptr ].hh .v.RH ; | |
} | |
} | |
} | |
if ( ( ( scripthead >= memmin ) && ( scripthead <= memend ) ) && mem [ | |
scripthead ].hh .v.RH == 1 ) | |
{ | |
savef = curf ; | |
savedmathstyle = curstyle ; | |
curstyle = thismathstyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
fetch ( scripthead ) ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
scriptc = newnativecharacter ( curf , curc ) ; | |
scriptg = getnativeglyph ( scriptc , 0 ) ; | |
scriptf = curf ; | |
} | |
curf = savef ; | |
curstyle = savedmathstyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
} | |
supg = scriptg ; | |
supf = scriptf ; | |
savef = curf ; | |
x = cleanbox ( q + 2 , 2 * ( curstyle / 4 ) + 4 + ( curstyle % 2 ) ) ; | |
curf = savef ; | |
mem [x + 1 ].cint = mem [x + 1 ].cint + eqtb [10053705L ].cint ; | |
if ( odd ( curstyle ) ) | |
clr = sup3 ( cursize ) ; | |
else if ( curstyle < 2 ) | |
clr = sup1 ( cursize ) ; | |
else clr = sup2 ( cursize ) ; | |
if ( shiftup < clr ) | |
shiftup = clr ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
clr = mem [x + 2 ].cint + getotmathconstant ( curf , 13 ) ; | |
else clr = mem [x + 2 ].cint + ( abs ( mathxheight ( cursize ) ) / 4 ) | |
; | |
if ( shiftup < clr ) | |
shiftup = clr ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
if ( mem [q + 3 ].hh .v.RH == 0 ) { | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem [ | |
p ].hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
supkern = getotmathkern ( mem [p + 4 ].qqqq .b1 , mem [p + 4 ] | |
.qqqq .b2 , supf , supg , 0 , shiftup ) ; | |
if ( supkern != 0 ) | |
p = attachhkerntonewhlist ( q , supkern ) ; | |
} | |
} | |
} | |
} | |
if ( mem [q + 3 ].hh .v.RH == 0 ) | |
mem [x + 4 ].cint = - (integer) shiftup ; | |
else { | |
savef = curf ; | |
scripthead = q + 3 ; | |
scriptc = -268435455L ; | |
scriptg = 0 ; | |
scriptf = 0 ; | |
thismathstyle = 2 * ( curstyle / 4 ) + 5 ; | |
if ( mem [scripthead ].hh .v.RH == 3 ) | |
{ | |
scriptptr = mem [scripthead ].hh .v.LH ; | |
scripthead = -268435455L ; | |
while ( ( ( scriptptr >= memmin ) && ( scriptptr <= memend ) ) ) { | |
switch ( mem [scriptptr ].hh.b0 ) | |
{case 11 : | |
case 10 : | |
; | |
break ; | |
case 14 : | |
{ | |
thismathstyle = mem [scriptptr ].hh.b1 ; | |
} | |
break ; | |
case 15 : | |
; | |
break ; | |
case 16 : | |
case 17 : | |
case 18 : | |
case 19 : | |
case 20 : | |
case 21 : | |
case 22 : | |
{ | |
scripthead = scriptptr + 1 ; | |
scriptptr = -268435455L ; | |
} | |
break ; | |
default: | |
scriptptr = -268435455L ; | |
break ; | |
} | |
if ( ( ( scriptptr >= memmin ) && ( scriptptr <= memend ) ) ) { | |
if ( mem [scriptptr ].hh.b0 == 15 ) | |
switch ( thismathstyle / 2 ) | |
{case 0 : | |
scriptptr = mem [scriptptr + 1 ].hh .v.LH ; | |
break ; | |
case 1 : | |
scriptptr = mem [scriptptr + 1 ].hh .v.RH ; | |
break ; | |
case 2 : | |
scriptptr = mem [scriptptr + 2 ].hh .v.LH ; | |
break ; | |
case 3 : | |
scriptptr = mem [scriptptr + 2 ].hh .v.RH ; | |
break ; | |
} | |
else scriptptr = mem [scriptptr ].hh .v.RH ; | |
} | |
} | |
} | |
if ( ( ( scripthead >= memmin ) && ( scripthead <= memend ) ) && mem [ | |
scripthead ].hh .v.RH == 1 ) | |
{ | |
savef = curf ; | |
savedmathstyle = curstyle ; | |
curstyle = thismathstyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
fetch ( scripthead ) ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
scriptc = newnativecharacter ( curf , curc ) ; | |
scriptg = getnativeglyph ( scriptc , 0 ) ; | |
scriptf = curf ; | |
} | |
curf = savef ; | |
curstyle = savedmathstyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
} | |
subg = scriptg ; | |
subf = scriptf ; | |
y = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ; | |
curf = savef ; | |
mem [y + 1 ].cint = mem [y + 1 ].cint + eqtb [10053705L ].cint ; | |
if ( shiftdown < sub2 ( cursize ) ) | |
shiftdown = sub2 ( cursize ) ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
clr = getotmathconstant ( curf , 15 ) - ( ( shiftup - mem [x + 2 ] | |
.cint ) - ( mem [y + 3 ].cint - shiftdown ) ) ; | |
else clr = 4 * defaultrulethickness () - ( ( shiftup - mem [x + 2 ] | |
.cint ) - ( mem [y + 3 ].cint - shiftdown ) ) ; | |
if ( clr > 0 ) | |
{ | |
shiftdown = shiftdown + clr ; | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
clr = getotmathconstant ( curf , 16 ) - ( shiftup - mem [x + 2 ] | |
.cint ) ; | |
else clr = ( abs ( mathxheight ( cursize ) * 4 ) / 5 ) - ( shiftup - | |
mem [x + 2 ].cint ) ; | |
if ( clr > 0 ) | |
{ | |
shiftup = shiftup + clr ; | |
shiftdown = shiftdown - clr ; | |
} | |
} | |
if ( ( ( fontarea [curf ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [curf ]) ) ) ) | |
{ | |
{ | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem [ | |
p ].hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
subkern = getotmathkern ( mem [p + 4 ].qqqq .b1 , mem [p + 4 ] | |
.qqqq .b2 , subf , subg , 1 , shiftdown ) ; | |
if ( subkern != 0 ) | |
p = attachhkerntonewhlist ( q , subkern ) ; | |
} | |
} | |
{ | |
if ( mem [q + 3 ].hh .v.RH == 0 ) { | |
if ( ( ( ( p ) != -268435455L && ( ! ( p >= himemmin ) ) && ( mem | |
[p ].hh.b0 == 8 ) && ( mem [p ].hh.b1 == 42 ) ) ) ) | |
{ | |
supkern = getotmathkern ( mem [p + 4 ].qqqq .b1 , mem [p + 4 | |
].qqqq .b2 , supf , supg , 0 , shiftup ) ; | |
if ( supkern != 0 ) | |
p = attachhkerntonewhlist ( q , supkern ) ; | |
} | |
} | |
} | |
} | |
else { | |
supkern = 0 ; | |
subkern = 0 ; | |
} | |
mem [x + 4 ].cint = supkern + delta - subkern ; | |
p = newkern ( ( shiftup - mem [x + 2 ].cint ) - ( mem [y + 3 ].cint | |
- shiftdown ) ) ; | |
mem [x ].hh .v.RH = p ; | |
mem [p ].hh .v.RH = y ; | |
x = vpackage ( x , 0 , 1 , 1073741823L ) ; | |
mem [x + 4 ].cint = shiftdown ; | |
} | |
} | |
if ( mem [q + 1 ].cint == -268435455L ) | |
mem [q + 1 ].cint = x ; | |
else { | |
p = mem [q + 1 ].cint ; | |
while ( mem [p ].hh .v.RH != -268435455L ) p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = x ; | |
} | |
} | |
smallnumber | |
zmakeleftright ( halfword q , smallnumber style , scaled maxd , scaled maxh ) | |
{ | |
register smallnumber Result; makeleftright_regmem | |
scaled delta, delta1, delta2 ; | |
curstyle = style ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
delta2 = maxd + axisheight ( cursize ) ; | |
delta1 = maxh + maxd - delta2 ; | |
if ( delta2 > delta1 ) | |
delta1 = delta2 ; | |
delta = ( delta1 / 500 ) * eqtb [8939258L ].cint ; | |
delta2 = delta1 + delta1 - eqtb [10053703L ].cint ; | |
if ( delta < delta2 ) | |
delta = delta2 ; | |
mem [q + 1 ].cint = vardelimiter ( q + 1 , cursize , delta ) ; | |
Result = mem [q ].hh.b0 - ( 10 ) ; | |
return Result ; | |
} | |
void | |
mlisttohlist ( void ) | |
{ | |
/* 21 82 80 81 83 30 */ mlisttohlist_regmem | |
halfword mlist ; | |
boolean penalties ; | |
smallnumber style ; | |
smallnumber savestyle ; | |
halfword q ; | |
halfword r ; | |
smallnumber rtype ; | |
smallnumber t ; | |
halfword p, x, y, z ; | |
integer pen ; | |
smallnumber s ; | |
scaled maxh, maxd ; | |
scaled delta ; | |
mlist = curmlist ; | |
penalties = mlistpenalties ; | |
style = curstyle ; | |
q = mlist ; | |
r = -268435455L ; | |
rtype = 17 ; | |
maxh = 0 ; | |
maxd = 0 ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
while ( q != -268435455L ) { | |
lab21: delta = 0 ; | |
switch ( mem [q ].hh.b0 ) | |
{case 18 : | |
switch ( rtype ) | |
{case 18 : | |
case 17 : | |
case 19 : | |
case 20 : | |
case 22 : | |
case 30 : | |
{ | |
mem [q ].hh.b0 = 16 ; | |
goto lab21 ; | |
} | |
break ; | |
default: | |
; | |
break ; | |
} | |
break ; | |
case 19 : | |
case 21 : | |
case 22 : | |
case 31 : | |
{ | |
if ( rtype == 18 ) | |
mem [r ].hh.b0 = 16 ; | |
if ( mem [q ].hh.b0 == 31 ) | |
goto lab80 ; | |
} | |
break ; | |
case 30 : | |
goto lab80 ; | |
break ; | |
case 25 : | |
{ | |
makefraction ( q ) ; | |
goto lab82 ; | |
} | |
break ; | |
case 17 : | |
{ | |
delta = makeop ( q ) ; | |
if ( mem [q ].hh.b1 == 1 ) | |
goto lab82 ; | |
} | |
break ; | |
case 16 : | |
makeord ( q ) ; | |
break ; | |
case 20 : | |
case 23 : | |
; | |
break ; | |
case 24 : | |
makeradical ( q ) ; | |
break ; | |
case 27 : | |
makeover ( q ) ; | |
break ; | |
case 26 : | |
makeunder ( q ) ; | |
break ; | |
case 28 : | |
makemathaccent ( q ) ; | |
break ; | |
case 29 : | |
makevcenter ( q ) ; | |
break ; | |
case 14 : | |
{ | |
curstyle = mem [q ].hh.b1 ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
goto lab81 ; | |
} | |
break ; | |
case 15 : | |
{ | |
switch ( curstyle / 2 ) | |
{case 0 : | |
{ | |
p = mem [q + 1 ].hh .v.LH ; | |
mem [q + 1 ].hh .v.LH = -268435455L ; | |
} | |
break ; | |
case 1 : | |
{ | |
p = mem [q + 1 ].hh .v.RH ; | |
mem [q + 1 ].hh .v.RH = -268435455L ; | |
} | |
break ; | |
case 2 : | |
{ | |
p = mem [q + 2 ].hh .v.LH ; | |
mem [q + 2 ].hh .v.LH = -268435455L ; | |
} | |
break ; | |
case 3 : | |
{ | |
p = mem [q + 2 ].hh .v.RH ; | |
mem [q + 2 ].hh .v.RH = -268435455L ; | |
} | |
break ; | |
} | |
flushnodelist ( mem [q + 1 ].hh .v.LH ) ; | |
flushnodelist ( mem [q + 1 ].hh .v.RH ) ; | |
flushnodelist ( mem [q + 2 ].hh .v.LH ) ; | |
flushnodelist ( mem [q + 2 ].hh .v.RH ) ; | |
mem [q ].hh.b0 = 14 ; | |
mem [q ].hh.b1 = curstyle ; | |
mem [q + 1 ].cint = 0 ; | |
mem [q + 2 ].cint = 0 ; | |
if ( p != -268435455L ) | |
{ | |
z = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = p ; | |
while ( mem [p ].hh .v.RH != -268435455L ) p = mem [p ].hh .v.RH | |
; | |
mem [p ].hh .v.RH = z ; | |
} | |
goto lab81 ; | |
} | |
break ; | |
case 3 : | |
case 4 : | |
case 5 : | |
case 8 : | |
case 12 : | |
case 7 : | |
goto lab81 ; | |
break ; | |
case 2 : | |
{ | |
if ( mem [q + 3 ].cint > maxh ) | |
maxh = mem [q + 3 ].cint ; | |
if ( mem [q + 2 ].cint > maxd ) | |
maxd = mem [q + 2 ].cint ; | |
goto lab81 ; | |
} | |
break ; | |
case 10 : | |
{ | |
if ( mem [q ].hh.b1 == 99 ) | |
{ | |
x = mem [q + 1 ].hh .v.LH ; | |
y = mathglue ( x , curmu ) ; | |
deleteglueref ( x ) ; | |
mem [q + 1 ].hh .v.LH = y ; | |
mem [q ].hh.b1 = 0 ; | |
} | |
else if ( ( cursize != 0 ) && ( mem [q ].hh.b1 == 98 ) ) | |
{ | |
p = mem [q ].hh .v.RH ; | |
if ( p != -268435455L ) { | |
if ( ( mem [p ].hh.b0 == 10 ) || ( mem [p ].hh.b0 == 11 ) ) | |
{ | |
mem [q ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
flushnodelist ( p ) ; | |
} | |
} | |
} | |
goto lab81 ; | |
} | |
break ; | |
case 11 : | |
{ | |
mathkern ( q , curmu ) ; | |
goto lab81 ; | |
} | |
break ; | |
default: | |
confusion ( 66310L ) ; | |
break ; | |
} | |
switch ( mem [q + 1 ].hh .v.RH ) | |
{case 1 : | |
case 4 : | |
{ | |
fetch ( q + 1 ) ; | |
if ( ( ( fontarea [curf ]== 65535L ) || ( fontarea [curf ]== | |
65534L ) ) ) | |
{ | |
z = newnativecharacter ( curf , curc ) ; | |
p = getnode ( 5 ) ; | |
mem [p ].hh.b0 = 8 ; | |
mem [p ].hh.b1 = 42 ; | |
mem [p + 4 ].qqqq .b1 = curf ; | |
mem [p + 4 ].qqqq .b2 = getnativeglyph ( z , 0 ) ; | |
setnativeglyphmetrics ( p , 1 ) ; | |
freenode ( z , mem [z + 4 ].qqqq .b0 ) ; | |
delta = getotmathitalcorr ( curf , mem [p + 4 ].qqqq .b2 ) ; | |
if ( ( mem [q + 1 ].hh .v.RH == 4 ) && ( ! ( ( fontarea [curf ] | |
== 65534L ) && ( isOpenTypeMathFont ( fontlayoutengine [curf ]) ) | |
) != 0 ) ) | |
delta = 0 ; | |
if ( ( mem [q + 3 ].hh .v.RH == 0 ) && ( delta != 0 ) ) | |
{ | |
mem [p ].hh .v.RH = newkern ( delta ) ; | |
delta = 0 ; | |
} | |
} | |
else if ( ( curi .b0 > 0 ) ) | |
{ | |
delta = fontinfo [italicbase [curf ]+ ( curi .b2 ) / 4 ].cint ; | |
p = newcharacter ( curf , curc ) ; | |
if ( ( mem [q + 1 ].hh .v.RH == 4 ) && ( fontinfo [2 + parambase | |
[curf ]].cint != 0 ) ) | |
delta = 0 ; | |
if ( ( mem [q + 3 ].hh .v.RH == 0 ) && ( delta != 0 ) ) | |
{ | |
mem [p ].hh .v.RH = newkern ( delta ) ; | |
delta = 0 ; | |
} | |
} | |
else p = -268435455L ; | |
} | |
break ; | |
case 0 : | |
p = -268435455L ; | |
break ; | |
case 2 : | |
p = mem [q + 1 ].hh .v.LH ; | |
break ; | |
case 3 : | |
{ | |
curmlist = mem [q + 1 ].hh .v.LH ; | |
savestyle = curstyle ; | |
mlistpenalties = false ; | |
mlisttohlist () ; | |
curstyle = savestyle ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
p = hpack ( mem [memtop - 3 ].hh .v.RH , 0 , 1 ) ; | |
} | |
break ; | |
default: | |
confusion ( 66311L ) ; | |
break ; | |
} | |
mem [q + 1 ].cint = p ; | |
if ( ( mem [q + 3 ].hh .v.RH == 0 ) && ( mem [q + 2 ].hh .v.RH == 0 ) | |
) | |
goto lab82 ; | |
makescripts ( q , delta ) ; | |
lab82: z = hpack ( mem [q + 1 ].cint , 0 , 1 ) ; | |
if ( mem [z + 3 ].cint > maxh ) | |
maxh = mem [z + 3 ].cint ; | |
if ( mem [z + 2 ].cint > maxd ) | |
maxd = mem [z + 2 ].cint ; | |
freenode ( z , 8 ) ; | |
lab80: r = q ; | |
rtype = mem [r ].hh.b0 ; | |
if ( rtype == 31 ) | |
{ | |
rtype = 30 ; | |
curstyle = style ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
} | |
lab81: q = mem [q ].hh .v.RH ; | |
} | |
if ( rtype == 18 ) | |
mem [r ].hh.b0 = 16 ; | |
p = memtop - 3 ; | |
mem [p ].hh .v.RH = -268435455L ; | |
q = mlist ; | |
rtype = 0 ; | |
curstyle = style ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
while ( q != -268435455L ) { | |
t = 16 ; | |
s = 4 ; | |
pen = 10000 ; | |
switch ( mem [q ].hh.b0 ) | |
{case 17 : | |
case 20 : | |
case 21 : | |
case 22 : | |
case 23 : | |
t = mem [q ].hh.b0 ; | |
break ; | |
case 18 : | |
{ | |
t = 18 ; | |
pen = eqtb [8939249L ].cint ; | |
} | |
break ; | |
case 19 : | |
{ | |
t = 19 ; | |
pen = eqtb [8939250L ].cint ; | |
} | |
break ; | |
case 16 : | |
case 29 : | |
case 27 : | |
case 26 : | |
; | |
break ; | |
case 24 : | |
s = 5 ; | |
break ; | |
case 28 : | |
s = 5 ; | |
break ; | |
case 25 : | |
s = 6 ; | |
break ; | |
case 30 : | |
case 31 : | |
t = makeleftright ( q , style , maxd , maxh ) ; | |
break ; | |
case 14 : | |
{ | |
curstyle = mem [q ].hh.b1 ; | |
s = 3 ; | |
{ | |
if ( curstyle < 4 ) | |
cursize = 0 ; | |
else cursize = 256 * ( ( curstyle - 2 ) / 2 ) ; | |
curmu = xovern ( mathquad ( cursize ) , 18 ) ; | |
} | |
goto lab83 ; | |
} | |
break ; | |
case 8 : | |
case 12 : | |
case 2 : | |
case 7 : | |
case 5 : | |
case 3 : | |
case 4 : | |
case 10 : | |
case 11 : | |
{ | |
mem [p ].hh .v.RH = q ; | |
p = q ; | |
q = mem [q ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
goto lab30 ; | |
} | |
break ; | |
default: | |
confusion ( 66312L ) ; | |
break ; | |
} | |
if ( rtype > 0 ) | |
{ | |
switch ( strpool [rtype * 8 + t + magicoffset ]) | |
{case 48 : | |
x = 0 ; | |
break ; | |
case 49 : | |
if ( curstyle < 4 ) | |
x = 16 ; | |
else x = 0 ; | |
break ; | |
case 50 : | |
x = 16 ; | |
break ; | |
case 51 : | |
if ( curstyle < 4 ) | |
x = 17 ; | |
else x = 0 ; | |
break ; | |
case 52 : | |
if ( curstyle < 4 ) | |
x = 18 ; | |
else x = 0 ; | |
break ; | |
default: | |
confusion ( 66314L ) ; | |
break ; | |
} | |
if ( x != 0 ) | |
{ | |
y = mathglue ( eqtb [2252740L + x ].hh .v.RH , curmu ) ; | |
z = newglue ( y ) ; | |
mem [y ].hh .v.RH = -268435455L ; | |
mem [p ].hh .v.RH = z ; | |
p = z ; | |
mem [z ].hh.b1 = x + 1 ; | |
} | |
} | |
if ( mem [q + 1 ].cint != -268435455L ) | |
{ | |
mem [p ].hh .v.RH = mem [q + 1 ].cint ; | |
do { | |
p = mem [p ].hh .v.RH ; | |
} while ( ! ( mem [p ].hh .v.RH == -268435455L ) ) ; | |
} | |
if ( penalties ) { | |
if ( mem [q ].hh .v.RH != -268435455L ) { | |
if ( pen < 10000 ) | |
{ | |
rtype = mem [mem [q ].hh .v.RH ].hh.b0 ; | |
if ( rtype != 12 ) { | |
if ( rtype != 19 ) | |
{ | |
z = newpenalty ( pen ) ; | |
mem [p ].hh .v.RH = z ; | |
p = z ; | |
} | |
} | |
} | |
} | |
} | |
if ( mem [q ].hh.b0 == 31 ) | |
t = 20 ; | |
rtype = t ; | |
lab83: r = q ; | |
q = mem [q ].hh .v.RH ; | |
freenode ( r , s ) ; | |
lab30: ; | |
} | |
} | |
void | |
pushalignment ( void ) | |
{ | |
pushalignment_regmem | |
halfword p ; | |
p = getnode ( 6 ) ; | |
mem [p ].hh .v.RH = alignptr ; | |
mem [p ].hh .v.LH = curalign ; | |
mem [p + 1 ].hh .v.LH = mem [memtop - 8 ].hh .v.RH ; | |
mem [p + 1 ].hh .v.RH = curspan ; | |
mem [p + 2 ].cint = curloop ; | |
mem [p + 3 ].cint = alignstate ; | |
mem [p + 4 ].hh .v.LH = curhead ; | |
mem [p + 4 ].hh .v.RH = curtail ; | |
mem [p + 5 ].hh .v.LH = curprehead ; | |
mem [p + 5 ].hh .v.RH = curpretail ; | |
alignptr = p ; | |
curhead = getavail () ; | |
curprehead = getavail () ; | |
} | |
void | |
popalignment ( void ) | |
{ | |
popalignment_regmem | |
halfword p ; | |
{ | |
mem [curhead ].hh .v.RH = avail ; | |
avail = curhead ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
{ | |
mem [curprehead ].hh .v.RH = avail ; | |
avail = curprehead ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
p = alignptr ; | |
curtail = mem [p + 4 ].hh .v.RH ; | |
curhead = mem [p + 4 ].hh .v.LH ; | |
curpretail = mem [p + 5 ].hh .v.RH ; | |
curprehead = mem [p + 5 ].hh .v.LH ; | |
alignstate = mem [p + 3 ].cint ; | |
curloop = mem [p + 2 ].cint ; | |
curspan = mem [p + 1 ].hh .v.RH ; | |
mem [memtop - 8 ].hh .v.RH = mem [p + 1 ].hh .v.LH ; | |
curalign = mem [p ].hh .v.LH ; | |
alignptr = mem [p ].hh .v.RH ; | |
freenode ( p , 6 ) ; | |
} | |
void | |
getpreambletoken ( void ) | |
{ | |
/* 20 */ getpreambletoken_regmem | |
lab20: gettoken () ; | |
while ( ( curchr == 1114113L ) && ( curcmd == 4 ) ) { | |
gettoken () ; | |
if ( curcmd > 102 ) | |
{ | |
expand () ; | |
gettoken () ; | |
} | |
} | |
if ( curcmd == 9 ) | |
fatalerror ( 65920L ) ; | |
if ( ( curcmd == 76 ) && ( curchr == 2252751L ) ) | |
{ | |
scanoptionalequals () ; | |
scanglue ( 2 ) ; | |
if ( eqtb [8939283L ].cint > 0 ) | |
geqdefine ( 2252751L , 119 , curval ) ; | |
else eqdefine ( 2252751L , 119 , curval ) ; | |
goto lab20 ; | |
} | |
} | |
void | |
initalign ( void ) | |
{ | |
/* 30 31 32 22 */ initalign_regmem | |
halfword savecsptr ; | |
halfword p ; | |
savecsptr = curcs ; | |
pushalignment () ; | |
alignstate = -1000000L ; | |
if ( ( curlist .modefield == 207 ) && ( ( curlist .tailfield != curlist | |
.headfield ) || ( curlist .auxfield .cint != -268435455L ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66024L ) ; | |
} | |
printesc ( 65832L ) ; | |
print ( 66315L ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66316L ; | |
helpline [1 ]= 66317L ; | |
helpline [0 ]= 66318L ; | |
} | |
error () ; | |
flushmath () ; | |
} | |
pushnest () ; | |
if ( curlist .modefield == 207 ) | |
{ | |
curlist .modefield = -1 ; | |
curlist .auxfield .cint = nest [nestptr - 2 ].auxfield .cint ; | |
} | |
else if ( curlist .modefield > 0 ) | |
curlist .modefield = - (integer) curlist .modefield ; | |
scanspec ( 6 , false ) ; | |
mem [memtop - 8 ].hh .v.RH = -268435455L ; | |
curalign = memtop - 8 ; | |
curloop = -268435455L ; | |
scannerstatus = 4 ; | |
warningindex = savecsptr ; | |
alignstate = -1000000L ; | |
while ( true ) { | |
mem [curalign ].hh .v.RH = newparamglue ( 11 ) ; | |
curalign = mem [curalign ].hh .v.RH ; | |
if ( curcmd == 5 ) | |
goto lab30 ; | |
p = memtop - 4 ; | |
mem [p ].hh .v.RH = -268435455L ; | |
while ( true ) { | |
getpreambletoken () ; | |
if ( curcmd == 6 ) | |
goto lab31 ; | |
if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == -1000000L ) ) | |
{ | |
if ( ( p == memtop - 4 ) && ( curloop == -268435455L ) && ( curcmd == | |
4 ) ) | |
curloop = curalign ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66324L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66325L ; | |
helpline [1 ]= 66326L ; | |
helpline [0 ]= 66327L ; | |
} | |
backerror () ; | |
goto lab31 ; | |
} | |
} | |
else if ( ( curcmd != 10 ) || ( p != memtop - 4 ) ) | |
{ | |
mem [p ].hh .v.RH = getavail () ; | |
p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.LH = curtok ; | |
} | |
} | |
lab31: ; | |
mem [curalign ].hh .v.RH = newnullbox () ; | |
curalign = mem [curalign ].hh .v.RH ; | |
mem [curalign ].hh .v.LH = memtop - 9 ; | |
mem [curalign + 1 ].cint = -1073741824L ; | |
mem [curalign + 3 ].cint = mem [memtop - 4 ].hh .v.RH ; | |
p = memtop - 4 ; | |
mem [p ].hh .v.RH = -268435455L ; | |
while ( true ) { | |
lab22: getpreambletoken () ; | |
if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == -1000000L ) ) | |
goto lab32 ; | |
if ( curcmd == 6 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66328L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66325L ; | |
helpline [1 ]= 66326L ; | |
helpline [0 ]= 66329L ; | |
} | |
error () ; | |
goto lab22 ; | |
} | |
mem [p ].hh .v.RH = getavail () ; | |
p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.LH = curtok ; | |
} | |
lab32: mem [p ].hh .v.RH = getavail () ; | |
p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.LH = 35797662L ; | |
mem [curalign + 2 ].cint = mem [memtop - 4 ].hh .v.RH ; | |
} | |
lab30: scannerstatus = 0 ; | |
newsavelevel ( 6 ) ; | |
if ( eqtb [2253279L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253279L ].hh .v.RH , 14 ) ; | |
alignpeek () ; | |
} | |
void | |
zinitspan ( halfword p ) | |
{ | |
initspan_regmem | |
pushnest () ; | |
if ( curlist .modefield == -104 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else { | |
curlist .auxfield .cint = -65536000L ; | |
normalparagraph () ; | |
} | |
curspan = p ; | |
} | |
void | |
initrow ( void ) | |
{ | |
initrow_regmem | |
pushnest () ; | |
curlist .modefield = ( -105 ) - curlist .modefield ; | |
if ( curlist .modefield == -104 ) | |
curlist .auxfield .hh .v.LH = 0 ; | |
else curlist .auxfield .cint = 0 ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newglue ( mem [mem [memtop - 8 ] | |
.hh .v.RH + 1 ].hh .v.LH ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = 12 ; | |
curalign = mem [mem [memtop - 8 ].hh .v.RH ].hh .v.RH ; | |
curtail = curhead ; | |
curpretail = curprehead ; | |
initspan ( curalign ) ; | |
} | |
void | |
initcol ( void ) | |
{ | |
initcol_regmem | |
mem [curalign + 5 ].hh .v.LH = curcmd ; | |
if ( curcmd == 63 ) | |
alignstate = 0 ; | |
else { | |
backinput () ; | |
begintokenlist ( mem [curalign + 3 ].cint , 1 ) ; | |
} | |
} | |
boolean | |
fincol ( void ) | |
{ | |
/* 10 */ register boolean Result; fincol_regmem | |
halfword p ; | |
halfword q, r ; | |
halfword s ; | |
halfword u ; | |
scaled w ; | |
glueord o ; | |
halfword n ; | |
if ( curalign == -268435455L ) | |
confusion ( 66330L ) ; | |
q = mem [curalign ].hh .v.RH ; | |
if ( q == -268435455L ) | |
confusion ( 66330L ) ; | |
if ( alignstate < 500000L ) | |
fatalerror ( 65920L ) ; | |
p = mem [q ].hh .v.RH ; | |
if ( ( p == -268435455L ) && ( mem [curalign + 5 ].hh .v.LH < 1114114L ) ) | |
{ | |
if ( curloop != -268435455L ) | |
{ | |
mem [q ].hh .v.RH = newnullbox () ; | |
p = mem [q ].hh .v.RH ; | |
mem [p ].hh .v.LH = memtop - 9 ; | |
mem [p + 1 ].cint = -1073741824L ; | |
curloop = mem [curloop ].hh .v.RH ; | |
q = memtop - 4 ; | |
r = mem [curloop + 3 ].cint ; | |
while ( r != -268435455L ) { | |
mem [q ].hh .v.RH = getavail () ; | |
q = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.LH = mem [r ].hh .v.LH ; | |
r = mem [r ].hh .v.RH ; | |
} | |
mem [q ].hh .v.RH = -268435455L ; | |
mem [p + 3 ].cint = mem [memtop - 4 ].hh .v.RH ; | |
q = memtop - 4 ; | |
r = mem [curloop + 2 ].cint ; | |
while ( r != -268435455L ) { | |
mem [q ].hh .v.RH = getavail () ; | |
q = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.LH = mem [r ].hh .v.LH ; | |
r = mem [r ].hh .v.RH ; | |
} | |
mem [q ].hh .v.RH = -268435455L ; | |
mem [p + 2 ].cint = mem [memtop - 4 ].hh .v.RH ; | |
curloop = mem [curloop ].hh .v.RH ; | |
mem [p ].hh .v.RH = newglue ( mem [curloop + 1 ].hh .v.LH ) ; | |
mem [mem [p ].hh .v.RH ].hh.b1 = 12 ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66331L ) ; | |
} | |
printesc ( 66320L ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66332L ; | |
helpline [1 ]= 66333L ; | |
helpline [0 ]= 66334L ; | |
} | |
mem [curalign + 5 ].hh .v.LH = 1114114L ; | |
error () ; | |
} | |
} | |
if ( mem [curalign + 5 ].hh .v.LH != 1114113L ) | |
{ | |
unsave () ; | |
newsavelevel ( 6 ) ; | |
{ | |
if ( curlist .modefield == -104 ) | |
{ | |
adjusttail = curtail ; | |
preadjusttail = curpretail ; | |
u = hpack ( mem [curlist .headfield ].hh .v.RH , 0 , 1 ) ; | |
w = mem [u + 1 ].cint ; | |
curtail = adjusttail ; | |
adjusttail = -268435455L ; | |
curpretail = preadjusttail ; | |
preadjusttail = -268435455L ; | |
} | |
else { | |
u = vpackage ( mem [curlist .headfield ].hh .v.RH , 0 , 1 , 0 ) ; | |
w = mem [u + 3 ].cint ; | |
} | |
n = 0 ; | |
if ( curspan != curalign ) | |
{ | |
q = curspan ; | |
do { | |
incr ( n ) ; | |
q = mem [mem [q ].hh .v.RH ].hh .v.RH ; | |
} while ( ! ( q == curalign ) ) ; | |
if ( n > 65535L ) | |
confusion ( 66335L ) ; | |
q = curspan ; | |
while ( mem [mem [q ].hh .v.LH ].hh .v.RH < n ) q = mem [q ].hh | |
.v.LH ; | |
if ( mem [mem [q ].hh .v.LH ].hh .v.RH > n ) | |
{ | |
s = getnode ( 2 ) ; | |
mem [s ].hh .v.LH = mem [q ].hh .v.LH ; | |
mem [s ].hh .v.RH = n ; | |
mem [q ].hh .v.LH = s ; | |
mem [s + 1 ].cint = w ; | |
} | |
else if ( mem [mem [q ].hh .v.LH + 1 ].cint < w ) | |
mem [mem [q ].hh .v.LH + 1 ].cint = w ; | |
} | |
else if ( w > mem [curalign + 1 ].cint ) | |
mem [curalign + 1 ].cint = w ; | |
mem [u ].hh.b0 = 13 ; | |
mem [u ].hh.b1 = n ; | |
if ( totalstretch [3 ]!= 0 ) | |
o = 3 ; | |
else if ( totalstretch [2 ]!= 0 ) | |
o = 2 ; | |
else if ( totalstretch [1 ]!= 0 ) | |
o = 1 ; | |
else o = 0 ; | |
mem [u + 5 ].hh.b1 = o ; | |
mem [u + 6 ].cint = totalstretch [o ]; | |
if ( totalshrink [3 ]!= 0 ) | |
o = 3 ; | |
else if ( totalshrink [2 ]!= 0 ) | |
o = 2 ; | |
else if ( totalshrink [1 ]!= 0 ) | |
o = 1 ; | |
else o = 0 ; | |
mem [u + 5 ].hh.b0 = o ; | |
mem [u + 4 ].cint = totalshrink [o ]; | |
popnest () ; | |
mem [curlist .tailfield ].hh .v.RH = u ; | |
curlist .tailfield = u ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newglue ( mem [mem [curalign ] | |
.hh .v.RH + 1 ].hh .v.LH ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = 12 ; | |
if ( mem [curalign + 5 ].hh .v.LH >= 1114114L ) | |
{ | |
Result = true ; | |
return Result ; | |
} | |
initspan ( p ) ; | |
} | |
alignstate = 1000000L ; | |
do { | |
getxorprotected () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
curalign = p ; | |
initcol () ; | |
Result = false ; | |
return Result ; | |
} | |
void | |
finrow ( void ) | |
{ | |
finrow_regmem | |
halfword p ; | |
if ( curlist .modefield == -104 ) | |
{ | |
p = hpack ( mem [curlist .headfield ].hh .v.RH , 0 , 1 ) ; | |
popnest () ; | |
if ( curprehead != curpretail ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [curprehead ].hh .v.RH ; | |
curlist .tailfield = curpretail ; | |
} | |
appendtovlist ( p ) ; | |
if ( curhead != curtail ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [curhead ].hh .v.RH ; | |
curlist .tailfield = curtail ; | |
} | |
} | |
else { | |
p = vpackage ( mem [curlist .headfield ].hh .v.RH , 0 , 1 , 1073741823L | |
) ; | |
popnest () ; | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = p ; | |
curlist .auxfield .hh .v.LH = 1000 ; | |
} | |
mem [p ].hh.b0 = 13 ; | |
mem [p + 6 ].cint = 0 ; | |
if ( eqtb [2253279L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253279L ].hh .v.RH , 14 ) ; | |
alignpeek () ; | |
} | |
void | |
finalign ( void ) | |
{ | |
finalign_regmem | |
halfword p, q, r, s, u, v ; | |
scaled t, w ; | |
scaled o ; | |
halfword n ; | |
scaled rulesave ; | |
memoryword auxsave ; | |
if ( curgroup != 6 ) | |
confusion ( 66336L ) ; | |
unsave () ; | |
if ( curgroup != 6 ) | |
confusion ( 66337L ) ; | |
unsave () ; | |
if ( nest [nestptr - 1 ].modefield == 207 ) | |
o = eqtb [10053708L ].cint ; | |
else o = 0 ; | |
q = mem [mem [memtop - 8 ].hh .v.RH ].hh .v.RH ; | |
do { | |
flushlist ( mem [q + 3 ].cint ) ; | |
flushlist ( mem [q + 2 ].cint ) ; | |
p = mem [mem [q ].hh .v.RH ].hh .v.RH ; | |
if ( mem [q + 1 ].cint == -1073741824L ) | |
{ | |
mem [q + 1 ].cint = 0 ; | |
r = mem [q ].hh .v.RH ; | |
s = mem [r + 1 ].hh .v.LH ; | |
if ( s != membot ) | |
{ | |
incr ( mem [membot ].hh .v.RH ) ; | |
deleteglueref ( s ) ; | |
mem [r + 1 ].hh .v.LH = membot ; | |
} | |
} | |
if ( mem [q ].hh .v.LH != memtop - 9 ) | |
{ | |
t = mem [q + 1 ].cint + mem [mem [mem [q ].hh .v.RH + 1 ].hh | |
.v.LH + 1 ].cint ; | |
r = mem [q ].hh .v.LH ; | |
s = memtop - 9 ; | |
mem [s ].hh .v.LH = p ; | |
n = 1 ; | |
do { | |
mem [r + 1 ].cint = mem [r + 1 ].cint - t ; | |
u = mem [r ].hh .v.LH ; | |
while ( mem [r ].hh .v.RH > n ) { | |
s = mem [s ].hh .v.LH ; | |
n = mem [mem [s ].hh .v.LH ].hh .v.RH + 1 ; | |
} | |
if ( mem [r ].hh .v.RH < n ) | |
{ | |
mem [r ].hh .v.LH = mem [s ].hh .v.LH ; | |
mem [s ].hh .v.LH = r ; | |
decr ( mem [r ].hh .v.RH ) ; | |
s = r ; | |
} | |
else { | |
if ( mem [r + 1 ].cint > mem [mem [s ].hh .v.LH + 1 ].cint ) | |
mem [mem [s ].hh .v.LH + 1 ].cint = mem [r + 1 ].cint ; | |
freenode ( r , 2 ) ; | |
} | |
r = u ; | |
} while ( ! ( r == memtop - 9 ) ) ; | |
} | |
mem [q ].hh.b0 = 13 ; | |
mem [q ].hh.b1 = 0 ; | |
mem [q + 3 ].cint = 0 ; | |
mem [q + 2 ].cint = 0 ; | |
mem [q + 5 ].hh.b1 = 0 ; | |
mem [q + 5 ].hh.b0 = 0 ; | |
mem [q + 6 ].cint = 0 ; | |
mem [q + 4 ].cint = 0 ; | |
q = p ; | |
} while ( ! ( q == -268435455L ) ) ; | |
saveptr = saveptr - 2 ; | |
packbeginline = - (integer) curlist .mlfield ; | |
if ( curlist .modefield == -1 ) | |
{ | |
rulesave = eqtb [10053709L ].cint ; | |
eqtb [10053709L ].cint = 0 ; | |
p = hpack ( mem [memtop - 8 ].hh .v.RH , savestack [saveptr + 1 ].cint | |
, savestack [saveptr + 0 ].cint ) ; | |
eqtb [10053709L ].cint = rulesave ; | |
} | |
else { | |
q = mem [mem [memtop - 8 ].hh .v.RH ].hh .v.RH ; | |
do { | |
mem [q + 3 ].cint = mem [q + 1 ].cint ; | |
mem [q + 1 ].cint = 0 ; | |
q = mem [mem [q ].hh .v.RH ].hh .v.RH ; | |
} while ( ! ( q == -268435455L ) ) ; | |
p = vpackage ( mem [memtop - 8 ].hh .v.RH , savestack [saveptr + 1 ] | |
.cint , savestack [saveptr + 0 ].cint , 1073741823L ) ; | |
q = mem [mem [memtop - 8 ].hh .v.RH ].hh .v.RH ; | |
do { | |
mem [q + 1 ].cint = mem [q + 3 ].cint ; | |
mem [q + 3 ].cint = 0 ; | |
q = mem [mem [q ].hh .v.RH ].hh .v.RH ; | |
} while ( ! ( q == -268435455L ) ) ; | |
} | |
packbeginline = 0 ; | |
q = mem [curlist .headfield ].hh .v.RH ; | |
s = curlist .headfield ; | |
while ( q != -268435455L ) { | |
if ( ! ( q >= himemmin ) ) { | |
if ( mem [q ].hh.b0 == 13 ) | |
{ | |
if ( curlist .modefield == -1 ) | |
{ | |
mem [q ].hh.b0 = 0 ; | |
mem [q + 1 ].cint = mem [p + 1 ].cint ; | |
if ( nest [nestptr - 1 ].modefield == 207 ) | |
mem [q ].hh.b1 = 2 ; | |
} | |
else { | |
mem [q ].hh.b0 = 1 ; | |
mem [q + 3 ].cint = mem [p + 3 ].cint ; | |
} | |
mem [q + 5 ].hh.b1 = mem [p + 5 ].hh.b1 ; | |
mem [q + 5 ].hh.b0 = mem [p + 5 ].hh.b0 ; | |
mem [q + 6 ].gr = mem [p + 6 ].gr ; | |
mem [q + 4 ].cint = o ; | |
r = mem [mem [q + 5 ].hh .v.RH ].hh .v.RH ; | |
s = mem [mem [p + 5 ].hh .v.RH ].hh .v.RH ; | |
do { | |
n = mem [r ].hh.b1 ; | |
t = mem [s + 1 ].cint ; | |
w = t ; | |
u = memtop - 4 ; | |
mem [r ].hh.b1 = 0 ; | |
while ( n > 0 ) { | |
decr ( n ) ; | |
s = mem [s ].hh .v.RH ; | |
v = mem [s + 1 ].hh .v.LH ; | |
mem [u ].hh .v.RH = newglue ( v ) ; | |
u = mem [u ].hh .v.RH ; | |
mem [u ].hh.b1 = 12 ; | |
t = t + mem [v + 1 ].cint ; | |
if ( mem [p + 5 ].hh.b0 == 1 ) | |
{ | |
if ( mem [v ].hh.b0 == mem [p + 5 ].hh.b1 ) | |
t = t + round ( mem [p + 6 ].gr * mem [v + 2 ].cint ) ; | |
} | |
else if ( mem [p + 5 ].hh.b0 == 2 ) | |
{ | |
if ( mem [v ].hh.b1 == mem [p + 5 ].hh.b1 ) | |
t = t - round ( mem [p + 6 ].gr * mem [v + 3 ].cint ) ; | |
} | |
s = mem [s ].hh .v.RH ; | |
mem [u ].hh .v.RH = newnullbox () ; | |
u = mem [u ].hh .v.RH ; | |
t = t + mem [s + 1 ].cint ; | |
if ( curlist .modefield == -1 ) | |
mem [u + 1 ].cint = mem [s + 1 ].cint ; | |
else { | |
mem [u ].hh.b0 = 1 ; | |
mem [u + 3 ].cint = mem [s + 1 ].cint ; | |
} | |
} | |
if ( curlist .modefield == -1 ) | |
{ | |
mem [r + 3 ].cint = mem [q + 3 ].cint ; | |
mem [r + 2 ].cint = mem [q + 2 ].cint ; | |
if ( t == mem [r + 1 ].cint ) | |
{ | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 5 ].hh.b1 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
} | |
else if ( t > mem [r + 1 ].cint ) | |
{ | |
mem [r + 5 ].hh.b0 = 1 ; | |
if ( mem [r + 6 ].cint == 0 ) | |
mem [r + 6 ].gr = 0.0 ; | |
else mem [r + 6 ].gr = ( t - mem [r + 1 ].cint ) / ((double) | |
mem [r + 6 ].cint ) ; | |
} | |
else { | |
mem [r + 5 ].hh.b1 = mem [r + 5 ].hh.b0 ; | |
mem [r + 5 ].hh.b0 = 2 ; | |
if ( mem [r + 4 ].cint == 0 ) | |
mem [r + 6 ].gr = 0.0 ; | |
else if ( ( mem [r + 5 ].hh.b1 == 0 ) && ( mem [r + 1 ].cint | |
- t > mem [r + 4 ].cint ) ) | |
mem [r + 6 ].gr = 1.0 ; | |
else mem [r + 6 ].gr = ( mem [r + 1 ].cint - t ) / ((double) | |
mem [r + 4 ].cint ) ; | |
} | |
mem [r + 1 ].cint = w ; | |
mem [r ].hh.b0 = 0 ; | |
} | |
else { | |
mem [r + 1 ].cint = mem [q + 1 ].cint ; | |
if ( t == mem [r + 3 ].cint ) | |
{ | |
mem [r + 5 ].hh.b0 = 0 ; | |
mem [r + 5 ].hh.b1 = 0 ; | |
mem [r + 6 ].gr = 0.0 ; | |
} | |
else if ( t > mem [r + 3 ].cint ) | |
{ | |
mem [r + 5 ].hh.b0 = 1 ; | |
if ( mem [r + 6 ].cint == 0 ) | |
mem [r + 6 ].gr = 0.0 ; | |
else mem [r + 6 ].gr = ( t - mem [r + 3 ].cint ) / ((double) | |
mem [r + 6 ].cint ) ; | |
} | |
else { | |
mem [r + 5 ].hh.b1 = mem [r + 5 ].hh.b0 ; | |
mem [r + 5 ].hh.b0 = 2 ; | |
if ( mem [r + 4 ].cint == 0 ) | |
mem [r + 6 ].gr = 0.0 ; | |
else if ( ( mem [r + 5 ].hh.b1 == 0 ) && ( mem [r + 3 ].cint | |
- t > mem [r + 4 ].cint ) ) | |
mem [r + 6 ].gr = 1.0 ; | |
else mem [r + 6 ].gr = ( mem [r + 3 ].cint - t ) / ((double) | |
mem [r + 4 ].cint ) ; | |
} | |
mem [r + 3 ].cint = w ; | |
mem [r ].hh.b0 = 1 ; | |
} | |
mem [r + 4 ].cint = 0 ; | |
if ( u != memtop - 4 ) | |
{ | |
mem [u ].hh .v.RH = mem [r ].hh .v.RH ; | |
mem [r ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
r = u ; | |
} | |
r = mem [mem [r ].hh .v.RH ].hh .v.RH ; | |
s = mem [mem [s ].hh .v.RH ].hh .v.RH ; | |
} while ( ! ( r == -268435455L ) ) ; | |
} | |
else if ( mem [q ].hh.b0 == 2 ) | |
{ | |
if ( ( mem [q + 1 ].cint == -1073741824L ) ) | |
mem [q + 1 ].cint = mem [p + 1 ].cint ; | |
if ( ( mem [q + 3 ].cint == -1073741824L ) ) | |
mem [q + 3 ].cint = mem [p + 3 ].cint ; | |
if ( ( mem [q + 2 ].cint == -1073741824L ) ) | |
mem [q + 2 ].cint = mem [p + 2 ].cint ; | |
if ( o != 0 ) | |
{ | |
r = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = -268435455L ; | |
q = hpack ( q , 0 , 1 ) ; | |
mem [q + 4 ].cint = o ; | |
mem [q ].hh .v.RH = r ; | |
mem [s ].hh .v.RH = q ; | |
} | |
} | |
} | |
s = q ; | |
q = mem [q ].hh .v.RH ; | |
} | |
flushnodelist ( p ) ; | |
popalignment () ; | |
auxsave = curlist .auxfield ; | |
p = mem [curlist .headfield ].hh .v.RH ; | |
q = curlist .tailfield ; | |
popnest () ; | |
if ( curlist .modefield == 207 ) | |
{ | |
doassignments () ; | |
if ( curcmd != 3 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66602L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66316L ; | |
helpline [0 ]= 66317L ; | |
} | |
backerror () ; | |
} | |
else { | |
getxtoken () ; | |
if ( curcmd != 3 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66598L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66599L ; | |
helpline [0 ]= 66600L ; | |
} | |
backerror () ; | |
} | |
} | |
flushnodelist ( curlist .eTeXauxfield ) ; | |
popnest () ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( eqtb [8939251L ] | |
.cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( 3 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
if ( p != -268435455L ) | |
curlist .tailfield = q ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( eqtb [8939252L ] | |
.cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( 4 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
curlist .auxfield .cint = auxsave .cint ; | |
resumeafterdisplay () ; | |
} | |
else { | |
curlist .auxfield = auxsave ; | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
if ( p != -268435455L ) | |
curlist .tailfield = q ; | |
if ( curlist .modefield == 1 ) | |
buildpage () ; | |
} | |
} | |
void | |
alignpeek ( void ) | |
{ | |
/* 20 */ alignpeek_regmem | |
lab20: alignstate = 1000000L ; | |
do { | |
getxorprotected () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curcmd == 34 ) | |
{ | |
scanleftbrace () ; | |
newsavelevel ( 7 ) ; | |
if ( curlist .modefield == -1 ) | |
normalparagraph () ; | |
} | |
else if ( curcmd == 2 ) | |
finalign () ; | |
else if ( ( curcmd == 5 ) && ( curchr == 1114115L ) ) | |
goto lab20 ; | |
else { | |
initrow () ; | |
initcol () ; | |
} | |
} | |
halfword | |
zfiniteshrink ( halfword p ) | |
{ | |
register halfword Result; finiteshrink_regmem | |
halfword q ; | |
if ( noshrinkerroryet ) | |
{ | |
noshrinkerroryet = false ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
enddiagnostic ( true ) ; | |
#endif /* STAT */ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66338L ) ; | |
} | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66339L ; | |
helpline [3 ]= 66340L ; | |
helpline [2 ]= 66341L ; | |
helpline [1 ]= 66342L ; | |
helpline [0 ]= 66343L ; | |
} | |
error () ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
begindiagnostic () ; | |
#endif /* STAT */ | |
} | |
q = newspec ( p ) ; | |
mem [q ].hh.b1 = 0 ; | |
deleteglueref ( p ) ; | |
Result = q ; | |
return Result ; | |
} | |
void | |
zpushnode ( halfword p ) | |
{ | |
pushnode_regmem | |
if ( hliststacklevel > 512 ) | |
pdferror ( 66344L , 66345L ) ; | |
hliststack [hliststacklevel ]= p ; | |
hliststacklevel = hliststacklevel + 1 ; | |
} | |
halfword | |
popnode ( void ) | |
{ | |
register halfword Result; popnode_regmem | |
hliststacklevel = hliststacklevel - 1 ; | |
if ( hliststacklevel < 0 ) | |
pdferror ( 66346L , 66347L ) ; | |
Result = hliststack [hliststacklevel ]; | |
return Result ; | |
} | |
halfword | |
zfindprotcharleft ( halfword l , boolean d ) | |
{ | |
register halfword Result; findprotcharleft_regmem | |
halfword t ; | |
boolean run ; | |
if ( ( mem [l ].hh .v.RH != -268435455L ) && ( mem [l ].hh.b0 == 0 ) && | |
( mem [l + 1 ].cint == 0 ) && ( mem [l + 3 ].cint == 0 ) && ( mem [l + | |
2 ].cint == 0 ) && ( mem [l + 5 ].hh .v.RH == -268435455L ) ) | |
l = mem [l ].hh .v.RH ; | |
else if ( d ) | |
while ( ( mem [l ].hh .v.RH != -268435455L ) && ( ! ( ( l >= himemmin ) || | |
( mem [l ].hh.b0 < 9 ) ) ) ) l = mem [l ].hh .v.RH ; | |
hliststacklevel = 0 ; | |
run = true ; | |
do { | |
t = l ; | |
while ( run && ( mem [l ].hh.b0 == 0 ) && ( mem [l + 5 ].hh .v.RH != | |
-268435455L ) ) { | |
pushnode ( l ) ; | |
l = mem [l + 5 ].hh .v.RH ; | |
} | |
while ( run && ( ! ( l >= himemmin ) && ( ( mem [l ].hh.b0 == 3 ) || ( | |
mem [l ].hh.b0 == 4 ) || ( mem [l ].hh.b0 == 5 ) || ( mem [l ].hh.b0 | |
== 12 ) || ( ( mem [l ].hh.b0 == 7 ) && ( mem [l + 1 ].hh .v.LH == | |
-268435455L ) && ( mem [l + 1 ].hh .v.RH == -268435455L ) && ( mem [l ] | |
.hh.b1 == 0 ) ) || ( ( mem [l ].hh.b0 == 9 ) && ( mem [l + 1 ].cint == | |
0 ) ) || ( ( mem [l ].hh.b0 == 11 ) && ( ( mem [l + 1 ].cint == 0 ) || | |
( mem [l ].hh.b1 == 0 ) ) ) || ( ( mem [l ].hh.b0 == 10 ) && ( mem [l | |
+ 1 ].hh .v.LH == membot ) ) || ( ( mem [l ].hh.b0 == 0 ) && ( mem [l | |
+ 1 ].cint == 0 ) && ( mem [l + 3 ].cint == 0 ) && ( mem [l + 2 ] | |
.cint == 0 ) && ( mem [l + 5 ].hh .v.RH == -268435455L ) ) ) ) ) { | |
while ( ( mem [l ].hh .v.RH == -268435455L ) && ( hliststacklevel > 0 | |
) ) { | |
l = popnode () ; | |
} | |
if ( mem [l ].hh .v.RH != -268435455L ) | |
l = mem [l ].hh .v.RH ; | |
else if ( hliststacklevel == 0 ) | |
run = false ; | |
} | |
} while ( ! ( t == l ) ) ; | |
Result = l ; | |
return Result ; | |
} | |
halfword | |
zfindprotcharright ( halfword l , halfword r ) | |
{ | |
register halfword Result; findprotcharright_regmem | |
halfword t ; | |
boolean run ; | |
Result = -268435455L ; | |
if ( r == -268435455L ) | |
return Result ; | |
hliststacklevel = 0 ; | |
run = true ; | |
do { | |
t = r ; | |
while ( run && ( mem [r ].hh.b0 == 0 ) && ( mem [r + 5 ].hh .v.RH != | |
-268435455L ) ) { | |
pushnode ( l ) ; | |
pushnode ( r ) ; | |
l = mem [r + 5 ].hh .v.RH ; | |
r = l ; | |
while ( mem [r ].hh .v.RH != -268435455L ) r = mem [r ].hh .v.RH ; | |
} | |
while ( run && ( ! ( r >= himemmin ) && ( ( mem [r ].hh.b0 == 3 ) || ( | |
mem [r ].hh.b0 == 4 ) || ( mem [r ].hh.b0 == 5 ) || ( mem [r ].hh.b0 | |
== 12 ) || ( ( mem [r ].hh.b0 == 7 ) && ( mem [r + 1 ].hh .v.LH == | |
-268435455L ) && ( mem [r + 1 ].hh .v.RH == -268435455L ) && ( mem [r ] | |
.hh.b1 == 0 ) ) || ( ( mem [r ].hh.b0 == 9 ) && ( mem [r + 1 ].cint == | |
0 ) ) || ( ( mem [r ].hh.b0 == 11 ) && ( ( mem [r + 1 ].cint == 0 ) || | |
( mem [r ].hh.b1 == 0 ) ) ) || ( ( mem [r ].hh.b0 == 10 ) && ( mem [r | |
+ 1 ].hh .v.LH == membot ) ) || ( ( mem [r ].hh.b0 == 0 ) && ( mem [r | |
+ 1 ].cint == 0 ) && ( mem [r + 3 ].cint == 0 ) && ( mem [r + 2 ] | |
.cint == 0 ) && ( mem [r + 5 ].hh .v.RH == -268435455L ) ) ) ) ) { | |
while ( ( r == l ) && ( hliststacklevel > 0 ) ) { | |
r = popnode () ; | |
l = popnode () ; | |
} | |
if ( ( r != l ) && ( r != -268435455L ) ) | |
r = prevrightmost ( l , r ) ; | |
else if ( ( r == l ) && ( hliststacklevel == 0 ) ) | |
run = false ; | |
} | |
} while ( ! ( t == r ) ) ; | |
Result = r ; | |
return Result ; | |
} | |
scaled | |
ztotalpw ( halfword q , halfword p ) | |
{ | |
register scaled Result; totalpw_regmem | |
halfword l, r ; | |
integer n ; | |
if ( mem [q + 1 ].hh .v.RH == -268435455L ) | |
l = firstp ; | |
else l = mem [mem [q + 1 ].hh .v.RH + 1 ].hh .v.RH ; | |
r = prevrightmost ( globalprevp , p ) ; | |
if ( ( p != -268435455L ) && ( mem [p ].hh.b0 == 7 ) && ( mem [p + 1 ] | |
.hh .v.LH != -268435455L ) ) | |
{ | |
r = mem [p + 1 ].hh .v.LH ; | |
while ( mem [r ].hh .v.RH != -268435455L ) r = mem [r ].hh .v.RH ; | |
} | |
else r = findprotcharright ( l , r ) ; | |
if ( ( l != -268435455L ) && ( mem [l ].hh.b0 == 7 ) ) | |
{ | |
if ( mem [l + 1 ].hh .v.RH != -268435455L ) | |
{ | |
l = mem [l + 1 ].hh .v.RH ; | |
goto lab30 ; | |
} | |
else { | |
n = mem [l ].hh.b1 ; | |
l = mem [l ].hh .v.RH ; | |
while ( n > 0 ) { | |
if ( mem [l ].hh .v.RH != -268435455L ) | |
l = mem [l ].hh .v.RH ; | |
decr ( n ) ; | |
} | |
} | |
} | |
l = findprotcharleft ( l , true ) ; | |
lab30: Result = charpw ( l , 0 ) + charpw ( r , 1 ) ; | |
return Result ; | |
} | |
void | |
ztrybreak ( integer pi , smallnumber breaktype ) | |
{ | |
/* 10 30 31 22 60 40 45 */ trybreak_regmem | |
halfword r ; | |
halfword prevr ; | |
halfword oldl ; | |
boolean nobreakyet ; | |
halfword prevprevr ; | |
halfword s ; | |
halfword q ; | |
halfword v ; | |
integer t ; | |
internalfontnumber f ; | |
halfword l ; | |
boolean noderstaysactive ; | |
scaled linewidth ; | |
unsigned char fitclass ; | |
halfword b ; | |
integer d ; | |
boolean artificialdemerits ; | |
halfword savelink ; | |
scaled shortfall ; | |
scaled g ; | |
if ( abs ( pi ) >= 10000 ) { | |
if ( pi > 0 ) | |
goto lab10 ; | |
else pi = -10000 ; | |
} | |
nobreakyet = true ; | |
prevr = memtop - 7 ; | |
oldl = 0 ; | |
curactivewidth [1 ]= activewidth [1 ]; | |
curactivewidth [2 ]= activewidth [2 ]; | |
curactivewidth [3 ]= activewidth [3 ]; | |
curactivewidth [4 ]= activewidth [4 ]; | |
curactivewidth [5 ]= activewidth [5 ]; | |
curactivewidth [6 ]= activewidth [6 ]; | |
while ( true ) { | |
lab22: r = mem [prevr ].hh .v.RH ; | |
if ( mem [r ].hh.b0 == 2 ) | |
{ | |
curactivewidth [1 ]= curactivewidth [1 ]+ mem [r + 1 ].cint ; | |
curactivewidth [2 ]= curactivewidth [2 ]+ mem [r + 2 ].cint ; | |
curactivewidth [3 ]= curactivewidth [3 ]+ mem [r + 3 ].cint ; | |
curactivewidth [4 ]= curactivewidth [4 ]+ mem [r + 4 ].cint ; | |
curactivewidth [5 ]= curactivewidth [5 ]+ mem [r + 5 ].cint ; | |
curactivewidth [6 ]= curactivewidth [6 ]+ mem [r + 6 ].cint ; | |
prevprevr = prevr ; | |
prevr = r ; | |
goto lab22 ; | |
} | |
{ | |
l = mem [r + 1 ].hh .v.LH ; | |
if ( l > oldl ) | |
{ | |
if ( ( minimumdemerits < 1073741823L ) && ( ( oldl != easyline ) || ( | |
r == memtop - 7 ) ) ) | |
{ | |
if ( nobreakyet ) | |
{ | |
nobreakyet = false ; | |
breakwidth [1 ]= background [1 ]; | |
breakwidth [2 ]= background [2 ]; | |
breakwidth [3 ]= background [3 ]; | |
breakwidth [4 ]= background [4 ]; | |
breakwidth [5 ]= background [5 ]; | |
breakwidth [6 ]= background [6 ]; | |
s = curp ; | |
if ( breaktype > 0 ) { | |
if ( curp != -268435455L ) | |
{ | |
t = mem [curp ].hh.b1 ; | |
v = curp ; | |
s = mem [curp + 1 ].hh .v.RH ; | |
while ( t > 0 ) { | |
decr ( t ) ; | |
v = mem [v ].hh .v.RH ; | |
if ( ( v >= himemmin ) ) | |
{ | |
f = mem [v ].hh.b0 ; | |
breakwidth [1 ]= breakwidth [1 ]- fontinfo [widthbase | |
[f ]+ fontinfo [charbase [f ]+ effectivechar ( true , | |
f , mem [v ].hh.b1 ) ].qqqq .b0 ].cint ; | |
} | |
else switch ( mem [v ].hh.b0 ) | |
{case 6 : | |
{ | |
f = mem [v + 1 ].hh.b0 ; | |
xtxligaturepresent = true ; | |
breakwidth [1 ]= breakwidth [1 ]- fontinfo [ | |
widthbase [f ]+ fontinfo [charbase [f ]+ | |
effectivechar ( true , f , mem [v + 1 ].hh.b1 ) ] | |
.qqqq .b0 ].cint ; | |
} | |
break ; | |
case 0 : | |
case 1 : | |
case 2 : | |
case 11 : | |
breakwidth [1 ]= breakwidth [1 ]- mem [v + 1 ].cint | |
; | |
break ; | |
case 8 : | |
if ( ( ( ( mem [v ].hh.b1 >= 40 ) && ( mem [v ].hh.b1 | |
<= 41 ) ) ) || ( mem [v ].hh.b1 == 42 ) || ( mem [v ] | |
.hh.b1 == 43 ) || ( mem [v ].hh.b1 == 44 ) ) | |
breakwidth [1 ]= breakwidth [1 ]- mem [v + 1 ].cint | |
; | |
else confusion ( 66348L ) ; | |
break ; | |
default: | |
confusion ( 66349L ) ; | |
break ; | |
} | |
} | |
while ( s != -268435455L ) { | |
if ( ( s >= himemmin ) ) | |
{ | |
f = mem [s ].hh.b0 ; | |
breakwidth [1 ]= breakwidth [1 ]+ fontinfo [widthbase | |
[f ]+ fontinfo [charbase [f ]+ effectivechar ( true , | |
f , mem [s ].hh.b1 ) ].qqqq .b0 ].cint ; | |
} | |
else switch ( mem [s ].hh.b0 ) | |
{case 6 : | |
{ | |
f = mem [s + 1 ].hh.b0 ; | |
xtxligaturepresent = true ; | |
breakwidth [1 ]= breakwidth [1 ]+ fontinfo [ | |
widthbase [f ]+ fontinfo [charbase [f ]+ | |
effectivechar ( true , f , mem [s + 1 ].hh.b1 ) ] | |
.qqqq .b0 ].cint ; | |
} | |
break ; | |
case 0 : | |
case 1 : | |
case 2 : | |
case 11 : | |
breakwidth [1 ]= breakwidth [1 ]+ mem [s + 1 ].cint | |
; | |
break ; | |
case 8 : | |
if ( ( ( ( mem [s ].hh.b1 >= 40 ) && ( mem [s ].hh.b1 | |
<= 41 ) ) ) || ( mem [s ].hh.b1 == 42 ) || ( mem [s ] | |
.hh.b1 == 43 ) || ( mem [s ].hh.b1 == 44 ) ) | |
breakwidth [1 ]= breakwidth [1 ]+ mem [s + 1 ].cint | |
; | |
else confusion ( 66350L ) ; | |
break ; | |
default: | |
confusion ( 66351L ) ; | |
break ; | |
} | |
s = mem [s ].hh .v.RH ; | |
} | |
breakwidth [1 ]= breakwidth [1 ]+ discwidth ; | |
if ( mem [curp + 1 ].hh .v.RH == -268435455L ) | |
s = mem [v ].hh .v.RH ; | |
} | |
} | |
while ( s != -268435455L ) { | |
if ( ( s >= himemmin ) ) | |
goto lab30 ; | |
switch ( mem [s ].hh.b0 ) | |
{case 10 : | |
{ | |
v = mem [s + 1 ].hh .v.LH ; | |
breakwidth [1 ]= breakwidth [1 ]- mem [v + 1 ].cint ; | |
breakwidth [2 + mem [v ].hh.b0 ]= breakwidth [2 + mem [ | |
v ].hh.b0 ]- mem [v + 2 ].cint ; | |
breakwidth [6 ]= breakwidth [6 ]- mem [v + 3 ].cint ; | |
} | |
break ; | |
case 12 : | |
; | |
break ; | |
case 9 : | |
breakwidth [1 ]= breakwidth [1 ]- mem [s + 1 ].cint ; | |
break ; | |
case 11 : | |
if ( mem [s ].hh.b1 != 1 ) | |
goto lab30 ; | |
else breakwidth [1 ]= breakwidth [1 ]- mem [s + 1 ].cint | |
; | |
break ; | |
default: | |
goto lab30 ; | |
break ; | |
} | |
s = mem [s ].hh .v.RH ; | |
} | |
lab30: ; | |
} | |
if ( mem [prevr ].hh.b0 == 2 ) | |
{ | |
mem [prevr + 1 ].cint = mem [prevr + 1 ].cint - curactivewidth | |
[1 ]+ breakwidth [1 ]; | |
mem [prevr + 2 ].cint = mem [prevr + 2 ].cint - curactivewidth | |
[2 ]+ breakwidth [2 ]; | |
mem [prevr + 3 ].cint = mem [prevr + 3 ].cint - curactivewidth | |
[3 ]+ breakwidth [3 ]; | |
mem [prevr + 4 ].cint = mem [prevr + 4 ].cint - curactivewidth | |
[4 ]+ breakwidth [4 ]; | |
mem [prevr + 5 ].cint = mem [prevr + 5 ].cint - curactivewidth | |
[5 ]+ breakwidth [5 ]; | |
mem [prevr + 6 ].cint = mem [prevr + 6 ].cint - curactivewidth | |
[6 ]+ breakwidth [6 ]; | |
} | |
else if ( prevr == memtop - 7 ) | |
{ | |
activewidth [1 ]= breakwidth [1 ]; | |
activewidth [2 ]= breakwidth [2 ]; | |
activewidth [3 ]= breakwidth [3 ]; | |
activewidth [4 ]= breakwidth [4 ]; | |
activewidth [5 ]= breakwidth [5 ]; | |
activewidth [6 ]= breakwidth [6 ]; | |
} | |
else { | |
q = getnode ( 7 ) ; | |
mem [q ].hh .v.RH = r ; | |
mem [q ].hh.b0 = 2 ; | |
mem [q ].hh.b1 = 0 ; | |
mem [q + 1 ].cint = breakwidth [1 ]- curactivewidth [1 ]; | |
mem [q + 2 ].cint = breakwidth [2 ]- curactivewidth [2 ]; | |
mem [q + 3 ].cint = breakwidth [3 ]- curactivewidth [3 ]; | |
mem [q + 4 ].cint = breakwidth [4 ]- curactivewidth [4 ]; | |
mem [q + 5 ].cint = breakwidth [5 ]- curactivewidth [5 ]; | |
mem [q + 6 ].cint = breakwidth [6 ]- curactivewidth [6 ]; | |
mem [prevr ].hh .v.RH = q ; | |
prevprevr = prevr ; | |
prevr = q ; | |
} | |
if ( abs ( eqtb [8939256L ].cint ) >= 1073741823L - | |
minimumdemerits ) | |
minimumdemerits = 1073741822L ; | |
else minimumdemerits = minimumdemerits + abs ( eqtb [8939256L ] | |
.cint ) ; | |
{register integer for_end; fitclass = 0 ;for_end = 3 ; if ( | |
fitclass <= for_end) do | |
{ | |
if ( minimaldemerits [fitclass ]<= minimumdemerits ) | |
{ | |
q = getnode ( 2 ) ; | |
mem [q ].hh .v.RH = passive ; | |
passive = q ; | |
mem [q + 1 ].hh .v.RH = curp ; | |
; | |
#ifdef STAT | |
incr ( passnumber ) ; | |
mem [q ].hh .v.LH = passnumber ; | |
#endif /* STAT */ | |
mem [q + 1 ].hh .v.LH = bestplace [fitclass ]; | |
q = getnode ( activenodesize ) ; | |
mem [q + 1 ].hh .v.RH = passive ; | |
mem [q + 1 ].hh .v.LH = bestplline [fitclass ]+ 1 ; | |
mem [q ].hh.b1 = fitclass ; | |
mem [q ].hh.b0 = breaktype ; | |
mem [q + 2 ].cint = minimaldemerits [fitclass ]; | |
if ( dolastlinefit ) | |
{ | |
mem [q + 3 ].cint = bestplshort [fitclass ]; | |
mem [q + 4 ].cint = bestplglue [fitclass ]; | |
} | |
mem [q ].hh .v.RH = r ; | |
mem [prevr ].hh .v.RH = q ; | |
prevr = q ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
{ | |
printnl ( 66352L ) ; | |
printint ( mem [passive ].hh .v.LH ) ; | |
print ( 66353L ) ; | |
printint ( mem [q + 1 ].hh .v.LH - 1 ) ; | |
printchar ( 46 ) ; | |
printint ( fitclass ) ; | |
if ( breaktype == 1 ) | |
printchar ( 45 ) ; | |
print ( 66354L ) ; | |
printint ( mem [q + 2 ].cint ) ; | |
if ( dolastlinefit ) | |
{ | |
print ( 66959L ) ; | |
printscaled ( mem [q + 3 ].cint ) ; | |
if ( curp == -268435455L ) | |
print ( 66960L ) ; | |
else print ( 66425L ) ; | |
printscaled ( mem [q + 4 ].cint ) ; | |
} | |
print ( 66355L ) ; | |
if ( mem [passive + 1 ].hh .v.LH == -268435455L ) | |
printchar ( 48 ) ; | |
else printint ( mem [mem [passive + 1 ].hh .v.LH ].hh | |
.v.LH ) ; | |
} | |
#endif /* STAT */ | |
} | |
minimaldemerits [fitclass ]= 1073741823L ; | |
} | |
while ( fitclass++ < for_end ) ;} | |
minimumdemerits = 1073741823L ; | |
if ( r != memtop - 7 ) | |
{ | |
q = getnode ( 7 ) ; | |
mem [q ].hh .v.RH = r ; | |
mem [q ].hh.b0 = 2 ; | |
mem [q ].hh.b1 = 0 ; | |
mem [q + 1 ].cint = curactivewidth [1 ]- breakwidth [1 ]; | |
mem [q + 2 ].cint = curactivewidth [2 ]- breakwidth [2 ]; | |
mem [q + 3 ].cint = curactivewidth [3 ]- breakwidth [3 ]; | |
mem [q + 4 ].cint = curactivewidth [4 ]- breakwidth [4 ]; | |
mem [q + 5 ].cint = curactivewidth [5 ]- breakwidth [5 ]; | |
mem [q + 6 ].cint = curactivewidth [6 ]- breakwidth [6 ]; | |
mem [prevr ].hh .v.RH = q ; | |
prevprevr = prevr ; | |
prevr = q ; | |
} | |
} | |
if ( r == memtop - 7 ) | |
goto lab10 ; | |
if ( l > easyline ) | |
{ | |
linewidth = secondwidth ; | |
oldl = 1073741822L ; | |
} | |
else { | |
oldl = l ; | |
if ( l > lastspecialline ) | |
linewidth = secondwidth ; | |
else if ( eqtb [2253271L ].hh .v.RH == -268435455L ) | |
linewidth = firstwidth ; | |
else linewidth = mem [eqtb [2253271L ].hh .v.RH + 2 * l ].cint ; | |
} | |
} | |
} | |
{ | |
artificialdemerits = false ; | |
shortfall = linewidth - curactivewidth [1 ]; | |
if ( eqtb [8939311L ].cint > 1 ) | |
shortfall = shortfall + totalpw ( r , curp ) ; | |
if ( shortfall > 0 ) { | |
if ( ( curactivewidth [3 ]!= 0 ) || ( curactivewidth [4 ]!= 0 ) || | |
( curactivewidth [5 ]!= 0 ) ) | |
{ | |
if ( dolastlinefit ) | |
{ | |
if ( curp == -268435455L ) | |
{ | |
if ( ( mem [r + 3 ].cint == 0 ) || ( mem [r + 4 ].cint <= 0 | |
) ) | |
goto lab45 ; | |
if ( ( curactivewidth [3 ]!= fillwidth [0 ]) || ( | |
curactivewidth [4 ]!= fillwidth [1 ]) || ( curactivewidth [ | |
5 ]!= fillwidth [2 ]) ) | |
goto lab45 ; | |
if ( mem [r + 3 ].cint > 0 ) | |
g = curactivewidth [2 ]; | |
else g = curactivewidth [6 ]; | |
if ( g <= 0 ) | |
goto lab45 ; | |
aritherror = false ; | |
g = fract ( g , mem [r + 3 ].cint , mem [r + 4 ].cint , | |
1073741823L ) ; | |
if ( eqtb [8939305L ].cint < 1000 ) | |
g = fract ( g , eqtb [8939305L ].cint , 1000 , 1073741823L ) ; | |
if ( aritherror ) { | |
if ( mem [r + 3 ].cint > 0 ) | |
g = 1073741823L ; | |
else g = -1073741823L ; | |
} | |
if ( g > 0 ) | |
{ | |
if ( g > shortfall ) | |
g = shortfall ; | |
if ( g > 7230584L ) { | |
if ( curactivewidth [2 ]< 1663497L ) | |
{ | |
b = 10000 ; | |
fitclass = 0 ; | |
goto lab40 ; | |
} | |
} | |
b = badness ( g , curactivewidth [2 ]) ; | |
if ( b > 12 ) { | |
if ( b > 99 ) | |
fitclass = 0 ; | |
else fitclass = 1 ; | |
} | |
else fitclass = 2 ; | |
goto lab40 ; | |
} | |
else if ( g < 0 ) | |
{ | |
if ( - (integer) g > curactivewidth [6 ]) | |
g = - (integer) curactivewidth [6 ]; | |
b = badness ( - (integer) g , curactivewidth [6 ]) ; | |
if ( b > 12 ) | |
fitclass = 3 ; | |
else fitclass = 2 ; | |
goto lab40 ; | |
} | |
lab45: ; | |
} | |
shortfall = 0 ; | |
} | |
b = 0 ; | |
fitclass = 2 ; | |
} | |
else { | |
if ( shortfall > 7230584L ) { | |
if ( curactivewidth [2 ]< 1663497L ) | |
{ | |
b = 10000 ; | |
fitclass = 0 ; | |
goto lab31 ; | |
} | |
} | |
b = badness ( shortfall , curactivewidth [2 ]) ; | |
if ( b > 12 ) { | |
if ( b > 99 ) | |
fitclass = 0 ; | |
else fitclass = 1 ; | |
} | |
else fitclass = 2 ; | |
lab31: ; | |
} | |
} | |
else { | |
if ( - (integer) shortfall > curactivewidth [6 ]) | |
b = 10001 ; | |
else b = badness ( - (integer) shortfall , curactivewidth [6 ]) ; | |
if ( b > 12 ) | |
fitclass = 3 ; | |
else fitclass = 2 ; | |
} | |
if ( dolastlinefit ) | |
{ | |
if ( curp == -268435455L ) | |
shortfall = 0 ; | |
if ( shortfall > 0 ) | |
g = curactivewidth [2 ]; | |
else if ( shortfall < 0 ) | |
g = curactivewidth [6 ]; | |
else g = 0 ; | |
} | |
lab40: if ( ( b > 10000 ) || ( pi == -10000 ) ) | |
{ | |
if ( finalpass && ( minimumdemerits == 1073741823L ) && ( mem [r ] | |
.hh .v.RH == memtop - 7 ) && ( prevr == memtop - 7 ) ) | |
artificialdemerits = true ; | |
else if ( b > threshold ) | |
goto lab60 ; | |
noderstaysactive = false ; | |
} | |
else { | |
prevr = r ; | |
if ( b > threshold ) | |
goto lab22 ; | |
noderstaysactive = true ; | |
} | |
if ( artificialdemerits ) | |
d = 0 ; | |
else { | |
d = eqtb [8939242L ].cint + b ; | |
if ( abs ( d ) >= 10000 ) | |
d = 100000000L ; | |
else d = d * d ; | |
if ( pi != 0 ) { | |
if ( pi > 0 ) | |
d = d + pi * pi ; | |
else if ( pi > -10000 ) | |
d = d - pi * pi ; | |
} | |
if ( ( breaktype == 1 ) && ( mem [r ].hh.b0 == 1 ) ) { | |
if ( curp != -268435455L ) | |
d = d + eqtb [8939254L ].cint ; | |
else d = d + eqtb [8939255L ].cint ; | |
} | |
if ( abs ( fitclass - mem [r ].hh.b1 ) > 1 ) | |
d = d + eqtb [8939256L ].cint ; | |
} | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
{ | |
if ( printednode != curp ) | |
{ | |
printnl ( 65626L ) ; | |
if ( curp == -268435455L ) | |
shortdisplay ( mem [printednode ].hh .v.RH ) ; | |
else { | |
savelink = mem [curp ].hh .v.RH ; | |
mem [curp ].hh .v.RH = -268435455L ; | |
printnl ( 65626L ) ; | |
shortdisplay ( mem [printednode ].hh .v.RH ) ; | |
mem [curp ].hh .v.RH = savelink ; | |
} | |
printednode = curp ; | |
} | |
printnl ( 64 ) ; | |
if ( curp == -268435455L ) | |
printesc ( 65922L ) ; | |
else if ( mem [curp ].hh.b0 != 10 ) | |
{ | |
if ( mem [curp ].hh.b0 == 12 ) | |
printesc ( 65850L ) ; | |
else if ( mem [curp ].hh.b0 == 7 ) | |
printesc ( 65639L ) ; | |
else if ( mem [curp ].hh.b0 == 11 ) | |
printesc ( 65603L ) ; | |
else printesc ( 65633L ) ; | |
} | |
print ( 66356L ) ; | |
if ( mem [r + 1 ].hh .v.RH == -268435455L ) | |
printchar ( 48 ) ; | |
else printint ( mem [mem [r + 1 ].hh .v.RH ].hh .v.LH ) ; | |
print ( 66357L ) ; | |
if ( b > 10000 ) | |
printchar ( 42 ) ; | |
else printint ( b ) ; | |
print ( 66358L ) ; | |
printint ( pi ) ; | |
print ( 66359L ) ; | |
if ( artificialdemerits ) | |
printchar ( 42 ) ; | |
else printint ( d ) ; | |
} | |
#endif /* STAT */ | |
d = d + mem [r + 2 ].cint ; | |
if ( d <= minimaldemerits [fitclass ]) | |
{ | |
minimaldemerits [fitclass ]= d ; | |
bestplace [fitclass ]= mem [r + 1 ].hh .v.RH ; | |
bestplline [fitclass ]= l ; | |
if ( dolastlinefit ) | |
{ | |
bestplshort [fitclass ]= shortfall ; | |
bestplglue [fitclass ]= g ; | |
} | |
if ( d < minimumdemerits ) | |
minimumdemerits = d ; | |
} | |
if ( noderstaysactive ) | |
goto lab22 ; | |
lab60: mem [prevr ].hh .v.RH = mem [r ].hh .v.RH ; | |
freenode ( r , activenodesize ) ; | |
if ( prevr == memtop - 7 ) | |
{ | |
r = mem [memtop - 7 ].hh .v.RH ; | |
if ( mem [r ].hh.b0 == 2 ) | |
{ | |
activewidth [1 ]= activewidth [1 ]+ mem [r + 1 ].cint ; | |
activewidth [2 ]= activewidth [2 ]+ mem [r + 2 ].cint ; | |
activewidth [3 ]= activewidth [3 ]+ mem [r + 3 ].cint ; | |
activewidth [4 ]= activewidth [4 ]+ mem [r + 4 ].cint ; | |
activewidth [5 ]= activewidth [5 ]+ mem [r + 5 ].cint ; | |
activewidth [6 ]= activewidth [6 ]+ mem [r + 6 ].cint ; | |
curactivewidth [1 ]= activewidth [1 ]; | |
curactivewidth [2 ]= activewidth [2 ]; | |
curactivewidth [3 ]= activewidth [3 ]; | |
curactivewidth [4 ]= activewidth [4 ]; | |
curactivewidth [5 ]= activewidth [5 ]; | |
curactivewidth [6 ]= activewidth [6 ]; | |
mem [memtop - 7 ].hh .v.RH = mem [r ].hh .v.RH ; | |
freenode ( r , 7 ) ; | |
} | |
} | |
else if ( mem [prevr ].hh.b0 == 2 ) | |
{ | |
r = mem [prevr ].hh .v.RH ; | |
if ( r == memtop - 7 ) | |
{ | |
curactivewidth [1 ]= curactivewidth [1 ]- mem [prevr + 1 ] | |
.cint ; | |
curactivewidth [2 ]= curactivewidth [2 ]- mem [prevr + 2 ] | |
.cint ; | |
curactivewidth [3 ]= curactivewidth [3 ]- mem [prevr + 3 ] | |
.cint ; | |
curactivewidth [4 ]= curactivewidth [4 ]- mem [prevr + 4 ] | |
.cint ; | |
curactivewidth [5 ]= curactivewidth [5 ]- mem [prevr + 5 ] | |
.cint ; | |
curactivewidth [6 ]= curactivewidth [6 ]- mem [prevr + 6 ] | |
.cint ; | |
mem [prevprevr ].hh .v.RH = memtop - 7 ; | |
freenode ( prevr , 7 ) ; | |
prevr = prevprevr ; | |
} | |
else if ( mem [r ].hh.b0 == 2 ) | |
{ | |
curactivewidth [1 ]= curactivewidth [1 ]+ mem [r + 1 ].cint ; | |
curactivewidth [2 ]= curactivewidth [2 ]+ mem [r + 2 ].cint ; | |
curactivewidth [3 ]= curactivewidth [3 ]+ mem [r + 3 ].cint ; | |
curactivewidth [4 ]= curactivewidth [4 ]+ mem [r + 4 ].cint ; | |
curactivewidth [5 ]= curactivewidth [5 ]+ mem [r + 5 ].cint ; | |
curactivewidth [6 ]= curactivewidth [6 ]+ mem [r + 6 ].cint ; | |
mem [prevr + 1 ].cint = mem [prevr + 1 ].cint + mem [r + 1 ] | |
.cint ; | |
mem [prevr + 2 ].cint = mem [prevr + 2 ].cint + mem [r + 2 ] | |
.cint ; | |
mem [prevr + 3 ].cint = mem [prevr + 3 ].cint + mem [r + 3 ] | |
.cint ; | |
mem [prevr + 4 ].cint = mem [prevr + 4 ].cint + mem [r + 4 ] | |
.cint ; | |
mem [prevr + 5 ].cint = mem [prevr + 5 ].cint + mem [r + 5 ] | |
.cint ; | |
mem [prevr + 6 ].cint = mem [prevr + 6 ].cint + mem [r + 6 ] | |
.cint ; | |
mem [prevr ].hh .v.RH = mem [r ].hh .v.RH ; | |
freenode ( r , 7 ) ; | |
} | |
} | |
} | |
} | |
lab10: | |
; | |
#ifdef STAT | |
if ( curp == printednode ) { | |
if ( curp != -268435455L ) { | |
if ( mem [curp ].hh.b0 == 7 ) | |
{ | |
t = mem [curp ].hh.b1 ; | |
while ( t > 0 ) { | |
decr ( t ) ; | |
printednode = mem [printednode ].hh .v.RH ; | |
} | |
} | |
#endif /* STAT */ | |
} | |
} | |
} | |
void | |
zpostlinebreak ( boolean d ) | |
{ | |
/* 30 31 */ postlinebreak_regmem | |
halfword q, r, s ; | |
halfword p, k ; | |
scaled w ; | |
boolean gluebreak ; | |
halfword ptmp ; | |
boolean discbreak ; | |
boolean postdiscbreak ; | |
scaled curwidth ; | |
scaled curindent ; | |
quarterword t ; | |
integer pen ; | |
halfword curline ; | |
halfword LRptr ; | |
LRptr = curlist .eTeXauxfield ; | |
q = mem [bestbet + 1 ].hh .v.RH ; | |
curp = -268435455L ; | |
do { | |
r = q ; | |
q = mem [q + 1 ].hh .v.LH ; | |
mem [r + 1 ].hh .v.LH = curp ; | |
curp = r ; | |
} while ( ! ( q == -268435455L ) ) ; | |
curline = curlist .pgfield + 1 ; | |
do { | |
if ( ( eqtb [8939312L ].cint > 0 ) ) | |
{ | |
q = mem [memtop - 3 ].hh .v.RH ; | |
if ( LRptr != -268435455L ) | |
{ | |
tempptr = LRptr ; | |
r = q ; | |
do { | |
s = newmath ( 0 , ( mem [tempptr ].hh .v.LH - 1 ) ) ; | |
mem [s ].hh .v.RH = r ; | |
r = s ; | |
tempptr = mem [tempptr ].hh .v.RH ; | |
} while ( ! ( tempptr == -268435455L ) ) ; | |
mem [memtop - 3 ].hh .v.RH = r ; | |
} | |
while ( q != mem [curp + 1 ].hh .v.RH ) { | |
if ( ! ( q >= himemmin ) ) { | |
if ( mem [q ].hh.b0 == 9 ) { | |
if ( odd ( mem [q ].hh.b1 ) ) | |
{ | |
if ( LRptr != -268435455L ) { | |
if ( mem [LRptr ].hh .v.LH == ( 4 * ( mem [q ].hh.b1 / 4 ) | |
+ 3 ) ) | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
} | |
} | |
else { | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [q ].hh.b1 / 4 ) + 3 ) | |
; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
} | |
} | |
q = mem [q ].hh .v.RH ; | |
} | |
} | |
q = mem [curp + 1 ].hh .v.RH ; | |
discbreak = false ; | |
postdiscbreak = false ; | |
gluebreak = false ; | |
if ( q != -268435455L ) { | |
if ( mem [q ].hh.b0 == 10 ) | |
{ | |
deleteglueref ( mem [q + 1 ].hh .v.LH ) ; | |
mem [q + 1 ].hh .v.LH = eqtb [2252748L ].hh .v.RH ; | |
mem [q ].hh.b1 = 9 ; | |
incr ( mem [eqtb [2252748L ].hh .v.RH ].hh .v.RH ) ; | |
gluebreak = true ; | |
goto lab30 ; | |
} | |
else { | |
if ( mem [q ].hh.b0 == 7 ) | |
{ | |
t = mem [q ].hh.b1 ; | |
if ( t == 0 ) | |
r = mem [q ].hh .v.RH ; | |
else { | |
r = q ; | |
while ( t > 1 ) { | |
r = mem [r ].hh .v.RH ; | |
decr ( t ) ; | |
} | |
s = mem [r ].hh .v.RH ; | |
r = mem [s ].hh .v.RH ; | |
mem [s ].hh .v.RH = -268435455L ; | |
flushnodelist ( mem [q ].hh .v.RH ) ; | |
mem [q ].hh.b1 = 0 ; | |
} | |
if ( mem [q + 1 ].hh .v.RH != -268435455L ) | |
{ | |
s = mem [q + 1 ].hh .v.RH ; | |
while ( mem [s ].hh .v.RH != -268435455L ) s = mem [s ].hh | |
.v.RH ; | |
mem [s ].hh .v.RH = r ; | |
r = mem [q + 1 ].hh .v.RH ; | |
mem [q + 1 ].hh .v.RH = -268435455L ; | |
postdiscbreak = true ; | |
} | |
if ( mem [q + 1 ].hh .v.LH != -268435455L ) | |
{ | |
s = mem [q + 1 ].hh .v.LH ; | |
mem [q ].hh .v.RH = s ; | |
while ( mem [s ].hh .v.RH != -268435455L ) s = mem [s ].hh | |
.v.RH ; | |
mem [q + 1 ].hh .v.LH = -268435455L ; | |
q = s ; | |
} | |
mem [q ].hh .v.RH = r ; | |
discbreak = true ; | |
} | |
else if ( mem [q ].hh.b0 == 11 ) | |
mem [q + 1 ].cint = 0 ; | |
else if ( mem [q ].hh.b0 == 9 ) | |
{ | |
mem [q + 1 ].cint = 0 ; | |
if ( ( eqtb [8939312L ].cint > 0 ) ) { | |
if ( odd ( mem [q ].hh.b1 ) ) | |
{ | |
if ( LRptr != -268435455L ) { | |
if ( mem [LRptr ].hh .v.LH == ( 4 * ( mem [q ].hh.b1 / 4 ) | |
+ 3 ) ) | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
} | |
} | |
else { | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [q ].hh.b1 / 4 ) + 3 ) | |
; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
} | |
} | |
} | |
} | |
else { | |
q = memtop - 3 ; | |
while ( mem [q ].hh .v.RH != -268435455L ) q = mem [q ].hh .v.RH ; | |
} | |
lab30: if ( eqtb [8939311L ].cint > 0 ) | |
{ | |
if ( discbreak && ( ( q >= himemmin ) || ( mem [q ].hh.b0 != 7 ) ) ) | |
{ | |
p = q ; | |
ptmp = p ; | |
} | |
else { | |
p = prevrightmost ( mem [memtop - 3 ].hh .v.RH , q ) ; | |
ptmp = p ; | |
p = findprotcharright ( mem [memtop - 3 ].hh .v.RH , p ) ; | |
} | |
w = charpw ( p , 1 ) ; | |
if ( w != 0 ) | |
{ | |
k = newmarginkern ( - (integer) w , lastrightmostchar , 1 ) ; | |
mem [k ].hh .v.RH = mem [ptmp ].hh .v.RH ; | |
mem [ptmp ].hh .v.RH = k ; | |
if ( ( ptmp == q ) ) | |
q = mem [q ].hh .v.RH ; | |
} | |
} | |
if ( ! gluebreak ) | |
{ | |
r = newparamglue ( 8 ) ; | |
mem [r ].hh .v.RH = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = r ; | |
q = r ; | |
} | |
if ( ( eqtb [8939312L ].cint > 0 ) ) { | |
if ( LRptr != -268435455L ) | |
{ | |
s = memtop - 3 ; | |
r = mem [s ].hh .v.RH ; | |
while ( r != q ) { | |
s = r ; | |
r = mem [s ].hh .v.RH ; | |
} | |
r = LRptr ; | |
while ( r != -268435455L ) { | |
tempptr = newmath ( 0 , mem [r ].hh .v.LH ) ; | |
mem [s ].hh .v.RH = tempptr ; | |
s = tempptr ; | |
r = mem [r ].hh .v.RH ; | |
} | |
mem [s ].hh .v.RH = q ; | |
} | |
} | |
r = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = -268435455L ; | |
q = mem [memtop - 3 ].hh .v.RH ; | |
mem [memtop - 3 ].hh .v.RH = r ; | |
if ( eqtb [8939311L ].cint > 0 ) | |
{ | |
p = q ; | |
p = findprotcharleft ( p , false ) ; | |
w = charpw ( p , 0 ) ; | |
if ( w != 0 ) | |
{ | |
k = newmarginkern ( - (integer) w , lastleftmostchar , 0 ) ; | |
mem [k ].hh .v.RH = q ; | |
q = k ; | |
} | |
} | |
if ( eqtb [2252747L ].hh .v.RH != membot ) | |
{ | |
r = newparamglue ( 7 ) ; | |
mem [r ].hh .v.RH = q ; | |
q = r ; | |
} | |
if ( curline > lastspecialline ) | |
{ | |
curwidth = secondwidth ; | |
curindent = secondindent ; | |
} | |
else if ( eqtb [2253271L ].hh .v.RH == -268435455L ) | |
{ | |
curwidth = firstwidth ; | |
curindent = firstindent ; | |
} | |
else { | |
curwidth = mem [eqtb [2253271L ].hh .v.RH + 2 * curline ].cint ; | |
curindent = mem [eqtb [2253271L ].hh .v.RH + 2 * curline - 1 ].cint | |
; | |
} | |
adjusttail = memtop - 5 ; | |
preadjusttail = memtop - 14 ; | |
justbox = hpack ( q , curwidth , 0 ) ; | |
mem [justbox + 4 ].cint = curindent ; | |
if ( memtop - 14 != preadjusttail ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 14 ].hh .v.RH ; | |
curlist .tailfield = preadjusttail ; | |
} | |
preadjusttail = -268435455L ; | |
appendtovlist ( justbox ) ; | |
if ( memtop - 5 != adjusttail ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 5 ].hh .v.RH ; | |
curlist .tailfield = adjusttail ; | |
} | |
adjusttail = -268435455L ; | |
if ( curline + 1 != bestline ) | |
{ | |
q = eqtb [2253539L ].hh .v.RH ; | |
if ( q != -268435455L ) | |
{ | |
r = curline ; | |
if ( r > mem [q + 1 ].cint ) | |
r = mem [q + 1 ].cint ; | |
pen = mem [q + r + 1 ].cint ; | |
} | |
else pen = eqtb [8939253L ].cint ; | |
q = eqtb [2253540L ].hh .v.RH ; | |
if ( q != -268435455L ) | |
{ | |
r = curline - curlist .pgfield ; | |
if ( r > mem [q + 1 ].cint ) | |
r = mem [q + 1 ].cint ; | |
pen = pen + mem [q + r + 1 ].cint ; | |
} | |
else if ( curline == curlist .pgfield + 1 ) | |
pen = pen + eqtb [8939245L ].cint ; | |
if ( d ) | |
q = eqtb [2253542L ].hh .v.RH ; | |
else q = eqtb [2253541L ].hh .v.RH ; | |
if ( q != -268435455L ) | |
{ | |
r = bestline - curline - 1 ; | |
if ( r > mem [q + 1 ].cint ) | |
r = mem [q + 1 ].cint ; | |
pen = pen + mem [q + r + 1 ].cint ; | |
} | |
else if ( curline + 2 == bestline ) { | |
if ( d ) | |
pen = pen + eqtb [8939247L ].cint ; | |
else pen = pen + eqtb [8939246L ].cint ; | |
} | |
if ( discbreak ) | |
pen = pen + eqtb [8939248L ].cint ; | |
if ( pen != 0 ) | |
{ | |
r = newpenalty ( pen ) ; | |
mem [curlist .tailfield ].hh .v.RH = r ; | |
curlist .tailfield = r ; | |
} | |
} | |
incr ( curline ) ; | |
curp = mem [curp + 1 ].hh .v.LH ; | |
if ( curp != -268435455L ) { | |
if ( ! postdiscbreak ) | |
{ | |
r = memtop - 3 ; | |
while ( true ) { | |
q = mem [r ].hh .v.RH ; | |
if ( q == mem [curp + 1 ].hh .v.RH ) | |
goto lab31 ; | |
if ( ( q >= himemmin ) ) | |
goto lab31 ; | |
if ( ( mem [q ].hh.b0 < 9 ) ) | |
goto lab31 ; | |
if ( mem [q ].hh.b0 == 11 ) { | |
if ( ( mem [q ].hh.b1 != 1 ) && ( mem [q ].hh.b1 != 3 ) ) | |
goto lab31 ; | |
} | |
r = q ; | |
if ( mem [q ].hh.b0 == 9 ) { | |
if ( ( eqtb [8939312L ].cint > 0 ) ) { | |
if ( odd ( mem [q ].hh.b1 ) ) | |
{ | |
if ( LRptr != -268435455L ) { | |
if ( mem [LRptr ].hh .v.LH == ( 4 * ( mem [q ].hh.b1 / 4 | |
) + 3 ) ) | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
} | |
} | |
else { | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [q ].hh.b1 / 4 ) + 3 | |
) ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
} | |
} | |
} | |
lab31: if ( r != memtop - 3 ) | |
{ | |
mem [r ].hh .v.RH = -268435455L ; | |
flushnodelist ( mem [memtop - 3 ].hh .v.RH ) ; | |
mem [memtop - 3 ].hh .v.RH = q ; | |
} | |
} | |
} | |
} while ( ! ( curp == -268435455L ) ) ; | |
if ( ( curline != bestline ) || ( mem [memtop - 3 ].hh .v.RH != | |
-268435455L ) ) | |
confusion ( 66368L ) ; | |
curlist .pgfield = bestline - 1 ; | |
curlist .eTeXauxfield = LRptr ; | |
} | |
smallnumber | |
zreconstitute ( smallnumber j , smallnumber n , halfword bchar , halfword | |
hchar ) | |
{ | |
/* 22 30 */ register smallnumber Result; reconstitute_regmem | |
halfword p ; | |
halfword t ; | |
fourquarters q ; | |
halfword currh ; | |
halfword testchar ; | |
scaled w ; | |
fontindex k ; | |
hyphenpassed = 0 ; | |
t = memtop - 4 ; | |
w = 0 ; | |
mem [memtop - 4 ].hh .v.RH = -268435455L ; | |
curl = hu [j ]; | |
curq = t ; | |
if ( j == 0 ) | |
{ | |
ligaturepresent = initlig ; | |
p = initlist ; | |
if ( ligaturepresent ) | |
lfthit = initlft ; | |
while ( p > -268435455L ) { | |
{ | |
mem [t ].hh .v.RH = getavail () ; | |
t = mem [t ].hh .v.RH ; | |
mem [t ].hh.b0 = hf ; | |
mem [t ].hh.b1 = mem [p ].hh.b1 ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
} | |
else if ( curl < 65536L ) | |
{ | |
mem [t ].hh .v.RH = getavail () ; | |
t = mem [t ].hh .v.RH ; | |
mem [t ].hh.b0 = hf ; | |
mem [t ].hh.b1 = curl ; | |
} | |
ligstack = -268435455L ; | |
{ | |
if ( j < n ) | |
curr = hu [j + 1 ]; | |
else curr = bchar ; | |
if ( odd ( hyf [j ]) ) | |
currh = hchar ; | |
else currh = 65536L ; | |
} | |
lab22: if ( curl == 65536L ) | |
{ | |
k = bcharlabel [hf ]; | |
if ( k == 0 ) | |
goto lab30 ; | |
else q = fontinfo [k ].qqqq ; | |
} | |
else { | |
q = fontinfo [charbase [hf ]+ effectivechar ( true , hf , curl ) ] | |
.qqqq ; | |
if ( ( ( q .b2 ) % 4 ) != 1 ) | |
goto lab30 ; | |
k = ligkernbase [hf ]+ q .b3 ; | |
q = fontinfo [k ].qqqq ; | |
if ( q .b0 > 128 ) | |
{ | |
k = ligkernbase [hf ]+ 256 * q .b2 + q .b3 + 32768L - 256 * ( 128 ) ; | |
q = fontinfo [k ].qqqq ; | |
} | |
} | |
if ( currh < 65536L ) | |
testchar = currh ; | |
else testchar = curr ; | |
while ( true ) { | |
if ( q .b1 == testchar ) { | |
if ( q .b0 <= 128 ) { | |
if ( currh < 65536L ) | |
{ | |
hyphenpassed = j ; | |
hchar = 65536L ; | |
currh = 65536L ; | |
goto lab22 ; | |
} | |
else { | |
if ( hchar < 65536L ) { | |
if ( odd ( hyf [j ]) ) | |
{ | |
hyphenpassed = j ; | |
hchar = 65536L ; | |
} | |
} | |
if ( q .b2 < 128 ) | |
{ | |
if ( curl == 65536L ) | |
lfthit = true ; | |
if ( j == n ) { | |
if ( ligstack == -268435455L ) | |
rthit = true ; | |
} | |
{ | |
if ( interrupt != 0 ) | |
pauseforinstructions () ; | |
} | |
switch ( q .b2 ) | |
{case 1 : | |
case 5 : | |
{ | |
curl = q .b3 ; | |
ligaturepresent = true ; | |
} | |
break ; | |
case 2 : | |
case 6 : | |
{ | |
curr = q .b3 ; | |
if ( ligstack > -268435455L ) | |
mem [ligstack ].hh.b1 = curr ; | |
else { | |
ligstack = newligitem ( curr ) ; | |
if ( j == n ) | |
bchar = 65536L ; | |
else { | |
p = getavail () ; | |
mem [ligstack + 1 ].hh .v.RH = p ; | |
mem [p ].hh.b1 = hu [j + 1 ]; | |
mem [p ].hh.b0 = hf ; | |
} | |
} | |
} | |
break ; | |
case 3 : | |
{ | |
curr = q .b3 ; | |
p = ligstack ; | |
ligstack = newligitem ( curr ) ; | |
mem [ligstack ].hh .v.RH = p ; | |
} | |
break ; | |
case 7 : | |
case 11 : | |
{ | |
if ( ligaturepresent ) | |
{ | |
p = newligature ( hf , curl , mem [curq ].hh .v.RH ) ; | |
if ( lfthit ) | |
{ | |
mem [p ].hh.b1 = 2 ; | |
lfthit = false ; | |
} | |
if ( false ) { | |
if ( ligstack == -268435455L ) | |
{ | |
incr ( mem [p ].hh.b1 ) ; | |
rthit = false ; | |
} | |
} | |
mem [curq ].hh .v.RH = p ; | |
t = p ; | |
ligaturepresent = false ; | |
} | |
curq = t ; | |
curl = q .b3 ; | |
ligaturepresent = true ; | |
} | |
break ; | |
default: | |
{ | |
curl = q .b3 ; | |
ligaturepresent = true ; | |
if ( ligstack > -268435455L ) | |
{ | |
if ( mem [ligstack + 1 ].hh .v.RH > -268435455L ) | |
{ | |
mem [t ].hh .v.RH = mem [ligstack + 1 ].hh .v.RH ; | |
t = mem [t ].hh .v.RH ; | |
incr ( j ) ; | |
} | |
p = ligstack ; | |
ligstack = mem [p ].hh .v.RH ; | |
freenode ( p , 2 ) ; | |
if ( ligstack == -268435455L ) | |
{ | |
if ( j < n ) | |
curr = hu [j + 1 ]; | |
else curr = bchar ; | |
if ( odd ( hyf [j ]) ) | |
currh = hchar ; | |
else currh = 65536L ; | |
} | |
else curr = mem [ligstack ].hh.b1 ; | |
} | |
else if ( j == n ) | |
goto lab30 ; | |
else { | |
{ | |
mem [t ].hh .v.RH = getavail () ; | |
t = mem [t ].hh .v.RH ; | |
mem [t ].hh.b0 = hf ; | |
mem [t ].hh.b1 = curr ; | |
} | |
incr ( j ) ; | |
{ | |
if ( j < n ) | |
curr = hu [j + 1 ]; | |
else curr = bchar ; | |
if ( odd ( hyf [j ]) ) | |
currh = hchar ; | |
else currh = 65536L ; | |
} | |
} | |
} | |
break ; | |
} | |
if ( q .b2 > 4 ) { | |
if ( q .b2 != 7 ) | |
goto lab30 ; | |
} | |
goto lab22 ; | |
} | |
w = fontinfo [kernbase [hf ]+ 256 * q .b2 + q .b3 ].cint ; | |
goto lab30 ; | |
} | |
} | |
} | |
if ( q .b0 >= 128 ) { | |
if ( currh == 65536L ) | |
goto lab30 ; | |
else { | |
currh = 65536L ; | |
goto lab22 ; | |
} | |
} | |
k = k + q .b0 + 1 ; | |
q = fontinfo [k ].qqqq ; | |
} | |
lab30: ; | |
if ( ligaturepresent ) | |
{ | |
p = newligature ( hf , curl , mem [curq ].hh .v.RH ) ; | |
if ( lfthit ) | |
{ | |
mem [p ].hh.b1 = 2 ; | |
lfthit = false ; | |
} | |
if ( rthit ) { | |
if ( ligstack == -268435455L ) | |
{ | |
incr ( mem [p ].hh.b1 ) ; | |
rthit = false ; | |
} | |
} | |
mem [curq ].hh .v.RH = p ; | |
t = p ; | |
ligaturepresent = false ; | |
} | |
if ( w != 0 ) | |
{ | |
mem [t ].hh .v.RH = newkern ( w ) ; | |
t = mem [t ].hh .v.RH ; | |
w = 0 ; | |
mem [t + 2 ].hh .v.LH = 0 ; | |
} | |
if ( ligstack > -268435455L ) | |
{ | |
curq = t ; | |
curl = mem [ligstack ].hh.b1 ; | |
ligaturepresent = true ; | |
{ | |
if ( mem [ligstack + 1 ].hh .v.RH > -268435455L ) | |
{ | |
mem [t ].hh .v.RH = mem [ligstack + 1 ].hh .v.RH ; | |
t = mem [t ].hh .v.RH ; | |
incr ( j ) ; | |
} | |
p = ligstack ; | |
ligstack = mem [p ].hh .v.RH ; | |
freenode ( p , 2 ) ; | |
if ( ligstack == -268435455L ) | |
{ | |
if ( j < n ) | |
curr = hu [j + 1 ]; | |
else curr = bchar ; | |
if ( odd ( hyf [j ]) ) | |
currh = hchar ; | |
else currh = 65536L ; | |
} | |
else curr = mem [ligstack ].hh.b1 ; | |
} | |
goto lab22 ; | |
} | |
Result = j ; | |
return Result ; | |
} | |
void | |
hyphenate ( void ) | |
{ | |
/* 50 30 40 41 42 45 10 */ hyphenate_regmem | |
short i, j, l ; | |
halfword q, r, s ; | |
halfword bchar ; | |
halfword majortail, minortail ; | |
UnicodeScalar c ; | |
short cloc ; | |
integer rcount ; | |
halfword hyfnode ; | |
triepointer z ; | |
integer v ; | |
hyphpointer h ; | |
strnumber k ; | |
poolpointer u ; | |
{register integer for_end; j = 0 ;for_end = hn ; if ( j <= for_end) do | |
hyf [j ]= 0 ; | |
while ( j++ < for_end ) ;} | |
h = hc [1 ]; | |
incr ( hn ) ; | |
hc [hn ]= curlang ; | |
{register integer for_end; j = 2 ;for_end = hn ; if ( j <= for_end) do | |
h = ( h + h + hc [j ]) % 607 ; | |
while ( j++ < for_end ) ;} | |
while ( true ) { | |
k = hyphword [h ]; | |
if ( k == 0 ) | |
goto lab45 ; | |
if ( length ( k ) == hn ) | |
{ | |
j = 1 ; | |
u = strstart [( k ) - 65536L ]; | |
do { | |
if ( strpool [u ]!= hc [j ]) | |
goto lab30 ; | |
incr ( j ) ; | |
incr ( u ) ; | |
} while ( ! ( j > hn ) ) ; | |
s = hyphlist [h ]; | |
while ( s != -268435455L ) { | |
hyf [mem [s ].hh .v.LH ]= 1 ; | |
s = mem [s ].hh .v.RH ; | |
} | |
decr ( hn ) ; | |
goto lab40 ; | |
} | |
lab30: ; | |
h = hyphlink [h ]; | |
if ( h == 0 ) | |
goto lab45 ; | |
decr ( h ) ; | |
} | |
lab45: decr ( hn ) ; | |
if ( trietrc [curlang + 1 ]!= curlang ) | |
return ; | |
hc [0 ]= 0 ; | |
hc [hn + 1 ]= 0 ; | |
hc [hn + 2 ]= maxhyphchar ; | |
{register integer for_end; j = 0 ;for_end = hn - rhyf + 1 ; if ( j <= | |
for_end) do | |
{ | |
z = trietrl [curlang + 1 ]+ hc [j ]; | |
l = j ; | |
while ( hc [l ]== trietrc [z ]) { | |
if ( trietro [z ]!= mintrieop ) | |
{ | |
v = trietro [z ]; | |
do { | |
v = v + opstart [curlang ]; | |
i = l - hyfdistance [v ]; | |
if ( hyfnum [v ]> hyf [i ]) | |
hyf [i ]= hyfnum [v ]; | |
v = hyfnext [v ]; | |
} while ( ! ( v == mintrieop ) ) ; | |
} | |
incr ( l ) ; | |
z = trietrl [z ]+ hc [l ]; | |
} | |
} | |
while ( j++ < for_end ) ;} | |
lab40: { | |
register integer for_end; j = 0 ;for_end = lhyf - 1 ; if ( j <= | |
for_end) do | |
hyf [j ]= 0 ; | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = 0 ;for_end = rhyf - 1 ; if ( j <= for_end) | |
do | |
hyf [hn - j ]= 0 ; | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = lhyf ;for_end = hn - rhyf ; if ( j <= | |
for_end) do | |
if ( odd ( hyf [j ]) ) | |
goto lab41 ; | |
while ( j++ < for_end ) ;} | |
return ; | |
lab41: ; | |
if ( ( ( ( ha ) != -268435455L ) && ( ! ( ha >= himemmin ) ) && ( mem [ha ] | |
.hh.b0 == 8 ) && ( ( ( mem [ha ].hh.b1 >= 40 ) && ( mem [ha ].hh.b1 <= | |
41 ) ) ) ) ) | |
{ | |
s = curp ; | |
while ( mem [s ].hh .v.RH != ha ) s = mem [s ].hh .v.RH ; | |
hyphenpassed = 0 ; | |
{register integer for_end; j = lhyf ;for_end = hn - rhyf ; if ( j <= | |
for_end) do | |
{ | |
if ( odd ( hyf [j ]) ) | |
{ | |
q = newnativewordnode ( hf , j - hyphenpassed ) ; | |
mem [q ].hh.b1 = mem [ha ].hh.b1 ; | |
{register integer for_end; i = 0 ;for_end = j - hyphenpassed - 1 | |
; if ( i <= for_end) do | |
setnativechar ( q , i , getnativechar ( ha , i + hyphenpassed ) ) | |
; | |
while ( i++ < for_end ) ;} | |
setnativemetrics ( q , ( eqtb [8939315L ].cint > 0 ) ) ; | |
mem [s ].hh .v.RH = q ; | |
s = q ; | |
q = newdisc () ; | |
mem [q + 1 ].hh .v.LH = newnativecharacter ( hf , hyfchar ) ; | |
mem [s ].hh .v.RH = q ; | |
s = q ; | |
hyphenpassed = j ; | |
} | |
} | |
while ( j++ < for_end ) ;} | |
hn = mem [ha + 4 ].qqqq .b2 ; | |
q = newnativewordnode ( hf , hn - hyphenpassed ) ; | |
mem [q ].hh.b1 = mem [ha ].hh.b1 ; | |
{register integer for_end; i = 0 ;for_end = hn - hyphenpassed - 1 ; if ( | |
i <= for_end) do | |
setnativechar ( q , i , getnativechar ( ha , i + hyphenpassed ) ) ; | |
while ( i++ < for_end ) ;} | |
setnativemetrics ( q , ( eqtb [8939315L ].cint > 0 ) ) ; | |
mem [s ].hh .v.RH = q ; | |
s = q ; | |
q = mem [ha ].hh .v.RH ; | |
mem [s ].hh .v.RH = q ; | |
mem [ha ].hh .v.RH = -268435455L ; | |
flushnodelist ( ha ) ; | |
} | |
else { | |
q = mem [hb ].hh .v.RH ; | |
mem [hb ].hh .v.RH = -268435455L ; | |
r = mem [ha ].hh .v.RH ; | |
mem [ha ].hh .v.RH = -268435455L ; | |
bchar = hyfbchar ; | |
if ( ( ha >= himemmin ) ) { | |
if ( mem [ha ].hh.b0 != hf ) | |
goto lab42 ; | |
else { | |
initlist = ha ; | |
initlig = false ; | |
hu [0 ]= mem [ha ].hh.b1 ; | |
} | |
} | |
else if ( mem [ha ].hh.b0 == 6 ) { | |
if ( mem [ha + 1 ].hh.b0 != hf ) | |
goto lab42 ; | |
else { | |
initlist = mem [ha + 1 ].hh .v.RH ; | |
initlig = true ; | |
initlft = ( mem [ha ].hh.b1 > 1 ) ; | |
hu [0 ]= mem [ha + 1 ].hh.b1 ; | |
if ( initlist == -268435455L ) { | |
if ( initlft ) | |
{ | |
hu [0 ]= maxhyphchar ; | |
initlig = false ; | |
} | |
} | |
freenode ( ha , 2 ) ; | |
} | |
} | |
else { | |
if ( ! ( r >= himemmin ) ) { | |
if ( mem [r ].hh.b0 == 6 ) { | |
if ( mem [r ].hh.b1 > 1 ) | |
goto lab42 ; | |
} | |
} | |
j = 1 ; | |
s = ha ; | |
initlist = -268435455L ; | |
goto lab50 ; | |
} | |
s = curp ; | |
while ( mem [s ].hh .v.RH != ha ) s = mem [s ].hh .v.RH ; | |
j = 0 ; | |
goto lab50 ; | |
lab42: s = ha ; | |
j = 0 ; | |
hu [0 ]= maxhyphchar ; | |
initlig = false ; | |
initlist = -268435455L ; | |
lab50: flushnodelist ( r ) ; | |
do { | |
l = j ; | |
j = reconstitute ( j , hn , bchar , hyfchar ) + 1 ; | |
if ( hyphenpassed == 0 ) | |
{ | |
mem [s ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
while ( mem [s ].hh .v.RH > -268435455L ) s = mem [s ].hh .v.RH ; | |
if ( odd ( hyf [j - 1 ]) ) | |
{ | |
l = j ; | |
hyphenpassed = j - 1 ; | |
mem [memtop - 4 ].hh .v.RH = -268435455L ; | |
} | |
} | |
if ( hyphenpassed > 0 ) | |
do { | |
r = getnode ( 2 ) ; | |
mem [r ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
mem [r ].hh.b0 = 7 ; | |
majortail = r ; | |
rcount = 0 ; | |
while ( mem [majortail ].hh .v.RH > -268435455L ) { | |
majortail = mem [majortail ].hh .v.RH ; | |
incr ( rcount ) ; | |
} | |
i = hyphenpassed ; | |
hyf [i ]= 0 ; | |
minortail = -268435455L ; | |
mem [r + 1 ].hh .v.LH = -268435455L ; | |
hyfnode = newcharacter ( hf , hyfchar ) ; | |
if ( hyfnode != -268435455L ) | |
{ | |
incr ( i ) ; | |
c = hu [i ]; | |
hu [i ]= hyfchar ; | |
{ | |
mem [hyfnode ].hh .v.RH = avail ; | |
avail = hyfnode ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
while ( l <= i ) { | |
l = reconstitute ( l , i , fontbchar [hf ], 65536L ) + 1 ; | |
if ( mem [memtop - 4 ].hh .v.RH > -268435455L ) | |
{ | |
if ( minortail == -268435455L ) | |
mem [r + 1 ].hh .v.LH = mem [memtop - 4 ].hh .v.RH ; | |
else mem [minortail ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
minortail = mem [memtop - 4 ].hh .v.RH ; | |
while ( mem [minortail ].hh .v.RH > -268435455L ) minortail = | |
mem [minortail ].hh .v.RH ; | |
} | |
} | |
if ( hyfnode != -268435455L ) | |
{ | |
hu [i ]= c ; | |
l = i ; | |
decr ( i ) ; | |
} | |
minortail = -268435455L ; | |
mem [r + 1 ].hh .v.RH = -268435455L ; | |
cloc = 0 ; | |
if ( bcharlabel [hf ]!= 0 ) | |
{ | |
decr ( l ) ; | |
c = hu [l ]; | |
cloc = l ; | |
hu [l ]= maxhyphchar ; | |
} | |
while ( l < j ) { | |
do { | |
l = reconstitute ( l , hn , bchar , 65536L ) + 1 ; | |
if ( cloc > 0 ) | |
{ | |
hu [cloc ]= c ; | |
cloc = 0 ; | |
} | |
if ( mem [memtop - 4 ].hh .v.RH > -268435455L ) | |
{ | |
if ( minortail == -268435455L ) | |
mem [r + 1 ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
else mem [minortail ].hh .v.RH = mem [memtop - 4 ].hh .v.RH | |
; | |
minortail = mem [memtop - 4 ].hh .v.RH ; | |
while ( mem [minortail ].hh .v.RH > -268435455L ) minortail = | |
mem [minortail ].hh .v.RH ; | |
} | |
} while ( ! ( l >= j ) ) ; | |
while ( l > j ) { | |
j = reconstitute ( j , hn , bchar , 65536L ) + 1 ; | |
mem [majortail ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
while ( mem [majortail ].hh .v.RH > -268435455L ) { | |
majortail = mem [majortail ].hh .v.RH ; | |
incr ( rcount ) ; | |
} | |
} | |
} | |
if ( rcount > 127 ) | |
{ | |
mem [s ].hh .v.RH = mem [r ].hh .v.RH ; | |
mem [r ].hh .v.RH = -268435455L ; | |
flushnodelist ( r ) ; | |
} | |
else { | |
mem [s ].hh .v.RH = r ; | |
mem [r ].hh.b1 = rcount ; | |
} | |
s = majortail ; | |
hyphenpassed = j - 1 ; | |
mem [memtop - 4 ].hh .v.RH = -268435455L ; | |
} while ( ! ( ! odd ( hyf [j - 1 ]) ) ) ; | |
} while ( ! ( j > hn ) ) ; | |
mem [s ].hh .v.RH = q ; | |
flushlist ( initlist ) ; | |
} | |
} | |
integer | |
maxhyphenatablelength ( void ) | |
{ | |
register integer Result; maxhyphenatablelength_regmem | |
if ( eqtb [8939323L ].cint > 4095 ) | |
Result = 4095 ; | |
else Result = eqtb [8939323L ].cint ; | |
return Result ; | |
} | |
boolean | |
zeTeXenabled ( boolean b , quarterword j , halfword k ) | |
{ | |
register boolean Result; eTeXenabled_regmem | |
if ( ! b ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66024L ) ; | |
} | |
printcmdchr ( j , k ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66854L ; | |
} | |
error () ; | |
} | |
Result = b ; | |
return Result ; | |
} | |
void | |
showsavegroups ( void ) | |
{ | |
/* 41 42 40 30 */ showsavegroups_regmem | |
integer p ; | |
short m ; | |
savepointer v ; | |
quarterword l ; | |
groupcode c ; | |
schar a ; | |
integer i ; | |
quarterword j ; | |
strnumber s ; | |
p = nestptr ; | |
nest [p ]= curlist ; | |
v = saveptr ; | |
l = curlevel ; | |
c = curgroup ; | |
saveptr = curboundary ; | |
decr ( curlevel ) ; | |
a = 1 ; | |
printnl ( 65626L ) ; | |
println () ; | |
while ( true ) { | |
printnl ( 65661L ) ; | |
printgroup ( true ) ; | |
if ( curgroup == 0 ) | |
goto lab30 ; | |
do { | |
m = nest [p ].modefield ; | |
if ( p > 0 ) | |
decr ( p ) ; | |
else m = 1 ; | |
} while ( ! ( m != 104 ) ) ; | |
print ( 65566L ) ; | |
switch ( curgroup ) | |
{case 1 : | |
{ | |
incr ( p ) ; | |
goto lab42 ; | |
} | |
break ; | |
case 2 : | |
case 3 : | |
s = 66488L ; | |
break ; | |
case 4 : | |
s = 66396L ; | |
break ; | |
case 5 : | |
s = 66487L ; | |
break ; | |
case 6 : | |
if ( a == 0 ) | |
{ | |
if ( m == -1 ) | |
s = 65832L ; | |
else s = 65859L ; | |
a = 1 ; | |
goto lab41 ; | |
} | |
else { | |
if ( a == 1 ) | |
print ( 66891L ) ; | |
else printesc ( 66320L ) ; | |
if ( p >= a ) | |
p = p - a ; | |
a = 0 ; | |
goto lab40 ; | |
} | |
break ; | |
case 7 : | |
{ | |
incr ( p ) ; | |
a = -1 ; | |
printesc ( 65845L ) ; | |
goto lab42 ; | |
} | |
break ; | |
case 8 : | |
{ | |
printesc ( 65698L ) ; | |
goto lab40 ; | |
} | |
break ; | |
case 9 : | |
goto lab42 ; | |
break ; | |
case 10 : | |
case 13 : | |
{ | |
if ( curgroup == 10 ) | |
printesc ( 65639L ) ; | |
else printesc ( 65843L ) ; | |
{register integer for_end; i = 1 ;for_end = 3 ; if ( i <= for_end) | |
do | |
if ( i <= savestack [saveptr - 2 ].cint ) | |
print ( 66263L ) ; | |
while ( i++ < for_end ) ;} | |
goto lab42 ; | |
} | |
break ; | |
case 11 : | |
{ | |
if ( savestack [saveptr - 2 ].cint == 255 ) | |
printesc ( 65642L ) ; | |
else { | |
printesc ( 65618L ) ; | |
printint ( savestack [saveptr - 2 ].cint ) ; | |
} | |
goto lab42 ; | |
} | |
break ; | |
case 12 : | |
{ | |
s = 65860L ; | |
goto lab41 ; | |
} | |
break ; | |
case 14 : | |
{ | |
incr ( p ) ; | |
printesc ( 65822L ) ; | |
goto lab40 ; | |
} | |
break ; | |
case 15 : | |
{ | |
if ( m == 207 ) | |
printchar ( 36 ) ; | |
else if ( nest [p ].modefield == 207 ) | |
{ | |
printcmdchr ( 48 , savestack [saveptr - 2 ].cint ) ; | |
goto lab40 ; | |
} | |
printchar ( 36 ) ; | |
goto lab40 ; | |
} | |
break ; | |
case 16 : | |
{ | |
if ( mem [nest [p + 1 ].eTeXauxfield ].hh.b0 == 30 ) | |
printesc ( 66279L ) ; | |
else printesc ( 66281L ) ; | |
goto lab40 ; | |
} | |
break ; | |
} | |
i = savestack [saveptr - 4 ].cint ; | |
if ( i != 0 ) { | |
if ( i < 1073741824L ) | |
{ | |
if ( abs ( nest [p ].modefield ) == 1 ) | |
j = 21 ; | |
else j = 22 ; | |
if ( i > 0 ) | |
printcmdchr ( j , 0 ) ; | |
else printcmdchr ( j , 1 ) ; | |
printscaled ( abs ( i ) ) ; | |
print ( 65697L ) ; | |
} | |
else if ( i < 1073807360L ) | |
{ | |
if ( i >= 1073774592L ) | |
{ | |
printesc ( 66605L ) ; | |
i = i - ( 32768L ) ; | |
} | |
printesc ( 65857L ) ; | |
printint ( i - 1073741824L ) ; | |
printchar ( 61 ) ; | |
} | |
else printcmdchr ( 31 , i - ( 1073807261L ) ) ; | |
} | |
lab41: printesc ( s ) ; | |
if ( savestack [saveptr - 2 ].cint != 0 ) | |
{ | |
printchar ( 32 ) ; | |
if ( savestack [saveptr - 3 ].cint == 0 ) | |
print ( 66244L ) ; | |
else print ( 66245L ) ; | |
printscaled ( savestack [saveptr - 2 ].cint ) ; | |
print ( 65697L ) ; | |
} | |
lab42: printchar ( 123 ) ; | |
lab40: printchar ( 41 ) ; | |
decr ( curlevel ) ; | |
curgroup = savestack [saveptr ].hh.b1 ; | |
saveptr = savestack [saveptr ].hh .v.RH ; | |
} | |
lab30: saveptr = v ; | |
curlevel = l ; | |
curgroup = c ; | |
} | |
halfword | |
zprunepagetop ( halfword p , boolean s ) | |
{ | |
register halfword Result; prunepagetop_regmem | |
halfword prevp ; | |
halfword q, r ; | |
prevp = memtop - 3 ; | |
mem [memtop - 3 ].hh .v.RH = p ; | |
while ( p != -268435455L ) switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
{ | |
q = newskipparam ( 10 ) ; | |
mem [prevp ].hh .v.RH = q ; | |
mem [q ].hh .v.RH = p ; | |
if ( mem [tempptr + 1 ].cint > mem [p + 3 ].cint ) | |
mem [tempptr + 1 ].cint = mem [tempptr + 1 ].cint - mem [p + 3 ] | |
.cint ; | |
else mem [tempptr + 1 ].cint = 0 ; | |
p = -268435455L ; | |
} | |
break ; | |
case 8 : | |
case 4 : | |
case 3 : | |
{ | |
prevp = p ; | |
p = mem [prevp ].hh .v.RH ; | |
} | |
break ; | |
case 10 : | |
case 11 : | |
case 12 : | |
{ | |
q = p ; | |
p = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.RH = -268435455L ; | |
mem [prevp ].hh .v.RH = p ; | |
if ( s ) | |
{ | |
if ( discptr [3 ]== -268435455L ) | |
discptr [3 ]= q ; | |
else mem [r ].hh .v.RH = q ; | |
r = q ; | |
} | |
else flushnodelist ( q ) ; | |
} | |
break ; | |
default: | |
confusion ( 66388L ) ; | |
break ; | |
} | |
Result = mem [memtop - 3 ].hh .v.RH ; | |
return Result ; | |
} | |
halfword | |
zvertbreak ( halfword p , scaled h , scaled d ) | |
{ | |
/* 30 45 90 */ register halfword Result; vertbreak_regmem | |
halfword prevp ; | |
halfword q, r ; | |
integer pi ; | |
integer b ; | |
integer leastcost ; | |
halfword bestplace ; | |
scaled prevdp ; | |
smallnumber t ; | |
prevp = p ; | |
leastcost = 1073741823L ; | |
activewidth [1 ]= 0 ; | |
activewidth [2 ]= 0 ; | |
activewidth [3 ]= 0 ; | |
activewidth [4 ]= 0 ; | |
activewidth [5 ]= 0 ; | |
activewidth [6 ]= 0 ; | |
prevdp = 0 ; | |
while ( true ) { | |
if ( p == -268435455L ) | |
pi = -10000 ; | |
else switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
{ | |
activewidth [1 ]= activewidth [1 ]+ prevdp + mem [p + 3 ].cint ; | |
prevdp = mem [p + 2 ].cint ; | |
goto lab45 ; | |
} | |
break ; | |
case 8 : | |
{ | |
if ( ( mem [p ].hh.b1 == 43 ) || ( mem [p ].hh.b1 == 44 ) ) | |
{ | |
activewidth [1 ]= activewidth [1 ]+ prevdp + mem [p + 3 ].cint | |
; | |
prevdp = mem [p + 2 ].cint ; | |
} | |
goto lab45 ; | |
} | |
break ; | |
case 10 : | |
if ( ( mem [prevp ].hh.b0 < 9 ) ) | |
pi = 0 ; | |
else goto lab90 ; | |
break ; | |
case 11 : | |
{ | |
if ( mem [p ].hh .v.RH == -268435455L ) | |
t = 12 ; | |
else t = mem [mem [p ].hh .v.RH ].hh.b0 ; | |
if ( t == 10 ) | |
pi = 0 ; | |
else goto lab90 ; | |
} | |
break ; | |
case 12 : | |
pi = mem [p + 1 ].cint ; | |
break ; | |
case 4 : | |
case 3 : | |
goto lab45 ; | |
break ; | |
default: | |
confusion ( 66389L ) ; | |
break ; | |
} | |
if ( pi < 10000 ) | |
{ | |
if ( activewidth [1 ]< h ) { | |
if ( ( activewidth [3 ]!= 0 ) || ( activewidth [4 ]!= 0 ) || ( | |
activewidth [5 ]!= 0 ) ) | |
b = 0 ; | |
else b = badness ( h - activewidth [1 ], activewidth [2 ]) ; | |
} | |
else if ( activewidth [1 ]- h > activewidth [6 ]) | |
b = 1073741823L ; | |
else b = badness ( activewidth [1 ]- h , activewidth [6 ]) ; | |
if ( b < 1073741823L ) { | |
if ( pi <= -10000 ) | |
b = pi ; | |
else if ( b < 10000 ) | |
b = b + pi ; | |
else b = 100000L ; | |
} | |
if ( b <= leastcost ) | |
{ | |
bestplace = p ; | |
leastcost = b ; | |
bestheightplusdepth = activewidth [1 ]+ prevdp ; | |
} | |
if ( ( b == 1073741823L ) || ( pi <= -10000 ) ) | |
goto lab30 ; | |
} | |
if ( ( mem [p ].hh.b0 < 10 ) || ( mem [p ].hh.b0 > 11 ) ) | |
goto lab45 ; | |
lab90: if ( mem [p ].hh.b0 == 11 ) | |
q = p ; | |
else { | |
q = mem [p + 1 ].hh .v.LH ; | |
activewidth [2 + mem [q ].hh.b0 ]= activewidth [2 + mem [q ] | |
.hh.b0 ]+ mem [q + 2 ].cint ; | |
activewidth [6 ]= activewidth [6 ]+ mem [q + 3 ].cint ; | |
if ( ( mem [q ].hh.b1 != 0 ) && ( mem [q + 3 ].cint != 0 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66390L ) ; | |
} | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66391L ; | |
helpline [2 ]= 66392L ; | |
helpline [1 ]= 66393L ; | |
helpline [0 ]= 66343L ; | |
} | |
error () ; | |
r = newspec ( q ) ; | |
mem [r ].hh.b1 = 0 ; | |
deleteglueref ( q ) ; | |
mem [p + 1 ].hh .v.LH = r ; | |
q = r ; | |
} | |
} | |
activewidth [1 ]= activewidth [1 ]+ prevdp + mem [q + 1 ].cint ; | |
prevdp = 0 ; | |
lab45: if ( prevdp > d ) | |
{ | |
activewidth [1 ]= activewidth [1 ]+ prevdp - d ; | |
prevdp = d ; | |
} | |
prevp = p ; | |
p = mem [prevp ].hh .v.RH ; | |
} | |
lab30: Result = bestplace ; | |
return Result ; | |
} | |
halfword | |
zvsplit ( halfword n , scaled h ) | |
{ | |
/* 10 30 */ register halfword Result; vsplit_regmem | |
halfword v ; | |
halfword p ; | |
halfword q ; | |
curval = n ; | |
if ( curval < 256 ) | |
v = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
v = -268435455L ; | |
else v = mem [curptr + 1 ].hh .v.RH ; | |
} | |
flushnodelist ( discptr [3 ]) ; | |
discptr [3 ]= -268435455L ; | |
if ( saroot [7 ]!= -268435455L ) { | |
if ( domarks ( 0 , 0 , saroot [7 ]) ) | |
saroot [7 ]= -268435455L ; | |
} | |
if ( curmark [3 ]!= -268435455L ) | |
{ | |
deletetokenref ( curmark [3 ]) ; | |
curmark [3 ]= -268435455L ; | |
deletetokenref ( curmark [4 ]) ; | |
curmark [4 ]= -268435455L ; | |
} | |
if ( v == -268435455L ) | |
{ | |
Result = -268435455L ; | |
return Result ; | |
} | |
if ( mem [v ].hh.b0 != 1 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65626L ) ; | |
} | |
printesc ( 66394L ) ; | |
print ( 66395L ) ; | |
printesc ( 66396L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66397L ; | |
helpline [0 ]= 66398L ; | |
} | |
error () ; | |
Result = -268435455L ; | |
return Result ; | |
} | |
q = vertbreak ( mem [v + 5 ].hh .v.RH , h , eqtb [10053699L ].cint ) ; | |
p = mem [v + 5 ].hh .v.RH ; | |
if ( p == q ) | |
mem [v + 5 ].hh .v.RH = -268435455L ; | |
else while ( true ) { | |
if ( mem [p ].hh.b0 == 4 ) { | |
if ( mem [p + 1 ].hh .v.LH != 0 ) | |
{ | |
findsaelement ( 7 , mem [p + 1 ].hh .v.LH , true ) ; | |
if ( mem [curptr + 2 ].hh .v.RH == -268435455L ) | |
{ | |
mem [curptr + 2 ].hh .v.RH = mem [p + 1 ].hh .v.RH ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
} | |
else deletetokenref ( mem [curptr + 3 ].hh .v.LH ) ; | |
mem [curptr + 3 ].hh .v.LH = mem [p + 1 ].hh .v.RH ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
} | |
else if ( curmark [3 ]== -268435455L ) | |
{ | |
curmark [3 ]= mem [p + 1 ].hh .v.RH ; | |
curmark [4 ]= curmark [3 ]; | |
mem [curmark [3 ]].hh .v.LH = mem [curmark [3 ]].hh .v.LH + 2 | |
; | |
} | |
else { | |
deletetokenref ( curmark [4 ]) ; | |
curmark [4 ]= mem [p + 1 ].hh .v.RH ; | |
incr ( mem [curmark [4 ]].hh .v.LH ) ; | |
} | |
} | |
if ( mem [p ].hh .v.RH == q ) | |
{ | |
mem [p ].hh .v.RH = -268435455L ; | |
goto lab30 ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
lab30: ; | |
q = prunepagetop ( q , eqtb [8939306L ].cint > 0 ) ; | |
p = mem [v + 5 ].hh .v.RH ; | |
freenode ( v , 8 ) ; | |
if ( q != -268435455L ) | |
q = vpackage ( q , 0 , 1 , 1073741823L ) ; | |
if ( curval < 256 ) | |
eqtb [2253543L + curval ].hh .v.RH = q ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr != -268435455L ) | |
{ | |
mem [curptr + 1 ].hh .v.RH = q ; | |
incr ( mem [curptr + 1 ].hh .v.LH ) ; | |
deletesaref ( curptr ) ; | |
} | |
} | |
Result = vpackage ( p , h , 0 , eqtb [10053699L ].cint ) ; | |
return Result ; | |
} | |
void | |
printtotals ( void ) | |
{ | |
printtotals_regmem | |
printscaled ( pagesofar [1 ]) ; | |
if ( pagesofar [2 ]!= 0 ) | |
{ | |
print ( 65598L ) ; | |
printscaled ( pagesofar [2 ]) ; | |
print ( 65626L ) ; | |
} | |
if ( pagesofar [3 ]!= 0 ) | |
{ | |
print ( 65598L ) ; | |
printscaled ( pagesofar [3 ]) ; | |
print ( 65597L ) ; | |
} | |
if ( pagesofar [4 ]!= 0 ) | |
{ | |
print ( 65598L ) ; | |
printscaled ( pagesofar [4 ]) ; | |
print ( 66407L ) ; | |
} | |
if ( pagesofar [5 ]!= 0 ) | |
{ | |
print ( 65598L ) ; | |
printscaled ( pagesofar [5 ]) ; | |
print ( 66408L ) ; | |
} | |
if ( pagesofar [6 ]!= 0 ) | |
{ | |
print ( 65599L ) ; | |
printscaled ( pagesofar [6 ]) ; | |
} | |
} | |
void | |
zfreezepagespecs ( smallnumber s ) | |
{ | |
freezepagespecs_regmem | |
pagecontents = s ; | |
pagesofar [0 ]= eqtb [10053697L ].cint ; | |
pagemaxdepth = eqtb [10053698L ].cint ; | |
pagesofar [7 ]= 0 ; | |
pagesofar [1 ]= 0 ; | |
pagesofar [2 ]= 0 ; | |
pagesofar [3 ]= 0 ; | |
pagesofar [4 ]= 0 ; | |
pagesofar [5 ]= 0 ; | |
pagesofar [6 ]= 0 ; | |
leastpagecost = 1073741823L ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939273L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66416L ) ; | |
printscaled ( pagesofar [0 ]) ; | |
print ( 66417L ) ; | |
printscaled ( pagemaxdepth ) ; | |
enddiagnostic ( false ) ; | |
} | |
#endif /* STAT */ | |
} | |
void | |
zboxerror ( eightbits n ) | |
{ | |
boxerror_regmem | |
error () ; | |
begindiagnostic () ; | |
printnl ( 66231L ) ; | |
showbox ( eqtb [2253543L + n ].hh .v.RH ) ; | |
enddiagnostic ( true ) ; | |
flushnodelist ( eqtb [2253543L + n ].hh .v.RH ) ; | |
eqtb [2253543L + n ].hh .v.RH = -268435455L ; | |
} | |
void | |
zensurevbox ( eightbits n ) | |
{ | |
ensurevbox_regmem | |
halfword p ; | |
p = eqtb [2253543L + n ].hh .v.RH ; | |
if ( p != -268435455L ) { | |
if ( mem [p ].hh.b0 == 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66418L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66419L ; | |
helpline [1 ]= 66420L ; | |
helpline [0 ]= 66421L ; | |
} | |
boxerror ( n ) ; | |
} | |
} | |
} | |
void | |
zfireup ( halfword c ) | |
{ | |
/* 10 */ fireup_regmem | |
halfword p, q, r, s ; | |
halfword prevp ; | |
unsigned char n ; | |
boolean wait ; | |
integer savevbadness ; | |
scaled savevfuzz ; | |
halfword savesplittopskip ; | |
if ( mem [bestpagebreak ].hh.b0 == 12 ) | |
{ | |
geqworddefine ( 8939279L , mem [bestpagebreak + 1 ].cint ) ; | |
mem [bestpagebreak + 1 ].cint = 10000 ; | |
} | |
else geqworddefine ( 8939279L , 10000 ) ; | |
if ( saroot [7 ]!= -268435455L ) { | |
if ( domarks ( 1 , 0 , saroot [7 ]) ) | |
saroot [7 ]= -268435455L ; | |
} | |
if ( curmark [2 ]!= -268435455L ) | |
{ | |
if ( curmark [0 ]!= -268435455L ) | |
deletetokenref ( curmark [0 ]) ; | |
curmark [0 ]= curmark [2 ]; | |
incr ( mem [curmark [0 ]].hh .v.LH ) ; | |
deletetokenref ( curmark [1 ]) ; | |
curmark [1 ]= -268435455L ; | |
} | |
if ( c == bestpagebreak ) | |
bestpagebreak = -268435455L ; | |
if ( eqtb [2253798L ].hh .v.RH != -268435455L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65626L ) ; | |
} | |
printesc ( 65709L ) ; | |
print ( 66432L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66433L ; | |
helpline [0 ]= 66421L ; | |
} | |
boxerror ( 255 ) ; | |
} | |
insertpenalties = 0 ; | |
savesplittopskip = eqtb [2252750L ].hh .v.RH ; | |
if ( eqtb [8939293L ].cint <= 0 ) | |
{ | |
r = mem [memtop ].hh .v.RH ; | |
while ( r != memtop ) { | |
if ( mem [r + 2 ].hh .v.LH != -268435455L ) | |
{ | |
n = mem [r ].hh.b1 ; | |
ensurevbox ( n ) ; | |
if ( eqtb [2253543L + n ].hh .v.RH == -268435455L ) | |
eqtb [2253543L + n ].hh .v.RH = newnullbox () ; | |
p = eqtb [2253543L + n ].hh .v.RH + 5 ; | |
while ( mem [p ].hh .v.RH != -268435455L ) p = mem [p ].hh .v.RH ; | |
mem [r + 2 ].hh .v.RH = p ; | |
} | |
r = mem [r ].hh .v.RH ; | |
} | |
} | |
q = memtop - 4 ; | |
mem [q ].hh .v.RH = -268435455L ; | |
prevp = memtop - 2 ; | |
p = mem [prevp ].hh .v.RH ; | |
while ( p != bestpagebreak ) { | |
if ( mem [p ].hh.b0 == 3 ) | |
{ | |
if ( eqtb [8939293L ].cint <= 0 ) | |
{ | |
r = mem [memtop ].hh .v.RH ; | |
while ( mem [r ].hh.b1 != mem [p ].hh.b1 ) r = mem [r ].hh .v.RH | |
; | |
if ( mem [r + 2 ].hh .v.LH == -268435455L ) | |
wait = true ; | |
else { | |
wait = false ; | |
s = mem [r + 2 ].hh .v.RH ; | |
mem [s ].hh .v.RH = mem [p + 4 ].hh .v.LH ; | |
if ( mem [r + 2 ].hh .v.LH == p ) | |
{ | |
if ( mem [r ].hh.b0 == 1 ) { | |
if ( ( mem [r + 1 ].hh .v.LH == p ) && ( mem [r + 1 ].hh | |
.v.RH != -268435455L ) ) | |
{ | |
while ( mem [s ].hh .v.RH != mem [r + 1 ].hh .v.RH ) s = | |
mem [s ].hh .v.RH ; | |
mem [s ].hh .v.RH = -268435455L ; | |
eqtb [2252750L ].hh .v.RH = mem [p + 4 ].hh .v.RH ; | |
mem [p + 4 ].hh .v.LH = prunepagetop ( mem [r + 1 ].hh | |
.v.RH , false ) ; | |
if ( mem [p + 4 ].hh .v.LH != -268435455L ) | |
{ | |
tempptr = vpackage ( mem [p + 4 ].hh .v.LH , 0 , 1 , | |
1073741823L ) ; | |
mem [p + 3 ].cint = mem [tempptr + 3 ].cint + mem [ | |
tempptr + 2 ].cint ; | |
freenode ( tempptr , 8 ) ; | |
wait = true ; | |
} | |
} | |
} | |
mem [r + 2 ].hh .v.LH = -268435455L ; | |
n = mem [r ].hh.b1 ; | |
tempptr = mem [eqtb [2253543L + n ].hh .v.RH + 5 ].hh .v.RH ; | |
freenode ( eqtb [2253543L + n ].hh .v.RH , 8 ) ; | |
eqtb [2253543L + n ].hh .v.RH = vpackage ( tempptr , 0 , 1 , | |
1073741823L ) ; | |
} | |
else { | |
while ( mem [s ].hh .v.RH != -268435455L ) s = mem [s ].hh | |
.v.RH ; | |
mem [r + 2 ].hh .v.RH = s ; | |
} | |
} | |
mem [prevp ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
if ( wait ) | |
{ | |
mem [q ].hh .v.RH = p ; | |
q = p ; | |
incr ( insertpenalties ) ; | |
} | |
else { | |
deleteglueref ( mem [p + 4 ].hh .v.RH ) ; | |
freenode ( p , 5 ) ; | |
} | |
p = prevp ; | |
} | |
} | |
else if ( mem [p ].hh.b0 == 4 ) { | |
if ( mem [p + 1 ].hh .v.LH != 0 ) | |
{ | |
findsaelement ( 7 , mem [p + 1 ].hh .v.LH , true ) ; | |
if ( mem [curptr + 1 ].hh .v.RH == -268435455L ) | |
{ | |
mem [curptr + 1 ].hh .v.RH = mem [p + 1 ].hh .v.RH ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
} | |
if ( mem [curptr + 2 ].hh .v.LH != -268435455L ) | |
deletetokenref ( mem [curptr + 2 ].hh .v.LH ) ; | |
mem [curptr + 2 ].hh .v.LH = mem [p + 1 ].hh .v.RH ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
} | |
else { | |
if ( curmark [1 ]== -268435455L ) | |
{ | |
curmark [1 ]= mem [p + 1 ].hh .v.RH ; | |
incr ( mem [curmark [1 ]].hh .v.LH ) ; | |
} | |
if ( curmark [2 ]!= -268435455L ) | |
deletetokenref ( curmark [2 ]) ; | |
curmark [2 ]= mem [p + 1 ].hh .v.RH ; | |
incr ( mem [curmark [2 ]].hh .v.LH ) ; | |
} | |
} | |
prevp = p ; | |
p = mem [prevp ].hh .v.RH ; | |
} | |
eqtb [2252750L ].hh .v.RH = savesplittopskip ; | |
if ( p != -268435455L ) | |
{ | |
if ( mem [memtop - 1 ].hh .v.RH == -268435455L ) { | |
if ( nestptr == 0 ) | |
curlist .tailfield = pagetail ; | |
else nest [0 ].tailfield = pagetail ; | |
} | |
mem [pagetail ].hh .v.RH = mem [memtop - 1 ].hh .v.RH ; | |
mem [memtop - 1 ].hh .v.RH = p ; | |
mem [prevp ].hh .v.RH = -268435455L ; | |
} | |
savevbadness = eqtb [8939267L ].cint ; | |
eqtb [8939267L ].cint = 10000 ; | |
savevfuzz = eqtb [10053702L ].cint ; | |
eqtb [10053702L ].cint = 1073741823L ; | |
eqtb [2253798L ].hh .v.RH = vpackage ( mem [memtop - 2 ].hh .v.RH , | |
bestsize , 0 , pagemaxdepth ) ; | |
eqtb [8939267L ].cint = savevbadness ; | |
eqtb [10053702L ].cint = savevfuzz ; | |
if ( lastglue != 1073741823L ) | |
deleteglueref ( lastglue ) ; | |
pagecontents = 0 ; | |
pagetail = memtop - 2 ; | |
mem [memtop - 2 ].hh .v.RH = -268435455L ; | |
lastglue = 1073741823L ; | |
lastpenalty = 0 ; | |
lastkern = 0 ; | |
lastnodetype = -1 ; | |
pagesofar [7 ]= 0 ; | |
pagemaxdepth = 0 ; | |
if ( q != memtop - 4 ) | |
{ | |
mem [memtop - 2 ].hh .v.RH = mem [memtop - 4 ].hh .v.RH ; | |
pagetail = q ; | |
} | |
r = mem [memtop ].hh .v.RH ; | |
while ( r != memtop ) { | |
q = mem [r ].hh .v.RH ; | |
freenode ( r , 4 ) ; | |
r = q ; | |
} | |
mem [memtop ].hh .v.RH = memtop ; | |
if ( saroot [7 ]!= -268435455L ) { | |
if ( domarks ( 2 , 0 , saroot [7 ]) ) | |
saroot [7 ]= -268435455L ; | |
} | |
if ( ( curmark [0 ]!= -268435455L ) && ( curmark [1 ]== -268435455L ) ) | |
{ | |
curmark [1 ]= curmark [0 ]; | |
incr ( mem [curmark [0 ]].hh .v.LH ) ; | |
} | |
if ( eqtb [2253272L ].hh .v.RH != -268435455L ) { | |
if ( deadcycles >= eqtb [8939280L ].cint ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66434L ) ; | |
} | |
printint ( deadcycles ) ; | |
print ( 66435L ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66436L ; | |
helpline [1 ]= 66437L ; | |
helpline [0 ]= 66438L ; | |
} | |
error () ; | |
} | |
else { | |
outputactive = true ; | |
incr ( deadcycles ) ; | |
pushnest () ; | |
curlist .modefield = -1 ; | |
curlist .auxfield .cint = -65536000L ; | |
curlist .mlfield = - (integer) line ; | |
begintokenlist ( eqtb [2253272L ].hh .v.RH , 7 ) ; | |
newsavelevel ( 8 ) ; | |
normalparagraph () ; | |
scanleftbrace () ; | |
return ; | |
} | |
} | |
{ | |
if ( mem [memtop - 2 ].hh .v.RH != -268435455L ) | |
{ | |
if ( mem [memtop - 1 ].hh .v.RH == -268435455L ) { | |
if ( nestptr == 0 ) | |
curlist .tailfield = pagetail ; | |
else nest [0 ].tailfield = pagetail ; | |
} | |
else mem [pagetail ].hh .v.RH = mem [memtop - 1 ].hh .v.RH ; | |
mem [memtop - 1 ].hh .v.RH = mem [memtop - 2 ].hh .v.RH ; | |
mem [memtop - 2 ].hh .v.RH = -268435455L ; | |
pagetail = memtop - 2 ; | |
} | |
flushnodelist ( discptr [2 ]) ; | |
discptr [2 ]= -268435455L ; | |
shipout ( eqtb [2253798L ].hh .v.RH ) ; | |
eqtb [2253798L ].hh .v.RH = -268435455L ; | |
} | |
} | |
void | |
buildpage ( void ) | |
{ | |
/* 10 30 31 22 80 90 */ buildpage_regmem | |
halfword p ; | |
halfword q, r ; | |
integer b, c ; | |
integer pi ; | |
unsigned char n ; | |
scaled delta, h, w ; | |
if ( ( mem [memtop - 1 ].hh .v.RH == -268435455L ) || outputactive ) | |
return ; | |
do { | |
lab22: p = mem [memtop - 1 ].hh .v.RH ; | |
if ( lastglue != 1073741823L ) | |
deleteglueref ( lastglue ) ; | |
lastpenalty = 0 ; | |
lastkern = 0 ; | |
lastnodetype = mem [p ].hh.b0 + 1 ; | |
if ( mem [p ].hh.b0 == 10 ) | |
{ | |
lastglue = mem [p + 1 ].hh .v.LH ; | |
incr ( mem [lastglue ].hh .v.RH ) ; | |
} | |
else { | |
lastglue = 1073741823L ; | |
if ( mem [p ].hh.b0 == 12 ) | |
lastpenalty = mem [p + 1 ].cint ; | |
else if ( mem [p ].hh.b0 == 11 ) | |
lastkern = mem [p + 1 ].cint ; | |
} | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
if ( pagecontents < 2 ) | |
{ | |
if ( pagecontents == 0 ) | |
freezepagespecs ( 2 ) ; | |
else pagecontents = 2 ; | |
q = newskipparam ( 9 ) ; | |
if ( mem [tempptr + 1 ].cint > mem [p + 3 ].cint ) | |
mem [tempptr + 1 ].cint = mem [tempptr + 1 ].cint - mem [p + 3 ] | |
.cint ; | |
else mem [tempptr + 1 ].cint = 0 ; | |
mem [q ].hh .v.RH = p ; | |
mem [memtop - 1 ].hh .v.RH = q ; | |
goto lab22 ; | |
} | |
else { | |
pagesofar [1 ]= pagesofar [1 ]+ pagesofar [7 ]+ mem [p + 3 ] | |
.cint ; | |
pagesofar [7 ]= mem [p + 2 ].cint ; | |
goto lab80 ; | |
} | |
break ; | |
case 8 : | |
{ | |
if ( ( mem [p ].hh.b1 == 43 ) || ( mem [p ].hh.b1 == 44 ) ) | |
{ | |
pagesofar [1 ]= pagesofar [1 ]+ pagesofar [7 ]+ mem [p + 3 ] | |
.cint ; | |
pagesofar [7 ]= mem [p + 2 ].cint ; | |
} | |
goto lab80 ; | |
} | |
break ; | |
case 10 : | |
if ( pagecontents < 2 ) | |
goto lab31 ; | |
else if ( ( mem [pagetail ].hh.b0 < 9 ) ) | |
pi = 0 ; | |
else goto lab90 ; | |
break ; | |
case 11 : | |
if ( pagecontents < 2 ) | |
goto lab31 ; | |
else if ( mem [p ].hh .v.RH == -268435455L ) | |
return ; | |
else if ( mem [mem [p ].hh .v.RH ].hh.b0 == 10 ) | |
pi = 0 ; | |
else goto lab90 ; | |
break ; | |
case 12 : | |
if ( pagecontents < 2 ) | |
goto lab31 ; | |
else pi = mem [p + 1 ].cint ; | |
break ; | |
case 4 : | |
goto lab80 ; | |
break ; | |
case 3 : | |
{ | |
if ( pagecontents == 0 ) | |
freezepagespecs ( 1 ) ; | |
n = mem [p ].hh.b1 ; | |
r = memtop ; | |
while ( n >= mem [mem [r ].hh .v.RH ].hh.b1 ) r = mem [r ].hh | |
.v.RH ; | |
n = n ; | |
if ( mem [r ].hh.b1 != n ) | |
{ | |
q = getnode ( 4 ) ; | |
mem [q ].hh .v.RH = mem [r ].hh .v.RH ; | |
mem [r ].hh .v.RH = q ; | |
r = q ; | |
mem [r ].hh.b1 = n ; | |
mem [r ].hh.b0 = 0 ; | |
ensurevbox ( n ) ; | |
if ( eqtb [2253543L + n ].hh .v.RH == -268435455L ) | |
mem [r + 3 ].cint = 0 ; | |
else mem [r + 3 ].cint = mem [eqtb [2253543L + n ].hh .v.RH + 3 | |
].cint + mem [eqtb [2253543L + n ].hh .v.RH + 2 ].cint ; | |
mem [r + 2 ].hh .v.LH = -268435455L ; | |
q = eqtb [2252759L + n ].hh .v.RH ; | |
if ( eqtb [8939325L + n ].cint == 1000 ) | |
h = mem [r + 3 ].cint ; | |
else h = xovern ( mem [r + 3 ].cint , 1000 ) * eqtb [8939325L + n | |
].cint ; | |
pagesofar [0 ]= pagesofar [0 ]- h - mem [q + 1 ].cint ; | |
pagesofar [2 + mem [q ].hh.b0 ]= pagesofar [2 + mem [q ] | |
.hh.b0 ]+ mem [q + 2 ].cint ; | |
pagesofar [6 ]= pagesofar [6 ]+ mem [q + 3 ].cint ; | |
if ( ( mem [q ].hh.b1 != 0 ) && ( mem [q + 3 ].cint != 0 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66427L ) ; | |
} | |
printesc ( 65695L ) ; | |
printint ( n ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66428L ; | |
helpline [1 ]= 66429L ; | |
helpline [0 ]= 66343L ; | |
} | |
error () ; | |
} | |
} | |
if ( mem [r ].hh.b0 == 1 ) | |
insertpenalties = insertpenalties + mem [p + 1 ].cint ; | |
else { | |
mem [r + 2 ].hh .v.RH = p ; | |
delta = pagesofar [0 ]- pagesofar [1 ]- pagesofar [7 ]+ | |
pagesofar [6 ]; | |
if ( eqtb [8939325L + n ].cint == 1000 ) | |
h = mem [p + 3 ].cint ; | |
else h = xovern ( mem [p + 3 ].cint , 1000 ) * eqtb [8939325L + n | |
].cint ; | |
if ( ( ( h <= 0 ) || ( h <= delta ) ) && ( mem [p + 3 ].cint + mem | |
[r + 3 ].cint <= eqtb [10053716L + n ].cint ) ) | |
{ | |
pagesofar [0 ]= pagesofar [0 ]- h ; | |
mem [r + 3 ].cint = mem [r + 3 ].cint + mem [p + 3 ].cint ; | |
} | |
else { | |
if ( eqtb [8939325L + n ].cint <= 0 ) | |
w = 1073741823L ; | |
else { | |
w = pagesofar [0 ]- pagesofar [1 ]- pagesofar [7 ]; | |
if ( eqtb [8939325L + n ].cint != 1000 ) | |
w = xovern ( w , eqtb [8939325L + n ].cint ) * 1000 ; | |
} | |
if ( w > eqtb [10053716L + n ].cint - mem [r + 3 ].cint ) | |
w = eqtb [10053716L + n ].cint - mem [r + 3 ].cint ; | |
q = vertbreak ( mem [p + 4 ].hh .v.LH , w , mem [p + 2 ].cint | |
) ; | |
mem [r + 3 ].cint = mem [r + 3 ].cint + bestheightplusdepth ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939273L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66430L ) ; | |
printint ( n ) ; | |
print ( 66431L ) ; | |
printscaled ( w ) ; | |
printchar ( 44 ) ; | |
printscaled ( bestheightplusdepth ) ; | |
print ( 66358L ) ; | |
if ( q == -268435455L ) | |
printint ( -10000 ) ; | |
else if ( mem [q ].hh.b0 == 12 ) | |
printint ( mem [q + 1 ].cint ) ; | |
else printchar ( 48 ) ; | |
enddiagnostic ( false ) ; | |
} | |
#endif /* STAT */ | |
if ( eqtb [8939325L + n ].cint != 1000 ) | |
bestheightplusdepth = xovern ( bestheightplusdepth , 1000 ) * eqtb | |
[8939325L + n ].cint ; | |
pagesofar [0 ]= pagesofar [0 ]- bestheightplusdepth ; | |
mem [r ].hh.b0 = 1 ; | |
mem [r + 1 ].hh .v.RH = q ; | |
mem [r + 1 ].hh .v.LH = p ; | |
if ( q == -268435455L ) | |
insertpenalties = insertpenalties - 10000 ; | |
else if ( mem [q ].hh.b0 == 12 ) | |
insertpenalties = insertpenalties + mem [q + 1 ].cint ; | |
} | |
} | |
goto lab80 ; | |
} | |
break ; | |
default: | |
confusion ( 66422L ) ; | |
break ; | |
} | |
if ( pi < 10000 ) | |
{ | |
if ( pagesofar [1 ]< pagesofar [0 ]) { | |
if ( ( pagesofar [3 ]!= 0 ) || ( pagesofar [4 ]!= 0 ) || ( | |
pagesofar [5 ]!= 0 ) ) | |
b = 0 ; | |
else b = badness ( pagesofar [0 ]- pagesofar [1 ], pagesofar [2 ] | |
) ; | |
} | |
else if ( pagesofar [1 ]- pagesofar [0 ]> pagesofar [6 ]) | |
b = 1073741823L ; | |
else b = badness ( pagesofar [1 ]- pagesofar [0 ], pagesofar [6 ]) | |
; | |
if ( b < 1073741823L ) { | |
if ( pi <= -10000 ) | |
c = pi ; | |
else if ( b < 10000 ) | |
c = b + pi + insertpenalties ; | |
else c = 100000L ; | |
} | |
else c = b ; | |
if ( insertpenalties >= 10000 ) | |
c = 1073741823L ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939273L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 37 ) ; | |
print ( 66354L ) ; | |
printtotals () ; | |
print ( 66425L ) ; | |
printscaled ( pagesofar [0 ]) ; | |
print ( 66357L ) ; | |
if ( b == 1073741823L ) | |
printchar ( 42 ) ; | |
else printint ( b ) ; | |
print ( 66358L ) ; | |
printint ( pi ) ; | |
print ( 66426L ) ; | |
if ( c == 1073741823L ) | |
printchar ( 42 ) ; | |
else printint ( c ) ; | |
if ( c <= leastpagecost ) | |
printchar ( 35 ) ; | |
enddiagnostic ( false ) ; | |
} | |
#endif /* STAT */ | |
if ( c <= leastpagecost ) | |
{ | |
bestpagebreak = p ; | |
bestsize = pagesofar [0 ]; | |
leastpagecost = c ; | |
r = mem [memtop ].hh .v.RH ; | |
while ( r != memtop ) { | |
mem [r + 2 ].hh .v.LH = mem [r + 2 ].hh .v.RH ; | |
r = mem [r ].hh .v.RH ; | |
} | |
} | |
if ( ( c == 1073741823L ) || ( pi <= -10000 ) ) | |
{ | |
fireup ( p ) ; | |
if ( outputactive ) | |
return ; | |
goto lab30 ; | |
} | |
} | |
if ( ( mem [p ].hh.b0 < 10 ) || ( mem [p ].hh.b0 > 11 ) ) | |
goto lab80 ; | |
lab90: if ( mem [p ].hh.b0 == 11 ) | |
q = p ; | |
else { | |
q = mem [p + 1 ].hh .v.LH ; | |
pagesofar [2 + mem [q ].hh.b0 ]= pagesofar [2 + mem [q ].hh.b0 ] | |
+ mem [q + 2 ].cint ; | |
pagesofar [6 ]= pagesofar [6 ]+ mem [q + 3 ].cint ; | |
if ( ( mem [q ].hh.b1 != 0 ) && ( mem [q + 3 ].cint != 0 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66423L ) ; | |
} | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66424L ; | |
helpline [2 ]= 66392L ; | |
helpline [1 ]= 66393L ; | |
helpline [0 ]= 66343L ; | |
} | |
error () ; | |
r = newspec ( q ) ; | |
mem [r ].hh.b1 = 0 ; | |
deleteglueref ( q ) ; | |
mem [p + 1 ].hh .v.LH = r ; | |
q = r ; | |
} | |
} | |
pagesofar [1 ]= pagesofar [1 ]+ pagesofar [7 ]+ mem [q + 1 ].cint | |
; | |
pagesofar [7 ]= 0 ; | |
lab80: if ( pagesofar [7 ]> pagemaxdepth ) | |
{ | |
pagesofar [1 ]= pagesofar [1 ]+ pagesofar [7 ]- pagemaxdepth ; | |
pagesofar [7 ]= pagemaxdepth ; | |
} | |
mem [pagetail ].hh .v.RH = p ; | |
pagetail = p ; | |
mem [memtop - 1 ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
goto lab30 ; | |
lab31: mem [memtop - 1 ].hh .v.RH = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
if ( eqtb [8939306L ].cint > 0 ) | |
{ | |
if ( discptr [2 ]== -268435455L ) | |
discptr [2 ]= p ; | |
else mem [discptr [1 ]].hh .v.RH = p ; | |
discptr [1 ]= p ; | |
} | |
else flushnodelist ( p ) ; | |
lab30: ; | |
} while ( ! ( mem [memtop - 1 ].hh .v.RH == -268435455L ) ) ; | |
if ( nestptr == 0 ) | |
curlist .tailfield = memtop - 1 ; | |
else nest [0 ].tailfield = memtop - 1 ; | |
} | |
void | |
appspace ( void ) | |
{ | |
appspace_regmem | |
halfword q ; | |
if ( ( curlist .auxfield .hh .v.LH >= 2000 ) && ( eqtb [2252753L ].hh | |
.v.RH != membot ) ) | |
q = newparamglue ( 13 ) ; | |
else { | |
if ( eqtb [2252752L ].hh .v.RH != membot ) | |
mainp = eqtb [2252752L ].hh .v.RH ; | |
else { | |
mainp = fontglue [eqtb [2253799L ].hh .v.RH ]; | |
if ( mainp == -268435455L ) | |
{ | |
mainp = newspec ( membot ) ; | |
maink = parambase [eqtb [2253799L ].hh .v.RH ]+ 2 ; | |
mem [mainp + 1 ].cint = fontinfo [maink ].cint ; | |
mem [mainp + 2 ].cint = fontinfo [maink + 1 ].cint ; | |
mem [mainp + 3 ].cint = fontinfo [maink + 2 ].cint ; | |
fontglue [eqtb [2253799L ].hh .v.RH ]= mainp ; | |
} | |
} | |
mainp = newspec ( mainp ) ; | |
if ( curlist .auxfield .hh .v.LH >= 2000 ) | |
mem [mainp + 1 ].cint = mem [mainp + 1 ].cint + fontinfo [7 + | |
parambase [eqtb [2253799L ].hh .v.RH ]].cint ; | |
mem [mainp + 2 ].cint = xnoverd ( mem [mainp + 2 ].cint , curlist | |
.auxfield .hh .v.LH , 1000 ) ; | |
mem [mainp + 3 ].cint = xnoverd ( mem [mainp + 3 ].cint , 1000 , | |
curlist .auxfield .hh .v.LH ) ; | |
q = newglue ( mainp ) ; | |
mem [mainp ].hh .v.RH = -268435455L ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = q ; | |
curlist .tailfield = q ; | |
} | |
void | |
insertdollarsign ( void ) | |
{ | |
insertdollarsign_regmem | |
backinput () ; | |
curtok = 6291492L ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66446L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66447L ; | |
helpline [0 ]= 66448L ; | |
} | |
inserror () ; | |
} | |
void | |
youcant ( void ) | |
{ | |
youcant_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66029L ) ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
printinmode ( curlist .modefield ) ; | |
} | |
void | |
reportillegalcase ( void ) | |
{ | |
reportillegalcase_regmem | |
youcant () ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66449L ; | |
helpline [2 ]= 66450L ; | |
helpline [1 ]= 66451L ; | |
helpline [0 ]= 66452L ; | |
} | |
error () ; | |
} | |
boolean | |
privileged ( void ) | |
{ | |
register boolean Result; privileged_regmem | |
if ( curlist .modefield > 0 ) | |
Result = true ; | |
else { | |
reportillegalcase () ; | |
Result = false ; | |
} | |
return Result ; | |
} | |
boolean | |
itsallover ( void ) | |
{ | |
/* 10 */ register boolean Result; itsallover_regmem | |
if ( privileged () ) | |
{ | |
if ( ( memtop - 2 == pagetail ) && ( curlist .headfield == curlist | |
.tailfield ) && ( deadcycles == 0 ) ) | |
{ | |
Result = true ; | |
return Result ; | |
} | |
backinput () ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnullbox () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield + 1 ].cint = eqtb [10053696L ].cint ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newglue ( membot + 8 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( -1073741824L ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
buildpage () ; | |
} | |
Result = false ; | |
return Result ; | |
} | |
void | |
appendglue ( void ) | |
{ | |
appendglue_regmem | |
smallnumber s ; | |
s = curchr ; | |
switch ( s ) | |
{case 0 : | |
curval = membot + 4 ; | |
break ; | |
case 1 : | |
curval = membot + 8 ; | |
break ; | |
case 2 : | |
curval = membot + 12 ; | |
break ; | |
case 3 : | |
curval = membot + 16 ; | |
break ; | |
case 4 : | |
scanglue ( 2 ) ; | |
break ; | |
case 5 : | |
scanglue ( 3 ) ; | |
break ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newglue ( curval ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( s >= 4 ) | |
{ | |
decr ( mem [curval ].hh .v.RH ) ; | |
if ( s > 4 ) | |
mem [curlist .tailfield ].hh.b1 = 99 ; | |
} | |
} | |
void | |
appendkern ( void ) | |
{ | |
appendkern_regmem | |
quarterword s ; | |
s = curchr ; | |
scandimen ( s == 99 , false , false ) ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newkern ( curval ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = s ; | |
} | |
void | |
offsave ( void ) | |
{ | |
offsave_regmem | |
halfword p ; | |
if ( curgroup == 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66163L ) ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66470L ; | |
} | |
error () ; | |
} | |
else { | |
backinput () ; | |
p = getavail () ; | |
mem [memtop - 3 ].hh .v.RH = p ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65953L ) ; | |
} | |
switch ( curgroup ) | |
{case 14 : | |
{ | |
mem [p ].hh .v.LH = 35797659L ; | |
printesc ( 65828L ) ; | |
} | |
break ; | |
case 15 : | |
{ | |
mem [p ].hh .v.LH = 6291492L ; | |
printchar ( 36 ) ; | |
} | |
break ; | |
case 16 : | |
{ | |
mem [p ].hh .v.LH = 35797660L ; | |
mem [p ].hh .v.RH = getavail () ; | |
p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.LH = 25165870L ; | |
printesc ( 66469L ) ; | |
} | |
break ; | |
default: | |
{ | |
mem [p ].hh .v.LH = 4194429L ; | |
printchar ( 125 ) ; | |
} | |
break ; | |
} | |
print ( 65954L ) ; | |
begintokenlist ( mem [memtop - 3 ].hh .v.RH , 5 ) ; | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66464L ; | |
helpline [3 ]= 66465L ; | |
helpline [2 ]= 66466L ; | |
helpline [1 ]= 66467L ; | |
helpline [0 ]= 66468L ; | |
} | |
error () ; | |
} | |
} | |
void | |
extrarightbrace ( void ) | |
{ | |
extrarightbrace_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66475L ) ; | |
} | |
switch ( curgroup ) | |
{case 14 : | |
printesc ( 65828L ) ; | |
break ; | |
case 15 : | |
printchar ( 36 ) ; | |
break ; | |
case 16 : | |
printesc ( 66280L ) ; | |
break ; | |
} | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66476L ; | |
helpline [3 ]= 66477L ; | |
helpline [2 ]= 66478L ; | |
helpline [1 ]= 66479L ; | |
helpline [0 ]= 66480L ; | |
} | |
error () ; | |
incr ( alignstate ) ; | |
} | |
void | |
normalparagraph ( void ) | |
{ | |
normalparagraph_regmem | |
if ( eqtb [8939259L ].cint != 0 ) | |
eqworddefine ( 8939259L , 0 ) ; | |
if ( eqtb [10053710L ].cint != 0 ) | |
eqworddefine ( 10053710L , 0 ) ; | |
if ( eqtb [8939281L ].cint != 1 ) | |
eqworddefine ( 8939281L , 1 ) ; | |
if ( eqtb [2253271L ].hh .v.RH != -268435455L ) | |
eqdefine ( 2253271L , 120 , -268435455L ) ; | |
if ( eqtb [2253539L ].hh .v.RH != -268435455L ) | |
eqdefine ( 2253539L , 120 , -268435455L ) ; | |
} | |
void | |
zboxend ( integer boxcontext ) | |
{ | |
boxend_regmem | |
halfword p ; | |
smallnumber a ; | |
if ( boxcontext < 1073741824L ) | |
{ | |
if ( curbox != -268435455L ) | |
{ | |
mem [curbox + 4 ].cint = boxcontext ; | |
if ( abs ( curlist .modefield ) == 1 ) | |
{ | |
if ( preadjusttail != -268435455L ) | |
{ | |
if ( memtop - 14 != preadjusttail ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 14 ].hh | |
.v.RH ; | |
curlist .tailfield = preadjusttail ; | |
} | |
preadjusttail = -268435455L ; | |
} | |
appendtovlist ( curbox ) ; | |
if ( adjusttail != -268435455L ) | |
{ | |
if ( memtop - 5 != adjusttail ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 5 ].hh | |
.v.RH ; | |
curlist .tailfield = adjusttail ; | |
} | |
adjusttail = -268435455L ; | |
} | |
if ( curlist .modefield > 0 ) | |
buildpage () ; | |
} | |
else { | |
if ( abs ( curlist .modefield ) == 104 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else { | |
p = newnoad () ; | |
mem [p + 1 ].hh .v.RH = 2 ; | |
mem [p + 1 ].hh .v.LH = curbox ; | |
curbox = p ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = curbox ; | |
curlist .tailfield = curbox ; | |
} | |
} | |
} | |
else if ( boxcontext < 1073807360L ) | |
{ | |
if ( boxcontext < 1073774592L ) | |
{ | |
curval = boxcontext - 1073741824L ; | |
a = 0 ; | |
} | |
else { | |
curval = boxcontext - 1073774592L ; | |
a = 4 ; | |
} | |
if ( curval < 256 ) { | |
if ( ( a >= 4 ) ) | |
geqdefine ( 2253543L + curval , 121 , curbox ) ; | |
else eqdefine ( 2253543L + curval , 121 , curbox ) ; | |
} | |
else { | |
findsaelement ( 4 , curval , true ) ; | |
if ( ( a >= 4 ) ) | |
gsadef ( curptr , curbox ) ; | |
else sadef ( curptr , curbox ) ; | |
} | |
} | |
else if ( curbox != -268435455L ) { | |
if ( boxcontext > 1073807360L ) | |
{ | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
if ( ( ( curcmd == 26 ) && ( abs ( curlist .modefield ) != 1 ) ) || ( ( | |
curcmd == 27 ) && ( abs ( curlist .modefield ) == 1 ) ) ) | |
{ | |
appendglue () ; | |
mem [curlist .tailfield ].hh.b1 = boxcontext - ( 1073807261L ) ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = curbox ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66493L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66494L ; | |
helpline [1 ]= 66495L ; | |
helpline [0 ]= 66496L ; | |
} | |
backerror () ; | |
flushnodelist ( curbox ) ; | |
} | |
} | |
else shipout ( curbox ) ; | |
} | |
} | |
void | |
zbeginbox ( integer boxcontext ) | |
{ | |
/* 10 30 */ beginbox_regmem | |
halfword p, q ; | |
halfword r ; | |
boolean fm ; | |
halfword tx ; | |
quarterword m ; | |
halfword k ; | |
halfword n ; | |
switch ( curchr ) | |
{case 0 : | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
curbox = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
curbox = -268435455L ; | |
else curbox = mem [curptr + 1 ].hh .v.RH ; | |
} | |
if ( curval < 256 ) | |
eqtb [2253543L + curval ].hh .v.RH = -268435455L ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr != -268435455L ) | |
{ | |
mem [curptr + 1 ].hh .v.RH = -268435455L ; | |
incr ( mem [curptr + 1 ].hh .v.LH ) ; | |
deletesaref ( curptr ) ; | |
} | |
} | |
} | |
break ; | |
case 1 : | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
q = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
q = -268435455L ; | |
else q = mem [curptr + 1 ].hh .v.RH ; | |
} | |
curbox = copynodelist ( q ) ; | |
} | |
break ; | |
case 2 : | |
{ | |
curbox = -268435455L ; | |
if ( abs ( curlist .modefield ) == 207 ) | |
{ | |
youcant () ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66498L ; | |
} | |
error () ; | |
} | |
else if ( ( curlist .modefield == 1 ) && ( curlist .headfield == curlist | |
.tailfield ) ) | |
{ | |
youcant () ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66499L ; | |
helpline [0 ]= 66500L ; | |
} | |
error () ; | |
} | |
else { | |
tx = curlist .tailfield ; | |
if ( ! ( tx >= himemmin ) ) { | |
if ( ( mem [tx ].hh.b0 == 9 ) && ( mem [tx ].hh.b1 == 3 ) ) | |
{ | |
r = curlist .headfield ; | |
do { | |
q = r ; | |
r = mem [q ].hh .v.RH ; | |
} while ( ! ( r == tx ) ) ; | |
tx = q ; | |
} | |
} | |
if ( ! ( tx >= himemmin ) ) { | |
if ( ( mem [tx ].hh.b0 == 0 ) || ( mem [tx ].hh.b0 == 1 ) ) | |
{ | |
q = curlist .headfield ; | |
p = -268435455L ; | |
do { | |
r = p ; | |
p = q ; | |
fm = false ; | |
if ( ! ( q >= himemmin ) ) { | |
if ( mem [q ].hh.b0 == 7 ) | |
{ | |
{register integer for_end; m = 1 ;for_end = mem [q ] | |
.hh.b1 ; if ( m <= for_end) do | |
p = mem [p ].hh .v.RH ; | |
while ( m++ < for_end ) ;} | |
if ( p == tx ) | |
goto lab30 ; | |
} | |
else if ( ( mem [q ].hh.b0 == 9 ) && ( mem [q ].hh.b1 == 2 | |
) ) | |
fm = true ; | |
} | |
q = mem [p ].hh .v.RH ; | |
} while ( ! ( q == tx ) ) ; | |
q = mem [tx ].hh .v.RH ; | |
mem [p ].hh .v.RH = q ; | |
mem [tx ].hh .v.RH = -268435455L ; | |
if ( q == -268435455L ) { | |
if ( fm ) | |
confusion ( 66497L ) ; | |
else curlist .tailfield = p ; | |
} | |
else if ( fm ) | |
{ | |
curlist .tailfield = r ; | |
mem [r ].hh .v.RH = -268435455L ; | |
flushnodelist ( p ) ; | |
} | |
curbox = tx ; | |
mem [curbox + 4 ].cint = 0 ; | |
} | |
} | |
lab30: ; | |
} | |
} | |
break ; | |
case 3 : | |
{ | |
scanregisternum () ; | |
n = curval ; | |
if ( ! scankeyword ( 66244L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66501L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66502L ; | |
helpline [0 ]= 66503L ; | |
} | |
error () ; | |
} | |
scandimen ( false , false , false ) ; | |
curbox = vsplit ( n , curval ) ; | |
} | |
break ; | |
default: | |
{ | |
k = curchr - 4 ; | |
savestack [saveptr + 0 ].cint = boxcontext ; | |
if ( k == 104 ) { | |
if ( ( boxcontext < 1073741824L ) && ( abs ( curlist .modefield ) == 1 | |
) ) | |
scanspec ( 3 , true ) ; | |
else scanspec ( 2 , true ) ; | |
} | |
else { | |
if ( k == 1 ) | |
scanspec ( 4 , true ) ; | |
else { | |
scanspec ( 5 , true ) ; | |
k = 1 ; | |
} | |
normalparagraph () ; | |
} | |
pushnest () ; | |
curlist .modefield = - (integer) k ; | |
if ( k == 1 ) | |
{ | |
curlist .auxfield .cint = -65536000L ; | |
if ( eqtb [2253277L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253277L ].hh .v.RH , 12 ) ; | |
} | |
else { | |
curlist .auxfield .hh .v.LH = 1000 ; | |
if ( eqtb [2253276L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253276L ].hh .v.RH , 11 ) ; | |
} | |
return ; | |
} | |
break ; | |
} | |
boxend ( boxcontext ) ; | |
} | |
void | |
zscanbox ( integer boxcontext ) | |
{ | |
scanbox_regmem | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
if ( curcmd == 20 ) | |
beginbox ( boxcontext ) ; | |
else if ( ( boxcontext >= 1073807361L ) && ( ( curcmd == 36 ) || ( curcmd == | |
35 ) ) ) | |
{ | |
curbox = scanrulespec () ; | |
boxend ( boxcontext ) ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66504L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66505L ; | |
helpline [1 ]= 66506L ; | |
helpline [0 ]= 66507L ; | |
} | |
backerror () ; | |
} | |
} | |
void | |
zpackage ( smallnumber c ) | |
{ | |
package_regmem | |
scaled h ; | |
halfword p ; | |
scaled d ; | |
integer u, v ; | |
d = eqtb [10053700L ].cint ; | |
u = eqtb [8939314L ].cint ; | |
unsave () ; | |
saveptr = saveptr - 3 ; | |
v = eqtb [8939314L ].cint ; | |
eqtb [8939314L ].cint = u ; | |
if ( curlist .modefield == -104 ) | |
curbox = hpack ( mem [curlist .headfield ].hh .v.RH , savestack [saveptr | |
+ 2 ].cint , savestack [saveptr + 1 ].cint ) ; | |
else { | |
curbox = vpackage ( mem [curlist .headfield ].hh .v.RH , savestack [ | |
saveptr + 2 ].cint , savestack [saveptr + 1 ].cint , d ) ; | |
if ( c == 4 ) | |
{ | |
h = 0 ; | |
p = mem [curbox + 5 ].hh .v.RH ; | |
if ( p != -268435455L ) { | |
if ( mem [p ].hh.b0 <= 2 ) | |
h = mem [p + 3 ].cint ; | |
} | |
mem [curbox + 2 ].cint = mem [curbox + 2 ].cint - h + mem [curbox + | |
3 ].cint ; | |
mem [curbox + 3 ].cint = h ; | |
} | |
} | |
eqtb [8939314L ].cint = v ; | |
popnest () ; | |
boxend ( savestack [saveptr + 0 ].cint ) ; | |
} | |
smallnumber | |
znormmin ( integer h ) | |
{ | |
register smallnumber Result; normmin_regmem | |
if ( h <= 0 ) | |
Result = 1 ; | |
else if ( h >= 63 ) | |
Result = 63 ; | |
else Result = h ; | |
return Result ; | |
} | |
void | |
znewgraf ( boolean indented ) | |
{ | |
newgraf_regmem | |
curlist .pgfield = 0 ; | |
if ( ( curlist .modefield == 1 ) || ( curlist .headfield != curlist | |
.tailfield ) ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( 2 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
pushnest () ; | |
curlist .modefield = 104 ; | |
curlist .auxfield .hh .v.LH = 1000 ; | |
if ( eqtb [8939290L ].cint <= 0 ) | |
curlang = 0 ; | |
else if ( eqtb [8939290L ].cint > 255 ) | |
curlang = 0 ; | |
else curlang = eqtb [8939290L ].cint ; | |
curlist .auxfield .hh .v.RH = curlang ; | |
curlist .pgfield = ( normmin ( eqtb [8939291L ].cint ) * 64 + normmin ( | |
eqtb [8939292L ].cint ) ) * 65536L + curlang ; | |
if ( indented ) | |
{ | |
curlist .tailfield = newnullbox () ; | |
mem [curlist .headfield ].hh .v.RH = curlist .tailfield ; | |
mem [curlist .tailfield + 1 ].cint = eqtb [10053693L ].cint ; | |
if ( ( insertsrcspecialeverypar ) ) | |
insertsrcspecial () ; | |
} | |
if ( eqtb [2253273L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253273L ].hh .v.RH , 8 ) ; | |
if ( nestptr == 1 ) | |
buildpage () ; | |
} | |
void | |
indentinhmode ( void ) | |
{ | |
indentinhmode_regmem | |
halfword p, q ; | |
if ( curchr > 0 ) | |
{ | |
p = newnullbox () ; | |
mem [p + 1 ].cint = eqtb [10053693L ].cint ; | |
if ( abs ( curlist .modefield ) == 104 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else { | |
q = newnoad () ; | |
mem [q + 1 ].hh .v.RH = 2 ; | |
mem [q + 1 ].hh .v.LH = p ; | |
p = q ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
} | |
void | |
headforvmode ( void ) | |
{ | |
headforvmode_regmem | |
if ( curlist .modefield < 0 ) { | |
if ( curcmd != 36 ) | |
offsave () ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66029L ) ; | |
} | |
printesc ( 65833L ) ; | |
print ( 66510L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66511L ; | |
helpline [0 ]= 66512L ; | |
} | |
error () ; | |
} | |
} | |
else { | |
backinput () ; | |
curtok = partoken ; | |
backinput () ; | |
curinput .indexfield = 5 ; | |
} | |
} | |
void | |
endgraf ( void ) | |
{ | |
endgraf_regmem | |
if ( curlist .modefield == 104 ) | |
{ | |
if ( curlist .headfield == curlist .tailfield ) | |
popnest () ; | |
else linebreak ( false ) ; | |
if ( curlist .eTeXauxfield != -268435455L ) | |
{ | |
flushlist ( curlist .eTeXauxfield ) ; | |
curlist .eTeXauxfield = -268435455L ; | |
} | |
normalparagraph () ; | |
errorcount = 0 ; | |
} | |
} | |
void | |
begininsertoradjust ( void ) | |
{ | |
begininsertoradjust_regmem | |
if ( curcmd == 38 ) | |
curval = 255 ; | |
else { | |
scaneightbitint () ; | |
if ( curval == 255 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66513L ) ; | |
} | |
printesc ( 65618L ) ; | |
printint ( 255 ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66514L ; | |
} | |
error () ; | |
curval = 0 ; | |
} | |
} | |
savestack [saveptr + 0 ].cint = curval ; | |
if ( ( curcmd == 38 ) && scankeyword ( 66515L ) ) | |
savestack [saveptr + 1 ].cint = 1 ; | |
else savestack [saveptr + 1 ].cint = 0 ; | |
saveptr = saveptr + 2 ; | |
newsavelevel ( 11 ) ; | |
scanleftbrace () ; | |
normalparagraph () ; | |
pushnest () ; | |
curlist .modefield = -1 ; | |
curlist .auxfield .cint = -65536000L ; | |
} | |
void | |
makemark ( void ) | |
{ | |
makemark_regmem | |
halfword p ; | |
halfword c ; | |
if ( curchr == 0 ) | |
c = 0 ; | |
else { | |
scanregisternum () ; | |
c = curval ; | |
} | |
p = scantoks ( false , true ) ; | |
p = getnode ( 2 ) ; | |
mem [p + 1 ].hh .v.LH = c ; | |
mem [p ].hh.b0 = 4 ; | |
mem [p ].hh.b1 = 0 ; | |
mem [p + 1 ].hh .v.RH = defref ; | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = p ; | |
} | |
void | |
appendpenalty ( void ) | |
{ | |
appendpenalty_regmem | |
scanint () ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( curval ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( curlist .modefield == 1 ) | |
buildpage () ; | |
} | |
void | |
deletelast ( void ) | |
{ | |
/* 10 */ deletelast_regmem | |
halfword p, q ; | |
halfword r ; | |
boolean fm ; | |
halfword tx ; | |
quarterword m ; | |
if ( ( curlist .modefield == 1 ) && ( curlist .tailfield == curlist | |
.headfield ) ) | |
{ | |
if ( ( curchr != 10 ) || ( lastglue != 1073741823L ) ) | |
{ | |
youcant () ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66499L ; | |
helpline [0 ]= 66516L ; | |
} | |
if ( curchr == 11 ) | |
helpline [0 ]= ( 66517L ) ; | |
else if ( curchr != 10 ) | |
helpline [0 ]= ( 66518L ) ; | |
error () ; | |
} | |
} | |
else { | |
tx = curlist .tailfield ; | |
if ( ! ( tx >= himemmin ) ) { | |
if ( ( mem [tx ].hh.b0 == 9 ) && ( mem [tx ].hh.b1 == 3 ) ) | |
{ | |
r = curlist .headfield ; | |
do { | |
q = r ; | |
r = mem [q ].hh .v.RH ; | |
} while ( ! ( r == tx ) ) ; | |
tx = q ; | |
} | |
} | |
if ( ! ( tx >= himemmin ) ) { | |
if ( mem [tx ].hh.b0 == curchr ) | |
{ | |
q = curlist .headfield ; | |
p = -268435455L ; | |
do { | |
r = p ; | |
p = q ; | |
fm = false ; | |
if ( ! ( q >= himemmin ) ) { | |
if ( mem [q ].hh.b0 == 7 ) | |
{ | |
{register integer for_end; m = 1 ;for_end = mem [q ].hh.b1 | |
; if ( m <= for_end) do | |
p = mem [p ].hh .v.RH ; | |
while ( m++ < for_end ) ;} | |
if ( p == tx ) | |
return ; | |
} | |
else if ( ( mem [q ].hh.b0 == 9 ) && ( mem [q ].hh.b1 == 2 ) ) | |
fm = true ; | |
} | |
q = mem [p ].hh .v.RH ; | |
} while ( ! ( q == tx ) ) ; | |
q = mem [tx ].hh .v.RH ; | |
mem [p ].hh .v.RH = q ; | |
mem [tx ].hh .v.RH = -268435455L ; | |
if ( q == -268435455L ) { | |
if ( fm ) | |
confusion ( 66497L ) ; | |
else curlist .tailfield = p ; | |
} | |
else if ( fm ) | |
{ | |
curlist .tailfield = r ; | |
mem [r ].hh .v.RH = -268435455L ; | |
flushnodelist ( p ) ; | |
} | |
flushnodelist ( tx ) ; | |
} | |
} | |
} | |
} | |
void | |
unpackage ( void ) | |
{ | |
/* 30 10 */ unpackage_regmem | |
halfword p ; | |
halfword r ; | |
unsigned char c ; | |
if ( curchr > 1 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = discptr [curchr ]; | |
discptr [curchr ]= -268435455L ; | |
goto lab30 ; | |
} | |
c = curchr ; | |
scanregisternum () ; | |
if ( curval < 256 ) | |
p = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
p = -268435455L ; | |
else p = mem [curptr + 1 ].hh .v.RH ; | |
} | |
if ( p == -268435455L ) | |
return ; | |
if ( ( abs ( curlist .modefield ) == 207 ) || ( ( abs ( curlist .modefield ) | |
== 1 ) && ( mem [p ].hh.b0 != 1 ) ) || ( ( abs ( curlist .modefield ) == | |
104 ) && ( mem [p ].hh.b0 != 0 ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66526L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66527L ; | |
helpline [1 ]= 66528L ; | |
helpline [0 ]= 66529L ; | |
} | |
error () ; | |
return ; | |
} | |
if ( c == 1 ) | |
mem [curlist .tailfield ].hh .v.RH = copynodelist ( mem [p + 5 ].hh | |
.v.RH ) ; | |
else { | |
mem [curlist .tailfield ].hh .v.RH = mem [p + 5 ].hh .v.RH ; | |
if ( curval < 256 ) | |
eqtb [2253543L + curval ].hh .v.RH = -268435455L ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr != -268435455L ) | |
{ | |
mem [curptr + 1 ].hh .v.RH = -268435455L ; | |
incr ( mem [curptr + 1 ].hh .v.LH ) ; | |
deletesaref ( curptr ) ; | |
} | |
} | |
freenode ( p , 8 ) ; | |
} | |
lab30: while ( mem [curlist .tailfield ].hh .v.RH != -268435455L ) { | |
r = mem [curlist .tailfield ].hh .v.RH ; | |
if ( ! ( r >= himemmin ) && ( mem [r ].hh.b0 == 40 ) ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [r ].hh .v.RH ; | |
freenode ( r , 3 ) ; | |
} | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
void | |
appenditaliccorrection ( void ) | |
{ | |
/* 10 */ appenditaliccorrection_regmem | |
halfword p ; | |
internalfontnumber f ; | |
if ( curlist .tailfield != curlist .headfield ) | |
{ | |
if ( ( curlist .tailfield >= himemmin ) ) | |
p = curlist .tailfield ; | |
else if ( mem [curlist .tailfield ].hh.b0 == 6 ) | |
p = curlist .tailfield + 1 ; | |
else if ( ( mem [curlist .tailfield ].hh.b0 == 8 ) ) | |
{ | |
if ( ( ( mem [curlist .tailfield ].hh.b1 >= 40 ) && ( mem [curlist | |
.tailfield ].hh.b1 <= 41 ) ) ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newkern ( | |
getnativeitaliccorrection ( curlist .tailfield ) ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = 1 ; | |
} | |
else if ( ( mem [curlist .tailfield ].hh.b1 == 42 ) ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newkern ( | |
getnativeglyphitaliccorrection ( curlist .tailfield ) ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = 1 ; | |
} | |
return ; | |
} | |
else return ; | |
f = mem [p ].hh.b0 ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newkern ( fontinfo [italicbase [ | |
f ]+ ( fontinfo [charbase [f ]+ effectivechar ( true , f , mem [p ] | |
.hh.b1 ) ].qqqq .b2 ) / 4 ].cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = 1 ; | |
} | |
} | |
void | |
appenddiscretionary ( void ) | |
{ | |
appenddiscretionary_regmem | |
integer c ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newdisc () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( curchr == 1 ) | |
{ | |
c = hyphenchar [eqtb [2253799L ].hh .v.RH ]; | |
if ( c >= 0 ) { | |
if ( c <= 65535L ) | |
mem [curlist .tailfield + 1 ].hh .v.LH = newcharacter ( eqtb [ | |
2253799L ].hh .v.RH , c ) ; | |
} | |
} | |
else { | |
incr ( saveptr ) ; | |
savestack [saveptr - 1 ].cint = 0 ; | |
newsavelevel ( 10 ) ; | |
scanleftbrace () ; | |
pushnest () ; | |
curlist .modefield = -104 ; | |
curlist .auxfield .hh .v.LH = 1000 ; | |
} | |
} | |
void | |
builddiscretionary ( void ) | |
{ | |
/* 30 10 */ builddiscretionary_regmem | |
halfword p, q ; | |
integer n ; | |
unsave () ; | |
q = curlist .headfield ; | |
p = mem [q ].hh .v.RH ; | |
n = 0 ; | |
while ( p != -268435455L ) { | |
if ( ! ( p >= himemmin ) ) { | |
if ( mem [p ].hh.b0 > 2 ) { | |
if ( mem [p ].hh.b0 != 11 ) { | |
if ( mem [p ].hh.b0 != 6 ) { | |
if ( ( mem [p ].hh.b0 != 8 ) || ( ! ( ( mem [p ].hh.b1 >= 40 ) | |
&& ( mem [p ].hh.b1 <= 41 ) ) && ( mem [p ].hh.b1 != 42 ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66536L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66537L ; | |
} | |
error () ; | |
begindiagnostic () ; | |
printnl ( 66538L ) ; | |
showbox ( p ) ; | |
enddiagnostic ( true ) ; | |
flushnodelist ( p ) ; | |
mem [q ].hh .v.RH = -268435455L ; | |
goto lab30 ; | |
} | |
} | |
} | |
} | |
} | |
q = p ; | |
p = mem [q ].hh .v.RH ; | |
incr ( n ) ; | |
} | |
lab30: ; | |
p = mem [curlist .headfield ].hh .v.RH ; | |
popnest () ; | |
switch ( savestack [saveptr - 1 ].cint ) | |
{case 0 : | |
mem [curlist .tailfield + 1 ].hh .v.LH = p ; | |
break ; | |
case 1 : | |
mem [curlist .tailfield + 1 ].hh .v.RH = p ; | |
break ; | |
case 2 : | |
{ | |
if ( ( n > 0 ) && ( abs ( curlist .modefield ) == 207 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66530L ) ; | |
} | |
printesc ( 65639L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66531L ; | |
helpline [0 ]= 66532L ; | |
} | |
flushnodelist ( p ) ; | |
n = 0 ; | |
error () ; | |
} | |
else mem [curlist .tailfield ].hh .v.RH = p ; | |
if ( n <= 65535L ) | |
mem [curlist .tailfield ].hh.b1 = n ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66533L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66534L ; | |
helpline [0 ]= 66535L ; | |
} | |
error () ; | |
} | |
if ( n > 0 ) | |
curlist .tailfield = q ; | |
decr ( saveptr ) ; | |
return ; | |
} | |
break ; | |
} | |
incr ( savestack [saveptr - 1 ].cint ) ; | |
newsavelevel ( 10 ) ; | |
scanleftbrace () ; | |
pushnest () ; | |
curlist .modefield = -104 ; | |
curlist .auxfield .hh .v.LH = 1000 ; | |
} | |
void | |
makeaccent ( void ) | |
{ | |
makeaccent_regmem | |
real s, t ; | |
halfword p, q, r ; | |
internalfontnumber f ; | |
scaled a, h, x, w, delta, lsb, rsb ; | |
fourquarters i ; | |
scancharnum () ; | |
f = eqtb [2253799L ].hh .v.RH ; | |
p = newcharacter ( f , curval ) ; | |
if ( p != -268435455L ) | |
{ | |
x = fontinfo [5 + parambase [f ]].cint ; | |
s = fontinfo [1 + parambase [f ]].cint / ((double) 65536.0 ) ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
{ | |
a = mem [p + 1 ].cint ; | |
if ( a == 0 ) | |
getnativecharsidebearings ( f , curval , addressof ( lsb ) , addressof ( | |
rsb ) ) ; | |
} | |
else a = fontinfo [widthbase [f ]+ fontinfo [charbase [f ]+ | |
effectivechar ( true , f , mem [p ].hh.b1 ) ].qqqq .b0 ].cint ; | |
doassignments () ; | |
q = -268435455L ; | |
f = eqtb [2253799L ].hh .v.RH ; | |
if ( ( curcmd == 11 ) || ( curcmd == 12 ) || ( curcmd == 68 ) ) | |
{ | |
q = newcharacter ( f , curchr ) ; | |
curval = curchr ; | |
} | |
else if ( curcmd == 16 ) | |
{ | |
scancharnum () ; | |
q = newcharacter ( f , curval ) ; | |
} | |
else backinput () ; | |
if ( q != -268435455L ) | |
{ | |
t = fontinfo [1 + parambase [f ]].cint / ((double) 65536.0 ) ; | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) | |
{ | |
w = mem [q + 1 ].cint ; | |
getnativecharheightdepth ( f , curval , addressof ( h ) , addressof ( | |
delta ) ) ; | |
} | |
else { | |
i = fontinfo [charbase [f ]+ effectivechar ( true , f , mem [q ] | |
.hh.b1 ) ].qqqq ; | |
w = fontinfo [widthbase [f ]+ i .b0 ].cint ; | |
h = fontinfo [heightbase [f ]+ ( i .b1 ) / 16 ].cint ; | |
} | |
if ( h != x ) | |
{ | |
p = hpack ( p , 0 , 1 ) ; | |
mem [p + 4 ].cint = x - h ; | |
} | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) && | |
( a == 0 ) ) | |
delta = round ( ( w - lsb + rsb ) / ((double) 2.0 ) + h * t - x * s ) ; | |
else delta = round ( ( w - a ) / ((double) 2.0 ) + h * t - x * s ) ; | |
r = newkern ( delta ) ; | |
mem [r ].hh.b1 = 2 ; | |
mem [curlist .tailfield ].hh .v.RH = r ; | |
mem [r ].hh .v.RH = p ; | |
curlist .tailfield = newkern ( - (integer) a - delta ) ; | |
mem [curlist .tailfield ].hh.b1 = 2 ; | |
mem [p ].hh .v.RH = curlist .tailfield ; | |
p = q ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = p ; | |
curlist .auxfield .hh .v.LH = 1000 ; | |
} | |
} | |
void | |
alignerror ( void ) | |
{ | |
alignerror_regmem | |
if ( abs ( alignstate ) > 2 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66543L ) ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
if ( curtok == 8388646L ) | |
{ | |
{ | |
helpptr = 6 ; | |
helpline [5 ]= 66544L ; | |
helpline [4 ]= 66545L ; | |
helpline [3 ]= 66546L ; | |
helpline [2 ]= 66547L ; | |
helpline [1 ]= 66548L ; | |
helpline [0 ]= 66549L ; | |
} | |
} | |
else { | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66544L ; | |
helpline [3 ]= 66550L ; | |
helpline [2 ]= 66547L ; | |
helpline [1 ]= 66548L ; | |
helpline [0 ]= 66549L ; | |
} | |
} | |
error () ; | |
} | |
else { | |
backinput () ; | |
if ( alignstate < 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65985L ) ; | |
} | |
incr ( alignstate ) ; | |
curtok = 2097275L ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66539L ) ; | |
} | |
decr ( alignstate ) ; | |
curtok = 4194429L ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66540L ; | |
helpline [1 ]= 66541L ; | |
helpline [0 ]= 66542L ; | |
} | |
inserror () ; | |
} | |
} | |
void | |
noalignerror ( void ) | |
{ | |
noalignerror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66543L ) ; | |
} | |
printesc ( 65845L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66551L ; | |
helpline [0 ]= 66552L ; | |
} | |
error () ; | |
} | |
void | |
omiterror ( void ) | |
{ | |
omiterror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66543L ) ; | |
} | |
printesc ( 65848L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66553L ; | |
helpline [0 ]= 66552L ; | |
} | |
error () ; | |
} | |
void | |
doendv ( void ) | |
{ | |
doendv_regmem | |
baseptr = inputptr ; | |
inputstack [baseptr ]= curinput ; | |
while ( ( inputstack [baseptr ].indexfield != 2 ) && ( inputstack [ | |
baseptr ].locfield == -268435455L ) && ( inputstack [baseptr ].statefield | |
== 0 ) ) decr ( baseptr ) ; | |
if ( ( inputstack [baseptr ].indexfield != 2 ) || ( inputstack [baseptr ] | |
.locfield != -268435455L ) || ( inputstack [baseptr ].statefield != 0 ) ) | |
fatalerror ( 65920L ) ; | |
if ( curgroup == 6 ) | |
{ | |
endgraf () ; | |
if ( fincol () ) | |
finrow () ; | |
} | |
else offsave () ; | |
} | |
void | |
cserror ( void ) | |
{ | |
cserror_regmem | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66163L ) ; | |
} | |
printesc ( 65815L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66555L ; | |
} | |
error () ; | |
} | |
void | |
zpushmath ( groupcode c ) | |
{ | |
pushmath_regmem | |
pushnest () ; | |
curlist .modefield = -207 ; | |
curlist .auxfield .cint = -268435455L ; | |
newsavelevel ( c ) ; | |
} | |
void | |
zjustcopy ( halfword p , halfword h , halfword t ) | |
{ | |
/* 40 45 */ justcopy_regmem | |
halfword r ; | |
unsigned char words ; | |
while ( p != -268435455L ) { | |
words = 1 ; | |
if ( ( p >= himemmin ) ) | |
r = getavail () ; | |
else switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
{ | |
r = getnode ( 8 ) ; | |
mem [r + 7 ].hh .v.LH = mem [p + 7 ].hh .v.LH ; | |
mem [r + 7 ].hh .v.RH = mem [p + 7 ].hh .v.RH ; | |
mem [r + 6 ]= mem [p + 6 ]; | |
mem [r + 5 ]= mem [p + 5 ]; | |
words = 5 ; | |
mem [r + 5 ].hh .v.RH = -268435455L ; | |
} | |
break ; | |
case 2 : | |
{ | |
r = getnode ( 5 ) ; | |
words = 5 ; | |
} | |
break ; | |
case 6 : | |
{ | |
r = getavail () ; | |
mem [r ]= mem [p + 1 ]; | |
goto lab40 ; | |
} | |
break ; | |
case 11 : | |
case 9 : | |
{ | |
words = 3 ; | |
r = getnode ( words ) ; | |
} | |
break ; | |
case 10 : | |
{ | |
r = getnode ( 3 ) ; | |
incr ( mem [mem [p + 1 ].hh .v.LH ].hh .v.RH ) ; | |
mem [r + 2 ].hh .v.LH = mem [p + 2 ].hh .v.LH ; | |
mem [r + 2 ].hh .v.RH = mem [p + 2 ].hh .v.RH ; | |
mem [r + 1 ].hh .v.LH = mem [p + 1 ].hh .v.LH ; | |
mem [r + 1 ].hh .v.RH = -268435455L ; | |
} | |
break ; | |
case 8 : | |
switch ( mem [p ].hh.b1 ) | |
{case 0 : | |
{ | |
r = getnode ( 3 ) ; | |
words = 3 ; | |
} | |
break ; | |
case 1 : | |
case 3 : | |
{ | |
r = getnode ( 2 ) ; | |
incr ( mem [mem [p + 1 ].hh .v.RH ].hh .v.LH ) ; | |
words = 2 ; | |
} | |
break ; | |
case 2 : | |
case 4 : | |
{ | |
r = getnode ( 2 ) ; | |
words = 2 ; | |
} | |
break ; | |
case 40 : | |
case 41 : | |
{ | |
words = mem [p + 4 ].qqqq .b0 ; | |
r = getnode ( words ) ; | |
while ( words > 0 ) { | |
decr ( words ) ; | |
mem [r + words ]= mem [p + words ]; | |
} | |
mem [r + 5 ].ptr = nullptr ; | |
mem [r + 4 ].qqqq .b3 = 0 ; | |
copynativeglyphinfo ( p , r ) ; | |
} | |
break ; | |
case 42 : | |
{ | |
r = getnode ( 5 ) ; | |
words = 5 ; | |
} | |
break ; | |
case 43 : | |
case 44 : | |
{ | |
words = ( 9 + ( mem [p + 4 ].hh.b0 + sizeof ( memoryword ) - 1 ) / | |
sizeof ( memoryword ) ) ; | |
r = getnode ( words ) ; | |
} | |
break ; | |
case 21 : | |
r = getnode ( 2 ) ; | |
break ; | |
default: | |
confusion ( 66763L ) ; | |
break ; | |
} | |
break ; | |
default: | |
goto lab45 ; | |
break ; | |
} | |
while ( words > 0 ) { | |
decr ( words ) ; | |
mem [r + words ]= mem [p + words ]; | |
} | |
lab40: mem [h ].hh .v.RH = r ; | |
h = r ; | |
lab45: p = mem [p ].hh .v.RH ; | |
} | |
mem [h ].hh .v.RH = t ; | |
} | |
void | |
zjustreverse ( halfword p ) | |
{ | |
/* 30 */ justreverse_regmem | |
halfword l ; | |
halfword t ; | |
halfword q ; | |
halfword m, n ; | |
m = -268435455L ; | |
n = -268435455L ; | |
if ( mem [memtop - 3 ].hh .v.RH == -268435455L ) | |
{ | |
justcopy ( mem [p ].hh .v.RH , memtop - 3 , -268435455L ) ; | |
q = mem [memtop - 3 ].hh .v.RH ; | |
} | |
else { | |
q = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = -268435455L ; | |
flushnodelist ( mem [memtop - 3 ].hh .v.RH ) ; | |
} | |
t = newedge ( curdir , 0 ) ; | |
l = t ; | |
curdir = 1 - curdir ; | |
while ( q != -268435455L ) if ( ( q >= himemmin ) ) | |
do { | |
p = q ; | |
q = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.RH = l ; | |
l = p ; | |
} while ( ! ( ! ( q >= himemmin ) ) ) ; | |
else { | |
p = q ; | |
q = mem [p ].hh .v.RH ; | |
if ( mem [p ].hh.b0 == 9 ) { | |
if ( odd ( mem [p ].hh.b1 ) ) { | |
if ( mem [LRptr ].hh .v.LH != ( 4 * ( mem [p ].hh.b1 / 4 ) + 3 ) ) | |
{ | |
mem [p ].hh.b0 = 11 ; | |
incr ( LRproblems ) ; | |
} | |
else { | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
if ( n > -268435455L ) | |
{ | |
decr ( n ) ; | |
decr ( mem [p ].hh.b1 ) ; | |
} | |
else { | |
if ( m > -268435455L ) | |
decr ( m ) ; | |
else { | |
mem [t + 1 ].cint = mem [p + 1 ].cint ; | |
mem [t ].hh .v.RH = q ; | |
freenode ( p , 3 ) ; | |
goto lab30 ; | |
} | |
mem [p ].hh.b0 = 11 ; | |
} | |
} | |
} | |
else { | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [p ].hh.b1 / 4 ) + 3 ) ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
if ( ( n > -268435455L ) || ( ( mem [p ].hh.b1 / 8 ) != curdir ) ) | |
{ | |
incr ( n ) ; | |
incr ( mem [p ].hh.b1 ) ; | |
} | |
else { | |
mem [p ].hh.b0 = 11 ; | |
incr ( m ) ; | |
} | |
} | |
} | |
mem [p ].hh .v.RH = l ; | |
l = p ; | |
} | |
goto lab30 ; | |
mem [t + 1 ].cint = mem [p + 1 ].cint ; | |
mem [t ].hh .v.RH = q ; | |
freenode ( p , 2 ) ; | |
lab30: mem [memtop - 3 ].hh .v.RH = l ; | |
} | |
void | |
initmath ( void ) | |
{ | |
/* 21 40 45 30 */ initmath_regmem | |
scaled w ; | |
halfword j ; | |
integer x ; | |
scaled l ; | |
scaled s ; | |
halfword p ; | |
halfword q ; | |
internalfontnumber f ; | |
integer n ; | |
scaled v ; | |
scaled d ; | |
gettoken () ; | |
if ( ( curcmd == 3 ) && ( curlist .modefield > 0 ) ) | |
{ | |
j = -268435455L ; | |
w = -1073741823L ; | |
if ( curlist .headfield == curlist .tailfield ) | |
{ | |
popnest () ; | |
if ( curlist .eTeXauxfield == -268435455L ) | |
x = 0 ; | |
else if ( mem [curlist .eTeXauxfield ].hh .v.LH >= 8 ) | |
x = -1 ; | |
else x = 1 ; | |
} | |
else { | |
linebreak ( true ) ; | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
if ( eqtb [2252748L ].hh .v.RH == membot ) | |
j = newkern ( 0 ) ; | |
else j = newparamglue ( 8 ) ; | |
if ( eqtb [2252747L ].hh .v.RH == membot ) | |
p = newkern ( 0 ) ; | |
else p = newparamglue ( 7 ) ; | |
mem [p ].hh .v.RH = j ; | |
j = newnullbox () ; | |
mem [j + 1 ].cint = mem [justbox + 1 ].cint ; | |
mem [j + 4 ].cint = mem [justbox + 4 ].cint ; | |
mem [j + 5 ].hh .v.RH = p ; | |
mem [j + 5 ].hh.b1 = mem [justbox + 5 ].hh.b1 ; | |
mem [j + 5 ].hh.b0 = mem [justbox + 5 ].hh.b0 ; | |
mem [j + 6 ].gr = mem [justbox + 6 ].gr ; | |
} | |
v = mem [justbox + 4 ].cint ; | |
if ( curlist .eTeXauxfield == -268435455L ) | |
x = 0 ; | |
else if ( mem [curlist .eTeXauxfield ].hh .v.LH >= 8 ) | |
x = -1 ; | |
else x = 1 ; | |
if ( x >= 0 ) | |
{ | |
p = mem [justbox + 5 ].hh .v.RH ; | |
mem [memtop - 3 ].hh .v.RH = -268435455L ; | |
} | |
else { | |
v = - (integer) v - mem [justbox + 1 ].cint ; | |
p = newmath ( 0 , 6 ) ; | |
mem [memtop - 3 ].hh .v.RH = p ; | |
justcopy ( mem [justbox + 5 ].hh .v.RH , p , newmath ( 0 , 7 ) ) ; | |
curdir = 1 ; | |
} | |
v = v + 2 * fontinfo [6 + parambase [eqtb [2253799L ].hh .v.RH ]] | |
.cint ; | |
if ( ( eqtb [8939312L ].cint > 0 ) ) | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = 0 ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
while ( p != -268435455L ) { | |
lab21: if ( ( p >= himemmin ) ) | |
{ | |
f = mem [p ].hh.b0 ; | |
d = fontinfo [widthbase [f ]+ fontinfo [charbase [f ]+ | |
effectivechar ( true , f , mem [p ].hh.b1 ) ].qqqq .b0 ].cint ; | |
goto lab40 ; | |
} | |
switch ( mem [p ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
{ | |
d = mem [p + 1 ].cint ; | |
goto lab40 ; | |
} | |
break ; | |
case 6 : | |
{ | |
mem [memtop - 12 ]= mem [p + 1 ]; | |
mem [memtop - 12 ].hh .v.RH = mem [p ].hh .v.RH ; | |
p = memtop - 12 ; | |
xtxligaturepresent = true ; | |
goto lab21 ; | |
} | |
break ; | |
case 11 : | |
d = mem [p + 1 ].cint ; | |
break ; | |
case 40 : | |
d = mem [p + 1 ].cint ; | |
break ; | |
case 9 : | |
{ | |
d = mem [p + 1 ].cint ; | |
if ( ( eqtb [8939312L ].cint > 0 ) ) { | |
if ( odd ( mem [p ].hh.b1 ) ) | |
{ | |
if ( mem [LRptr ].hh .v.LH == ( 4 * ( mem [p ].hh.b1 / 4 ) | |
+ 3 ) ) | |
{ | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
else if ( mem [p ].hh.b1 > 4 ) | |
{ | |
w = 1073741823L ; | |
goto lab30 ; | |
} | |
} | |
else { | |
{ | |
tempptr = getavail () ; | |
mem [tempptr ].hh .v.LH = ( 4 * ( mem [p ].hh.b1 / 4 ) + | |
3 ) ; | |
mem [tempptr ].hh .v.RH = LRptr ; | |
LRptr = tempptr ; | |
} | |
if ( ( mem [p ].hh.b1 / 8 ) != curdir ) | |
{ | |
justreverse ( p ) ; | |
p = memtop - 3 ; | |
} | |
} | |
} | |
else if ( mem [p ].hh.b1 >= 4 ) | |
{ | |
w = 1073741823L ; | |
goto lab30 ; | |
} | |
} | |
break ; | |
case 14 : | |
{ | |
d = mem [p + 1 ].cint ; | |
curdir = mem [p ].hh.b1 ; | |
} | |
break ; | |
case 10 : | |
{ | |
q = mem [p + 1 ].hh .v.LH ; | |
d = mem [q + 1 ].cint ; | |
if ( mem [justbox + 5 ].hh.b0 == 1 ) | |
{ | |
if ( ( mem [justbox + 5 ].hh.b1 == mem [q ].hh.b0 ) && ( mem | |
[q + 2 ].cint != 0 ) ) | |
v = 1073741823L ; | |
} | |
else if ( mem [justbox + 5 ].hh.b0 == 2 ) | |
{ | |
if ( ( mem [justbox + 5 ].hh.b1 == mem [q ].hh.b1 ) && ( mem | |
[q + 3 ].cint != 0 ) ) | |
v = 1073741823L ; | |
} | |
if ( mem [p ].hh.b1 >= 100 ) | |
goto lab40 ; | |
} | |
break ; | |
case 8 : | |
if ( ( ( ( mem [p ].hh.b1 >= 40 ) && ( mem [p ].hh.b1 <= 41 ) ) | |
) || ( mem [p ].hh.b1 == 42 ) || ( mem [p ].hh.b1 == 43 ) || ( | |
mem [p ].hh.b1 == 44 ) ) | |
{ | |
d = mem [p + 1 ].cint ; | |
goto lab40 ; | |
} | |
else d = 0 ; | |
break ; | |
default: | |
d = 0 ; | |
break ; | |
} | |
if ( v < 1073741823L ) | |
v = v + d ; | |
goto lab45 ; | |
lab40: if ( v < 1073741823L ) | |
{ | |
v = v + d ; | |
w = v ; | |
} | |
else { | |
w = 1073741823L ; | |
goto lab30 ; | |
} | |
lab45: p = mem [p ].hh .v.RH ; | |
} | |
lab30: if ( ( eqtb [8939312L ].cint > 0 ) ) | |
{ | |
while ( LRptr != -268435455L ) { | |
tempptr = LRptr ; | |
LRptr = mem [tempptr ].hh .v.RH ; | |
{ | |
mem [tempptr ].hh .v.RH = avail ; | |
avail = tempptr ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
if ( LRproblems != 0 ) | |
{ | |
w = 1073741823L ; | |
LRproblems = 0 ; | |
} | |
} | |
curdir = 0 ; | |
flushnodelist ( mem [memtop - 3 ].hh .v.RH ) ; | |
} | |
if ( eqtb [2253271L ].hh .v.RH == -268435455L ) { | |
if ( ( eqtb [10053710L ].cint != 0 ) && ( ( ( eqtb [8939281L ].cint | |
>= 0 ) && ( curlist .pgfield + 2 > eqtb [8939281L ].cint ) ) || ( | |
curlist .pgfield + 1 < - (integer) eqtb [8939281L ].cint ) ) ) | |
{ | |
l = eqtb [10053696L ].cint - abs ( eqtb [10053710L ].cint ) ; | |
if ( eqtb [10053710L ].cint > 0 ) | |
s = eqtb [10053710L ].cint ; | |
else s = 0 ; | |
} | |
else { | |
l = eqtb [10053696L ].cint ; | |
s = 0 ; | |
} | |
} | |
else { | |
n = mem [eqtb [2253271L ].hh .v.RH ].hh .v.LH ; | |
if ( curlist .pgfield + 2 >= n ) | |
p = eqtb [2253271L ].hh .v.RH + 2 * n ; | |
else p = eqtb [2253271L ].hh .v.RH + 2 * ( curlist .pgfield + 2 ) ; | |
s = mem [p - 1 ].cint ; | |
l = mem [p ].cint ; | |
} | |
pushmath ( 15 ) ; | |
curlist .modefield = 207 ; | |
eqworddefine ( 8939284L , -1 ) ; | |
eqworddefine ( 10053706L , w ) ; | |
curlist .eTeXauxfield = j ; | |
if ( ( eTeXmode == 1 ) ) | |
eqworddefine ( 8939304L , x ) ; | |
eqworddefine ( 10053707L , l ) ; | |
eqworddefine ( 10053708L , s ) ; | |
if ( eqtb [2253275L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253275L ].hh .v.RH , 10 ) ; | |
if ( nestptr == 1 ) | |
buildpage () ; | |
} | |
else { | |
backinput () ; | |
{ | |
pushmath ( 15 ) ; | |
eqworddefine ( 8939284L , -1 ) ; | |
if ( ( insertsrcspecialeverymath ) ) | |
insertsrcspecial () ; | |
if ( eqtb [2253274L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253274L ].hh .v.RH , 9 ) ; | |
} | |
} | |
} | |
void | |
starteqno ( void ) | |
{ | |
starteqno_regmem | |
savestack [saveptr + 0 ].cint = curchr ; | |
incr ( saveptr ) ; | |
{ | |
pushmath ( 15 ) ; | |
eqworddefine ( 8939284L , -1 ) ; | |
if ( ( insertsrcspecialeverymath ) ) | |
insertsrcspecial () ; | |
if ( eqtb [2253274L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253274L ].hh .v.RH , 9 ) ; | |
} | |
} | |
void | |
zscanmath ( halfword p ) | |
{ | |
/* 20 21 10 */ scanmath_regmem | |
integer c ; | |
lab20: do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
lab21: switch ( curcmd ) | |
{case 11 : | |
case 12 : | |
case 68 : | |
{ | |
c = eqtb [6711016L + curchr ].hh .v.RH ; | |
if ( mathcharfield ( c ) == 2097151L ) | |
{ | |
{ | |
curcs = curchr + 1 ; | |
curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
xtoken () ; | |
backinput () ; | |
} | |
goto lab20 ; | |
} | |
} | |
break ; | |
case 16 : | |
{ | |
scancharnum () ; | |
curchr = curval ; | |
curcmd = 68 ; | |
goto lab21 ; | |
} | |
break ; | |
case 17 : | |
if ( curchr == 2 ) | |
{ | |
scanmathclassint () ; | |
c = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
c = c + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
c = c + curval ; | |
} | |
else if ( curchr == 1 ) | |
{ | |
scanxetexmathcharint () ; | |
c = curval ; | |
} | |
else { | |
scanfifteenbitint () ; | |
c = setclassfield ( curval / 4096 ) + setfamilyfield ( ( curval % 4096 ) | |
/ 256 ) + ( curval % 256 ) ; | |
} | |
break ; | |
case 69 : | |
{ | |
c = setclassfield ( curchr / 4096 ) + setfamilyfield ( ( curchr % 4096 ) | |
/ 256 ) + ( curchr % 256 ) ; | |
} | |
break ; | |
case 70 : | |
c = curchr ; | |
break ; | |
case 15 : | |
{ | |
if ( curchr == 1 ) | |
{ | |
scanmathclassint () ; | |
c = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
c = c + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
c = c + curval ; | |
} | |
else { | |
scandelimiterint () ; | |
c = curval / 4096 ; | |
c = setclassfield ( c / 4096 ) + setfamilyfield ( ( c % 4096 ) / 256 ) | |
+ ( c % 256 ) ; | |
} | |
} | |
break ; | |
default: | |
{ | |
backinput () ; | |
scanleftbrace () ; | |
savestack [saveptr + 0 ].cint = p ; | |
incr ( saveptr ) ; | |
pushmath ( 9 ) ; | |
return ; | |
} | |
break ; | |
} | |
mem [p ].hh .v.RH = 1 ; | |
mem [p ].hh.b1 = c % 65536L ; | |
if ( ( mathclassfield ( c ) == 7 ) && ( ( eqtb [8939284L ].cint >= 0 ) && | |
( eqtb [8939284L ].cint < 256 ) ) ) | |
mem [p ].hh.b0 = eqtb [8939284L ].cint ; | |
else mem [p ].hh.b0 = ( mathfamfield ( c ) ) ; | |
mem [p ].hh.b0 = mem [p ].hh.b0 + ( mathcharfield ( c ) / 65536L ) * 256 | |
; | |
} | |
void | |
zsetmathchar ( integer c ) | |
{ | |
setmathchar_regmem | |
halfword p ; | |
UnicodeScalar ch ; | |
if ( mathcharfield ( c ) == 2097151L ) | |
{ | |
curcs = curchr + 1 ; | |
curcmd = eqtb [curcs ].hh.b0 ; | |
curchr = eqtb [curcs ].hh .v.RH ; | |
xtoken () ; | |
backinput () ; | |
} | |
else { | |
p = newnoad () ; | |
mem [p + 1 ].hh .v.RH = 1 ; | |
ch = mathcharfield ( c ) ; | |
mem [p + 1 ].hh.b1 = ch % 65536L ; | |
mem [p + 1 ].hh.b0 = mathfamfield ( c ) ; | |
if ( mathclassfield ( c ) == 7 ) | |
{ | |
if ( ( ( eqtb [8939284L ].cint >= 0 ) && ( eqtb [8939284L ].cint < | |
256 ) ) ) | |
mem [p + 1 ].hh.b0 = eqtb [8939284L ].cint ; | |
mem [p ].hh.b0 = 16 ; | |
} | |
else mem [p ].hh.b0 = 16 + mathclassfield ( c ) ; | |
mem [p + 1 ].hh.b0 = mem [p + 1 ].hh.b0 + ( ch / 65536L ) * 256 ; | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = p ; | |
} | |
} | |
void | |
mathlimitswitch ( void ) | |
{ | |
/* 10 */ mathlimitswitch_regmem | |
if ( curlist .headfield != curlist .tailfield ) { | |
if ( mem [curlist .tailfield ].hh.b0 == 17 ) | |
{ | |
mem [curlist .tailfield ].hh.b1 = curchr ; | |
return ; | |
} | |
} | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66559L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66560L ; | |
} | |
error () ; | |
} | |
void | |
zscandelimiter ( halfword p , boolean r ) | |
{ | |
scandelimiter_regmem | |
if ( r ) | |
{ | |
if ( curchr == 1 ) | |
{ | |
curval1 = 1073741824L ; | |
scanmathfamint () ; | |
curval1 = curval1 + curval * 2097152L ; | |
scanusvnum () ; | |
curval = curval1 + curval ; | |
} | |
else scandelimiterint () ; | |
} | |
else { | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
switch ( curcmd ) | |
{case 11 : | |
case 12 : | |
{ | |
curval = eqtb [8939581L + curchr ].cint ; | |
} | |
break ; | |
case 15 : | |
if ( curchr == 1 ) | |
{ | |
curval1 = 1073741824L ; | |
scanmathclassint () ; | |
scanmathfamint () ; | |
curval1 = curval1 + curval * 2097152L ; | |
scanusvnum () ; | |
curval = curval1 + curval ; | |
} | |
else scandelimiterint () ; | |
break ; | |
default: | |
{ | |
curval = -1 ; | |
} | |
break ; | |
} | |
} | |
if ( curval < 0 ) | |
{ | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66561L ) ; | |
} | |
{ | |
helpptr = 6 ; | |
helpline [5 ]= 66562L ; | |
helpline [4 ]= 66563L ; | |
helpline [3 ]= 66564L ; | |
helpline [2 ]= 66565L ; | |
helpline [1 ]= 66566L ; | |
helpline [0 ]= 66567L ; | |
} | |
backerror () ; | |
curval = 0 ; | |
} | |
} | |
if ( curval >= 1073741824L ) | |
{ | |
mem [p ].qqqq .b0 = ( ( curval % 2097152L ) / 65536L ) * 256 + ( curval | |
/ 2097152L ) % 256 ; | |
mem [p ].qqqq .b1 = curval % 65536L ; | |
mem [p ].qqqq .b2 = 0 ; | |
mem [p ].qqqq .b3 = 0 ; | |
} | |
else { | |
mem [p ].qqqq .b0 = ( curval / 1048576L ) % 16 ; | |
mem [p ].qqqq .b1 = ( curval / 4096 ) % 256 ; | |
mem [p ].qqqq .b2 = ( curval / 256 ) % 16 ; | |
mem [p ].qqqq .b3 = curval % 256 ; | |
} | |
} | |
void | |
mathradical ( void ) | |
{ | |
mathradical_regmem | |
{ | |
mem [curlist .tailfield ].hh .v.RH = getnode ( 5 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = 24 ; | |
mem [curlist .tailfield ].hh.b1 = 0 ; | |
mem [curlist .tailfield + 1 ].hh = emptyfield ; | |
mem [curlist .tailfield + 3 ].hh = emptyfield ; | |
mem [curlist .tailfield + 2 ].hh = emptyfield ; | |
scandelimiter ( curlist .tailfield + 4 , true ) ; | |
scanmath ( curlist .tailfield + 1 ) ; | |
} | |
void | |
mathac ( void ) | |
{ | |
mathac_regmem | |
integer c ; | |
if ( curcmd == 45 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66570L ) ; | |
} | |
printesc ( 65835L ) ; | |
print ( 66571L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66572L ; | |
helpline [0 ]= 66573L ; | |
} | |
error () ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = getnode ( 5 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = 28 ; | |
mem [curlist .tailfield ].hh.b1 = 0 ; | |
mem [curlist .tailfield + 1 ].hh = emptyfield ; | |
mem [curlist .tailfield + 3 ].hh = emptyfield ; | |
mem [curlist .tailfield + 2 ].hh = emptyfield ; | |
mem [curlist .tailfield + 4 ].hh .v.RH = 1 ; | |
if ( curchr == 1 ) | |
{ | |
if ( scankeyword ( 66568L ) ) | |
mem [curlist .tailfield ].hh.b1 = 1 ; | |
else if ( scankeyword ( 66569L ) ) | |
{ | |
if ( scankeyword ( 66568L ) ) | |
mem [curlist .tailfield ].hh.b1 = 3 ; | |
else mem [curlist .tailfield ].hh.b1 = 2 ; | |
} | |
scanmathclassint () ; | |
c = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
c = c + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
curval = curval + c ; | |
} | |
else { | |
scanfifteenbitint () ; | |
curval = setclassfield ( curval / 4096 ) + setfamilyfield ( ( curval % | |
4096 ) / 256 ) + ( curval % 256 ) ; | |
} | |
mem [curlist .tailfield + 4 ].hh.b1 = curval % 65536L ; | |
if ( ( mathclassfield ( curval ) == 7 ) && ( ( eqtb [8939284L ].cint >= 0 | |
) && ( eqtb [8939284L ].cint < 256 ) ) ) | |
mem [curlist .tailfield + 4 ].hh.b0 = eqtb [8939284L ].cint ; | |
else mem [curlist .tailfield + 4 ].hh.b0 = mathfamfield ( curval ) ; | |
mem [curlist .tailfield + 4 ].hh.b0 = mem [curlist .tailfield + 4 ] | |
.hh.b0 + ( mathcharfield ( curval ) / 65536L ) * 256 ; | |
scanmath ( curlist .tailfield + 1 ) ; | |
} | |
void | |
appendchoices ( void ) | |
{ | |
appendchoices_regmem | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newchoice () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
incr ( saveptr ) ; | |
savestack [saveptr - 1 ].cint = 0 ; | |
pushmath ( 13 ) ; | |
scanleftbrace () ; | |
} | |
halfword | |
zfinmlist ( halfword p ) | |
{ | |
register halfword Result; finmlist_regmem | |
halfword q ; | |
if ( curlist .auxfield .cint != -268435455L ) | |
{ | |
mem [curlist .auxfield .cint + 3 ].hh .v.RH = 3 ; | |
mem [curlist .auxfield .cint + 3 ].hh .v.LH = mem [curlist .headfield ] | |
.hh .v.RH ; | |
if ( p == -268435455L ) | |
q = curlist .auxfield .cint ; | |
else { | |
q = mem [curlist .auxfield .cint + 2 ].hh .v.LH ; | |
if ( ( mem [q ].hh.b0 != 30 ) || ( curlist .eTeXauxfield == | |
-268435455L ) ) | |
confusion ( 66280L ) ; | |
mem [curlist .auxfield .cint + 2 ].hh .v.LH = mem [curlist | |
.eTeXauxfield ].hh .v.RH ; | |
mem [curlist .eTeXauxfield ].hh .v.RH = curlist .auxfield .cint ; | |
mem [curlist .auxfield .cint ].hh .v.RH = p ; | |
} | |
} | |
else { | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
q = mem [curlist .headfield ].hh .v.RH ; | |
} | |
popnest () ; | |
Result = q ; | |
return Result ; | |
} | |
void | |
buildchoices ( void ) | |
{ | |
/* 10 */ buildchoices_regmem | |
halfword p ; | |
unsave () ; | |
p = finmlist ( -268435455L ) ; | |
switch ( savestack [saveptr - 1 ].cint ) | |
{case 0 : | |
mem [curlist .tailfield + 1 ].hh .v.LH = p ; | |
break ; | |
case 1 : | |
mem [curlist .tailfield + 1 ].hh .v.RH = p ; | |
break ; | |
case 2 : | |
mem [curlist .tailfield + 2 ].hh .v.LH = p ; | |
break ; | |
case 3 : | |
{ | |
mem [curlist .tailfield + 2 ].hh .v.RH = p ; | |
decr ( saveptr ) ; | |
return ; | |
} | |
break ; | |
} | |
incr ( savestack [saveptr - 1 ].cint ) ; | |
pushmath ( 13 ) ; | |
scanleftbrace () ; | |
} | |
void | |
subsup ( void ) | |
{ | |
subsup_regmem | |
smallnumber t ; | |
halfword p ; | |
t = 0 ; | |
p = -268435455L ; | |
if ( curlist .tailfield != curlist .headfield ) { | |
if ( ( mem [curlist .tailfield ].hh.b0 >= 16 ) && ( mem [curlist | |
.tailfield ].hh.b0 < 30 ) ) | |
{ | |
p = curlist .tailfield + 2 + curcmd - 7 ; | |
t = mem [p ].hh .v.RH ; | |
} | |
} | |
if ( ( p == -268435455L ) || ( t != 0 ) ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnoad () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
p = curlist .tailfield + 2 + curcmd - 7 ; | |
if ( t != 0 ) | |
{ | |
if ( curcmd == 7 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66574L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66575L ; | |
} | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66576L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66577L ; | |
} | |
} | |
error () ; | |
} | |
} | |
scanmath ( p ) ; | |
} | |
void | |
mathfraction ( void ) | |
{ | |
mathfraction_regmem | |
smallnumber c ; | |
c = curchr ; | |
if ( curlist .auxfield .cint != -268435455L ) | |
{ | |
if ( c >= 3 ) | |
{ | |
scandelimiter ( memtop - 12 , false ) ; | |
scandelimiter ( memtop - 12 , false ) ; | |
} | |
if ( c % 3 == 0 ) | |
scandimen ( false , false , false ) ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66584L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66585L ; | |
helpline [1 ]= 66586L ; | |
helpline [0 ]= 66587L ; | |
} | |
error () ; | |
} | |
else { | |
curlist .auxfield .cint = getnode ( 6 ) ; | |
mem [curlist .auxfield .cint ].hh.b0 = 25 ; | |
mem [curlist .auxfield .cint ].hh.b1 = 0 ; | |
mem [curlist .auxfield .cint + 2 ].hh .v.RH = 3 ; | |
mem [curlist .auxfield .cint + 2 ].hh .v.LH = mem [curlist .headfield ] | |
.hh .v.RH ; | |
mem [curlist .auxfield .cint + 3 ].hh = emptyfield ; | |
mem [curlist .auxfield .cint + 4 ].qqqq = nulldelimiter ; | |
mem [curlist .auxfield .cint + 5 ].qqqq = nulldelimiter ; | |
mem [curlist .headfield ].hh .v.RH = -268435455L ; | |
curlist .tailfield = curlist .headfield ; | |
if ( c >= 3 ) | |
{ | |
scandelimiter ( curlist .auxfield .cint + 4 , false ) ; | |
scandelimiter ( curlist .auxfield .cint + 5 , false ) ; | |
} | |
switch ( c % 3 ) | |
{case 0 : | |
{ | |
scandimen ( false , false , false ) ; | |
mem [curlist .auxfield .cint + 1 ].cint = curval ; | |
} | |
break ; | |
case 1 : | |
mem [curlist .auxfield .cint + 1 ].cint = 1073741824L ; | |
break ; | |
case 2 : | |
mem [curlist .auxfield .cint + 1 ].cint = 0 ; | |
break ; | |
} | |
} | |
} | |
void | |
mathleftright ( void ) | |
{ | |
mathleftright_regmem | |
smallnumber t ; | |
halfword p ; | |
halfword q ; | |
t = curchr ; | |
if ( ( t != 30 ) && ( curgroup != 16 ) ) | |
{ | |
if ( curgroup == 15 ) | |
{ | |
scandelimiter ( memtop - 12 , false ) ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66163L ) ; | |
} | |
if ( t == 1 ) | |
{ | |
printesc ( 66281L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66588L ; | |
} | |
} | |
else { | |
printesc ( 66280L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66589L ; | |
} | |
} | |
error () ; | |
} | |
else offsave () ; | |
} | |
else { | |
p = newnoad () ; | |
mem [p ].hh.b0 = t ; | |
scandelimiter ( p + 1 , false ) ; | |
if ( t == 1 ) | |
{ | |
mem [p ].hh.b0 = 31 ; | |
mem [p ].hh.b1 = 1 ; | |
} | |
if ( t == 30 ) | |
q = p ; | |
else { | |
q = finmlist ( p ) ; | |
unsave () ; | |
} | |
if ( t != 31 ) | |
{ | |
pushmath ( 16 ) ; | |
mem [curlist .headfield ].hh .v.RH = q ; | |
curlist .tailfield = p ; | |
curlist .eTeXauxfield = p ; | |
} | |
else { | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnoad () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = 23 ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = 3 ; | |
mem [curlist .tailfield + 1 ].hh .v.LH = q ; | |
} | |
} | |
} | |
void | |
zappdisplay ( halfword j , halfword b , scaled d ) | |
{ | |
appdisplay_regmem | |
scaled z ; | |
scaled s ; | |
scaled e ; | |
integer x ; | |
halfword p, q, r, t, u ; | |
s = eqtb [10053708L ].cint ; | |
x = eqtb [8939304L ].cint ; | |
if ( x == 0 ) | |
mem [b + 4 ].cint = s + d ; | |
else { | |
z = eqtb [10053707L ].cint ; | |
p = b ; | |
if ( x > 0 ) | |
e = z - d - mem [p + 1 ].cint ; | |
else { | |
e = d ; | |
d = z - e - mem [p + 1 ].cint ; | |
} | |
if ( j != -268435455L ) | |
{ | |
b = copynodelist ( j ) ; | |
mem [b + 3 ].cint = mem [p + 3 ].cint ; | |
mem [b + 2 ].cint = mem [p + 2 ].cint ; | |
s = s - mem [b + 4 ].cint ; | |
d = d + s ; | |
e = e + mem [b + 1 ].cint - z - s ; | |
} | |
if ( ( mem [p ].hh.b1 ) == 2 ) | |
q = p ; | |
else { | |
r = mem [p + 5 ].hh .v.RH ; | |
freenode ( p , 8 ) ; | |
if ( r == -268435455L ) | |
confusion ( 66925L ) ; | |
if ( x > 0 ) | |
{ | |
p = r ; | |
do { | |
q = r ; | |
r = mem [r ].hh .v.RH ; | |
} while ( ! ( r == -268435455L ) ) ; | |
} | |
else { | |
p = -268435455L ; | |
q = r ; | |
do { | |
t = mem [r ].hh .v.RH ; | |
mem [r ].hh .v.RH = p ; | |
p = r ; | |
r = t ; | |
} while ( ! ( r == -268435455L ) ) ; | |
} | |
} | |
if ( j == -268435455L ) | |
{ | |
r = newkern ( 0 ) ; | |
t = newkern ( 0 ) ; | |
} | |
else { | |
r = mem [b + 5 ].hh .v.RH ; | |
t = mem [r ].hh .v.RH ; | |
} | |
u = newmath ( 0 , 3 ) ; | |
if ( mem [t ].hh.b0 == 10 ) | |
{ | |
j = newskipparam ( 8 ) ; | |
mem [q ].hh .v.RH = j ; | |
mem [j ].hh .v.RH = u ; | |
j = mem [t + 1 ].hh .v.LH ; | |
mem [tempptr ].hh.b0 = mem [j ].hh.b0 ; | |
mem [tempptr ].hh.b1 = mem [j ].hh.b1 ; | |
mem [tempptr + 1 ].cint = e - mem [j + 1 ].cint ; | |
mem [tempptr + 2 ].cint = - (integer) mem [j + 2 ].cint ; | |
mem [tempptr + 3 ].cint = - (integer) mem [j + 3 ].cint ; | |
mem [u ].hh .v.RH = t ; | |
} | |
else { | |
mem [t + 1 ].cint = e ; | |
mem [t ].hh .v.RH = u ; | |
mem [q ].hh .v.RH = t ; | |
} | |
u = newmath ( 0 , 2 ) ; | |
if ( mem [r ].hh.b0 == 10 ) | |
{ | |
j = newskipparam ( 7 ) ; | |
mem [u ].hh .v.RH = j ; | |
mem [j ].hh .v.RH = p ; | |
j = mem [r + 1 ].hh .v.LH ; | |
mem [tempptr ].hh.b0 = mem [j ].hh.b0 ; | |
mem [tempptr ].hh.b1 = mem [j ].hh.b1 ; | |
mem [tempptr + 1 ].cint = d - mem [j + 1 ].cint ; | |
mem [tempptr + 2 ].cint = - (integer) mem [j + 2 ].cint ; | |
mem [tempptr + 3 ].cint = - (integer) mem [j + 3 ].cint ; | |
mem [r ].hh .v.RH = u ; | |
} | |
else { | |
mem [r + 1 ].cint = d ; | |
mem [r ].hh .v.RH = p ; | |
mem [u ].hh .v.RH = r ; | |
if ( j == -268435455L ) | |
{ | |
b = hpack ( u , 0 , 1 ) ; | |
mem [b + 4 ].cint = s ; | |
} | |
else mem [b + 5 ].hh .v.RH = u ; | |
} | |
} | |
appendtovlist ( b ) ; | |
} | |
void | |
aftermath ( void ) | |
{ | |
aftermath_regmem | |
boolean l ; | |
boolean danger ; | |
integer m ; | |
halfword p ; | |
halfword a ; | |
halfword b ; | |
scaled w ; | |
scaled z ; | |
scaled e ; | |
scaled q ; | |
scaled d ; | |
scaled s ; | |
smallnumber g1, g2 ; | |
halfword r ; | |
halfword t ; | |
halfword pret ; | |
halfword j ; | |
danger = false ; | |
if ( curlist .modefield == 207 ) | |
j = curlist .eTeXauxfield ; | |
if ( ( ( fontparams [eqtb [2253802L ].hh .v.RH ]< 22 ) && ( ! ( ( | |
fontarea [eqtb [2253802L ].hh .v.RH ]== 65534L ) && ( isOpenTypeMathFont | |
( fontlayoutengine [eqtb [2253802L ].hh .v.RH ]) ) ) ) ) || ( ( | |
fontparams [eqtb [2254058L ].hh .v.RH ]< 22 ) && ( ! ( ( fontarea [eqtb | |
[2254058L ].hh .v.RH ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [eqtb [2254058L ].hh .v.RH ]) ) ) ) ) || ( ( fontparams | |
[eqtb [2254314L ].hh .v.RH ]< 22 ) && ( ! ( ( fontarea [eqtb [2254314L | |
].hh .v.RH ]== 65534L ) && ( isOpenTypeMathFont ( fontlayoutengine [eqtb | |
[2254314L ].hh .v.RH ]) ) ) ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66590L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66591L ; | |
helpline [1 ]= 66592L ; | |
helpline [0 ]= 66593L ; | |
} | |
error () ; | |
flushmath () ; | |
danger = true ; | |
} | |
else if ( ( ( fontparams [eqtb [2253803L ].hh .v.RH ]< 13 ) && ( ! ( ( | |
fontarea [eqtb [2253803L ].hh .v.RH ]== 65534L ) && ( isOpenTypeMathFont | |
( fontlayoutengine [eqtb [2253803L ].hh .v.RH ]) ) ) ) ) || ( ( | |
fontparams [eqtb [2254059L ].hh .v.RH ]< 13 ) && ( ! ( ( fontarea [eqtb | |
[2254059L ].hh .v.RH ]== 65534L ) && ( isOpenTypeMathFont ( | |
fontlayoutengine [eqtb [2254059L ].hh .v.RH ]) ) ) ) ) || ( ( fontparams | |
[eqtb [2254315L ].hh .v.RH ]< 13 ) && ( ! ( ( fontarea [eqtb [2254315L | |
].hh .v.RH ]== 65534L ) && ( isOpenTypeMathFont ( fontlayoutengine [eqtb | |
[2254315L ].hh .v.RH ]) ) ) ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66594L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66595L ; | |
helpline [1 ]= 66596L ; | |
helpline [0 ]= 66597L ; | |
} | |
error () ; | |
flushmath () ; | |
danger = true ; | |
} | |
m = curlist .modefield ; | |
l = false ; | |
p = finmlist ( -268435455L ) ; | |
if ( curlist .modefield == - (integer) m ) | |
{ | |
{ | |
getxtoken () ; | |
if ( curcmd != 3 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66598L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66599L ; | |
helpline [0 ]= 66600L ; | |
} | |
backerror () ; | |
} | |
} | |
curmlist = p ; | |
curstyle = 2 ; | |
mlistpenalties = false ; | |
mlisttohlist () ; | |
a = hpack ( mem [memtop - 3 ].hh .v.RH , 0 , 1 ) ; | |
mem [a ].hh.b1 = 2 ; | |
unsave () ; | |
decr ( saveptr ) ; | |
if ( savestack [saveptr + 0 ].cint == 1 ) | |
l = true ; | |
danger = false ; | |
if ( curlist .modefield == 207 ) | |
j = curlist .eTeXauxfield ; | |
if ( ( ( fontparams [eqtb [2253802L ].hh .v.RH ]< 22 ) && ( ! ( ( | |
fontarea [eqtb [2253802L ].hh .v.RH ]== 65534L ) && ( | |
isOpenTypeMathFont ( fontlayoutengine [eqtb [2253802L ].hh .v.RH ]) ) | |
) ) ) || ( ( fontparams [eqtb [2254058L ].hh .v.RH ]< 22 ) && ( ! ( ( | |
fontarea [eqtb [2254058L ].hh .v.RH ]== 65534L ) && ( | |
isOpenTypeMathFont ( fontlayoutengine [eqtb [2254058L ].hh .v.RH ]) ) | |
) ) ) || ( ( fontparams [eqtb [2254314L ].hh .v.RH ]< 22 ) && ( ! ( ( | |
fontarea [eqtb [2254314L ].hh .v.RH ]== 65534L ) && ( | |
isOpenTypeMathFont ( fontlayoutengine [eqtb [2254314L ].hh .v.RH ]) ) | |
) ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66590L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66591L ; | |
helpline [1 ]= 66592L ; | |
helpline [0 ]= 66593L ; | |
} | |
error () ; | |
flushmath () ; | |
danger = true ; | |
} | |
else if ( ( ( fontparams [eqtb [2253803L ].hh .v.RH ]< 13 ) && ( ! ( ( | |
fontarea [eqtb [2253803L ].hh .v.RH ]== 65534L ) && ( | |
isOpenTypeMathFont ( fontlayoutengine [eqtb [2253803L ].hh .v.RH ]) ) | |
) ) ) || ( ( fontparams [eqtb [2254059L ].hh .v.RH ]< 13 ) && ( ! ( ( | |
fontarea [eqtb [2254059L ].hh .v.RH ]== 65534L ) && ( | |
isOpenTypeMathFont ( fontlayoutengine [eqtb [2254059L ].hh .v.RH ]) ) | |
) ) ) || ( ( fontparams [eqtb [2254315L ].hh .v.RH ]< 13 ) && ( ! ( ( | |
fontarea [eqtb [2254315L ].hh .v.RH ]== 65534L ) && ( | |
isOpenTypeMathFont ( fontlayoutengine [eqtb [2254315L ].hh .v.RH ]) ) | |
) ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66594L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66595L ; | |
helpline [1 ]= 66596L ; | |
helpline [0 ]= 66597L ; | |
} | |
error () ; | |
flushmath () ; | |
danger = true ; | |
} | |
m = curlist .modefield ; | |
p = finmlist ( -268435455L ) ; | |
} | |
else a = -268435455L ; | |
if ( m < 0 ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newmath ( eqtb [10053694L ] | |
.cint , 0 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
curmlist = p ; | |
curstyle = 2 ; | |
mlistpenalties = ( curlist .modefield > 0 ) ; | |
mlisttohlist () ; | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 3 ].hh .v.RH ; | |
while ( mem [curlist .tailfield ].hh .v.RH != -268435455L ) curlist | |
.tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newmath ( eqtb [10053694L ] | |
.cint , 1 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
curlist .auxfield .hh .v.LH = 1000 ; | |
unsave () ; | |
} | |
else { | |
if ( a == -268435455L ) | |
{ | |
getxtoken () ; | |
if ( curcmd != 3 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66598L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66599L ; | |
helpline [0 ]= 66600L ; | |
} | |
backerror () ; | |
} | |
} | |
curmlist = p ; | |
curstyle = 0 ; | |
mlistpenalties = false ; | |
mlisttohlist () ; | |
p = mem [memtop - 3 ].hh .v.RH ; | |
adjusttail = memtop - 5 ; | |
preadjusttail = memtop - 14 ; | |
b = hpack ( p , 0 , 1 ) ; | |
p = mem [b + 5 ].hh .v.RH ; | |
t = adjusttail ; | |
adjusttail = -268435455L ; | |
pret = preadjusttail ; | |
preadjusttail = -268435455L ; | |
w = mem [b + 1 ].cint ; | |
z = eqtb [10053707L ].cint ; | |
s = eqtb [10053708L ].cint ; | |
if ( eqtb [8939304L ].cint < 0 ) | |
s = - (integer) s - z ; | |
if ( ( a == -268435455L ) || danger ) | |
{ | |
e = 0 ; | |
q = 0 ; | |
} | |
else { | |
e = mem [a + 1 ].cint ; | |
q = e + mathquad ( 0 ) ; | |
} | |
if ( w + q > z ) | |
{ | |
if ( ( e != 0 ) && ( ( w - totalshrink [0 ]+ q <= z ) || ( totalshrink | |
[1 ]!= 0 ) || ( totalshrink [2 ]!= 0 ) || ( totalshrink [3 ]!= 0 ) | |
) ) | |
{ | |
freenode ( b , 8 ) ; | |
b = hpack ( p , z - q , 0 ) ; | |
} | |
else { | |
e = 0 ; | |
if ( w > z ) | |
{ | |
freenode ( b , 8 ) ; | |
b = hpack ( p , z , 0 ) ; | |
} | |
} | |
w = mem [b + 1 ].cint ; | |
} | |
mem [b ].hh.b1 = 2 ; | |
d = half ( z - w ) ; | |
if ( ( e > 0 ) && ( d < 2 * e ) ) | |
{ | |
d = half ( z - w - e ) ; | |
if ( p != -268435455L ) { | |
if ( ! ( p >= himemmin ) ) { | |
if ( mem [p ].hh.b0 == 10 ) | |
d = 0 ; | |
} | |
} | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( eqtb [8939251L ] | |
.cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( ( d + s <= eqtb [10053706L ].cint ) || l ) | |
{ | |
g1 = 3 ; | |
g2 = 4 ; | |
} | |
else { | |
g1 = 5 ; | |
g2 = 6 ; | |
} | |
if ( l && ( e == 0 ) ) | |
{ | |
appdisplay ( j , a , 0 ) ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( 10000 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
else { | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( g1 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( e != 0 ) | |
{ | |
r = newkern ( z - w - e - d ) ; | |
if ( l ) | |
{ | |
mem [a ].hh .v.RH = r ; | |
mem [r ].hh .v.RH = b ; | |
b = a ; | |
d = 0 ; | |
} | |
else { | |
mem [b ].hh .v.RH = r ; | |
mem [r ].hh .v.RH = a ; | |
} | |
b = hpack ( b , 0 , 1 ) ; | |
} | |
appdisplay ( j , b , d ) ; | |
if ( ( a != -268435455L ) && ( e == 0 ) && ! l ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( 10000 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
appdisplay ( j , a , z - mem [a + 1 ].cint ) ; | |
g2 = 0 ; | |
} | |
if ( t != memtop - 5 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 5 ].hh .v.RH ; | |
curlist .tailfield = t ; | |
} | |
if ( pret != memtop - 14 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mem [memtop - 14 ].hh .v.RH ; | |
curlist .tailfield = pret ; | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( eqtb [8939252L ] | |
.cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( g2 > 0 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( g2 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
flushnodelist ( j ) ; | |
resumeafterdisplay () ; | |
} | |
} | |
void | |
resumeafterdisplay ( void ) | |
{ | |
resumeafterdisplay_regmem | |
if ( curgroup != 15 ) | |
confusion ( 66601L ) ; | |
unsave () ; | |
curlist .pgfield = curlist .pgfield + 3 ; | |
pushnest () ; | |
curlist .modefield = 104 ; | |
curlist .auxfield .hh .v.LH = 1000 ; | |
if ( eqtb [8939290L ].cint <= 0 ) | |
curlang = 0 ; | |
else if ( eqtb [8939290L ].cint > 255 ) | |
curlang = 0 ; | |
else curlang = eqtb [8939290L ].cint ; | |
curlist .auxfield .hh .v.RH = curlang ; | |
curlist .pgfield = ( normmin ( eqtb [8939291L ].cint ) * 64 + normmin ( | |
eqtb [8939292L ].cint ) ) * 65536L + curlang ; | |
{ | |
getxtoken () ; | |
if ( curcmd != 10 ) | |
backinput () ; | |
} | |
if ( nestptr == 1 ) | |
buildpage () ; | |
} | |
void | |
getrtoken ( void ) | |
{ | |
/* 20 */ getrtoken_regmem | |
lab20: do { | |
gettoken () ; | |
} while ( ! ( curtok != 20971552L ) ) ; | |
if ( ( curcs == 0 ) || ( curcs > eqtbtop ) || ( ( curcs > 2243226L ) && ( | |
curcs <= 10053971L ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66619L ) ; | |
} | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66620L ; | |
helpline [3 ]= 66621L ; | |
helpline [2 ]= 66622L ; | |
helpline [1 ]= 66623L ; | |
helpline [0 ]= 66624L ; | |
} | |
if ( curcs == 0 ) | |
backinput () ; | |
curtok = 35797657L ; | |
inserror () ; | |
goto lab20 ; | |
} | |
} | |
void | |
trapzeroglue ( void ) | |
{ | |
trapzeroglue_regmem | |
if ( ( mem [curval + 1 ].cint == 0 ) && ( mem [curval + 2 ].cint == 0 ) | |
&& ( mem [curval + 3 ].cint == 0 ) ) | |
{ | |
incr ( mem [membot ].hh .v.RH ) ; | |
deleteglueref ( curval ) ; | |
curval = membot ; | |
} | |
} | |
void | |
zdoregistercommand ( smallnumber a ) | |
{ | |
/* 40 10 */ doregistercommand_regmem | |
halfword l, q, r, s ; | |
unsigned char p ; | |
boolean e ; | |
integer w ; | |
q = curcmd ; | |
e = false ; | |
{ | |
if ( q != 91 ) | |
{ | |
getxtoken () ; | |
if ( ( curcmd >= 74 ) && ( curcmd <= 77 ) ) | |
{ | |
l = curchr ; | |
p = curcmd - 74 ; | |
goto lab40 ; | |
} | |
if ( curcmd != 91 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66029L ) ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
print ( 66030L ) ; | |
printcmdchr ( q , 0 ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66660L ; | |
} | |
error () ; | |
return ; | |
} | |
} | |
if ( ( curchr < membot ) || ( curchr > membot + 19 ) ) | |
{ | |
l = curchr ; | |
p = ( mem [l ].hh.b0 / 64 ) ; | |
e = true ; | |
} | |
else { | |
p = curchr - membot ; | |
scanregisternum () ; | |
if ( curval > 255 ) | |
{ | |
findsaelement ( p , curval , true ) ; | |
l = curptr ; | |
e = true ; | |
} | |
else switch ( p ) | |
{case 0 : | |
l = curval + 8939325L ; | |
break ; | |
case 1 : | |
l = curval + 10053716L ; | |
break ; | |
case 2 : | |
l = curval + 2252759L ; | |
break ; | |
case 3 : | |
l = curval + 2253015L ; | |
break ; | |
} | |
} | |
} | |
lab40: if ( p < 2 ) { | |
if ( e ) | |
w = mem [l + 2 ].cint ; | |
else w = eqtb [l ].cint ; | |
} | |
else if ( e ) | |
s = mem [l + 1 ].hh .v.RH ; | |
else s = eqtb [l ].hh .v.RH ; | |
if ( q == 91 ) | |
scanoptionalequals () ; | |
else if ( scankeyword ( 66656L ) ) | |
; | |
aritherror = false ; | |
if ( q < 93 ) { | |
if ( p < 2 ) | |
{ | |
if ( p == 0 ) | |
scanint () ; | |
else scandimen ( false , false , false ) ; | |
if ( q == 92 ) | |
curval = curval + w ; | |
} | |
else { | |
scanglue ( p ) ; | |
if ( q == 92 ) | |
{ | |
q = newspec ( curval ) ; | |
r = s ; | |
deleteglueref ( curval ) ; | |
mem [q + 1 ].cint = mem [q + 1 ].cint + mem [r + 1 ].cint ; | |
if ( mem [q + 2 ].cint == 0 ) | |
mem [q ].hh.b0 = 0 ; | |
if ( mem [q ].hh.b0 == mem [r ].hh.b0 ) | |
mem [q + 2 ].cint = mem [q + 2 ].cint + mem [r + 2 ].cint ; | |
else if ( ( mem [q ].hh.b0 < mem [r ].hh.b0 ) && ( mem [r + 2 ] | |
.cint != 0 ) ) | |
{ | |
mem [q + 2 ].cint = mem [r + 2 ].cint ; | |
mem [q ].hh.b0 = mem [r ].hh.b0 ; | |
} | |
if ( mem [q + 3 ].cint == 0 ) | |
mem [q ].hh.b1 = 0 ; | |
if ( mem [q ].hh.b1 == mem [r ].hh.b1 ) | |
mem [q + 3 ].cint = mem [q + 3 ].cint + mem [r + 3 ].cint ; | |
else if ( ( mem [q ].hh.b1 < mem [r ].hh.b1 ) && ( mem [r + 3 ] | |
.cint != 0 ) ) | |
{ | |
mem [q + 3 ].cint = mem [r + 3 ].cint ; | |
mem [q ].hh.b1 = mem [r ].hh.b1 ; | |
} | |
curval = q ; | |
} | |
} | |
} | |
else { | |
scanint () ; | |
if ( p < 2 ) { | |
if ( q == 93 ) { | |
if ( p == 0 ) | |
curval = multandadd ( w , curval , 0 , 2147483647L ) ; | |
else curval = multandadd ( w , curval , 0 , 1073741823L ) ; | |
} | |
else curval = xovern ( w , curval ) ; | |
} | |
else { | |
r = newspec ( s ) ; | |
if ( q == 93 ) | |
{ | |
mem [r + 1 ].cint = multandadd ( mem [s + 1 ].cint , curval , 0 , | |
1073741823L ) ; | |
mem [r + 2 ].cint = multandadd ( mem [s + 2 ].cint , curval , 0 , | |
1073741823L ) ; | |
mem [r + 3 ].cint = multandadd ( mem [s + 3 ].cint , curval , 0 , | |
1073741823L ) ; | |
} | |
else { | |
mem [r + 1 ].cint = xovern ( mem [s + 1 ].cint , curval ) ; | |
mem [r + 2 ].cint = xovern ( mem [s + 2 ].cint , curval ) ; | |
mem [r + 3 ].cint = xovern ( mem [s + 3 ].cint , curval ) ; | |
} | |
curval = r ; | |
} | |
} | |
if ( aritherror ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66657L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66658L ; | |
helpline [0 ]= 66659L ; | |
} | |
if ( p >= 2 ) | |
deleteglueref ( curval ) ; | |
error () ; | |
return ; | |
} | |
if ( p < 2 ) { | |
if ( e ) { | |
if ( ( a >= 4 ) ) | |
gsawdef ( l , curval ) ; | |
else sawdef ( l , curval ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqworddefine ( l , curval ) ; | |
else eqworddefine ( l , curval ) ; | |
} | |
else { | |
trapzeroglue () ; | |
if ( e ) { | |
if ( ( a >= 4 ) ) | |
gsadef ( l , curval ) ; | |
else sadef ( l , curval ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqdefine ( l , 119 , curval ) ; | |
else eqdefine ( l , 119 , curval ) ; | |
} | |
} | |
void | |
alteraux ( void ) | |
{ | |
alteraux_regmem | |
halfword c ; | |
if ( curchr != abs ( curlist .modefield ) ) | |
reportillegalcase () ; | |
else { | |
c = curchr ; | |
scanoptionalequals () ; | |
if ( c == 1 ) | |
{ | |
scandimen ( false , false , false ) ; | |
curlist .auxfield .cint = curval ; | |
} | |
else { | |
scanint () ; | |
if ( ( curval <= 0 ) || ( curval > 32767 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66663L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66664L ; | |
} | |
interror ( curval ) ; | |
} | |
else curlist .auxfield .hh .v.LH = curval ; | |
} | |
} | |
} | |
void | |
alterprevgraf ( void ) | |
{ | |
alterprevgraf_regmem | |
integer p ; | |
nest [nestptr ]= curlist ; | |
p = nestptr ; | |
while ( abs ( nest [p ].modefield ) != 1 ) decr ( p ) ; | |
scanoptionalequals () ; | |
scanint () ; | |
if ( curval < 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66384L ) ; | |
} | |
printesc ( 65851L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66665L ; | |
} | |
interror ( curval ) ; | |
} | |
else { | |
nest [p ].pgfield = curval ; | |
curlist = nest [nestptr ]; | |
} | |
} | |
void | |
alterpagesofar ( void ) | |
{ | |
alterpagesofar_regmem | |
unsigned char c ; | |
c = curchr ; | |
scanoptionalequals () ; | |
scandimen ( false , false , false ) ; | |
pagesofar [c ]= curval ; | |
} | |
void | |
alterinteger ( void ) | |
{ | |
alterinteger_regmem | |
smallnumber c ; | |
c = curchr ; | |
scanoptionalequals () ; | |
scanint () ; | |
if ( c == 0 ) | |
deadcycles = curval ; | |
else if ( c == 2 ) | |
{ | |
if ( ( curval < 0 ) || ( curval > 3 ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66900L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66901L ; | |
helpline [0 ]= 66902L ; | |
} | |
interror ( curval ) ; | |
} | |
else { | |
curchr = curval ; | |
newinteraction () ; | |
} | |
} | |
else insertpenalties = curval ; | |
} | |
void | |
alterboxdimen ( void ) | |
{ | |
alterboxdimen_regmem | |
smallnumber c ; | |
halfword b ; | |
c = curchr ; | |
scanregisternum () ; | |
if ( curval < 256 ) | |
b = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
b = -268435455L ; | |
else b = mem [curptr + 1 ].hh .v.RH ; | |
} | |
scanoptionalequals () ; | |
scandimen ( false , false , false ) ; | |
if ( b != -268435455L ) | |
mem [b + c ].cint = curval ; | |
} | |
void | |
znewfont ( smallnumber a ) | |
{ | |
/* 50 */ newfont_regmem | |
halfword u ; | |
scaled s ; | |
internalfontnumber f ; | |
strnumber t ; | |
unsigned char oldsetting ; | |
if ( jobname == 0 ) | |
openlogfile () ; | |
getrtoken () ; | |
u = curcs ; | |
if ( u >= 2228226L ) | |
t = hash [u ].v.RH ; | |
else if ( u >= 1114113L ) { | |
if ( u == 2228225L ) | |
t = 66671L ; | |
else t = u - 1114113L ; | |
} | |
else { | |
oldsetting = selector ; | |
selector = 21 ; | |
print ( 66671L ) ; | |
print ( u - 1 ) ; | |
selector = oldsetting ; | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
t = makestring () ; | |
} | |
if ( ( a >= 4 ) ) | |
geqdefine ( u , 89 , 0 ) ; | |
else eqdefine ( u , 89 , 0 ) ; | |
scanoptionalequals () ; | |
scanfilename () ; | |
nameinprogress = true ; | |
if ( scankeyword ( 66672L ) ) | |
{ | |
scandimen ( false , false , false ) ; | |
s = curval ; | |
if ( ( s <= 0 ) || ( s >= 134217728L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66674L ) ; | |
} | |
printscaled ( s ) ; | |
print ( 66675L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66676L ; | |
helpline [0 ]= 66677L ; | |
} | |
error () ; | |
s = 10 * 65536L ; | |
} | |
} | |
else if ( scankeyword ( 66673L ) ) | |
{ | |
scanint () ; | |
s = - (integer) curval ; | |
if ( ( curval <= 0 ) || ( curval > 32768L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65877L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 65878L ; | |
} | |
interror ( curval ) ; | |
s = -1000 ; | |
} | |
} | |
else s = -1000 ; | |
nameinprogress = false ; | |
{register integer for_end; f = 1 ;for_end = fontptr ; if ( f <= for_end) | |
do | |
{ | |
if ( streqstr ( fontname [f ], curname ) && ( ( ( curarea == 65626L ) | |
&& ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) ) || | |
streqstr ( fontarea [f ], curarea ) ) ) | |
{ | |
if ( s > 0 ) | |
{ | |
if ( s == fontsize [f ]) | |
goto lab50 ; | |
} | |
else if ( fontsize [f ]== xnoverd ( fontdsize [f ], - (integer) s | |
, 1000 ) ) | |
goto lab50 ; | |
} | |
appendstr ( curarea ) ; | |
appendstr ( curname ) ; | |
appendstr ( curext ) ; | |
if ( streqstr ( fontname [f ], makestring () ) ) | |
{ | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) | |
) | |
{ | |
if ( s > 0 ) | |
{ | |
if ( s == fontsize [f ]) | |
goto lab50 ; | |
} | |
else if ( fontsize [f ]== xnoverd ( fontdsize [f ], - (integer) | |
s , 1000 ) ) | |
goto lab50 ; | |
} | |
} | |
else { | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
} | |
while ( f++ < for_end ) ;} | |
f = readfontinfo ( u , curname , curarea , s ) ; | |
lab50: if ( ( a >= 4 ) ) | |
geqdefine ( u , 89 , f ) ; | |
else eqdefine ( u , 89 , f ) ; | |
eqtb [2243738L + f ]= eqtb [u ]; | |
hash [2243738L + f ].v.RH = t ; | |
} | |
void | |
newinteraction ( void ) | |
{ | |
newinteraction_regmem | |
println () ; | |
interaction = curchr ; | |
if ( interaction == 0 ) | |
kpsemaketexdiscarderrors = 1 ; | |
else kpsemaketexdiscarderrors = 0 ; | |
if ( interaction == 0 ) | |
selector = 16 ; | |
else selector = 17 ; | |
if ( logopened ) | |
selector = selector + 2 ; | |
} | |
void | |
doassignments ( void ) | |
{ | |
/* 10 */ doassignments_regmem | |
while ( true ) { | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
if ( curcmd <= 71 ) | |
return ; | |
setboxallowed = false ; | |
prefixedcommand () ; | |
setboxallowed = true ; | |
} | |
} | |
void | |
openorclosein ( void ) | |
{ | |
openorclosein_regmem | |
unsigned char c ; | |
unsigned char n ; | |
integer k ; | |
c = curchr ; | |
scanfourbitint () ; | |
n = curval ; | |
if ( readopen [n ]!= 2 ) | |
{ | |
uclose ( readfile [n ]) ; | |
readopen [n ]= 2 ; | |
} | |
if ( c != 0 ) | |
{ | |
scanoptionalequals () ; | |
scanfilename () ; | |
packfilename ( curname , curarea , curext ) ; | |
texinputtype = 0 ; | |
if ( kpseinnameok ( stringcast ( nameoffile + 1 ) ) && uopenin ( readfile | |
[n ], kpsetexformat , eqtb [8939318L ].cint , eqtb [8939319L ].cint | |
) ) | |
{ | |
makeutf16name () ; | |
nameinprogress = true ; | |
beginname () ; | |
stopatspace = false ; | |
k = 0 ; | |
while ( ( k < namelength16 ) && ( morename ( nameoffile16 [k ]) ) ) | |
incr ( k ) ; | |
stopatspace = true ; | |
endname () ; | |
nameinprogress = false ; | |
readopen [n ]= 1 ; | |
} | |
} | |
} | |
void | |
issuemessage ( void ) | |
{ | |
issuemessage_regmem | |
unsigned char oldsetting ; | |
unsigned char c ; | |
strnumber s ; | |
c = curchr ; | |
mem [memtop - 12 ].hh .v.RH = scantoks ( false , true ) ; | |
oldsetting = selector ; | |
selector = 21 ; | |
tokenshow ( defref ) ; | |
selector = oldsetting ; | |
flushlist ( defref ) ; | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
s = makestring () ; | |
if ( c == 0 ) | |
{ | |
if ( termoffset + length ( s ) > maxprintline - 2 ) | |
println () ; | |
else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) | |
printchar ( 32 ) ; | |
print ( s ) ; | |
fflush ( stdout ) ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65626L ) ; | |
} | |
print ( s ) ; | |
if ( eqtb [2253280L ].hh .v.RH != -268435455L ) | |
useerrhelp = true ; | |
else if ( longhelpseen ) | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66684L ; | |
} | |
else { | |
if ( interaction < 3 ) | |
longhelpseen = true ; | |
{ | |
helpptr = 4 ; | |
helpline [3 ]= 66685L ; | |
helpline [2 ]= 66686L ; | |
helpline [1 ]= 66687L ; | |
helpline [0 ]= 66688L ; | |
} | |
} | |
error () ; | |
useerrhelp = false ; | |
} | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
} | |
void | |
shiftcase ( void ) | |
{ | |
shiftcase_regmem | |
halfword b ; | |
halfword p ; | |
halfword t ; | |
integer c ; | |
b = curchr ; | |
p = scantoks ( false , false ) ; | |
p = mem [defref ].hh .v.RH ; | |
while ( p != -268435455L ) { | |
t = mem [p ].hh .v.LH ; | |
if ( t < 34668544L ) | |
{ | |
c = t % 2097152L ; | |
if ( eqtb [b + c ].hh .v.RH != 0 ) | |
mem [p ].hh .v.LH = t - c + eqtb [b + c ].hh .v.RH ; | |
} | |
p = mem [p ].hh .v.RH ; | |
} | |
begintokenlist ( mem [defref ].hh .v.RH , 3 ) ; | |
{ | |
mem [defref ].hh .v.RH = avail ; | |
avail = defref ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
void | |
showwhatever ( void ) | |
{ | |
/* 50 */ showwhatever_regmem | |
halfword p ; | |
smallnumber t ; | |
unsigned char m ; | |
integer l ; | |
integer n ; | |
switch ( curchr ) | |
{case 3 : | |
{ | |
begindiagnostic () ; | |
showactivities () ; | |
} | |
break ; | |
case 1 : | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
p = eqtb [2253543L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 4 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
p = -268435455L ; | |
else p = mem [curptr + 1 ].hh .v.RH ; | |
} | |
begindiagnostic () ; | |
printnl ( 66704L ) ; | |
printint ( curval ) ; | |
printchar ( 61 ) ; | |
if ( p == -268435455L ) | |
print ( 65710L ) ; | |
else showbox ( p ) ; | |
} | |
break ; | |
case 0 : | |
{ | |
gettoken () ; | |
if ( interaction == 3 ) | |
; | |
printnl ( 66700L ) ; | |
if ( curcs != 0 ) | |
{ | |
sprintcs ( curcs ) ; | |
printchar ( 61 ) ; | |
} | |
printmeaning () ; | |
goto lab50 ; | |
} | |
break ; | |
case 4 : | |
{ | |
begindiagnostic () ; | |
showsavegroups () ; | |
} | |
break ; | |
case 6 : | |
{ | |
begindiagnostic () ; | |
printnl ( 65626L ) ; | |
println () ; | |
if ( condptr == -268435455L ) | |
{ | |
printnl ( 65661L ) ; | |
print ( 66897L ) ; | |
} | |
else { | |
p = condptr ; | |
n = 0 ; | |
do { | |
incr ( n ) ; | |
p = mem [p ].hh .v.RH ; | |
} while ( ! ( p == -268435455L ) ) ; | |
p = condptr ; | |
t = curif ; | |
l = ifline ; | |
m = iflimit ; | |
do { | |
printnl ( 66898L ) ; | |
printint ( n ) ; | |
print ( 65593L ) ; | |
printcmdchr ( 107 , t ) ; | |
if ( m == 2 ) | |
printesc ( 66162L ) ; | |
if ( l != 0 ) | |
{ | |
print ( 66896L ) ; | |
printint ( l ) ; | |
} | |
decr ( n ) ; | |
t = mem [p ].hh.b1 ; | |
l = mem [p + 1 ].cint ; | |
m = mem [p ].hh.b0 ; | |
p = mem [p ].hh .v.RH ; | |
} while ( ! ( p == -268435455L ) ) ; | |
} | |
} | |
break ; | |
default: | |
{ | |
p = thetoks () ; | |
if ( interaction == 3 ) | |
; | |
printnl ( 66700L ) ; | |
tokenshow ( memtop - 3 ) ; | |
flushlist ( mem [memtop - 3 ].hh .v.RH ) ; | |
goto lab50 ; | |
} | |
break ; | |
} | |
enddiagnostic ( true ) ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66705L ) ; | |
} | |
if ( selector == 19 ) { | |
if ( eqtb [8939269L ].cint <= 0 ) | |
{ | |
selector = 17 ; | |
print ( 66706L ) ; | |
selector = 19 ; | |
} | |
} | |
lab50: if ( interaction < 3 ) | |
{ | |
helpptr = 0 ; | |
decr ( errorcount ) ; | |
} | |
else if ( eqtb [8939269L ].cint > 0 ) | |
{ | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66695L ; | |
helpline [1 ]= 66696L ; | |
helpline [0 ]= 66697L ; | |
} | |
} | |
else { | |
{ | |
helpptr = 5 ; | |
helpline [4 ]= 66695L ; | |
helpline [3 ]= 66696L ; | |
helpline [2 ]= 66697L ; | |
helpline [1 ]= 66698L ; | |
helpline [0 ]= 66699L ; | |
} | |
} | |
error () ; | |
} | |
void | |
znewwhatsit ( smallnumber s , smallnumber w ) | |
{ | |
newwhatsit_regmem | |
halfword p ; | |
p = getnode ( w ) ; | |
mem [p ].hh.b0 = 8 ; | |
mem [p ].hh.b1 = s ; | |
mem [curlist .tailfield ].hh .v.RH = p ; | |
curlist .tailfield = p ; | |
} | |
void | |
znewwritewhatsit ( smallnumber w ) | |
{ | |
newwritewhatsit_regmem | |
newwhatsit ( curchr , w ) ; | |
if ( w != 2 ) | |
scanfourbitint () ; | |
else { | |
scanint () ; | |
if ( curval < 0 ) | |
curval = 17 ; | |
else if ( ( curval > 15 ) && ( curval != 18 ) ) | |
curval = 16 ; | |
} | |
mem [curlist .tailfield + 1 ].hh .v.LH = curval ; | |
} | |
void | |
zloadpicture ( boolean ispdf ) | |
{ | |
loadpicture_regmem | |
char * picpath ; | |
realrect bounds ; | |
transform t, t2 ; | |
realpoint corners[4] ; | |
real xsizereq, ysizereq ; | |
boolean checkkeywords ; | |
real xmin, xmax, ymin, ymax ; | |
smallnumber i ; | |
integer page ; | |
integer pdfboxtype ; | |
integer result ; | |
scanfilename () ; | |
packfilename ( curname , curarea , curext ) ; | |
pdfboxtype = 0 ; | |
page = 0 ; | |
if ( ispdf ) | |
{ | |
if ( scankeyword ( 66422L ) ) | |
{ | |
scanint () ; | |
page = curval ; | |
} | |
pdfboxtype = 6 ; | |
if ( scankeyword ( 66790L ) ) | |
pdfboxtype = 1 ; | |
else if ( scankeyword ( 66791L ) ) | |
pdfboxtype = 2 ; | |
else if ( scankeyword ( 66792L ) ) | |
pdfboxtype = 3 ; | |
else if ( scankeyword ( 66793L ) ) | |
pdfboxtype = 4 ; | |
else if ( scankeyword ( 66794L ) ) | |
pdfboxtype = 5 ; | |
} | |
if ( pdfboxtype == 6 ) | |
result = findpicfile ( addressof ( picpath ) , addressof ( bounds ) , 1 , | |
page ) ; | |
else result = findpicfile ( addressof ( picpath ) , addressof ( bounds ) , | |
pdfboxtype , page ) ; | |
setPoint ( corners [0 ], xField ( bounds ) , yField ( bounds ) ) ; | |
setPoint ( corners [1 ], xField ( corners [0 ]) , yField ( bounds ) + | |
htField ( bounds ) ) ; | |
setPoint ( corners [2 ], xField ( bounds ) + wdField ( bounds ) , yField ( | |
corners [1 ]) ) ; | |
setPoint ( corners [3 ], xField ( corners [2 ]) , yField ( corners [0 ] | |
) ) ; | |
xsizereq = 0.0 ; | |
ysizereq = 0.0 ; | |
makeidentity ( addressof ( t ) ) ; | |
checkkeywords = true ; | |
while ( checkkeywords ) { | |
if ( scankeyword ( 66673L ) ) | |
{ | |
scanint () ; | |
if ( ( xsizereq == 0.0 ) && ( ysizereq == 0.0 ) ) | |
{ | |
makescale ( addressof ( t2 ) , curval / ((double) 1000.0 ) , curval | |
/ ((double) 1000.0 ) ) ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) | |
do | |
transformpoint ( addressof ( corners [i ]) , addressof ( t2 ) ) ; | |
while ( i++ < for_end ) ;} | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
} | |
} | |
else if ( scankeyword ( 66795L ) ) | |
{ | |
scanint () ; | |
if ( ( xsizereq == 0.0 ) && ( ysizereq == 0.0 ) ) | |
{ | |
makescale ( addressof ( t2 ) , curval / ((double) 1000.0 ) , 1.0 ) ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) | |
do | |
transformpoint ( addressof ( corners [i ]) , addressof ( t2 ) ) ; | |
while ( i++ < for_end ) ;} | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
} | |
} | |
else if ( scankeyword ( 66796L ) ) | |
{ | |
scanint () ; | |
if ( ( xsizereq == 0.0 ) && ( ysizereq == 0.0 ) ) | |
{ | |
makescale ( addressof ( t2 ) , 1.0 , curval / ((double) 1000.0 ) ) ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) | |
do | |
transformpoint ( addressof ( corners [i ]) , addressof ( t2 ) ) ; | |
while ( i++ < for_end ) ;} | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
} | |
} | |
else if ( scankeyword ( 66088L ) ) | |
{ | |
scandimen ( false , false , false ) ; | |
if ( curval <= 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66797L ) ; | |
} | |
print ( 66798L ) ; | |
printscaled ( curval ) ; | |
print ( 66799L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66800L ; | |
helpline [0 ]= 66801L ; | |
} | |
error () ; | |
} | |
else xsizereq = Fix2D ( curval ) ; | |
} | |
else if ( scankeyword ( 66089L ) ) | |
{ | |
scandimen ( false , false , false ) ; | |
if ( curval <= 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66797L ) ; | |
} | |
print ( 66798L ) ; | |
printscaled ( curval ) ; | |
print ( 66799L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66800L ; | |
helpline [0 ]= 66801L ; | |
} | |
error () ; | |
} | |
else ysizereq = Fix2D ( curval ) ; | |
} | |
else if ( scankeyword ( 66802L ) ) | |
{ | |
scandecimal () ; | |
if ( ( xsizereq != 0.0 ) || ( ysizereq != 0.0 ) ) | |
{ | |
{ | |
xmin = 1000000.0 ; | |
xmax = - (integer) xmin ; | |
ymin = xmin ; | |
ymax = xmax ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) | |
do | |
{ | |
if ( xCoord ( corners [i ]) < xmin ) | |
xmin = xCoord ( corners [i ]) ; | |
if ( xCoord ( corners [i ]) > xmax ) | |
xmax = xCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) < ymin ) | |
ymin = yCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) > ymax ) | |
ymax = yCoord ( corners [i ]) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
if ( xsizereq == 0.0 ) | |
{ | |
makescale ( addressof ( t2 ) , ysizereq / ((double) ( ymax - ymin ) | |
) , ysizereq / ((double) ( ymax - ymin ) ) ) ; | |
} | |
else if ( ysizereq == 0.0 ) | |
{ | |
makescale ( addressof ( t2 ) , xsizereq / ((double) ( xmax - xmin ) | |
) , xsizereq / ((double) ( xmax - xmin ) ) ) ; | |
} | |
else { | |
makescale ( addressof ( t2 ) , xsizereq / ((double) ( xmax - xmin ) | |
) , ysizereq / ((double) ( ymax - ymin ) ) ) ; | |
} | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) | |
do | |
transformpoint ( addressof ( corners [i ]) , addressof ( t2 ) ) ; | |
while ( i++ < for_end ) ;} | |
xsizereq = 0.0 ; | |
ysizereq = 0.0 ; | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
} | |
makerotation ( addressof ( t2 ) , Fix2D ( curval ) * 3.141592653589793 | |
/ ((double) 180.0 ) ) ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) do | |
transformpoint ( addressof ( corners [i ]) , addressof ( t2 ) ) ; | |
while ( i++ < for_end ) ;} | |
{ | |
xmin = 1000000.0 ; | |
xmax = - (integer) xmin ; | |
ymin = xmin ; | |
ymax = xmax ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) | |
do | |
{ | |
if ( xCoord ( corners [i ]) < xmin ) | |
xmin = xCoord ( corners [i ]) ; | |
if ( xCoord ( corners [i ]) > xmax ) | |
xmax = xCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) < ymin ) | |
ymin = yCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) > ymax ) | |
ymax = yCoord ( corners [i ]) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
setPoint ( corners [0 ], xmin , ymin ) ; | |
setPoint ( corners [1 ], xmin , ymax ) ; | |
setPoint ( corners [2 ], xmax , ymax ) ; | |
setPoint ( corners [3 ], xmax , ymin ) ; | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
} | |
else checkkeywords = false ; | |
} | |
if ( ( xsizereq != 0.0 ) || ( ysizereq != 0.0 ) ) | |
{ | |
{ | |
xmin = 1000000.0 ; | |
xmax = - (integer) xmin ; | |
ymin = xmin ; | |
ymax = xmax ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) do | |
{ | |
if ( xCoord ( corners [i ]) < xmin ) | |
xmin = xCoord ( corners [i ]) ; | |
if ( xCoord ( corners [i ]) > xmax ) | |
xmax = xCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) < ymin ) | |
ymin = yCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) > ymax ) | |
ymax = yCoord ( corners [i ]) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
if ( xsizereq == 0.0 ) | |
{ | |
makescale ( addressof ( t2 ) , ysizereq / ((double) ( ymax - ymin ) ) , | |
ysizereq / ((double) ( ymax - ymin ) ) ) ; | |
} | |
else if ( ysizereq == 0.0 ) | |
{ | |
makescale ( addressof ( t2 ) , xsizereq / ((double) ( xmax - xmin ) ) , | |
xsizereq / ((double) ( xmax - xmin ) ) ) ; | |
} | |
else { | |
makescale ( addressof ( t2 ) , xsizereq / ((double) ( xmax - xmin ) ) , | |
ysizereq / ((double) ( ymax - ymin ) ) ) ; | |
} | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) do | |
transformpoint ( addressof ( corners [i ]) , addressof ( t2 ) ) ; | |
while ( i++ < for_end ) ;} | |
xsizereq = 0.0 ; | |
ysizereq = 0.0 ; | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
} | |
{ | |
xmin = 1000000.0 ; | |
xmax = - (integer) xmin ; | |
ymin = xmin ; | |
ymax = xmax ; | |
{register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) do | |
{ | |
if ( xCoord ( corners [i ]) < xmin ) | |
xmin = xCoord ( corners [i ]) ; | |
if ( xCoord ( corners [i ]) > xmax ) | |
xmax = xCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) < ymin ) | |
ymin = yCoord ( corners [i ]) ; | |
if ( yCoord ( corners [i ]) > ymax ) | |
ymax = yCoord ( corners [i ]) ; | |
} | |
while ( i++ < for_end ) ;} | |
} | |
maketranslation ( addressof ( t2 ) , - (integer) xmin * 72 / ((double) 72.27 | |
) , - (integer) ymin * 72 / ((double) 72.27 ) ) ; | |
transformconcat ( addressof ( t ) , addressof ( t2 ) ) ; | |
if ( result == 0 ) | |
{ | |
newwhatsit ( 43 , 9 + ( strlen ( picpath ) + sizeof ( memoryword ) - 1 ) / | |
sizeof ( memoryword ) ) ; | |
if ( ispdf ) | |
{ | |
mem [curlist .tailfield ].hh.b1 = 44 ; | |
} | |
mem [curlist .tailfield + 4 ].hh.b0 = strlen ( picpath ) ; | |
mem [curlist .tailfield + 4 ].hh.b1 = page ; | |
mem [curlist .tailfield + 8 ].hh.b0 = pdfboxtype ; | |
mem [curlist .tailfield + 1 ].cint = D2Fix ( xmax - xmin ) ; | |
mem [curlist .tailfield + 3 ].cint = D2Fix ( ymax - ymin ) ; | |
mem [curlist .tailfield + 2 ].cint = 0 ; | |
mem [curlist .tailfield + 5 ].hh .v.LH = D2Fix ( aField ( t ) ) ; | |
mem [curlist .tailfield + 5 ].hh .v.RH = D2Fix ( bField ( t ) ) ; | |
mem [curlist .tailfield + 6 ].hh .v.LH = D2Fix ( cField ( t ) ) ; | |
mem [curlist .tailfield + 6 ].hh .v.RH = D2Fix ( dField ( t ) ) ; | |
mem [curlist .tailfield + 7 ].hh .v.LH = D2Fix ( xField ( t ) ) ; | |
mem [curlist .tailfield + 7 ].hh .v.RH = D2Fix ( yField ( t ) ) ; | |
memcpy ( addressof ( mem [curlist .tailfield + 9 ]) , picpath , strlen ( | |
picpath ) ) ; | |
libcfree ( picpath ) ; | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66803L ) ; | |
} | |
printfilename ( curname , curarea , curext ) ; | |
print ( 39 ) ; | |
if ( result == -43 ) | |
{ | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66804L ; | |
helpline [0 ]= 66805L ; | |
} | |
} | |
else { | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66804L ; | |
helpline [0 ]= 66806L ; | |
} | |
} | |
error () ; | |
} | |
} | |
void | |
scanandpackname ( void ) | |
{ | |
scanandpackname_regmem | |
scanfilename () ; | |
packfilename ( curname , curarea , curext ) ; | |
} | |
void | |
doextension ( void ) | |
{ | |
doextension_regmem | |
integer i, j, k ; | |
halfword p ; | |
switch ( curchr ) | |
{case 0 : | |
{ | |
newwritewhatsit ( 3 ) ; | |
scanoptionalequals () ; | |
scanfilename () ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = curname ; | |
mem [curlist .tailfield + 2 ].hh .v.LH = curarea ; | |
mem [curlist .tailfield + 2 ].hh .v.RH = curext ; | |
} | |
break ; | |
case 1 : | |
{ | |
k = curcs ; | |
newwritewhatsit ( 2 ) ; | |
curcs = k ; | |
p = scantoks ( false , false ) ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = defref ; | |
} | |
break ; | |
case 2 : | |
{ | |
newwritewhatsit ( 2 ) ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = -268435455L ; | |
} | |
break ; | |
case 3 : | |
{ | |
newwhatsit ( 3 , 2 ) ; | |
mem [curlist .tailfield + 1 ].hh .v.LH = -268435455L ; | |
p = scantoks ( false , true ) ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = defref ; | |
} | |
break ; | |
case 4 : | |
{ | |
getxtoken () ; | |
if ( ( curcmd == 59 ) && ( curchr <= 2 ) ) | |
{ | |
p = curlist .tailfield ; | |
doextension () ; | |
outwhat ( curlist .tailfield ) ; | |
flushnodelist ( curlist .tailfield ) ; | |
curlist .tailfield = p ; | |
mem [p ].hh .v.RH = -268435455L ; | |
} | |
else backinput () ; | |
} | |
break ; | |
case 5 : | |
if ( abs ( curlist .modefield ) != 104 ) | |
reportillegalcase () ; | |
else { | |
newwhatsit ( 4 , 2 ) ; | |
scanint () ; | |
if ( curval <= 0 ) | |
curlist .auxfield .hh .v.RH = 0 ; | |
else if ( curval > 255 ) | |
curlist .auxfield .hh .v.RH = 0 ; | |
else curlist .auxfield .hh .v.RH = curval ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = curlist .auxfield .hh .v.RH ; | |
mem [curlist .tailfield + 1 ].hh.b0 = normmin ( eqtb [8939291L ] | |
.cint ) ; | |
mem [curlist .tailfield + 1 ].hh.b1 = normmin ( eqtb [8939292L ] | |
.cint ) ; | |
} | |
break ; | |
case 21 : | |
{ | |
newwhatsit ( 21 , 2 ) ; | |
} | |
break ; | |
case 31 : | |
{ | |
secondsandmicros ( epochseconds , microseconds ) ; | |
} | |
break ; | |
case 33 : | |
{ | |
scanint () ; | |
if ( curval < 0 ) | |
curval = - (integer) curval ; | |
randomseed = curval ; | |
initrandoms ( randomseed ) ; | |
} | |
break ; | |
case 41 : | |
if ( abs ( curlist .modefield ) == 207 ) | |
reportillegalcase () ; | |
else loadpicture ( false ) ; | |
break ; | |
case 42 : | |
if ( abs ( curlist .modefield ) == 207 ) | |
reportillegalcase () ; | |
else loadpicture ( true ) ; | |
break ; | |
case 43 : | |
{ | |
if ( abs ( curlist .modefield ) == 1 ) | |
{ | |
backinput () ; | |
newgraf ( true ) ; | |
} | |
else if ( abs ( curlist .modefield ) == 207 ) | |
reportillegalcase () ; | |
else { | |
if ( ( ( fontarea [eqtb [2253799L ].hh .v.RH ]== 65535L ) || ( | |
fontarea [eqtb [2253799L ].hh .v.RH ]== 65534L ) ) ) | |
{ | |
newwhatsit ( 42 , 5 ) ; | |
scanint () ; | |
if ( ( curval < 0 ) || ( curval > 65535L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66788L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66789L ; | |
helpline [0 ]= 66000L ; | |
} | |
interror ( curval ) ; | |
curval = 0 ; | |
} | |
mem [curlist .tailfield + 4 ].qqqq .b1 = eqtb [2253799L ].hh | |
.v.RH ; | |
mem [curlist .tailfield + 4 ].qqqq .b2 = curval ; | |
setnativeglyphmetrics ( curlist .tailfield , ( eqtb [8939315L ] | |
.cint > 0 ) ) ; | |
} | |
else notnativefonterror ( 59 , 43 , eqtb [2253799L ].hh .v.RH ) ; | |
} | |
} | |
break ; | |
case 44 : | |
{ | |
scanandpackname () ; | |
i = getencodingmodeandinfo ( addressof ( j ) ) ; | |
if ( i == 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66807L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66808L ; | |
helpline [0 ]= 66809L ; | |
} | |
error () ; | |
} | |
else setinputfileencoding ( inputfile [inopen ], i , j ) ; | |
} | |
break ; | |
case 45 : | |
{ | |
scanandpackname () ; | |
i = getencodingmodeandinfo ( addressof ( j ) ) ; | |
eqtb [8939318L ].cint = i ; | |
eqtb [8939319L ].cint = j ; | |
} | |
break ; | |
case 46 : | |
{ | |
scanfilename () ; | |
if ( length ( curname ) == 0 ) | |
eqtb [8939309L ].cint = 0 ; | |
else eqtb [8939309L ].cint = curname ; | |
} | |
break ; | |
default: | |
confusion ( 66758L ) ; | |
break ; | |
} | |
} | |
void | |
fixlanguage ( void ) | |
{ | |
fixlanguage_regmem | |
UTF16code l ; | |
if ( eqtb [8939290L ].cint <= 0 ) | |
l = 0 ; | |
else if ( eqtb [8939290L ].cint > 255 ) | |
l = 0 ; | |
else l = eqtb [8939290L ].cint ; | |
if ( l != curlist .auxfield .hh .v.RH ) | |
{ | |
newwhatsit ( 4 , 2 ) ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = l ; | |
curlist .auxfield .hh .v.RH = l ; | |
mem [curlist .tailfield + 1 ].hh.b0 = normmin ( eqtb [8939291L ].cint | |
) ; | |
mem [curlist .tailfield + 1 ].hh.b1 = normmin ( eqtb [8939292L ].cint | |
) ; | |
} | |
} | |
void | |
insertsrcspecial ( void ) | |
{ | |
insertsrcspecial_regmem | |
halfword toklist, p, q ; | |
if ( ( sourcefilenamestack [inopen ]> 0 && isnewsource ( | |
sourcefilenamestack [inopen ], line ) ) ) | |
{ | |
toklist = getavail () ; | |
p = toklist ; | |
mem [p ].hh .v.LH = 35797667L ; | |
mem [p ].hh .v.RH = getavail () ; | |
p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.LH = 2097275L ; | |
q = strtoks ( makesrcspecial ( sourcefilenamestack [inopen ], line ) ) ; | |
mem [p ].hh .v.RH = mem [memtop - 3 ].hh .v.RH ; | |
p = q ; | |
mem [p ].hh .v.RH = getavail () ; | |
p = mem [p ].hh .v.RH ; | |
mem [p ].hh .v.LH = 4194429L ; | |
begintokenlist ( toklist , 5 ) ; | |
remembersourceinfo ( sourcefilenamestack [inopen ], line ) ; | |
} | |
} | |
void | |
appendsrcspecial ( void ) | |
{ | |
appendsrcspecial_regmem | |
halfword q ; | |
if ( ( sourcefilenamestack [inopen ]> 0 && isnewsource ( | |
sourcefilenamestack [inopen ], line ) ) ) | |
{ | |
newwhatsit ( 3 , 2 ) ; | |
mem [curlist .tailfield + 1 ].hh .v.LH = 0 ; | |
defref = getavail () ; | |
mem [defref ].hh .v.LH = -268435455L ; | |
q = strtoks ( makesrcspecial ( sourcefilenamestack [inopen ], line ) ) ; | |
mem [defref ].hh .v.RH = mem [memtop - 3 ].hh .v.RH ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = defref ; | |
remembersourceinfo ( sourcefilenamestack [inopen ], line ) ; | |
} | |
} | |
void | |
handlerightbrace ( void ) | |
{ | |
handlerightbrace_regmem | |
halfword p, q ; | |
scaled d ; | |
integer f ; | |
switch ( curgroup ) | |
{case 1 : | |
unsave () ; | |
break ; | |
case 0 : | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66471L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66472L ; | |
helpline [0 ]= 66473L ; | |
} | |
error () ; | |
} | |
break ; | |
case 14 : | |
case 15 : | |
case 16 : | |
extrarightbrace () ; | |
break ; | |
case 2 : | |
package ( 0 ) ; | |
break ; | |
case 3 : | |
{ | |
adjusttail = memtop - 5 ; | |
preadjusttail = memtop - 14 ; | |
package ( 0 ) ; | |
} | |
break ; | |
case 4 : | |
{ | |
endgraf () ; | |
package ( 0 ) ; | |
} | |
break ; | |
case 5 : | |
{ | |
endgraf () ; | |
package ( 4 ) ; | |
} | |
break ; | |
case 11 : | |
{ | |
endgraf () ; | |
q = eqtb [2252750L ].hh .v.RH ; | |
incr ( mem [q ].hh .v.RH ) ; | |
d = eqtb [10053699L ].cint ; | |
f = eqtb [8939282L ].cint ; | |
unsave () ; | |
saveptr = saveptr - 2 ; | |
p = vpackage ( mem [curlist .headfield ].hh .v.RH , 0 , 1 , | |
1073741823L ) ; | |
popnest () ; | |
if ( savestack [saveptr + 0 ].cint < 255 ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = getnode ( 5 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = 3 ; | |
mem [curlist .tailfield ].hh.b1 = savestack [saveptr + 0 ].cint ; | |
mem [curlist .tailfield + 3 ].cint = mem [p + 3 ].cint + mem [p + | |
2 ].cint ; | |
mem [curlist .tailfield + 4 ].hh .v.LH = mem [p + 5 ].hh .v.RH ; | |
mem [curlist .tailfield + 4 ].hh .v.RH = q ; | |
mem [curlist .tailfield + 2 ].cint = d ; | |
mem [curlist .tailfield + 1 ].cint = f ; | |
} | |
else { | |
{ | |
mem [curlist .tailfield ].hh .v.RH = getnode ( 2 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = 5 ; | |
mem [curlist .tailfield ].hh.b1 = savestack [saveptr + 1 ].cint ; | |
mem [curlist .tailfield + 1 ].cint = mem [p + 5 ].hh .v.RH ; | |
deleteglueref ( q ) ; | |
} | |
freenode ( p , 8 ) ; | |
if ( nestptr == 0 ) | |
buildpage () ; | |
} | |
break ; | |
case 8 : | |
{ | |
if ( ( curinput .locfield != -268435455L ) || ( ( curinput .indexfield | |
!= 7 ) && ( curinput .indexfield != 3 ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66439L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66440L ; | |
helpline [0 ]= 66441L ; | |
} | |
error () ; | |
do { | |
gettoken () ; | |
} while ( ! ( curinput .locfield == -268435455L ) ) ; | |
} | |
endtokenlist () ; | |
endgraf () ; | |
unsave () ; | |
outputactive = false ; | |
insertpenalties = 0 ; | |
if ( eqtb [2253798L ].hh .v.RH != -268435455L ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66442L ) ; | |
} | |
printesc ( 65709L ) ; | |
printint ( 255 ) ; | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66443L ; | |
helpline [1 ]= 66444L ; | |
helpline [0 ]= 66445L ; | |
} | |
boxerror ( 255 ) ; | |
} | |
if ( curlist .tailfield != curlist .headfield ) | |
{ | |
mem [pagetail ].hh .v.RH = mem [curlist .headfield ].hh .v.RH ; | |
pagetail = curlist .tailfield ; | |
} | |
if ( mem [memtop - 2 ].hh .v.RH != -268435455L ) | |
{ | |
if ( mem [memtop - 1 ].hh .v.RH == -268435455L ) | |
nest [0 ].tailfield = pagetail ; | |
mem [pagetail ].hh .v.RH = mem [memtop - 1 ].hh .v.RH ; | |
mem [memtop - 1 ].hh .v.RH = mem [memtop - 2 ].hh .v.RH ; | |
mem [memtop - 2 ].hh .v.RH = -268435455L ; | |
pagetail = memtop - 2 ; | |
} | |
flushnodelist ( discptr [2 ]) ; | |
discptr [2 ]= -268435455L ; | |
popnest () ; | |
buildpage () ; | |
} | |
break ; | |
case 10 : | |
builddiscretionary () ; | |
break ; | |
case 6 : | |
{ | |
backinput () ; | |
curtok = 35797658L ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 65953L ) ; | |
} | |
printesc ( 66320L ) ; | |
print ( 65954L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66554L ; | |
} | |
inserror () ; | |
} | |
break ; | |
case 7 : | |
{ | |
endgraf () ; | |
unsave () ; | |
alignpeek () ; | |
} | |
break ; | |
case 12 : | |
{ | |
endgraf () ; | |
unsave () ; | |
saveptr = saveptr - 2 ; | |
p = vpackage ( mem [curlist .headfield ].hh .v.RH , savestack [ | |
saveptr + 1 ].cint , savestack [saveptr + 0 ].cint , 1073741823L ) ; | |
popnest () ; | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnoad () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = 29 ; | |
mem [curlist .tailfield + 1 ].hh .v.RH = 2 ; | |
mem [curlist .tailfield + 1 ].hh .v.LH = p ; | |
} | |
break ; | |
case 13 : | |
buildchoices () ; | |
break ; | |
case 9 : | |
{ | |
unsave () ; | |
decr ( saveptr ) ; | |
mem [savestack [saveptr + 0 ].cint ].hh .v.RH = 3 ; | |
p = finmlist ( -268435455L ) ; | |
mem [savestack [saveptr + 0 ].cint ].hh .v.LH = p ; | |
if ( p != -268435455L ) { | |
if ( mem [p ].hh .v.RH == -268435455L ) { | |
if ( mem [p ].hh.b0 == 16 ) | |
{ | |
if ( mem [p + 3 ].hh .v.RH == 0 ) { | |
if ( mem [p + 2 ].hh .v.RH == 0 ) | |
{ | |
mem [savestack [saveptr + 0 ].cint ].hh = mem [p + 1 ] | |
.hh ; | |
freenode ( p , 4 ) ; | |
} | |
} | |
} | |
else if ( mem [p ].hh.b0 == 28 ) { | |
if ( savestack [saveptr + 0 ].cint == curlist .tailfield + 1 ) { | |
if ( mem [curlist .tailfield ].hh.b0 == 16 ) | |
{ | |
q = curlist .headfield ; | |
while ( mem [q ].hh .v.RH != curlist .tailfield ) q = mem [ | |
q ].hh .v.RH ; | |
mem [q ].hh .v.RH = p ; | |
freenode ( curlist .tailfield , 4 ) ; | |
curlist .tailfield = p ; | |
} | |
} | |
} | |
} | |
} | |
} | |
break ; | |
default: | |
confusion ( 66474L ) ; | |
break ; | |
} | |
} | |
void | |
maincontrol ( void ) | |
{ | |
/* 60 21 70 80 90 91 92 95 100 101 110 111 112 71 72 120 10 */ | |
maincontrol_regmem | |
integer t ; | |
if ( eqtb [2253278L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253278L ].hh .v.RH , 13 ) ; | |
lab60: getxtoken () ; | |
lab21: if ( interrupt != 0 ) { | |
if ( OKtointerrupt ) | |
{ | |
backinput () ; | |
{ | |
if ( interrupt != 0 ) | |
pauseforinstructions () ; | |
} | |
goto lab60 ; | |
} | |
} | |
; | |
#ifdef TEXMF_DEBUG | |
if ( panicking ) | |
checkmem ( false ) ; | |
#endif /* TEXMF_DEBUG */ | |
if ( eqtb [8939276L ].cint > 0 ) | |
showcurcmdchr () ; | |
switch ( abs ( curlist .modefield ) + curcmd ) | |
{case 115 : | |
case 116 : | |
case 172 : | |
goto lab70 ; | |
break ; | |
case 120 : | |
{ | |
scanusvnum () ; | |
curchr = curval ; | |
goto lab70 ; | |
} | |
break ; | |
case 169 : | |
{ | |
getxtoken () ; | |
if ( ( curcmd == 11 ) || ( curcmd == 12 ) || ( curcmd == 68 ) || ( | |
curcmd == 16 ) ) | |
cancelboundary = true ; | |
goto lab21 ; | |
} | |
break ; | |
default: | |
{ | |
if ( abs ( curlist .modefield ) == 104 ) { | |
if ( ( eqtb [8939316L ].cint > 0 ) && ( spaceclass != 4096 ) && ( | |
prevclass != ( 4095 ) ) ) | |
{ | |
prevclass = ( 4095 ) ; | |
findsaelement ( 6 , spaceclass * 4096 + ( 4095 ) , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcs == 0 ) | |
{ | |
if ( curcmd == 16 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
} | |
else curtok = 33554431L + curcs ; | |
backinput () ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
goto lab60 ; | |
} | |
} | |
} | |
switch ( abs ( curlist .modefield ) + curcmd ) | |
{case 114 : | |
if ( curlist .auxfield .hh .v.LH == 1000 ) | |
goto lab120 ; | |
else appspace () ; | |
break ; | |
case 168 : | |
case 271 : | |
goto lab120 ; | |
break ; | |
case 1 : | |
case 104 : | |
case 207 : | |
case 11 : | |
case 217 : | |
case 272 : | |
; | |
break ; | |
case 40 : | |
case 143 : | |
case 246 : | |
{ | |
if ( curchr == 0 ) | |
{ | |
do { | |
getxtoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
goto lab21 ; | |
} | |
else { | |
t = scannerstatus ; | |
scannerstatus = 0 ; | |
getnext () ; | |
scannerstatus = t ; | |
if ( curcs < 2228226L ) | |
curcs = primlookup ( curcs - 1114113L ) ; | |
else curcs = primlookup ( hash [curcs ].v.RH ) ; | |
if ( curcs != 0 ) | |
{ | |
curcmd = eqtb [2243238L + curcs ].hh.b0 ; | |
curchr = eqtb [2243238L + curcs ].hh .v.RH ; | |
curtok = 35797669L + curcs ; | |
goto lab21 ; | |
} | |
} | |
} | |
break ; | |
case 15 : | |
if ( itsallover () ) | |
return ; | |
break ; | |
case 23 : | |
case 125 : | |
case 228 : | |
case 72 : | |
case 175 : | |
case 278 : | |
case 39 : | |
case 45 : | |
case 49 : | |
case 152 : | |
case 7 : | |
case 110 : | |
case 213 : | |
reportillegalcase () ; | |
break ; | |
case 8 : | |
case 111 : | |
case 9 : | |
case 112 : | |
case 18 : | |
case 121 : | |
case 70 : | |
case 173 : | |
case 71 : | |
case 174 : | |
case 51 : | |
case 154 : | |
case 16 : | |
case 119 : | |
case 50 : | |
case 153 : | |
case 53 : | |
case 156 : | |
case 67 : | |
case 170 : | |
case 54 : | |
case 157 : | |
case 55 : | |
case 158 : | |
case 57 : | |
case 160 : | |
case 56 : | |
case 159 : | |
case 31 : | |
case 134 : | |
case 52 : | |
case 155 : | |
case 29 : | |
case 132 : | |
case 47 : | |
case 150 : | |
case 216 : | |
case 220 : | |
case 221 : | |
case 234 : | |
case 231 : | |
case 240 : | |
case 243 : | |
insertdollarsign () ; | |
break ; | |
case 37 : | |
case 139 : | |
case 242 : | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = scanrulespec () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
if ( abs ( curlist .modefield ) == 1 ) | |
curlist .auxfield .cint = -65536000L ; | |
else if ( abs ( curlist .modefield ) == 104 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
} | |
break ; | |
case 28 : | |
case 130 : | |
case 233 : | |
case 235 : | |
appendglue () ; | |
break ; | |
case 30 : | |
case 133 : | |
case 236 : | |
case 237 : | |
appendkern () ; | |
break ; | |
case 2 : | |
case 105 : | |
newsavelevel ( 1 ) ; | |
break ; | |
case 62 : | |
case 165 : | |
case 268 : | |
newsavelevel ( 14 ) ; | |
break ; | |
case 63 : | |
case 166 : | |
case 269 : | |
if ( curgroup == 14 ) | |
unsave () ; | |
else offsave () ; | |
break ; | |
case 3 : | |
case 106 : | |
case 209 : | |
handlerightbrace () ; | |
break ; | |
case 22 : | |
case 126 : | |
case 229 : | |
{ | |
t = curchr ; | |
scandimen ( false , false , false ) ; | |
if ( t == 0 ) | |
scanbox ( curval ) ; | |
else scanbox ( - (integer) curval ) ; | |
} | |
break ; | |
case 32 : | |
case 135 : | |
case 238 : | |
scanbox ( 1073807261L + curchr ) ; | |
break ; | |
case 21 : | |
case 124 : | |
case 227 : | |
beginbox ( 0 ) ; | |
break ; | |
case 44 : | |
newgraf ( curchr > 0 ) ; | |
break ; | |
case 12 : | |
case 13 : | |
case 17 : | |
case 69 : | |
case 4 : | |
case 24 : | |
case 36 : | |
case 46 : | |
case 48 : | |
case 27 : | |
case 34 : | |
case 65 : | |
case 66 : | |
{ | |
backinput () ; | |
newgraf ( true ) ; | |
} | |
break ; | |
case 147 : | |
case 250 : | |
indentinhmode () ; | |
break ; | |
case 14 : | |
{ | |
normalparagraph () ; | |
if ( curlist .modefield > 0 ) | |
buildpage () ; | |
} | |
break ; | |
case 117 : | |
{ | |
if ( alignstate < 0 ) | |
offsave () ; | |
endgraf () ; | |
if ( curlist .modefield == 1 ) | |
buildpage () ; | |
} | |
break ; | |
case 118 : | |
case 131 : | |
case 140 : | |
case 128 : | |
case 136 : | |
headforvmode () ; | |
break ; | |
case 38 : | |
case 141 : | |
case 244 : | |
case 142 : | |
case 245 : | |
begininsertoradjust () ; | |
break ; | |
case 19 : | |
case 122 : | |
case 225 : | |
makemark () ; | |
break ; | |
case 43 : | |
case 146 : | |
case 249 : | |
appendpenalty () ; | |
break ; | |
case 26 : | |
case 129 : | |
case 232 : | |
deletelast () ; | |
break ; | |
case 25 : | |
case 127 : | |
case 230 : | |
unpackage () ; | |
break ; | |
case 148 : | |
appenditaliccorrection () ; | |
break ; | |
case 251 : | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newkern ( 0 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
break ; | |
case 151 : | |
case 254 : | |
appenddiscretionary () ; | |
break ; | |
case 149 : | |
makeaccent () ; | |
break ; | |
case 6 : | |
case 109 : | |
case 212 : | |
case 5 : | |
case 108 : | |
case 211 : | |
alignerror () ; | |
break ; | |
case 35 : | |
case 138 : | |
case 241 : | |
noalignerror () ; | |
break ; | |
case 64 : | |
case 167 : | |
case 270 : | |
omiterror () ; | |
break ; | |
case 33 : | |
initalign () ; | |
break ; | |
case 137 : | |
if ( curchr > 0 ) | |
{ | |
if ( eTeXenabled ( ( eqtb [8939312L ].cint > 0 ) , curcmd , curchr | |
) ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newmath ( 0 , curchr ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
else initalign () ; | |
break ; | |
case 239 : | |
if ( privileged () ) { | |
if ( curgroup == 15 ) | |
initalign () ; | |
else offsave () ; | |
} | |
break ; | |
case 10 : | |
case 113 : | |
doendv () ; | |
break ; | |
case 68 : | |
case 171 : | |
case 274 : | |
cserror () ; | |
break ; | |
case 107 : | |
initmath () ; | |
break ; | |
case 255 : | |
if ( privileged () ) { | |
if ( curgroup == 15 ) | |
starteqno () ; | |
else offsave () ; | |
} | |
break ; | |
case 208 : | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnoad () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
backinput () ; | |
scanmath ( curlist .tailfield + 1 ) ; | |
} | |
break ; | |
case 218 : | |
case 219 : | |
case 275 : | |
setmathchar ( eqtb [6711016L + curchr ].hh .v.RH ) ; | |
break ; | |
case 223 : | |
{ | |
scancharnum () ; | |
curchr = curval ; | |
setmathchar ( eqtb [6711016L + curchr ].hh .v.RH ) ; | |
} | |
break ; | |
case 224 : | |
if ( curchr == 2 ) | |
{ | |
scanmathclassint () ; | |
t = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
t = t + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
t = t + curval ; | |
setmathchar ( t ) ; | |
} | |
else if ( curchr == 1 ) | |
{ | |
scanxetexmathcharint () ; | |
setmathchar ( curval ) ; | |
} | |
else { | |
scanfifteenbitint () ; | |
setmathchar ( setclassfield ( curval / 4096 ) + setfamilyfield ( ( | |
curval % 4096 ) / 256 ) + ( curval % 256 ) ) ; | |
} | |
break ; | |
case 276 : | |
{ | |
setmathchar ( setclassfield ( curchr / 4096 ) + setfamilyfield ( ( | |
curchr % 4096 ) / 256 ) + ( curchr % 256 ) ) ; | |
} | |
break ; | |
case 277 : | |
setmathchar ( curchr ) ; | |
break ; | |
case 222 : | |
{ | |
if ( curchr == 1 ) | |
{ | |
scanmathclassint () ; | |
t = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
t = t + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
t = t + curval ; | |
setmathchar ( t ) ; | |
} | |
else { | |
scandelimiterint () ; | |
curval = curval / 4096 ; | |
setmathchar ( setclassfield ( curval / 4096 ) + setfamilyfield ( ( | |
curval % 4096 ) / 256 ) + ( curval % 256 ) ) ; | |
} | |
} | |
break ; | |
case 257 : | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newnoad () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b0 = curchr ; | |
scanmath ( curlist .tailfield + 1 ) ; | |
} | |
break ; | |
case 258 : | |
mathlimitswitch () ; | |
break ; | |
case 273 : | |
mathradical () ; | |
break ; | |
case 252 : | |
case 253 : | |
mathac () ; | |
break ; | |
case 263 : | |
{ | |
scanspec ( 12 , false ) ; | |
normalparagraph () ; | |
pushnest () ; | |
curlist .modefield = -1 ; | |
curlist .auxfield .cint = -65536000L ; | |
if ( ( insertsrcspecialeveryvbox ) ) | |
insertsrcspecial () ; | |
if ( eqtb [2253277L ].hh .v.RH != -268435455L ) | |
begintokenlist ( eqtb [2253277L ].hh .v.RH , 12 ) ; | |
} | |
break ; | |
case 260 : | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newstyle ( curchr ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
break ; | |
case 262 : | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newglue ( membot ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mem [curlist .tailfield ].hh.b1 = 98 ; | |
} | |
break ; | |
case 261 : | |
appendchoices () ; | |
break ; | |
case 215 : | |
case 214 : | |
subsup () ; | |
break ; | |
case 259 : | |
mathfraction () ; | |
break ; | |
case 256 : | |
mathleftright () ; | |
break ; | |
case 210 : | |
if ( curgroup == 15 ) | |
aftermath () ; | |
else offsave () ; | |
break ; | |
case 73 : | |
case 176 : | |
case 279 : | |
case 74 : | |
case 177 : | |
case 280 : | |
case 75 : | |
case 178 : | |
case 281 : | |
case 76 : | |
case 179 : | |
case 282 : | |
case 77 : | |
case 180 : | |
case 283 : | |
case 78 : | |
case 181 : | |
case 284 : | |
case 79 : | |
case 182 : | |
case 285 : | |
case 80 : | |
case 183 : | |
case 286 : | |
case 81 : | |
case 184 : | |
case 287 : | |
case 82 : | |
case 185 : | |
case 288 : | |
case 83 : | |
case 186 : | |
case 289 : | |
case 84 : | |
case 187 : | |
case 290 : | |
case 85 : | |
case 188 : | |
case 291 : | |
case 86 : | |
case 189 : | |
case 292 : | |
case 87 : | |
case 190 : | |
case 293 : | |
case 88 : | |
case 191 : | |
case 294 : | |
case 89 : | |
case 192 : | |
case 295 : | |
case 90 : | |
case 193 : | |
case 296 : | |
case 91 : | |
case 194 : | |
case 297 : | |
case 92 : | |
case 195 : | |
case 298 : | |
case 93 : | |
case 196 : | |
case 299 : | |
case 94 : | |
case 197 : | |
case 300 : | |
case 95 : | |
case 198 : | |
case 301 : | |
case 96 : | |
case 199 : | |
case 302 : | |
case 97 : | |
case 200 : | |
case 303 : | |
case 98 : | |
case 201 : | |
case 304 : | |
case 99 : | |
case 202 : | |
case 305 : | |
case 100 : | |
case 203 : | |
case 306 : | |
case 101 : | |
case 204 : | |
case 307 : | |
case 102 : | |
case 205 : | |
case 308 : | |
case 103 : | |
case 206 : | |
case 309 : | |
prefixedcommand () ; | |
break ; | |
case 41 : | |
case 144 : | |
case 247 : | |
{ | |
gettoken () ; | |
aftertoken = curtok ; | |
} | |
break ; | |
case 42 : | |
case 145 : | |
case 248 : | |
{ | |
gettoken () ; | |
saveforafter ( curtok ) ; | |
} | |
break ; | |
case 61 : | |
case 164 : | |
case 267 : | |
openorclosein () ; | |
break ; | |
case 59 : | |
case 162 : | |
case 265 : | |
issuemessage () ; | |
break ; | |
case 58 : | |
case 161 : | |
case 264 : | |
shiftcase () ; | |
break ; | |
case 20 : | |
case 123 : | |
case 226 : | |
showwhatever () ; | |
break ; | |
case 60 : | |
case 163 : | |
case 266 : | |
doextension () ; | |
break ; | |
} | |
} | |
break ; | |
} | |
goto lab60 ; | |
lab70: if ( ( ( curlist .headfield == curlist .tailfield ) && ( curlist | |
.modefield > 0 ) ) ) | |
{ | |
if ( ( insertsrcspecialauto ) ) | |
appendsrcspecial () ; | |
} | |
prevclass = ( 4095 ) ; | |
if ( ( ( fontarea [eqtb [2253799L ].hh .v.RH ]== 65535L ) || ( fontarea | |
[eqtb [2253799L ].hh .v.RH ]== 65534L ) ) ) | |
{ | |
if ( curlist .modefield > 0 ) { | |
if ( eqtb [8939290L ].cint != curlist .auxfield .hh .v.RH ) | |
fixlanguage () ; | |
} | |
mainh = 0 ; | |
mainf = eqtb [2253799L ].hh .v.RH ; | |
nativelen = 0 ; | |
lab71: mains = eqtb [5596904L + curchr ].hh .v.RH % 65536L ; | |
if ( mains == 1000 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else if ( mains < 1000 ) | |
{ | |
if ( mains > 0 ) | |
curlist .auxfield .hh .v.LH = mains ; | |
} | |
else if ( curlist .auxfield .hh .v.LH < 1000 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else curlist .auxfield .hh .v.LH = mains ; | |
curptr = -268435455L ; | |
spaceclass = eqtb [5596904L + curchr ].hh .v.RH / 65536L ; | |
if ( ( eqtb [8939316L ].cint > 0 ) && spaceclass != 4096 ) | |
{ | |
if ( prevclass == ( 4095 ) ) | |
{ | |
if ( ( curinput .statefield != 0 ) || ( curinput .indexfield != 4 ) ) | |
{ | |
findsaelement ( 6 , ( 4095 ) * 4096 + spaceclass , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcmd != 11 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
backinput () ; | |
curinput .indexfield = 4 ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
goto lab60 ; | |
} | |
} | |
} | |
else { | |
findsaelement ( 6 , prevclass * 4096 + spaceclass , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcmd != 11 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
backinput () ; | |
curinput .indexfield = 4 ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
prevclass = ( 4095 ) ; | |
goto lab72 ; | |
} | |
} | |
prevclass = spaceclass ; | |
} | |
if ( ( curchr > 65535L ) ) | |
{ | |
while ( nativetextsize <= nativelen + 2 ) { | |
nativetextsize = nativetextsize + 128 ; | |
nativetext = xrealloc ( nativetext , nativetextsize * sizeof ( | |
UTF16code ) ) ; | |
} | |
{ | |
nativetext [nativelen ]= ( curchr - 65536L ) / 1024 + 55296L ; | |
incr ( nativelen ) ; | |
} | |
{ | |
nativetext [nativelen ]= ( curchr - 65536L ) % 1024 + 56320L ; | |
incr ( nativelen ) ; | |
} | |
} | |
else { | |
while ( nativetextsize <= nativelen + 1 ) { | |
nativetextsize = nativetextsize + 128 ; | |
nativetext = xrealloc ( nativetext , nativetextsize * sizeof ( | |
UTF16code ) ) ; | |
} | |
{ | |
nativetext [nativelen ]= curchr ; | |
incr ( nativelen ) ; | |
} | |
} | |
ishyph = ( curchr == hyphenchar [mainf ]) || ( ( eqtb [8939313L ].cint | |
> 0 ) && ( ( curchr == 8212 ) || ( curchr == 8211 ) ) ) ; | |
if ( ( mainh == 0 ) && ishyph ) | |
mainh = nativelen ; | |
getnext () ; | |
if ( ( curcmd == 11 ) || ( curcmd == 12 ) || ( curcmd == 68 ) ) | |
goto lab71 ; | |
xtoken () ; | |
if ( ( curcmd == 11 ) || ( curcmd == 12 ) || ( curcmd == 68 ) ) | |
goto lab71 ; | |
if ( curcmd == 16 ) | |
{ | |
scanusvnum () ; | |
curchr = curval ; | |
goto lab71 ; | |
} | |
if ( ( eqtb [8939316L ].cint > 0 ) && ( spaceclass != 4096 ) && ( | |
prevclass != ( 4095 ) ) ) | |
{ | |
prevclass = ( 4095 ) ; | |
findsaelement ( 6 , spaceclass * 4096 + ( 4095 ) , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcs == 0 ) | |
{ | |
if ( curcmd == 16 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
} | |
else curtok = 33554431L + curcs ; | |
backinput () ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
goto lab72 ; | |
} | |
} | |
lab72: if ( ( fontmapping [mainf ]!= 0 ) ) | |
{ | |
maink = applymapping ( fontmapping [mainf ], nativetext , nativelen ) | |
; | |
nativelen = 0 ; | |
while ( nativetextsize <= nativelen + maink ) { | |
nativetextsize = nativetextsize + 128 ; | |
nativetext = xrealloc ( nativetext , nativetextsize * sizeof ( | |
UTF16code ) ) ; | |
} | |
mainh = 0 ; | |
{register integer for_end; mainp = 0 ;for_end = maink - 1 ; if ( mainp | |
<= for_end) do | |
{ | |
{ | |
nativetext [nativelen ]= mappedtext [mainp ]; | |
incr ( nativelen ) ; | |
} | |
if ( ( mainh == 0 ) && ( ( mappedtext [mainp ]== hyphenchar [ | |
mainf ]) || ( ( eqtb [8939313L ].cint > 0 ) && ( ( mappedtext [ | |
mainp ]== 8212 ) || ( mappedtext [mainp ]== 8211 ) ) ) ) ) | |
mainh = nativelen ; | |
} | |
while ( mainp++ < for_end ) ;} | |
} | |
if ( eqtb [8939275L ].cint > 0 ) | |
{ | |
tempptr = 0 ; | |
while ( ( tempptr < nativelen ) ) { | |
maink = nativetext [tempptr ]; | |
incr ( tempptr ) ; | |
if ( ( maink >= 55296L ) && ( maink < 56320L ) ) | |
{ | |
maink = 65536L + ( maink - 55296L ) * 1024 ; | |
maink = maink + nativetext [tempptr ]- 56320L ; | |
incr ( tempptr ) ; | |
} | |
if ( mapchartoglyph ( mainf , maink ) == 0 ) | |
charwarning ( mainf , maink ) ; | |
} | |
} | |
maink = nativelen ; | |
mainpp = curlist .tailfield ; | |
if ( curlist .modefield == 104 ) | |
{ | |
mainppp = curlist .headfield ; | |
while ( ( mainppp != mainpp ) && ( mem [mainppp ].hh .v.RH != mainpp ) | |
) { | |
if ( ( ! ( mainppp >= himemmin ) ) && ( mem [mainppp ].hh.b0 == 7 ) | |
) | |
{ | |
tempptr = mainppp ; | |
{register integer for_end; mainp = 1 ;for_end = mem [tempptr ] | |
.hh.b1 ; if ( mainp <= for_end) do | |
mainppp = mem [mainppp ].hh .v.RH ; | |
while ( mainp++ < for_end ) ;} | |
} | |
if ( mainppp != mainpp ) | |
mainppp = mem [mainppp ].hh .v.RH ; | |
} | |
tempptr = 0 ; | |
do { | |
if ( mainh == 0 ) | |
mainh = maink ; | |
if ( ( ( ( mainpp ) != -268435455L ) && ( ! ( mainpp >= himemmin ) ) | |
&& ( mem [mainpp ].hh.b0 == 8 ) && ( ( ( mem [mainpp ].hh.b1 >= 40 | |
) && ( mem [mainpp ].hh.b1 <= 41 ) ) ) ) && ( mem [mainpp + 4 ] | |
.qqqq .b1 == mainf ) && ( mainppp != mainpp ) && ( ! ( mainppp >= | |
himemmin ) ) && ( mem [mainppp ].hh.b0 != 7 ) ) | |
{ | |
maink = mainh + mem [mainpp + 4 ].qqqq .b2 ; | |
while ( nativetextsize <= nativelen + maink ) { | |
nativetextsize = nativetextsize + 128 ; | |
nativetext = xrealloc ( nativetext , nativetextsize * sizeof ( | |
UTF16code ) ) ; | |
} | |
savenativelen = nativelen ; | |
{register integer for_end; mainp = 0 ;for_end = mem [mainpp + 4 ] | |
.qqqq .b2 - 1 ; if ( mainp <= for_end) do | |
{ | |
nativetext [nativelen ]= getnativechar ( mainpp , mainp ) ; | |
incr ( nativelen ) ; | |
} | |
while ( mainp++ < for_end ) ;} | |
{register integer for_end; mainp = 0 ;for_end = mainh - 1 ; if ( | |
mainp <= for_end) do | |
{ | |
nativetext [nativelen ]= nativetext [tempptr + mainp ]; | |
incr ( nativelen ) ; | |
} | |
while ( mainp++ < for_end ) ;} | |
dolocalelinebreaks ( savenativelen , maink ) ; | |
nativelen = savenativelen ; | |
maink = nativelen - mainh - tempptr ; | |
tempptr = mainh ; | |
mainh = 0 ; | |
while ( ( mainh < maink ) && ( nativetext [tempptr + mainh ]!= | |
hyphenchar [mainf ]) && ( ( ! ( eqtb [8939313L ].cint > 0 ) ) || | |
( ( nativetext [tempptr + mainh ]!= 8212 ) && ( nativetext [ | |
tempptr + mainh ]!= 8211 ) ) ) ) incr ( mainh ) ; | |
if ( ( mainh < maink ) ) | |
incr ( mainh ) ; | |
mem [mainppp ].hh .v.RH = mem [mainpp ].hh .v.RH ; | |
mem [mainpp ].hh .v.RH = -268435455L ; | |
flushnodelist ( mainpp ) ; | |
mainpp = curlist .tailfield ; | |
while ( ( mem [mainppp ].hh .v.RH != mainpp ) ) mainppp = mem [ | |
mainppp ].hh .v.RH ; | |
} | |
else { | |
dolocalelinebreaks ( tempptr , mainh ) ; | |
tempptr = tempptr + mainh ; | |
maink = maink - mainh ; | |
mainh = 0 ; | |
while ( ( mainh < maink ) && ( nativetext [tempptr + mainh ]!= | |
hyphenchar [mainf ]) && ( ( ! ( eqtb [8939313L ].cint > 0 ) ) || | |
( ( nativetext [tempptr + mainh ]!= 8212 ) && ( nativetext [ | |
tempptr + mainh ]!= 8211 ) ) ) ) incr ( mainh ) ; | |
if ( ( mainh < maink ) ) | |
incr ( mainh ) ; | |
} | |
if ( ( maink > 0 ) || ishyph ) | |
{ | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newdisc () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
mainpp = curlist .tailfield ; | |
} | |
} while ( ! ( maink == 0 ) ) ; | |
} | |
else { | |
mainppp = curlist .headfield ; | |
while ( ( mainppp != mainpp ) && ( mem [mainppp ].hh .v.RH != mainpp ) | |
) { | |
if ( ( ! ( mainppp >= himemmin ) ) && ( mem [mainppp ].hh.b0 == 7 ) | |
) | |
{ | |
tempptr = mainppp ; | |
{register integer for_end; mainp = 1 ;for_end = mem [tempptr ] | |
.hh.b1 ; if ( mainp <= for_end) do | |
mainppp = mem [mainppp ].hh .v.RH ; | |
while ( mainp++ < for_end ) ;} | |
} | |
if ( mainppp != mainpp ) | |
mainppp = mem [mainppp ].hh .v.RH ; | |
} | |
if ( ( ( ( mainpp ) != -268435455L ) && ( ! ( mainpp >= himemmin ) ) && | |
( mem [mainpp ].hh.b0 == 8 ) && ( ( ( mem [mainpp ].hh.b1 >= 40 ) && | |
( mem [mainpp ].hh.b1 <= 41 ) ) ) ) && ( mem [mainpp + 4 ].qqqq .b1 | |
== mainf ) && ( mainppp != mainpp ) && ( ! ( mainppp >= himemmin ) ) && | |
( mem [mainppp ].hh.b0 != 7 ) ) | |
{ | |
mem [mainpp ].hh .v.RH = newnativewordnode ( mainf , maink + mem [ | |
mainpp + 4 ].qqqq .b2 ) ; | |
curlist .tailfield = mem [mainpp ].hh .v.RH ; | |
{register integer for_end; mainp = 0 ;for_end = mem [mainpp + 4 ] | |
.qqqq .b2 - 1 ; if ( mainp <= for_end) do | |
setnativechar ( curlist .tailfield , mainp , getnativechar ( mainpp | |
, mainp ) ) ; | |
while ( mainp++ < for_end ) ;} | |
{register integer for_end; mainp = 0 ;for_end = maink - 1 ; if ( | |
mainp <= for_end) do | |
setnativechar ( curlist .tailfield , mainp + mem [mainpp + 4 ] | |
.qqqq .b2 , nativetext [mainp ]) ; | |
while ( mainp++ < for_end ) ;} | |
setnativemetrics ( curlist .tailfield , ( eqtb [8939315L ].cint > 0 | |
) ) ; | |
mainp = curlist .headfield ; | |
if ( mainp != mainpp ) | |
while ( mem [mainp ].hh .v.RH != mainpp ) mainp = mem [mainp ].hh | |
.v.RH ; | |
mem [mainp ].hh .v.RH = mem [mainpp ].hh .v.RH ; | |
mem [mainpp ].hh .v.RH = -268435455L ; | |
flushnodelist ( mainpp ) ; | |
} | |
else { | |
mem [mainpp ].hh .v.RH = newnativewordnode ( mainf , maink ) ; | |
curlist .tailfield = mem [mainpp ].hh .v.RH ; | |
{register integer for_end; mainp = 0 ;for_end = maink - 1 ; if ( | |
mainp <= for_end) do | |
setnativechar ( curlist .tailfield , mainp , nativetext [mainp ]) | |
; | |
while ( mainp++ < for_end ) ;} | |
setnativemetrics ( curlist .tailfield , ( eqtb [8939315L ].cint > 0 | |
) ) ; | |
} | |
} | |
if ( eqtb [8939321L ].cint > 0 ) | |
{ | |
mainp = curlist .headfield ; | |
mainpp = -268435455L ; | |
while ( mainp != curlist .tailfield ) { | |
if ( ( ( ( mainp ) != -268435455L ) && ( ! ( mainp >= himemmin ) ) && | |
( mem [mainp ].hh.b0 == 8 ) && ( ( ( mem [mainp ].hh.b1 >= 40 ) && | |
( mem [mainp ].hh.b1 <= 41 ) ) ) ) ) | |
mainpp = mainp ; | |
mainp = mem [mainp ].hh .v.RH ; | |
} | |
if ( ( mainpp != -268435455L ) ) | |
{ | |
if ( ( mem [mainpp + 4 ].qqqq .b1 == mainf ) ) | |
{ | |
mainp = mem [mainpp ].hh .v.RH ; | |
while ( ! ( mainp >= himemmin ) && ( ( mem [mainp ].hh.b0 == 12 ) | |
|| ( mem [mainp ].hh.b0 == 3 ) || ( mem [mainp ].hh.b0 == 4 ) || | |
( mem [mainp ].hh.b0 == 5 ) || ( ( mem [mainp ].hh.b0 == 8 ) && | |
( mem [mainp ].hh.b1 <= 4 ) ) ) ) mainp = mem [mainp ].hh .v.RH | |
; | |
if ( ! ( mainp >= himemmin ) && ( mem [mainp ].hh.b0 == 10 ) ) | |
{ | |
mainppp = mem [mainp ].hh .v.RH ; | |
while ( ! ( mainppp >= himemmin ) && ( ( mem [mainppp ].hh.b0 == | |
12 ) || ( mem [mainppp ].hh.b0 == 3 ) || ( mem [mainppp ] | |
.hh.b0 == 4 ) || ( mem [mainppp ].hh.b0 == 5 ) || ( ( mem [ | |
mainppp ].hh.b0 == 8 ) && ( mem [mainppp ].hh.b1 <= 4 ) ) ) ) | |
mainppp = mem [mainppp ].hh .v.RH ; | |
if ( mainppp == curlist .tailfield ) | |
{ | |
tempptr = newnativewordnode ( mainf , mem [mainpp + 4 ].qqqq | |
.b2 + 1 + mem [curlist .tailfield + 4 ].qqqq .b2 ) ; | |
maink = 0 ; | |
{register integer for_end; t = 0 ;for_end = mem [mainpp + 4 ] | |
.qqqq .b2 - 1 ; if ( t <= for_end) do | |
{ | |
setnativechar ( tempptr , maink , getnativechar ( mainpp , t | |
) ) ; | |
incr ( maink ) ; | |
} | |
while ( t++ < for_end ) ;} | |
setnativechar ( tempptr , maink , 32 ) ; | |
incr ( maink ) ; | |
{register integer for_end; t = 0 ;for_end = mem [curlist | |
.tailfield + 4 ].qqqq .b2 - 1 ; if ( t <= for_end) do | |
{ | |
setnativechar ( tempptr , maink , getnativechar ( curlist | |
.tailfield , t ) ) ; | |
incr ( maink ) ; | |
} | |
while ( t++ < for_end ) ;} | |
setnativemetrics ( tempptr , ( eqtb [8939315L ].cint > 0 ) ) ; | |
t = mem [tempptr + 1 ].cint - mem [mainpp + 1 ].cint - mem [ | |
curlist .tailfield + 1 ].cint ; | |
freenode ( tempptr , mem [tempptr + 4 ].qqqq .b0 ) ; | |
if ( t != mem [fontglue [mainf ]+ 1 ].cint ) | |
{ | |
tempptr = newkern ( t - mem [fontglue [mainf ]+ 1 ].cint ) | |
; | |
mem [tempptr ].hh.b1 = 3 ; | |
mem [tempptr ].hh .v.RH = mem [mainp ].hh .v.RH ; | |
mem [mainp ].hh .v.RH = tempptr ; | |
} | |
} | |
} | |
} | |
} | |
} | |
if ( curptr != -268435455L ) | |
goto lab60 ; | |
else goto lab21 ; | |
} | |
mains = eqtb [5596904L + curchr ].hh .v.RH % 65536L ; | |
if ( mains == 1000 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else if ( mains < 1000 ) | |
{ | |
if ( mains > 0 ) | |
curlist .auxfield .hh .v.LH = mains ; | |
} | |
else if ( curlist .auxfield .hh .v.LH < 1000 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else curlist .auxfield .hh .v.LH = mains ; | |
curptr = -268435455L ; | |
spaceclass = eqtb [5596904L + curchr ].hh .v.RH / 65536L ; | |
if ( ( eqtb [8939316L ].cint > 0 ) && spaceclass != 4096 ) | |
{ | |
if ( prevclass == ( 4095 ) ) | |
{ | |
if ( ( curinput .statefield != 0 ) || ( curinput .indexfield != 4 ) ) | |
{ | |
findsaelement ( 6 , ( 4095 ) * 4096 + spaceclass , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcmd != 11 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
backinput () ; | |
curinput .indexfield = 4 ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
goto lab60 ; | |
} | |
} | |
} | |
else { | |
findsaelement ( 6 , prevclass * 4096 + spaceclass , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcmd != 11 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
backinput () ; | |
curinput .indexfield = 4 ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
prevclass = ( 4095 ) ; | |
goto lab60 ; | |
} | |
} | |
prevclass = spaceclass ; | |
} | |
mainf = eqtb [2253799L ].hh .v.RH ; | |
bchar = fontbchar [mainf ]; | |
falsebchar = fontfalsebchar [mainf ]; | |
if ( curlist .modefield > 0 ) { | |
if ( eqtb [8939290L ].cint != curlist .auxfield .hh .v.RH ) | |
fixlanguage () ; | |
} | |
{ | |
ligstack = avail ; | |
if ( ligstack == -268435455L ) | |
ligstack = getavail () ; | |
else { | |
avail = mem [ligstack ].hh .v.RH ; | |
mem [ligstack ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
incr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
mem [ligstack ].hh.b0 = mainf ; | |
curl = curchr ; | |
mem [ligstack ].hh.b1 = curl ; | |
curq = curlist .tailfield ; | |
if ( cancelboundary ) | |
{ | |
cancelboundary = false ; | |
maink = 0 ; | |
} | |
else maink = bcharlabel [mainf ]; | |
if ( maink == 0 ) | |
goto lab92 ; | |
curr = curl ; | |
curl = 65536L ; | |
goto lab111 ; | |
lab80: if ( curl < 65536L ) | |
{ | |
if ( mem [curq ].hh .v.RH > -268435455L ) { | |
if ( mem [curlist .tailfield ].hh.b1 == hyphenchar [mainf ]) | |
insdisc = true ; | |
} | |
if ( ligaturepresent ) | |
{ | |
mainp = newligature ( mainf , curl , mem [curq ].hh .v.RH ) ; | |
if ( lfthit ) | |
{ | |
mem [mainp ].hh.b1 = 2 ; | |
lfthit = false ; | |
} | |
if ( rthit ) { | |
if ( ligstack == -268435455L ) | |
{ | |
incr ( mem [mainp ].hh.b1 ) ; | |
rthit = false ; | |
} | |
} | |
mem [curq ].hh .v.RH = mainp ; | |
curlist .tailfield = mainp ; | |
ligaturepresent = false ; | |
} | |
if ( insdisc ) | |
{ | |
insdisc = false ; | |
if ( curlist .modefield > 0 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newdisc () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
} | |
lab90: if ( ligstack == -268435455L ) | |
goto lab21 ; | |
curq = curlist .tailfield ; | |
curl = mem [ligstack ].hh.b1 ; | |
lab91: if ( ! ( ligstack >= himemmin ) ) | |
goto lab95 ; | |
lab92: if ( ( effectivechar ( false , mainf , curchr ) > fontec [mainf ]) | |
|| ( effectivechar ( false , mainf , curchr ) < fontbc [mainf ]) ) | |
{ | |
charwarning ( mainf , curchr ) ; | |
{ | |
mem [ligstack ].hh .v.RH = avail ; | |
avail = ligstack ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
goto lab60 ; | |
} | |
maini = effectivecharinfo ( mainf , curl ) ; | |
if ( ! ( maini .b0 > 0 ) ) | |
{ | |
charwarning ( mainf , curchr ) ; | |
{ | |
mem [ligstack ].hh .v.RH = avail ; | |
avail = ligstack ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
goto lab60 ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = ligstack ; | |
curlist .tailfield = ligstack ; | |
lab100: getnext () ; | |
if ( curcmd == 11 ) | |
goto lab101 ; | |
if ( curcmd == 12 ) | |
goto lab101 ; | |
if ( curcmd == 68 ) | |
goto lab101 ; | |
xtoken () ; | |
if ( curcmd == 11 ) | |
goto lab101 ; | |
if ( curcmd == 12 ) | |
goto lab101 ; | |
if ( curcmd == 68 ) | |
goto lab101 ; | |
if ( curcmd == 16 ) | |
{ | |
scancharnum () ; | |
curchr = curval ; | |
goto lab101 ; | |
} | |
if ( curcmd == 65 ) | |
bchar = 65536L ; | |
curr = bchar ; | |
ligstack = -268435455L ; | |
goto lab110 ; | |
lab101: mains = eqtb [5596904L + curchr ].hh .v.RH % 65536L ; | |
if ( mains == 1000 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else if ( mains < 1000 ) | |
{ | |
if ( mains > 0 ) | |
curlist .auxfield .hh .v.LH = mains ; | |
} | |
else if ( curlist .auxfield .hh .v.LH < 1000 ) | |
curlist .auxfield .hh .v.LH = 1000 ; | |
else curlist .auxfield .hh .v.LH = mains ; | |
curptr = -268435455L ; | |
spaceclass = eqtb [5596904L + curchr ].hh .v.RH / 65536L ; | |
if ( ( eqtb [8939316L ].cint > 0 ) && spaceclass != 4096 ) | |
{ | |
if ( prevclass == ( 4095 ) ) | |
{ | |
if ( ( curinput .statefield != 0 ) || ( curinput .indexfield != 4 ) ) | |
{ | |
findsaelement ( 6 , ( 4095 ) * 4096 + spaceclass , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcmd != 11 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
backinput () ; | |
curinput .indexfield = 4 ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
goto lab60 ; | |
} | |
} | |
} | |
else { | |
findsaelement ( 6 , prevclass * 4096 + spaceclass , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcmd != 11 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
backinput () ; | |
curinput .indexfield = 4 ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
prevclass = ( 4095 ) ; | |
goto lab60 ; | |
} | |
} | |
prevclass = spaceclass ; | |
} | |
{ | |
ligstack = avail ; | |
if ( ligstack == -268435455L ) | |
ligstack = getavail () ; | |
else { | |
avail = mem [ligstack ].hh .v.RH ; | |
mem [ligstack ].hh .v.RH = -268435455L ; | |
; | |
#ifdef STAT | |
incr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
mem [ligstack ].hh.b0 = mainf ; | |
curr = curchr ; | |
mem [ligstack ].hh.b1 = curr ; | |
if ( curr == falsebchar ) | |
curr = 65536L ; | |
lab110: if ( ( ( maini .b2 ) % 4 ) != 1 ) | |
goto lab80 ; | |
if ( curr == 65536L ) | |
goto lab80 ; | |
maink = ligkernbase [mainf ]+ maini .b3 ; | |
mainj = fontinfo [maink ].qqqq ; | |
if ( mainj .b0 <= 128 ) | |
goto lab112 ; | |
maink = ligkernbase [mainf ]+ 256 * mainj .b2 + mainj .b3 + 32768L - 256 * | |
( 128 ) ; | |
lab111: mainj = fontinfo [maink ].qqqq ; | |
lab112: if ( mainj .b1 == curr ) { | |
if ( mainj .b0 <= 128 ) | |
{ | |
if ( mainj .b2 >= 128 ) | |
{ | |
if ( curl < 65536L ) | |
{ | |
if ( mem [curq ].hh .v.RH > -268435455L ) { | |
if ( mem [curlist .tailfield ].hh.b1 == hyphenchar [mainf ]) | |
insdisc = true ; | |
} | |
if ( ligaturepresent ) | |
{ | |
mainp = newligature ( mainf , curl , mem [curq ].hh .v.RH ) ; | |
if ( lfthit ) | |
{ | |
mem [mainp ].hh.b1 = 2 ; | |
lfthit = false ; | |
} | |
if ( rthit ) { | |
if ( ligstack == -268435455L ) | |
{ | |
incr ( mem [mainp ].hh.b1 ) ; | |
rthit = false ; | |
} | |
} | |
mem [curq ].hh .v.RH = mainp ; | |
curlist .tailfield = mainp ; | |
ligaturepresent = false ; | |
} | |
if ( insdisc ) | |
{ | |
insdisc = false ; | |
if ( curlist .modefield > 0 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newdisc () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
} | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newkern ( fontinfo [kernbase | |
[mainf ]+ 256 * mainj .b2 + mainj .b3 ].cint ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
goto lab90 ; | |
} | |
if ( curl == 65536L ) | |
lfthit = true ; | |
else if ( ligstack == -268435455L ) | |
rthit = true ; | |
{ | |
if ( interrupt != 0 ) | |
pauseforinstructions () ; | |
} | |
switch ( mainj .b2 ) | |
{case 1 : | |
case 5 : | |
{ | |
curl = mainj .b3 ; | |
maini = fontinfo [charbase [mainf ]+ effectivechar ( true , mainf | |
, curl ) ].qqqq ; | |
ligaturepresent = true ; | |
} | |
break ; | |
case 2 : | |
case 6 : | |
{ | |
curr = mainj .b3 ; | |
if ( ligstack == -268435455L ) | |
{ | |
ligstack = newligitem ( curr ) ; | |
bchar = 65536L ; | |
} | |
else if ( ( ligstack >= himemmin ) ) | |
{ | |
mainp = ligstack ; | |
ligstack = newligitem ( curr ) ; | |
mem [ligstack + 1 ].hh .v.RH = mainp ; | |
} | |
else mem [ligstack ].hh.b1 = curr ; | |
} | |
break ; | |
case 3 : | |
{ | |
curr = mainj .b3 ; | |
mainp = ligstack ; | |
ligstack = newligitem ( curr ) ; | |
mem [ligstack ].hh .v.RH = mainp ; | |
} | |
break ; | |
case 7 : | |
case 11 : | |
{ | |
if ( curl < 65536L ) | |
{ | |
if ( mem [curq ].hh .v.RH > -268435455L ) { | |
if ( mem [curlist .tailfield ].hh.b1 == hyphenchar [mainf ]) | |
insdisc = true ; | |
} | |
if ( ligaturepresent ) | |
{ | |
mainp = newligature ( mainf , curl , mem [curq ].hh .v.RH ) ; | |
if ( lfthit ) | |
{ | |
mem [mainp ].hh.b1 = 2 ; | |
lfthit = false ; | |
} | |
if ( false ) { | |
if ( ligstack == -268435455L ) | |
{ | |
incr ( mem [mainp ].hh.b1 ) ; | |
rthit = false ; | |
} | |
} | |
mem [curq ].hh .v.RH = mainp ; | |
curlist .tailfield = mainp ; | |
ligaturepresent = false ; | |
} | |
if ( insdisc ) | |
{ | |
insdisc = false ; | |
if ( curlist .modefield > 0 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newdisc () ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
} | |
} | |
curq = curlist .tailfield ; | |
curl = mainj .b3 ; | |
maini = fontinfo [charbase [mainf ]+ effectivechar ( true , mainf | |
, curl ) ].qqqq ; | |
ligaturepresent = true ; | |
} | |
break ; | |
default: | |
{ | |
curl = mainj .b3 ; | |
ligaturepresent = true ; | |
if ( ligstack == -268435455L ) | |
goto lab80 ; | |
else goto lab91 ; | |
} | |
break ; | |
} | |
if ( mainj .b2 > 4 ) { | |
if ( mainj .b2 != 7 ) | |
goto lab80 ; | |
} | |
if ( curl < 65536L ) | |
goto lab110 ; | |
maink = bcharlabel [mainf ]; | |
goto lab111 ; | |
} | |
} | |
if ( mainj .b0 == 0 ) | |
incr ( maink ) ; | |
else { | |
if ( mainj .b0 >= 128 ) | |
goto lab80 ; | |
maink = maink + mainj .b0 + 1 ; | |
} | |
goto lab111 ; | |
lab95: mainp = mem [ligstack + 1 ].hh .v.RH ; | |
if ( mainp > -268435455L ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = mainp ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
tempptr = ligstack ; | |
ligstack = mem [tempptr ].hh .v.RH ; | |
freenode ( tempptr , 2 ) ; | |
maini = fontinfo [charbase [mainf ]+ effectivechar ( true , mainf , curl | |
) ].qqqq ; | |
ligaturepresent = true ; | |
if ( ligstack == -268435455L ) { | |
if ( mainp > -268435455L ) | |
goto lab100 ; | |
else curr = bchar ; | |
} | |
else curr = mem [ligstack ].hh.b1 ; | |
goto lab110 ; | |
lab120: if ( ( eqtb [8939316L ].cint > 0 ) && ( spaceclass != 4096 ) && ( | |
prevclass != ( 4095 ) ) ) | |
{ | |
prevclass = ( 4095 ) ; | |
findsaelement ( 6 , spaceclass * 4096 + ( 4095 ) , false ) ; | |
if ( ( curptr != -268435455L ) && ( mem [curptr + 1 ].hh .v.RH != | |
-268435455L ) ) | |
{ | |
if ( curcs == 0 ) | |
{ | |
if ( curcmd == 16 ) | |
curcmd = 12 ; | |
curtok = ( curcmd * 2097152L ) + curchr ; | |
} | |
else curtok = 33554431L + curcs ; | |
backinput () ; | |
begintokenlist ( mem [curptr + 1 ].hh .v.RH , 17 ) ; | |
goto lab60 ; | |
} | |
} | |
if ( eqtb [2252752L ].hh .v.RH == membot ) | |
{ | |
{ | |
mainp = fontglue [eqtb [2253799L ].hh .v.RH ]; | |
if ( mainp == -268435455L ) | |
{ | |
mainp = newspec ( membot ) ; | |
maink = parambase [eqtb [2253799L ].hh .v.RH ]+ 2 ; | |
mem [mainp + 1 ].cint = fontinfo [maink ].cint ; | |
mem [mainp + 2 ].cint = fontinfo [maink + 1 ].cint ; | |
mem [mainp + 3 ].cint = fontinfo [maink + 2 ].cint ; | |
fontglue [eqtb [2253799L ].hh .v.RH ]= mainp ; | |
} | |
} | |
tempptr = newglue ( mainp ) ; | |
} | |
else tempptr = newparamglue ( 12 ) ; | |
mem [curlist .tailfield ].hh .v.RH = tempptr ; | |
curlist .tailfield = tempptr ; | |
goto lab60 ; | |
} | |
void | |
giveerrhelp ( void ) | |
{ | |
giveerrhelp_regmem | |
tokenshow ( eqtb [2253280L ].hh .v.RH ) ; | |
} | |
boolean | |
openfmtfile ( void ) | |
{ | |
/* 40 10 */ register boolean Result; openfmtfile_regmem | |
integer j ; | |
j = curinput .locfield ; | |
if ( buffer [curinput .locfield ]== 38 ) | |
{ | |
incr ( curinput .locfield ) ; | |
j = curinput .locfield ; | |
buffer [last ]= 32 ; | |
while ( buffer [j ]!= 32 ) incr ( j ) ; | |
packbufferedname ( 0 , curinput .locfield , j - 1 ) ; | |
if ( wopenin ( fmtfile ) ) | |
goto lab40 ; | |
Fputs ( stdout , "Sorry, I can't find the format `" ) ; | |
fputs ( stringcast ( nameoffile + 1 ) , stdout ) ; | |
Fputs ( stdout , "'; will try `" ) ; | |
fputs ( TEXformatdefault + 1 , stdout ) ; | |
fprintf ( stdout , "%s\n", "'." ) ; | |
fflush ( stdout ) ; | |
} | |
packbufferedname ( formatdefaultlength - 4 , 1 , 0 ) ; | |
if ( ! wopenin ( fmtfile ) ) | |
{ | |
; | |
Fputs ( stdout , "I can't find the format file `" ) ; | |
fputs ( TEXformatdefault + 1 , stdout ) ; | |
fprintf ( stdout , "%s\n", "'!" ) ; | |
Result = false ; | |
return Result ; | |
} | |
lab40: curinput .locfield = j ; | |
Result = true ; | |
return Result ; | |
} | |
void | |
closefilesandterminate ( void ) | |
{ | |
closefilesandterminate_regmem | |
integer k ; | |
terminatefontmanager () ; | |
{register integer for_end; k = 0 ;for_end = 15 ; if ( k <= for_end) do | |
if ( writeopen [k ]) | |
aclose ( writefile [k ]) ; | |
while ( k++ < for_end ) ;} | |
eqtb [8939289L ].cint = -1 ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939271L ].cint > 0 ) { | |
if ( logopened ) | |
{ | |
{ putc ( ' ' , logfile ); putc ( '\n', logfile ); } | |
fprintf ( logfile , "%s%s\n", "Here is how much of TeX's memory" , " you used:" ) | |
; | |
fprintf ( logfile , "%c%ld%s", ' ' , (long)strptr - initstrptr , " string" ) ; | |
if ( strptr != initstrptr + 1 ) | |
putc ( 's' , logfile ); | |
fprintf ( logfile , "%s%ld\n", " out of " , (long)maxstrings - initstrptr ) ; | |
fprintf ( logfile , "%c%ld%s%ld\n", ' ' , (long)poolptr - initpoolptr , " string characters out of " , (long)poolsize - initpoolptr ) ; | |
fprintf ( logfile , "%c%ld%s%ld\n", ' ' , (long)lomemmax - memmin + memend - himemmin + 2 , " words of memory out of " , (long)memend + 1 - memmin ) ; | |
fprintf ( logfile , "%c%ld%s%ld%c%ld\n", ' ' , (long)cscount , " multiletter control sequences out of " , (long)15000 , '+' , (long)hashextra ) ; | |
fprintf ( logfile , "%c%ld%s%ld%s", ' ' , (long)fmemptr , " words of font info for " , (long)fontptr - 0 , " font" ) ; | |
if ( fontptr != 1 ) | |
putc ( 's' , logfile ); | |
fprintf ( logfile , "%s%ld%s%ld\n", ", out of " , (long)fontmemsize , " for " , (long)fontmax - 0 ) | |
; | |
fprintf ( logfile , "%c%ld%s", ' ' , (long)hyphcount , " hyphenation exception" ) ; | |
if ( hyphcount != 1 ) | |
putc ( 's' , logfile ); | |
fprintf ( logfile , "%s%ld\n", " out of " , (long)hyphsize ) ; | |
fprintf ( logfile , "%c%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%c\n", ' ' , (long)maxinstack , "i," , (long)maxneststack , "n," , (long)maxparamstack , "p," , (long)maxbufstack + 1 , "b," , (long)maxsavestack + 6 , "s stack positions out of " , (long)stacksize , "i," , (long)nestsize , "n," , (long)paramsize , "p," , (long)bufsize , "b," , (long)savesize , 's' ) ; | |
} | |
} | |
#endif /* STAT */ | |
while ( curs > -1 ) { | |
if ( curs > 0 ) | |
{ | |
dvibuf [dviptr ]= 142 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
else { | |
{ | |
dvibuf [dviptr ]= 140 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
incr ( totalpages ) ; | |
} | |
decr ( curs ) ; | |
} | |
if ( totalpages == 0 ) | |
printnl ( 66232L ) ; | |
else if ( curs != -2 ) | |
{ | |
{ | |
dvibuf [dviptr ]= 248 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( lastbop ) ; | |
lastbop = dvioffset + dviptr - 5 ; | |
dvifour ( 25400000L ) ; | |
dvifour ( 473628672L ) ; | |
preparemag () ; | |
dvifour ( eqtb [8939257L ].cint ) ; | |
dvifour ( maxv ) ; | |
dvifour ( maxh ) ; | |
{ | |
dvibuf [dviptr ]= maxpush / 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= maxpush % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= ( totalpages / 256 ) % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
{ | |
dvibuf [dviptr ]= totalpages % 256 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
while ( fontptr > 0 ) { | |
if ( fontused [fontptr ]) | |
dvifontdef ( fontptr ) ; | |
decr ( fontptr ) ; | |
} | |
{ | |
dvibuf [dviptr ]= 249 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
dvifour ( lastbop ) ; | |
{ | |
dvibuf [dviptr ]= 7 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
; | |
#ifdef IPC | |
k = 7 - ( ( 3 + dvioffset + dviptr ) % 4 ) ; | |
#endif /* IPC */ | |
; | |
#ifndef IPC | |
k = 4 + ( ( dvibufsize - dviptr ) % 4 ) ; | |
#endif /* not IPC */ | |
while ( k > 0 ) { | |
{ | |
dvibuf [dviptr ]= 223 ; | |
incr ( dviptr ) ; | |
if ( dviptr == dvilimit ) | |
dviswap () ; | |
} | |
decr ( k ) ; | |
} | |
if ( dvilimit == halfbuf ) | |
writedvi ( halfbuf , dvibufsize - 1 ) ; | |
if ( dviptr > ( 2147483647L - dvioffset ) ) | |
{ | |
curs = -2 ; | |
fatalerror ( 66219L ) ; | |
} | |
if ( dviptr > 0 ) | |
writedvi ( 0 , dviptr - 1 ) ; | |
k = dviclose ( dvifile ) ; | |
if ( k == 0 ) | |
{ | |
printnl ( 66233L ) ; | |
print ( outputfilename ) ; | |
print ( 65566L ) ; | |
printint ( totalpages ) ; | |
if ( totalpages != 1 ) | |
print ( 66234L ) ; | |
else print ( 66235L ) ; | |
if ( nopdfoutput ) | |
{ | |
print ( 66236L ) ; | |
printint ( dvioffset + dviptr ) ; | |
print ( 66237L ) ; | |
} | |
else print ( 66238L ) ; | |
} | |
else { | |
printnl ( 66239L ) ; | |
printint ( k ) ; | |
print ( 65566L ) ; | |
if ( nopdfoutput ) | |
printcstring ( strerror ( k ) ) ; | |
else print ( 66240L ) ; | |
print ( 66241L ) ; | |
printnl ( 66242L ) ; | |
print ( outputfilename ) ; | |
print ( 66243L ) ; | |
history = 4 ; | |
} | |
} | |
synctexterminate ( logopened ) ; | |
if ( logopened ) | |
{ | |
putc ('\n', logfile ); | |
aclose ( logfile ) ; | |
selector = selector - 2 ; | |
if ( selector == 17 ) | |
{ | |
printnl ( 66732L ) ; | |
print ( texmflogname ) ; | |
printchar ( 46 ) ; | |
} | |
} | |
println () ; | |
if ( ( editnamestart != 0 ) && ( interaction > 0 ) ) | |
calledit ( strpool , editnamestart , editnamelength , editline ) ; | |
} | |
#ifdef TEXMF_DEBUG | |
void | |
debughelp ( void ) | |
{ | |
/* 888 10 */ debughelp_regmem | |
integer k, l, m, n ; | |
while ( true ) { | |
; | |
printnl ( 66741L ) ; | |
fflush ( stdout ) ; | |
read ( termin , m ) ; | |
if ( m < 0 ) | |
return ; | |
else if ( m == 0 ) | |
dumpcore () ; | |
else { | |
read ( termin , n ) ; | |
switch ( m ) | |
{case 1 : | |
printword ( mem [n ]) ; | |
break ; | |
case 2 : | |
printint ( mem [n ].hh .v.LH ) ; | |
break ; | |
case 3 : | |
printint ( mem [n ].hh .v.RH ) ; | |
break ; | |
case 4 : | |
printword ( eqtb [n ]) ; | |
break ; | |
case 5 : | |
{ | |
printscaled ( fontinfo [n ].cint ) ; | |
printchar ( 32 ) ; | |
printint ( fontinfo [n ].qqqq .b0 ) ; | |
printchar ( 58 ) ; | |
printint ( fontinfo [n ].qqqq .b1 ) ; | |
printchar ( 58 ) ; | |
printint ( fontinfo [n ].qqqq .b2 ) ; | |
printchar ( 58 ) ; | |
printint ( fontinfo [n ].qqqq .b3 ) ; | |
} | |
break ; | |
case 6 : | |
printword ( savestack [n ]) ; | |
break ; | |
case 7 : | |
showbox ( n ) ; | |
break ; | |
case 8 : | |
{ | |
breadthmax = 10000 ; | |
depththreshold = poolsize - poolptr - 10 ; | |
shownodelist ( n ) ; | |
} | |
break ; | |
case 9 : | |
showtokenlist ( n , -268435455L , 1000 ) ; | |
break ; | |
case 10 : | |
print ( n ) ; | |
break ; | |
case 11 : | |
checkmem ( n > 0 ) ; | |
break ; | |
case 12 : | |
searchmem ( n ) ; | |
break ; | |
case 13 : | |
{ | |
read ( termin , l ) ; | |
printcmdchr ( n , l ) ; | |
} | |
break ; | |
case 14 : | |
{register integer for_end; k = 0 ;for_end = n ; if ( k <= for_end) | |
do | |
print ( buffer [k ]) ; | |
while ( k++ < for_end ) ;} | |
break ; | |
case 15 : | |
{ | |
fontinshortdisplay = 0 ; | |
shortdisplay ( n ) ; | |
} | |
break ; | |
case 16 : | |
panicking = ! panicking ; | |
break ; | |
default: | |
print ( 63 ) ; | |
break ; | |
} | |
} | |
} | |
} | |
#endif /* TEXMF_DEBUG */ | |
void | |
zflushstr ( strnumber s ) | |
{ | |
flushstr_regmem | |
if ( ( s == strptr - 1 ) ) | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
} | |
strnumber | |
ztokenstostring ( halfword p ) | |
{ | |
register strnumber Result; tokenstostring_regmem | |
if ( selector == 21 ) | |
pdferror ( 66113L , 66114L ) ; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [p ].hh .v.RH , -268435455L , poolsize - poolptr ) ; | |
selector = oldsetting ; | |
Result = makestring () ; | |
return Result ; | |
} | |
void | |
scanpdfexttoks ( void ) | |
{ | |
scanpdfexttoks_regmem | |
{ | |
if ( scantoks ( false , true ) != 0 ) | |
; | |
} | |
} | |
void | |
comparestrings ( void ) | |
{ | |
/* 30 */ comparestrings_regmem | |
strnumber s1, s2 ; | |
poolpointer i1, i2, j1, j2 ; | |
halfword savecurcs ; | |
savecurcs = curcs ; | |
{ | |
if ( scantoks ( false , true ) != 0 ) | |
; | |
} | |
s1 = tokenstostring ( defref ) ; | |
deletetokenref ( defref ) ; | |
curcs = savecurcs ; | |
{ | |
if ( scantoks ( false , true ) != 0 ) | |
; | |
} | |
s2 = tokenstostring ( defref ) ; | |
deletetokenref ( defref ) ; | |
i1 = strstart [( s1 ) - 65536L ]; | |
j1 = strstart [( s1 + 1 ) - 65536L ]; | |
i2 = strstart [( s2 ) - 65536L ]; | |
j2 = strstart [( s2 + 1 ) - 65536L ]; | |
while ( ( i1 < j1 ) && ( i2 < j2 ) ) { | |
if ( strpool [i1 ]< strpool [i2 ]) | |
{ | |
curval = -1 ; | |
goto lab30 ; | |
} | |
if ( strpool [i1 ]> strpool [i2 ]) | |
{ | |
curval = 1 ; | |
goto lab30 ; | |
} | |
incr ( i1 ) ; | |
incr ( i2 ) ; | |
} | |
if ( ( i1 == j1 ) && ( i2 == j2 ) ) | |
curval = 0 ; | |
else if ( i1 < j1 ) | |
curval = 1 ; | |
else curval = -1 ; | |
lab30: flushstr ( s2 ) ; | |
flushstr ( s1 ) ; | |
curvallevel = 0 ; | |
} | |
void | |
scanfilenamebraced ( void ) | |
{ | |
scanfilenamebraced_regmem | |
smallnumber savescannerstatus ; | |
halfword savedefref ; | |
halfword savecurcs ; | |
strnumber s ; | |
halfword p ; | |
integer i ; | |
boolean savestopatspace ; | |
boolean dummy ; | |
savescannerstatus = scannerstatus ; | |
savedefref = defref ; | |
savecurcs = curcs ; | |
curcs = warningindex ; | |
if ( scantoks ( false , true ) != 0 ) | |
; | |
oldsetting = selector ; | |
selector = 21 ; | |
showtokenlist ( mem [defref ].hh .v.RH , -268435455L , poolsize - poolptr | |
) ; | |
selector = oldsetting ; | |
s = makestring () ; | |
deletetokenref ( defref ) ; | |
defref = savedefref ; | |
curcs = savecurcs ; | |
scannerstatus = savescannerstatus ; | |
savestopatspace = stopatspace ; | |
stopatspace = false ; | |
beginname () ; | |
{register integer for_end; i = strstart [( s ) - 65536L ];for_end = | |
strstart [( s + 1 ) - 65536L ]- 1 ; if ( i <= for_end) do | |
dummy = morename ( strpool [i ]) ; | |
while ( i++ < for_end ) ;} | |
stopatspace = savestopatspace ; | |
} | |
strnumber | |
getnullstr ( void ) | |
{ | |
register strnumber Result; getnullstr_regmem | |
Result = 65626L ; | |
return Result ; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define EXTERN extern | |
#include "xetexd.h" | |
void | |
initialize ( void ) | |
{ | |
initialize_regmem | |
integer i ; | |
integer k ; | |
hyphpointer z ; | |
doingspecial = false ; | |
nativetextsize = 128 ; | |
nativetext = xmalloc ( nativetextsize * sizeof ( UTF16code ) ) ; | |
if ( interactionoption == 4 ) | |
interaction = 3 ; | |
else interaction = interactionoption ; | |
deletionsallowed = true ; | |
setboxallowed = true ; | |
errorcount = 0 ; | |
helpptr = 0 ; | |
useerrhelp = false ; | |
interrupt = 0 ; | |
OKtointerrupt = true ; | |
twotothe [0 ]= 1 ; | |
{register integer for_end; k = 1 ;for_end = 30 ; if ( k <= for_end) do | |
twotothe [k ]= 2 * twotothe [k - 1 ]; | |
while ( k++ < for_end ) ;} | |
speclog [1 ]= 93032640L ; | |
speclog [2 ]= 38612034L ; | |
speclog [3 ]= 17922280L ; | |
speclog [4 ]= 8662214L ; | |
speclog [5 ]= 4261238L ; | |
speclog [6 ]= 2113709L ; | |
speclog [7 ]= 1052693L ; | |
speclog [8 ]= 525315L ; | |
speclog [9 ]= 262400L ; | |
speclog [10 ]= 131136L ; | |
speclog [11 ]= 65552L ; | |
speclog [12 ]= 32772L ; | |
speclog [13 ]= 16385 ; | |
{register integer for_end; k = 14 ;for_end = 27 ; if ( k <= for_end) do | |
speclog [k ]= twotothe [27 - k ]; | |
while ( k++ < for_end ) ;} | |
speclog [28 ]= 1 ; | |
; | |
#ifdef TEXMF_DEBUG | |
wasmemend = memmin ; | |
waslomax = memmin ; | |
washimin = memmax ; | |
panicking = false ; | |
#endif /* TEXMF_DEBUG */ | |
nestptr = 0 ; | |
maxneststack = 0 ; | |
curlist .modefield = 1 ; | |
curlist .headfield = memtop - 1 ; | |
curlist .tailfield = memtop - 1 ; | |
curlist .eTeXauxfield = -268435455L ; | |
curlist .auxfield .cint = -65536000L ; | |
curlist .mlfield = 0 ; | |
curlist .pgfield = 0 ; | |
shownmode = 0 ; | |
pagecontents = 0 ; | |
pagetail = memtop - 2 ; | |
lastglue = 1073741823L ; | |
lastpenalty = 0 ; | |
lastkern = 0 ; | |
lastnodetype = -1 ; | |
pagesofar [7 ]= 0 ; | |
pagemaxdepth = 0 ; | |
{register integer for_end; k = 8939240L ;for_end = 10053971L ; if ( k <= | |
for_end) do | |
xeqlevel [k ]= 1 ; | |
while ( k++ < for_end ) ;} | |
nonewcontrolsequence = true ; | |
prim [0 ].v.LH = 0 ; | |
prim [0 ].v.RH = 0 ; | |
{register integer for_end; k = 1 ;for_end = 500 ; if ( k <= for_end) do | |
prim [k ]= prim [0 ]; | |
while ( k++ < for_end ) ;} | |
saveptr = 0 ; | |
curlevel = 1 ; | |
curgroup = 0 ; | |
curboundary = 0 ; | |
maxsavestack = 0 ; | |
magset = 0 ; | |
isincsname = false ; | |
curmark [0 ]= -268435455L ; | |
curmark [1 ]= -268435455L ; | |
curmark [2 ]= -268435455L ; | |
curmark [3 ]= -268435455L ; | |
curmark [4 ]= -268435455L ; | |
curval = 0 ; | |
curvallevel = 0 ; | |
radix = 0 ; | |
curorder = 0 ; | |
{register integer for_end; k = 0 ;for_end = 16 ; if ( k <= for_end) do | |
readopen [k ]= 2 ; | |
while ( k++ < for_end ) ;} | |
condptr = -268435455L ; | |
iflimit = 0 ; | |
curif = 0 ; | |
ifline = 0 ; | |
nullcharacter .b0 = 0 ; | |
nullcharacter .b1 = 0 ; | |
nullcharacter .b2 = 0 ; | |
nullcharacter .b3 = 0 ; | |
totalpages = 0 ; | |
maxv = 0 ; | |
maxh = 0 ; | |
maxpush = 0 ; | |
lastbop = -1 ; | |
doingleaders = false ; | |
deadcycles = 0 ; | |
curs = -1 ; | |
halfbuf = dvibufsize / 2 ; | |
dvilimit = dvibufsize ; | |
dviptr = 0 ; | |
dvioffset = 0 ; | |
dvigone = 0 ; | |
downptr = -268435455L ; | |
rightptr = -268435455L ; | |
adjusttail = -268435455L ; | |
lastbadness = 0 ; | |
preadjusttail = -268435455L ; | |
packbeginline = 0 ; | |
emptyfield .v.RH = 0 ; | |
emptyfield .v.LH = -268435455L ; | |
nulldelimiter .b0 = 0 ; | |
nulldelimiter .b1 = 0 ; | |
nulldelimiter .b2 = 0 ; | |
nulldelimiter .b3 = 0 ; | |
alignptr = -268435455L ; | |
curalign = -268435455L ; | |
curspan = -268435455L ; | |
curloop = -268435455L ; | |
curhead = -268435455L ; | |
curtail = -268435455L ; | |
curprehead = -268435455L ; | |
curpretail = -268435455L ; | |
maxhyphchar = 256 ; | |
{register integer for_end; z = 0 ;for_end = hyphsize ; if ( z <= for_end) | |
do | |
{ | |
hyphword [z ]= 0 ; | |
hyphlist [z ]= -268435455L ; | |
hyphlink [z ]= 0 ; | |
} | |
while ( z++ < for_end ) ;} | |
hyphcount = 0 ; | |
hyphnext = 608 ; | |
if ( hyphnext > hyphsize ) | |
hyphnext = 607 ; | |
outputactive = false ; | |
insertpenalties = 0 ; | |
ligaturepresent = false ; | |
cancelboundary = false ; | |
lfthit = false ; | |
rthit = false ; | |
insdisc = false ; | |
aftertoken = 0 ; | |
longhelpseen = false ; | |
formatident = 0 ; | |
{register integer for_end; k = 0 ;for_end = 17 ; if ( k <= for_end) do | |
writeopen [k ]= false ; | |
while ( k++ < for_end ) ;} | |
secondsandmicros ( epochseconds , microseconds ) ; | |
initstarttime () ; | |
LRptr = -268435455L ; | |
LRproblems = 0 ; | |
curdir = 0 ; | |
pseudofiles = -268435455L ; | |
saroot [7 ]= -268435455L ; | |
sanull .hh .v.LH = -268435455L ; | |
sanull .hh .v.RH = -268435455L ; | |
sachain = -268435455L ; | |
salevel = 0 ; | |
discptr [2 ]= -268435455L ; | |
discptr [3 ]= -268435455L ; | |
editnamestart = 0 ; | |
stopatspace = true ; | |
expanddepthcount = 0 ; | |
mltexenabledp = false ; | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
{register integer for_end; k = membot + 1 ;for_end = membot + 19 ; if ( | |
k <= for_end) do | |
mem [k ].cint = 0 ; | |
while ( k++ < for_end ) ;} | |
k = membot ; | |
while ( k <= membot + 19 ) { | |
mem [k ].hh .v.RH = -268435454L ; | |
mem [k ].hh.b0 = 0 ; | |
mem [k ].hh.b1 = 0 ; | |
k = k + 4 ; | |
} | |
mem [membot + 6 ].cint = 65536L ; | |
mem [membot + 4 ].hh.b0 = 1 ; | |
mem [membot + 10 ].cint = 65536L ; | |
mem [membot + 8 ].hh.b0 = 2 ; | |
mem [membot + 14 ].cint = 65536L ; | |
mem [membot + 12 ].hh.b0 = 1 ; | |
mem [membot + 15 ].cint = 65536L ; | |
mem [membot + 12 ].hh.b1 = 1 ; | |
mem [membot + 18 ].cint = -65536L ; | |
mem [membot + 16 ].hh.b0 = 1 ; | |
rover = membot + 20 ; | |
mem [rover ].hh .v.RH = 1073741823L ; | |
mem [rover ].hh .v.LH = 1000 ; | |
mem [rover + 1 ].hh .v.LH = rover ; | |
mem [rover + 1 ].hh .v.RH = rover ; | |
lomemmax = rover + 1000 ; | |
mem [lomemmax ].hh .v.RH = -268435455L ; | |
mem [lomemmax ].hh .v.LH = -268435455L ; | |
{register integer for_end; k = memtop - 14 ;for_end = memtop ; if ( k <= | |
for_end) do | |
mem [k ]= mem [lomemmax ]; | |
while ( k++ < for_end ) ;} | |
mem [memtop - 10 ].hh .v.LH = 35797662L ; | |
mem [memtop - 9 ].hh .v.RH = 65536L ; | |
mem [memtop - 9 ].hh .v.LH = -268435455L ; | |
mem [memtop - 7 ].hh.b0 = 1 ; | |
mem [memtop - 6 ].hh .v.LH = 1073741823L ; | |
mem [memtop - 7 ].hh.b1 = 0 ; | |
mem [memtop ].hh.b1 = 255 ; | |
mem [memtop ].hh.b0 = 1 ; | |
mem [memtop ].hh .v.RH = memtop ; | |
mem [memtop - 2 ].hh.b0 = 10 ; | |
mem [memtop - 2 ].hh.b1 = 0 ; | |
avail = -268435455L ; | |
memend = memtop ; | |
himemmin = memtop - 14 ; | |
varused = membot + 20 - membot ; | |
dynused = 15 ; | |
eqtb [2252739L ].hh.b0 = 103 ; | |
eqtb [2252739L ].hh .v.RH = -268435455L ; | |
eqtb [2252739L ].hh.b1 = 0 ; | |
{register integer for_end; k = 1 ;for_end = eqtbtop ; if ( k <= for_end) | |
do | |
eqtb [k ]= eqtb [2252739L ]; | |
while ( k++ < for_end ) ;} | |
eqtb [2252740L ].hh .v.RH = membot ; | |
eqtb [2252740L ].hh.b1 = 1 ; | |
eqtb [2252740L ].hh.b0 = 119 ; | |
{register integer for_end; k = 2252741L ;for_end = 2253270L ; if ( k <= | |
for_end) do | |
eqtb [k ]= eqtb [2252740L ]; | |
while ( k++ < for_end ) ;} | |
mem [membot ].hh .v.RH = mem [membot ].hh .v.RH + 531 ; | |
eqtb [2253271L ].hh .v.RH = -268435455L ; | |
eqtb [2253271L ].hh.b0 = 120 ; | |
eqtb [2253271L ].hh.b1 = 1 ; | |
{register integer for_end; k = 2253539L ;for_end = 2253542L ; if ( k <= | |
for_end) do | |
eqtb [k ]= eqtb [2253271L ]; | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = 2253272L ;for_end = 2253538L ; if ( k <= | |
for_end) do | |
eqtb [k ]= eqtb [2252739L ]; | |
while ( k++ < for_end ) ;} | |
eqtb [2253543L ].hh .v.RH = -268435455L ; | |
eqtb [2253543L ].hh.b0 = 121 ; | |
eqtb [2253543L ].hh.b1 = 1 ; | |
{register integer for_end; k = 2253544L ;for_end = 2253798L ; if ( k <= | |
for_end) do | |
eqtb [k ]= eqtb [2253543L ]; | |
while ( k++ < for_end ) ;} | |
eqtb [2253799L ].hh .v.RH = 0 ; | |
eqtb [2253799L ].hh.b0 = 122 ; | |
eqtb [2253799L ].hh.b1 = 1 ; | |
{register integer for_end; k = 2253800L ;for_end = 2254567L ; if ( k <= | |
for_end) do | |
eqtb [k ]= eqtb [2253799L ]; | |
while ( k++ < for_end ) ;} | |
eqtb [2254568L ].hh .v.RH = 0 ; | |
eqtb [2254568L ].hh.b0 = 122 ; | |
eqtb [2254568L ].hh.b1 = 1 ; | |
{register integer for_end; k = 2254569L ;for_end = 8939239L ; if ( k <= | |
for_end) do | |
eqtb [k ]= eqtb [2254568L ]; | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = 0 ;for_end = 1114111L ; if ( k <= | |
for_end) do | |
{ | |
eqtb [2254568L + k ].hh .v.RH = 12 ; | |
eqtb [6711016L + k ].hh .v.RH = k ; | |
eqtb [5596904L + k ].hh .v.RH = 1000 ; | |
} | |
while ( k++ < for_end ) ;} | |
eqtb [2254581L ].hh .v.RH = 5 ; | |
eqtb [2254600L ].hh .v.RH = 10 ; | |
eqtb [2254660L ].hh .v.RH = 0 ; | |
eqtb [2254605L ].hh .v.RH = 14 ; | |
eqtb [2254695L ].hh .v.RH = 15 ; | |
eqtb [2254568L ].hh .v.RH = 9 ; | |
{register integer for_end; k = 48 ;for_end = 57 ; if ( k <= for_end) do | |
eqtb [6711016L + k ].hh .v.RH = k + setclassfield ( 7 ) ; | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = 65 ;for_end = 90 ; if ( k <= for_end) do | |
{ | |
eqtb [2254568L + k ].hh .v.RH = 11 ; | |
eqtb [2254568L + k + 32 ].hh .v.RH = 11 ; | |
eqtb [6711016L + k ].hh .v.RH = k + setfamilyfield ( 1 ) + | |
setclassfield ( 7 ) ; | |
eqtb [6711016L + k + 32 ].hh .v.RH = k + 32 + setfamilyfield ( 1 ) + | |
setclassfield ( 7 ) ; | |
eqtb [3368680L + k ].hh .v.RH = k + 32 ; | |
eqtb [3368680L + k + 32 ].hh .v.RH = k + 32 ; | |
eqtb [4482792L + k ].hh .v.RH = k ; | |
eqtb [4482792L + k + 32 ].hh .v.RH = k ; | |
eqtb [5596904L + k ].hh .v.RH = 999 ; | |
} | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = 8939240L ;for_end = 8939580L ; if ( k <= | |
for_end) do | |
eqtb [k ].cint = 0 ; | |
while ( k++ < for_end ) ;} | |
eqtb [8939295L ].cint = 256 ; | |
eqtb [8939296L ].cint = -1 ; | |
eqtb [8939257L ].cint = 1000 ; | |
eqtb [8939241L ].cint = 10000 ; | |
eqtb [8939281L ].cint = 1 ; | |
eqtb [8939280L ].cint = 25 ; | |
eqtb [8939285L ].cint = 92 ; | |
eqtb [8939288L ].cint = 13 ; | |
{register integer for_end; k = 0 ;for_end = 1114111L ; if ( k <= | |
for_end) do | |
eqtb [8939581L + k ].cint = -1 ; | |
while ( k++ < for_end ) ;} | |
eqtb [8939627L ].cint = 0 ; | |
{register integer for_end; k = 10053693L ;for_end = 10053971L ; if ( k | |
<= for_end) do | |
eqtb [k ].cint = 0 ; | |
while ( k++ < for_end ) ;} | |
primused = 500 ; | |
hashused = 2243226L ; | |
hashhigh = 0 ; | |
cscount = 0 ; | |
eqtb [2243235L ].hh.b0 = 118 ; | |
hash [2243235L ].v.RH = 65810L ; | |
eqtb [2243237L ].hh.b0 = 39 ; | |
eqtb [2243237L ].hh .v.RH = 1 ; | |
eqtb [2243237L ].hh.b1 = 1 ; | |
hash [2243237L ].v.RH = 65811L ; | |
{register integer for_end; k = - (integer) trieopsize ;for_end = | |
trieopsize ; if ( k <= for_end) do | |
trieophash [k ]= 0 ; | |
while ( k++ < for_end ) ;} | |
{register integer for_end; k = 0 ;for_end = 255 ; if ( k <= for_end) do | |
trieused [k ]= mintrieop ; | |
while ( k++ < for_end ) ;} | |
maxopused = mintrieop ; | |
trieopptr = 0 ; | |
trienotready = true ; | |
hash [2243226L ].v.RH = 66625L ; | |
if ( iniversion ) | |
formatident = 66707L ; | |
hash [2243234L ].v.RH = 66765L ; | |
eqtb [2243234L ].hh.b1 = 1 ; | |
eqtb [2243234L ].hh.b0 = 115 ; | |
eqtb [2243234L ].hh .v.RH = -268435455L ; | |
eTeXmode = 0 ; | |
maxregnum = 255 ; | |
maxreghelpline = 66957L ; | |
{register integer for_end; i = 0 ;for_end = 6 ; if ( i <= for_end) do | |
saroot [i ]= -268435455L ; | |
while ( i++ < for_end ) ;} | |
eqtb [8939323L ].cint = 63 ; | |
} | |
#endif /* INITEX */ | |
synctexoffset = 8939324L ; | |
} | |
#ifdef INITEX | |
boolean | |
getstringsstarted ( void ) | |
{ | |
/* 30 10 */ register boolean Result; getstringsstarted_regmem | |
strnumber g ; | |
poolptr = 0 ; | |
strptr = 0 ; | |
strstart [0 ]= 0 ; | |
{ | |
strptr = 65536L ; | |
strstart [( strptr ) - 65536L ]= poolptr ; | |
} | |
g = loadpoolstrings ( ( poolsize - stringvacancies ) ) ; | |
if ( g == 0 ) | |
{ | |
; | |
fprintf ( stdout , "%s\n", "! You have to increase POOLSIZE." ) ; | |
Result = false ; | |
return Result ; | |
} | |
Result = true ; | |
return Result ; | |
} | |
#endif /* INITEX */ | |
#ifdef INITEX | |
void | |
sortavail ( void ) | |
{ | |
sortavail_regmem | |
halfword p, q, r ; | |
halfword oldrover ; | |
p = getnode ( 1073741824L ) ; | |
p = mem [rover + 1 ].hh .v.RH ; | |
mem [rover + 1 ].hh .v.RH = 1073741823L ; | |
oldrover = rover ; | |
while ( p != oldrover ) if ( p < rover ) | |
{ | |
q = p ; | |
p = mem [q + 1 ].hh .v.RH ; | |
mem [q + 1 ].hh .v.RH = rover ; | |
rover = q ; | |
} | |
else { | |
q = rover ; | |
while ( mem [q + 1 ].hh .v.RH < p ) q = mem [q + 1 ].hh .v.RH ; | |
r = mem [p + 1 ].hh .v.RH ; | |
mem [p + 1 ].hh .v.RH = mem [q + 1 ].hh .v.RH ; | |
mem [q + 1 ].hh .v.RH = p ; | |
p = r ; | |
} | |
p = rover ; | |
while ( mem [p + 1 ].hh .v.RH != 1073741823L ) { | |
mem [mem [p + 1 ].hh .v.RH + 1 ].hh .v.LH = p ; | |
p = mem [p + 1 ].hh .v.RH ; | |
} | |
mem [p + 1 ].hh .v.RH = rover ; | |
mem [rover + 1 ].hh .v.LH = p ; | |
} | |
#endif /* INITEX */ | |
#ifdef INITEX | |
void | |
zprimitive ( strnumber s , quarterword c , halfword o ) | |
{ | |
primitive_regmem | |
poolpointer k ; | |
integer j ; | |
smallnumber l ; | |
integer primval ; | |
if ( s < 256 ) | |
{ | |
curval = s + 1114113L ; | |
primval = primlookup ( s ) ; | |
} | |
else { | |
k = strstart [( s ) - 65536L ]; | |
l = strstart [( s + 1 ) - 65536L ]- k ; | |
if ( first + l > bufsize + 1 ) | |
overflow ( 65538L , bufsize ) ; | |
{register integer for_end; j = 0 ;for_end = l - 1 ; if ( j <= for_end) | |
do | |
buffer [first + j ]= strpool [k + j ]; | |
while ( j++ < for_end ) ;} | |
curval = idlookup ( first , l ) ; | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
hash [curval ].v.RH = s ; | |
primval = primlookup ( s ) ; | |
} | |
eqtb [curval ].hh.b1 = 1 ; | |
eqtb [curval ].hh.b0 = c ; | |
eqtb [curval ].hh .v.RH = o ; | |
eqtb [2243238L + primval ].hh.b1 = 1 ; | |
eqtb [2243238L + primval ].hh.b0 = c ; | |
eqtb [2243238L + primval ].hh .v.RH = o ; | |
} | |
#endif /* INITEX */ | |
#ifdef INITEX | |
trieopcode | |
znewtrieop ( smallnumber d , smallnumber n , trieopcode v ) | |
{ | |
/* 10 */ register trieopcode Result; newtrieop_regmem | |
integer h ; | |
trieopcode u ; | |
integer l ; | |
h = abs ( n + 313 * d + 361 * v + 1009 * curlang ) % ( trieopsize - | |
negtrieopsize ) + negtrieopsize ; | |
while ( true ) { | |
l = trieophash [h ]; | |
if ( l == 0 ) | |
{ | |
if ( trieopptr == trieopsize ) | |
overflow ( 66378L , trieopsize ) ; | |
u = trieused [curlang ]; | |
if ( u == maxtrieop ) | |
overflow ( 66379L , maxtrieop - mintrieop ) ; | |
incr ( trieopptr ) ; | |
incr ( u ) ; | |
trieused [curlang ]= u ; | |
if ( u > maxopused ) | |
maxopused = u ; | |
hyfdistance [trieopptr ]= d ; | |
hyfnum [trieopptr ]= n ; | |
hyfnext [trieopptr ]= v ; | |
trieoplang [trieopptr ]= curlang ; | |
trieophash [h ]= trieopptr ; | |
trieopval [trieopptr ]= u ; | |
Result = u ; | |
return Result ; | |
} | |
if ( ( hyfdistance [l ]== d ) && ( hyfnum [l ]== n ) && ( hyfnext [l | |
]== v ) && ( trieoplang [l ]== curlang ) ) | |
{ | |
Result = trieopval [l ]; | |
return Result ; | |
} | |
if ( h > - (integer) trieopsize ) | |
decr ( h ) ; | |
else h = trieopsize ; | |
} | |
return Result ; | |
} | |
triepointer | |
ztrienode ( triepointer p ) | |
{ | |
/* 10 */ register triepointer Result; trienode_regmem | |
triepointer h ; | |
triepointer q ; | |
h = abs ( triec [p ]+ 1009 * trieo [p ]+ 2718 * triel [p ]+ 3142 * | |
trier [p ]) % triesize ; | |
while ( true ) { | |
q = triehash [h ]; | |
if ( q == 0 ) | |
{ | |
triehash [h ]= p ; | |
Result = p ; | |
return Result ; | |
} | |
if ( ( triec [q ]== triec [p ]) && ( trieo [q ]== trieo [p ]) && ( | |
triel [q ]== triel [p ]) && ( trier [q ]== trier [p ]) ) | |
{ | |
Result = q ; | |
return Result ; | |
} | |
if ( h > 0 ) | |
decr ( h ) ; | |
else h = triesize ; | |
} | |
return Result ; | |
} | |
triepointer | |
zcompresstrie ( triepointer p ) | |
{ | |
register triepointer Result; compresstrie_regmem | |
if ( p == 0 ) | |
Result = 0 ; | |
else { | |
triel [p ]= compresstrie ( triel [p ]) ; | |
trier [p ]= compresstrie ( trier [p ]) ; | |
Result = trienode ( p ) ; | |
} | |
return Result ; | |
} | |
void | |
zfirstfit ( triepointer p ) | |
{ | |
/* 45 40 */ firstfit_regmem | |
triepointer h ; | |
triepointer z ; | |
triepointer q ; | |
UTF16code c ; | |
triepointer l, r ; | |
integer ll ; | |
c = triec [p ]; | |
z = triemin [c ]; | |
while ( true ) { | |
h = z - c ; | |
if ( triemax < h + maxhyphchar ) | |
{ | |
if ( triesize <= h + maxhyphchar ) | |
overflow ( 66380L , triesize ) ; | |
do { | |
incr ( triemax ) ; | |
trietaken [triemax ]= false ; | |
trietrl [triemax ]= triemax + 1 ; | |
trietro [triemax ]= triemax - 1 ; | |
} while ( ! ( triemax == h + maxhyphchar ) ) ; | |
} | |
if ( trietaken [h ]) | |
goto lab45 ; | |
q = trier [p ]; | |
while ( q > 0 ) { | |
if ( trietrl [h + triec [q ]]== 0 ) | |
goto lab45 ; | |
q = trier [q ]; | |
} | |
goto lab40 ; | |
lab45: z = trietrl [z ]; | |
} | |
lab40: trietaken [h ]= true ; | |
triehash [p ]= h ; | |
q = p ; | |
do { | |
z = h + triec [q ]; | |
l = trietro [z ]; | |
r = trietrl [z ]; | |
trietro [r ]= l ; | |
trietrl [l ]= r ; | |
trietrl [z ]= 0 ; | |
if ( l < maxhyphchar ) | |
{ | |
if ( z < maxhyphchar ) | |
ll = z ; | |
else ll = maxhyphchar ; | |
do { | |
triemin [l ]= r ; | |
incr ( l ) ; | |
} while ( ! ( l == ll ) ) ; | |
} | |
q = trier [q ]; | |
} while ( ! ( q == 0 ) ) ; | |
} | |
void | |
ztriepack ( triepointer p ) | |
{ | |
triepack_regmem | |
triepointer q ; | |
do { | |
q = triel [p ]; | |
if ( ( q > 0 ) && ( triehash [q ]== 0 ) ) | |
{ | |
firstfit ( q ) ; | |
triepack ( q ) ; | |
} | |
p = trier [p ]; | |
} while ( ! ( p == 0 ) ) ; | |
} | |
void | |
ztriefix ( triepointer p ) | |
{ | |
triefix_regmem | |
triepointer q ; | |
UTF16code c ; | |
triepointer z ; | |
z = triehash [p ]; | |
do { | |
q = triel [p ]; | |
c = triec [p ]; | |
trietrl [z + c ]= triehash [q ]; | |
trietrc [z + c ]= c ; | |
trietro [z + c ]= trieo [p ]; | |
if ( q > 0 ) | |
triefix ( q ) ; | |
p = trier [p ]; | |
} while ( ! ( p == 0 ) ) ; | |
} | |
void | |
newpatterns ( void ) | |
{ | |
/* 30 31 */ newpatterns_regmem | |
short k, l ; | |
boolean digitsensed ; | |
trieopcode v ; | |
triepointer p, q ; | |
boolean firstchild ; | |
UTF16code c ; | |
if ( trienotready ) | |
{ | |
if ( eqtb [8939290L ].cint <= 0 ) | |
curlang = 0 ; | |
else if ( eqtb [8939290L ].cint > 255 ) | |
curlang = 0 ; | |
else curlang = eqtb [8939290L ].cint ; | |
scanleftbrace () ; | |
k = 0 ; | |
hyf [0 ]= 0 ; | |
digitsensed = false ; | |
while ( true ) { | |
getxtoken () ; | |
switch ( curcmd ) | |
{case 11 : | |
case 12 : | |
if ( digitsensed || ( curchr < 48 ) || ( curchr > 57 ) ) | |
{ | |
if ( curchr == 46 ) | |
curchr = 0 ; | |
else { | |
curchr = eqtb [3368680L + curchr ].hh .v.RH ; | |
if ( curchr == 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66386L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66385L ; | |
} | |
error () ; | |
} | |
} | |
if ( curchr > maxhyphchar ) | |
maxhyphchar = curchr ; | |
if ( k < maxhyphenatablelength () ) | |
{ | |
incr ( k ) ; | |
hc [k ]= curchr ; | |
hyf [k ]= 0 ; | |
digitsensed = false ; | |
} | |
} | |
else if ( k < maxhyphenatablelength () ) | |
{ | |
hyf [k ]= curchr - 48 ; | |
digitsensed = true ; | |
} | |
break ; | |
case 10 : | |
case 2 : | |
{ | |
if ( k > 0 ) | |
{ | |
if ( hc [1 ]== 0 ) | |
hyf [0 ]= 0 ; | |
if ( hc [k ]== 0 ) | |
hyf [k ]= 0 ; | |
l = k ; | |
v = mintrieop ; | |
while ( true ) { | |
if ( hyf [l ]!= 0 ) | |
v = newtrieop ( k - l , hyf [l ], v ) ; | |
if ( l > 0 ) | |
decr ( l ) ; | |
else goto lab31 ; | |
} | |
lab31: ; | |
q = 0 ; | |
hc [0 ]= curlang ; | |
while ( l <= k ) { | |
c = hc [l ]; | |
incr ( l ) ; | |
p = triel [q ]; | |
firstchild = true ; | |
while ( ( p > 0 ) && ( c > triec [p ]) ) { | |
q = p ; | |
p = trier [q ]; | |
firstchild = false ; | |
} | |
if ( ( p == 0 ) || ( c < triec [p ]) ) | |
{ | |
if ( trieptr == triesize ) | |
overflow ( 66380L , triesize ) ; | |
incr ( trieptr ) ; | |
trier [trieptr ]= p ; | |
p = trieptr ; | |
triel [p ]= 0 ; | |
if ( firstchild ) | |
triel [q ]= p ; | |
else trier [q ]= p ; | |
triec [p ]= c ; | |
trieo [p ]= mintrieop ; | |
} | |
q = p ; | |
} | |
if ( trieo [q ]!= mintrieop ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66387L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66385L ; | |
} | |
error () ; | |
} | |
trieo [q ]= v ; | |
} | |
if ( curcmd == 2 ) | |
goto lab30 ; | |
k = 0 ; | |
hyf [0 ]= 0 ; | |
digitsensed = false ; | |
} | |
break ; | |
default: | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66384L ) ; | |
} | |
printesc ( 66382L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66385L ; | |
} | |
error () ; | |
} | |
break ; | |
} | |
} | |
lab30: ; | |
if ( eqtb [8939307L ].cint > 0 ) | |
{ | |
c = curlang ; | |
firstchild = false ; | |
p = 0 ; | |
do { | |
q = p ; | |
p = trier [q ]; | |
} while ( ! ( ( p == 0 ) || ( c <= triec [p ]) ) ) ; | |
if ( ( p == 0 ) || ( c < triec [p ]) ) | |
{ | |
if ( trieptr == triesize ) | |
overflow ( 66380L , triesize ) ; | |
incr ( trieptr ) ; | |
trier [trieptr ]= p ; | |
p = trieptr ; | |
triel [p ]= 0 ; | |
if ( firstchild ) | |
triel [q ]= p ; | |
else trier [q ]= p ; | |
triec [p ]= c ; | |
trieo [p ]= mintrieop ; | |
} | |
q = p ; | |
p = triel [q ]; | |
firstchild = true ; | |
{register integer for_end; c = 0 ;for_end = 255 ; if ( c <= for_end) | |
do | |
if ( ( eqtb [3368680L + c ].hh .v.RH > 0 ) || ( ( c == 255 ) && | |
firstchild ) ) | |
{ | |
if ( p == 0 ) | |
{ | |
if ( trieptr == triesize ) | |
overflow ( 66380L , triesize ) ; | |
incr ( trieptr ) ; | |
trier [trieptr ]= p ; | |
p = trieptr ; | |
triel [p ]= 0 ; | |
if ( firstchild ) | |
triel [q ]= p ; | |
else trier [q ]= p ; | |
triec [p ]= c ; | |
trieo [p ]= mintrieop ; | |
} | |
else triec [p ]= c ; | |
trieo [p ]= eqtb [3368680L + c ].hh .v.RH ; | |
q = p ; | |
p = trier [q ]; | |
firstchild = false ; | |
} | |
while ( c++ < for_end ) ;} | |
if ( firstchild ) | |
triel [q ]= 0 ; | |
else trier [q ]= 0 ; | |
} | |
} | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66381L ) ; | |
} | |
printesc ( 66382L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66383L ; | |
} | |
error () ; | |
mem [memtop - 12 ].hh .v.RH = scantoks ( false , false ) ; | |
flushlist ( defref ) ; | |
} | |
} | |
void | |
inittrie ( void ) | |
{ | |
inittrie_regmem | |
triepointer p ; | |
integer j, k, t ; | |
triepointer r, s ; | |
incr ( maxhyphchar ) ; | |
opstart [0 ]= - (integer) mintrieop ; | |
{register integer for_end; j = 1 ;for_end = 255 ; if ( j <= for_end) do | |
opstart [j ]= opstart [j - 1 ]+ trieused [j - 1 ]; | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = 1 ;for_end = trieopptr ; if ( j <= for_end) | |
do | |
trieophash [j ]= opstart [trieoplang [j ]]+ trieopval [j ]; | |
while ( j++ < for_end ) ;} | |
{register integer for_end; j = 1 ;for_end = trieopptr ; if ( j <= for_end) | |
do | |
while ( trieophash [j ]> j ) { | |
k = trieophash [j ]; | |
t = hyfdistance [k ]; | |
hyfdistance [k ]= hyfdistance [j ]; | |
hyfdistance [j ]= t ; | |
t = hyfnum [k ]; | |
hyfnum [k ]= hyfnum [j ]; | |
hyfnum [j ]= t ; | |
t = hyfnext [k ]; | |
hyfnext [k ]= hyfnext [j ]; | |
hyfnext [j ]= t ; | |
trieophash [j ]= trieophash [k ]; | |
trieophash [k ]= k ; | |
} | |
while ( j++ < for_end ) ;} | |
{register integer for_end; p = 0 ;for_end = triesize ; if ( p <= for_end) | |
do | |
triehash [p ]= 0 ; | |
while ( p++ < for_end ) ;} | |
trier [0 ]= compresstrie ( trier [0 ]) ; | |
triel [0 ]= compresstrie ( triel [0 ]) ; | |
{register integer for_end; p = 0 ;for_end = trieptr ; if ( p <= for_end) | |
do | |
triehash [p ]= 0 ; | |
while ( p++ < for_end ) ;} | |
{register integer for_end; p = 0 ;for_end = 65535L ; if ( p <= for_end) do | |
triemin [p ]= p + 1 ; | |
while ( p++ < for_end ) ;} | |
trietrl [0 ]= 1 ; | |
triemax = 0 ; | |
if ( triel [0 ]!= 0 ) | |
{ | |
firstfit ( triel [0 ]) ; | |
triepack ( triel [0 ]) ; | |
} | |
if ( trier [0 ]!= 0 ) | |
{ | |
if ( triel [0 ]== 0 ) | |
{register integer for_end; p = 0 ;for_end = 255 ; if ( p <= for_end) do | |
triemin [p ]= p + 2 ; | |
while ( p++ < for_end ) ;} | |
firstfit ( trier [0 ]) ; | |
triepack ( trier [0 ]) ; | |
hyphstart = triehash [trier [0 ]]; | |
} | |
if ( triemax == 0 ) | |
{ | |
{register integer for_end; r = 0 ;for_end = maxhyphchar ; if ( r <= | |
for_end) do | |
{ | |
trietrl [r ]= 0 ; | |
trietro [r ]= mintrieop ; | |
trietrc [r ]= 0 ; | |
} | |
while ( r++ < for_end ) ;} | |
triemax = maxhyphchar ; | |
} | |
else { | |
if ( trier [0 ]> 0 ) | |
triefix ( trier [0 ]) ; | |
if ( triel [0 ]> 0 ) | |
triefix ( triel [0 ]) ; | |
r = 0 ; | |
do { | |
s = trietrl [r ]; | |
{ | |
trietrl [r ]= 0 ; | |
trietro [r ]= mintrieop ; | |
trietrc [r ]= 0 ; | |
} | |
r = s ; | |
} while ( ! ( r > triemax ) ) ; | |
} | |
trietrc [0 ]= 63 ; | |
trienotready = false ; | |
} | |
#endif /* INITEX */ | |
void | |
zlinebreak ( boolean d ) | |
{ | |
/* 30 31 32 33 34 35 36 22 20 */ linebreak_regmem | |
boolean autobreaking ; | |
halfword prevp ; | |
halfword q, r, s, prevs ; | |
internalfontnumber f ; | |
smallnumber j ; | |
UnicodeScalar c ; | |
integer l ; | |
integer i ; | |
packbeginline = curlist .mlfield ; | |
mem [memtop - 3 ].hh .v.RH = mem [curlist .headfield ].hh .v.RH ; | |
if ( ( curlist .tailfield >= himemmin ) ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( 10000 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
else if ( mem [curlist .tailfield ].hh.b0 != 10 ) | |
{ | |
mem [curlist .tailfield ].hh .v.RH = newpenalty ( 10000 ) ; | |
curlist .tailfield = mem [curlist .tailfield ].hh .v.RH ; | |
} | |
else { | |
mem [curlist .tailfield ].hh.b0 = 12 ; | |
deleteglueref ( mem [curlist .tailfield + 1 ].hh .v.LH ) ; | |
flushnodelist ( mem [curlist .tailfield + 1 ].hh .v.RH ) ; | |
mem [curlist .tailfield + 1 ].cint = 10000 ; | |
} | |
mem [curlist .tailfield ].hh .v.RH = newparamglue ( 14 ) ; | |
lastlinefill = mem [curlist .tailfield ].hh .v.RH ; | |
initcurlang = curlist .pgfield % 65536L ; | |
initlhyf = curlist .pgfield / 4194304L ; | |
initrhyf = ( curlist .pgfield / 65536L ) % 64 ; | |
popnest () ; | |
noshrinkerroryet = true ; | |
if ( ( mem [eqtb [2252747L ].hh .v.RH ].hh.b1 != 0 ) && ( mem [eqtb [ | |
2252747L ].hh .v.RH + 3 ].cint != 0 ) ) | |
{ | |
eqtb [2252747L ].hh .v.RH = finiteshrink ( eqtb [2252747L ].hh .v.RH ) | |
; | |
} | |
if ( ( mem [eqtb [2252748L ].hh .v.RH ].hh.b1 != 0 ) && ( mem [eqtb [ | |
2252748L ].hh .v.RH + 3 ].cint != 0 ) ) | |
{ | |
eqtb [2252748L ].hh .v.RH = finiteshrink ( eqtb [2252748L ].hh .v.RH ) | |
; | |
} | |
q = eqtb [2252747L ].hh .v.RH ; | |
r = eqtb [2252748L ].hh .v.RH ; | |
background [1 ]= mem [q + 1 ].cint + mem [r + 1 ].cint ; | |
background [2 ]= 0 ; | |
background [3 ]= 0 ; | |
background [4 ]= 0 ; | |
background [5 ]= 0 ; | |
background [2 + mem [q ].hh.b0 ]= mem [q + 2 ].cint ; | |
background [2 + mem [r ].hh.b0 ]= background [2 + mem [r ].hh.b0 ]+ | |
mem [r + 2 ].cint ; | |
background [6 ]= mem [q + 3 ].cint + mem [r + 3 ].cint ; | |
dolastlinefit = false ; | |
activenodesize = 3 ; | |
if ( eqtb [8939305L ].cint > 0 ) | |
{ | |
q = mem [lastlinefill + 1 ].hh .v.LH ; | |
if ( ( mem [q + 2 ].cint > 0 ) && ( mem [q ].hh.b0 > 0 ) ) { | |
if ( ( background [3 ]== 0 ) && ( background [4 ]== 0 ) && ( | |
background [5 ]== 0 ) ) | |
{ | |
dolastlinefit = true ; | |
activenodesize = 5 ; | |
fillwidth [0 ]= 0 ; | |
fillwidth [1 ]= 0 ; | |
fillwidth [2 ]= 0 ; | |
fillwidth [mem [q ].hh.b0 - 1 ]= mem [q + 2 ].cint ; | |
} | |
} | |
} | |
minimumdemerits = 1073741823L ; | |
minimaldemerits [3 ]= 1073741823L ; | |
minimaldemerits [2 ]= 1073741823L ; | |
minimaldemerits [1 ]= 1073741823L ; | |
minimaldemerits [0 ]= 1073741823L ; | |
if ( eqtb [2253271L ].hh .v.RH == -268435455L ) { | |
if ( eqtb [10053710L ].cint == 0 ) | |
{ | |
lastspecialline = 0 ; | |
secondwidth = eqtb [10053696L ].cint ; | |
secondindent = 0 ; | |
} | |
else { | |
lastspecialline = abs ( eqtb [8939281L ].cint ) ; | |
if ( eqtb [8939281L ].cint < 0 ) | |
{ | |
firstwidth = eqtb [10053696L ].cint - abs ( eqtb [10053710L ].cint | |
) ; | |
if ( eqtb [10053710L ].cint >= 0 ) | |
firstindent = eqtb [10053710L ].cint ; | |
else firstindent = 0 ; | |
secondwidth = eqtb [10053696L ].cint ; | |
secondindent = 0 ; | |
} | |
else { | |
firstwidth = eqtb [10053696L ].cint ; | |
firstindent = 0 ; | |
secondwidth = eqtb [10053696L ].cint - abs ( eqtb [10053710L ] | |
.cint ) ; | |
if ( eqtb [10053710L ].cint >= 0 ) | |
secondindent = eqtb [10053710L ].cint ; | |
else secondindent = 0 ; | |
} | |
} | |
} | |
else { | |
lastspecialline = mem [eqtb [2253271L ].hh .v.RH ].hh .v.LH - 1 ; | |
secondwidth = mem [eqtb [2253271L ].hh .v.RH + 2 * ( lastspecialline + | |
1 ) ].cint ; | |
secondindent = mem [eqtb [2253271L ].hh .v.RH + 2 * lastspecialline + 1 | |
].cint ; | |
} | |
if ( eqtb [8939259L ].cint == 0 ) | |
easyline = lastspecialline ; | |
else easyline = 1073741823L ; | |
threshold = eqtb [8939240L ].cint ; | |
if ( threshold >= 0 ) | |
{ | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66360L ) ; | |
} | |
#endif /* STAT */ | |
secondpass = false ; | |
finalpass = false ; | |
} | |
else { | |
threshold = eqtb [8939241L ].cint ; | |
secondpass = true ; | |
finalpass = ( eqtb [10053713L ].cint <= 0 ) ; | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
begindiagnostic () ; | |
#endif /* STAT */ | |
} | |
while ( true ) { | |
if ( threshold > 10000 ) | |
threshold = 10000 ; | |
if ( secondpass ) | |
{ | |
; | |
#ifdef INITEX | |
if ( trienotready ) | |
inittrie () ; | |
#endif /* INITEX */ | |
curlang = initcurlang ; | |
lhyf = initlhyf ; | |
rhyf = initrhyf ; | |
if ( trietrc [hyphstart + curlang ]!= curlang ) | |
hyphindex = 0 ; | |
else hyphindex = trietrl [hyphstart + curlang ]; | |
} | |
q = getnode ( activenodesize ) ; | |
mem [q ].hh.b0 = 0 ; | |
mem [q ].hh.b1 = 2 ; | |
mem [q ].hh .v.RH = memtop - 7 ; | |
mem [q + 1 ].hh .v.RH = -268435455L ; | |
mem [q + 1 ].hh .v.LH = curlist .pgfield + 1 ; | |
mem [q + 2 ].cint = 0 ; | |
mem [memtop - 7 ].hh .v.RH = q ; | |
if ( dolastlinefit ) | |
{ | |
mem [q + 3 ].cint = 0 ; | |
mem [q + 4 ].cint = 0 ; | |
} | |
activewidth [1 ]= background [1 ]; | |
activewidth [2 ]= background [2 ]; | |
activewidth [3 ]= background [3 ]; | |
activewidth [4 ]= background [4 ]; | |
activewidth [5 ]= background [5 ]; | |
activewidth [6 ]= background [6 ]; | |
passive = -268435455L ; | |
printednode = memtop - 3 ; | |
passnumber = 0 ; | |
fontinshortdisplay = 0 ; | |
curp = mem [memtop - 3 ].hh .v.RH ; | |
autobreaking = true ; | |
{ | |
prevp = curp ; | |
globalprevp = curp ; | |
} | |
firstp = curp ; | |
while ( ( curp != -268435455L ) && ( mem [memtop - 7 ].hh .v.RH != | |
memtop - 7 ) ) { | |
if ( ( curp >= himemmin ) ) | |
{ | |
{ | |
prevp = curp ; | |
globalprevp = curp ; | |
} | |
do { | |
f = mem [curp ].hh.b0 ; | |
activewidth [1 ]= activewidth [1 ]+ fontinfo [widthbase [f ]+ | |
fontinfo [charbase [f ]+ effectivechar ( true , f , mem [curp ] | |
.hh.b1 ) ].qqqq .b0 ].cint ; | |
curp = mem [curp ].hh .v.RH ; | |
} while ( ! ( ! ( curp >= himemmin ) ) ) ; | |
} | |
switch ( mem [curp ].hh.b0 ) | |
{case 0 : | |
case 1 : | |
case 2 : | |
activewidth [1 ]= activewidth [1 ]+ mem [curp + 1 ].cint ; | |
break ; | |
case 8 : | |
if ( mem [curp ].hh.b1 == 4 ) | |
{ | |
curlang = mem [curp + 1 ].hh .v.RH ; | |
lhyf = mem [curp + 1 ].hh.b0 ; | |
rhyf = mem [curp + 1 ].hh.b1 ; | |
if ( trietrc [hyphstart + curlang ]!= curlang ) | |
hyphindex = 0 ; | |
else hyphindex = trietrl [hyphstart + curlang ]; | |
} | |
else if ( ( ( ( mem [curp ].hh.b1 >= 40 ) && ( mem [curp ].hh.b1 | |
<= 41 ) ) ) || ( mem [curp ].hh.b1 == 42 ) || ( mem [curp ].hh.b1 | |
== 43 ) || ( mem [curp ].hh.b1 == 44 ) ) | |
{ | |
activewidth [1 ]= activewidth [1 ]+ mem [curp + 1 ].cint ; | |
} | |
break ; | |
case 10 : | |
{ | |
if ( autobreaking ) | |
{ | |
if ( ( prevp >= himemmin ) ) | |
trybreak ( 0 , 0 ) ; | |
else if ( ( mem [prevp ].hh.b0 < 9 ) ) | |
trybreak ( 0 , 0 ) ; | |
else if ( ( mem [prevp ].hh.b0 == 11 ) && ( mem [prevp ].hh.b1 | |
!= 1 ) ) | |
trybreak ( 0 , 0 ) ; | |
} | |
if ( ( mem [mem [curp + 1 ].hh .v.LH ].hh.b1 != 0 ) && ( mem [ | |
mem [curp + 1 ].hh .v.LH + 3 ].cint != 0 ) ) | |
{ | |
mem [curp + 1 ].hh .v.LH = finiteshrink ( mem [curp + 1 ].hh | |
.v.LH ) ; | |
} | |
q = mem [curp + 1 ].hh .v.LH ; | |
activewidth [1 ]= activewidth [1 ]+ mem [q + 1 ].cint ; | |
activewidth [2 + mem [q ].hh.b0 ]= activewidth [2 + mem [q ] | |
.hh.b0 ]+ mem [q + 2 ].cint ; | |
activewidth [6 ]= activewidth [6 ]+ mem [q + 3 ].cint ; | |
if ( secondpass && autobreaking ) | |
{ | |
prevs = curp ; | |
s = mem [prevs ].hh .v.RH ; | |
if ( s != -268435455L ) | |
{ | |
while ( true ) { | |
if ( ( s >= himemmin ) ) | |
{ | |
c = mem [s ].hh.b1 ; | |
hf = mem [s ].hh.b0 ; | |
} | |
else if ( mem [s ].hh.b0 == 6 ) { | |
if ( mem [s + 1 ].hh .v.RH == -268435455L ) | |
goto lab22 ; | |
else { | |
q = mem [s + 1 ].hh .v.RH ; | |
c = mem [q ].hh.b1 ; | |
hf = mem [q ].hh.b0 ; | |
} | |
} | |
else if ( ( mem [s ].hh.b0 == 11 ) && ( mem [s ].hh.b1 == | |
0 ) ) | |
goto lab22 ; | |
else if ( ( mem [s ].hh.b0 == 9 ) && ( mem [s ].hh.b1 >= 4 | |
) ) | |
goto lab22 ; | |
else if ( mem [s ].hh.b0 == 8 ) | |
{ | |
if ( ( ( ( mem [s ].hh.b1 >= 40 ) && ( mem [s ].hh.b1 <= | |
41 ) ) ) ) | |
{ | |
{register integer for_end; l = 0 ;for_end = mem [s + 4 | |
].qqqq .b2 - 1 ; if ( l <= for_end) do | |
{ | |
c = getnativeusv ( s , l ) ; | |
if ( eqtb [3368680L + c ].hh .v.RH != 0 ) | |
{ | |
hf = mem [s + 4 ].qqqq .b1 ; | |
prevs = s ; | |
if ( ( eqtb [3368680L + c ].hh .v.RH == c ) || ( | |
eqtb [8939278L ].cint > 0 ) ) | |
goto lab32 ; | |
else goto lab31 ; | |
} | |
if ( c >= 65536L ) | |
incr ( l ) ; | |
} | |
while ( l++ < for_end ) ;} | |
} | |
if ( mem [s ].hh.b1 == 4 ) | |
{ | |
curlang = mem [s + 1 ].hh .v.RH ; | |
lhyf = mem [s + 1 ].hh.b0 ; | |
rhyf = mem [s + 1 ].hh.b1 ; | |
if ( trietrc [hyphstart + curlang ]!= curlang ) | |
hyphindex = 0 ; | |
else hyphindex = trietrl [hyphstart + curlang ]; | |
} | |
goto lab22 ; | |
} | |
else goto lab31 ; | |
if ( ( hyphindex == 0 ) || ( ( c ) > 255 ) ) | |
hc [0 ]= eqtb [3368680L + c ].hh .v.RH ; | |
else if ( trietrc [hyphindex + c ]!= c ) | |
hc [0 ]= 0 ; | |
else hc [0 ]= trietro [hyphindex + c ]; | |
if ( hc [0 ]!= 0 ) { | |
if ( ( hc [0 ]== c ) || ( eqtb [8939278L ].cint > 0 ) ) | |
goto lab32 ; | |
else goto lab31 ; | |
} | |
lab22: prevs = s ; | |
s = mem [prevs ].hh .v.RH ; | |
} | |
lab32: hyfchar = hyphenchar [hf ]; | |
if ( hyfchar < 0 ) | |
goto lab31 ; | |
if ( hyfchar > 65535L ) | |
goto lab31 ; | |
ha = prevs ; | |
if ( lhyf + rhyf > maxhyphenatablelength () ) | |
goto lab31 ; | |
if ( ( ( ( ha ) != -268435455L ) && ( ! ( ha >= himemmin ) ) && | |
( mem [ha ].hh.b0 == 8 ) && ( ( ( mem [ha ].hh.b1 >= 40 ) && | |
( mem [ha ].hh.b1 <= 41 ) ) ) ) ) | |
{ | |
s = mem [ha ].hh .v.RH ; | |
while ( true ) { | |
if ( ! ( ( s >= himemmin ) ) ) | |
switch ( mem [s ].hh.b0 ) | |
{case 6 : | |
; | |
break ; | |
case 11 : | |
if ( mem [s ].hh.b1 != 0 ) | |
goto lab36 ; | |
break ; | |
case 8 : | |
case 10 : | |
case 12 : | |
case 3 : | |
case 5 : | |
case 4 : | |
goto lab36 ; | |
break ; | |
default: | |
goto lab31 ; | |
break ; | |
} | |
s = mem [s ].hh .v.RH ; | |
} | |
lab36: ; | |
hn = 0 ; | |
lab20: { | |
register integer for_end; l = 0 ;for_end = mem [ha | |
+ 4 ].qqqq .b2 - 1 ; if ( l <= for_end) do | |
{ | |
c = getnativeusv ( ha , l ) ; | |
if ( ( hyphindex == 0 ) || ( ( c ) > 255 ) ) | |
hc [0 ]= eqtb [3368680L + c ].hh .v.RH ; | |
else if ( trietrc [hyphindex + c ]!= c ) | |
hc [0 ]= 0 ; | |
else hc [0 ]= trietro [hyphindex + c ]; | |
if ( ( hc [0 ]== 0 ) ) | |
{ | |
if ( ( hn > 0 ) ) | |
{ | |
q = newnativewordnode ( hf , mem [ha + 4 ].qqqq .b2 | |
- l ) ; | |
mem [q ].hh.b1 = mem [ha ].hh.b1 ; | |
{register integer for_end; i = l ;for_end = mem [ha | |
+ 4 ].qqqq .b2 - 1 ; if ( i <= for_end) do | |
setnativechar ( q , i - l , getnativechar ( ha , i ) | |
) ; | |
while ( i++ < for_end ) ;} | |
setnativemetrics ( q , ( eqtb [8939315L ].cint > 0 ) | |
) ; | |
mem [q ].hh .v.RH = mem [ha ].hh .v.RH ; | |
mem [ha ].hh .v.RH = q ; | |
mem [ha + 4 ].qqqq .b2 = l ; | |
setnativemetrics ( ha , ( eqtb [8939315L ].cint > 0 | |
) ) ; | |
goto lab33 ; | |
} | |
} | |
else if ( ( hn == 0 ) && ( l > 0 ) ) | |
{ | |
q = newnativewordnode ( hf , mem [ha + 4 ].qqqq .b2 - | |
l ) ; | |
mem [q ].hh.b1 = mem [ha ].hh.b1 ; | |
{register integer for_end; i = l ;for_end = mem [ha + | |
4 ].qqqq .b2 - 1 ; if ( i <= for_end) do | |
setnativechar ( q , i - l , getnativechar ( ha , i ) ) | |
; | |
while ( i++ < for_end ) ;} | |
setnativemetrics ( q , ( eqtb [8939315L ].cint > 0 ) ) | |
; | |
mem [q ].hh .v.RH = mem [ha ].hh .v.RH ; | |
mem [ha ].hh .v.RH = q ; | |
mem [ha + 4 ].qqqq .b2 = l ; | |
setnativemetrics ( ha , ( eqtb [8939315L ].cint > 0 ) | |
) ; | |
ha = mem [ha ].hh .v.RH ; | |
goto lab20 ; | |
} | |
else if ( ( hn == maxhyphenatablelength () ) ) | |
goto lab33 ; | |
else { | |
incr ( hn ) ; | |
if ( c < 65536L ) | |
{ | |
hu [hn ]= c ; | |
hc [hn ]= hc [0 ]; | |
} | |
else { | |
hu [hn ]= ( c - 65536L ) / 1024 + 55296L ; | |
hc [hn ]= ( hc [0 ]- 65536L ) / 1024 + 55296L ; | |
incr ( hn ) ; | |
hu [hn ]= c % 1024 + 56320L ; | |
hc [hn ]= hc [0 ]% 1024 + 56320L ; | |
incr ( l ) ; | |
} | |
hyfbchar = 65536L ; | |
} | |
} | |
while ( l++ < for_end ) ;} | |
} | |
else { | |
hn = 0 ; | |
while ( true ) { | |
if ( ( s >= himemmin ) ) | |
{ | |
if ( mem [s ].hh.b0 != hf ) | |
goto lab33 ; | |
hyfbchar = mem [s ].hh.b1 ; | |
c = hyfbchar ; | |
if ( ( hyphindex == 0 ) || ( ( c ) > 255 ) ) | |
hc [0 ]= eqtb [3368680L + c ].hh .v.RH ; | |
else if ( trietrc [hyphindex + c ]!= c ) | |
hc [0 ]= 0 ; | |
else hc [0 ]= trietro [hyphindex + c ]; | |
if ( hc [0 ]== 0 ) | |
goto lab33 ; | |
if ( hc [0 ]> maxhyphchar ) | |
goto lab33 ; | |
if ( hn == maxhyphenatablelength () ) | |
goto lab33 ; | |
hb = s ; | |
incr ( hn ) ; | |
hu [hn ]= c ; | |
hc [hn ]= hc [0 ]; | |
hyfbchar = 65536L ; | |
} | |
else if ( mem [s ].hh.b0 == 6 ) | |
{ | |
if ( mem [s + 1 ].hh.b0 != hf ) | |
goto lab33 ; | |
j = hn ; | |
q = mem [s + 1 ].hh .v.RH ; | |
if ( q > -268435455L ) | |
hyfbchar = mem [q ].hh.b1 ; | |
while ( q > -268435455L ) { | |
c = mem [q ].hh.b1 ; | |
if ( ( hyphindex == 0 ) || ( ( c ) > 255 ) ) | |
hc [0 ]= eqtb [3368680L + c ].hh .v.RH ; | |
else if ( trietrc [hyphindex + c ]!= c ) | |
hc [0 ]= 0 ; | |
else hc [0 ]= trietro [hyphindex + c ]; | |
if ( hc [0 ]== 0 ) | |
goto lab33 ; | |
if ( hc [0 ]> maxhyphchar ) | |
goto lab33 ; | |
if ( j == maxhyphenatablelength () ) | |
goto lab33 ; | |
incr ( j ) ; | |
hu [j ]= c ; | |
hc [j ]= hc [0 ]; | |
q = mem [q ].hh .v.RH ; | |
} | |
hb = s ; | |
hn = j ; | |
if ( odd ( mem [s ].hh.b1 ) ) | |
hyfbchar = fontbchar [hf ]; | |
else hyfbchar = 65536L ; | |
} | |
else if ( ( mem [s ].hh.b0 == 11 ) && ( mem [s ].hh.b1 | |
== 0 ) ) | |
{ | |
hb = s ; | |
hyfbchar = fontbchar [hf ]; | |
} | |
else goto lab33 ; | |
s = mem [s ].hh .v.RH ; | |
} | |
lab33: ; | |
} | |
if ( hn < lhyf + rhyf ) | |
goto lab31 ; | |
while ( true ) { | |
if ( ! ( ( s >= himemmin ) ) ) | |
switch ( mem [s ].hh.b0 ) | |
{case 6 : | |
; | |
break ; | |
case 11 : | |
if ( mem [s ].hh.b1 != 0 ) | |
goto lab34 ; | |
break ; | |
case 8 : | |
case 10 : | |
case 12 : | |
case 3 : | |
case 5 : | |
case 4 : | |
goto lab34 ; | |
break ; | |
case 9 : | |
if ( mem [s ].hh.b1 >= 4 ) | |
goto lab34 ; | |
else goto lab31 ; | |
break ; | |
default: | |
goto lab31 ; | |
break ; | |
} | |
s = mem [s ].hh .v.RH ; | |
} | |
lab34: ; | |
hyphenate () ; | |
} | |
lab31: ; | |
} | |
} | |
break ; | |
case 11 : | |
if ( mem [curp ].hh.b1 == 1 ) | |
{ | |
if ( ! ( mem [curp ].hh .v.RH >= himemmin ) && autobreaking ) { | |
if ( mem [mem [curp ].hh .v.RH ].hh.b0 == 10 ) | |
trybreak ( 0 , 0 ) ; | |
} | |
activewidth [1 ]= activewidth [1 ]+ mem [curp + 1 ].cint ; | |
} | |
else activewidth [1 ]= activewidth [1 ]+ mem [curp + 1 ].cint ; | |
break ; | |
case 6 : | |
{ | |
f = mem [curp + 1 ].hh.b0 ; | |
xtxligaturepresent = true ; | |
activewidth [1 ]= activewidth [1 ]+ fontinfo [widthbase [f ]+ | |
fontinfo [charbase [f ]+ effectivechar ( true , f , mem [curp + | |
1 ].hh.b1 ) ].qqqq .b0 ].cint ; | |
} | |
break ; | |
case 7 : | |
{ | |
s = mem [curp + 1 ].hh .v.LH ; | |
discwidth = 0 ; | |
if ( s == -268435455L ) | |
trybreak ( eqtb [8939244L ].cint , 1 ) ; | |
else { | |
do { | |
if ( ( s >= himemmin ) ) | |
{ | |
f = mem [s ].hh.b0 ; | |
discwidth = discwidth + fontinfo [widthbase [f ]+ fontinfo | |
[charbase [f ]+ effectivechar ( true , f , mem [s ].hh.b1 | |
) ].qqqq .b0 ].cint ; | |
} | |
else switch ( mem [s ].hh.b0 ) | |
{case 6 : | |
{ | |
f = mem [s + 1 ].hh.b0 ; | |
xtxligaturepresent = true ; | |
discwidth = discwidth + fontinfo [widthbase [f ]+ | |
fontinfo [charbase [f ]+ effectivechar ( true , f , mem [ | |
s + 1 ].hh.b1 ) ].qqqq .b0 ].cint ; | |
} | |
break ; | |
case 0 : | |
case 1 : | |
case 2 : | |
case 11 : | |
discwidth = discwidth + mem [s + 1 ].cint ; | |
break ; | |
case 8 : | |
if ( ( ( ( mem [s ].hh.b1 >= 40 ) && ( mem [s ].hh.b1 <= | |
41 ) ) ) || ( mem [s ].hh.b1 == 42 ) || ( mem [s ].hh.b1 | |
== 43 ) || ( mem [s ].hh.b1 == 44 ) ) | |
discwidth = discwidth + mem [s + 1 ].cint ; | |
else confusion ( 66364L ) ; | |
break ; | |
default: | |
confusion ( 66365L ) ; | |
break ; | |
} | |
s = mem [s ].hh .v.RH ; | |
} while ( ! ( s == -268435455L ) ) ; | |
activewidth [1 ]= activewidth [1 ]+ discwidth ; | |
trybreak ( eqtb [8939243L ].cint , 1 ) ; | |
activewidth [1 ]= activewidth [1 ]- discwidth ; | |
} | |
r = mem [curp ].hh.b1 ; | |
s = mem [curp ].hh .v.RH ; | |
while ( r > 0 ) { | |
if ( ( s >= himemmin ) ) | |
{ | |
f = mem [s ].hh.b0 ; | |
activewidth [1 ]= activewidth [1 ]+ fontinfo [widthbase [f | |
]+ fontinfo [charbase [f ]+ effectivechar ( true , f , mem [ | |
s ].hh.b1 ) ].qqqq .b0 ].cint ; | |
} | |
else switch ( mem [s ].hh.b0 ) | |
{case 6 : | |
{ | |
f = mem [s + 1 ].hh.b0 ; | |
xtxligaturepresent = true ; | |
activewidth [1 ]= activewidth [1 ]+ fontinfo [widthbase [ | |
f ]+ fontinfo [charbase [f ]+ effectivechar ( true , f , | |
mem [s + 1 ].hh.b1 ) ].qqqq .b0 ].cint ; | |
} | |
break ; | |
case 0 : | |
case 1 : | |
case 2 : | |
case 11 : | |
activewidth [1 ]= activewidth [1 ]+ mem [s + 1 ].cint ; | |
break ; | |
case 8 : | |
if ( ( ( ( mem [s ].hh.b1 >= 40 ) && ( mem [s ].hh.b1 <= 41 | |
) ) ) || ( mem [s ].hh.b1 == 42 ) || ( mem [s ].hh.b1 == 43 | |
) || ( mem [s ].hh.b1 == 44 ) ) | |
activewidth [1 ]= activewidth [1 ]+ mem [s + 1 ].cint ; | |
else confusion ( 66366L ) ; | |
break ; | |
default: | |
confusion ( 66367L ) ; | |
break ; | |
} | |
decr ( r ) ; | |
s = mem [s ].hh .v.RH ; | |
} | |
{ | |
prevp = curp ; | |
globalprevp = curp ; | |
} | |
curp = s ; | |
goto lab35 ; | |
} | |
break ; | |
case 9 : | |
{ | |
if ( mem [curp ].hh.b1 < 4 ) | |
autobreaking = odd ( mem [curp ].hh.b1 ) ; | |
{ | |
if ( ! ( mem [curp ].hh .v.RH >= himemmin ) && autobreaking ) { | |
if ( mem [mem [curp ].hh .v.RH ].hh.b0 == 10 ) | |
trybreak ( 0 , 0 ) ; | |
} | |
activewidth [1 ]= activewidth [1 ]+ mem [curp + 1 ].cint ; | |
} | |
} | |
break ; | |
case 12 : | |
trybreak ( mem [curp + 1 ].cint , 0 ) ; | |
break ; | |
case 4 : | |
case 3 : | |
case 5 : | |
; | |
break ; | |
default: | |
confusion ( 66363L ) ; | |
break ; | |
} | |
{ | |
prevp = curp ; | |
globalprevp = curp ; | |
} | |
curp = mem [curp ].hh .v.RH ; | |
lab35: ; | |
} | |
if ( curp == -268435455L ) | |
{ | |
trybreak ( -10000 , 1 ) ; | |
if ( mem [memtop - 7 ].hh .v.RH != memtop - 7 ) | |
{ | |
r = mem [memtop - 7 ].hh .v.RH ; | |
fewestdemerits = 1073741823L ; | |
do { | |
if ( mem [r ].hh.b0 != 2 ) { | |
if ( mem [r + 2 ].cint < fewestdemerits ) | |
{ | |
fewestdemerits = mem [r + 2 ].cint ; | |
bestbet = r ; | |
} | |
} | |
r = mem [r ].hh .v.RH ; | |
} while ( ! ( r == memtop - 7 ) ) ; | |
bestline = mem [bestbet + 1 ].hh .v.LH ; | |
if ( eqtb [8939259L ].cint == 0 ) | |
goto lab30 ; | |
{ | |
r = mem [memtop - 7 ].hh .v.RH ; | |
actuallooseness = 0 ; | |
do { | |
if ( mem [r ].hh.b0 != 2 ) | |
{ | |
linediff = mem [r + 1 ].hh .v.LH - bestline ; | |
if ( ( ( linediff < actuallooseness ) && ( eqtb [8939259L ] | |
.cint <= linediff ) ) || ( ( linediff > actuallooseness ) && ( | |
eqtb [8939259L ].cint >= linediff ) ) ) | |
{ | |
bestbet = r ; | |
actuallooseness = linediff ; | |
fewestdemerits = mem [r + 2 ].cint ; | |
} | |
else if ( ( linediff == actuallooseness ) && ( mem [r + 2 ] | |
.cint < fewestdemerits ) ) | |
{ | |
bestbet = r ; | |
fewestdemerits = mem [r + 2 ].cint ; | |
} | |
} | |
r = mem [r ].hh .v.RH ; | |
} while ( ! ( r == memtop - 7 ) ) ; | |
bestline = mem [bestbet + 1 ].hh .v.LH ; | |
} | |
if ( ( actuallooseness == eqtb [8939259L ].cint ) || finalpass ) | |
goto lab30 ; | |
} | |
} | |
q = mem [memtop - 7 ].hh .v.RH ; | |
while ( q != memtop - 7 ) { | |
curp = mem [q ].hh .v.RH ; | |
if ( mem [q ].hh.b0 == 2 ) | |
freenode ( q , 7 ) ; | |
else freenode ( q , activenodesize ) ; | |
q = curp ; | |
} | |
q = passive ; | |
while ( q != -268435455L ) { | |
curp = mem [q ].hh .v.RH ; | |
freenode ( q , 2 ) ; | |
q = curp ; | |
} | |
if ( ! secondpass ) | |
{ | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
printnl ( 66361L ) ; | |
#endif /* STAT */ | |
threshold = eqtb [8939241L ].cint ; | |
secondpass = true ; | |
finalpass = ( eqtb [10053713L ].cint <= 0 ) ; | |
} | |
else { | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
printnl ( 66362L ) ; | |
#endif /* STAT */ | |
background [2 ]= background [2 ]+ eqtb [10053713L ].cint ; | |
finalpass = true ; | |
} | |
} | |
lab30: | |
; | |
#ifdef STAT | |
if ( eqtb [8939272L ].cint > 0 ) | |
{ | |
enddiagnostic ( true ) ; | |
normalizeselector () ; | |
} | |
#endif /* STAT */ | |
if ( dolastlinefit ) { | |
if ( mem [bestbet + 3 ].cint == 0 ) | |
dolastlinefit = false ; | |
else { | |
q = newspec ( mem [lastlinefill + 1 ].hh .v.LH ) ; | |
deleteglueref ( mem [lastlinefill + 1 ].hh .v.LH ) ; | |
mem [q + 1 ].cint = mem [q + 1 ].cint + mem [bestbet + 3 ].cint - | |
mem [bestbet + 4 ].cint ; | |
mem [q + 2 ].cint = 0 ; | |
mem [lastlinefill + 1 ].hh .v.LH = q ; | |
} | |
} | |
postlinebreak ( d ) ; | |
q = mem [memtop - 7 ].hh .v.RH ; | |
while ( q != memtop - 7 ) { | |
curp = mem [q ].hh .v.RH ; | |
if ( mem [q ].hh.b0 == 2 ) | |
freenode ( q , 7 ) ; | |
else freenode ( q , activenodesize ) ; | |
q = curp ; | |
} | |
q = passive ; | |
while ( q != -268435455L ) { | |
curp = mem [q ].hh .v.RH ; | |
freenode ( q , 2 ) ; | |
q = curp ; | |
} | |
packbeginline = 0 ; | |
} | |
void | |
newhyphexceptions ( void ) | |
{ | |
/* 21 10 40 45 46 */ newhyphexceptions_regmem | |
short n ; | |
short j ; | |
hyphpointer h ; | |
strnumber k ; | |
halfword p ; | |
halfword q ; | |
strnumber s ; | |
poolpointer u, v ; | |
scanleftbrace () ; | |
if ( eqtb [8939290L ].cint <= 0 ) | |
curlang = 0 ; | |
else if ( eqtb [8939290L ].cint > 255 ) | |
curlang = 0 ; | |
else curlang = eqtb [8939290L ].cint ; | |
; | |
#ifdef INITEX | |
if ( trienotready ) | |
{ | |
hyphindex = 0 ; | |
goto lab46 ; | |
} | |
#endif /* INITEX */ | |
if ( trietrc [hyphstart + curlang ]!= curlang ) | |
hyphindex = 0 ; | |
else hyphindex = trietrl [hyphstart + curlang ]; | |
lab46: n = 0 ; | |
p = -268435455L ; | |
while ( true ) { | |
getxtoken () ; | |
lab21: switch ( curcmd ) | |
{case 11 : | |
case 12 : | |
case 68 : | |
if ( curchr == 45 ) | |
{ | |
if ( n < maxhyphenatablelength () ) | |
{ | |
q = getavail () ; | |
mem [q ].hh .v.RH = p ; | |
mem [q ].hh .v.LH = n ; | |
p = q ; | |
} | |
} | |
else { | |
if ( ( hyphindex == 0 ) || ( ( curchr ) > 255 ) ) | |
hc [0 ]= eqtb [3368680L + curchr ].hh .v.RH ; | |
else if ( trietrc [hyphindex + curchr ]!= curchr ) | |
hc [0 ]= 0 ; | |
else hc [0 ]= trietro [hyphindex + curchr ]; | |
if ( hc [0 ]== 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66374L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66375L ; | |
helpline [0 ]= 66376L ; | |
} | |
error () ; | |
} | |
else if ( n < maxhyphenatablelength () ) | |
{ | |
incr ( n ) ; | |
if ( hc [0 ]< 65536L ) | |
hc [n ]= hc [0 ]; | |
else { | |
hc [n ]= ( hc [0 ]- 65536L ) / 1024 + 55296L ; | |
incr ( n ) ; | |
hc [n ]= hc [0 ]% 1024 + 56320L ; | |
} | |
} | |
} | |
break ; | |
case 16 : | |
{ | |
scancharnum () ; | |
curchr = curval ; | |
curcmd = 68 ; | |
goto lab21 ; | |
} | |
break ; | |
case 10 : | |
case 2 : | |
{ | |
if ( n > 1 ) | |
{ | |
incr ( n ) ; | |
hc [n ]= curlang ; | |
{ | |
if ( poolptr + n > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
h = 0 ; | |
{register integer for_end; j = 1 ;for_end = n ; if ( j <= for_end) | |
do | |
{ | |
h = ( h + h + hc [j ]) % 607 ; | |
{ | |
strpool [poolptr ]= hc [j ]; | |
incr ( poolptr ) ; | |
} | |
} | |
while ( j++ < for_end ) ;} | |
s = makestring () ; | |
if ( hyphnext <= 607 ) | |
while ( ( hyphnext > 0 ) && ( hyphword [hyphnext - 1 ]> 0 ) ) decr | |
( hyphnext ) ; | |
if ( ( hyphcount == hyphsize ) || ( hyphnext == 0 ) ) | |
overflow ( 66377L , hyphsize ) ; | |
incr ( hyphcount ) ; | |
while ( hyphword [h ]!= 0 ) { | |
k = hyphword [h ]; | |
if ( length ( k ) != length ( s ) ) | |
goto lab45 ; | |
u = strstart [( k ) - 65536L ]; | |
v = strstart [( s ) - 65536L ]; | |
do { | |
if ( strpool [u ]!= strpool [v ]) | |
goto lab45 ; | |
incr ( u ) ; | |
incr ( v ) ; | |
} while ( ! ( u == strstart [( k + 1 ) - 65536L ]) ) ; | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
s = hyphword [h ]; | |
decr ( hyphcount ) ; | |
goto lab40 ; | |
lab45: ; | |
if ( hyphlink [h ]== 0 ) | |
{ | |
hyphlink [h ]= hyphnext ; | |
if ( hyphnext >= hyphsize ) | |
hyphnext = 607 ; | |
if ( hyphnext > 607 ) | |
incr ( hyphnext ) ; | |
} | |
h = hyphlink [h ]- 1 ; | |
} | |
lab40: hyphword [h ]= s ; | |
hyphlist [h ]= p ; | |
} | |
if ( curcmd == 2 ) | |
return ; | |
n = 0 ; | |
p = -268435455L ; | |
} | |
break ; | |
default: | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66024L ) ; | |
} | |
printesc ( 66370L ) ; | |
print ( 66371L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66372L ; | |
helpline [0 ]= 66373L ; | |
} | |
error () ; | |
} | |
break ; | |
} | |
} | |
} | |
boolean | |
zdomarks ( smallnumber a , smallnumber l , halfword q ) | |
{ | |
register boolean Result; domarks_regmem | |
smallnumber i ; | |
if ( l < 4 ) | |
{ | |
{register integer for_end; i = 0 ;for_end = 15 ; if ( i <= for_end) do | |
{ | |
if ( odd ( i ) ) | |
curptr = mem [q + ( i / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [q + ( i / 2 ) + 1 ].hh .v.LH ; | |
if ( curptr != -268435455L ) { | |
if ( domarks ( a , l + 1 , curptr ) ) | |
{ | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = -268435455L ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = -268435455L ; | |
decr ( mem [q ].hh.b1 ) ; | |
} | |
} | |
} | |
while ( i++ < for_end ) ;} | |
if ( mem [q ].hh.b1 == 0 ) | |
{ | |
freenode ( q , 33 ) ; | |
q = -268435455L ; | |
} | |
} | |
else { | |
switch ( a ) | |
{case 0 : | |
if ( mem [q + 2 ].hh .v.RH != -268435455L ) | |
{ | |
deletetokenref ( mem [q + 2 ].hh .v.RH ) ; | |
mem [q + 2 ].hh .v.RH = -268435455L ; | |
deletetokenref ( mem [q + 3 ].hh .v.LH ) ; | |
mem [q + 3 ].hh .v.LH = -268435455L ; | |
} | |
break ; | |
case 1 : | |
if ( mem [q + 2 ].hh .v.LH != -268435455L ) | |
{ | |
if ( mem [q + 1 ].hh .v.LH != -268435455L ) | |
deletetokenref ( mem [q + 1 ].hh .v.LH ) ; | |
deletetokenref ( mem [q + 1 ].hh .v.RH ) ; | |
mem [q + 1 ].hh .v.RH = -268435455L ; | |
if ( mem [mem [q + 2 ].hh .v.LH ].hh .v.RH == -268435455L ) | |
{ | |
deletetokenref ( mem [q + 2 ].hh .v.LH ) ; | |
mem [q + 2 ].hh .v.LH = -268435455L ; | |
} | |
else incr ( mem [mem [q + 2 ].hh .v.LH ].hh .v.LH ) ; | |
mem [q + 1 ].hh .v.LH = mem [q + 2 ].hh .v.LH ; | |
} | |
break ; | |
case 2 : | |
if ( ( mem [q + 1 ].hh .v.LH != -268435455L ) && ( mem [q + 1 ].hh | |
.v.RH == -268435455L ) ) | |
{ | |
mem [q + 1 ].hh .v.RH = mem [q + 1 ].hh .v.LH ; | |
incr ( mem [mem [q + 1 ].hh .v.LH ].hh .v.LH ) ; | |
} | |
break ; | |
; | |
#ifdef INITEX | |
case 3 : | |
{register integer for_end; i = 0 ;for_end = 4 ; if ( i <= for_end) do | |
{ | |
if ( odd ( i ) ) | |
curptr = mem [q + ( i / 2 ) + 1 ].hh .v.RH ; | |
else curptr = mem [q + ( i / 2 ) + 1 ].hh .v.LH ; | |
if ( curptr != -268435455L ) | |
{ | |
deletetokenref ( curptr ) ; | |
if ( odd ( i ) ) | |
mem [q + ( i / 2 ) + 1 ].hh .v.RH = -268435455L ; | |
else mem [q + ( i / 2 ) + 1 ].hh .v.LH = -268435455L ; | |
} | |
} | |
while ( i++ < for_end ) ;} | |
break ; | |
#endif /* INITEX */ | |
} | |
if ( mem [q + 2 ].hh .v.LH == -268435455L ) { | |
if ( mem [q + 3 ].hh .v.LH == -268435455L ) | |
{ | |
freenode ( q , 4 ) ; | |
q = -268435455L ; | |
} | |
} | |
} | |
Result = ( q == -268435455L ) ; | |
return Result ; | |
} | |
void | |
prefixedcommand ( void ) | |
{ | |
/* 30 10 */ prefixedcommand_regmem | |
smallnumber a ; | |
internalfontnumber f ; | |
halfword j ; | |
fontindex k ; | |
halfword p, q ; | |
integer n ; | |
boolean e ; | |
a = 0 ; | |
while ( curcmd == 95 ) { | |
if ( ! odd ( a / curchr ) ) | |
a = a + curchr ; | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
if ( curcmd <= 71 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66611L ) ; | |
} | |
printcmdchr ( curcmd , curchr ) ; | |
printchar ( 39 ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66612L ; | |
} | |
if ( ( eTeXmode == 1 ) ) | |
helpline [0 ]= 66613L ; | |
backerror () ; | |
return ; | |
} | |
if ( eqtb [8939276L ].cint > 2 ) { | |
if ( ( eTeXmode == 1 ) ) | |
showcurcmdchr () ; | |
} | |
} | |
if ( a >= 8 ) | |
{ | |
j = 29360129L ; | |
a = a - 8 ; | |
} | |
else j = 0 ; | |
if ( ( curcmd != 99 ) && ( ( a % 4 != 0 ) || ( j != 0 ) ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66029L ) ; | |
} | |
printesc ( 66603L ) ; | |
print ( 66614L ) ; | |
printesc ( 66604L ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66615L ; | |
} | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
helpline [0 ]= 66616L ; | |
print ( 66614L ) ; | |
printesc ( 66617L ) ; | |
} | |
print ( 66618L ) ; | |
printcmdchr ( curcmd , curchr ) ; | |
printchar ( 39 ) ; | |
error () ; | |
} | |
if ( eqtb [8939283L ].cint != 0 ) { | |
if ( eqtb [8939283L ].cint < 0 ) | |
{ | |
if ( ( a >= 4 ) ) | |
a = a - 4 ; | |
} | |
else { | |
if ( ! ( a >= 4 ) ) | |
a = a + 4 ; | |
} | |
} | |
switch ( curcmd ) | |
{case 89 : | |
if ( ( a >= 4 ) ) | |
geqdefine ( 2253799L , 122 , curchr ) ; | |
else eqdefine ( 2253799L , 122 , curchr ) ; | |
break ; | |
case 99 : | |
{ | |
if ( odd ( curchr ) && ! ( a >= 4 ) && ( eqtb [8939283L ].cint >= 0 ) | |
) | |
a = a + 4 ; | |
e = ( curchr >= 2 ) ; | |
getrtoken () ; | |
p = curcs ; | |
q = scantoks ( true , e ) ; | |
if ( j != 0 ) | |
{ | |
q = getavail () ; | |
mem [q ].hh .v.LH = j ; | |
mem [q ].hh .v.RH = mem [defref ].hh .v.RH ; | |
mem [defref ].hh .v.RH = q ; | |
} | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 113 + ( a % 4 ) , defref ) ; | |
else eqdefine ( p , 113 + ( a % 4 ) , defref ) ; | |
} | |
break ; | |
case 96 : | |
{ | |
n = curchr ; | |
getrtoken () ; | |
p = curcs ; | |
if ( n == 0 ) | |
{ | |
do { | |
gettoken () ; | |
} while ( ! ( curcmd != 10 ) ) ; | |
if ( curtok == 25165885L ) | |
{ | |
gettoken () ; | |
if ( curcmd == 10 ) | |
gettoken () ; | |
} | |
} | |
else { | |
gettoken () ; | |
q = curtok ; | |
gettoken () ; | |
backinput () ; | |
curtok = q ; | |
backinput () ; | |
} | |
if ( curcmd >= 113 ) | |
incr ( mem [curchr ].hh .v.LH ) ; | |
else if ( ( curcmd == 91 ) || ( curcmd == 72 ) ) { | |
if ( ( curchr < membot ) || ( curchr > membot + 19 ) ) | |
incr ( mem [curchr + 1 ].hh .v.LH ) ; | |
} | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , curcmd , curchr ) ; | |
else eqdefine ( p , curcmd , curchr ) ; | |
} | |
break ; | |
case 97 : | |
if ( curchr == 7 ) | |
{ | |
scancharnum () ; | |
p = 7825128L + curval ; | |
scanoptionalequals () ; | |
scancharnum () ; | |
n = curval ; | |
scancharnum () ; | |
if ( ( eqtb [8939297L ].cint > 0 ) ) | |
{ | |
begindiagnostic () ; | |
printnl ( 66640L ) ; | |
print ( p - 7825128L ) ; | |
print ( 66641L ) ; | |
print ( n ) ; | |
printchar ( 32 ) ; | |
print ( curval ) ; | |
enddiagnostic ( false ) ; | |
} | |
n = n * 256 + curval ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , n ) ; | |
else eqdefine ( p , 122 , n ) ; | |
if ( ( p - 7825128L ) < eqtb [8939295L ].cint ) { | |
if ( ( a >= 4 ) ) | |
geqworddefine ( 8939295L , p - 7825128L ) ; | |
else eqworddefine ( 8939295L , p - 7825128L ) ; | |
} | |
if ( ( p - 7825128L ) > eqtb [8939296L ].cint ) { | |
if ( ( a >= 4 ) ) | |
geqworddefine ( 8939296L , p - 7825128L ) ; | |
else eqworddefine ( 8939296L , p - 7825128L ) ; | |
} | |
} | |
else { | |
n = curchr ; | |
getrtoken () ; | |
p = curcs ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 0 , 1114112L ) ; | |
else eqdefine ( p , 0 , 1114112L ) ; | |
scanoptionalequals () ; | |
switch ( n ) | |
{case 0 : | |
{ | |
scanusvnum () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 68 , curval ) ; | |
else eqdefine ( p , 68 , curval ) ; | |
} | |
break ; | |
case 1 : | |
{ | |
scanfifteenbitint () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 69 , curval ) ; | |
else eqdefine ( p , 69 , curval ) ; | |
} | |
break ; | |
case 8 : | |
{ | |
scanxetexmathcharint () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 70 , curval ) ; | |
else eqdefine ( p , 70 , curval ) ; | |
} | |
break ; | |
case 9 : | |
{ | |
scanmathclassint () ; | |
n = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
n = n + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
n = n + curval ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 70 , n ) ; | |
else eqdefine ( p , 70 , n ) ; | |
} | |
break ; | |
default: | |
{ | |
scanregisternum () ; | |
if ( curval > 255 ) | |
{ | |
j = n - 2 ; | |
if ( j > 3 ) | |
j = 5 ; | |
findsaelement ( j , curval , true ) ; | |
incr ( mem [curptr + 1 ].hh .v.LH ) ; | |
if ( j == 5 ) | |
j = 72 ; | |
else j = 91 ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , j , curptr ) ; | |
else eqdefine ( p , j , curptr ) ; | |
} | |
else switch ( n ) | |
{case 2 : | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 74 , 8939325L + curval ) ; | |
else eqdefine ( p , 74 , 8939325L + curval ) ; | |
break ; | |
case 3 : | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 75 , 10053716L + curval ) ; | |
else eqdefine ( p , 75 , 10053716L + curval ) ; | |
break ; | |
case 4 : | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 76 , 2252759L + curval ) ; | |
else eqdefine ( p , 76 , 2252759L + curval ) ; | |
break ; | |
case 5 : | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 77 , 2253015L + curval ) ; | |
else eqdefine ( p , 77 , 2253015L + curval ) ; | |
break ; | |
case 6 : | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 73 , 2253283L + curval ) ; | |
else eqdefine ( p , 73 , 2253283L + curval ) ; | |
break ; | |
} | |
} | |
break ; | |
} | |
} | |
break ; | |
case 98 : | |
{ | |
j = curchr ; | |
scanint () ; | |
n = curval ; | |
if ( ! scankeyword ( 66244L ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66501L ) ; | |
} | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66642L ; | |
helpline [0 ]= 66643L ; | |
} | |
error () ; | |
} | |
getrtoken () ; | |
p = curcs ; | |
readtoks ( n , p , j ) ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 113 , curval ) ; | |
else eqdefine ( p , 113 , curval ) ; | |
} | |
break ; | |
case 72 : | |
case 73 : | |
{ | |
q = curcs ; | |
e = false ; | |
if ( curcmd == 72 ) { | |
if ( curchr == membot ) | |
{ | |
scanregisternum () ; | |
if ( curval > 255 ) | |
{ | |
findsaelement ( 5 , curval , true ) ; | |
curchr = curptr ; | |
e = true ; | |
} | |
else curchr = 2253283L + curval ; | |
} | |
else e = true ; | |
} | |
else if ( curchr == 2253282L ) | |
{ | |
scancharclassnotignored () ; | |
curptr = curval ; | |
scancharclassnotignored () ; | |
findsaelement ( 6 , curptr * 4096 + curval , true ) ; | |
curchr = curptr ; | |
e = true ; | |
} | |
p = curchr ; | |
scanoptionalequals () ; | |
do { | |
getxtoken () ; | |
} while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; | |
if ( curcmd != 1 ) { | |
if ( ( curcmd == 72 ) || ( curcmd == 73 ) ) | |
{ | |
if ( curcmd == 72 ) { | |
if ( curchr == membot ) | |
{ | |
scanregisternum () ; | |
if ( curval < 256 ) | |
q = eqtb [2253283L + curval ].hh .v.RH ; | |
else { | |
findsaelement ( 5 , curval , false ) ; | |
if ( curptr == -268435455L ) | |
q = -268435455L ; | |
else q = mem [curptr + 1 ].hh .v.RH ; | |
} | |
} | |
else q = mem [curchr + 1 ].hh .v.RH ; | |
} | |
else if ( curchr == 2253282L ) | |
{ | |
scancharclassnotignored () ; | |
curptr = curval ; | |
scancharclassnotignored () ; | |
findsaelement ( 6 , curptr * 4096 + curval , false ) ; | |
if ( curptr == -268435455L ) | |
q = -268435455L ; | |
else q = mem [curptr + 1 ].hh .v.RH ; | |
} | |
else q = eqtb [curchr ].hh .v.RH ; | |
if ( q == -268435455L ) { | |
if ( e ) { | |
if ( ( a >= 4 ) ) | |
gsadef ( p , -268435455L ) ; | |
else sadef ( p , -268435455L ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqdefine ( p , 103 , -268435455L ) ; | |
else eqdefine ( p , 103 , -268435455L ) ; | |
} | |
else { | |
incr ( mem [q ].hh .v.LH ) ; | |
if ( e ) { | |
if ( ( a >= 4 ) ) | |
gsadef ( p , q ) ; | |
else sadef ( p , q ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqdefine ( p , 113 , q ) ; | |
else eqdefine ( p , 113 , q ) ; | |
} | |
goto lab30 ; | |
} | |
} | |
backinput () ; | |
curcs = q ; | |
q = scantoks ( false , false ) ; | |
if ( mem [defref ].hh .v.RH == -268435455L ) | |
{ | |
if ( e ) { | |
if ( ( a >= 4 ) ) | |
gsadef ( p , -268435455L ) ; | |
else sadef ( p , -268435455L ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqdefine ( p , 103 , -268435455L ) ; | |
else eqdefine ( p , 103 , -268435455L ) ; | |
{ | |
mem [defref ].hh .v.RH = avail ; | |
avail = defref ; | |
; | |
#ifdef STAT | |
decr ( dynused ) ; | |
#endif /* STAT */ | |
} | |
} | |
else { | |
if ( ( p == 2253272L ) && ! e ) | |
{ | |
mem [q ].hh .v.RH = getavail () ; | |
q = mem [q ].hh .v.RH ; | |
mem [q ].hh .v.LH = 4194429L ; | |
q = getavail () ; | |
mem [q ].hh .v.LH = 2097275L ; | |
mem [q ].hh .v.RH = mem [defref ].hh .v.RH ; | |
mem [defref ].hh .v.RH = q ; | |
} | |
if ( e ) { | |
if ( ( a >= 4 ) ) | |
gsadef ( p , defref ) ; | |
else sadef ( p , defref ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqdefine ( p , 113 , defref ) ; | |
else eqdefine ( p , 113 , defref ) ; | |
} | |
} | |
break ; | |
case 74 : | |
{ | |
p = curchr ; | |
scanoptionalequals () ; | |
scanint () ; | |
if ( ( a >= 4 ) ) | |
geqworddefine ( p , curval ) ; | |
else eqworddefine ( p , curval ) ; | |
} | |
break ; | |
case 75 : | |
{ | |
p = curchr ; | |
scanoptionalequals () ; | |
scandimen ( false , false , false ) ; | |
if ( ( a >= 4 ) ) | |
geqworddefine ( p , curval ) ; | |
else eqworddefine ( p , curval ) ; | |
} | |
break ; | |
case 76 : | |
case 77 : | |
{ | |
p = curchr ; | |
n = curcmd ; | |
scanoptionalequals () ; | |
if ( n == 77 ) | |
scanglue ( 3 ) ; | |
else scanglue ( 2 ) ; | |
trapzeroglue () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 119 , curval ) ; | |
else eqdefine ( p , 119 , curval ) ; | |
} | |
break ; | |
case 87 : | |
{ | |
if ( curchr == 5596904L ) | |
{ | |
p = curchr ; | |
scanusvnum () ; | |
p = p + curval ; | |
n = eqtb [5596904L + curval ].hh .v.RH % 65536L ; | |
scanoptionalequals () ; | |
scancharclass () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , curval * 65536L + n ) ; | |
else eqdefine ( p , 122 , curval * 65536L + n ) ; | |
} | |
else if ( curchr == 6711016L ) | |
{ | |
p = curchr ; | |
scanusvnum () ; | |
p = p + curval ; | |
scanoptionalequals () ; | |
scanxetexmathcharint () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , curval ) ; | |
else eqdefine ( p , 122 , curval ) ; | |
} | |
else if ( curchr == 6711017L ) | |
{ | |
p = curchr - 1 ; | |
scanusvnum () ; | |
p = p + curval ; | |
scanoptionalequals () ; | |
scanmathclassint () ; | |
n = setclassfield ( curval ) ; | |
scanmathfamint () ; | |
n = n + setfamilyfield ( curval ) ; | |
scanusvnum () ; | |
n = n + curval ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , n ) ; | |
else eqdefine ( p , 122 , n ) ; | |
} | |
else if ( curchr == 8939581L ) | |
{ | |
p = curchr ; | |
scanusvnum () ; | |
p = p + curval ; | |
scanoptionalequals () ; | |
scanint () ; | |
if ( ( a >= 4 ) ) | |
geqworddefine ( p , curval ) ; | |
else eqworddefine ( p , curval ) ; | |
} | |
else { | |
p = curchr - 1 ; | |
scanusvnum () ; | |
p = p + curval ; | |
scanoptionalequals () ; | |
n = 1073741824L ; | |
scanmathfamint () ; | |
n = n + curval * 2097152L ; | |
scanusvnum () ; | |
n = n + curval ; | |
if ( ( a >= 4 ) ) | |
geqworddefine ( p , n ) ; | |
else eqworddefine ( p , n ) ; | |
} | |
} | |
break ; | |
case 86 : | |
{ | |
if ( curchr == 2254568L ) | |
n = 15 ; | |
else if ( curchr == 6711016L ) | |
n = 32768L ; | |
else if ( curchr == 5596904L ) | |
n = 32767 ; | |
else if ( curchr == 8939581L ) | |
n = 16777215L ; | |
else n = 1114111L ; | |
p = curchr ; | |
scanusvnum () ; | |
p = p + curval ; | |
scanoptionalequals () ; | |
scanint () ; | |
if ( ( ( curval < 0 ) && ( p < 8939581L ) ) || ( curval > n ) ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66122L ) ; | |
} | |
printint ( curval ) ; | |
if ( p < 8939581L ) | |
print ( 66653L ) ; | |
else print ( 66654L ) ; | |
printint ( n ) ; | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66655L ; | |
} | |
error () ; | |
curval = 0 ; | |
} | |
if ( p < 6711016L ) | |
{ | |
if ( p >= 5596904L ) | |
{ | |
n = eqtb [p ].hh .v.RH / 65536L ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , n * 65536L + curval ) ; | |
else eqdefine ( p , 122 , n * 65536L + curval ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , curval ) ; | |
else eqdefine ( p , 122 , curval ) ; | |
} | |
else if ( p < 8939581L ) | |
{ | |
if ( curval == 32768L ) | |
curval = 2097151L ; | |
else curval = setclassfield ( curval / 4096 ) + setfamilyfield ( ( | |
curval % 4096 ) / 256 ) + ( curval % 256 ) ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , curval ) ; | |
else eqdefine ( p , 122 , curval ) ; | |
} | |
else if ( ( a >= 4 ) ) | |
geqworddefine ( p , curval ) ; | |
else eqworddefine ( p , curval ) ; | |
} | |
break ; | |
case 88 : | |
{ | |
p = curchr ; | |
scanmathfamint () ; | |
p = p + curval ; | |
scanoptionalequals () ; | |
scanfontident () ; | |
if ( ( a >= 4 ) ) | |
geqdefine ( p , 122 , curval ) ; | |
else eqdefine ( p , 122 , curval ) ; | |
} | |
break ; | |
case 91 : | |
case 92 : | |
case 93 : | |
case 94 : | |
doregistercommand ( a ) ; | |
break ; | |
case 100 : | |
{ | |
scanregisternum () ; | |
if ( ( a >= 4 ) ) | |
n = 1073774592L + curval ; | |
else n = 1073741824L + curval ; | |
scanoptionalequals () ; | |
if ( setboxallowed ) | |
scanbox ( n ) ; | |
else { | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66024L ) ; | |
} | |
printesc ( 65857L ) ; | |
{ | |
helpptr = 2 ; | |
helpline [1 ]= 66661L ; | |
helpline [0 ]= 66662L ; | |
} | |
error () ; | |
} | |
} | |
break ; | |
case 80 : | |
alteraux () ; | |
break ; | |
case 81 : | |
alterprevgraf () ; | |
break ; | |
case 82 : | |
alterpagesofar () ; | |
break ; | |
case 83 : | |
alterinteger () ; | |
break ; | |
case 84 : | |
alterboxdimen () ; | |
break ; | |
case 85 : | |
{ | |
q = curchr ; | |
scanoptionalequals () ; | |
scanint () ; | |
n = curval ; | |
if ( n <= 0 ) | |
p = -268435455L ; | |
else if ( q > 2253271L ) | |
{ | |
n = ( curval / 2 ) + 1 ; | |
p = getnode ( 2 * n + 1 ) ; | |
mem [p ].hh .v.LH = n ; | |
n = curval ; | |
mem [p + 1 ].cint = n ; | |
{register integer for_end; j = p + 2 ;for_end = p + n + 1 ; if ( j | |
<= for_end) do | |
{ | |
scanint () ; | |
mem [j ].cint = curval ; | |
} | |
while ( j++ < for_end ) ;} | |
if ( ! odd ( n ) ) | |
mem [p + n + 2 ].cint = 0 ; | |
} | |
else { | |
p = getnode ( 2 * n + 1 ) ; | |
mem [p ].hh .v.LH = n ; | |
{register integer for_end; j = 1 ;for_end = n ; if ( j <= for_end) | |
do | |
{ | |
scandimen ( false , false , false ) ; | |
mem [p + 2 * j - 1 ].cint = curval ; | |
scandimen ( false , false , false ) ; | |
mem [p + 2 * j ].cint = curval ; | |
} | |
while ( j++ < for_end ) ;} | |
} | |
if ( ( a >= 4 ) ) | |
geqdefine ( q , 120 , p ) ; | |
else eqdefine ( q , 120 , p ) ; | |
} | |
break ; | |
case 101 : | |
if ( curchr == 1 ) | |
{ | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
newpatterns () ; | |
goto lab30 ; | |
} | |
#endif /* INITEX */ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66666L ) ; | |
} | |
helpptr = 0 ; | |
error () ; | |
do { | |
gettoken () ; | |
} while ( ! ( curcmd == 2 ) ) ; | |
return ; | |
} | |
else { | |
newhyphexceptions () ; | |
goto lab30 ; | |
} | |
break ; | |
case 78 : | |
{ | |
findfontdimen ( true ) ; | |
k = curval ; | |
scanoptionalequals () ; | |
scandimen ( false , false , false ) ; | |
fontinfo [k ].cint = curval ; | |
} | |
break ; | |
case 79 : | |
{ | |
n = curchr ; | |
scanfontident () ; | |
f = curval ; | |
if ( n < 2 ) | |
{ | |
scanoptionalequals () ; | |
scanint () ; | |
if ( n == 0 ) | |
hyphenchar [f ]= curval ; | |
else skewchar [f ]= curval ; | |
} | |
else { | |
if ( ( ( fontarea [f ]== 65535L ) || ( fontarea [f ]== 65534L ) ) | |
) | |
scanglyphnumber ( f ) ; | |
else scancharnum () ; | |
p = curval ; | |
scanoptionalequals () ; | |
scanint () ; | |
switch ( n ) | |
{case 2 : | |
setcpcode ( f , p , 0 , curval ) ; | |
break ; | |
case 3 : | |
setcpcode ( f , p , 1 , curval ) ; | |
break ; | |
} | |
} | |
} | |
break ; | |
case 90 : | |
newfont ( a ) ; | |
break ; | |
case 102 : | |
newinteraction () ; | |
break ; | |
default: | |
confusion ( 66610L ) ; | |
break ; | |
} | |
lab30: if ( aftertoken != 0 ) | |
{ | |
curtok = aftertoken ; | |
backinput () ; | |
aftertoken = 0 ; | |
} | |
} | |
#ifdef INITEX | |
void | |
storefmtfile ( void ) | |
{ | |
/* 41 42 31 32 */ storefmtfile_regmem | |
integer j, k, l ; | |
halfword p, q ; | |
integer x ; | |
char * formatengine ; | |
if ( saveptr != 0 ) | |
{ | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66708L ) ; | |
} | |
{ | |
helpptr = 1 ; | |
helpline [0 ]= 66709L ; | |
} | |
{ | |
if ( interaction == 3 ) | |
interaction = 2 ; | |
if ( logopened ) | |
error () ; | |
; | |
#ifdef TEXMF_DEBUG | |
if ( interaction > 0 ) | |
debughelp () ; | |
#endif /* TEXMF_DEBUG */ | |
history = 3 ; | |
jumpout () ; | |
} | |
} | |
selector = 21 ; | |
print ( 66729L ) ; | |
print ( jobname ) ; | |
printchar ( 32 ) ; | |
printint ( eqtb [8939263L ].cint ) ; | |
printchar ( 46 ) ; | |
printint ( eqtb [8939262L ].cint ) ; | |
printchar ( 46 ) ; | |
printint ( eqtb [8939261L ].cint ) ; | |
printchar ( 41 ) ; | |
if ( interaction == 0 ) | |
selector = 18 ; | |
else selector = 19 ; | |
{ | |
if ( poolptr + 1 > poolsize ) | |
overflow ( 65539L , poolsize - initpoolptr ) ; | |
} | |
formatident = makestring () ; | |
packjobname ( 66170L ) ; | |
while ( ! wopenout ( fmtfile ) ) promptfilename ( 66730L , 66170L ) ; | |
printnl ( 66731L ) ; | |
print ( wmakenamestring ( fmtfile ) ) ; | |
{ | |
decr ( strptr ) ; | |
poolptr = strstart [( strptr ) - 65536L ]; | |
} | |
printnl ( 65626L ) ; | |
print ( formatident ) ; | |
dumpint ( 1462916184L ) ; | |
x = strlen ( enginename ) ; | |
formatengine = xmallocarray ( char , x + 4 ) ; | |
strcpy ( stringcast ( formatengine ) , enginename ) ; | |
{register integer for_end; k = x ;for_end = x + 3 ; if ( k <= for_end) do | |
formatengine [k ]= 0 ; | |
while ( k++ < for_end ) ;} | |
x = x + 4 - ( x % 4 ) ; | |
dumpint ( x ) ; | |
dumpthings ( formatengine [0 ], x ) ; | |
libcfree ( formatengine ) ; | |
dumpint ( 71942406L ) ; | |
dumpint ( 1073741823L ) ; | |
dumpint ( hashhigh ) ; | |
dumpint ( eTeXmode ) ; | |
while ( pseudofiles != -268435455L ) pseudoclose () ; | |
dumpint ( membot ) ; | |
dumpint ( memtop ) ; | |
dumpint ( 10053971L ) ; | |
dumpint ( 8501 ) ; | |
dumpint ( 607 ) ; | |
dumpint ( 1296847960L ) ; | |
if ( mltexp ) | |
dumpint ( 1 ) ; | |
else dumpint ( 0 ) ; | |
dumpint ( poolptr ) ; | |
dumpint ( strptr ) ; | |
dumpthings ( strstart [( 65536L ) - 65536L ], strptr - 65535L ) ; | |
dumpthings ( strpool [0 ], poolptr ) ; | |
println () ; | |
printint ( strptr ) ; | |
print ( 66710L ) ; | |
printint ( poolptr ) ; | |
sortavail () ; | |
varused = 0 ; | |
dumpint ( lomemmax ) ; | |
dumpint ( rover ) ; | |
if ( ( eTeXmode == 1 ) ) | |
{register integer for_end; k = 0 ;for_end = 6 ; if ( k <= for_end) do | |
dumpint ( saroot [k ]) ; | |
while ( k++ < for_end ) ;} | |
p = membot ; | |
q = rover ; | |
x = 0 ; | |
do { | |
dumpthings ( mem [p ], q + 2 - p ) ; | |
x = x + q + 2 - p ; | |
varused = varused + q - p ; | |
p = q + mem [q ].hh .v.LH ; | |
q = mem [q + 1 ].hh .v.RH ; | |
} while ( ! ( q == rover ) ) ; | |
varused = varused + lomemmax - p ; | |
dynused = memend + 1 - himemmin ; | |
dumpthings ( mem [p ], lomemmax + 1 - p ) ; | |
x = x + lomemmax + 1 - p ; | |
dumpint ( himemmin ) ; | |
dumpint ( avail ) ; | |
dumpthings ( mem [himemmin ], memend + 1 - himemmin ) ; | |
x = x + memend + 1 - himemmin ; | |
p = avail ; | |
while ( p != -268435455L ) { | |
decr ( dynused ) ; | |
p = mem [p ].hh .v.RH ; | |
} | |
dumpint ( varused ) ; | |
dumpint ( dynused ) ; | |
println () ; | |
printint ( x ) ; | |
print ( 66711L ) ; | |
printint ( varused ) ; | |
printchar ( 38 ) ; | |
printint ( dynused ) ; | |
k = 1 ; | |
do { | |
j = k ; | |
while ( j < 8939239L ) { | |
if ( ( eqtb [j ].hh .v.RH == eqtb [j + 1 ].hh .v.RH ) && ( eqtb [j | |
].hh.b0 == eqtb [j + 1 ].hh.b0 ) && ( eqtb [j ].hh.b1 == eqtb [j + | |
1 ].hh.b1 ) ) | |
goto lab41 ; | |
incr ( j ) ; | |
} | |
l = 8939240L ; | |
goto lab31 ; | |
lab41: incr ( j ) ; | |
l = j ; | |
while ( j < 8939239L ) { | |
if ( ( eqtb [j ].hh .v.RH != eqtb [j + 1 ].hh .v.RH ) || ( eqtb [j | |
].hh.b0 != eqtb [j + 1 ].hh.b0 ) || ( eqtb [j ].hh.b1 != eqtb [j + | |
1 ].hh.b1 ) ) | |
goto lab31 ; | |
incr ( j ) ; | |
} | |
lab31: dumpint ( l - k ) ; | |
dumpthings ( eqtb [k ], l - k ) ; | |
k = j + 1 ; | |
dumpint ( k - l ) ; | |
} while ( ! ( k == 8939240L ) ) ; | |
do { | |
j = k ; | |
while ( j < 10053971L ) { | |
if ( eqtb [j ].cint == eqtb [j + 1 ].cint ) | |
goto lab42 ; | |
incr ( j ) ; | |
} | |
l = 10053972L ; | |
goto lab32 ; | |
lab42: incr ( j ) ; | |
l = j ; | |
while ( j < 10053971L ) { | |
if ( eqtb [j ].cint != eqtb [j + 1 ].cint ) | |
goto lab32 ; | |
incr ( j ) ; | |
} | |
lab32: dumpint ( l - k ) ; | |
dumpthings ( eqtb [k ], l - k ) ; | |
k = j + 1 ; | |
dumpint ( k - l ) ; | |
} while ( ! ( k > 10053971L ) ) ; | |
if ( hashhigh > 0 ) | |
dumpthings ( eqtb [10053972L ], hashhigh ) ; | |
dumpint ( parloc ) ; | |
dumpint ( writeloc ) ; | |
{register integer for_end; p = 0 ;for_end = 500 ; if ( p <= for_end) do | |
dumphh ( prim [p ]) ; | |
while ( p++ < for_end ) ;} | |
dumpint ( hashused ) ; | |
cscount = 2243225L - hashused + hashhigh ; | |
{register integer for_end; p = 2228226L ;for_end = hashused ; if ( p <= | |
for_end) do | |
if ( hash [p ].v.RH != 0 ) | |
{ | |
dumpint ( p ) ; | |
dumphh ( hash [p ]) ; | |
incr ( cscount ) ; | |
} | |
while ( p++ < for_end ) ;} | |
dumpthings ( hash [hashused + 1 ], 2252738L - hashused ) ; | |
if ( hashhigh > 0 ) | |
dumpthings ( hash [10053972L ], hashhigh ) ; | |
dumpint ( cscount ) ; | |
println () ; | |
printint ( cscount ) ; | |
print ( 66712L ) ; | |
dumpint ( fmemptr ) ; | |
dumpthings ( fontinfo [0 ], fmemptr ) ; | |
dumpint ( fontptr ) ; | |
{ | |
dumpthings ( fontcheck [0 ], fontptr + 1 ) ; | |
dumpthings ( fontsize [0 ], fontptr + 1 ) ; | |
dumpthings ( fontdsize [0 ], fontptr + 1 ) ; | |
dumpthings ( fontparams [0 ], fontptr + 1 ) ; | |
dumpthings ( hyphenchar [0 ], fontptr + 1 ) ; | |
dumpthings ( skewchar [0 ], fontptr + 1 ) ; | |
dumpthings ( fontname [0 ], fontptr + 1 ) ; | |
dumpthings ( fontarea [0 ], fontptr + 1 ) ; | |
dumpthings ( fontbc [0 ], fontptr + 1 ) ; | |
dumpthings ( fontec [0 ], fontptr + 1 ) ; | |
dumpthings ( charbase [0 ], fontptr + 1 ) ; | |
dumpthings ( widthbase [0 ], fontptr + 1 ) ; | |
dumpthings ( heightbase [0 ], fontptr + 1 ) ; | |
dumpthings ( depthbase [0 ], fontptr + 1 ) ; | |
dumpthings ( italicbase [0 ], fontptr + 1 ) ; | |
dumpthings ( ligkernbase [0 ], fontptr + 1 ) ; | |
dumpthings ( kernbase [0 ], fontptr + 1 ) ; | |
dumpthings ( extenbase [0 ], fontptr + 1 ) ; | |
dumpthings ( parambase [0 ], fontptr + 1 ) ; | |
dumpthings ( fontglue [0 ], fontptr + 1 ) ; | |
dumpthings ( bcharlabel [0 ], fontptr + 1 ) ; | |
dumpthings ( fontbchar [0 ], fontptr + 1 ) ; | |
dumpthings ( fontfalsebchar [0 ], fontptr + 1 ) ; | |
{register integer for_end; k = 0 ;for_end = fontptr ; if ( k <= for_end) | |
do | |
{ | |
printnl ( 66716L ) ; | |
printesc ( hash [2243738L + k ].v.RH ) ; | |
printchar ( 61 ) ; | |
if ( ( ( fontarea [k ]== 65535L ) || ( fontarea [k ]== 65534L ) ) | |
|| ( fontmapping [k ]!= 0 ) ) | |
{ | |
printfilename ( fontname [k ], 65626L , 65626L ) ; | |
{ | |
if ( interaction == 3 ) | |
; | |
if ( filelineerrorstylep ) | |
printfileline () ; | |
else printnl ( 65544L ) ; | |
print ( 66717L ) ; | |
} | |
{ | |
helpptr = 3 ; | |
helpline [2 ]= 66718L ; | |
helpline [1 ]= 66719L ; | |
helpline [0 ]= 66720L ; | |
} | |
error () ; | |
} | |
else printfilename ( fontname [k ], fontarea [k ], 65626L ) ; | |
if ( fontsize [k ]!= fontdsize [k ]) | |
{ | |
print ( 66125L ) ; | |
printscaled ( fontsize [k ]) ; | |
print ( 65697L ) ; | |
} | |
} | |
while ( k++ < for_end ) ;} | |
} | |
println () ; | |
printint ( fmemptr - 7 ) ; | |
print ( 66713L ) ; | |
printint ( fontptr - 0 ) ; | |
if ( fontptr != 1 ) | |
print ( 66714L ) ; | |
else print ( 66715L ) ; | |
dumpint ( hyphcount ) ; | |
if ( hyphnext <= 607 ) | |
hyphnext = hyphsize ; | |
dumpint ( hyphnext ) ; | |
{register integer for_end; k = 0 ;for_end = hyphsize ; if ( k <= for_end) | |
do | |
if ( hyphword [k ]!= 0 ) | |
{ | |
dumpint ( k + 65536L * hyphlink [k ]) ; | |
dumpint ( hyphword [k ]) ; | |
dumpint ( hyphlist [k ]) ; | |
} | |
while ( k++ < for_end ) ;} | |
println () ; | |
printint ( hyphcount ) ; | |
if ( hyphcount != 1 ) | |
print ( 66721L ) ; | |
else print ( 66722L ) ; | |
if ( trienotready ) | |
inittrie () ; | |
dumpint ( triemax ) ; | |
dumpint ( hyphstart ) ; | |
dumpthings ( trietrl [0 ], triemax + 1 ) ; | |
dumpthings ( trietro [0 ], triemax + 1 ) ; | |
dumpthings ( trietrc [0 ], triemax + 1 ) ; | |
dumpint ( maxhyphchar ) ; | |
dumpint ( trieopptr ) ; | |
dumpthings ( hyfdistance [1 ], trieopptr ) ; | |
dumpthings ( hyfnum [1 ], trieopptr ) ; | |
dumpthings ( hyfnext [1 ], trieopptr ) ; | |
printnl ( 66723L ) ; | |
printint ( triemax ) ; | |
print ( 66724L ) ; | |
printint ( trieopptr ) ; | |
if ( trieopptr != 1 ) | |
print ( 66725L ) ; | |
else print ( 66726L ) ; | |
print ( 66727L ) ; | |
printint ( trieopsize ) ; | |
{register integer for_end; k = 255 ;for_end = 0 ; if ( k >= for_end) do | |
if ( trieused [k ]> 0 ) | |
{ | |
printnl ( 66187L ) ; | |
printint ( trieused [k ]) ; | |
print ( 66728L ) ; | |
printint ( k ) ; | |
dumpint ( k ) ; | |
dumpint ( trieused [k ]) ; | |
} | |
while ( k-- > for_end ) ;} | |
dumpint ( interaction ) ; | |
dumpint ( formatident ) ; | |
dumpint ( 69069L ) ; | |
eqtb [8939271L ].cint = 0 ; | |
wclose ( fmtfile ) ; | |
} | |
#endif /* INITEX */ | |
boolean | |
loadfmtfile ( void ) | |
{ | |
/* 6666 10 */ register boolean Result; loadfmtfile_regmem | |
integer j, k ; | |
halfword p, q ; | |
integer x ; | |
char * formatengine ; | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
libcfree ( fontinfo ) ; | |
libcfree ( strpool ) ; | |
libcfree ( strstart ) ; | |
libcfree ( yhash ) ; | |
libcfree ( zeqtb ) ; | |
libcfree ( yzmem ) ; | |
} | |
#endif /* INITEX */ | |
undumpint ( x ) ; | |
if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "format magic number" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
if ( x != 1462916184L ) | |
goto lab6666 ; | |
undumpint ( x ) ; | |
if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "engine name size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
if ( ( x < 0 ) || ( x > 256 ) ) | |
goto lab6666 ; | |
formatengine = xmallocarray ( char , x ) ; | |
undumpthings ( formatengine [0 ], x ) ; | |
formatengine [x - 1 ]= 0 ; | |
if ( strcmp ( enginename , stringcast ( formatengine ) ) ) | |
{ | |
; | |
fprintf ( stdout , "%s%s%s%s\n", "---! " , stringcast ( nameoffile + 1 ) , " was written by " , formatengine ) ; | |
libcfree ( formatengine ) ; | |
goto lab6666 ; | |
} | |
libcfree ( formatengine ) ; | |
undumpint ( x ) ; | |
if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "string pool checksum" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
if ( x != 71942406L ) | |
{ | |
; | |
fprintf ( stdout , "%s%s%s\n", "---! " , stringcast ( nameoffile + 1 ) , " made by different executable version" ) ; | |
goto lab6666 ; | |
} | |
undumpint ( x ) ; | |
if ( x != 1073741823L ) | |
goto lab6666 ; | |
undumpint ( hashhigh ) ; | |
if ( ( hashhigh < 0 ) || ( hashhigh > suphashextra ) ) | |
goto lab6666 ; | |
if ( hashextra < hashhigh ) | |
hashextra = hashhigh ; | |
eqtbtop = 10053971L + hashextra ; | |
if ( hashextra == 0 ) | |
hashtop = 2252739L ; | |
else hashtop = eqtbtop ; | |
yhash = xmallocarray ( twohalves , 1 + hashtop - hashoffset ) ; | |
hash = yhash - hashoffset ; | |
hash [2228226L ].v.LH = 0 ; | |
hash [2228226L ].v.RH = 0 ; | |
{register integer for_end; x = 2228227L ;for_end = hashtop ; if ( x <= | |
for_end) do | |
hash [x ]= hash [2228226L ]; | |
while ( x++ < for_end ) ;} | |
zeqtb = xmallocarray ( memoryword , eqtbtop + 1 ) ; | |
eqtb = zeqtb ; | |
eqtb [2252739L ].hh.b0 = 103 ; | |
eqtb [2252739L ].hh .v.RH = -268435455L ; | |
eqtb [2252739L ].hh.b1 = 0 ; | |
{register integer for_end; x = 10053972L ;for_end = eqtbtop ; if ( x <= | |
for_end) do | |
eqtb [x ]= eqtb [2252739L ]; | |
while ( x++ < for_end ) ;} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( x > 1 ) ) | |
goto lab6666 ; | |
else eTeXmode = x ; | |
} | |
if ( ( eTeXmode == 1 ) ) | |
{ | |
maxregnum = 32767 ; | |
maxreghelpline = 66958L ; | |
} | |
else { | |
maxregnum = 255 ; | |
maxreghelpline = 66957L ; | |
} | |
undumpint ( x ) ; | |
if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "mem_bot" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
if ( x != membot ) | |
goto lab6666 ; | |
undumpint ( memtop ) ; | |
if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "mem_top" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)memtop ) ; | |
} | |
if ( membot + 1100 > memtop ) | |
goto lab6666 ; | |
curlist .headfield = memtop - 1 ; | |
curlist .tailfield = memtop - 1 ; | |
pagetail = memtop - 2 ; | |
memmin = membot - extramembot ; | |
memmax = memtop + extramemtop ; | |
yzmem = xmallocarray ( memoryword , memmax - memmin + 1 ) ; | |
zmem = yzmem - memmin ; | |
mem = zmem ; | |
undumpint ( x ) ; | |
if ( x != 10053971L ) | |
goto lab6666 ; | |
undumpint ( x ) ; | |
if ( x != 8501 ) | |
goto lab6666 ; | |
undumpint ( x ) ; | |
if ( x != 607 ) | |
goto lab6666 ; | |
undumpint ( x ) ; | |
if ( x != 1296847960L ) | |
goto lab6666 ; | |
undumpint ( x ) ; | |
if ( x == 1 ) | |
mltexenabledp = true ; | |
else if ( x != 0 ) | |
goto lab6666 ; | |
{ | |
undumpint ( x ) ; | |
if ( x < 0 ) | |
goto lab6666 ; | |
if ( x > suppoolsize - poolfree ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "string pool size" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "string pool size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
poolptr = x ; | |
} | |
if ( poolsize < poolptr + poolfree ) | |
poolsize = poolptr + poolfree ; | |
{ | |
undumpint ( x ) ; | |
if ( x < 0 ) | |
goto lab6666 ; | |
if ( x > supmaxstrings - stringsfree ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "sup strings" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "sup strings" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
strptr = x ; | |
} | |
if ( maxstrings < strptr + stringsfree ) | |
maxstrings = strptr + stringsfree ; | |
strstart = xmallocarray ( poolpointer , maxstrings ) ; | |
undumpcheckedthings ( 0 , poolptr , strstart [( 65536L ) - 65536L ], | |
strptr - 65535L ) ; | |
strpool = xmallocarray ( packedUTF16code , poolsize ) ; | |
undumpthings ( strpool [0 ], poolptr ) ; | |
initstrptr = strptr ; | |
initpoolptr = poolptr ; | |
{ | |
undumpint ( x ) ; | |
if ( ( x < membot + 1019 ) || ( x > memtop - 15 ) ) | |
goto lab6666 ; | |
else lomemmax = x ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < membot + 20 ) || ( x > lomemmax ) ) | |
goto lab6666 ; | |
else rover = x ; | |
} | |
if ( ( eTeXmode == 1 ) ) | |
{register integer for_end; k = 0 ;for_end = 6 ; if ( k <= for_end) do | |
{ | |
undumpint ( x ) ; | |
if ( ( x < -268435455L ) || ( x > lomemmax ) ) | |
goto lab6666 ; | |
else saroot [k ]= x ; | |
} | |
while ( k++ < for_end ) ;} | |
p = membot ; | |
q = rover ; | |
do { | |
undumpthings ( mem [p ], q + 2 - p ) ; | |
p = q + mem [q ].hh .v.LH ; | |
if ( ( p > lomemmax ) || ( ( q >= mem [q + 1 ].hh .v.RH ) && ( mem [q + | |
1 ].hh .v.RH != rover ) ) ) | |
goto lab6666 ; | |
q = mem [q + 1 ].hh .v.RH ; | |
} while ( ! ( q == rover ) ) ; | |
undumpthings ( mem [p ], lomemmax + 1 - p ) ; | |
if ( memmin < membot - 2 ) | |
{ | |
p = mem [rover + 1 ].hh .v.LH ; | |
q = memmin + 1 ; | |
mem [memmin ].hh .v.RH = -268435455L ; | |
mem [memmin ].hh .v.LH = -268435455L ; | |
mem [p + 1 ].hh .v.RH = q ; | |
mem [rover + 1 ].hh .v.LH = q ; | |
mem [q + 1 ].hh .v.RH = rover ; | |
mem [q + 1 ].hh .v.LH = p ; | |
mem [q ].hh .v.RH = 1073741823L ; | |
mem [q ].hh .v.LH = membot - q ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < lomemmax + 1 ) || ( x > memtop - 14 ) ) | |
goto lab6666 ; | |
else himemmin = x ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < -268435455L ) || ( x > memtop ) ) | |
goto lab6666 ; | |
else avail = x ; | |
} | |
memend = memtop ; | |
undumpthings ( mem [himemmin ], memend + 1 - himemmin ) ; | |
undumpint ( varused ) ; | |
undumpint ( dynused ) ; | |
k = 1 ; | |
do { | |
undumpint ( x ) ; | |
if ( ( x < 1 ) || ( k + x > 10053972L ) ) | |
goto lab6666 ; | |
undumpthings ( eqtb [k ], x ) ; | |
k = k + x ; | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( k + x > 10053972L ) ) | |
goto lab6666 ; | |
{register integer for_end; j = k ;for_end = k + x - 1 ; if ( j <= | |
for_end) do | |
eqtb [j ]= eqtb [k - 1 ]; | |
while ( j++ < for_end ) ;} | |
k = k + x ; | |
} while ( ! ( k > 10053971L ) ) ; | |
if ( hashhigh > 0 ) | |
undumpthings ( eqtb [10053972L ], hashhigh ) ; | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 2228226L ) || ( x > hashtop ) ) | |
goto lab6666 ; | |
else parloc = x ; | |
} | |
partoken = 33554431L + parloc ; | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 2228226L ) || ( x > hashtop ) ) | |
goto lab6666 ; | |
else | |
writeloc = x ; | |
} | |
{register integer for_end; p = 0 ;for_end = 500 ; if ( p <= for_end) do | |
undumphh ( prim [p ]) ; | |
while ( p++ < for_end ) ;} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 2228226L ) || ( x > 2243226L ) ) | |
goto lab6666 ; | |
else hashused = x ; | |
} | |
p = 2228225L ; | |
do { | |
{ | |
undumpint ( x ) ; | |
if ( ( x < p + 1 ) || ( x > hashused ) ) | |
goto lab6666 ; | |
else p = x ; | |
} | |
undumphh ( hash [p ]) ; | |
} while ( ! ( p == hashused ) ) ; | |
undumpthings ( hash [hashused + 1 ], 2252738L - hashused ) ; | |
if ( debugformatfile ) | |
{ | |
printcsnames ( 2228226L , 2252738L ) ; | |
} | |
if ( hashhigh > 0 ) | |
{ | |
undumpthings ( hash [10053972L ], hashhigh ) ; | |
if ( debugformatfile ) | |
{ | |
printcsnames ( 10053972L , hashhigh - ( 10053972L ) ) ; | |
} | |
} | |
undumpint ( cscount ) ; | |
{ | |
undumpint ( x ) ; | |
if ( x < 7 ) | |
goto lab6666 ; | |
if ( x > supfontmemsize ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "font mem size" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "font mem size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
fmemptr = x ; | |
} | |
if ( fmemptr > fontmemsize ) | |
fontmemsize = fmemptr ; | |
fontinfo = xmallocarray ( fmemoryword , fontmemsize ) ; | |
undumpthings ( fontinfo [0 ], fmemptr ) ; | |
{ | |
undumpint ( x ) ; | |
if ( x < 0 ) | |
goto lab6666 ; | |
if ( x > 9000 ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "font max" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "font max" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
fontptr = x ; | |
} | |
{ | |
fontmapping = xmallocarray ( voidpointer , fontmax ) ; | |
fontlayoutengine = xmallocarray ( voidpointer , fontmax ) ; | |
fontflags = xmallocarray ( char , fontmax ) ; | |
fontletterspace = xmallocarray ( scaled , fontmax ) ; | |
fontcheck = xmallocarray ( fourquarters , fontmax ) ; | |
fontsize = xmallocarray ( scaled , fontmax ) ; | |
fontdsize = xmallocarray ( scaled , fontmax ) ; | |
fontparams = xmallocarray ( fontindex , fontmax ) ; | |
fontname = xmallocarray ( strnumber , fontmax ) ; | |
fontarea = xmallocarray ( strnumber , fontmax ) ; | |
fontbc = xmallocarray ( UTF16code , fontmax ) ; | |
fontec = xmallocarray ( UTF16code , fontmax ) ; | |
fontglue = xmallocarray ( halfword , fontmax ) ; | |
hyphenchar = xmallocarray ( integer , fontmax ) ; | |
skewchar = xmallocarray ( integer , fontmax ) ; | |
bcharlabel = xmallocarray ( fontindex , fontmax ) ; | |
fontbchar = xmallocarray ( ninebits , fontmax ) ; | |
fontfalsebchar = xmallocarray ( ninebits , fontmax ) ; | |
charbase = xmallocarray ( integer , fontmax ) ; | |
widthbase = xmallocarray ( integer , fontmax ) ; | |
heightbase = xmallocarray ( integer , fontmax ) ; | |
depthbase = xmallocarray ( integer , fontmax ) ; | |
italicbase = xmallocarray ( integer , fontmax ) ; | |
ligkernbase = xmallocarray ( integer , fontmax ) ; | |
kernbase = xmallocarray ( integer , fontmax ) ; | |
extenbase = xmallocarray ( integer , fontmax ) ; | |
parambase = xmallocarray ( integer , fontmax ) ; | |
{register integer for_end; k = 0 ;for_end = fontptr ; if ( k <= for_end) | |
do | |
fontmapping [k ]= 0 ; | |
while ( k++ < for_end ) ;} | |
undumpthings ( fontcheck [0 ], fontptr + 1 ) ; | |
undumpthings ( fontsize [0 ], fontptr + 1 ) ; | |
undumpthings ( fontdsize [0 ], fontptr + 1 ) ; | |
undumpcheckedthings ( -268435455L , 1073741823L , fontparams [0 ], | |
fontptr + 1 ) ; | |
undumpthings ( hyphenchar [0 ], fontptr + 1 ) ; | |
undumpthings ( skewchar [0 ], fontptr + 1 ) ; | |
undumpuppercheckthings ( strptr , fontname [0 ], fontptr + 1 ) ; | |
undumpuppercheckthings ( strptr , fontarea [0 ], fontptr + 1 ) ; | |
undumpthings ( fontbc [0 ], fontptr + 1 ) ; | |
undumpthings ( fontec [0 ], fontptr + 1 ) ; | |
undumpthings ( charbase [0 ], fontptr + 1 ) ; | |
undumpthings ( widthbase [0 ], fontptr + 1 ) ; | |
undumpthings ( heightbase [0 ], fontptr + 1 ) ; | |
undumpthings ( depthbase [0 ], fontptr + 1 ) ; | |
undumpthings ( italicbase [0 ], fontptr + 1 ) ; | |
undumpthings ( ligkernbase [0 ], fontptr + 1 ) ; | |
undumpthings ( kernbase [0 ], fontptr + 1 ) ; | |
undumpthings ( extenbase [0 ], fontptr + 1 ) ; | |
undumpthings ( parambase [0 ], fontptr + 1 ) ; | |
undumpcheckedthings ( -268435455L , lomemmax , fontglue [0 ], fontptr + | |
1 ) ; | |
undumpcheckedthings ( 0 , fmemptr - 1 , bcharlabel [0 ], fontptr + 1 ) ; | |
undumpcheckedthings ( 0 , 65536L , fontbchar [0 ], fontptr + 1 ) ; | |
undumpcheckedthings ( 0 , 65536L , fontfalsebchar [0 ], fontptr + 1 ) ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( x < 0 ) | |
goto lab6666 ; | |
if ( x > hyphsize ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "hyph_size" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "hyph_size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
hyphcount = x ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( x < 607 ) | |
goto lab6666 ; | |
if ( x > hyphsize ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "hyph_size" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "hyph_size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
hyphnext = x ; | |
} | |
j = 0 ; | |
{register integer for_end; k = 1 ;for_end = hyphcount ; if ( k <= for_end) | |
do | |
{ | |
undumpint ( j ) ; | |
if ( j < 0 ) | |
goto lab6666 ; | |
if ( j > 65535L ) | |
{ | |
hyphnext = j / 65536L ; | |
j = j - hyphnext * 65536L ; | |
} | |
else hyphnext = 0 ; | |
if ( ( j >= hyphsize ) || ( hyphnext > hyphsize ) ) | |
goto lab6666 ; | |
hyphlink [j ]= hyphnext ; | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( x > strptr ) ) | |
goto lab6666 ; | |
else hyphword [j ]= x ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < -268435455L ) || ( x > 1073741823L ) ) | |
goto lab6666 ; | |
else hyphlist [j ]= x ; | |
} | |
} | |
while ( k++ < for_end ) ;} | |
incr ( j ) ; | |
if ( j < 607 ) | |
j = 607 ; | |
hyphnext = j ; | |
if ( hyphnext >= hyphsize ) | |
hyphnext = 607 ; | |
else if ( hyphnext >= 607 ) | |
incr ( hyphnext ) ; | |
{ | |
undumpint ( x ) ; | |
if ( x < 0 ) | |
goto lab6666 ; | |
if ( x > triesize ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "trie size" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "trie size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
j = x ; | |
} | |
; | |
#ifdef INITEX | |
triemax = j ; | |
#endif /* INITEX */ | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( x > j ) ) | |
goto lab6666 ; | |
else hyphstart = x ; | |
} | |
if ( ! trietrl ) | |
trietrl = xmallocarray ( triepointer , j + 1 ) ; | |
undumpthings ( trietrl [0 ], j + 1 ) ; | |
if ( ! trietro ) | |
trietro = xmallocarray ( triepointer , j + 1 ) ; | |
undumpthings ( trietro [0 ], j + 1 ) ; | |
if ( ! trietrc ) | |
trietrc = xmallocarray ( quarterword , j + 1 ) ; | |
undumpthings ( trietrc [0 ], j + 1 ) ; | |
undumpint ( maxhyphchar ) ; | |
{ | |
undumpint ( x ) ; | |
if ( x < 0 ) | |
goto lab6666 ; | |
if ( x > trieopsize ) | |
{ | |
; | |
fprintf ( stdout , "%s%s\n", "---! Must increase the " , "trie op size" ) ; | |
goto lab6666 ; | |
} | |
else if ( debugformatfile ) | |
{ | |
fprintf ( stderr , "%s%s", "fmtdebug:" , "trie op size" ) ; | |
fprintf ( stderr , "%s%ld\n", " = " , (long)x ) ; | |
} | |
j = x ; | |
} | |
; | |
#ifdef INITEX | |
trieopptr = j ; | |
#endif /* INITEX */ | |
undumpthings ( hyfdistance [1 ], j ) ; | |
undumpthings ( hyfnum [1 ], j ) ; | |
undumpuppercheckthings ( maxtrieop , hyfnext [1 ], j ) ; | |
; | |
#ifdef INITEX | |
{register integer for_end; k = 0 ;for_end = 255 ; if ( k <= for_end) do | |
trieused [k ]= 0 ; | |
while ( k++ < for_end ) ;} | |
#endif /* INITEX */ | |
k = 256 ; | |
while ( j > 0 ) { | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( x > k - 1 ) ) | |
goto lab6666 ; | |
else k = x ; | |
} | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 1 ) || ( x > j ) ) | |
goto lab6666 ; | |
else x = x ; | |
} | |
; | |
#ifdef INITEX | |
trieused [k ]= x ; | |
#endif /* INITEX */ | |
j = j - x ; | |
opstart [k ]= j ; | |
} | |
; | |
#ifdef INITEX | |
trienotready = false | |
#endif /* INITEX */ | |
; | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( x > 3 ) ) | |
goto lab6666 ; | |
else interaction = x ; | |
} | |
if ( interactionoption != 4 ) | |
interaction = interactionoption ; | |
{ | |
undumpint ( x ) ; | |
if ( ( x < 0 ) || ( x > strptr ) ) | |
goto lab6666 ; | |
else formatident = x ; | |
} | |
undumpint ( x ) ; | |
if ( x != 69069L ) | |
goto lab6666 ; | |
Result = true ; | |
return Result ; | |
lab6666: ; | |
fprintf ( stdout , "%s\n", "(Fatal format file error; I'm stymied)" ) ; | |
Result = false ; | |
return Result ; | |
} | |
void | |
finalcleanup ( void ) | |
{ | |
/* 10 */ finalcleanup_regmem | |
smallnumber c ; | |
c = curchr ; | |
if ( c != 1 ) | |
eqtb [8939289L ].cint = -1 ; | |
if ( jobname == 0 ) | |
openlogfile () ; | |
while ( inputptr > 0 ) if ( curinput .statefield == 0 ) | |
endtokenlist () ; | |
else endfilereading () ; | |
while ( openparens > 0 ) { | |
print ( 66733L ) ; | |
decr ( openparens ) ; | |
} | |
if ( curlevel > 1 ) | |
{ | |
printnl ( 40 ) ; | |
printesc ( 66734L ) ; | |
print ( 66735L ) ; | |
printint ( curlevel - 1 ) ; | |
printchar ( 41 ) ; | |
if ( ( eTeXmode == 1 ) ) | |
showsavegroups () ; | |
} | |
while ( condptr != -268435455L ) { | |
printnl ( 40 ) ; | |
printesc ( 66734L ) ; | |
print ( 66736L ) ; | |
printcmdchr ( 107 , curif ) ; | |
if ( ifline != 0 ) | |
{ | |
print ( 66737L ) ; | |
printint ( ifline ) ; | |
} | |
print ( 66738L ) ; | |
ifline = mem [condptr + 1 ].cint ; | |
curif = mem [condptr ].hh.b1 ; | |
tempptr = condptr ; | |
condptr = mem [condptr ].hh .v.RH ; | |
freenode ( tempptr , 2 ) ; | |
} | |
if ( history != 0 ) { | |
if ( ( ( history == 1 ) || ( interaction < 3 ) ) ) { | |
if ( selector == 19 ) | |
{ | |
selector = 17 ; | |
printnl ( 66739L ) ; | |
selector = 19 ; | |
} | |
} | |
} | |
if ( c == 1 ) | |
{ | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
{register integer for_end; c = 0 ;for_end = 4 ; if ( c <= for_end) do | |
if ( curmark [c ]!= -268435455L ) | |
deletetokenref ( curmark [c ]) ; | |
while ( c++ < for_end ) ;} | |
if ( saroot [7 ]!= -268435455L ) { | |
if ( domarks ( 3 , 0 , saroot [7 ]) ) | |
saroot [7 ]= -268435455L ; | |
} | |
{register integer for_end; c = 2 ;for_end = 3 ; if ( c <= for_end) do | |
flushnodelist ( discptr [c ]) ; | |
while ( c++ < for_end ) ;} | |
if ( lastglue != 1073741823L ) | |
deleteglueref ( lastglue ) ; | |
storefmtfile () ; | |
return ; | |
} | |
#endif /* INITEX */ | |
printnl ( 66740L ) ; | |
return ; | |
} | |
} | |
#ifdef INITEX | |
void | |
initprim ( void ) | |
{ | |
initprim_regmem | |
nonewcontrolsequence = false ; | |
first = 0 ; | |
primitive ( 65675L , 76 , 2252740L ) ; | |
primitive ( 65676L , 76 , 2252741L ) ; | |
primitive ( 65677L , 76 , 2252742L ) ; | |
primitive ( 65678L , 76 , 2252743L ) ; | |
primitive ( 65679L , 76 , 2252744L ) ; | |
primitive ( 65680L , 76 , 2252745L ) ; | |
primitive ( 65681L , 76 , 2252746L ) ; | |
primitive ( 65682L , 76 , 2252747L ) ; | |
primitive ( 65683L , 76 , 2252748L ) ; | |
primitive ( 65684L , 76 , 2252749L ) ; | |
primitive ( 65685L , 76 , 2252750L ) ; | |
primitive ( 65686L , 76 , 2252751L ) ; | |
primitive ( 65687L , 76 , 2252752L ) ; | |
primitive ( 65688L , 76 , 2252753L ) ; | |
primitive ( 65689L , 76 , 2252754L ) ; | |
primitive ( 65690L , 76 , 2252755L ) ; | |
primitive ( 65691L , 77 , 2252756L ) ; | |
primitive ( 65692L , 77 , 2252757L ) ; | |
primitive ( 65693L , 77 , 2252758L ) ; | |
primitive ( 65698L , 73 , 2253272L ) ; | |
primitive ( 65699L , 73 , 2253273L ) ; | |
primitive ( 65700L , 73 , 2253274L ) ; | |
primitive ( 65701L , 73 , 2253275L ) ; | |
primitive ( 65702L , 73 , 2253276L ) ; | |
primitive ( 65703L , 73 , 2253277L ) ; | |
primitive ( 65704L , 73 , 2253278L ) ; | |
primitive ( 65705L , 73 , 2253279L ) ; | |
primitive ( 65706L , 73 , 2253280L ) ; | |
primitive ( 65720L , 74 , 8939240L ) ; | |
primitive ( 65721L , 74 , 8939241L ) ; | |
primitive ( 65722L , 74 , 8939242L ) ; | |
primitive ( 65723L , 74 , 8939243L ) ; | |
primitive ( 65724L , 74 , 8939244L ) ; | |
primitive ( 65725L , 74 , 8939245L ) ; | |
primitive ( 65726L , 74 , 8939246L ) ; | |
primitive ( 65727L , 74 , 8939247L ) ; | |
primitive ( 65728L , 74 , 8939248L ) ; | |
primitive ( 65729L , 74 , 8939249L ) ; | |
primitive ( 65730L , 74 , 8939250L ) ; | |
primitive ( 65731L , 74 , 8939251L ) ; | |
primitive ( 65732L , 74 , 8939252L ) ; | |
primitive ( 65733L , 74 , 8939253L ) ; | |
primitive ( 65734L , 74 , 8939254L ) ; | |
primitive ( 65735L , 74 , 8939255L ) ; | |
primitive ( 65736L , 74 , 8939256L ) ; | |
primitive ( 65737L , 74 , 8939257L ) ; | |
primitive ( 65738L , 74 , 8939258L ) ; | |
primitive ( 65739L , 74 , 8939259L ) ; | |
primitive ( 65740L , 74 , 8939260L ) ; | |
primitive ( 65741L , 74 , 8939261L ) ; | |
primitive ( 65742L , 74 , 8939262L ) ; | |
primitive ( 65743L , 74 , 8939263L ) ; | |
primitive ( 65744L , 74 , 8939264L ) ; | |
primitive ( 65745L , 74 , 8939265L ) ; | |
primitive ( 65746L , 74 , 8939266L ) ; | |
primitive ( 65747L , 74 , 8939267L ) ; | |
primitive ( 65748L , 74 , 8939268L ) ; | |
primitive ( 65749L , 74 , 8939269L ) ; | |
primitive ( 65750L , 74 , 8939270L ) ; | |
primitive ( 65751L , 74 , 8939271L ) ; | |
primitive ( 65752L , 74 , 8939272L ) ; | |
primitive ( 65753L , 74 , 8939273L ) ; | |
primitive ( 65754L , 74 , 8939274L ) ; | |
primitive ( 65755L , 74 , 8939275L ) ; | |
primitive ( 65756L , 74 , 8939276L ) ; | |
primitive ( 65757L , 74 , 8939277L ) ; | |
primitive ( 65758L , 74 , 8939278L ) ; | |
primitive ( 65759L , 74 , 8939279L ) ; | |
primitive ( 65760L , 74 , 8939280L ) ; | |
primitive ( 65761L , 74 , 8939281L ) ; | |
primitive ( 65762L , 74 , 8939282L ) ; | |
primitive ( 65763L , 74 , 8939283L ) ; | |
primitive ( 65764L , 74 , 8939284L ) ; | |
primitive ( 65765L , 74 , 8939285L ) ; | |
primitive ( 65766L , 74 , 8939286L ) ; | |
primitive ( 65767L , 74 , 8939287L ) ; | |
primitive ( 65768L , 74 , 8939288L ) ; | |
primitive ( 65769L , 74 , 8939289L ) ; | |
primitive ( 65770L , 74 , 8939290L ) ; | |
primitive ( 65771L , 74 , 8939291L ) ; | |
primitive ( 65772L , 74 , 8939292L ) ; | |
primitive ( 65773L , 74 , 8939293L ) ; | |
primitive ( 65774L , 74 , 8939294L ) ; | |
if ( mltexp ) | |
{ | |
mltexenabledp = true ; | |
if ( false ) | |
primitive ( 65775L , 74 , 8939295L ) ; | |
primitive ( 65776L , 74 , 8939296L ) ; | |
primitive ( 65777L , 74 , 8939297L ) ; | |
} | |
primitive ( 65778L , 74 , 8939298L ) ; | |
primitive ( 65779L , 74 , 8939310L ) ; | |
primitive ( 65780L , 74 , 8939311L ) ; | |
primitive ( 65784L , 75 , 10053693L ) ; | |
primitive ( 65785L , 75 , 10053694L ) ; | |
primitive ( 65786L , 75 , 10053695L ) ; | |
primitive ( 65787L , 75 , 10053696L ) ; | |
primitive ( 65788L , 75 , 10053697L ) ; | |
primitive ( 65789L , 75 , 10053698L ) ; | |
primitive ( 65790L , 75 , 10053699L ) ; | |
primitive ( 65791L , 75 , 10053700L ) ; | |
primitive ( 65792L , 75 , 10053701L ) ; | |
primitive ( 65793L , 75 , 10053702L ) ; | |
primitive ( 65794L , 75 , 10053703L ) ; | |
primitive ( 65795L , 75 , 10053704L ) ; | |
primitive ( 65796L , 75 , 10053705L ) ; | |
primitive ( 65797L , 75 , 10053706L ) ; | |
primitive ( 65798L , 75 , 10053707L ) ; | |
primitive ( 65799L , 75 , 10053708L ) ; | |
primitive ( 65800L , 75 , 10053709L ) ; | |
primitive ( 65801L , 75 , 10053710L ) ; | |
primitive ( 65802L , 75 , 10053711L ) ; | |
primitive ( 65803L , 75 , 10053712L ) ; | |
primitive ( 65804L , 75 , 10053713L ) ; | |
primitive ( 65805L , 75 , 10053714L ) ; | |
primitive ( 65806L , 75 , 10053715L ) ; | |
primitive ( 32 , 64 , 0 ) ; | |
primitive ( 47 , 44 , 0 ) ; | |
primitive ( 65818L , 45 , 0 ) ; | |
primitive ( 65819L , 92 , 0 ) ; | |
primitive ( 65820L , 40 , 0 ) ; | |
primitive ( 65821L , 41 , 0 ) ; | |
primitive ( 65822L , 61 , 0 ) ; | |
primitive ( 65823L , 16 , 0 ) ; | |
primitive ( 65814L , 109 , 0 ) ; | |
primitive ( 65824L , 15 , 0 ) ; | |
primitive ( 65825L , 15 , 1 ) ; | |
primitive ( 65826L , 15 , 1 ) ; | |
primitive ( 65827L , 94 , 0 ) ; | |
primitive ( 65815L , 67 , 0 ) ; | |
primitive ( 65828L , 62 , 0 ) ; | |
hash [2243228L ].v.RH = 65828L ; | |
eqtb [2243228L ]= eqtb [curval ]; | |
primitive ( 65829L , 104 , 0 ) ; | |
primitive ( 65830L , 90 , 0 ) ; | |
primitive ( 65831L , 78 , 0 ) ; | |
primitive ( 65832L , 32 , 0 ) ; | |
primitive ( 65833L , 36 , 0 ) ; | |
primitive ( 65834L , 39 , 0 ) ; | |
primitive ( 65618L , 37 , 0 ) ; | |
primitive ( 65641L , 18 , 0 ) ; | |
primitive ( 65835L , 46 , 0 ) ; | |
primitive ( 65836L , 46 , 1 ) ; | |
primitive ( 65837L , 46 , 1 ) ; | |
primitive ( 65838L , 17 , 0 ) ; | |
primitive ( 65839L , 17 , 1 ) ; | |
primitive ( 65840L , 17 , 1 ) ; | |
primitive ( 65841L , 17 , 2 ) ; | |
primitive ( 65842L , 17 , 2 ) ; | |
primitive ( 65843L , 54 , 0 ) ; | |
primitive ( 65844L , 93 , 0 ) ; | |
primitive ( 65845L , 34 , 0 ) ; | |
primitive ( 65846L , 65 , 0 ) ; | |
primitive ( 65847L , 105 , 0 ) ; | |
primitive ( 65811L , 105 , 1 ) ; | |
primitive ( 65623L , 55 , 0 ) ; | |
primitive ( 65848L , 63 , 0 ) ; | |
primitive ( 65849L , 85 , 2253271L ) ; | |
primitive ( 65850L , 42 , 0 ) ; | |
primitive ( 65851L , 81 , 0 ) ; | |
primitive ( 65852L , 66 , 0 ) ; | |
primitive ( 65853L , 66 , 1 ) ; | |
primitive ( 65854L , 66 , 1 ) ; | |
primitive ( 65855L , 98 , 0 ) ; | |
primitive ( 65856L , 0 , 1114112L ) ; | |
hash [2243233L ].v.RH = 65856L ; | |
eqtb [2243233L ]= eqtb [curval ]; | |
primitive ( 65857L , 100 , 0 ) ; | |
primitive ( 65858L , 111 , 0 ) ; | |
primitive ( 65707L , 72 , membot ) ; | |
primitive ( 65642L , 38 , 0 ) ; | |
primitive ( 65859L , 33 , 0 ) ; | |
primitive ( 65860L , 56 , 0 ) ; | |
primitive ( 65861L , 35 , 0 ) ; | |
primitive ( 65922L , 13 , 1114112L ) ; | |
parloc = curval ; | |
partoken = 33554431L + parloc ; | |
primitive ( 65957L , 106 , 0 ) ; | |
primitive ( 65958L , 106 , 1 ) ; | |
primitive ( 65959L , 112 , 0 ) ; | |
primitive ( 65960L , 112 , 1 ) ; | |
primitive ( 65961L , 112 , 2 ) ; | |
primitive ( 65962L , 112 , 3 ) ; | |
primitive ( 65963L , 112 , 4 ) ; | |
primitive ( 65782L , 91 , membot + 0 ) ; | |
primitive ( 65808L , 91 , membot + 1 ) ; | |
primitive ( 65695L , 91 , membot + 2 ) ; | |
primitive ( 65696L , 91 , membot + 3 ) ; | |
primitive ( 66007L , 80 , 104 ) ; | |
primitive ( 66008L , 80 , 1 ) ; | |
primitive ( 66009L , 83 , 0 ) ; | |
primitive ( 66010L , 83 , 1 ) ; | |
primitive ( 66011L , 84 , 1 ) ; | |
primitive ( 66012L , 84 , 3 ) ; | |
primitive ( 66013L , 84 , 2 ) ; | |
primitive ( 66014L , 71 , 0 ) ; | |
primitive ( 66015L , 71 , 1 ) ; | |
primitive ( 66016L , 71 , 2 ) ; | |
primitive ( 66017L , 71 , 4 ) ; | |
primitive ( 66018L , 71 , 5 ) ; | |
primitive ( 66019L , 71 , 12 ) ; | |
primitive ( 66020L , 71 , 13 ) ; | |
primitive ( 66021L , 71 , 16 ) ; | |
primitive ( 66022L , 71 , 17 ) ; | |
primitive ( 66023L , 71 , 18 ) ; | |
primitive ( 66091L , 110 , 0 ) ; | |
primitive ( 66092L , 110 , 1 ) ; | |
primitive ( 66093L , 110 , 2 ) ; | |
primitive ( 66094L , 110 , 3 ) ; | |
primitive ( 66095L , 110 , 4 ) ; | |
primitive ( 66096L , 110 , 6 ) ; | |
primitive ( 66097L , 110 , 16 ) ; | |
primitive ( 66098L , 110 , 17 ) ; | |
primitive ( 66099L , 110 , 22 ) ; | |
primitive ( 66100L , 110 , 23 ) ; | |
primitive ( 66101L , 110 , 24 ) ; | |
primitive ( 66102L , 110 , 25 ) ; | |
primitive ( 66103L , 110 , 26 ) ; | |
primitive ( 66104L , 110 , 18 ) ; | |
primitive ( 66105L , 110 , 29 ) ; | |
primitive ( 66106L , 110 , 30 ) ; | |
primitive ( 66107L , 110 , 40 ) ; | |
primitive ( 66108L , 110 , 38 ) ; | |
primitive ( 66109L , 110 , 39 ) ; | |
primitive ( 66141L , 107 , 0 ) ; | |
primitive ( 66142L , 107 , 1 ) ; | |
primitive ( 66143L , 107 , 2 ) ; | |
primitive ( 66144L , 107 , 3 ) ; | |
primitive ( 66145L , 107 , 4 ) ; | |
primitive ( 66146L , 107 , 5 ) ; | |
primitive ( 66147L , 107 , 6 ) ; | |
primitive ( 66148L , 107 , 7 ) ; | |
primitive ( 66149L , 107 , 8 ) ; | |
primitive ( 66150L , 107 , 9 ) ; | |
primitive ( 66151L , 107 , 10 ) ; | |
primitive ( 66152L , 107 , 11 ) ; | |
primitive ( 66153L , 107 , 12 ) ; | |
primitive ( 66154L , 107 , 13 ) ; | |
primitive ( 66155L , 107 , 14 ) ; | |
primitive ( 66156L , 107 , 15 ) ; | |
primitive ( 66157L , 107 , 16 ) ; | |
primitive ( 66158L , 107 , 21 ) ; | |
primitive ( 66160L , 108 , 2 ) ; | |
hash [2243230L ].v.RH = 66160L ; | |
eqtb [2243230L ]= eqtb [curval ]; | |
primitive ( 66161L , 108 , 4 ) ; | |
primitive ( 66162L , 108 , 3 ) ; | |
primitive ( 66189L , 89 , 0 ) ; | |
hash [2243738L ].v.RH = 66189L ; | |
eqtb [2243738L ]= eqtb [curval ]; | |
primitive ( 66319L , 4 , 1114113L ) ; | |
primitive ( 66320L , 5 , 1114114L ) ; | |
hash [2243227L ].v.RH = 66320L ; | |
eqtb [2243227L ]= eqtb [curval ]; | |
primitive ( 66321L , 5 , 1114115L ) ; | |
hash [2243231L ].v.RH = 66322L ; | |
hash [2243232L ].v.RH = 66322L ; | |
eqtb [2243232L ].hh.b0 = 9 ; | |
eqtb [2243232L ].hh .v.RH = memtop - 11 ; | |
eqtb [2243232L ].hh.b1 = 1 ; | |
eqtb [2243231L ]= eqtb [2243232L ]; | |
eqtb [2243231L ].hh.b0 = 117 ; | |
primitive ( 66399L , 82 , 0 ) ; | |
primitive ( 66400L , 82 , 1 ) ; | |
primitive ( 66401L , 82 , 2 ) ; | |
primitive ( 66402L , 82 , 3 ) ; | |
primitive ( 66403L , 82 , 4 ) ; | |
primitive ( 66404L , 82 , 5 ) ; | |
primitive ( 66405L , 82 , 6 ) ; | |
primitive ( 66406L , 82 , 7 ) ; | |
primitive ( 65631L , 14 , 0 ) ; | |
primitive ( 66453L , 14 , 1 ) ; | |
primitive ( 66454L , 26 , 4 ) ; | |
primitive ( 66455L , 26 , 0 ) ; | |
primitive ( 66456L , 26 , 1 ) ; | |
primitive ( 66457L , 26 , 2 ) ; | |
primitive ( 66458L , 26 , 3 ) ; | |
primitive ( 66459L , 27 , 4 ) ; | |
primitive ( 66460L , 27 , 0 ) ; | |
primitive ( 66461L , 27 , 1 ) ; | |
primitive ( 66462L , 27 , 2 ) ; | |
primitive ( 66463L , 27 , 3 ) ; | |
primitive ( 65624L , 28 , 5 ) ; | |
primitive ( 65603L , 29 , 1 ) ; | |
primitive ( 65630L , 30 , 99 ) ; | |
primitive ( 66481L , 21 , 1 ) ; | |
primitive ( 66482L , 21 , 0 ) ; | |
primitive ( 66483L , 22 , 1 ) ; | |
primitive ( 66484L , 22 , 0 ) ; | |
primitive ( 65709L , 20 , 0 ) ; | |
primitive ( 66485L , 20 , 1 ) ; | |
primitive ( 66486L , 20 , 2 ) ; | |
primitive ( 66394L , 20 , 3 ) ; | |
primitive ( 66487L , 20 , 4 ) ; | |
primitive ( 66396L , 20 , 5 ) ; | |
primitive ( 66488L , 20 , 108 ) ; | |
primitive ( 66489L , 31 , 99 ) ; | |
primitive ( 66490L , 31 , 100 ) ; | |
primitive ( 66491L , 31 , 101 ) ; | |
primitive ( 66492L , 31 , 102 ) ; | |
primitive ( 66508L , 43 , 1 ) ; | |
primitive ( 66509L , 43 , 0 ) ; | |
primitive ( 66519L , 25 , 12 ) ; | |
primitive ( 66520L , 25 , 11 ) ; | |
primitive ( 66521L , 25 , 10 ) ; | |
primitive ( 66522L , 23 , 0 ) ; | |
primitive ( 66523L , 23 , 1 ) ; | |
primitive ( 66524L , 24 , 0 ) ; | |
primitive ( 66525L , 24 , 1 ) ; | |
primitive ( 45 , 47 , 1 ) ; | |
primitive ( 65639L , 47 , 0 ) ; | |
primitive ( 66556L , 48 , 0 ) ; | |
primitive ( 66557L , 48 , 1 ) ; | |
primitive ( 66269L , 50 , 16 ) ; | |
primitive ( 66270L , 50 , 17 ) ; | |
primitive ( 66271L , 50 , 18 ) ; | |
primitive ( 66272L , 50 , 19 ) ; | |
primitive ( 66273L , 50 , 20 ) ; | |
primitive ( 66274L , 50 , 21 ) ; | |
primitive ( 66275L , 50 , 22 ) ; | |
primitive ( 66276L , 50 , 23 ) ; | |
primitive ( 66278L , 50 , 26 ) ; | |
primitive ( 66277L , 50 , 27 ) ; | |
primitive ( 66558L , 51 , 0 ) ; | |
primitive ( 66282L , 51 , 1 ) ; | |
primitive ( 66283L , 51 , 2 ) ; | |
primitive ( 66264L , 53 , 0 ) ; | |
primitive ( 66265L , 53 , 2 ) ; | |
primitive ( 66266L , 53 , 4 ) ; | |
primitive ( 66267L , 53 , 6 ) ; | |
primitive ( 66578L , 52 , 0 ) ; | |
primitive ( 66579L , 52 , 1 ) ; | |
primitive ( 66580L , 52 , 2 ) ; | |
primitive ( 66581L , 52 , 3 ) ; | |
primitive ( 66582L , 52 , 4 ) ; | |
primitive ( 66583L , 52 , 5 ) ; | |
primitive ( 66279L , 49 , 30 ) ; | |
primitive ( 66280L , 49 , 31 ) ; | |
hash [2243229L ].v.RH = 66280L ; | |
eqtb [2243229L ]= eqtb [curval ]; | |
primitive ( 66603L , 95 , 1 ) ; | |
primitive ( 66604L , 95 , 2 ) ; | |
primitive ( 66605L , 95 , 4 ) ; | |
primitive ( 66606L , 99 , 0 ) ; | |
primitive ( 66607L , 99 , 1 ) ; | |
primitive ( 66608L , 99 , 2 ) ; | |
primitive ( 66609L , 99 , 3 ) ; | |
primitive ( 66626L , 96 , 0 ) ; | |
primitive ( 66627L , 96 , 1 ) ; | |
primitive ( 66628L , 97 , 0 ) ; | |
primitive ( 66629L , 97 , 1 ) ; | |
primitive ( 66630L , 97 , 8 ) ; | |
primitive ( 66631L , 97 , 8 ) ; | |
primitive ( 66632L , 97 , 9 ) ; | |
primitive ( 66633L , 97 , 9 ) ; | |
primitive ( 66634L , 97 , 2 ) ; | |
primitive ( 66635L , 97 , 3 ) ; | |
primitive ( 66636L , 97 , 4 ) ; | |
primitive ( 66637L , 97 , 5 ) ; | |
primitive ( 66638L , 97 , 6 ) ; | |
if ( mltexp ) | |
{ | |
primitive ( 66639L , 97 , 7 ) ; | |
} | |
primitive ( 65715L , 86 , 2254568L ) ; | |
primitive ( 65719L , 86 , 6711016L ) ; | |
primitive ( 66644L , 87 , 6711016L ) ; | |
primitive ( 66645L , 87 , 6711016L ) ; | |
primitive ( 66646L , 87 , 6711017L ) ; | |
primitive ( 66647L , 87 , 6711017L ) ; | |
primitive ( 65716L , 86 , 3368680L ) ; | |
primitive ( 65717L , 86 , 4482792L ) ; | |
primitive ( 65718L , 86 , 5596904L ) ; | |
primitive ( 66648L , 87 , 5596904L ) ; | |
primitive ( 65783L , 86 , 8939581L ) ; | |
primitive ( 66649L , 87 , 8939581L ) ; | |
primitive ( 66650L , 87 , 8939581L ) ; | |
primitive ( 66651L , 87 , 8939582L ) ; | |
primitive ( 66652L , 87 , 8939582L ) ; | |
primitive ( 65712L , 88 , 2253800L ) ; | |
primitive ( 65713L , 88 , 2254056L ) ; | |
primitive ( 65714L , 88 , 2254312L ) ; | |
primitive ( 66370L , 101 , 0 ) ; | |
primitive ( 66382L , 101 , 1 ) ; | |
primitive ( 66667L , 79 , 0 ) ; | |
primitive ( 66668L , 79 , 1 ) ; | |
primitive ( 66669L , 79 , 2 ) ; | |
primitive ( 66670L , 79 , 3 ) ; | |
primitive ( 65554L , 102 , 0 ) ; | |
primitive ( 65555L , 102 , 1 ) ; | |
primitive ( 65556L , 102 , 2 ) ; | |
primitive ( 66679L , 102 , 3 ) ; | |
primitive ( 66680L , 60 , 1 ) ; | |
primitive ( 66681L , 60 , 0 ) ; | |
primitive ( 66682L , 58 , 0 ) ; | |
primitive ( 66683L , 58 , 1 ) ; | |
primitive ( 66689L , 57 , 3368680L ) ; | |
primitive ( 66690L , 57 , 4482792L ) ; | |
primitive ( 66691L , 19 , 0 ) ; | |
primitive ( 66692L , 19 , 1 ) ; | |
primitive ( 66693L , 19 , 2 ) ; | |
primitive ( 66694L , 19 , 3 ) ; | |
primitive ( 66742L , 59 , 0 ) ; | |
primitive ( 65919L , 59 , 1 ) ; | |
writeloc = curval ; | |
primitive ( 66743L , 59 , 2 ) ; | |
primitive ( 66744L , 59 , 3 ) ; | |
hash [2243236L ].v.RH = 66744L ; | |
eqtb [2243236L ]= eqtb [curval ]; | |
primitive ( 66745L , 59 , 4 ) ; | |
primitive ( 66746L , 59 , 5 ) ; | |
primitive ( 66747L , 59 , 31 ) ; | |
primitive ( 66748L , 59 , 33 ) ; | |
primitive ( 66970L , 74 , 8939324L ) ; | |
nonewcontrolsequence = true ; | |
} | |
#endif /* INITEX */ | |
void | |
mainbody ( void ) | |
{ | |
mainbody_regmem | |
bounddefault = 0 ; | |
boundname = "mem_bot" ; | |
setupboundvariable ( addressof ( membot ) , boundname , bounddefault ) ; | |
bounddefault = 250000L ; | |
boundname = "main_memory" ; | |
setupboundvariable ( addressof ( mainmemory ) , boundname , bounddefault ) ; | |
bounddefault = 0 ; | |
boundname = "extra_mem_top" ; | |
setupboundvariable ( addressof ( extramemtop ) , boundname , bounddefault ) | |
; | |
bounddefault = 0 ; | |
boundname = "extra_mem_bot" ; | |
setupboundvariable ( addressof ( extramembot ) , boundname , bounddefault ) | |
; | |
bounddefault = 200000L ; | |
boundname = "pool_size" ; | |
setupboundvariable ( addressof ( poolsize ) , boundname , bounddefault ) ; | |
bounddefault = 75000L ; | |
boundname = "string_vacancies" ; | |
setupboundvariable ( addressof ( stringvacancies ) , boundname , | |
bounddefault ) ; | |
bounddefault = 5000 ; | |
boundname = "pool_free" ; | |
setupboundvariable ( addressof ( poolfree ) , boundname , bounddefault ) ; | |
bounddefault = 15000 ; | |
boundname = "max_strings" ; | |
setupboundvariable ( addressof ( maxstrings ) , boundname , bounddefault ) ; | |
maxstrings = maxstrings + 65536L ; | |
bounddefault = 100 ; | |
boundname = "strings_free" ; | |
setupboundvariable ( addressof ( stringsfree ) , boundname , bounddefault ) | |
; | |
bounddefault = 100000L ; | |
boundname = "font_mem_size" ; | |
setupboundvariable ( addressof ( fontmemsize ) , boundname , bounddefault ) | |
; | |
bounddefault = 500 ; | |
boundname = "font_max" ; | |
setupboundvariable ( addressof ( fontmax ) , boundname , bounddefault ) ; | |
bounddefault = 20000 ; | |
boundname = "trie_size" ; | |
setupboundvariable ( addressof ( triesize ) , boundname , bounddefault ) ; | |
bounddefault = 659 ; | |
boundname = "hyph_size" ; | |
setupboundvariable ( addressof ( hyphsize ) , boundname , bounddefault ) ; | |
bounddefault = 3000 ; | |
boundname = "buf_size" ; | |
setupboundvariable ( addressof ( bufsize ) , boundname , bounddefault ) ; | |
bounddefault = 50 ; | |
boundname = "nest_size" ; | |
setupboundvariable ( addressof ( nestsize ) , boundname , bounddefault ) ; | |
bounddefault = 15 ; | |
boundname = "max_in_open" ; | |
setupboundvariable ( addressof ( maxinopen ) , boundname , bounddefault ) ; | |
bounddefault = 60 ; | |
boundname = "param_size" ; | |
setupboundvariable ( addressof ( paramsize ) , boundname , bounddefault ) ; | |
bounddefault = 4000 ; | |
boundname = "save_size" ; | |
setupboundvariable ( addressof ( savesize ) , boundname , bounddefault ) ; | |
bounddefault = 300 ; | |
boundname = "stack_size" ; | |
setupboundvariable ( addressof ( stacksize ) , boundname , bounddefault ) ; | |
bounddefault = 16384 ; | |
boundname = "dvi_buf_size" ; | |
setupboundvariable ( addressof ( dvibufsize ) , boundname , bounddefault ) ; | |
bounddefault = 79 ; | |
boundname = "error_line" ; | |
setupboundvariable ( addressof ( errorline ) , boundname , bounddefault ) ; | |
bounddefault = 50 ; | |
boundname = "half_error_line" ; | |
setupboundvariable ( addressof ( halferrorline ) , boundname , bounddefault | |
) ; | |
bounddefault = 79 ; | |
boundname = "max_print_line" ; | |
setupboundvariable ( addressof ( maxprintline ) , boundname , bounddefault ) | |
; | |
bounddefault = 0 ; | |
boundname = "hash_extra" ; | |
setupboundvariable ( addressof ( hashextra ) , boundname , bounddefault ) ; | |
bounddefault = 10000 ; | |
boundname = "expand_depth" ; | |
setupboundvariable ( addressof ( expanddepth ) , boundname , bounddefault ) | |
; | |
{ | |
if ( membot < infmembot ) | |
membot = infmembot ; | |
else if ( membot > supmembot ) | |
membot = supmembot ; | |
} | |
{ | |
if ( mainmemory < infmainmemory ) | |
mainmemory = infmainmemory ; | |
else if ( mainmemory > supmainmemory ) | |
mainmemory = supmainmemory ; | |
} | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
extramemtop = 0 ; | |
extramembot = 0 ; | |
} | |
#endif /* INITEX */ | |
if ( extramembot > supmainmemory ) | |
extramembot = supmainmemory ; | |
if ( extramemtop > supmainmemory ) | |
extramemtop = supmainmemory ; | |
memtop = membot + mainmemory - 1 ; | |
memmin = membot ; | |
memmax = memtop ; | |
{ | |
if ( triesize < inftriesize ) | |
triesize = inftriesize ; | |
else if ( triesize > suptriesize ) | |
triesize = suptriesize ; | |
} | |
{ | |
if ( hyphsize < infhyphsize ) | |
hyphsize = infhyphsize ; | |
else if ( hyphsize > suphyphsize ) | |
hyphsize = suphyphsize ; | |
} | |
{ | |
if ( bufsize < infbufsize ) | |
bufsize = infbufsize ; | |
else if ( bufsize > supbufsize ) | |
bufsize = supbufsize ; | |
} | |
{ | |
if ( nestsize < infnestsize ) | |
nestsize = infnestsize ; | |
else if ( nestsize > supnestsize ) | |
nestsize = supnestsize ; | |
} | |
{ | |
if ( maxinopen < infmaxinopen ) | |
maxinopen = infmaxinopen ; | |
else if ( maxinopen > supmaxinopen ) | |
maxinopen = supmaxinopen ; | |
} | |
{ | |
if ( paramsize < infparamsize ) | |
paramsize = infparamsize ; | |
else if ( paramsize > supparamsize ) | |
paramsize = supparamsize ; | |
} | |
{ | |
if ( savesize < infsavesize ) | |
savesize = infsavesize ; | |
else if ( savesize > supsavesize ) | |
savesize = supsavesize ; | |
} | |
{ | |
if ( stacksize < infstacksize ) | |
stacksize = infstacksize ; | |
else if ( stacksize > supstacksize ) | |
stacksize = supstacksize ; | |
} | |
{ | |
if ( dvibufsize < infdvibufsize ) | |
dvibufsize = infdvibufsize ; | |
else if ( dvibufsize > supdvibufsize ) | |
dvibufsize = supdvibufsize ; | |
} | |
{ | |
if ( poolsize < infpoolsize ) | |
poolsize = infpoolsize ; | |
else if ( poolsize > suppoolsize ) | |
poolsize = suppoolsize ; | |
} | |
{ | |
if ( stringvacancies < infstringvacancies ) | |
stringvacancies = infstringvacancies ; | |
else if ( stringvacancies > supstringvacancies ) | |
stringvacancies = supstringvacancies ; | |
} | |
{ | |
if ( poolfree < infpoolfree ) | |
poolfree = infpoolfree ; | |
else if ( poolfree > suppoolfree ) | |
poolfree = suppoolfree ; | |
} | |
{ | |
if ( maxstrings < infmaxstrings ) | |
maxstrings = infmaxstrings ; | |
else if ( maxstrings > supmaxstrings ) | |
maxstrings = supmaxstrings ; | |
} | |
{ | |
if ( stringsfree < infstringsfree ) | |
stringsfree = infstringsfree ; | |
else if ( stringsfree > supstringsfree ) | |
stringsfree = supstringsfree ; | |
} | |
{ | |
if ( fontmemsize < inffontmemsize ) | |
fontmemsize = inffontmemsize ; | |
else if ( fontmemsize > supfontmemsize ) | |
fontmemsize = supfontmemsize ; | |
} | |
{ | |
if ( fontmax < inffontmax ) | |
fontmax = inffontmax ; | |
else if ( fontmax > supfontmax ) | |
fontmax = supfontmax ; | |
} | |
{ | |
if ( hashextra < infhashextra ) | |
hashextra = infhashextra ; | |
else if ( hashextra > suphashextra ) | |
hashextra = suphashextra ; | |
} | |
if ( errorline > 255 ) | |
errorline = 255 ; | |
buffer = xmallocarray ( UnicodeScalar , bufsize ) ; | |
nest = xmallocarray ( liststaterecord , nestsize ) ; | |
savestack = xmallocarray ( memoryword , savesize ) ; | |
inputstack = xmallocarray ( instaterecord , stacksize ) ; | |
inputfile = xmallocarray ( unicodefile , maxinopen ) ; | |
linestack = xmallocarray ( integer , maxinopen ) ; | |
eofseen = xmallocarray ( boolean , maxinopen ) ; | |
grpstack = xmallocarray ( savepointer , maxinopen ) ; | |
ifstack = xmallocarray ( halfword , maxinopen ) ; | |
sourcefilenamestack = xmallocarray ( strnumber , maxinopen ) ; | |
fullsourcefilenamestack = xmallocarray ( strnumber , maxinopen ) ; | |
paramstack = xmallocarray ( halfword , paramsize ) ; | |
dvibuf = xmallocarray ( eightbits , dvibufsize ) ; | |
hyphword = xmallocarray ( strnumber , hyphsize ) ; | |
hyphlist = xmallocarray ( halfword , hyphsize ) ; | |
hyphlink = xmallocarray ( hyphpointer , hyphsize ) ; | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
yzmem = xmallocarray ( memoryword , memtop - membot + 1 ) ; | |
zmem = yzmem - membot ; | |
eqtbtop = 10053971L + hashextra ; | |
if ( hashextra == 0 ) | |
hashtop = 2252739L ; | |
else hashtop = eqtbtop ; | |
yhash = xmallocarray ( twohalves , 1 + hashtop - hashoffset ) ; | |
hash = yhash - hashoffset ; | |
hash [2228226L ].v.LH = 0 ; | |
hash [2228226L ].v.RH = 0 ; | |
{register integer for_end; hashused = 2228227L ;for_end = hashtop ; if ( | |
hashused <= for_end) do | |
hash [hashused ]= hash [2228226L ]; | |
while ( hashused++ < for_end ) ;} | |
zeqtb = xmallocarray ( memoryword , eqtbtop ) ; | |
eqtb = zeqtb ; | |
strstart = xmallocarray ( poolpointer , maxstrings ) ; | |
strpool = xmallocarray ( packedUTF16code , poolsize ) ; | |
fontinfo = xmallocarray ( fmemoryword , fontmemsize ) ; | |
} | |
#endif /* INITEX */ | |
history = 3 ; | |
if ( readyalready == 314159L ) | |
goto lab1 ; | |
bad = 0 ; | |
if ( ( halferrorline < 30 ) || ( halferrorline > errorline - 15 ) ) | |
bad = 1 ; | |
if ( maxprintline < 60 ) | |
bad = 2 ; | |
if ( dvibufsize % 8 != 0 ) | |
bad = 3 ; | |
if ( membot + 1100 > memtop ) | |
bad = 4 ; | |
if ( 8501 > 15000 ) | |
bad = 5 ; | |
if ( maxinopen >= 128 ) | |
bad = 6 ; | |
if ( memtop < 267 ) | |
bad = 7 ; | |
; | |
#ifdef INITEX | |
if ( ( memmin != membot ) || ( memmax != memtop ) ) | |
bad = 10 ; | |
#endif /* INITEX */ | |
if ( ( memmin > membot ) || ( memmax < memtop ) ) | |
bad = 10 ; | |
if ( ( 0 > 0 ) || ( 65535L < 32767 ) ) | |
bad = 11 ; | |
if ( ( -268435455L > 0 ) || ( 1073741823L < 1073741823L ) ) | |
bad = 12 ; | |
if ( ( 0 < -268435455L ) || ( 65535L > 1073741823L ) ) | |
bad = 13 ; | |
if ( ( membot - supmainmemory < -268435455L ) || ( memtop + supmainmemory >= | |
1073741823L ) ) | |
bad = 14 ; | |
if ( ( 9000 < -268435455L ) || ( 9000 > 1073741823L ) ) | |
bad = 15 ; | |
if ( fontmax > 9000 ) | |
bad = 16 ; | |
if ( ( savesize > 1073741823L ) || ( maxstrings > 1073741823L ) ) | |
bad = 17 ; | |
if ( bufsize > 1073741823L ) | |
bad = 18 ; | |
if ( 65535L < 65535L ) | |
bad = 19 ; | |
if ( 43608402L + hashextra > 1073741823L ) | |
bad = 21 ; | |
if ( ( hashoffset < 0 ) || ( hashoffset > 2228226L ) ) | |
bad = 42 ; | |
if ( formatdefaultlength > maxint ) | |
bad = 31 ; | |
if ( 2 * 1073741823L < memtop - memmin ) | |
bad = 41 ; | |
if ( bad > 0 ) | |
{ | |
fprintf ( stdout , "%s%s%ld\n", "Ouch---my internal constants have been clobbered!" , "---case " , (long)bad ) ; | |
goto lab9999 ; | |
} | |
initialize () ; | |
; | |
#ifdef INITEX | |
if ( iniversion ) | |
{ | |
if ( ! getstringsstarted () ) | |
goto lab9999 ; | |
initprim () ; | |
initstrptr = strptr ; | |
initpoolptr = poolptr ; | |
fixdateandtime () ; | |
} | |
#endif /* INITEX */ | |
readyalready = 314159L ; | |
lab1: selector = 17 ; | |
tally = 0 ; | |
termoffset = 0 ; | |
fileoffset = 0 ; | |
if ( srcspecialsp || filelineerrorstylep || parsefirstlinep ) | |
fprintf ( stdout , "%s%s%s", "This is XeTeX, Version 3.141592653" , "-2.6" , "-0.999993" ) ; | |
else | |
fprintf ( stdout , "%s%s%s", "This is XeTeX, Version 3.141592653" , "-2.6" , "-0.999993" ) ; | |
Fputs ( stdout , versionstring ) ; | |
if ( formatident == 0 ) | |
fprintf ( stdout , "%s%s%c\n", " (preloaded format=" , dumpname , ')' ) ; | |
else { | |
print ( formatident ) ; | |
println () ; | |
} | |
if ( shellenabledp ) | |
{ | |
putc ( ' ' , stdout ); | |
if ( restrictedshell ) | |
{ | |
Fputs ( stdout , "restricted " ) ; | |
} | |
fprintf ( stdout , "%s\n", "\\write18 enabled." ) ; | |
} | |
if ( srcspecialsp ) | |
{ | |
fprintf ( stdout , "%s\n", " Source specials enabled." ) ; | |
} | |
if ( translatefilename ) | |
{ | |
Fputs ( stdout , " (WARNING: translate-file \"" ) ; | |
fputs ( translatefilename , stdout ) ; | |
fprintf ( stdout , "%s\n", "\" ignored)" ) ; | |
} | |
fflush ( stdout ) ; | |
jobname = 0 ; | |
nameinprogress = false ; | |
logopened = false ; | |
outputfilename = 0 ; | |
if ( nopdfoutput ) | |
outputfileextension = 66180L ; | |
else outputfileextension = 66181L ; | |
{ | |
{ | |
inputptr = 0 ; | |
maxinstack = 0 ; | |
sourcefilenamestack [0 ]= 0 ; | |
fullsourcefilenamestack [0 ]= 0 ; | |
inopen = 0 ; | |
openparens = 0 ; | |
maxbufstack = 0 ; | |
grpstack [0 ]= 0 ; | |
ifstack [0 ]= -268435455L ; | |
paramptr = 0 ; | |
maxparamstack = 0 ; | |
first = bufsize ; | |
do { | |
buffer [first ]= 0 ; | |
decr ( first ) ; | |
} while ( ! ( first == 0 ) ) ; | |
scannerstatus = 0 ; | |
warningindex = -268435455L ; | |
first = 1 ; | |
curinput .statefield = 33 ; | |
curinput .startfield = 1 ; | |
curinput .indexfield = 0 ; | |
line = 0 ; | |
curinput .namefield = 0 ; | |
forceeof = false ; | |
alignstate = 1000000L ; | |
if ( ! initterminal () ) | |
goto lab9999 ; | |
curinput .limitfield = last ; | |
first = last + 1 ; | |
} | |
; | |
#ifdef INITEX | |
if ( ( etexp || ( buffer [curinput .locfield ]== 42 ) ) && ( formatident | |
== 66707L ) ) | |
{ | |
nonewcontrolsequence = false ; | |
primitive ( 66749L , 59 , 41 ) ; | |
primitive ( 66750L , 59 , 42 ) ; | |
primitive ( 66751L , 59 , 43 ) ; | |
primitive ( 66752L , 59 , 46 ) ; | |
primitive ( 66753L , 73 , 2253282L ) ; | |
primitive ( 66754L , 59 , 21 ) ; | |
primitive ( 66810L , 71 , 3 ) ; | |
primitive ( 66811L , 71 , 19 ) ; | |
primitive ( 66110L , 110 , 5 ) ; | |
primitive ( 66812L , 71 , 27 ) ; | |
primitive ( 66813L , 110 , 33 ) ; | |
primitive ( 66814L , 71 , 28 ) ; | |
primitive ( 66815L , 71 , 29 ) ; | |
primitive ( 66816L , 71 , 30 ) ; | |
primitive ( 66817L , 71 , 31 ) ; | |
primitive ( 66818L , 71 , 32 ) ; | |
primitive ( 66819L , 71 , 33 ) ; | |
primitive ( 66820L , 71 , 34 ) ; | |
primitive ( 66821L , 71 , 35 ) ; | |
primitive ( 66822L , 71 , 36 ) ; | |
primitive ( 66823L , 71 , 37 ) ; | |
primitive ( 66824L , 71 , 38 ) ; | |
primitive ( 66825L , 71 , 39 ) ; | |
primitive ( 66826L , 71 , 40 ) ; | |
primitive ( 66827L , 71 , 41 ) ; | |
primitive ( 66828L , 71 , 42 ) ; | |
primitive ( 66829L , 110 , 34 ) ; | |
primitive ( 66830L , 110 , 35 ) ; | |
primitive ( 66831L , 110 , 36 ) ; | |
primitive ( 66832L , 71 , 43 ) ; | |
primitive ( 66833L , 71 , 44 ) ; | |
primitive ( 66834L , 71 , 45 ) ; | |
primitive ( 66835L , 71 , 46 ) ; | |
primitive ( 66836L , 71 , 47 ) ; | |
primitive ( 66837L , 71 , 48 ) ; | |
primitive ( 66838L , 71 , 49 ) ; | |
primitive ( 66839L , 71 , 50 ) ; | |
primitive ( 66840L , 71 , 55 ) ; | |
primitive ( 66841L , 110 , 37 ) ; | |
primitive ( 66842L , 71 , 51 ) ; | |
primitive ( 66843L , 71 , 52 ) ; | |
primitive ( 66844L , 71 , 53 ) ; | |
primitive ( 66845L , 71 , 54 ) ; | |
primitive ( 66855L , 73 , 2253281L ) ; | |
primitive ( 66856L , 74 , 8939299L ) ; | |
primitive ( 66857L , 74 , 8939300L ) ; | |
primitive ( 66858L , 74 , 8939301L ) ; | |
primitive ( 66859L , 74 , 8939302L ) ; | |
primitive ( 66860L , 74 , 8939303L ) ; | |
primitive ( 66861L , 74 , 8939304L ) ; | |
primitive ( 66862L , 74 , 8939305L ) ; | |
primitive ( 66863L , 74 , 8939306L ) ; | |
primitive ( 66864L , 74 , 8939307L ) ; | |
primitive ( 66878L , 71 , 20 ) ; | |
primitive ( 66879L , 71 , 21 ) ; | |
primitive ( 66880L , 71 , 22 ) ; | |
primitive ( 66881L , 71 , 23 ) ; | |
primitive ( 66882L , 71 , 24 ) ; | |
primitive ( 66883L , 71 , 56 ) ; | |
primitive ( 66884L , 71 , 57 ) ; | |
primitive ( 66885L , 71 , 58 ) ; | |
primitive ( 66886L , 71 , 59 ) ; | |
primitive ( 66887L , 71 , 60 ) ; | |
primitive ( 66888L , 71 , 61 ) ; | |
primitive ( 66889L , 71 , 62 ) ; | |
primitive ( 66890L , 19 , 4 ) ; | |
primitive ( 66892L , 19 , 5 ) ; | |
primitive ( 66893L , 111 , 1 ) ; | |
primitive ( 66894L , 111 , 5 ) ; | |
primitive ( 66895L , 19 , 6 ) ; | |
primitive ( 66899L , 83 , 2 ) ; | |
primitive ( 66281L , 49 , 1 ) ; | |
primitive ( 66903L , 74 , 8939308L ) ; | |
primitive ( 66904L , 74 , 8939312L ) ; | |
primitive ( 66905L , 74 , 8939314L ) ; | |
primitive ( 66906L , 74 , 8939315L ) ; | |
primitive ( 66907L , 74 , 8939316L ) ; | |
primitive ( 66908L , 74 , 8939313L ) ; | |
primitive ( 66909L , 74 , 8939317L ) ; | |
primitive ( 66910L , 74 , 8939320L ) ; | |
primitive ( 66911L , 74 , 8939321L ) ; | |
primitive ( 66912L , 74 , 8939322L ) ; | |
primitive ( 66913L , 74 , 8939323L ) ; | |
primitive ( 66755L , 59 , 44 ) ; | |
primitive ( 66756L , 59 , 45 ) ; | |
primitive ( 66914L , 33 , 6 ) ; | |
primitive ( 66915L , 33 , 7 ) ; | |
primitive ( 66916L , 33 , 10 ) ; | |
primitive ( 66917L , 33 , 11 ) ; | |
primitive ( 66926L , 106 , 2 ) ; | |
primitive ( 66928L , 98 , 1 ) ; | |
primitive ( 66159L , 104 , 1 ) ; | |
primitive ( 66929L , 107 , 17 ) ; | |
primitive ( 66930L , 107 , 18 ) ; | |
primitive ( 66931L , 107 , 19 ) ; | |
primitive ( 66932L , 107 , 20 ) ; | |
primitive ( 66617L , 95 , 8 ) ; | |
primitive ( 66938L , 71 , 67 ) ; | |
primitive ( 66939L , 71 , 68 ) ; | |
primitive ( 66940L , 71 , 69 ) ; | |
primitive ( 66941L , 71 , 70 ) ; | |
primitive ( 66945L , 71 , 25 ) ; | |
primitive ( 66946L , 71 , 26 ) ; | |
primitive ( 66947L , 71 , 63 ) ; | |
primitive ( 66948L , 71 , 64 ) ; | |
primitive ( 66949L , 71 , 65 ) ; | |
primitive ( 66950L , 71 , 66 ) ; | |
primitive ( 66951L , 18 , 5 ) ; | |
primitive ( 66952L , 112 , 5 ) ; | |
primitive ( 66953L , 112 , 6 ) ; | |
primitive ( 66954L , 112 , 7 ) ; | |
primitive ( 66955L , 112 , 8 ) ; | |
primitive ( 66956L , 112 , 9 ) ; | |
primitive ( 66961L , 24 , 2 ) ; | |
primitive ( 66962L , 24 , 3 ) ; | |
primitive ( 66963L , 85 , 2253539L ) ; | |
primitive ( 66964L , 85 , 2253540L ) ; | |
primitive ( 66965L , 85 , 2253541L ) ; | |
primitive ( 66966L , 85 , 2253542L ) ; | |
if ( buffer [curinput .locfield ]== 42 ) | |
incr ( curinput .locfield ) ; | |
eTeXmode = 1 ; | |
maxregnum = 32767 ; | |
maxreghelpline = 66958L ; | |
} | |
#endif /* INITEX */ | |
if ( ! nonewcontrolsequence ) | |
nonewcontrolsequence = true ; | |
else if ( ( formatident == 0 ) || ( buffer [curinput .locfield ]== 38 ) | |
|| dumpline ) | |
{ | |
if ( formatident != 0 ) | |
initialize () ; | |
if ( ! openfmtfile () ) | |
goto lab9999 ; | |
if ( ! loadfmtfile () ) | |
{ | |
wclose ( fmtfile ) ; | |
goto lab9999 ; | |
} | |
wclose ( fmtfile ) ; | |
eqtb = zeqtb ; | |
while ( ( curinput .locfield < curinput .limitfield ) && ( buffer [ | |
curinput .locfield ]== 32 ) ) incr ( curinput .locfield ) ; | |
} | |
if ( ( eTeXmode == 1 ) ) | |
fprintf ( stdout , "%s\n", "entering extended mode" ) ; | |
if ( ( eqtb [8939288L ].cint < 0 ) || ( eqtb [8939288L ].cint > 255 ) | |
) | |
decr ( curinput .limitfield ) ; | |
else buffer [curinput .limitfield ]= eqtb [8939288L ].cint ; | |
if ( mltexenabledp ) | |
{ | |
fprintf ( stdout , "%s\n", "MLTeX v2.2 enabled" ) ; | |
} | |
fixdateandtime () ; | |
; | |
#ifdef INITEX | |
if ( trienotready ) | |
{ | |
trietrl = xmallocarray ( triepointer , triesize ) ; | |
trietro = xmallocarray ( triepointer , triesize ) ; | |
trietrc = xmallocarray ( quarterword , triesize ) ; | |
triec = xmallocarray ( packedUTF16code , triesize ) ; | |
trieo = xmallocarray ( trieopcode , triesize ) ; | |
triel = xmallocarray ( triepointer , triesize ) ; | |
trier = xmallocarray ( triepointer , triesize ) ; | |
triehash = xmallocarray ( triepointer , triesize ) ; | |
trietaken = xmallocarray ( boolean , triesize ) ; | |
triel [0 ]= 0 ; | |
triec [0 ]= 0 ; | |
trieptr = 0 ; | |
trier [0 ]= 0 ; | |
hyphstart = 0 ; | |
fontmapping = xmallocarray ( voidpointer , fontmax ) ; | |
fontlayoutengine = xmallocarray ( voidpointer , fontmax ) ; | |
fontflags = xmallocarray ( char , fontmax ) ; | |
fontletterspace = xmallocarray ( scaled , fontmax ) ; | |
fontcheck = xmallocarray ( fourquarters , fontmax ) ; | |
fontsize = xmallocarray ( scaled , fontmax ) ; | |
fontdsize = xmallocarray ( scaled , fontmax ) ; | |
fontparams = xmallocarray ( fontindex , fontmax ) ; | |
fontname = xmallocarray ( strnumber , fontmax ) ; | |
fontarea = xmallocarray ( strnumber , fontmax ) ; | |
fontbc = xmallocarray ( UTF16code , fontmax ) ; | |
fontec = xmallocarray ( UTF16code , fontmax ) ; | |
fontglue = xmallocarray ( halfword , fontmax ) ; | |
hyphenchar = xmallocarray ( integer , fontmax ) ; | |
skewchar = xmallocarray ( integer , fontmax ) ; | |
bcharlabel = xmallocarray ( fontindex , fontmax ) ; | |
fontbchar = xmallocarray ( ninebits , fontmax ) ; | |
fontfalsebchar = xmallocarray ( ninebits , fontmax ) ; | |
charbase = xmallocarray ( integer , fontmax ) ; | |
widthbase = xmallocarray ( integer , fontmax ) ; | |
heightbase = xmallocarray ( integer , fontmax ) ; | |
depthbase = xmallocarray ( integer , fontmax ) ; | |
italicbase = xmallocarray ( integer , fontmax ) ; | |
ligkernbase = xmallocarray ( integer , fontmax ) ; | |
kernbase = xmallocarray ( integer , fontmax ) ; | |
extenbase = xmallocarray ( integer , fontmax ) ; | |
parambase = xmallocarray ( integer , fontmax ) ; | |
fontptr = 0 ; | |
fmemptr = 7 ; | |
fontname [0 ]= 66189L ; | |
fontarea [0 ]= 65626L ; | |
hyphenchar [0 ]= 45 ; | |
skewchar [0 ]= -1 ; | |
bcharlabel [0 ]= 0 ; | |
fontbchar [0 ]= 65536L ; | |
fontfalsebchar [0 ]= 65536L ; | |
fontbc [0 ]= 1 ; | |
fontec [0 ]= 0 ; | |
fontsize [0 ]= 0 ; | |
fontdsize [0 ]= 0 ; | |
charbase [0 ]= 0 ; | |
widthbase [0 ]= 0 ; | |
heightbase [0 ]= 0 ; | |
depthbase [0 ]= 0 ; | |
italicbase [0 ]= 0 ; | |
ligkernbase [0 ]= 0 ; | |
kernbase [0 ]= 0 ; | |
extenbase [0 ]= 0 ; | |
fontglue [0 ]= -268435455L ; | |
fontparams [0 ]= 7 ; | |
fontmapping [0 ]= 0 ; | |
parambase [0 ]= -1 ; | |
{register integer for_end; fontk = 0 ;for_end = 6 ; if ( fontk <= | |
for_end) do | |
fontinfo [fontk ].cint = 0 ; | |
while ( fontk++ < for_end ) ;} | |
} | |
#endif /* INITEX */ | |
fontused = xmallocarray ( boolean , fontmax ) ; | |
{register integer for_end; fontk = 0 ;for_end = fontmax ; if ( fontk <= | |
for_end) do | |
fontused [fontk ]= false ; | |
while ( fontk++ < for_end ) ;} | |
randomseed = ( microseconds * 1000 ) + ( epochseconds % 1000000L ) ; | |
initrandoms ( randomseed ) ; | |
magicoffset = strstart [( 66313L ) - 65536L ]- 9 * 16 ; | |
if ( interaction == 0 ) | |
selector = 16 ; | |
else selector = 17 ; | |
if ( ( curinput .locfield < curinput .limitfield ) && ( eqtb [2254568L + | |
buffer [curinput .locfield ]].hh .v.RH != 0 ) ) | |
startinput () ; | |
} | |
history = 0 ; | |
synctexinitcommand () ; | |
maincontrol () ; | |
finalcleanup () ; | |
closefilesandterminate () ; | |
lab9999: { | |
fflush ( stdout ) ; | |
readyalready = 0 ; | |
if ( ( history != 0 ) && ( history != 1 ) ) | |
uexit ( 1 ) ; | |
else uexit ( 0 ) ; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment