Google
 

Trailing-Edge - PDP-10 Archives - ap-c796e-sb - opser.rno
There is 1 other file named opser.rno in the archive. Click here to see a list.
.SPACING 1
.TITLE ^^OPSER\\
^^PROGRAMMING SPECIFICATION\\
.BLANK 5
.CENTER
^^OPSER\\
.BLANK 1
.CENTER
^^OPERATOR SERVICE PROGRAM\\
.BLANK 15
.LEFT MARGIN 20
^DATE:##29-^JUN-71
.BREAK
^FILE:##^^OPSER.RNO
.BREAK
^EDITION:##1
.BLANK 14
.LEFT MARGIN 8
.RIGHT MARGIN 55
^THIS DOCUMENT REFLECTS THE SOFTWARE AS OF VERSION 2.
.BLANK 1
^THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ^DIGITAL
^EQUIPMENT ^CORPORATION.
.BLANK 1
^ACTUAL DISTRIBUTION OF THE SOFTWARE CONTAINED IN THIS SPECIFICATION
WILL BE SUBJECT TO TERMS AND CONDITIONS TO BE ANNOUNCED AT SOME FUTURE
DATE BY ^DIGITAL ^EQUIPMENT ^CORPORATION.
.LEFT MARGIN 0
.RIGHT MARGIN 60
.PAGE
.CENTER
^^TABLE OF CONTENTS\\
.CENTER
-----------------
.BLANK 2
.LEFT MARGIN 10
.NOFILL
.NOJUSTIFY
.TAB STOPS 16,52
^^		PAGE\\
.BLANK 1
1.0	^FUNCTION	3
2.0	^INTERACTIVE ^COMMANDS	3
2.1	^SPECIAL ^SYNTAX	6
2.2	^DEFAULTS	6
2.3	^SPECIAL ^ENTRIES	6
3.0	^SUBJOB ^SPECIFICATION	7
4.0	^SUBJOB ^COMMUNICATION	7
4.1	^INPUT TO A ^SUBJOB	7
4.2	^OUTPUT FROM A ^SUBJOB	7
5.0	^CORE ^LAYOUT	7
6.0	^CODING ^CONVENTIONS	8
6.1	^REGISTER ^ASSIGNMENTS	8
6.2	^TASTY ^TIDBITS	8
6.3	^ASSEMBLY ^SWITCHES	9
.FILL
.JUSTIFY
.LEFT MARGIN 0
.PAGE

