$PAGE "*** COMMAND INTERPRETER'S STACK DECLARATIONS ***"                00010000
   << this is the include file for the declarations of   >>             00012000
   << the ci's stack and the associated sizes and        >>             00014000
   << meanings of some of the stack.                     >>             00016000
                                                                        00018000
                                                                        00020000
   << any change to the ci's stack will impact the       >>             00022000
   << following modules:                                 >>             00024000
   <<                                                    >>             00026000
   <<    ucop         -  07                              >>             00028000
   <<    cifiles      -  5a                              >>    <<04706>>00030000
   <<    cimain       -  5b                              >>    <<04706>>00032000
   <<    cimgr        -  5c                              >>    <<04706>>00034000
   <<    pcreate      -  63                              >>             00036000
   <<    morgue       -  64                              >>             00038000
   <<    udc          -  82                              >>             00040000
   <<    opcommand    -  85                              >>             00042000
   <<                                                    >>             00044000
   <<                                                    >>             00046000
   << the following error messages in catalog.pub.sys    >>             00048000
   << are involved with the information in the ci stack: >>             00050000
   <<                                                    >>             00052000
   <<    cierr 980    (command exceeded length limit.)   >>             00054000
   <<    cierr 988    (command exceeded maximum number   >>             00056000
   <<                  of continuation lines.)           >>             00058000
   <<    cierr 1949   (udc exceeded length limit.)       >>             00060000
   <<                                                    >>             00062000
   << these error messages are parameterized and may     >>             00064000
   << need not be changed if the ci stack changes.       >>             00066000
                                                                        00068000
                                                                        00070000
<< ucop allocates space for the ci stack.  typically,    >>             00072000
<< all modules that reference the ci stack are running   >>             00074000
<< on the ci stack.  thus, only db-relative declarations >>             00076000
<< are included here.                                    >>             00078000
                                                                        00080000
                                                                        00082000
<< length definitions.                                   >>             00084000
                                                                        00086000
equate                                                                  00088000
   cis'bcombuflen      << number of characters in the    >>             00090000
      = 280,           << ci command buffer.             >>             00092000
                                                                        00094000
   cis'wcombuflen      << number of words in ci buffer.  >>             00096000
      = ( cis'bcombuflen+1 ) / 2,                                       00098000
                                                                        00100000
   cis'maxcomlen       << maximum chars in a command.    >>             00102000
      = cis'bcombuflen - 2,                                             00104000
                                                                        00106000
   cis'maxcontlines    << maximum number of continuation >>             00108000
      = 29,            << lines in a command.            >>             00110000
                                                                        00112000
   cis'maxnumlines     << maximum num of command lines.  >>             00114000
      = cis'maxcontlines + 1,                                           00116000
                                                                        00118000
                                                                        00120000
   cis'numiscwords     << count of the miscellaneous     >>             00122000
      = 14,            << words in the middle of the ci  >>             00124000
                       << stack.  these include the udc  >>             00126000
                       << words, the if words, the con-  >>             00128000
                       << tinue state stack, the pending >>             00130000
                       << command length, etc.           >>             00132000
                                                                        00134000
                                                                        00136000
   cis'initdlsize      << initial dl size for ci stack.  >>             00138000
      = 0,                                                              00140000
                                                                        00142000
                                                                        00144000
   cis'numbpointer                                                      00146000
      = 2,             << count of byte pointers.        >>             00148000
                       << these are for command image &  >>             00150000
                       << last command image.            >>             00152000
                                                                        00154000
   cis'globstksize     << ci global stack size in words. >>             00156000
      = cis'initdlsize  +       << initial dl size.      >>             00158000
        cis'wcombuflen  +       << command image.        >>             00160000
        cis'maxnumlines +       << line length stack.    >>             00162000
        cis'numiscwords +       << misc. words count.    >>             00164000
        cis'wcombuflen;         << last command image.   >>             00166000
                                                                        00168000
                                                                        00170000
                                                                        00172000
<< db-relative declarations.                             >>             00174000
                                                                        00176000
byte array                                                              00178000
   cis'bcomimage(@)    << byte pointer to the start of   >>             00180000
      = db+0;          << ci command buffer.             >>             00182000
                                                                        00184000
logical array                                                           00186000
   cis'wcomimage(*)    << actual start of the command    >>             00188000
      = db+1;          << image buffer.                  >>             00190000
                                                                        00192000
integer array                                                           00194000
   cis'linelenstack(*) << input record lengths.          >>             00196000
      = cis'wcomimage( cis'wcombuflen );                                00198000
                                                                        00200000
integer                                                                 00202000
   cis'nextmsg         << currently not used.            >>             00204000
      = cis'linelenstack + cis'maxnumlines;                             00206000
                                                                        00208000
integer                                                                 00210000
   cis'numblanks       << for ds prompt.                 >>             00212000
      = cis'nextmsg + 1;                                                00214000
                                                                        00216000
logical array                                                           00218000
   cis'udcspace(*)     << udc information.               >>             00220000
      = cis'numblanks + 1;                                              00222000
                                                                        00224000
