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.