.BLANK 3
1.0##^^FUNCTION\\
.BLANK 1
^^OPSER\\ FACILITATES MULTIPLE JOB CONTROL FOR THE OPERATOR
BY RUNNING JOBS ON A SUBLEVEL OVER PSEUDO-TELETYPES
(MNEMONIC ^^PTY\\).
^PREVIOUS TO ^^OPSER\\, WHEN THE OPERATOR HAD TO RUN MORE THAN ONE JOB AT ONE
TIME, HE  EITHER HAD TO RUN SOME DETACHED, OR USE SEVERAL
TERMINALS. ^IN THE FORMER CASE, NO ^^I/O\\ LINK EXISTED BETWEEN
THE RUNNING JOB AND THE OPERATOR, AND IF HE WAS NOT
WATCHING, IT WOULD GO BY WITHOUT NOTICE.
^USING SEVERAL TERMINALS WAS PROBLEMATIC SINCE THE OPERATOR HAD
TO RUN FROM CONSOLE TO CONSOLE TO SERVICE THE PROGRAMS. ^BY
RUNNING THESE SYSTEM JOBS OVER ^^PTY\\'S, ^^OPSER\\ MAINTAINS
AN EXCELLENT ^^I/O\\ LINK, AND CONCENTRATES IN ONE CONSOLE THE
ENTIRE CONTROL CENTER OF THE SYSTEM. ^IT NEED NOT RUN ONLY AS AN
OPERATOR JOB, REGULAR USERS CAN EMPLOY ^^OPSER\\ TO
FAN OUT MULTIPLE JOBS.
.BLANK 3
2.0##^^INTERACTIVE COMMANDS\\
.BLANK 1
^^OPSER\\ WILL SIGNIFY ITS
READINESS TO PROCESS ANY OF THE FOLLOWING COMMANDS BY TYPING
* OR ! AT THE START OF THE LINE.
* WILL BE TYPED IF NO SUBJOBS ARE IN USE,
OR TO INDICATE SUBJOBS THAT ARE IN ^TELETYPE INPUT WAIT. ^THUS, WHEN
^^OPSER\\ TYPES * TO SIGNAL COMMAND WAIT, NOTHING WILL
HAPPEN UNTIL THE OPERATOR ACTS. ^THE COMMANDS MUST BE
TYPED TO SUFFICIENT LENGTH TO MAKE THEM UNIQUE. ^ALL ARE PREFIXED
BY A COLON(:).
.TAB STOPS 5,15,25,35,45,55
.LEFT MARGIN 25
.SKIP 2
.INDENT -20
^^:FREE\\		^TYPE THE NUMBER OF THE FIRST FREE SUBJOB.
.SKIP 1
.INDENT -20
^^:SYSTAT\\#XX	^RUN ^^SYSTAT\\ WITH OPTIONAL ARGUMENT(S)
XX OVER THE FIRST FREE SUBJOB.
.SKIP 1
.INDENT -20
^^:DEFINE\\#XX=N	^DEFINE XX AS THE MNEMONIC FOR SUBJOB N. 
(^SUBJOB SPECIFICATION IS EXPLAINED IN ^CHAPTER 3.)
.LEFT MARGIN 25
.SKIP 1
.INDENT -20
^^:EXIT\\		^EXIT TO THE MONITOR IF NO SUBJOBS ARE IN USE;
OTHERWISE GIVE A LIST OF THOSE THAT ARE RUNNING.
.SKIP 1
.INDENT -20
.TEST PAGE 6
^^:WHAT\\#N		^TYPE THE STATUS OF SUBJOB N ON THE CONSOLE.
^THE STATUS INCLUDES A ^^SYSTAT\\ INCLUDING THE TIME, THE TIME OF THE LAST INPUT AND
LAST OUTPUT, AND A LINEAR LISTING OF THE ^^JOBSTS\\ BITS.
.SKIP 1
.INDENT -20
^^:KJOB\\#N		^RUN ^^LOGOUT\\ OVER SUBJOB N.
.SKIP 1
.INDENT -20
^^:STOP\\#N		^PUT SUBJOB N INTO MONITOR MODE IMMEDIATELY
BY SENDING UP TO THREE ^^CONTROL-C\\'S.
.SKIP 1
.INDENT -20
:^^MSGLEVEL\\#0	^TYPE SHORT RESPONSES TO THE ^^:WHAT\\ COMMAND.
.SKIP 1
.INDENT -20
:^^MSGLEVEL\\#1	^TYPE LONG RESPONSES TO THE ^^:WHAT\\ COMMAND.

.SKIP 1
.INDENT -20
^^:TTYTST\\		^TEST THE CONSOLE BY TYPING ALL OF THE ^^ASCII\\
CHARACTERS BETWEEN OCTAL 40 AND 174, INCLUSIVE.
.SKIP 1
.INDENT -20
^^:HELP\\		^TYPE A TEXT WHICH BRIEFLY EXPLAINS THE
COMMANDS AND HOW TO COMMUNICATE WITH SUBJOBS.
.SKIP 1
.INDENT -20
^^:RESOURCES\\	^TYPE THE RESOURCES OF THE SYSTEM.
.SKIP 1
.INDENT -20
^^:SILENCE\\#N	^IGNORE ALL OUTPUT FROM SUBJOB N.
.SKIP 1
.INDENT -20
^^:REVIVE\\#N		^RESUME NORMAL ECHOING OF OUTPUT FROM SUBJOB N.
.SKIP 1
.INDENT -20
^^:DAYTIME\\		^GET TODAY'S DATE AND CURRENT TIME.

