    This information file applies to the January  1979 version of the    DCP F00
patch for SIDR 31630.  PATCH PROBABLY WON'T APPEAR TIL MARCH SST.        DCP F00
                                                                         DCP F00
    A little background information is in order first.  Most             DCP F00
SDS/XDS/Dataproducts printers prefer to advance the paper one line       DCP F00
after printing each line of output, and automatically skip to the top    DCP F00
of the next page when a "bottom of page" hole is sensed in the           DCP F00
printer's VFU ribbon.  Since most print line images are printed with     DCP F00
VFC (supplied either by the user or by the symbiont handler) a special   DCP F00
test is performed to prevent blank pages from being slewed over if the   DCP F00
specified VFC order requests "skip to top of page" and the automatic     DCP F00
slew feature has already positioned the paper to the top of the next     DCP F00
page.  Needless to say, these characteristics have caused much grief     DCP F00
over the years - probably the most annoying problem was due to the       DCP F00
fact that there existed no way to ensure that CP-V's "lines left on      DCP F00
page" count actually corresponded with where the paper actually was;     DCP F00
therefore, users might not get charged for the proper number of pages    DCP F00
printed, and page-heading routines might get badly out of                DCP F00
synchronization with the real world.  In F00, code was added to          DCP F00
maintain hardware/software synchronization by inserting page ejects in   DCP F00
the output symbiont file whenever CP-V decided that "end of page" had    DCP F00
occurred, thus pre-empting the same test normally made by the printer    DCP F00
hardware.  This had the undesirable side effect that one could not       DCP F00
"end of page" hole punched.  An interim version of the 31630 patch       DCP F00
made this possible if the user specified (LINES,0) on his !LDEV          DCP F00
command;  however, pages-printed accounting does not work correctly in   DCP F00
this case.  This new patch plugs that loophole and also provides some    DCP F00
additional functionality.                                                DCP F00
                                                                         DCP F00
    Since we have no way of releasing a stock version of a patch for     DCP F00
this problem that would satisfy everyone, much of this patch is          DCP F00
supplied in boot-time conditional form and/or is dependent upon the      DCP F00
setting of certain patchable/ANLZ-able bits in the COMBAT routine.  We   DCP F00
strongly suggest that the installation's analyst (not the FED person,    DCP F00
but the in-house customer programmer) take the time to write up a few    DCP F00
test cases to make sure that this patch (in whatever flavor you apply    DCP F00
it) does what is desirable for your site and has no undesirable side     DCP F00
effects.  It seems to work properly on our test systems under all the    DCP F00
test conditions that we can throw at it;  PCL was used to copy the       DCP F00
patch file to the line printer, and a simple METASYMBOL program was      DCP F00
used to write to the printer via M:LO, M:DO, and M:UO - all the          DCP F00
results were as expected.                                                DCP F00
                                                                         DCP F00
    The patch may be installed exactly as released, with no              DCP F00
installation-specific bells and whistles attached.  This will provide    DCP F00
the paper by mounting a VFU ribbon without an "end of page" marker, by   DCP F00
specifying (LINES,0) on your !LDEV command, and by *not* specifying a    DCP F00
(LINES,n) parameter for your DCB(s) (i.e., your DCB must specify LPP=0   DCP F00
which means "use the default value from the stream's context block").    DCP F00
                                                                         DCP F00
    If you wish to have more functionality than this, you may add        DCP F00
cards to your patch deck to enable some or all of the additional         DCP F00
features of this patch.  The following explanations will assume that     DCP F00
the patch itself is on the PO tape and that the indicated                DCP F00
installation-specific form-control patches are in the card deck, since   DCP F00
that's the way most installations seem to run things;  if your site      DCP F00
puts everything on the PO tape or (yecchh) on cards, no major changes    DCP F00
need be made.                                                            DCP F00
                                                                         DCP F00
    To activate the "level 1" functionality of this patch, specify:      DCP F00
                                                                         DCP F00
         #LINES0=1                                                       DCP F00
                                                                         DCP F00
