20-Aug-87 08:46:00-MDT,18698;000000000000 Date: Thu 20 Aug 87 08:46:00-MDT From: "Nelson H.F. Beebe" Subject: DVI driver family update #10 To: "DVI mailing list": ; cc: BEEBE@SCIENCE.UTAH.EDU, "new addresses": ; X-US-Mail: "Center for Scientific Computation, South Physics, University of Utah, Salt Lake City, UT 84112" X-Telephone: (801) 581-5254 Message-ID: <12328007179.15.BEEBE@SCIENCE.UTAH.EDU> DVI Driver Family Update #10 [18-Aug-87] Version 2.08 of the driver family is now ready. Except for the Atari support, this is a maintenance release only, with minor cleanup, a couple of small bug fixes, and cosmetic changes to make the installation process smoother, with no unnecessary compilation warning messages which have been causing concern to some users. Unless you have been impacted by one of the bugs, or want the Atari support, or the test version of the Canon LBP-A2 driver, it should not be necessary to update your sources. I will, however, provide the European redistribution sites for Bitnet and Janet with up-to-date versions. Because these changes affect a large number of modules, it is not worthwhile here to provide difference listings. This work had to be completed in time for me to make new master diskettes to take to the TUG meeting in Seattle next week. I had hoped to finish the support for resident Imagen fonts in time for this release, but it will have to wait. Beginning September 1987, I expect that IBM PC floppies of the DVI driver family will be available from from Personal TeX. The details will be ironed out at the TUG meeting next week, and announced on TeXHaX and this mailing list. For the European Bitnet server: Contact rz92@dhdurz1.bitnet For the British Janet server: Contact AbbottP@uk.ac.aston.mail The subject of how to set up a VMS printer spooler for the HP LaserJet has come up repeatedly. Portia Shao reported the following approach recently: >> Date: Wed, 13 May 87 18:42 PDT >> From: Portia 616-2635 >> Subject: re: setting up HP laserjet + >> >> In response to the person asking about setup modules etc for the laserjet+ >> >> This is how we set up our HP laser jet + on our microvax II. >> >> in systartup.com we have: >> $define/system laserjet $terminal7: ! substibute your terminal line here >> $set terminal laserjet/perm/nobroadcast/notypeahead/nowrap - >> /speed=9600/width=80/page=0/device_type = unknown >> $set device /spooled=(sys$print, sys$sysdevice:) laserjet >> $initialize/queue/start/lib=laserjetlib/separate=(reset=reset) - >> /on=laserjet/default=flag sys$print >> $define/form/stock=default portrait 1 /desc="Portrait Courier" - >> /setup=(portrait) /length=60/wid=80/margin=(bottom=0)/nowrap/notrunc >> $define/form/stock=default landscape 2 /desc="Landscape"/setup=(landscape) - >> /length=45/wid=132/margin=(bottom=0)/nowrap/notrunc >> $define/form/stock=default compressed 3 /desc="Compressed Portrait" - >> /setup=(compressed) /length=80/wid=120/margin=(bottom=0) - >> /nowrap/notrunc >> >> and we have the following modules in sys$library:laserjetlib.tlb >> COMPRESSED,LANDSCAPE,PORTRAIT,RESET >> >> where compressed.txt has the following ONE line >> >> E&l0O&a5l80M&a0R&l8D&l80F(8U(s0p16.66h >> 8.5v0s0b0T >> >> landscape.txt has the following ONE LINE >> >> E&l10&l55F(8U(s0p10h12v0s0b3T >> >> portrait.txt has the following ONE line >> >> E&l0O&a5180M&a0R&l60F(8U(s0p10h12v0s0b3T >> >> and reset.txt has the following line >> >> E >> >> -- Portia Shao UUCP -- {allegra|ihnp4}!scgvaxd!engvax!portia >> Hughes Aircraft Co. ARPA -- portia@engvax.scg.hac.com >> or -- portia%engvax.uucp@oberon.usc.edu >> (213) 616-2635 >> Jerry Leichter at Yale has extended this, and here is his current recommendation: >> Reply-To: "Jerry Leichter" >> >> The HPLJ setup I use is derived from Portia's, with some >> changes here and there. (I've sent mine back to her.) >> >> SET TERM/NOINTERACTIVE, which is a synonym for /PASSALL, is >> WRONG. (It's also obsolete, and no longer appears in >> current documentation.) The problem with doing that is that >> it disables XON/XOFF handling. The Laserjet uses XON/XOFF >> signaling; I don't know to what extent it might happen >> during normal operation, but it will certainly XOFF the host >> if, for example, it runs out of paper. If the line is set >> /NOINTERACTIVE, you can lose characters. With XON/XOFF, I >> am running my Laserjet at 19.2KB, rather than 9600. The >> speedup is minor, but it IS there. I suspect the printer >> WILL send XOFF's at this speed on a fairly regular basis, >> since it's faster than the printer can actually print! >> >> The setup I use is: >> >> $ define/system SYS$LASERJET CSA0: >> $ set terminal SYS$LASERJET/perm/nobroadcast/notypeahead/nowrap - >> /speed=9600/width=80/page=0/device_type=unknown >> $ set device /spooled=(SYS$PRINT,SYS$SYSDEVICE:) SYS$LASERJET >> $ initialize/queue/start/lib=laserjetlib/separate=(reset=reset) - >> /on=SYS$LASERJET/default=(flag,form=portrait) SYS$PRINT >> $ define/form/stock=default portrait 1 /desc="Portrait Courier" - >> /setup=(portrait) /length=60/wid=80/margin=(bottom=0)/wrap/notrunc >> $ define/form/stock=default landscape 2 /desc="Landscape"/setup=(landscape) - >> /length=45/wid=132/margin=(bottom=0)/wrap/notrunc >> $ define/form/stock=default compressed 3 /desc="Compressed Portrait" - >> /setup=(compressed) /length=80/wid=120/margin=(bottom=0) - >> /wrap/notrunc >> $ define/form/stock=default clandscape 4 /desc="Compressed Landscape" - >> /setup=(clandscape) - >> /length=64/wid=176/margin=(bottom=0)/wrap/notrunc >> >> (This is on a MicroVAX, with the printer connected to the >> console port. The printer has an additional font cartridge, >> which contains the font used by the CLANDSCAPE form. >> /speed=9600 on the set terminal command is wrong (I actually >> run at 19200) but irrelevent since the port involved doesn't >> have a software-settable speed anyway. There are a set of >> forms definitions to go with this; they require some editing >> to mail because of embedded control characters, but I can >> send them to anyone who wants them.) >> >> I print both normal text files and DVI files with this >> printer; the only thing you MUST do is include /PASSALL on >> the PRINT command for a DVI file. (Note: The use of the >> same qualifier, /PASSALL, on both SET TERM and PRINT is >> unfortunate, as they mean different things. SET >> TERM/PASSALL is obsolete and should not be used. >> PRINT/PASSALL is very much alive and needed here. >> To save me some writing, I'm including below the verbatim change log history between 22-Jun-87 (Newsletter #9) and now. [14-Aug-87] {Thanks to Matthias Moritz (U608017@NHYKUN11.EARN) for Atari support additions} Merged in support for the Atari 520ST+ using the Mark Williams C Compiler. makefile.ast should build it. Since this involves changes in many routines, I took the opportunity to introduce a few other changes as well, and incremented the version number of dvi*.c from 2.07 to 2.08. The new versions should be functionally identical to the previous ones for virtually everyone. The Mark Williams compiler has some limitations, and could not handle long macro definitions, in particular DEBUG_OPEN and FONTLIST. I have therefore made DEBUG_OPEN() expand to dbgopen(), where the latter is defined at the end of dviinit.h; this does not follow my standard practice of one function per file. FONTLIST was simply removed, and the two instances of its use were replaced by its definition. There are about 40 instances in the driver source code of macros continued over multiple lines. They are written that way to prevent long lines in the source code (80 is the absolute limit), which is an even more serious barrier to portability. The default stacksize on the Atari is often too small; for the time being, main programs have been set to declare a larger stack. On PC DOS (which Atari GEMDOS resembles), the Microsoft EXEMOD utility can be used to change the stacksize of an executable program without requiring code modification. I don't know whether there is something similar on the Atari. I removed the OS_xxxx-dependent conditional code in dvi*.c for output file extension selection, by introduction of a new variable, DVIPREFIX, in machdefs.h. This is prepended to the default file extension, which is now always identical to the letters following dvi in the dvi*.c files. On systems which do not support long file extensions, it will be a null string; otherwise, it will be "dvi-". In dvialw.c, a genuine BUG surfaced; PSDEF_PATH should be #define'd to be subpath instead of SUBPATH. Otherwise, it cannot be overridden by an environment variable. Thanks to Matthias Moritz for catching this one. An experimental version of a Canon A2 driver has been added as dvica2.c, based on work by Pekka Pietilainen (TFYS-PP@FINOU.BITNET), starting from dvican.c. I have merged in his changes and removed Unix-isms. This driver is intentionally not included in the Makefiles. Only a few sites have the Canon A2 printer, and once more experience is obtained, it may replace dvican.c. If you have such a printer, you can easily modify the appropriate Makefile to support it, or you can just compile and load dvica2 manually. For debugging purposes, three additional option switches are accepted in option.h; they will disappear as the code settles. More experience with the drivers at many VAX VMS sites has indicated that variable-length record files for the output are probably undesirable until DEC gets its act in gear and makes all VMS utilities handle such files properly. I have therefore modified the code in dviinit.h to use the fixed-block binary format for all but POSTSCRIPT devices (for which the output is truly an ordinary text file); previously, this format was only selected for IMPRESS (dviimp). For non-Unix operating systems, it is generally necessary to open binary files differently than text files, since the C-runtime libraries use that distinction to decide how to translate Unix line terminators. Every system so far has used the letter "b" in the fopen() mode string to select this mode, and every Unix system ignores the "b", except Ultrix, which raises a run-time error, sigh... I have therefore replaced the mode string by RB_OPEN and WB_OPEN, and they are set in machdefs.h. For all Unix systems they will be "r" and "w", and for most non-Unix systems, "rb" and "wb". Lines longer than 80 characters in *.c and *.h files have been wrapped. The header "%!PS-Adobe-1.0" in dvialw.c has been shortened to "%!"; the Adobe TranScript spooler software thinks it is allowed to do page reversal when it sees this, but dvialw output pages cannot be reordered because fonts are defined only on demand. The similar header in lptops.c is all right; the pages there ARE independent. The sources have been run through 4.2BSD lint and System V lint. A number of missing typecasts have been supplied, and several unreferenced local variables have been eliminated. lint still produces many warnings, but the remaining ones seem to be benign, or simply red herrings. lint revealed numerous problems with texidx.c (which came from the GNU Project). I have eliminated unused variables and functions, but there remain some serious errors of incorrect argument lists to sort_in_core() and sort_offline(). I am not proposing to fix these now, because at least 3 comprehensive indexing packages for TeX have appeared recently, and texidx.c may rapidly become obsolete. I have changed the handling of some preprocessor symbols in several routines so as to eliminate redefinition warnings, and any assumptions that undefined symbols evaluate to 0. The draft ANSI C standard REQUIRES that all undefined symbols evaluate to 0 in preprocessor expressions, but many compilers to do yet follow this rule (VAX VMS C in particular). [15-Aug-87] {Thanks to Julian Perry (seismo!mcvax!zen.co.uk!jules)} The code in option.h in the -o switch section that forced page_begin[npage] <= page_end[npage] conflicts with negative page numbers for counting from the end. I have removed the code there, and then in dvifile.h, before the main page loop, inserted code to reset the page_begin[] and page_end[] arrays to positive values (this can only be done after page_count is known), and to order them properly. [10-Aug-87] {Thanks to Gary Beihl (beihl%bell.cad.mcc.com@mcc.com)} In lw78.c and dvialw.c, change instances of time(0) to time((long*)NULL). [27-Jul-87] {Thanks to Charles Karney (Karney%ppc.mfenet@nmfecc.arpa)} Here are two small changes to vaxvms.c: In vmsexit(), we turn on a high bit on a non-zero status code to suppress a useless VMS message: 150,151c150,151 < exit((1 << 28) + 2); /* error */ < break; /* (suppresses %NONAME-E-NOMSG) */ --- > exit(2); /* error */ > break; 457d456 In system(), add a test for the status code returned by LIB$SPAWN; for the MAKE utility, this allows recognition of errors returned from a compilation. < int stat; 463,464c462 < return ((LIB$SPAWN(&t,0,0,0,0,0,&stat) == SS$_NORMAL) < && ((stat & 1) > 0)) ? 0 : 127; --- > return (LIB$SPAWN(&t) == SS$_NORMAL) ? 0 : 127; [20-Jul-87] Updated cross-referencing awk scripts for use on Sun OS 3.3 using standard cxref utility, replaced old x*.awk by xref, xref1.awk, xref2.awk, and xref3.awk, and replaced dvi.lrf and dvi.rby by dvi.xrf. [20-Jul-87] {Thanks to Eric M. Carroll (Eric.M.Carroll@uunet.uu.net)} In dvialw.c, getlogin() can return a NULL pointer, so we need to guard against that. Change (void)fprintf(plotfp,"%%%%Creator: %s and ",getlogin()); to (void)fprintf(plotfp,"%%%%Creator: %s and ", (getlogin() == (char*)NULL) ? "" : getlogin()); [08-Jul-87] Update makefile.* to reflect new dvil3p, and remove obsolete makefile.eun (for Eunice). [08-Jul-87] Add symbol DECLN03PLUS and change SUBPATH for Unix from /usr/lib/tex/inputs/ to /usr/lib/tex/macros to match Washington TeX distribution. [08-Jul-87] In gblprocs.h, add OS_VAXVMS to the list of hosts where sprintf() is not declared (because it is in system include files). [08-Jul-87] Change type of main() from void to int in gblprocs.h and main.h to bring them into conformance with the draft ANSI C Standard. [08-Jul-87] In fontfile.h, changed VMS section to allow for the possibility that TEXFONTS is a logical name list (thanks for John Sauter for this). [08-Jul-87] {Thanks to John Sauter (Sauter@dssdev.dec.com)} Add dvil3p.c for DEC LN03+ printer. [08-Jul-87] In dvil75.c in prtbmap(), change OUTC('-') to OUTS("-\n") so as to avoid long output lines. -------