.SKIP 1
.INDENT -20
^^:QUEUE\\#<LINE>	^INITIATE THE FIRST FREE SUBJOB AND SEND THAT
LINE OVER IT.
.SKIP 1
.INDENT -20
^^:JCONT\\#NN		^CONTINUE THE STOPPED MONITOR JOB.
.SKIP 1
.INDENT -20
^^:LOGIN\\#P,PN	^SEND THE ^^LOGIN\\ LINE OVER THE FIRST FREE SUBJOB;
IF NO PROJECT- PROGRAMMER NUMBER IS TYPED, ASSUME THE OPERATOR'S PROJECT-PROGRAMMER NUMBER.
.SKIP 1
.INDENT -20
^^:SLOGIN\\#P,PN	^SAME AS :^^LOGIN\\ EXCEPT SUPPRESS ALL THE 
^^LOGIN\\ CHATTER.
.SKIP 1
.INDENT -20
^^:CURRENT\\		^TYPE THE NUMBER OF THE CURRENT SUBJOB (THE LAST
ONE REFERENCED).
.SKIP 1
.INDENT -20
:^^SEND\\#<LINE>	^SIMULATE THE MONITOR COMMAND ^^SEND.\\
.SKIP 1
.INDENT -20
^^:SET KSYS\\#HHMM	^STOP THE TIMESHARING SYSTEM AT THE TIME SPECIFIED BY HHMM (NOT IMPLEMENTED YET).
.SKIP 1
.INDENT -20
^^:SET#DATE\\#MMDDYY	^SIMULATE THE MONITOR COMMAND ^^SET DATE.\\
.SKIP 1
.INDENT -20
:^^SET#DAYTIME\\#HHMM	^SIMULATE THE MONITOR COMMAND ^^SET DAYTIME.\\
.SKIP 1
.INDENT -20
^^:SET# OPR#TTY\\#N	^SIMULATE THE MONITOR COMMAND ^^SET OPR.\\
.SKIP 1
.INDENT -20
^^:SET#CORMAX\\#N	^SIIMULATE THE MONITOR COMMAND ^^SET CORMAX.
.SKIP 1
.INDENT -20
^^:SET CORMIN\\#N	^SIMULATE THE MONITOR COMMAND ^^SET CORMIN.\\
.SKIP 1
.INDENT -20
^^:SET#SCHEDULE\\#N	^SIMULATE THE MONITOR COMMAND ^^SET SCHEDULE
.SKIP 1
.INDENT -20
^^:SET#TTY\\#ARG	^SIMULATE THE ^^SET TTY\\ MONITOR COMMAND.

.SKIP 1
.INDENT -20
^^:DEVICE\\#NAM:LOGN:N	^REASSIGN THE DEVICE WITH THE PHYSICAL NAME NAM,
AND THE LOGICAL NAME LOGN TO SUBJOB N. ^THE LOGICAL NAME NEED NOT
BE PRESENT, BUT A NULL FIELD MUST BE TYPED, E.G., TO
REASSIGN THE ^^CDR\\ TO SUBJOB 3, ONE MUST TYPE ^^:DEVICE CDR::3\\.
.SKIP 1
.INDENT -20
^^:AUTO\\#FILENAME	^PROCESS THE NAMED FILE AS A LIST OF INTERACTIVE COMMANDS;
THE ^^AUTO\\ FILE IS TERMINATED BY THE END-OF-FILE OR BY THE TYPING OF A
LINE ON THE CONSOLE BY THE OPERATOR; ^^AUTO\\ FILES MAY CALL OTHER
FILES, INCLUDING THEMSELVES.
.SKIP 1
.INDENT -20
.TEST PAGE 8
^^:TLOG\\#FILENAME	^CREATE A LOG FILE WITH THE SPECIFIED NAME. ^IF THE FILE'S
DEVICE IS A DIRECTORY ONE, CHECK IF THE FILE EXISTS ALREADY; IF SO,
NOTIFY THE OPERATOR AND ASK WHETHER IT SHOULD BE SUPERSEDED. ^IF
THE ANSWER IS NEGATIVE, THE FILE WILL BE APPENDED TO.
.SKIP 1
.INDENT -20
^^:CLOSE\\		^CLOSE THE LOG FILE WITHOUT OPENING A NEW ONE.
.LEFT MARGIN 0
.TEST PAGE 9
.BLANK 3
2.1##^SPECIAL ^SYNTAX
.BLANK 1
^^CONTROL-A\\'S ARE TRANSLATED TO ^^CONTROL-C\\'S.
.BLANK 1
^^ALL\\ MAY BE USED AS THE SUBJOB SPECIFICATION IN ANY COMMAND STRING
WHERE A SUBJOB SPECIFICATION IS NEEDED; ALL ACTIVE SUBJOBS ARE IMPLIED AS
OBJECTS OF THE COMMAND.
.BLANK 1
^IF ^^BATCON\\ IS RUNNING UNDER ^^OPSER\\, IT SHOULD BE ASSIGNED THE
MNEMONIC ^B. ^IF ONE WISHES TO SEND TEXT TO ^^BATCON\\
SUBJOB 2, HE CAN TYPE ^B2- <LINE> TO ^^OPSER\\ AND ^^OPSER\\
WILL SEND THE ENTIRE LINE TO ^^BATCON\\ (WHICH WILL THEN SEND THE
PART OF THE LINE AFTER THE DASH TO ITS OWN SUBJOB 2). ^THE
OPERATOR CAN ALSO SUFFIX THE ^B WITH ANY LENGTH OF ^^ALL\\.
^REFER TO ^CHAPTER 4 FOR A FURTHER DESCRIPTION OF SENDING TEXT
TO SUBJOBS.
.BLANK 3
2.2##^DEFAULTS
.BLANK 1
^IF A SUBJOB SPECIFICATION IS NEEDED BUT ONE IS NOT PRESENT, THE LAST SUBJOB REFERENCED
IS PRESUMED. ^THE USE OF ^^ALL\\ DOES NOT ALTER THIS LAST
REFERENCE.
.BLANK 1
^IN THE ^^TLOG\\ FILE SPECIFICATION, THE DEFAULT STRING IS
.SKIP 1
	^^DSK:OPSER.LOG\\