logical                << udc words.                     >>             00226000
   cis'udc0 = cis'udcspace,                                             00228000
   cis'udc1 = cis'udc0 + 1,                                             00230000
   cis'udc2 = cis'udc1 + 1,                                             00232000
   cis'udc3 = cis'udc2 + 1,                                             00234000
   cis'udc4 = cis'udc3 + 1;                                             00236000
                                                                        00238000
                                                                        00240000
integer                                                                 00242000
   cis'ifnesting       << current if nesting level.      >>             00244000
      = cis'udc4 + 1;                                                   00246000
                                                                        00248000
logical                                                                 00250000
   cis'ifskip          << current if flush flag.         >>             00252000
      = cis'ifnesting + 1;                                              00254000
                                                                        00256000
logical                                                                 00258000
   cis'elseseen        << seen an else at this if level. >>             00260000
      = cis'ifskip + 1;                                                 00262000
                                                                        00264000
logical                                                                 00266000
   cis'ciflags         << various ci flags.              >>             00268000
      = cis'elseseen + 1;                                               00270000
                                                                        00272000
double                                                                  00274000
   cis'continustatestk << used by udc to preserve        >>             00276000
      = cis'ciflags + 1;     << continue state.          >>             00278000
                                                                        00280000
logical                                                                 00282000
   cis'cstack          << second word of continue stack. >>             00284000
      = cis'continustatestk + 1;                                        00286000
                                                                        00288000
integer                                                                 00290000
   cis'pendingcomlen   << length of command just read.   >>             00292000
      = cis'continustatestk + 2;                                        00294000
                                                                        00296000
byte array                                                              00298000
   cis'blastcomimage(@)<< last command--for redo.        >>             00300000
      = cis'pendingcomlen + 1;                                          00302000
                                                                        00304000
logical array                                                           00306000
   cis'lastcomimage(*) << word pointer to start of       >>             00308000
      = cis'blastcomimage + 1;   << command.             >>             00310000
<< miscellaneous bit field definitions.                  >>             00312000
                                                                        00314000
define                                                                  00316000
                                                                        00318000
   cis'sequenced      << sequence numbers flag.          >>             00320000
      = cis'ciflags.(13:1) #,                                           00322000
                                                                        00324000
                                                                        00326000
   cis'contstate                                                        00328000
      = cis'cstack.(14:2) #;                                            00330000
                      << ":CONTINUE" state flag.         >>             00332000
                      << 0 -> no ":CONTINUE" seen.       >>             00334000
                      << 1 -> just seen ":CONTINUE".     >>             00336000
                      << 2 -> ":CONTINUE" in effect.     >>             00338000
                      << 3 -> undefined.                 >>             00340000
                                                                        00342000
                                                                        00344000
<< udc words definitions.                                >>             00346000
                                                                        00348000
   << cis'udc0 -> udc dst number.                        >>             00350000
   << cis'udc1 -> old s register.                        >>             00352000
   << cis'udc2 -> holds udc flush flag.                  >>             00354000
   << cis'udc3 -> holds current udc options.             >>             00356000
   << cis'udc4 -> holds miscellaneous information.       >>             00358000
                                                                        00360000
define                                                                  00362000
                                                                        00364000
   << cis'udc2 definitions.                              >>             00366000
                                                                        00368000
      cis'udcflush                                                      00370000
         = cis'udc2.(0:1) #,                                            00372000
                                                                        00374000
                                                                        00376000
   << cis'udc3 definitions.  this impacts both the ci    >>             00378000
   << and udc modules.                                   >>             00380000
                                                                        00382000
      cis'optlist       = (0:1) #,                                      00384000
      cis'optlogon      = (1:1) #,                                      00386000
      cis'optnohelp     = (2:1) #,                                      00388000
      cis'optnobreak    = (3:1) #,                                      00390000
                                                                        00392000
      cis'udclistopt    = cis'udc3.cis'optlist #,                       00394000
      cis'udclogonopt   = cis'udc3.cis'optlogon #,                      00396000
      cis'udcnohelpopt  = cis'udc3.cis'optnohelp #,                     00398000
      cis'udcnobreakopt = cis'udc3.cis'optnobreak #,                    00400000
                                                                        00402000
                                                                        00404000
   << cis'udc4 definitions.                              >>             00406000
                                                                        00408000
      cis'fatalcierrudc = ( 0:1) #,                                     00410000
      cis'exitbreak     = ( 1:1) #,                                     00412000
      cis'brkdetected   = ( 2:1) #,                                     00414000
      cis'noprintudc    = ( 3:1) #,                                     00416000
      cis'imageadjust   = ( 4:1) #,                                     00418000
      cis'nestlevel     = (10:6) #,                                     00420000
                                                                        00422000
      cis'udcfatalcierr        = cis'udc4.cis'fatalcierrudc #,          00424000
      cis'udcexitbreak         = cis'udc4.cis'exitbreak #,              00426000
      cis'udcbreakdetected     = cis'udc4.cis'brkdetected #,            00428000
      cis'udcnoprint           = cis'udc4.cis'noprintudc #,             00430000
      cis'udcimageadjust       = cis'udc4.cis'imageadjust #,            00432000
      cis'udcnestlevel         = cis'udc4.cis'nestlevel #;              00434000
                                                                        00436000
                                                                        00438000
                                                                        00440000
<< end of the ci stack definitions and declarations.     >>             00442000
