[comp.os.vms] Problem with define/form

JEREMYM@EPVAX.SUSSEX.AC.UK (02/04/88)

I am using a laserjet II, and have defined setups for the various
fonts that we wish to use. The modules in the device control library
contain just the escape sequence to initialize the printer.

All works fine, but I get a blank sheet of paper printed for each of the
setup and reset sequences.  Is there anyway to get around this?

These are the setups we use:

$ set printer/cr/lowercase/printall/passall lca0:
$initialize/queue/start/lib=laserjetlib/on=lca0: -
    /separate=(reset=reset,noburst,noflag,notrailer)
       /default=(noflag,noburst,notrailer,form=prestige) laser
$define/form/stock=default prestige 1 /desc="Portrait Prestige" -
        /setup=(prestige) /length=70/wid=96/margin=(bottom=0)/nowrap/notrunc
$define .....etc

---------------------------------------------------------------------------
Jeremy Maris
Experimental Psychology, | JANET       : jeremym@uk.ac.sussex.epvax
University of Sussex,    | EAN         : jeremym%sussex.epvax @ EAN-RELAY.AC.UK
Falmer,                  | EARN/BITNET : jeremym@epvax.sussex.ac.uk
Brighton,                | ARPA        : jeremym@epvax.sussex.ac.uk  *OR*
E.Sussex BN1 9QY         | ARPA        : jeremym%sussex.epvax@ukacrl.bitnet
UK                       | usenet      :  ...mcvax!ukc!epvax!jeremym
Tel: +44 (0)273 678060




-------

LEICHTER@VENUS.YCC.YALE.EDU ("Jerry Leichter ", LEICHTER-JERRY@CS.YALE.EDU) (02/09/88)

	I am using a laserjet II, and have defined setups for the various
	fonts that we wish to use. The modules in the device control library
	contain just the escape sequence to initialize the printer.

	All works fine, but I get a blank sheet of paper printed for each of
	the setup and reset sequences.  Is there anyway to get around this?

No; the best you can do is save the sheets and re-use them.  What is hap-
pening is simple, if annoying.  The print symbiont wants the printer to be
in a "known state" - in particular, at the top of a page - at certain points,
such as just before starting to print the first page of actual data.  It sends
a form feed, putting the printer there, BEFORE sending the reset or setup
module.  The problem it then has is:  Did the reset or setup module move the
paper?  To answer this question, the symbiont scans the data in the reset or
setup module for "printable" characters, which might "move the carriage".  It
recognizes ANSI-format escape sequences, and assumes they do NOT produce
printable characters.  Unfortunately, the sequences used by LaserJets are
NOT in ANSI format, and in fact if you try to parse them as ANSI-format
sequences, you'll find that you pretty much always end up with a character
that, to the LaserJet, is part of a control sequence, but in ANSI terms would
be just a printing character.  So, the symbiont decides the reset or setup
module has moved the paper, and it issues another form feed to get things
back where they belong.

At various times, I've seen claims that there was a hack (bug?) in the
symbiont such that, if the setup or reset module actually contained a form
feed, the form feed would NOT be sent to the printer, but the symbiont would
decide that IT didn't need to send one either.  This would avoid the problem,
but I've never managed to get it to work.  If you experiment with this and
succeed, I'd be interested - it's annoying to have to save those extra sheets.

							-- Jerry

hydrovax@nmtsun.nmt.edu (M. Warner Losh) (02/12/88)

In article <8802110418.AA13011@ucbvax.Berkeley.EDU>, JEREMYM@EPVAX.SUSSEX.AC.UK writes:
> I am using a laserjet II, and have defined setups for the various
> fonts that we wish to use. The modules in the device control library
> contain just the escape sequence to initialize the printer.

We have a LaserJet+ hooked to our system and are about to get a LaserJet II
There were some initial problems, but not it works great.

> All works fine, but I get a blank sheet of paper printed for each of the
> setup and reset sequences.  Is there anyway to get around this?

There is a way, but it is gross beyond belief :-)

> 
> These are the setups we use:
> 
> $ set printer/cr/lowercase/printall/passall lca0:

Good.  This is correct.  We have modem enabled on ours so that it barf at 9600
baud.  Never could get flow control working correctly.

