%! %% Laser Doctor, Version 1.0.0 %% Written by Jim Sullivan, January, 1989. %% This was written out of a need to display as much information %% about various Postscript Laserprinters onto one page. More %% can be added and anyone is free to modify it for their own %% needs. %%> From: jim@nih-csl.UUCP (jim sullivan) %%> Newsgroups: comp.lang.postscript %%> Subject: The Doctor is IN %%> Keywords: Laser, LaserPrinter %%> Message-ID: <905@nih-csl.UUCP> %%> Date: 8 Feb 89 19:32:19 GMT %%> Organization: NIH-CSL, Bethesda, MD %%> Lines: 160 %%> %%> Here is a postscript routine I've written called Laser Doctor. I want %%> to thank all those who sent me ideas to include in it, they were most %%> helpful. This program, when sent to a postscript printer, will printout %%> one page with the following information. %%> %%> The printer name %%> The version of postscript being used %%> All fonts %%> The painttype of each font (filled, stroked, etc...) %%> An example of each font (some fonts, from wordprocessor %%> software and other software, will %%> cause an error whan selected. In %%> this program, these errors are trapped %%> and an 'error implementing font' is %%> printed.) %%> The status of virtual memory %%> The status of cache memory %%> A benchmark test (Time to print a graphic. This can be used to %%> measure the relative speeds of printers.) %%> %%> There is room for improvement and additional features so if you make a %%> significant improvement, please share it with the net. Some features %%> which were suggested I did not add, such as checking the status of the %%> attached disk drives, since we do not have any on our printers. This was %%> tested on an Apple LaserWriter II and a TI Omnilaser 2115. %%> %%> Enjoy! %%> %%> %%> ------------------------------------ cut here ------------------------- %%> %%> gsave %% Beginning of definitions ******************************** /HB {/Helvetica-Bold} def /CBO {/Courier-BoldOblique} def /C {/Courier} def /FF {findfont} def /SS {scalefont setfont} def /mt {moveto} def /s {show} def /fontname 30 string def /getfont {pop fntnm cvs /fontname exch def} def /fntnm 30 string def /str 100 string def /BOLD {CBO FF 10 SS} def /NORMAL {C FF 10 SS} def /cnt 0 def /btime 0 def /circleofbench { 15 15 345 {gsave rotate 0 0 mt (Benchmark) oshow grestore } for } def /oshow {true charpath stroke} def %% End of definitions ***************************************** BOLD 200 756 mt (Analysis by Doctor Laser, Version 1.0.0) s %Print title 20 720 mt NORMAL (This printer is a ) s BOLD statusdict/product get str cvs s %Gets the name of the NORMAL ( running version ) s %printer from BOLD version str cvs s %statusdict/product NORMAL ( of Postscript.) s %and the version number 20 700 translate %of Postscript from the %'version' command 0 0 mt (Available Fonts : (PaintType)FontName:Example of font) s %Heading 0 -10 mt (PaintType = 0\(filled\), 1\(stroked\), 2\(outlined\),) s 0 -20 mt ( 3\(mixed\), ?\(unknown\)) s 0 -30 translate BOLD FontDirectory {BOLD 0 0 mt %Push directory of fonts and getfont %get the fonts one at a time. (\() s {fontname cvn FF /PaintType get str cvs s} stopped {%ifelse (?) s } {} ifelse %Get the font's PaintType and print its value, (\)) s %or if it is not supplied, print a '?'. fontname s %Print the name of the font. mark fontname length 1 30 {(-) s} for %Print dashes out to the font sample column. (:) s %Print a colon. {fontname cvn FF 10 SS ( ABCDEFGH abcdefgh) s } stopped {%ifelse NORMAL (Error implementing font) s } {} ifelse %Show a sample of each cleartomark %font. If an error is cnt 10 add %trapped, print message /cnt exch def %indicating an error 0 -10 translate} forall %occurred. Use the NORMAL %variable 'cnt' to count cnt 30 add /cnt exch def %the number of fonts. 350 cnt mt %Move back up the page 'cnt' points. (Virtual Memory Status:) s %Print the Virtual Memory Status 0 0 translate %using 'vmstatus'. 370 cnt 20 sub mt (Maximum Available Bytes = ) s BOLD vmstatus str cvs s NORMAL 370 cnt 30 sub mt (Bytes currently in use = ) s BOLD str cvs s NORMAL 370 cnt 40 sub mt (Level of Save Nesting = ) s BOLD str cvs s NORMAL 350 cnt 60 sub mt (Cache status \(Red book p126\):) s %Print out the cache status. cachestatus 370 cnt 80 sub mt NORMAL (blimit = ) s BOLD str cvs s 370 cnt 90 sub mt NORMAL ( cmax = ) s BOLD str cvs s 370 cnt 100 sub mt NORMAL ( csize = ) s BOLD str cvs s 370 cnt 110 sub mt NORMAL ( mmax = ) s BOLD str cvs s 370 cnt 120 sub mt NORMAL ( msize = ) s BOLD str cvs s 370 cnt 130 sub mt NORMAL ( bmax = ) s BOLD str cvs s 370 cnt 140 sub mt NORMAL ( bsize = ) s BOLD str cvs s usertime /btime exch def %Print a graphic (circleofbench) HB FF 12 SS %and time how long it takes for 430 cnt 230 sub translate %the printer to interpret it. .5 setlinewidth circleofbench 0 0 moveto (Benchmark Testing) true charpath gsave 1 setgray fill grestore stroke -40 -80 mt NORMAL (Time to print) s -40 -90 mt (the above graphic) s -40 -100 mt (was ) s BOLD usertime btime sub 0.001 mul str cvs s %Print out the time in seconds. NORMAL ( seconds.) s grestore showpage %%> --------------------------------- cut here ------------------------------- %%> %%> Jim %%> jim@alw.nih.gov %%> gsave %% Beginning of definitions ******************************** /HB {/Helvetica-Bold} def /CBO {/Courier-BoldOblique} def /C {/Courier} def /FF {findfont} def /SS {scalefont setfont} def /mt {moveto} def /s {show} def /fontname 30 string def /getfont {pop fntnm cvs /fontname exch def} def /fntnm 30 string def /str 100 string def /BOLD {CBO FF 10 SS} def /NORMAL {C FF 10 SS} def /cnt 0 def /btime 0 def %% End of definitions ***************************************** usertime /btime exch def %Print an image %HB FF 12 SS %and time how long it takes for gsave 50 100 translate %the printer to interpret it. 512 640 scale 1024 1280 8 [1024 0 0 1280 0 0] {( 0000000000000000111122223333444455556666777788889999aaaabbbbccccddddeeeeffffffffffffffffff~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)} image grestore NORMAL 50 70 moveto 0 setgray (Time in seconds to print the above image was ) s usertime btime sub 0.001 mul str cvs s %Print out the time in seconds. showpage .