KARNEY%PPC.MFENET@NMFECC.ARPA (07/18/88)
...................... Cut between dotted lines and save. ..................... $!............................................................................. $! VAX/VMS archive file created by VMS_SHARE V06.00 26-May-1988. $! $! VMS_SHARE was written by James Gray (Gray:OSBUSouth@Xerox.COM) from $! VMS_SHAR by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au). $! $! To unpack, simply save, concatinate all parts into one file and $! execute (@) that file. $! $! This archive was created by user KARNEY $! on 11-JUL-1988 09:43:15.90. $! $! ATTENTION: To keep each article below 34 blocks (17408 bytes), this $! program has been transmitted in 4 parts. You should $! concatenate ALL parts to ONE file and execute (@) that file. $! $! It contains the following 6 files: $! BOSS.README $! BOSS.HLP $! BOSS.C $! BOSS_CLD.CLD $! BOSS_BUILD.COM $! BOSS_INSTALL.COM $! $!============================================================================== $ SET SYMBOL/SCOPE=( NOLOCAL, NOGLOBAL ) $ VERSION = F$GETSYI( "VERSION" ) $ IF VERSION .GES "V4.4" THEN GOTO VERSION_OK $ WRITE SYS$OUTPUT "You are running VMS ''VERSION'; ", - "VMS_SHARE V06.00 26-May-1988 requires VMS V4.4 or higher." $ EXIT 44 $VERSION_OK: $ GOTO START $ $UNPACK_FILE: $ WRITE SYS$OUTPUT "Creating ''FILE_IS'" $ DEFINE/USER_MODE SYS$OUTPUT NL: $ EDIT/TPU/COMMAND=SYS$INPUT/NODISPLAY/OUTPUT='FILE_IS'/NOSECTION - VMS_SHARE_DUMMY.DUMMY b_part := CREATE_BUFFER( "{Part}", GET_INFO( COMMAND_LINE, "file_name" ) ) ; s_file_spec := GET_INFO( COMMAND_LINE, "output_file" ); SET( OUTPUT_FILE , b_part, s_file_spec ); b_errors := CREATE_BUFFER( "{Errors}" ); i_errors := 0; pat_beg_1 := ANCHOR & "-+-+-+ Beginning"; pat_beg_2 := LINE_BEGIN & "+-+-+-+ Beginning"; pat_end := ANCHOR & "+-+-+-+-+ End"; POSITION ( BEGINNING_OF( b_part ) ); i_append_line := 0; LOOP EXITIF MARK( NONE ) = END_OF( b_part ); s_x := ERASE_CHARACTER( 1 ); IF s_x = "+" THEN r_skip := SEARCH( pat_beg_1, FORWARD, EXACT ); IF r_skip <> 0 THEN s_x := "" ; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ERASE_LINE; ENDIF; ENDIF ; IF s_x = "-" THEN r_skip := SEARCH( pat_end, FORWARD, EXACT ); IF r_skip < > 0 THEN s_x := ""; MOVE_HORIZONTAL( -CURRENT_OFFSET ); m_skip := MARK( NONE ) ; r_skip := SEARCH( pat_beg_2, FORWARD, EXACT ); IF r_skip <> 0 THEN POSITION ( END_OF( r_skip ) ); MOVE_HORIZONTAL( -CURRENT_OFFSET ); MOVE_VERTICAL( 1 ) ; MOVE_HORIZONTAL( -1 ); ELSE POSITION( END_OF( b_part ) ); ENDIF; ERASE ( CREATE_RANGE( m_skip, MARK( NONE ), NONE ) ); ENDIF; ENDIF ; IF s_x = "V" THEN s_x := ""; IF i_append_line <> 0 THEN APPEND_LINE ; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF; i_append_line := 1; MOVE_VERTICAL ( 1 ); ENDIF; IF s_x = "X" THEN s_x := ""; IF i_append_line < > 0 THEN APPEND_LINE; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF ; i_append_line := 0; MOVE_VERTICAL( 1 ); ENDIF; IF s_x <> "" THEN i_errors := i_errors + 1; s_text := CURRENT_LINE; POSITION( b_errors ); COPY_TEXT ( "The following line could not be unpacked properly:" ); SPLIT_LINE ; COPY_TEXT( s_x ); COPY_TEXT( s_text ); POSITION( b_part ); MOVE_VERTICAL( 1 ); ENDIF; ENDLOOP; POSITION( BEGINNING_OF( b_part ) ); LOOP r_x := SEARCH( "`" , FORWARD, EXACT ); EXITIF r_x = 0; POSITION( r_x ); ERASE_CHARACTER( 1 ) ; IF CURRENT_CHARACTER = "`" THEN MOVE_HORIZONTAL( 1 ); ELSE COPY_TEXT( ASCII ( INT( ERASE_CHARACTER( 3 ) ) ) ); ENDIF; ENDLOOP; IF i_errors = 0 THEN SET ( NO_WRITE, b_errors, ON ); ELSE POSITION( BEGINNING_OF( b_errors ) ) ; COPY_TEXT( FAO( "The following !UL errors were detected while unpacking !AS" , i_errors, s_file_spec ) ); SPLIT_LINE; SET( OUTPUT_FILE, b_errors , "SYS$COMMAND" ); ENDIF; EXIT; $ DELETE VMS_SHARE_DUMMY.DUMMY;* $ CHECKSUM 'FILE_IS $ WRITE SYS$OUTPUT " CHECKSUM ", - F$ELEMENT( CHECKSUM_IS .EQ. CHECKSUM$CHECKSUM, ",", "failed!,passed." ) $ RETURN $ $START: $ FILE_IS = "BOSS.README" $ CHECKSUM_IS = 2048593391 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY XThis is BOSS version 2.4 (July 5, 1988). It consists of 6 files X BOSS.README`009 This file X BOSS.HLP`009 The user help file X BOSS.C`009 The source code X BOSS_CLD.CLD The command language definitions X BOSS_BUILD.COM The procedure for compiling and linking BOSS X BOSS_INSTALL.COM The procedure for installing BOSS X XBOSS requires that pseudo TTY (PTY) drivers be installed on your system. XBOSS works with one of two versions of the drivers: X X(a) the lastest version of the drivers posted to INFO-VAX by Kevin Carosso Xin June 1988 (new PTY). This is recommended for VMS 5.0. With VMS 4.7, XBOSS exhibits a bug with this version of PTY. When you type control-s to Xstop output from a process, all connection with the process is apparently Xlost (the process receives no input, and you receive no output). At this Xstage, you have to switch to another process and STOP the process. (I Xencounter exactly the same bug with PHOTO). You can avoid this problem by Xspecifying the /FLOW_CONTROL qualifier to BOSS. (This causes BOSS to Xintercept and act on control-s. However this will break programs like XEmacs which need to be able to receive control-s.) I assume that BOSS Xworks OK with new PTY and VMS 5.0. If someone can confirm this for me, I'd Xlike to hear about it. X X(b) the earlier version with the security patch installed (old PTY). This Xis recommended for VMS 4.x. I believe this version of PTY will only work Xwith VMS 4.x. You can tell if you don't have the security patch installed, Xbecause BOSS will quit with an "insufficient privilege" error when you try Xto start a process (unless you have the READALL privilege or equivalent). X XContact me if you need a copy of either old PTY or new PTY. X XYou should edit BOSS_INSTALL.COM to refer to the directory where BOSS.EXE Xresides. BOSS should be installed with both PHY_IO and OPER privileges. XYou can get by without these privileges--see the comments in BOSS.C. X XBOSS needs to be defined as a foreign command, i.e., X $ BOSS == "$<dev>:[<dir>]BOSS" XBOSS.HLP tells the user to do X $ SETUP BOSS Xbefore running BOSS. SETUP on our system runs a .COM file which does the Xnecessary initialization for various utilities. You will probably need to Xedit BOSS.HLP to insert the incantation appropriate for your site. XBOSS.HLP should of course be installed in some easily accessible help Xlibrary. Something like X $ LIBRARY/HELP/REPLACE HLP$LIBRARY_1 BOSS Xshould do the trick. X XThe new features in this version (v. 2.4) compared with the last release X(v. 1.5) are: X X* BOSS can control both subprocesses and top-level process (which you have X to log into). X* Broadcast messages that BOSS receives are rebroadcast to the current X process. X* Command character (usually control-\) is settable. X* BOSS can automatically start and initialize processes when it is started. X* Hooks are in place to support additional terminal types. (Currently, X VT100-compatible terminals and ADM3As are supported.) X* BOSS works with the latest (June 1988) release of the pseudo TTY drivers. X XFor more information look at HELP BOSS New_Features. X X Charles Karney X Plasma Physics Laboratory`009Phone:`009 +1 609 243 2607 X Princeton University`009MFEnet:`009 Karney@PPC.MFEnet X PO Box 451`009`009`009ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA X Princeton, NJ 08543-0451`009Bitnet:`009 Karney%PPC.MFEnet@ANLVMS.Bitnet $ GOSUB UNPACK_FILE $ FILE_IS = "BOSS.HLP" $ CHECKSUM_IS = 152800594 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X1 BOSS XBOSS is an interactive job controller. It lets you run several interactive Xjobs simultaneously. Before running BOSS put X X $ SETUP BOSS X Xinto your login.com file. In order to run BOSS type X X $ BOSS X XBOSS was written by Charles Karney based on the PHOTO program written by Asbed XBedrossian of USC. It utilizes the Pseudo TTY package of Dale Moore of CMU Xand Kevin Carosso of Network Research Co. X XBugs, questions, etc. to X Charles Karney X Plasma Physics Laboratory Phone: +1 609 243 2607 X Princeton University MFEnet: Karney@PPC.MFEnet X PO Box 451 ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA X Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@ANLVMS.Bitnet X2 Description XBOSS lets you create up to 8 processes on a VAX/VMS system. Each process is Xidentified by a single letter (A thru Z). This letter is used in the Xprocess name and in the DCL prompt. At most one of these processes is X``current'. What you type is sent to that process, and output from that Xprocess is sent to your terminal. A process which is not current can run Xbut normally cannot do output. (What happens to the output is governed by Xthe output flag for a particular process. See topic Output_flags.) You Xusually switch between processes by typing control-\ followed by the Xidentifying letter. It is also possible to have have of your processes Xinitiate the switch. (See topic Communicating.) X XYou can run any program under BOSS. For example, you might X run Emacs or EVE in process E X SET HOST to another machine in process H X run NETTY to the B machine in process B X do a FORTRAN compilation in process F X execute DCL commands in process D X talk to your colleague using PHONE in process P Xand so on. X XOf course, you would normally not need to run so many processes. (Indeed Xyour subprocess quota may only let you run 5 processes.) When you are Xthrough with a process, you should log out of it (with ``logout') and switch Xto some other process. X XBOSS makes no attempt to keep track of what is on your screen. Usually when Xswitching to a process which manages the screen in an advanced manner, you Xshould issue a command to the program to get it to re-draw the screen. X(This is control-w for EVE, PHONE, SPELL; control-l for Emacs.) X XBOSS uses needs to know the escape sequences for clearing your screen, etc. XBy default, it uses the VT100 sequences which work for a wide range of Xterminals. See topic Terminal_types. X2 Commands `032 XUsually, all commands to BOSS begin with the command character which by Xdefault is C-\ (control-\). The command character can be changed by using Xthe /COMMAND_CHARACTER qualifier to BOSS. The command character is not Xrequired is when there is no current process (i.e., initially and Ximmediately after logging out of a process). In that case the command Xcharacter is optional. X XThe commands are: X X C-h (or BS) Print command summary X C-z Quit (asking confirmation if there are processes) X a Switch to process labeled A (and similarly with a thru z) X A Clear screen and then switch to process A X C-n a Create new process A as a subprocess (C-n A clears screen first) X C-t a Create process A at top level (C-t A clears screen first) X C-b Buffer output for this process X C-o Discard output for this process X C-p Print output from this process X C-w Stop output from this process X ? List processes and output flags X (* means current, +/- means waiting for output) X C-\ Sends the command character to the current process X DEL Do nothing X other Sound the bell on the terminal X2 Qualifiers XWhen starting BOSS you can provide the following qualifiers: X X/COMMAND_CHARACTER X /COMMAND_CHARACTER=num X Default: /COMMAND_CHARACTER=%O34 (i.e., C-\) X XUse the character whose ASCII code is num as the command character instead Xof C-\. E.g., X BOSS/COMMAND_CHARACTER=%X1F ! set command character to C-_ X BOSS/COMMAND_CHARACTER=%O37 ! the same X BOSS/COMMAND_CHARACTER=31 ! the same X BOSS/COMMAND_CHARACTER='F$CVSI(0,6,"_")' ! the same X BOSS/COMMAND_CHARACTER='F$CVSI(0,8,"``")' ! set to `` (backquote) XRepeating the command character twice sends the character to the current Xprocess. C-z is disallowed as a command character since otherwise you Xwouldn't be able to quit. X X/START_PROCESS X /START_PROCESS=(process-1,process-2,...) X XBOSS immediately starts up the specified processes. E.g., X BOSS/START_PROCESS=A Xstarts process A. You are left in the last process specified; e.g., X BOSS/START_PROCESS=(E,D) Xstarts E and D and sets D to be the current process X X/STUFF_STRING X /STUFF_STRING=(string-1,string-2,...) X XThis qualifier is processed in parallel with /START_PROCESS. string-n is Xsent the process-n when it is started. A carriage return is added to the Xstring unless the string is empty. If the /STUFF_STRING list is shorter Xthan the /START_PROCESS list, then nothing is sent to the remaining Xprocesses. E.g., X BOSS/START=(E,D)/STUFF=EMACS Xstarts process E runs Emacs in it. Then BOSS starts process D (and sends Xnothing to it). To send more than one command to a process, you can do, Xe.g., X BOSS/START=(B,B)/STUFF=("SHOW TIME",FINGER) Xwhich start process B and sends runs both SHOW TIME and FINGER. (Or else Xyou can construct a DCL string with an imbedded carriage return. X X/OUTPUT_FLAGS X /OUTPUT_FLAGS=(flag-1,flag-2,...) flag-n is one of b, o, w, p X XThis qualifier is processed in parallel with /START_PROCESS. The output Xflag for process-n is set to flag-n. If the /OUTPUT_FLAGS list is shorter Xthan the /START_PROCESS list, then the output flags for the remaining Xprocesses are set to the default. X X/DEFAULT_OUTPUT_FLAG X /DEFAULT_OUTPUT_FLAG=flag (one of b, o, w, p) X Default: /DEFAULT_OUTPUT_FLAG=b X XThis sets the default output flag. See topic Output_flags. X X/BEGIN_PROMPT X /BEGIN_PROMPT=string X Default: /NOBEGIN_PROMPT X XThis specifies the part of the DCL prompt which appears before the process Xlabel. E.g., X BOSS/BEGIN_PROMPT="--"/END_PROMPT=">> " Xgives you DCL prompts of the form "--Q>> ". X X/END_PROMPT X /END_PROMPT=string X Default: /END_PROMPT="> " X XThis specifies the part of the DCL prompt which appears after the process Xlabel. X X/SWITCH_CREATE X /SWITCH_CREATE X Default: /NOSWITCH_CREATE X XBy default, you have to create a process with either C-\ C-n x or C-\ C-t Xx. If /SWITCH_CREATE is set, then switching to nonexistent process Xcreates it as a subprocess. (I.e., C-\ x is equivalent to C-\ C-n x). If Xyou always want /SWITCH_CREATE set, then put X $ setup boss X $ boss == "''boss'/switch_create" Xinto your LOGIN.COM file. X X/FLOW_CONTROL X /FLOW_CONTROL X Default: /NOFLOW_CONTROL X XNormally, everything you type is passed on to the current process. This Xincludes the flow-control characters control-s and control-q. This results Xin some delay in these characters being acted upon. Your terminal may Xtherefore receive many additional characters after a C-s is typed, causing Xyou to lose information off the top of your screen or your terminal's input Xbuffer to overflow. With X BOSS/FLOW_CONTROL XC-s and C-q are intercepted by the terminal driver and used as flow- Xcontrol. This cause C-s to be acted on more promptly. The drawback is Xthat you can never send C-s and C-q to your program. This breaks certain Xprograms, notably Emacs, which need to be able to receive all the ASCII Xcharacters. A second drawback is that once the output is stopped with C-s, Xonly a C-q can get it going again. You can't interrupt it with a C-y as Xyou can normally. (This is because BOSS/FLOW_CONTROL only treats C-s and XC-q as special. C-y and C-c are treated as ordinary characters.) X X/DELETE_CHARACTER X /DELETE_CHARACTER=num X Default: /DELETE_CHARACTER=%O177 (i.e., DEL) X XUse the character whose ASCII code is num as the delete character instead Xof DEL. This is useful on some terminals with weird keyboards. E.g., on Xsome ADM terminals, the delete key is shift-underscore. If you do X BOSS/DELETE_CHARACTER='F$CVSI(0,8,"_")' Xthen underscore and delete are interchanged. (I.e., the underscore key Xsends a delete to your program, and the shift-underscore key sends an Xunderscore to your program.) X2 Terminal_types XWhen switching processes, BOSS tries either to clear the screen or to move Xto the bottom of the screen. By default, it uses VT100 escape sequences for Xthese operations. However, if you define the logical name BOSS$TERM to be Xthe name of some other terminal, then it will use the escape sequence for Xthat terminal. X XE.g., if you're using an ADM3A terminal, you should do X $ DEFINE/NOLOG BOSS$TERM ADM3A Xbefore starting BOSS. (ADM3A users would probably also want to set the Xdelete character to underscore. See topic /DELETE_CHARACTER.) X -+-+-+-+-+ End of part 1 +-+-+-+-+-