home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / TeX / tex / initprim.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-11  |  14.7 KB  |  518 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. #ifdef INITEX
  5.  
  6. static long_halfword
  7. primitive ( strnumber s, quarterword c, halfword o )
  8. { primitive_regmem 
  9.   register poolpointer k;
  10.   register smallnumber j;
  11.   register smallnumber l;
  12.   register long_halfword r_curval;
  13.  
  14.   if ( s < 256 ) 
  15.     r_curval = s + singlebase;
  16.   else {
  17.     k = strstart [ s ];
  18.     l = strstart [ s + 1 ] - k;
  19.     for( j = 0 ; j <= l - 1 ; j++ )
  20.       buffer [ j ] = strpool [ k + j ];
  21.     r_curval = idlookup ( 0 , l );
  22.     flushstring;
  23.     ztext ( r_curval ) = s;
  24.   }
  25.   eqlevel ( r_curval ) = levelone;
  26.   eqtype ( r_curval ) = c;
  27.   equiv ( r_curval ) = o;
  28.   return r_curval;
  29. }
  30.  
  31.  
  32. struct prim_desc_str {
  33.   unsigned short s;        /* is strnumber */
  34.   quarterword c;
  35.   unsigned short o;        /* is halfword */
  36. } prim_desc[] = {
  37.     372,    assign_glue,    gluebase + lineskipcode,
  38.     373,    assign_glue,    gluebase + baselineskipcode,
  39.     374,    assign_glue,    gluebase + parskipcode,
  40.     375,    assign_glue,    gluebase + abovedisplayskipcode,
  41.     376,    assign_glue,    gluebase + belowdisplayskipcode,
  42.     377,    assign_glue,    gluebase + abovedisplayshortskipcode,
  43.     378,    assign_glue,    gluebase + belowdisplayshortskipcode,
  44.     379,    assign_glue,    gluebase + leftskipcode,
  45.     380,    assign_glue,    gluebase + rightskipcode,
  46.     381,    assign_glue,    gluebase + topskipcode,
  47.     382,    assign_glue,    gluebase + splittopskipcode,
  48.     383,    assign_glue,    gluebase + tabskipcode,
  49.     384,    assign_glue,    gluebase + spaceskipcode,
  50.     385,    assign_glue,    gluebase + xspaceskipcode,
  51.     386,    assign_glue,    gluebase + parfillskipcode,
  52.     387,    assign_mu_glue,    gluebase + thinmuskipcode,
  53.     388,    assign_mu_glue,    gluebase + medmuskipcode,
  54.     389,    assign_mu_glue,    gluebase + thickmuskipcode,
  55.     394,    assign_toks,    outputroutineloc,
  56.     395,    assign_toks,    everyparloc,
  57.     396,    assign_toks,    everymathloc,
  58.     397,    assign_toks,    everydisplayloc,
  59.     398,    assign_toks,    everyhboxloc,
  60.     399,    assign_toks,    everyvboxloc,
  61.     400,    assign_toks,    everyjobloc,
  62.     401,    assign_toks,    everycrloc,
  63.     402,    assign_toks,    errhelploc,
  64.     416,    assign_int,    intbase + pretolerancecode,
  65.     417,    assign_int,    intbase + tolerancecode,
  66.     418,    assign_int,    intbase + linepenaltycode,
  67.     419,    assign_int,    intbase + hyphenpenaltycode,
  68.     420,    assign_int,    intbase + exhyphenpenaltycode,
  69.     421,    assign_int,    intbase + clubpenaltycode,
  70.     422,    assign_int,    intbase + widowpenaltycode,
  71.     423,    assign_int,    intbase + displaywidowpenaltycode,
  72.     424,    assign_int,    intbase + brokenpenaltycode,
  73.     425,    assign_int,    intbase + binoppenaltycode,
  74.     426,    assign_int,    intbase + relpenaltycode,
  75.     427,    assign_int,    intbase + predisplaypenaltycode,
  76.     428,    assign_int,    intbase + postdisplaypenaltycode,
  77.     429,    assign_int,    intbase + interlinepenaltycode,
  78.     430,    assign_int,    intbase + doublehyphendemeritscode,
  79.     431,    assign_int,    intbase + finalhyphendemeritscode,
  80.     432,    assign_int,    intbase + adjdemeritscode,
  81.     433,    assign_int,    intbase + magcode,
  82.     434,    assign_int,    intbase + delimiterfactorcode,
  83.     435,    assign_int,    intbase + loosenesscode,
  84.     436,    assign_int,    intbase + timecode,
  85.     437,    assign_int,    intbase + daycode,
  86.     438,    assign_int,    intbase + monthcode,
  87.     439,    assign_int,    intbase + yearcode,
  88.     440,    assign_int,    intbase + showboxbreadthcode,
  89.     441,    assign_int,    intbase + showboxdepthcode,
  90.     442,    assign_int,    intbase + hbadnesscode,
  91.     443,    assign_int,    intbase + vbadnesscode,
  92.     444,    assign_int,    intbase + pausingcode,
  93.     445,    assign_int,    intbase + tracingonlinecode,
  94.     446,    assign_int,    intbase + tracingmacroscode,
  95.     447,    assign_int,    intbase + tracingstatscode,
  96.     448,    assign_int,    intbase + tracingparagraphscode,
  97.     449,    assign_int,    intbase + tracingpagescode,
  98.     450,    assign_int,    intbase + tracingoutputcode,
  99.     451,    assign_int,    intbase + tracinglostcharscode,
  100.     452,    assign_int,    intbase + tracingcommandscode,
  101.     453,    assign_int,    intbase + tracingrestorescode,
  102.     454,    assign_int,    intbase + uchyphcode,
  103.     455,    assign_int,    intbase + outputpenaltycode,
  104.     456,    assign_int,    intbase + maxdeadcyclescode,
  105.     457,    assign_int,    intbase + hangaftercode,
  106.     458,    assign_int,    intbase + floatingpenaltycode,
  107.     459,    assign_int,    intbase + globaldefscode,
  108.     460,    assign_int,    intbase + curfamcode,
  109.     461,    assign_int,    intbase + escapecharcode,
  110.     462,    assign_int,    intbase + defaulthyphencharcode,
  111.     463,    assign_int,    intbase + defaultskewcharcode,
  112.     464,    assign_int,    intbase + endlinecharcode,
  113.     465,    assign_int,    intbase + newlinecharcode,
  114.     466,    assign_int,    intbase + languagecode,
  115.     467,    assign_int,    intbase + lefthyphenmincode,
  116.     468,    assign_int,    intbase + righthyphenmincode,
  117.     469,    assign_int,    intbase + holdinginsertscode,
  118.     470,    assign_int,    intbase + errorcontextlinescode,
  119. #if 0 /* MLTEX */
  120.     STR_CHARSUBDEFMAX,    assign_int, intbase + char_sub_def_max_code,
  121.     STR_TRACING_CHARSUBDEF,    assign_int, intbase + tracing_char_sub_def_code,
  122. #endif
  123.     474,    assign_dimen,    dimenbase + parindentcode,
  124.     475,    assign_dimen,    dimenbase + mathsurroundcode,
  125.     476,    assign_dimen,    dimenbase + lineskiplimitcode,
  126.     477,    assign_dimen,    dimenbase + hsizecode,
  127.     478,    assign_dimen,    dimenbase + vsizecode,
  128.     479,    assign_dimen,    dimenbase + maxdepthcode,
  129.     480,    assign_dimen,    dimenbase + splitmaxdepthcode,
  130.     481,    assign_dimen,    dimenbase + boxmaxdepthcode,
  131.     482,    assign_dimen,    dimenbase + hfuzzcode,
  132.     483,    assign_dimen,    dimenbase + vfuzzcode,
  133.     484,    assign_dimen,    dimenbase + delimitershortfallcode,
  134.     485,    assign_dimen,    dimenbase + nulldelimiterspacecode,
  135.     486,    assign_dimen,    dimenbase + scriptspacecode,
  136.     487,    assign_dimen,    dimenbase + predisplaysizecode,
  137.     488,    assign_dimen,    dimenbase + displaywidthcode,
  138.     489,    assign_dimen,    dimenbase + displayindentcode,
  139.     490,    assign_dimen,    dimenbase + overfullrulecode,
  140.     491,    assign_dimen,    dimenbase + hangindentcode,
  141.     492,    assign_dimen,    dimenbase + hoffsetcode,
  142.     493,    assign_dimen,    dimenbase + voffsetcode,
  143.     494,    assign_dimen,    dimenbase + emergencystretchcode,
  144.     32,    exspace,    0,
  145.     47,    ital_corr,    0,
  146.     504,    accent,        0,
  147.     505,    advance,    0,
  148.     506,    afterassignment,    0,
  149.     507,    aftergroup,        0,
  150.     508,    begin_group,    0,
  151.     509,    charnum,    0,
  152.     500,    csname,        0,
  153.     510,    delim_num,    0,
  154.     511,    divide,        0,
  155.     STR_ENDCSNAME,    end_cs_name,    0,
  156.     STR_ENDGROUP,    end_group,    0,
  157.    /* frozenendgroup ... */
  158.     0,    1,    0,
  159.     513,    expandafter,    0,
  160.     514,    def_font,    0,
  161.     515,    assign_font_dimen,    0,
  162.     516,    halign,        0,
  163.     517,    hrule,        0,
  164.     518,    ignorespaces,    0,
  165.     STR_INSERT,    insert,    0,
  166.     348,    mark,        0,
  167.     519,    math_accent,    0,
  168.     520,    math_char_num,    0,
  169.     521,    math_choice,    0,
  170.     522,    multiply,    0,
  171.     523,    no_align,    0,
  172.     524,    noboundary,    0,
  173.     525,    noexpand,    0,
  174.     332,    non_script,    0,
  175.     526,    omit,        0,
  176.     404,    set_shape,    0,
  177.     527,    break_penalty,    0,
  178.     528,    set_prev_graf,    0,
  179.     529,    radical,    0,
  180.     STR_READ,    read_to_cs,    0,
  181.     531,    relax,    256,
  182.   /* frozenrelax ... */
  183.     0,    2,    0,
  184.     532,    set_box,    0,
  185.     533,    the,        0,
  186.     403,    toks_register,    0,
  187.     349,    vadjust,    0,
  188.     534,    valign,        0,
  189.     535,    vcenter,    0,
  190.     536,    vrule,        0,
  191. #if 0  /* MLTEX */
  192.     STR_CHARSUBDEF, char_sub_def, 0,
  193. #endif
  194.     STR_PAR,    par_end,    256,
  195.   /* parloc, partoken ... */
  196.     0,    3,    0,
  197.     625,    input,    0,
  198.     626,    input,    1,
  199.     627,    topbotmark,    topmarkcode,
  200.     628,    topbotmark,    firstmarkcode,
  201.     629,    topbotmark,    botmarkcode,
  202.     630,    topbotmark,    splitfirstmarkcode,
  203.     631,    topbotmark,    splitbotmarkcode,
  204.     472,    register_cmd,    intval,
  205.     496,    register_cmd,    dimenval,
  206.     STR_SKIP,    register_cmd,    glueval,
  207.     392,    register_cmd,    muval,
  208.  
  209.     STR_SPACEFACTOR,    set_aux,    hmode,
  210.     STR_PREVDEPTH,        set_aux,    vmode,
  211.     STR_DEADCYCLES,        set_page_int,    0,
  212.     STR_INSERTPENALTIES,    set_page_int,    1,
  213.  
  214.     STR_WD,            set_box_dimen,    widthoffset,
  215.     STR_HT,            set_box_dimen,    heightoffset,
  216.     STR_DP,            set_box_dimen,    depthoffset,
  217.  
  218.     STR_LASTPENALTY,    last_item,    intval,
  219.     STR_LASTKERN,        last_item,    dimenval,
  220.     STR_LASTSKIP,        last_item,    glueval,
  221.     STR_INPUTLINENO,    last_item,    inputlinenocode,
  222.     STR_BADNESS,        last_item,    badnesscode,
  223.  
  224.     STR_NUMBER,        convert,    numbercode,
  225.     STR_ROMANNUMERAL,    convert,    romannumeralcode,
  226.     STR_STRING,        convert,    stringcode,
  227.     STR_MEANING,        convert,    meaningcode,
  228.     STR_FONTNAME,        convert,    fontnamecode,
  229.     STR_JOBNAME,        convert,    jobnamecode,
  230.  
  231.     STR_IF,        iftest,    ifcharcode,
  232.     STR_IFCAT,    iftest,    ifcatcode,
  233.     STR_IFNUM,    iftest,    ifintcode,
  234.     STR_IFDIM,    iftest,    ifdimcode,
  235.     STR_IFODD,    iftest,    ifoddcode,
  236.     STR_IFVMODE,    iftest,    ifvmodecode,
  237.     STR_IFHMODE,    iftest,    ifhmodecode,
  238.     STR_IFMMODE,    iftest,    ifmmodecode,
  239.     STR_IFINNER,    iftest,    ifinnercode,
  240.     STR_IFVOID,    iftest,    ifvoidcode,
  241.     STR_IFHBOX,    iftest,    ifhboxcode,
  242.     STR_IFVBOX,    iftest,    ifvboxcode,
  243.     STR_IFX,    iftest,    ifxcode,
  244.     STR_IFEOF,    iftest,    ifeofcode,
  245.     STR_IFTRUE,    iftest,    iftruecode,
  246.     STR_IFFALSE,    iftest,    iffalsecode,
  247.     STR_IFCASE,    iftest,    ifcasecode,
  248.     STR_FI,        fiorelse, ficode,
  249.   /* frozenfi... */
  250.     0,    4,    0,
  251.     STR_OR,        fiorelse,    orcode,
  252.     STR_ELSE,    fiorelse,    elsecode,
  253.  
  254.     STR_NULLFONT,    set_font,    nullfont,
  255.   /* frozennullfont... */
  256.     0,    5,    0,
  257.  
  258.     STR_SPAN,    tab_mark,    spancode,
  259.     STR_CR,        car_ret,    crcode,
  260.   /* frozencr... */
  261.     0,        6,    0,
  262.     STR_CRCR,    car_ret,    crcrcode,
  263.   /* frozenendtemplate... */
  264.     0,        7,    0,
  265.  
  266.     STR_PAGEGOAL,        set_page_dimen,    0,
  267.     STR_PAGETOTAL,        set_page_dimen,    1,
  268.     STR_PAGESTRETCH,    set_page_dimen,    2,
  269.     STR_PAGEFILSTRETCH,    set_page_dimen,    3,
  270.     STR_PAGEFILLSTRETCH,    set_page_dimen,    4,
  271.     STR_PAGEFILLLSTRETCH,    set_page_dimen,    5,
  272.     STR_PAGESHRINK,        set_page_dimen,    6,
  273.     STR_PAGEDEPTH,        set_page_dimen,    7,
  274.  
  275.     STR_END,    stop,    0,
  276.     STR_DUMP,    stop,    1,
  277.  
  278.     STR_HSKIP,    hskip,    4,
  279.     STR_HFIL,    hskip,    0,
  280.     STR_HFILL,    hskip,    1,
  281.     STR_HSS,    hskip,    2,
  282.     STR_HFILNEG,    hskip,    3,
  283.     STR_VSKIP,    vskip,    4,
  284.     STR_VFIL,    vskip,    0,
  285.     STR_VFILL,    vskip,    1,
  286.     STR_VSS,    vskip,    2,
  287.     STR_VFILNEG,    vskip,    3,
  288.  
  289.     333,    mskip,    5,
  290.     337,    kern,    explicit,
  291.     339,    mkern,    muglue,
  292.  
  293.     STR_MOVELEFT,    hmove,    1,
  294.     STR_MOVERIGHT,    hmove,    0,
  295.     STR_RAISE,    vmove,    1,
  296.     STR_LOWER,    vmove,    0,
  297.     STR_BOX,    make_box,    0,
  298.     STR_COPY,    make_box,    1,
  299.     STR_LASTBOX,    make_box,    2,
  300.     STR_VSPLIT,    make_box,    3,
  301.     STR_VTOP,    make_box,    4,
  302.     STR_VBOX,    make_box,    4 + vmode,
  303.     STR_HBOX,    make_box,    4 + hmode,
  304.     STR_SHIPOUT,    leader_ship,    aleaders - 1,
  305.     STR_LEADERS,    leader_ship,    aleaders,
  306.     STR_CLEADERS,    leader_ship,    cleaders,
  307.     STR_XLEADERS,    leader_ship,    xleaders,
  308.  
  309.     STR_INDENT,    start_par,    1,
  310.     STR_NOINDENT,    start_par,    0,
  311.  
  312.     STR_UNPENALTY,    remove_item,    penaltynode,
  313.     STR_UNKERN,    remove_item,    kernnode,
  314.     STR_UNSKIP,    remove_item,    gluenode,
  315.     STR_UNHBOX,    un_hbox,    0,
  316.     STR_UNHCOPY,    un_hbox,    1,
  317.     STR_UNVBOX,    un_vbox,    0,
  318.     STR_UNVCOPY,    un_vbox,    1,
  319.  
  320.     45,    discretionary,    1,
  321.     346,    discretionary,    0,
  322.  
  323.     STR_EQNO,    eq_no,    0,
  324.     STR_LEQNO,    eq_no,    1,
  325.  
  326.     STR_MATHORD,    math_comp,    ordnoad,
  327.     STR_MATHOP,    math_comp,    opnoad,
  328.     STR_MATHBIN,    math_comp,    binnoad,
  329.     STR_MATHREL,    math_comp,    relnoad,
  330.     STR_MATHOPEN,    math_comp,    opennoad,
  331.     STR_MATHCLOSE,    math_comp,    closenoad,
  332.     STR_MATHPUNCT,    math_comp,    punctnoad,
  333.     STR_MATHINNER,    math_comp,    innernoad,
  334.     STR_OVERLINE,    math_comp,    overnoad,
  335.     STR_UNDERLINE,    math_comp,    undernoad,
  336.  
  337.     STR_DISPLAYLIMITS,    limit_switch,    normal,
  338.     STR_LIMITS,        limit_switch,    limits,
  339.     STR_NOLIMITS,        limit_switch,    nolimits,
  340.  
  341.     STR_DISPLAYSTYLE,    math_style,    displaystyle,
  342.     STR_TEXTSTYLE,        math_style,    textstyle,
  343.     STR_SCRIPTSTYLE,    math_style,    scriptstyle,
  344.     STR_SCRIPTSCRIPTSTYLE,    math_style,    scriptscriptstyle,
  345.  
  346.     STR_ABOVE,        above,    0,
  347.     STR_OVER,        above,    1,
  348.     STR_ATOP,        above,    2,
  349.     STR_ABOVEWITHDELIMS,    above,    3,
  350.     STR_OVERWITHDELIMS,    above,    4,
  351.     STR_ATOPWITHDELIMS,    above,    5,
  352.  
  353.     STR_LEFT,    left_right,    leftnoad,
  354.     STR_RIGHT,    left_right,    rightnoad,
  355.   /* frozenright... */
  356.     0,    8,    0,
  357.  
  358.     STR_LONG,    prefix,    1,
  359.     STR_OUTER,    prefix,    2,
  360.     STR_GLOBAL,    prefix,    4,
  361.     STR_DEF,    def,    0,
  362.     STR_GDEF,    def,    1,
  363.     STR_EDEF,    def,    2,
  364.     STR_XDEF,    def,    3,
  365.  
  366.     STR_LET,        let,    normal,
  367.     STR_FUTURELET,        let,    normal + 1,
  368.  
  369.     STR_CHARDEF,        shorthand_def,    0,
  370.     STR_MATHCHARDEF,    shorthand_def,    1,
  371.     STR_COUNTDEF,        shorthand_def,    2,
  372.     STR_DIMENDEF,        shorthand_def,    3,
  373.     STR_SKIPDEF,        shorthand_def,    4,
  374.     STR_MUSKIPDEF,        shorthand_def,    5,
  375.     STR_TOKSDEF,        shorthand_def,    6,
  376.  
  377.     411,    def_code,    catcodebase,
  378.     415,    def_code,    mathcodebase,
  379.     412,    def_code,    lccodebase,
  380.     413,    def_code,    uccodebase,
  381.     414,    def_code,    sfcodebase,
  382.     473,    def_code,    delcodebase,
  383.     408,    def_family,    mathfontbase,
  384.     409,    def_family,    mathfontbase + scriptsize,
  385.     410,    def_family,    mathfontbase + scriptscriptsize,
  386.  
  387.     STR_HYPHENATION,    hyph_data,    0,
  388.     STR_PATTERNS,        hyph_data,    1,
  389.  
  390.     STR_HYPHENCHAR,        assign_font_int,    0,
  391.     STR_SKEWCHAR,        assign_font_int,    1,
  392.     272,        set_interaction,    batchmode,
  393.     273,        set_interaction,    nonstopmode,
  394.     274,        set_interaction,    scrollmode,
  395.     STR_ERRORSTOPMODE,    set_interaction,    errorstopmode,
  396.  
  397.     STR_OPENIN,        instream,    1,
  398.     STR_CLOSEIN,        instream,    0,
  399.  
  400.     STR_MESSAGE,        message,    0,
  401.     STR_ERRMESSAGE,        message,    1,
  402.  
  403.     STR_LOWERCASE,        caseshift,    lccodebase,
  404.     STR_UPPERCASE,        caseshift,    uccodebase,
  405.  
  406.     STR_SHOW,        xray,    0,
  407.     STR_SHOWBOX,        xray,    1,
  408.     STR_SHOWTHE,        xray,    2,
  409.     STR_SHOWLISTS,        xray,    3,
  410.  
  411.     STR_OPENOUT,        extension,    opennode,
  412.     STR_WRITE,        extension,    writenode,
  413.   /* writeloc... */
  414.     0,            9,    0,
  415.     STR_CLOSEOUT,        extension,    closenode,
  416.     STR_SPECIAL,        extension,    specialnode,
  417.     STR_IMMEDIATE,        extension,    4,
  418.     STR_SETLANGUAGE,    extension,    5,
  419.     0,            0,    0    /* end, phuuuuu */
  420. };
  421.  
  422.  
  423. void initprim ( void )
  424. { initprim_regmem
  425.   register long_halfword r_curval = 0;
  426.  
  427.   struct prim_desc_str *p = prim_desc;
  428.  
  429.   nonewcontrolsequence = false;
  430.  
  431.   while( true ) {
  432.     if( p->s == 0 ) {        /* exception, if strnum = 0 */
  433.     switch( p->c ) {    /* decide, from eq_type.. */
  434.     case 0:
  435.       goto endprim;        /* ----------- end of loop ------>>>> */
  436.     case 1:
  437.       ztext ( frozenendgroup ) = STR_ENDGROUP;
  438.       eqtb [ frozenendgroup ] = eqtb [ r_curval ] ; 
  439.       break;
  440.     case 2:
  441.       ztext ( frozenrelax ) = 531 ; 
  442.       eqtb [ frozenrelax ] = eqtb [ r_curval ] ; 
  443.       break;
  444.     case 3:
  445.       parloc = r_curval;
  446.       partoken = cstokenflag + parloc ; 
  447.       break;
  448.     case 4:
  449.       ztext ( frozenfi ) = STR_FI;
  450.       eqtb [ frozenfi ] = eqtb [ r_curval ];
  451.       break;
  452.     case 5:
  453.       ztext ( frozennullfont ) = STR_NULLFONT;
  454.       eqtb [ frozennullfont ] = eqtb [ r_curval ];
  455.       break;
  456.     case 6:
  457.       ztext ( frozencr ) = STR_CR;
  458.       eqtb [ frozencr ] = eqtb [ r_curval ];
  459.       break;
  460.     case 7:        /* not necessary, but .... for safety */
  461.       ztext ( frozenendtemplate ) = STR_ENDTEMPLATE;
  462.       ztext ( frozenendv ) = STR_ENDTEMPLATE;
  463.       eqtype ( frozenendv ) = endv;
  464.       equiv ( frozenendv ) = nulllist;
  465.       eqlevel ( frozenendv ) = levelone;
  466.       eqtb [ frozenendtemplate ] = eqtb[frozenendv];
  467.       eqtype ( frozenendtemplate ) = endtemplate;
  468.       break;
  469.     case 8:
  470.       ztext ( frozenright ) = STR_RIGHT;
  471.       eqtb [ frozenright ] = eqtb [ r_curval ];
  472.       break;
  473.     case 9:
  474.       writeloc = r_curval;
  475.       break;
  476.     default:
  477.       fprintf(stderr, "Sorry, internal error in `initprim()'...\n");
  478.       }
  479.       p++;
  480.       continue;
  481.     }
  482.     r_curval = primitive( (strnumber)p->s, p->c, (halfword)p->o );
  483.     p++;
  484.   }
  485.  
  486. endprim:
  487.  
  488. #ifdef ERW_INTERACTION
  489.   primitive(STR_INTERACTION_MODE, assign_int, intbase + interactionmodecode);
  490. #endif
  491.  
  492.  
  493. #ifdef MLTEX
  494.   /* Only, if User has enabled ML-TeX, we define these primitives */
  495.   /* This is the only place, where we need the distinction TeX != MLTeX */
  496.   if( is_ML_TeX ) {
  497.     primitive(STR_CHARSUBDEFMAX, assign_int,
  498.         intbase + char_sub_def_max_code);
  499.     primitive(STR_TRACING_CHARSUBDEF, assign_int,
  500.         intbase + tracing_char_sub_def_code);
  501.     primitive(STR_CHARSUBDEF, char_sub_def, 0);
  502.   }
  503. #endif
  504.  
  505. #ifdef TEXXET
  506.   if( is_TeX_XeT ) {
  507.     primitive(STR_BEGINL, valign, begin_L_code);
  508.     primitive(STR_BEGINR, valign, begin_R_code);
  509.     primitive(STR_ENDL, valign, end_L_code);
  510.     primitive(STR_ENDR, valign, end_R_code);
  511.   }
  512. #endif
  513.  
  514.   nonewcontrolsequence = true;
  515. }
  516.  
  517. #endif /* INITEX */
  518.