at the beginning of your patch deck.  This modifies LDEV to pass both    DCP F00
the workstation default lines-per-page value as well as the              DCP F00
user-specified value down to OPNLD.  At the moment, nothing much is      DCP F00
done with the default value;  it is provided to let you determine        DCP F00
build their own M:LDEV FPTs for remote workstations.                     DCP F00
                                                                         DCP F00
    The "level 1" mode also modifies the "Syyndd SETUP REQUIRED"         DCP F00
message.  When a local device needs to have its form changed, the        DCP F00
message "Syyndd NEEDS FORM yyyy" will be printed, where "yyyy" is the    DCP F00
form that should be mounted (the operator is not required to mount       DCP F00
form "yyyy"; the printer could be left with the current form mounted,    DCP F00
or another form could be mounted if there was more output queued up      DCP F00
for that form).  If the system wants the operator to remove the          DCP F00
current form and return to stock paper, the form name "yyyy" will        DCP F00
appear as four double-quotes (i.e., '""""').                             DCP F00
                                                                         DCP F00
    N.B. - the "level 1" modifications (which are applied in "level 2"   DCP F00
mode also) involve modifications to RBBAT's static data area, and can    DCP F00
be made successfully only if there is no copy of RBBAT's static data     DCP F00
on the swapping device.  They may thus be initially installed during a   DCP F00
full boot (with the "F" option), or may be installed by booting the      DCP F00
system from tape without a prior "ZAP" and responding "NO" to the        DCP F00
"ATTEMPT BATCH QUEUE RECOVERY?" message.                                 DCP F00
                                                                         DCP F00
    "Level 2" functionality may be enabled by adding the card            DCP F00
                                                                         DCP F00
                                                                         DCP F00
to your patch file.  This will cause code for most of the "bells and     DCP F00
whistles" to be patched into the system;  it requires almost seven       DCP F00
times as much patch space as "level 1", and requires that you also       DCP F00
define a "forms table" which contains the names and line counts for      DCP F00
forms to be treated specially.  The forms table should be defined in     DCP F00
the following manner:                                                    DCP F00
                                                                         DCP F00
         #S:FORMS=@                                                      DCP F00
         /@/0/                                                           DCP F00
         /@/'ZE51'/                                                      DCP F00
         /@/'ZE66'/                                                      DCP F00
         /@/0/                                                           DCP F00
         #S:ZLINE=@                                                      DCP F00
         /@/.27334227/                                                   DCP F00
                                                                         DCP F00
    The forms table is expandable as required according to the           DCP F00
following rules:                                                         DCP F00
                                                                         DCP F00
    1)   You may define as many form names as desirable.  The first      DCP F00
         and last entries must be zero - the last entry is reserved      DCP F00
         for the "no form name specified" case, and the first entry is   DCP F00
         table entry" case.                                              DCP F00
                                                                         DCP F00
    2)   S:FORMS is a word table containing the form names.              DCP F00
                                                                         DCP F00
    3)   S:ZLINE is a byte table containing the "printable lines per     DCP F00
         page" counts (or "total lines per page" counts - your choice)   DCP F00
         for the forms defined in the S:FORM table.  The two tables      DCP F00
         are in parallel and *must* have the same number of entries if   DCP F00
         the patch is to work properly.                                  DCP F00
                                                                         DCP F00
    At this point, all of the "bells and whistles" code has been         DCP F00
installed, but much of it is not yet active.  If you specify (LINES,0)   DCP F00
on your !LDEV command, you will get a banner with the installation's     DCP F00
default lines-per-page size, rather than a one-line banner (or no        DCP F00
banner at all) that had occurred previously.   Also, your users won't    DCP F00
be able to cheat by specifying (LINES,255) in their DCBs - they'll get   DCP F00
charged properly according to the installation default line count.       DCP F00
                                                                         DCP F00
    Before going further, you should try running your system for a       DCP F00
