.; la50_queue.rno .ps 60, 100 .lm 10 .rm 80 .layout 1,4 .style headers 4,0,6,7,7,2,1,9,2 .p 0,1,3 .ap .flags bold .xlower .fill .no autojustify .no justify .subtitle .autosubtitle .no number .blank -40 .center LA50 QUEUE FACILITY .if prelim .center _*#_*#_*#P#R#E#L#I#M#I#N#A#R#Y#_*#_*#_* .center _*#_*#_*#D#R#A#F#T#_*#_*#_* .endif prelim .blank -25 .flags substitute .center Published $$Day $$Month $$Year .no flags substitute .blank -15 .center Electronic Data Systems Corporation .center Communications Services Division .c 26533 Evergreen .c Southfield, Michigan 48086-5121 .page .number .title LA50 QUEUE FACILITY .hl Preface The VAX/VMS version 4 printer queue facility allows a user to create customized forms capabilities for a serial printer such as an LA50. We have created a printer queue setup file to define several useful forms and to create and start the queue. The methods used are applicable to other printers, such as laser printers. The LA50 uses escape sequences to control horizontal and vertical pitch, dot density, bold and underlined rendition, and selection of character sets. Modules to control these are in our forms control library. Margin settings and page size for banners is controlled using the forms definitions. The resulting LA50 print queue system is private to the development group, but the forms definitions are available to the entire system. .hl Forms Defined Forms we use fall into three categories, unmodified output, notebook output with left margin for punching, and special forms. The default form is twelve-pitch, six lines per inch, zero margins, ASCII as the G0 character set, and VT100 Special Graphics as the G1 character set. The following table shows the complete set of forms and the variations from the default form. Note that DEFAULT is defined by the system. .nofill .keep Form name Description --------- ----------- BIG__PRINT 48 col Letter 6 cpi 4 lpi DEFAULT System-defined default DOCUMENT 96 col Letter DOCUMENT__10 80 col Letter DOCUMENT__16 132 col Letter DRAFT 96 col Draft DRAFT__10 80 col Draft LA50__DEFAULT 96 col Draft LINE__DRAWING 80 col Bold 8 lpi LISTING 132 col Draft NOTEBOOK 96 col Draft LM 12 NOTEBOOK__10 80 col Draft LM 10 NOTEBOOK__16 132 col Draft LM 17 PRETTY__NOTEBOOK 96 col Letter LM 12 PRETTY__NOTEBOOK__10 80 col Letter LM 10 .fill .page .hl Forms _and Queue Definition A command procedure is used at system boot time to define the forms, set the terminal port characterstics, spool the device, and init/start the queue itself. Note that the queue is NOT defined as a terminal queue. The Job Controller will figure that out. The procedure receives the name, queue name, and queue owner as parameters. The protection and ownership of the queue is set to make the queue private to the user group. .lit $!++ la50_print_queue.com $! $! 5 May 1986 J. R. Cutler $! $! This procedure is called at boot time to initiate the $! LA50 print queue. The queue manager must be active $! before this procedure is invoked. $! $! Inputs: $! la50_print_terminal parameter 1 $! la50_queue_name parameter 2 $! la50_queue_owner parameter 3 $! $! Effects: $! o Several forms are defined $! o The terminal characteristics are set $! o The terminal is set spooled $! o The queue is defined and started $! $!-- $ $ $! LA50 PRINTER DEVICE and QUEUE NAME $ $ la50_print_terminal = p1 $ la50_queue_name = p2 $ la50_queue_owner = p3 $ $ if la50_print_terminal .eqs. "" then exit 274 $ if la50_queue_name .eqs. "" then exit 274 $ if la50_queue_owner .eqs. "" then exit 274 $ $ $! LA50 DEVICE CONTROL LIBRARY $ $ la50_library = "LA50_DEVCTL" $ $ .end lit .page .lit $! LA50 FORMS $ $ form_number = 51 ! Arbitrary start $ $ define /form LA50_DEFAULT 'form_number' - /description=" 96 col Draft" - /setup=(defaults) - /stock=standard - /notruncate - /width=96 $ form_number = form_number + 1 $ $ define /form BIG_PRINT 'form_number' - /description=" 48 col Letter 6 cpi 4 lpi" - /setup=(cpi_6,lpi_4,density_enhanced,rendition_bold_on) - /stock=standard - /truncate - /width=48 $ form_number = form_number + 1 $ $ define /form DOCUMENT 'form_number' - /description=" 96 col Letter" - /setup=(cpi_12,density_enhanced) - /stock=standard - /notruncate - /width=96 $ form_number = form_number + 1 $ $ define /form DOCUMENT_10 'form_number' - /description=" 80 col Letter" - /setup=(cpi_10,density_enhanced) - /stock=standard - /notruncate - /width=80 $ form_number = form_number + 1 $ $ define /form DOCUMENT_16 'form_number' - /description="132 col Letter" - /setup=(cpi_16,density_enhanced) - /stock=standard - /notruncate - /width=132 $ form_number = form_number + 1 $ .end lit .page .lit $ define /form DRAFT 'form_number' - /description=" 96 col Draft" - /setup=(cpi_12) - /stock=standard - /notruncate - /width=96 $ form_number = form_number + 1 $ $ define /form DRAFT_10 'form_number' - /description=" 80 col Draft" - /setup=(cpi_10) - /stock=standard - /notruncate - /width=80 $ form_number = form_number + 1 $ $ define /form LINE_DRAWING 'form_number' - /description=" 80 col Bold 8 lpi" - /setup=(cpi_10,lpi_8,rendition_bold_on) - /stock=standard - /width=80 $ form_number = form_number + 1 $ $ define /form LISTING 'form_number' - /description="132 col Draft" - /setup=(cpi_16) - /stock=standard - /width=132 $ form_number = form_number + 1 $ $ define /form NOTEBOOK 'form_number' - /description=" 96 col Draft LM 12" - /margin=left=12 - /setup=(cpi_12) - /stock=standard - /truncate - /width=96 $ form_number = form_number + 1 $ $ define /form NOTEBOOK_10 'form_number' - /description=" 80 col Draft LM 10" - /margin=left=10 - /setup=(cpi_10) - /stock=standard - /truncate - /width=80 $ form_number = form_number + 1 $ .end lit .page .lit $ define /form NOTEBOOK_16 'form_number' - /description="132 col Draft LM 17" - /margin=left=17 - /setup=(cpi_16) - /stock=standard - /truncate - /width=80 $ form_number = form_number + 1 $ $ define /form PRETTY_NOTEBOOK 'form_number' - /description=" 96 col Letter LM 12" - /margin=left=12 - /setup=(cpi_12,density_enhanced) - /stock=standard - /truncate - /width=96 $ form_number = form_number + 1 $ $ define /form PRETTY_NOTEBOOK_10 'form_number' - /description=" 80 col Letter LM 10" - /margin=left=10 - /setup=(cpi_10,density_enhanced) - /stock=standard - /truncate - /width=80 $ form_number = form_number + 1 $ $ $! TERMINAL SETUP $ $ set noon $ $ set terminal 'la50_print_terminal': - /perm /speed=4800 /device=la100 - /modem /nohang /page=66 /width=132 - /nowrap /nobroad /dma - /noupper /noset_speed $ $ set device /spooled=la50_print 'la50_print_terminal' $ $ .end lit .page .lit $! QUEUE INITIALIZE/START $ $ initialize /queue /start 'la50_queue_name' - /on='la50_print_terminal': - /form=la50_default - /default=(noburst,nofeed,noflag,notrailer) - /noenable_generic - /schedule=nosize - /library='la50_library' - /separate=reset=defaults - /owner='la50_queue_owner' - /protection=(s:rwed,o:rwed,g:rwed,w) $ $ exit .end lit .hl Activating _the Queue Our usage of the LA50 queue, connected via line drivers which require /MODEM, is activated using the command sequence .lit $! GMNET_PRINT QUEUE $ $ gmnet_print_terminal = "TXD5" $ gmnet_queue_name = "GMNET_PRINT $ gmnet_queue_owner = "[GMNET]" $ $ @dev$jrc:[la50_control]la50_print_queue - 'gmnet_print_terminal' - 'gmnet_queue_name' - 'gmnet_queue_owner' .end lit The resulting queue is .lit $ SHOW QUEUE /DEVICE /FULL /ALL GMNET_PRINT Remote terminal queue GMNET_PRINT, on TXD5: /BASE_PRIORITY=4 /NOENABLE_GENERIC /FORM=LA50_DEFAULT /LIBRARY=LA50_DEVCTL Lowercase /OWNER=[GMNET,*] /PROTECTION=(S:RWED,O:RWED,G:RWED,W) /SCHEDULE=(NOSIZE) /SEPARATE=(RESET=(DEFAULTS)) .end lit .page .hl Form Control Library for the LA50 The forms control library is created from individual text modules containing escape sequences for particular control functions. These are then called for by forms definitions as needed. Note that the Job Controller requires the library to be in SYS$LIBRARY and also requires it to be version 1. The following command sequence is used to create the forms library. .lit $!++ la50_library_create.com $! $! 5 May 1986 J. R. Cutler $! $! Create a new LA50 device control library $!-- $ la50_library = "SYS$LIBRARY:LA50_DEVCTL.TLB;1" $ if f$search( la50_library ) .nes. "" then - delete 'la50_library' $ $ library /create /text /log 'la50_library' $ set protection=(o:rwed,w:re) 'la50_library' $ $ library /replace /text /log 'la50_library' *.TXT .end lit .hl LA50 Device Control Modules The contents of each module we define is as follows: .list "." .le;CPI__10.TXT - [0w Set horizontal pitch to 10 characters/inch. .le;CPI__12.TXT - [2w Set horizontal pitch to 12 characters/inch. .le;CPI__16.TXT - [4w Set horizontal pitch to 16.5 characters/inch. .le;CPI__5.TXT - [5w Set horizontal pitch to 5 characters/inch. .le;CPI__6.TXT - [6w Set horizontal pitch to 6 characters/inch. .page .le;CPI__8.TXT - [8w Set horizontal pitch to 8 characters/inch. .le;DEFAULTS.TXT - _\[0m(B[2"z Select enhanced density (near letter quality) printing. This has no effect at 16.5 cpi or when using VT100 Special Graphics characters. .le;DENSITY__NORMAL.TXT - [0"z Select normal density printing. .le;LPI__12.TXT - [3z Set vertical pitch to 12 lines/inch. .le;LPI__2.TXT - [4z Set vertical pitch to 2 lines/inch. .le;LPI__3.TXT - [5z Set vertical pitch to 3 lines/inch. .le;LPI__4.TXT - [6z Set vertical pitch to 4 lines/inch. .le;LPI__6.TXT - [0z Set vertical pitch to 6 lines/inch. .le;LPI__8.TXT - [2z Set vertical pitch to 8 lines/inch. .le;RENDITION__BOLD__OFF.TXT - [22m Turn off bold printing. .page .le;RENDITION__BOLD__ON.TXT - [1m Turn on bold printing. This has no effect at 16.5 cpi. DENSITY__ENHANCED takes precedence over RENDITION__BOLD__ON. .le;RENDITION__RESET.TXT - [0m Reset graphic rendition. .le;RENDITION__UNDERLINED__OFF - [24m Turn off underlined printing. .le;RENDITION__UNDERLINED____ON - [4m Turn on underlined printing. .end list .hl Using the LA50 Queue We define several DCL command symbols to make it more convenient to use the special forms and the LA50 queue. Only the most often used forms have DCL symbols. For other forms, the form is specified explictly on the Gprint command. .lit $ Gprint := "print /notify /queue=gmnet_print" $ $ docprint :== "''Gprint' /form=document" $ draftprint :== "''Gprint' /form=draft" $ listprint :== "''Gprint' /form=listing" $ notebook :== "''Gprint' /form=notebook" $ qforms :== "show queue /forms" $ qp*rint :== "show queue /device /full /all gmnet_print" $ qset :== "set queue gmnet_print" .end lit