.SKIP 1
^ABSENCE OF ANY FIELD RESULTS IN SUBSTITUTION OF THE DEFAULT
FOR THAT ITEM. ^IN PARTICULAR, IF A NULL EXTENSION IS DESIRED,
A PERIOD, THEN A PROJECT-PROGRAMMER SPECIFICATION OR <^C^R> MUST BE TYPED.
.BLANK 1
^IN THE ^^AUTO\\ FILE SPECIFICATION, THE DEFAULT STRING IS
.SKIP 1
	^^DSK:OPSER.ATO\\
.SKIP 1
^THE SAME DEFAULT RULES APPLY TO THIS FILE SPECIFICATION AS APPLY TO THE ^^TLOG\\ FILE SPECIFICATION.
.BLANK 1
^IF AN INPUT LINE DOES NOT START WITH A DASH OR COLON, AND THE
FIRST NON-ALPHANUMERIC CHARACTER IS NOT A DASH, THAT ENTIRE
LINE IS SENT TO THE LAST SUBJOB REFERENCED.
.TEST PAGE 10
.BLANK 3
2.3##^SPECIAL ^ENTRIES
.BLANK 1
^THE ^^REENTER\\ COMMAND WILL ACT
EXACTLY AS A ^^START\\ OR ^^RUN\\ COMMAND EXCEPT THAT THE SUBJOB ACTIVITY
SITUATION WILL BE UNTOUCHED, AND THE LOW SEGMENT WILL NOT BE ZEROED.
^THIS MEANS THE ^^AUTO\\ MODE, IF IN PROGRESS, IS
ENDED, AND THE ^^LOG\\ FILE, IF OPENED, IS CLOSED.
.BLANK 3
3.0##^^SUBJOB SPECIFICATION\\
.BLANK 1
^A SUBJOB CAN BE SPECIFIED IN ANY ONE OF FOUR WAYS. ^IT CAN BE LEFT
OUT ENTIRELY, IN WHICH CASE THE LAST SUBJOB REFERENCED IS PRESUMED.
^ONE CAN USE ^^ALL\\, IN WHICH CASE ALL ACTIVE SUBJOBS ARE
IMPLIED. ^ONE CAN TYPE A DECIMAL NUMBER FROM ZERO TO THE LIMIT
^^OPSER\\ WAS GENERATED FOR, OR A MNEMONIC CAN BE
ASSIGNED TO THE SUBJOB BY THE ^^:DEFINE\\ COMMAND.
.BLANK 3
4.0##^^SUBJOB COMMUNICATION\\
.BLANK 2
4.1##^INPUT TO A ^SUBJOB
.BLANK 1
^THE OPERATOR CAN SEND TEXT TO A
SUBJOB BY TYPING THE SUBJOB SPECIFICATION, DELIMITED BY A DASH,
FOLLOWED BY THE LINE OF TEXT. ^ALL TEXT FOLLOWING THE DASH
UP TO AND INCLUDING THE BREAK CHARACTER IS SENT UNMODIFIED
TO THE SUBJOB. ^FOR EXAMPLE,
.SKIP 1
	^^3-R BATCH<CR>\\
