WHAT IS THE EXITSERVER COMMAND? As discussed in README.1ST, at pp. 5-6, the main difference between DIGIDA.INI and DIGIDA.PS -- the two alternative forms of the Digital Daguerreotypes prologue file -- is simply that DIGIDA.INI includes a built-in exitserver command. Further, there you'll find it easier to use DIGIDA.INI with most PostScript implementations -- but DIGIDA.PS preferable in situations where the exitserver command may not be supported, or may require a special password, or where a user such as a service bureau prefers not to have this command embedded within a file. If you are unfamiliar with PostScript esoterica, you might find this whole discourse a bit perplexing. If you are a decided PostScript habitue, you might ask, "What's this major concern with exitserver -- don't applications (let alone font files?) use it routinely?" Therefore we provide this rough and ready explanation. HOW POSTSCRIPT USUALLY MANAGES THE SERVER LOOP A typical PostScript device may run many jobs between initializations -- and each job can allocate memory, change various parameters, or even redefine the basic PostScript operators. Sometimes yet more disconcertingly, it could even redefine the redefinitions already in place for a given system -- such as fine-tuning the grayscale mapping (transfer function), or keeping track of the pages printed on an imagesetter to signal when a new roll of paper is needed. To control the potential chaos at least somewhat, PostScript therefore includes a "server loop" which normally saves the state of virtual memory (VM) before each job, and restores it after each job. This helps to provide a consistent "ground state" for each job, independent of the vagaries of earlier jobs -- and also to conserve VM by reclaiming it after each job. However, it is necessary at times to escape from this server loop in order to have a PostScript file remain resident after it is processed by the interpreter. Downloadable font files are an obvious example -- and the Digital Daguerreotypes prologue is another. Note that here the font or prologue file typically does not itself produce output, but DEFINES PROCEDURES which subsequent jobs can then call. In the case of a font file, these procedures are called by subsequent documents to image font characters. In the case of Digital Daguerreotypes, these procedures are called to produce various artwork objects and effects. Many PostScript implementations built into printers or other output devices -- and some system-based implementations -- support a device-specific command called exitserver for this purpose of escaping the server loop. -1- HOW EXITSERVER WORKS The default exitserver command for supporting PostScript language environments -- a command included within DIGIDA.INI -- is serverdict begin 0 exitserver Here the code serverdict begin places the PostScript dictionary serverdict on the dictionary stack; 0 is actually the default password in many systems to validate the following exitserver command itself. Thus if DIGIDA.INI is sent to a typical PostScript device with the default password setting unchanged -- or to an interpreter such as Freedom of Press which does not have an actual password setting, but otherwise emulates the exitserver command -- the file should become resident for processing of subseequent Digital Daguerreotypes artwork files. Since this process is automatic, you may find it easiest to use DIGIDA.INI rather than DIGIDA.PS with most desktop PostScript environments. EXITSERVER AND DIGIDA.PS Many PostScript environments which support an exitserver command also have utilities available which can send a PostScript file to the interpreter so as to exit the server loop, and thus cause the file (e.g. DIGIDA.PS) to remain resident in VM until the next initialization of the interpreter. For example, Adobe provides a Downloader utility which can send a PostScript font or prologue file to a PostScript device in the DOS environment, optionally causing it to remain resident in VM. Note that here the exitserver command comes from the utility, NOT from the file itself. This permits user or system administrator control over the server loop, and insures that the loop is exited only by a more or less deliberate decision. If the password has been changed, for example, to something other than the default, then an error condition would result if the default password 0 is sent to the PostScript interpreter. A logical use of the password mechanism is precisely to avoid the casual or unauthorized exiting of the server loop. Therefore DIGIDA.PS does NOT include an exitserver command, but assumes that the command will be supplied by an appropriate utility such as the Adobe font downloaders, or something analogous, for typical situations where such a utility is easily available. -2- IS EXITSERVER A STANDARD POSTSCRIPT OPERATOR? Surprisingly to many users, including myself, the answer is NO. While exitserver is supported on the Apple LaserWriter series of printers and on many other analogous printers and "software only" interpreters, it is not a part of the standard language. Newer types of PostScript environments such as Display PostScript (R) make this point more than academic. Such systems may not support or recognize exitserver -- resulting potentially in an error condition if the command is nevertheless issued. Thus DIGIDA.PS avoids this command, in part to maximize portability. CAN I USE DIGITAL DAGUERREOTYPES ON THE NeXT? While Display PostScript environments like the NeXT may not recognize the exitserver command, they do have an analogous concept of "shared VM" where a font file or prologue may remain resident and available to help in the processing of other files. The idea is to load a prologue such as DIGIDA.PS into "shared VM," specifically into a dictionary called shareddict. A basic discussion of this process appears in Glenn Reid, THINKING IN POSTSCRIPT, Addison-Wesley, 1990, ISBN: 0-201-52372-8, at pp. 47-48. Unfortunately, the suggested code (Example 4.7, p. 47) seems not to include all the operators referred to in the text explaining the example -- Reid refers to a "currentshared" operator which does not appear in the code. Anyone familiar with the correct Display PostScript code to load DIGIDA.PS so that it remains resident in VM is invited to contact the PC Scriptorium; future releases could include an example of the code, assuming that it is not readily accessible through some utility analogous to the Adobe font downloaders for other PostScript devices and operating environments. USING DIGIDA.INI WITH SPECIAL POSTSCRIPT LANGUAGE IMPLEMENTATIONS Using DIGIDA.INI, with its built-in exitserver command, is the only practical solution for processing Digital Daguerreotypes artwork files with some non-Adobe PostScript language implementations. A good example is the Freedom of Press interpreter by Custom Applications, or at least the version for a DOS environment. Here the Adobe downloader utilities are not applicable to this clone interpreter. -3- An interpreter such as Freedom of Press for DOS is radically different from a typical PostScript printer in that the interpreter is initialized each time it is invoked to image a series of files. Thus exiting the server loop usually affects only a small number of print jobs, as opposed to the more traditional situation where exiting the server loop affects all jobs until the printer (or system) is reinitialized. HOW DO I USE DIGIDA.INI IN SUCH A SPECIAL CASE? Special system-based PostScript interpreters, like other PostScript implementations, have various methods for permitting a PostScript font or a prologue to remain resident in VM while other jobs are processed. To illustrate one solution, the appropriate DOS command line for Freedom of Press version 2.2 (the DOS version, naturally) could be: fp! C:\DIGIDA.INI C:\EPS\NONAGON.EPD C:\EPS\RACHTUCK.EPD This command line would load DIGIDA.INI (with its built-in exitserver command to escape the server loop), and then process the Digital Daguerreotypes artwork files NONAGON.EPD and RACHTUCK.EPD. Of course, this sample command line assumes for the sake of the illustration that DIGIDA.INI is in the C:\ directory, and the two artwork files in a C:\EPS subdirectory. Note that DIGIDA.INI remains resident in VM while the two artwork files run -- but needs to be loaded again each time we call the interpreter and want this prologue to be available. The loading process takes about 20 seconds on a 286-10 system, but maybe 4 seconds on a 486-33 system; by developing in the former environment, the present author learned a bit of patience. Note that in a DOS environment with a such an interpreter, you may find yourself rapidly writing some batch files to load DIGIDA.INI automatically, followed by desired artwork files. A very useful variant for artwork creation is to activate a program editor to edit a set filename; and upon exiting the editor automatically to run Freedom of Press with its PCX-File-200 driver; and then automatically to display the resulting 200 dpi PCX file with the freeware PICEM viewer; and finally to return to the editor in a loop which continues until the user interrupts it (e.g. with Control-C). WHAT ABOUT THE SERVER LOOP AND IMPORTED ARTWORK? Just as you need DIGIDA.INI (or in some cases DIGIDA.PS) resident in VM to image Digital Daguerreotypes artwork files directly, so you need the prologue resident in VM when you want to image any document file including such artwork as imported Encapsulated PostScript (EPS) graphics. -4- The problem is analogous to documents with EPS files calling downloadable fonts -- with one critical difference. If an EPS file calls an unavailable font, usually you get Courier in that illustration but the rest of the document images normally. If an EPS file (i.e. an .EPS or .PSD artwork file) calls a Digital Daguerreotype procedure and the prologue isn't available, you get a PostScript error of the type undefined -- and the rest of your document generally doesn't image. Thus it behooves you to know which of your electronic publishing documents use Digital Daguerreotypes artwork, and to be sure that the prologue is available either to your system or -- a fortiori -- to a service bureau imaging your document. As with downloadable fonts, one possible solution is to include DIGIDA.PS together with the document in a single file. If you do choose this "cut and paste" approach, you may find it easier to import an .EPD or .PSD file without the prologue, and then add the prologue to the PostScript output after you print your document to disk with a PostScript printer driver. Importing a 1K .EPD file can be MUCH faster than attempting to import a 145K file. Note that if you choose this route, you should definitely use DIGIDA.PS rather than DIGIDA.INI -- and avoid ANY exitserver command. The command is unnecessary, since the combined prologue-plus-document file is a single job; and it is very undesirable, since the document and its embedded artwork will consume VM which should be reclaimed by the server loop, possibly change definitions or device settings in unfortunate ways for subsequent print jobs, and so forth. ******************************* ON SERVICE BUREAU WORK, PLEASE SEE ALSO THE FILE SERVBUR.TXT ******************************* EXITSERVER: CLOSING COMMENTS AND CAUTIONS Certainly exitserver has its valid uses: in fact, the Adobe Document Structuring Conventions provide comments to note the presence of this command, which you can see in action by inspecting the beginning of DIGIDA.INI. However, the trend in recent years has been away from the casual use of this operator of the sort reported in David Holzgang, UNDERSTANDING POSTSCRIPT PROGRAMMING (Second Edition), Sybex Books, 1988, ISBN: 0-89588-566-2, at p. 352, when exitserver might be routinely invoked by an application prologue. -5- As Holzgang himself notes, ibid. at 438, Adobe and up-to-date programmers had by 1988 very clearly recognized that the exitserver operator should be "reserved for use only in certain specific and well-defined circumstances." As Reid, THINKING IN POSTSCRIPT (see p. 3 above), states forcefully at p. 50: The exitserver operator is not a standard part of the language. It is defined in most printers, but is not usually implemented in display servers... It should never be part of the output of a program, nor should it be used routinely by any program. Thus while DIGIDA.INI with its built-in exitserver command is the easiest version of the Digital Daguerreotypes prologue to use with many typical PostScript language implementations, users should be aware that DIGIDA.PS might be more appropriate in various situations. WHERE I CAN FIND OUT MORE, OR GET TECHNICAL SUPPORT? As explained at the conclusion of README.1ST, the PC Scriptorium offers free technical support (although not a toll-free telephone number) to users of Digital Daguerreotypes. If you would like assistance with the exitserver issue, or other aspects of using or creating artwork files for Digital Daguerreotypes, please feel welcome to contact: The PC Scriptorium c/o Ms. Margo Schulter 5901 Newman Ct. #6 Sacramento, CA 95819-2626 U.S.A. (916) 457-8935 You may also seek technical support on LaserPub, the International Laser Publishing Conference of FidoNet, a free information service made possible by BBS SysOps around the world. -6-