> $initialize/queue/start/lib=laserjetlib/on=lca0: -
>     /separate=(reset=reset,noburst,noflag,notrailer)
>        /default=(noflag,noburst,notrailer,form=prestige) laser
Ditto the good here.
> $define/form/stock=default prestige 1 /desc="Portrait Prestige" -
>         /setup=(prestige) /length=70/wid=96/margin=(bottom=0)/nowrap/notrunc

Here is where you run into problems.  I did this on our system for a long
time until the users started complaining about extra pages coming out.  I
did a lot of things to try to fix it, even writing a custom print symbiont.
All except one failed.

First some background.  In the Orange doc set (System management AND release
notes) it tells how to set this stuff up.  There is a comment that files that
have what looks like printable text in the setup module will force an extra
page (bug or feature?  You decide).  The problem is that HP uses non-ANSI
escape sequences for their printers.  So, VMS's symbiont thinks that there is
some garbage that the user wants on the first page.  Well, in this case that
is not correct, since the "garbage" isn't printing.  This is the point that
we stayed at for months while I tried various different (and wrong) ways
of getting the printer to stop printing extra pages.

Then it hit me, why not have a setup for each page of the print-out so that
you don't get these extra pages?  This is what we have been doing now for the
past few months.  The only time we EVER get a blank page is when the system
reboots or when the SYMBIONT starts.

Here's the commands for the curious:

$ DEFINE/FORM/DESCRIPTION="Compressed output"/LENGTH=82/WIDTH=132 -
	/PAGE_SETUP=COMPRESS/STOCK=DEFAULT COMPRESS 100

Notice the use of /PAGE_SETUP instead of /SETUP.  VMS doesn't care what
you place in this module, so it doesn't do anything special to it.

I hope that this helps.
-- 
bitnet:	losh@nmt.csnet			M. Warner Losh
	warner@hydrovax.nmt.csnet    ! Don't know if this works, let me know.
csnet:	warner@hydrovax.nmt.edu
uucp:	...{cmcl2, ihnp4}!lanl!unmvax!nmtsun!warner%hydrovax

klb@philabs.Philips.Com (Ken Bourque) (02/16/88)

>Then it hit me, why not have a setup for each page of the print-out so that
>you don't get these extra pages?  This is what we have been doing now for the
>past few months.  The only time we EVER get a blank page is when the system
>reboots or when the SYMBIONT starts.

This works fine, but if the reason for wanting the setup is to reset the
printer to a known state after each job, you don't want to be doing that
after every page.

Somewhere in one of the System Dispatches DEC claims that if you make the
contents of the reset module look like a VT240 escape sequence you will
avoid the extra form feeds.  I tried this - no luck.  Since it is easy to
put an explicit form feed in the reset module if you want one, I can't
fathom why VMS should try to give you one whether you want it or not.

-- 
Ken Bourque    klb@philabs.philips.com    ...!{uunet,ihnp4,decvax}!philabs!klb

SIT.BUSH@CU20B.COLUMBIA.EDU (Nick Bush) (02/18/88)

Actually, there is a very easy way to avoid the blank pages that works
with most devices. The print symbiont will assume that all text that occurs
between a "DCS" character and a "ST" character does not change the position of
the printer, and it will therefore not send a form feed afterwards.  This
can be used with any device which will ignore the "DCS" and "ST" characters.
These two characters are eight bit control characters which can also be sent
as two character strings. "DCS" (mnemonic for "Device Control String") can be
represented by <ESC>P, and "ST" (mnemonic for "String Terminator") can be
represented by <ESC>\.

LaserJets (and other HP printers) ignore the DCS and ST strings, so it is
possible to place the DCS before the setup string and follow it with ST
without a problem.  I have used this on a number of HP printers and it works
quite well - no undesired blank pages at all.

- Nick Bush
  Sterling-Winthrop Research Institute
  Rensselaer, NY  12144

Internet: SIT.BUSH@CU20B.COLUMBA.EDU
BITnet:   SIT.BUSH@CU20B.BITNET
-------

John_H_Bruestle@cup.portal.com (02/27/88)

I also have the blank-page problem, but I'm using an LN03 printer.  Seems
that I shouldn't have a problem according to the current theory.  Any
ideas?