.SKIP 1
WOULD RESULT IN ^^R BATCH<CR>\\ BEING SENT TO
SUBJOB 3. ^IN SOME CASES IT IS DESIRABLE TO SEND MANY
LINES AT ONCE TO A SUBJOB. ^ONE SHOULD TYPE A DOUBLE DASH
AFTER THE SUBJOB SPECIFICATION, THEN A DELIMITER, THE LINES, AND
THE DELIMITER AGAIN. ^FOR EXAMPLE,
.SKIP 1
	^^B--"R PIP<CR>
.BREAK
	DSK:/X/B__DTA1:*.*<CR>
.BREAK
	"<CR>\\
.SKIP 1
WOULD SEND ALL OF THE TEXT BETWEEN THE QUOTES TO SUBJOB ^B.
.TEST PAGE 8
.BLANK 3
4.2##^OUTPUT ^FROM A ^SUBJOB
.BLANK 1
.TEST PAGE 3
^ANY OUTPUT FROM A SUBJOB IS
HEADED BY THE TIME OF DAY, THE SUBJOB'S NAME
AND A CARRIAGE RETURN. ^THEN THE OUTPUT IS TYPED ON THE TERMINAL.
.BLANK 3
5.0##^^CORE LAYOUT\\
.BLANK 1
^WITH NORMAL ASSEMBLY OPTIONS, ^^OPSER\\ IS ASSEMBLED IN
TWO SEGMENTS; A 2^K HIGH SEGMENT, AND A 1^K LOW SEGMENT DATA
BASE. ^ALL BUFFERS EXCEPT THOSE OF THE ^^AUTO\\ DEVICE ARE
PREALLOCATED; THEIR SIZES ARE SUBJECT TO FURTHER ASSEMBLY SWITCHES. ^THE
BUFFERS FOR THE ^^AUTO\\ DEVICE ARE EXPANDED DYNAMICALLY,
PUSHING ^^OPSER\\'S LOW SEGMENT OVER THE 1^K MARK.
^THE LOW SEGMENT IS PURELY BLOCK STORAGE ASSIGNMENTS,
SO NO LOW FILE IS WRITTEN OUT ON ^^SAVE\\.
.BLANK 3
6.0##^^CODING CONVENTIONS\\
.BLANK 3
6.1##^REGISTER ^ASSIGNMENTS
.BLANK 1
^^OPSER\\'S ACCUMULATORS
ARE ASSIGNED BY THE FOLLOWING SET OF SYMBOLS:
.SKIP 1
.NOFILL
.NOJUSTIFY
	^^STAT\\=0		; C(LH) = PROGRAM BITS
			; C(RH) = SUBJOB USAGE BITS
	^A=1		; GENERAL SCRATCH
	^B=^A+1
	^C=^B+1
	^D=^C+1
	^E=^D+1
	^^LASO\\=11		; LAST OUTPUT FROM THIS SJB
	^^ITEM\\=12		; MONJOBNBR OF SUBJOB
	^^CMD\\=13		; WORD INPUT REGISTER
	^^SJB\\=14		; ^^PTY\\ SUBJOB (CHANNEL) REF
	^^PT1\\=15		; BYTE POINTER
	^^DATA\\=16		; ^^ASCII I/O\\ REGISTER
	^P=17		; PUSHDOWN POINTER