while using a VFU tape without an "end of page" hole.  Most of your      DCP F00
output should print OK without the hardware check for end-of-page.       DCP F00
Certain system-oriented stuff (e.g., HGP reconstruction output and the   DCP F00
routines that generate such output depend on the printer's hardware      DCP F00
check to keep things loking nice.  This is perhaps unfortunate but       DCP F00
would require far too much code and time to fix.                         DCP F00
                                                                         DCP F00
    Once you've tested out the basic operation of the "level 2" mode     DCP F00
of the patch, you can start activating additional features as desired.   DCP F00
These features are controlled by bits in a word in the COMBAT module,    DCP F00
and can be activated or deactivated by XDELTA patches at boot time or    DCP F00
by ANLZ DELTA.  The bits are used as follows:                            DCP F00
                                                                         DCP F00
         Bits 28 through 31 are reserved, and should contain the value   DCP F00
                   '1001'B (.9 hex).                                     DCP F00
                                                                         DCP F00
         Bit 27    if on, permits the patch to access the S:FORM         DCP F00
                   tables to locate forms and select lines-per-page      DCP F00
                   counts.  If off, the S:FORMS table is not accessed.   DCP F00
                                                                         DCP F00
         Bit 26    If on, users with privilege levels less than .C0      DCP F00
                   cannot use any form name not defined in the S:FORMS   DCP F00
                   table.  Any attempt to use a form not defined in      DCP F00
                   the table will cause the user to be errored with a    DCP F00
                   "B704 Function illegal for device" error.             DCP F00
                                                                         DCP F00
         Bit 25    If set, even users of .C0 or greater privilege        DCP F00
                   cannot use form names not defined in the S:FORMS      DCP F00
                   table.  If off, users of .C0 or greater can use any   DCP F00
                   form names that they choose.                          DCP F00
                                                                         DCP F00
         Bit 23    If on, all of the above categories and restrictions   DCP F00
                   will apply to output being printed at remote (RBT)    DCP F00
                   workstation printers.  If off, the workstation        DCP F00
                   default value for lines-per-page will be used for     DCP F00
                   all output to the workstation printers if the user    DCP F00
                   does not specify (LINES,nn) on his !LDEV command,     DCP F00
                   and no form-name restrictions are placed on output    DCP F00
                   directed to a remote workstation.                     DCP F00
                                                                         DCP F00
    For example:                                                         DCP F00
                                                                         DCP F00
         /COMBAT+0/.19 (.9/                                              DCP F00
                                                                         DCP F00
         This activates the switch that lets the patch use the forms     DCP F00
    table for local printers.  If the user's form name matches one of    DCP F00
    the entries in the table, the associated page-size /                 DCP F00
    printable-lines-per-page value will be used when decisions are       DCP F00
    made about page ejects, page counts, and banners.  If the user       DCP F00
    lines;  printing across the page fold will be permitted if the       DCP F00
    printer's VFU ribbon is set up properly.  If the user says           DCP F00
    (LINES,n) where "n" is greater than the default value for the form   DCP F00
    in question, pagination and accounting will be performed based on    DCP F00
    the default value rather than on the user's specified size.  If      DCP F00
    the user specifies a form name not defined in the table, the         DCP F00
    zeroth entry of the table will be used.                              DCP F00
                                                                         DCP F00
         /COMBAT+0/.39 (.9/                                              DCP F00
                                                                         DCP F00
         In this mode, the system will not permit users to request any   DCP F00
    local line-printer form not defined in the forms table unless they   DCP F00
    have .C0 privilege or better.                                        DCP F00
                                                                         DCP F00
         /COMBAT+0/.79 (.9/                                              DCP F00
                                                                         DCP F00
         In this mode, not even .C0 privilege users can request local    DCP F00
    line-printer forms other than those defined in the forms table.      DCP F00
                                                                         DCP F00
         /COMBAT+0/.179 (.9/                                             DCP F00
                                                                         DCP F00
         In this mode, all of the above applies to remote workstation    DCP F00

                                                                         DCP F00
    Some combinations of the above options don't make sense and          DCP F00
shouldn't be used.  For example, don't use .169 and expect anything      DCP F00
reasonable to happen.                                                    DCP F00

