Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!husc6!seismo!munnari!moncskermit!jam From: jam@moncskermit.UUCP Newsgroups: comp.os.vms Subject: Re: when using control libraries (Info-Vax Digest V0 #19) Message-ID: <445@moncskermit.oz> Date: Thu, 14-May-87 07:36:27 EDT Article-I.D.: moncsker.445 Posted: Thu May 14 07:36:27 1987 Date-Received: Sat, 16-May-87 15:18:58 EDT References: <8705130050.AA15148@ucbvax.Berkeley.EDU> Distribution: world Organization: Comp Sci, Monash Uni, Australia Lines: 101 Summary: How to stop some of the blank pages >"Andrew J. Grigor" wrote > Earlier someone called the print symbiont brain dead since it insisted > on sending a to the printer after configuring the printer using > specified modules in the control library. It is merely paranoid. The > print symbiont has no idea how the modules in the control library will > affect the printer. By performing a the printer is in a known > state (upper left hand edge...whereever it may be). > We have a QMS Lasergrafix with the QUIC command controller. ... > I am currently living with the blank pages. I can sleep at night since > the extra scrap generated goes to the Boy Scout's paper drive and is not > totally wasted. There is no need to live with these blank pages forever. Just apply this simple patch (:-) : -------------------------- smbsrvshr.com ------------------ $ patch/jou smbsrvshr.exe ! Patch the File Flag routine to not supply a form feed. (null instead) ! VMS 4.4 fiche 369 K10, 371 H6 def file_flag=7c1 rep/i file_flag+90 ' MOVB #0C,(R3)' exit ' MOVB #0,(R3)' exit update exit ----------------------------------------------------------- At Monash we have a QMS 800 (QUIC) printer driven by a font manager print symbiont (TFMSMB) from Talaris. The printer is located inside our job reception area and runs at just under 1000 pages per day and so it is important to have job flag pages but little wastage. When it was first set up we were spitting out a lot of blank paper, and now after a few iterations on the problem we waste very few. I think we get one blank page when the queue gets started, and perhaps a blank page if you do a print/noflag. It was almost a year ago that I last touched this problem so I can't remember all the details but here goes: I fiddled with TALDEVCTL.TLB (the device control library) a little bit for local conditions but dont think't that decreased the number of blank pages. I changed QTEX (the QUIC TeX printer driver) for A4 size pages and to omit the "^," (throw a page command) at the end of the job. I also hacked the plot packages (NCAR etc.) so that they produced as few blank pages as possible. The major problem is the number of FFs that the Print Symbiont wants to generate itself. I read the fiche in VMS V4.3 days and determined where they all came from. In the VMS V4.4 manuals starting at PSM-27 descriptions of the input routines that generate FFs are referenced by PSM$K_FILE_FLAG, PSM$K_FILE_SETUP_2, PSM$K_FILE_TRAILER, PSM$JOB_COMPLETION, PSM$K_JOB_FLAG, PSM$K_JOB_SETUP, and PSM$K_JOB_TRAILER. See page PSM-16 for the order in which the PSM input routines will be called if required. There is some new_page code (in the formatter) that looks at the data stream and if it sees a formfeed and if it thinks that the printer is already at line 1 column 1 then it decides the FF is superflous and throws it away. In our environment, FORM_SETUP moved the virtual print position away from line 1 column 1, and so the FF at the beginning of FILE_FLAG caused a page throw. My solution (the patch given above) excises the FF from the FILE_FLAG subroutine. This solution did not require any changes to Talaris' TFMSMB. Most of our other printer symbionts print over a terminal network and their queues are only started when they are not empty. In this case our output subroutine tricks the new_page, column 1, line 1 logic to avoid the blank page when the queue is started. Some of our other symbionts have had their JOB_SETUP and JOB_COMPLETION routines replaced by the dummy: --------------------- no_ff.for ----------------------------- integer function no_ff (context, work_area, func, func_desc, 1 func_arg) implicit none integer context, work_area, func, func_desc, func_arg external psm$k_read, psm$_eof, psm$_funnotsup if (func.eq.%loc(psm$k_read)) then no_ff = %loc(psm$_eof) else no_ff = %loc(psm$_funnotsup) endif return end ------------------------------------------------------------ I don't think the print symbiont is brain dead or paranoid. I think the developers did make an improvement on the VMS V1/2/3 symbionts, perhaps they got a bit too worn out to cater for all non-DEC printers. John Mann PS. Anyone tried using the VMS include-a-file-here escape sequence in a device control library to include a setup module without changing the virtual print position? -- --- John Mann, Computer Centre, Monash University, Victoria 3168, Australia ACSnet: jam@moncskermit.oz Phone: +61 3 565 4774 UUCP: ...!{seismo,hplabs,mcvax,ukc,nttlab}!munnari!moncskermit.oz!jam ARPA: jam%moncskermit.oz@seismo.CSS.GOV "Any code from DEC with an IF statement in it is fair game for Patch"