.TEST PAGE 8
.FILL
.JUSTIFY
.BLANK 1
^REGISTERS ^A THROUGH ^E ARE FOR GENERAL SCRATCH, TO
BE USED FOR ^^LOOKUP, ^^ENTER\\ OR OTHER ^U^U^O'S. ^THE
ONLY TIME THEY SHOULD BE PRESERVED IS IN THE ^I/^O
SUBROUTINES, SINCE THESE ROUTINES ARE CALLED SO OFTEN AND
FROM SO MANY CONTEXTS. ^REGISTER ^P^T1 MUST ALSO BE SAVED IN
^I/^O ROUTINES. ^DURING ^I/^O ERROR RECOVERY ROUTINES, THE ^^ASCII\\
BYTE REGISTER, ^^DATA\\, MUST ALSO BE PUSHED.
.BLANK 3
6.2##^TASTY ^TIDBITS
.BLANK 1
^REGISTER ^^SJB\\
USUALLY CONTAINS SOME KIND OF ^^AOBJN\\ POINTER,
SO ONE MUST BE CAUTIOUS OF THE C(LH), SINCE IT CAN BE ANY
KIND OF GARBAGE. ^THAT REGISTER IS MAINLY USED IN THE INDEX
FIELD.
.TEST PAGE 8
.BLANK 3
6.3##^ASSEMBLY ^SWITCHES
.BLANK 1
^^PURE\\, IF NON-ZERO, ^^OPSER\\ IS ASSEMBLED AS A REENTRANT PROGRAM.
.BLANK 1
^^MOST\\ SYMBOLIZES THE MAXIMUM NUMBER OF TIMES A ^^PTY\\'S
OUTPUT BUFFERS WILL BE TRANSMITTED BEFORE CONTROL IS RETURNED TO
THE OPERATOR. ^THIS IS TO PREVENT LOUD-MOUTHED SUBJOBS FROM
TAKING A STRANGLEHOLD ON ^^OPSER\\'S ATTENTION.
.BLANK 1
^^LISTN\\, IF ZERO, WILL PROVIDE A NORMAL LISTING FILE WITH MACRO
EXPANSIONS ^^XLIST\\'ED. ^A NEGATIVE VALUE WILL GIVE AN ^^XALL\\
LISTING, AND A POSITIVE ONE AN UGLY ^^XALL.\\
.BLANK 1
^^PDLSIZ\\ SPECIFIES HOW LARGE THE PUSHDOWN LIST SHOULD BE.
.BLANK 1
^^SNOOZT\\ SPECIFIES HOW LONG ^^OPSER\\ SHOULD SLEEP WHEN
THERE'S NOTHING TO DO, OR WHEN IT'S IN SOME KIND OF WAIT.
.BLANK 1
^^CHANCE\\ SETS THE NUMBER OF TIMES ^^OPSER\\ WILL
SLEEP WAITING FOR A PREVIOUSLY ACTIVE SUBJOB TO RESUME OUTPUT.
.BLANK 1
^^HGHPTY\\ SETS THE UPPER SUBJOB LIMIT, I.E., ^^OPSER\\ WILL
BE GENERATED FOR ^^HGHPTY\\+1 SUBJOBS, NUMBERED FROM ZERO TO
^^HGHPTY\\.
.BLANK 1
^^FTAUTO\\, IF NON-ZERO, IMPLIES THE ASSEMBLY OF THE ^^AUTO\\
FEATURE.
.BLANK 1
^^FTTLOG\\, IF NON-ZERO, IMPLIES THE ASSEMBLY OF THE LOG FILE
FEATURE.
.BLANK 1
^^DSKSIZ\\ SPECIFIES THE SIZE OF A STANDARD DISK BUFFER.
.BLANK 1
^^TTYSIZ\\ SETS THE STANDARD SIZE OF A TELETYPE BUFFER.
.BLANK 1
^^LOGNB\\ SETS THE NUMBER OF PRE-ALLOCATED BUFFERS FOR THE LOG FILE.
.BLANK 1
^^FTTBUF\\, IF NON-ZERO, ASSUMES BUFFERED ^^TTY I/O.
.BLANK 1
^^TTONB\\ SETS THE NUMBER OF ^^TTY\\ OUTPUT BUFFERS.
.BLANK 1
^^FT4S72\\ ^IF NON-ZERO, ASSUMES ^LEVEL ^C AND ^LEVEL ^D.