Google
 

Trailing-Edge - PDP-10 Archives - tops20-v7-ft-dist2-clock - galaxy-sources/qsrmac.mac
There are 45 other files named qsrmac.mac in the archive. Click here to see a list.
	UNIVER	QSRMAC  --  Parameter File for QUASAR
	SUBTTL	Preliminaries

;	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1975, 1988.
;	ALL RIGHTS RESERVED.
;
;	THIS SOFTWARE IS FURNISHED UNDER A  LICENSE AND MAY BE USED AND  COPIED
;	ONLY IN  ACCORDANCE  WITH  THE  TERMS OF  SUCH  LICENSE  AND  WITH  THE
;	INCLUSION OF THE ABOVE  COPYRIGHT NOTICE.  THIS  SOFTWARE OR ANY  OTHER
;	COPIES THEREOF MAY NOT BE PROVIDED  OR OTHERWISE MADE AVAILABLE TO  ANY
;	OTHER PERSON.  NO  TITLE TO  AND OWNERSHIP  OF THE  SOFTWARE IS  HEREBY
;	TRANSFERRED.
;
;	THE INFORMATION IN THIS  SOFTWARE IS SUBJECT  TO CHANGE WITHOUT  NOTICE
;	AND SHOULD  NOT  BE CONSTRUED  AS  A COMMITMENT  BY  DIGITAL  EQUIPMENT
;	CORPORATION.
;
;	DIGITAL ASSUMES NO  RESPONSIBILITY FOR  THE USE OR  RELIABILITY OF  ITS
;	SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.


	SEARCH	GALCNF		;GET CONFIGURATION DATA
	SEARCH	GLXMAC		;GET GALAXY SYMBOLS
	SEARCH	ORNMAC		;GET OPERATOR SYMBOLS

;	.DIRECT	.NOBIN		;NO REL FILE...

IFN FTUUOS,<IF1,<PRINTX	Building a GALAXY-10 System>
		SEARCH UUOSYM	;GET TOPS10-UUO SYMBOLS
>  ;END OF IFN FTUUOS

IFN FTJSYS,<IF1,<PRINTX	Building a GALAXY-20 System>
		SEARCH MONSYM	;GET TOPS20-JSYS SYMBOLS
>  ;END OF IFN FTJSYS

	SALL			;SUPPRESS MACRO EXPANSIONS

	%%.QSR==36			;Major change number of QSRMAC

	QMCMAN==:0			;Maintenance edit number
	QMCDEV==:1306			;Development edit number
	VERSIN (QMC)			;Generate edit number
	Subttl	Table of Contents

;		     Table of Contents for QSRMAC
;
;				  Section		      Page
;
;
;    1. Revision history . . . . . . . . . . . . . . . . . . .   5
;    2. Accumulator Definitions  . . . . . . . . . . . . . . .   6
;    3. Symbols derived from GALCNF  . . . . . . . . . . . . .   7
;    4. Changable System Parameters  . . . . . . . . . . . . .   8
;    5. RDB - Request Descriptor Block . . . . . . . . . . . .   9
;    6. ROB - Requested Object Block . . . . . . . . . . . . .  10
;    7. DIB - Dependency Information Block . . . . . . . . . .  11
;    8. QH - Queue Header Definitions  . . . . . . . . . . . .  12
;    9. EV - Timed event block definitions . . . . . . . . . .  13
;   10. QE - Queue Entry Definitions . . . . . . . . . . . . .  14
;   11. JOB INFORMATION BLOCK (.QEJBB) DESCRIPTION . . . . . .  16
;   12. OBJ - Object Queue . . . . . . . . . . . . . . . . . .  17
;   13. PSB - Processor Status Block . . . . . . . . . . . . .  20
;   14. SPL - Spool Queue Definition . . . . . . . . . . . . .  21
;   15. STR - Structure Queue Definition . . . . . . . . . . .  22
;   16. NETWORK DATA BASE STRUCTURE  . . . . . . . . . . . . .  23
;   17. NODE ATTRIBUTE BLOCK (for SNA Workstations)  . . . . .  25
;   18. NODE OBJECT BLOCK (for SNA Workstations) . . . . . . .  26
;   19. ROUTE TABLE ENTRY DESCRIPTION  . . . . . . . . . . . .  27
;   20. CSM - Canonical SPOOL Message  . . . . . . . . . . . .  28
;   21. CLM - Canonical LOGOUT Message . . . . . . . . . . . .  29
;   22. The Messages and their respective codes  . . . . . . .  30
;   23. The HELLO Message - Function 1 . . . . . . . . . . . .  31
;   24. The RELEASE Message - Function 2 . . . . . . . . . . .  32
;   25. The CHECKPOINT and REQUEUE messages - Functions 3 and   33
;   26. The NEXTJOB and CREATE Messages - Functions 5 and 7  .  36
;   27. EQ - The External Queue Entry  . . . . . . . . . . . .  37
;   28. The ABORT Message - Function 6 . . . . . . . . . . . .  44
;   29. The LIST Message - Function 10 . . . . . . . . . . . .  45
;   30. The MODIFY Message - Function 11 . . . . . . . . . . .  47
;   31. The KILL Message - Function 12 . . . . . . . . . . . .  49
;   32. THE LIST ANSWER MESSAGE. . . . . . . . . . . . . . . .  50
;   33. The REQUEST FOR CHECKPOINT Message - Function 15 . . .  51
;   34. The DEFER Message - Function 16  . . . . . . . . . . .  52
;   35. Event Counters . . . . . . . . . . . . . . . . . . . .  53
;   36. The COUNT Message - Function 20  . . . . . . . . . . .  55
;   37. The COUNTANSWER Message - Function 21  . . . . . . . .  56
;   38. The SETUP/SHUTDOWN Message - Function 22 . . . . . . .  57
;   39. The RESPONSE-TO-SETUP Message - Function 23  . . . . .  59
;   40. The HOLD/RELEASE Message - Function 25 . . . . . . . .  61
;   41. The SPOOL Message - Function 26 (sent by IPCC) . . . .  62
;   42. The LOGOUT Message - Function 27 (sent by IPCC)  . . .  64
;   43. MONITOR LOGIN MESSAGE PROCESSOR  . . . . . . . . . . .  65
;   44. TAPE ONLINE MESSAGE Function 31 (sent by IPCC) . . . .  66
;   45. THE DEVICE STATUS UPDATE MESSAGE - FUNCTION 31 . . . .  67
;   46. TAPE DEASSIGN/DISMOUNT MESSAGE (IPCC FUNCTION 34)  . .  68
;   47. Job reset message (IPCC function 37) . . . . . . . . .  69
	Subttl	Table of Contents (page 2)

;		     Table of Contents for QSRMAC
;
;				  Section		      Page
;
;
;   48. Disk unit ATTACH/DETACH Message (IPCC FCN 42/43) . . .  70
;   49. Disk unit XCHANGE Message (IPCC function 44) . . . . .  71
;   50. Structure removal message (IPCC function 45) . . . . .  72
;   51. Magtape unit accessible message (IPCC function 46) . .  73
;   52. NODE-WENT-AWAY NOTIFICATION MESSAGE (FUNCTION 36)  . .  74
;   53. .QOCQE - CREATE QUEUE ENTRY MESSAGE (FUNCTION 37)  . .  75
;   54. RECOGNIZE MESSAGE (FUNCTION .QOREC - 40) . . . . . . .  80
;   55. Tape status message (.QOTST functions 41)  . . . . . .  81
;   56. TAPE DRIVE UNLOAD MESSAGE (FUNCTION .QOUNL - 42) . . .  83
;   57. Volume Mounted message to tape labeller (.QOVMN = 43)   84
;   58. Volume dismounted message to tape labeller (.QOVDM = 4  85
;   59. Volume switch request from tape labeller (.QOVSR = 45)  86
;   60. Volume Switch Directive From MDA to Tape Labeler (.QOV  87
;   61. Request for System Catalog Information (.QORCT)  . . .  88
;   62. Catalog information message (.QOCAT) . . . . . . . . .  89
;   63. INTERNAL CATALOG CACHE STRUCTURE . . . . . . . . . . .  91
;   64. BUILD A STRUCTURE MESSAGE (.QOBLD) . . . . . . . . . .  92
;   65. MDA ACK MESSAGE (.QOACK) . . . . . . . . . . . . . . .  93
;   66. ADD/REMOVE A STRUCTURE TO A USERS SEARCH LIST MESSAGE   94
;   67. DISMOUNT/DEALLOCATE A VOLUME SET MESSAGE (.QODVS)  . .  95
;   68. .QOLAC - List allocations for a job  . . . . . . . . .  96
;   69. .QOALC - Prescan a control file for allocations  . . .  97
;   70. .QOPRM - Response to .QOALC request  . . . . . . . . .  98
;   71. .QOIDN - Tape Initialization Done message  . . . . . .  99
;   72. LPTSPL forms change message (.QOFCH (63) ) . . . . . . 100
;   73. IBMCOM Statistice message (.QOIBM) . . . . . . . . . . 101
;   74. Common Parameters  . . . . . . . . . . . . . . . . . . 102
;   75. Random Macros  . . . . . . . . . . . . . . . . . . . . 103
;   76. Failsoft System Definitions  . . . . . . . . . . . . . 104
;   77. QUASAR Fatal Error Codes . . . . . . . . . . . . . . . 105
;   78. MDA ERROR MACROS AND CODES . . . . . . . . . . . . . . 106
;   79. Definition of the Known Queues . . . . . . . . . . . . 107
;   80. MTCON MOUNT STRUCTURES . . . . . . . . . . . . . . . . 108
;   81. MOUNT REQUESTS (WITHIN THE MESSAGE)  . . . . . . . . . 109
;   82. TAPE MOUNT REQUEST BLOCKS  . . . . . . . . . . . . . . 110
;   83. .MEFLG BIT DEFINITIONS . . . . . . . . . . . . . . . . 113
;   84. MOUNT REQUEST  . . . . . . . . . . . . . . . . . . . . 114
;   85. Response to User Tape Mount Request  . . . . . . . . . 115
;   86. MOUNT RESPONSES  . . . . . . . . . . . . . . . . . . . 116
;   87. CANCELING TAPE MOUNT REQUESTS  . . . . . . . . . . . . 117
;   88. ABORT MSG FROM QUASAR TO MTCON . . . . . . . . . . . . 118
;   89. MOUNT RELEASE MESSAGE  . . . . . . . . . . . . . . . . 119
;   90. QUASAR TAPE MOUNT REQUEST QUEUE STRUCTURE  . . . . . . 120
;   91. VOLUME SET LIST (VSL) STRUCTURE  . . . . . . . . . . . 121
;   92. VOLUME LIST STRUCTURE (VOL)  . . . . . . . . . . . . . 122
;   93. UNIT CONTROL BLOCK STRUCTURE . . . . . . . . . . . . . 123
;   94. ALLOCATION AND DEADLOCK AVOIDANCE MATRICES . . . . . . 124
	Subttl	Table of Contents (page 3)

;		     Table of Contents for QSRMAC
;
;				  Section		      Page
;
;
;   95. REQUEST FOR MOUNT ATTRIBUTES . . . . . . . . . . . . . 125
;   96. RESPONSE TO REQUEST FOR MOUNT ATTRIBUTES . . . . . . . 126
;   97. The ARCHIVE Message - Function 41 (sent by IPCC) . . . 127
SUBTTL	Revision history

COMMENT \

*****  Release 4.2 -- begin maintenance edits  *****

1214	4.2.1451
	Put logging of counts under conditional.

1215	4.2.1546
	Print the complete file specification to the INFORMATION
RETRIEVAL-REQUEST /ALL command if the the caller has privileges or if the
request belongs to the caller. (TOPS-20 only)

1216	4.2.1582
	Define EQ.CHP in word .EQSEQ to indicate if the priority of a PRINT or
SUBMIT request has been changed.

1217	4.2.1605
	Define symbols %RBMIN and %RBMAX for use in checking for valid rebuild
codes.

1220	4.2.1607
	Define symbols .QIMOD for use in checking for a modify request.

1221	4.2.1613
	Define bit OBSIBM to indicate that an object is part of an IBM node.

*****  Release 5.0 -- begin development edits  *****

1230	5.1003		3-Jan-82
	Move to new development area.  Add version vector.  Clean up
edit organization.  Update TOC.

1231	5.1160		18-Sept-84
	Change INPMAX to be G.INBS (value to be determine by GALGEN).  This is
the highest number a batch stream can be on a system.

1232	5.1162		21-Sept-84
	Define bit OBSSNA for SNA printers and punches. Define flag NETSNA for
SNA Workstations. Define a Node Attribute Block for SNA Workstations Nodes.
Define a Node Object Block for SNA Workstations Objects.

1233	5.1174		22-Oct-84
	Redefine SUP.ST to its original value in the setup message to IBMSPL.

1234	5.1173		23-Oct-84
	Define a new block, .QCSNA, to be used by SNASUB in processing 
NOTRANSLATE, RECORD and TAB.

1235	5.1182		30-Nov-84
	Define MR.FLG as the flag field in word .MRFLG of an MDR

1236	5.1197		5-Feb-85
	Define QSR.JP, BAT.JP, ORN.JP and LPT.JP to be used by QUASAR, BATCON
ORION and LPTSPL to decide whether the respective process is to be a system
process or not.

1237	5.1210		25-Mar-85
	Define .VSVOL as two words in the VSL to accomodate the first name
of the volume set which will be used by INFORMATION MOUNT/ALL

*****  Release 5.0 -- begin maintenance edits  *****
1245	Increment maintenance edit level for GALAXY 5.

*****  Release 6.0 -- begin development edits  *****

1260	6.1004		5-Oct-87
	Add support for Cluster LPTSPL

1261	6.1012		10-Oct-87
	Define the NAME block in a SETUP message to a DQS or LAT printer that
includes the VMS queue name (for DQS printers) or the PORT or SERVICE name
for (LAT printers) and also the type of name.

1262	6.1013		10-Oct-87
	Define bit EQ.DLR in word .EQSEQ to indicate that a print request is 
for a DQS or LAT printer. Also, add words .EQCHR and .EQRPN to store the
DQS characteristics mask and VMS queue name (or a LAT PORT or SERVICE name).

1263	6.1025		19-Oct-87
	Add the remote name block to the definitions of the object queue entry,
the ROUTE table entry and the QE entry.

1264	6.1028		19-Oct-87
	Add the remote LPT name block to the RELEASE message. This block is 
defined only for DQS and LAT LPTs.

1265 	6.1030		19-Oct-87
        Define block .LSPID in the LIST message to contain the PID of the
sender for a INFORMATION OUTPUT/DESTINATION-NODE command. Define word  KIL.PD
in the KILL message to contain the PID of the sender for a CANCEL PRINT/
DESTINATION-NODE command.

1266	6.1031		20-Oct-87
	Add the remote printer name block to the DEVICE STATUS UPDATE MESSAGE

1267	6.1032		22-Oct-87
	In support of remote printing, add words .EQNAM to the EQ definition,
SUP.CR to the SETUP message definition, KIL.ND to the KILL message and RES.CR
to the RESPONSE TO SETUP message.

1270	6.1039		28-Oct-87
	Use proper definition of RSU.CR.

1271	6.1040		28-Oct-87
	Change the SETUP and RESPONSE TO SETUP messages to add the queue name
(DQS) or service/port name (LAT) inside the message rather than having a
seperate block type.  Update pictures for SETUP and RESPONSE TO SETUP messages.
This edit adds use of OBJ.SQ (object block length including queue name).

1272	6.1040		29-Oct-87
	Response to setup message should follow the same format as the setup
message (the first three object words followed by the queue/service/port name).

1273	6.1048		30-Oct-87
	Don't include the temporary file word (.FPTEM) in the minimum size
of an FP.

1274	6.1057		4-Nov-87
	Change PS: to BS: and PS:[SPOOL] to SPOOL: for Non PS: login feature.

1275	6.1067		9-Nov-87
	Add definitions .EQNJN and .EQPID to the EQ and definitions QE.NOD,
to the QE in suport of processing of Cluster printer requests.

1276	6.1072		16-Nov-87
	Add 1 block for OBJTCR.

1277	6.1121		6-Dec-87
	Define NEB.JP, BAT.JP, ORN.JP and LPT.JP to be used by NEBULA to
decide whether it is to be a system process or not.

1300	6.1123		6-Dec-87
	Define bits EQ.NND and QE.NND to indicate that a CREATE request did not
explicitly include a node name.

1301	6.1175		7-Feb-88
	Add .QENOD to the QE definition and block type .LSUNM to the LIST 
message as well as defining new error codes E$ILF, E$IUN and E$NNR all in
support of INFORMATION OUTPUT/DESTINATION and CANCEL PRINT /DESTINATION.

1302	6.1177		11-Feb-88
	Add bit QE.LOG to the QE definition, words RLSFG1 and RLSFG2 to the
route message definition, word OBJSC2 to the object queue entry definition
and word .EQPRT to the EQ definition all in support of specifying specific
local printers to route batch log and spooled files to.

1303	6.1183		16-Feb-88
	Define error code E$CNE.

1304	6.1191		23-Feb-88
	Change the error text of error code E$IFM.

1305	6.1225		8-Mar-88
	Update copyright notice.

1306	6.1257		14-May-88
	Add code "job cancelled by a remote user" to block ABO.CD of the
ABORT message. Also, define block types ABO.RU and ABO.ND to the ABORT
message and block type KIL.RU to the KILL message. These changes are in
support of remote cancelling of a cluster print request to indicate who
cancelled that request and from which node the cancel request originated.

\   ;End of Revision History
	SUBTTL	Accumulator Definitions


	AP==13			;ARGUMENTS FOR ALL M$xxxx ROUTINES

	E==14			;QUEUE ENTRY POINTER

	BM==14			;'B' MATRIX POINTER

	H==15			;QUEUE HEADER POINTER

	CM==15			;'C' MATRIX POINTER

	M==16			;MESSAGE POINTER
SUBTTL	Symbols derived from GALCNF

; DEFINE FEATURE TESTS SO THAT EACH MODULE NEED ONLY SEARCH QSRMAC

	XP	FTRQUE,FTRQUE		; ON = KEEP A REDUNDANT MASTER QUEUE
	XP	FTRJE,FTRJE		; ON = ADD RJE SUPPORT TO SPOOLERS
	XP	FTDN60,FTDN60		; ON = ADD DN60 SUPPORT TO SPOOLERS

; DEFINE BATCH JOB PARAMETERS

	XP	INPMAX,G.INBS		;highest # a batch stream can be
	XP	INPTIM,G.ITIM		;DEFAULT BATCH JOB TIME LIMIT
	XP	INPCOR,G.ICOR		;DEFAULT BATCH JOB CORE LIMIT
	XP	INPPGS,G.ILPT		;DEFAULT PAGE LIMIT
	XP	INPCDS,G.ICDP		;DEFAULT PUNCHED CARD LIMIT
	XP	INPPTP,G.IPTP		;DEFAULT PAPER TAPE LIMIT
	XP	INPPLT,G.IPLT		;DEFAULT PLOTTER TIME
	XP	INPOIP,1		;OPERATOR INTERVENTION PARAMETER
	XP	INPLOG,G.ILOG		;BATCH /OUTPUT: DEFAULT

; DEFINE SPOOLING SYSTEM PARAMETERS

	XP	SPLMAX,^D20		;MAXIMUM NUMBER OF OBJECTS ALLOWED
	XP	SPLPRI,G.DPRI		;PRIORITY FOR SPOOLED REQUESTS
	XP	MXUPRI,G.SPRI		;MAXIMUM USER PRIORITY

	XP	FRMNOR,G.DNOR		;NAME OF "NORMAL" FORMS
	XP	FRMUNI,G.DNUC		;NUMBER OF UNIQUE CHARACTERS IN THE NAME
	XP	FLEACT,G.FLEA		;FORMS LIMIT EXCEEDED ACTION

		FRMSK1==MASK.(6*FRMUNI,6*FRMUNI-1)	;ANDX, LOAD MASK
		FRMSK2==MASK.(^D36-6*FRMUNI,^D35)	;TXZ STYLE MASK

	XP	LPTBAN,G.LBAN		;DEFAULT NUMBER OF BANNER PAGES
	XP	LPTTRL,G.LTRL		;DEFAULT NUMBER OF TRAILER PAGES
	XP	LPTHDR,G.LHDR		;DEFAULT NUMBER OF HEADER PAGES
	XP	LPTDIV,G.LPTD		;DIVISOR FOR CNVRTNG DSK BLKS TO PAGES
	XP	LPTMUL,G.LPTM		;MULTIPR FOR CNVRTNG DSK BLKS TO PAGES
	ND	LPTARF,^D10		;10 PAGES PER MINUTE (600 LPM)
	ND	LPTKTL,^D15		;KSYS THRESHOLD LIMIT

	XP	CDPDIV,G.CDPD		;DIVISOR FOR CNVRTNG DSK BLKS TO CARDS
	XP	CDPMUL,G.CDPM		;MULTIPR FOR CNVRTNG DSK BLKS TO CARDS
	ND	CDPARF,^D300		;300 CARDS PER MINUTE (CP10)
	ND	CDPKTL,^D60		;KSYS THRESHOLD LIMIT

	XP	PTPDIV,G.PTPD		;DIVISOR FOR CNVRTNG DSK BLKS TO FEET
	XP	PTPMUL,G.PTPM		;MULTIPR FOR CNVRTNG DSK BLKS TO FEET
	ND	PTPARF,^D25		;25 FEET PER MINUTE (PC09)
	ND	PTPKTL,^D60		;KSYS THRESHOLD LIMIT

	XP	PLTDIV,G.PLTD		;DIVISOR FOR CNVRTNG DSK BLKS TO FEET
	XP	PLTMUL,G.PLTM		;MULTIPR FOR CNVRTNG DSK BLKS TO FEET
	ND	PLTARF,^D1		;1 MINUTE PER MINUTE (200 STP/MIN XY10)
	ND	PLTKTL,^D60		;KSYS THRESHOLD LIMIT

;Define system process options

	XP	QSR.JP,Q.SYS		;QUASAR
	XP	BAT.JP,B.SYS		;BATCON
	XP	ORN.JP,O.SYS		;ORION
	XP	LPT.JP,L.SYS		;LPTSPL (and D60JSY)
	XP	NEB.JP,N.SYS		;[1277]NEBULA

;FAILSOFT SYSTEM PARAMETERS

	XP	FSSSTR,G.QSTR		;FILE-STRUCTURE FOR MASTER QUEUES

;MDA SYSTEM PARAMETERS

TOPS10<
	XP	DEFLBT,DEFLBT		;DEFAULT LABEL TYPE
	XP	DEF7TK,DEF7TK		;DEFAULT DENSITY FOR 7 TRACK
	XP	DEF9TK,DEF9TK		;DEFAULT DENSITY FOR 9 TRACK
	XP	DEFTRK,DEFTRK		;DEFAULT TRACK TYPE
	XP	NPRTLB,NPRTLB		;BLP FOR 1=ALL USERS, 0=PRIV USERS
	XP	MDADAE,0		;DEADLOCK AVOIDANCE 1=ENABLE, 0=DISABLE
	XP	PRMSTR,0		;PERMANENT STRUCTURES 0=OFF, 1=ON
>

TOPS20<	ND	NPRTLB,0 >		;BLP FOR 1=ALL USERS, 0=PRIV USERS
					;Pick up symbol from GALCNF
SUBTTL	Changable System Parameters

	SYSPRM	EQLMSZ,^D10,^D10	;EQ LIMIT WORD BLOCK LENGTH
	SYSPRM	EQCKSZ,^D10,^D10	;EQ CHECKPOINT BLOCK LENGTH
	SYSPRM	EQNMSZ,2,10		;.EQOWN SIZE IN WORDS
	SYSPRM	EQASSZ,10,10		;.EQACT SIZE IN WORDS
	SYSPRM	VSNLEN,10,2		;VOLUME SET NAME LENGTH IN WORDS
	SYSPRM	STSSIZ,21,21		;SIZE OF STATUS AREA IN OBJ AND CHKPNT
	SYSPRM	TIMONA,3,3		;MINUTES TO WAIT FOR OBJECT NOT AVAIL
	SYSPRM	OBPRSZ,5,5		;OBJECT BLOCK PARAMETER LENGTH
	SYSPRM	LPTNLN,10,10		;[1263]REMOTE LPT NAME LENGTH
	SUBTTL	RDB - Request Descriptor Block

;THE REQUEST DESCRIPTOR BLOCK IS THE DATA-STRUCTURE USED TO REPRESENT
;	A REQUEST OR SET OF REQUESTS.  IT CONSISTS OF A JOBNAME WITH
;	WILDCARDS AND A POSITIVE MASK, A SEQUENCE NUMBER (WHICH IF 0
;	IMPLIES ALL JOBS WHICH FIT THE REST OF THE CRITERIA), AND AN
;	OPERATING SYSTEM DEPENDENT OWNER SPECIFIER WITH WILDCARDS.

;	!-------------------------------------------------------!
;	!                  SPECIFIED JOB NAME                   !
;	!-------------------------------------------------------!
;	!                     JOB NAME MASK                     !
;	!-------------------------------------------------------!
;	!               EXTERNAL SEQUENCE NUMBER                !
;	!-------------------------------------------------------!
;	!                 REQUEST ID NUMBER                     !
;	!-------------------------------------------------------!
;
;	                 -----  TOPS10  -----
;	!                                                       !
;	!-------------------------------------------------------!
;	!              OWNER IDENTIFICATION (PPN)               !
;	!-------------------------------------------------------!
;	!                     OWNER ID MASK                     !
;	!-------------------------------------------------------!
;
;	                 -----  TOPS20  -----
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	/            SPECIFICATION OF REQUEST OWNER             /
;	/                                                       /
;	/                                                       /
;	!                                                       !
;	!=======================================================!

	PHASE	0

.RDBJB:! BLOCK	1			;JOB NAME (SIXBIT)
.RDBJM:! BLOCK	1			;JOB NAME MASK
.RDBES:! BLOCK	1			;EXTERNAL SEQUENCE NUMBER
.RDBRQ:! BLOCK	1			;REQUEST ID NUMBER

TOPS10 <
.RDBOI:! BLOCK	1			;OWNER ID
.RDBOM:! BLOCK	1			;OWNER ID MASK
RDBSIZ:!
.RDBVS:! BLOCK	10			;ASCIZ VOL SET NAME FOR MOUNT REQUESTS
RDBMSZ:!
>  ;END TOPS10 CONDITIONAL

TOPS20 <
.RDBOW:! BLOCK	10			;REQUEST OWNER SPEC
.RDBVS:!
RDBSIZ:!
>  ;END TOPS20 CONDITIONAL

	DEPHASE
	SUBTTL	ROB - Requested Object Block

;The ROB is used in any context where an object and
;	some attributes (or a particular object) must be specified.

;	!=======================================================!
;	!                      OBJECT TYPE                      !
;	!-------------------------------------------------------!
;	!     DEVICE ATTRIBUTES     !   PHYSICAL UNIT NUMBER    !
;	!-------------------------------------------------------!
;	!                       NODE NAME                       !
;	!-------------------------------------------------------!
;	!              CUSTOMER DEFINED ATTRIBUTES              !
;	!=======================================================!

	PHASE	0

.ROBTY:! BLOCK	1			;OBJECT TYPE
.ROBAT:! BLOCK	1			;ATTRIBUTES (DEC)

	RO.ATR==-1,,0			;OBJECT ATTRIBUTES
	RO.UNI==0,,-1			;PHYSICAL UNIT NUMBER

	DEFINE ATTRIB,<			;;DECLARE THE VALID ATTRIBUTES
	LSTOF.
	X	<Invalid>,%INVLD,0	;;INVALID FOR ALL
	X	<LOWER>,%LOWER,.OTLPT	;;LOWERCASE
	X	<UPPER>,%UPPER,.OTLPT	;;UPPERCASE
	X	<PHYSICAL>,%PHYCL,<.OTLPT,.OTPTP,.OTCDP,.OTPLT>
	X	<>,%GENRC,-1		;;GENERIC (VALID FOR ALL)
	X	<SITGO>,%SITGO,.OTBAT	;;SITGO REQUEST
	LSTON.> ;End of ATTRIB definition

	DEFINE	X(TXT,SYM,OBJ) <
	SYM==ZZ
	%ATMAX==ZZ			;DECLARE THE MAXIMUM VALUE
	ZZ==ZZ+1>

	ZZ==0
	ATTRIB			;DECLARE THE SYMBOL VALUES

.ROBND:! BLOCK	1			;NODE NAME
.ROBUA:! BLOCK	1			;CUSTOMER DEFINED ATTRIBUTES

ROBSIZ:!

	DEPHASE
SUBTTL	DIB - Dependency Information Block

;Each job has a Dependency List associated with it.  Each entry in the
;	list is a DIB which describes one dependency which the job has.

	PHASE	0

.DIBDS:! BLOCK	1			;DEPENDENCY STATUS
	DI.SAT==1B0			;SATISFIED LAST PASS (FOR LIST MOSTLY)
	DI.TYP==0,,-1			;DEPENDENCY TYPE

.DIBDT:! BLOCK 1			;DEPENDENCY DATA

DIBSIZ:!

	DEPHASE


;Currently defined dependencies

;	Symbol		Value		Data
;	------		-----		-------------------------------

	.DTSTR==	1		;Adr of STR queue entry for structure
SUBTTL	QH - Queue Header Definitions

;	!=======================================================!
;	!        QUEUE NAME         !    FLAGS    ! QUEUE TYPE  !
;	!    3 SIXBIT CHARACTERS    !             !             !
;	!-------------------------------------------------------!
;	!      POINTER TO LAST      !     POINTER TO FIRST      !
;	!    ENTRY IN THIS QUEUE    !    ENTRY IN THIS QUEUE    !
;	!-------------------------------------------------------!
;	!    BASE OF SCHEDULING     ! SIZE OF AN  !# OF LIST PGS!
;	!   AND LINKING ALGORITHM   !    ENTRY    !  LAST TIME  !
;	!-------------------------------------------------------!
;	!   PTR TO FIRST ENTRY      !    PTR TO LAST ENTRY      !
;	!-------------------------------------------------------!
;	!                 SIZE OF EACH ENTRY                    !
;	!=======================================================!

	PHASE	0

.QHTYP:! BLOCK	1		;QUEUE TYPE WORD
	QH.NAM==-1,,0		;3 CHARACTER QUE NAME
	QH.FLG==777B26		;FLAGS
		QH.INV==1B19	;OBJECT IS INVISIBLE
	QH.TYP==777B35		;QUEUE TYPE
		.QHTQS==0	;INTERNAL TO QUASAR
		.QHTOU==1	;AN OUTPUT QUEUE
		.QHTIP==2	;AN INPUT QUEUE
		.QHTMD==3	;MOUNTABLE DEVICE QUEUE
		.QHFRR==4	;FREE RUNNING DEVICE QUEUE
		.QHTAR==5	;ARCHIVE SYSTEM QUEUE

.QHLNK:! BLOCK	1		;LINK WORD
	QH.PTL==-1,,0		;POINTER TO LAST ENTRY
	QH.PTF==0,,-1		;POINTER TO FIRST ENTRY

.QHPAG:! BLOCK	1		;STORAGE INFORMATION
	QH.SCH==-1,,0		;SCHEDULER ENTRY VECTOR
		SCHLNK==0	;   LINK IN
		SCHSCH==1	;   SCHEDULE
		SCHDEF==2	;   FILL IN DEFAULTS FOR CREATE
		SCHMOD==3	;   PREFORM QUEUE DEPENDENT MODIFY
		SCHRJI==4	;   RELEASE JOB-OBJECT INTERLOCK
		SCHFJB==5	;   FIND A JOB FOR AN OBJECT

	QH.SIZ==777B26		;SIZE OF EACH ENTRY

.QHLIS:! BLOCK	1	;LIST FLAG (LIQxxx)
.QHAFT:! BLOCK	1	;AFTER TIME OF BEST AFTER JOB

QHSIZE:!			;SIZE OF A QUEUE HEADER

	DEPHASE
SUBTTL	EV - Timed event block definitions


;All the event blocks are kept on a linked list, whose handle
; is stored in G$EVENT.  This list is maintained sorted by
; event time, and thus the first entry in the list contains the
; nearest wakeup time. Users may put any amount of data on the
; end of the event block.

;	!=======================================================!
;	!					!   ENTRY TYPE	!
;	!-------------------------------------------------------!
;	!	    UDT AT WHICH TO SIGNAL THE EVENT		!
;	!-------------------------------------------------------!
;	!	ROUTINE TO CALL WHEN THE TIMER GOES OFF		!
;	!-------------------------------------------------------!
;	!			OPTIONAL DATA			!
;	!=======================================================!

	PHASE	0

.EVTYP:! BLOCK	1			;ENTRY TYPE WORD
	EV.TYP==777B35			;FIELD CONTAINING THE TYPE CODE
		%EVCHK==1		;CHECKPOINT REQUEST
		%EVNOT==2		;FILE ARCHIVE RETRIEVAL NOTIFICATION
		%EVLCK==3		;FILE STRUCTURE UN/LOCK REQUEST
		%EVIGN==4		;IGNORE OBJECT REQUEST
		%EVAFT==5		;/AFTER REQUEST
		%EVNLC==6		;LOCKED STR COUNTDOWN EVENT

.EVUDT:! BLOCK	1			;UNIVERSAL DATE/TIME FOR WAKEUP

.EVRTN:! BLOCK	1			;ROUTINE TO CALL AT WAKEUP
					;ROUTINE GETS CALLED WITH ADRS OF
					;THIS EVENT BLOCK IN S1

.EVMSZ:!				;MINIMUM SIZE OF A BLOCK

	DEPHASE
SUBTTL	QE - Queue Entry Definitions

;	!=======================================================!
;	!     LINK TO PREVIOUS      !       LINK TO NEXT        !
;	!  0 IF THIS IS THE FIRST   !  0 IF THIS IS THE FIRST   !
;	!=======================================================!
;	!  CREATION TIME OF ENTRY (INTERNAL DATE/TIME FORMAT)   !
;	!-------------------------------------------------------!
;	!      POINTER TO OBJECT QUEUE ENTRY FOR THIS REQ       !
;	!-------------------------------------------------------!
;	!                  INTERNAL TASK NAME                   !
;	!-------------------------------------------------------!
;	/                                                       /
;	/                REQUESTED OBJECT BLOCK                 /
;	/                                                       /
;	!-------------------------------------------------------!
;	/                                                       / ;[1263]
;	/                REMOTE LPT NAME BLOCK                  / ;[1263]
;	/                                                       / ;[1263]
;	!-------------------------------------------------------!
;	/                                                       /
;	/                 JOB INFORMATION BLOCK                 /
;	/                                                       /
;	!-------------------------------------------------------!
;	!                           !  DEPENDENCY LIST NUMBER   !
;	!-------------------------------------------------------!
;	!                   ENTRANCE PRIORITY                   !
;	!-------------------------------------------------------!
;	!   THE PROTECTION FIELD    !                           !
;	!-------------------------------------------------------!
;	!			SPARE				!
;	!-------------------------------------------------------!
;	!                                                       !
;	!               REQUEST LIMIT INFORMATION               !
;	!             CONTENTS ARE QUEUE DEPENDENT              !
;	!                        5 WORDS                        !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                       NOTIFY ID                       !
;	!-------------------------------------------------------!
;	!     BATCH JOB NUMBER      !     USER'S JOB NUMBER     !
;	!-------------------------------------------------------!
;	!     DISK PAGE ADDRESS     !                           !
;	!-------------------------------------------------------!
;
;	!                 -----  TOPS 20  -----                 !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                OWNER (LOGGED IN USER)                 !
;	!                      (10 WORDS)                       !
;	!-------------------------------------------------------!
;	!             CREATOR'S CONNECTED DIRECTORY             !
;	!                      (12 WORDS)                       !
;	!=======================================================!
	PHASE	0

.QELNK:! BLOCK	1		;LINK WORD
	QE.PTP==-1,,0		;POINTER TO PREVIOUS ENTRY
	QE.PTN==0,,-1		;POINTER TO NEXT ENTRY

QEHSIZ:!			;SIZE OF QUEUE-ENTRY-HEADER

.QECRE:! BLOCK	1		;INTERNAL CREATION TIME OF THIS ENTRY
.QEOBJ:! BLOCK	1		;POINTER TO OBJECT SERVICING THIS REQUEST
.QEITN:! BLOCK	1		;INTERNAL TASK NAME
	QE.AVO==770000,,00	;ACCT VALIDATION OBJECT TYPE (-10 ONLY)
	QE.AVI==007777,,-1	;ACCT VALIDATION ITN (-10 ONLY)
.QEROB:! BLOCK	ROBSIZ		;REQUESTED OBJECT BLOCK
.QEONM:! BLOCK  LPTNLN		;[1263]REMOTE LPT NAME BLOCK
.QEJBB:! BLOCK	JIBSIZ		;JOB INFORMATION BLOCK
.QEDIN:! BLOCK	1		;DEPENDENCY INFORMATION
	QE.DLN==0,,-1		;DEPENDENCY LIST NUMBER
.QEIPR:! BLOCK	1		;ENTRANCE PRIORITY FOR THIS ENTRY
.QEPRT:! BLOCK	1		;REQUEST PROTECTION
	QE.PRO==-1,,0		;THE PROTECTION FIELD
	 BLOCK	1		;NOT USED (SPARE)
.QELIM:! BLOCK	EQLMSZ		;LIMITS WORDS
.QENID:! BLOCK	1		;/NOTIFY ID (LOGIN TIME, PID, DIRECTRY NBR)
.QEJBN:! BLOCK	1		;JOB NUMBERS (For /NOTIFY)
	QE.UJN==0,,-1		;USERS JOB NUMBER (ORIGIONAL JOB NUMBER)
	QE.BJN==-1,,0		;BATCH JOB NUMBER
.QESTN:! BLOCK	1		;REMOTE INFORMATION
	QE.DPA==-1,,0		;DISK PAGE ADDRESS
	QE.NOD==0,,-1		;[1275]CLUSTER NODE NUMBER WHERE REQUEST ORIGINATED
.QEMDR:! BLOCK	1		;REQUESTS MDR ADDRESS
.QEACT:! BLOCK	EQASSZ		;ACCOUNT STRING (POSSIBLY DIFFERENT FROM .EQACT)
TOPS20 <
.QEOWN:! BLOCK	10		;REQUEST OWNER
.QECON:! BLOCK	12		;CONNECTED DIRECTORY
.QEPID:! BLOCK	1		;[1275]LISSPL'S PID
.QENOD:! BLOCK	1		;[1301]REQUESTOR'S NODE FOR CLUSTER PRINTING
> ;END TOPS20

QNTSIZ:!			;SIZE OF THE QUEUE ENTRY
	SUBTTL JOB INFORMATION BLOCK (.QEJBB) DESCRIPTION




		.QEJOB==.QEJBB+JIB.JN	;EXTERNAL JOB NAME
		.QESEQ==.QEJBB+JIB.SQ	;EXTERNAL VALUES
		   QE.SEQ==777700,,0	;EXTERNAL SEQUENCE NUMBER
		   QE.NND==1B12		;[1300]NODE NAME HAS BEEN DEFAULTED TO LOCAL 
		   QE.DLR==1B13		;[1262]PRINT REQUEST FOR A DQS OR LAT LPT
		   QE.RLT==1B14		;[1260]PRINT REQUEST FROM REMOTE NODE
		   QE.RAI==1B15		;[1260]ACCTING ENABLED ON REMOTE NODE
		   QE.LOG==1B16		;[1302]REQUEST CONTAINS LOG FILES
		   QE.ALR==1B17		;ALLOCATION REQUESTED
		   QE.WAL==1B18		;BATCH REQUEST WAITING FOR ALLOCATION
		   QE.WAM==1B19		;BATCH REQUEST WAITING FOR A MOUNT
		   QE.ACT==3B21		;REQUEST REQUIRES ACCOUNT VALIDATION
		      %VALID==0		;ACCOUNT STRING IS VALID
		      %VALRQ==1		;ACCOUNT VALIDATION IS REQUIRED
		      %VALPD==2		;ACCOUNT VALIDATION HAS BEEN REQUESTED
		   QE.IAS==1B22		;REQUEST CONTAINS INVALID ACCT STRING
		   QE.NOT==3B24		;JOB REQUESTED /NOTIFY
		      %NOTTY==1		;NOTIFY VIA USERS TTY
		      %NOTML==2		;NOTIFY USER VIA MAIL
		      %NOTJB==3		;NOTIFY USERS JOB
		   QE.JBC==1B25		;JOB HAS BEEN CHECKPOINTED
		   QE.HBO==1B26		;JOB HELD BY OPERATOR
		   QE.PRV==1B27		;REQUEST CREATOR WAS PRIVILEGED
		   QE.SPL==1B28		;THIS REQUEST CONTAINS SPOOLED FILES
		   QE.RDE==1B29		;THIS REQUEST DOESN'T EXIST (CLEAN-UP)
		   QE.PRI==77B35	;EXTERNAL PRIORITY
		.QEOID==.QEJBB+JIB.US	;OWNER IDENTIFIER
		.QERID==.QEJBB+JIB.ID	;REQUEST ID.
TOPS10 <
		.QEUSR==.QEJBB+JIB.NM	;USER'S NAME (2 WORDS)
>

	DEPHASE
SUBTTL	OBJ - Object Queue

;For each object on the system, known to QUASAR, an entry in the OBJ queue
;	is made.  This queue is used for scheduling and for interfacing with
;	the operator control.

;	!=======================================================!
;	!                   Object type code                    !
;	!-------------------------------------------------------!
;	!               Unit number of this type                !
;	!-------------------------------------------------------!
;	!                  Node name in SIXBIT                  !
;	!-------------------------------------------------------!
;	/                                                       / ;[1263]
;	/                 Remote LPT name block                 / ;[1263]
;	/                                                       / ;[1263]
;       !-------------------------------------------------------
;	!              PID which has object setup               !
;	!-------------------------------------------------------!
;	!   	    ITN of request currently on OBJect     	!
;	!-------------------------------------------------------!
;	!SCHEDULER STATE INFORMATION!  QUEUE HEADER FOR OBJECT  !
;	!-------------------------------------------------------!
;	!                   OBJect Timer Word                   !
;	!-------------------------------------------------------!
;	!            OBJect Attributes (DEC defined)            !
;	!-------------------------------------------------------!
;	!         OBJect Attributes (Customer defined)          !
;	!-------------------------------------------------------!
;	\           5 Word Object specific parameter            \
;	\                         area                          \
;	!-------------------------------------------------------!
;	!              CURRENT DEVICE STATUS CODE               !
;	!       (FILLED IN BY QUASAR, UPDATED BY SPOOLER)       !
;	!-------------------------------------------------------!
;	\               Current status, expressed               \
;	\                 in as an ASCIZ string                 \
;	!=======================================================!

;Define a macro which will allow a mapping between an object type
;	and various object-type specific data like the queue in
;	which jobs for that object reside, initial object parameters
;	etc.
;
;Format for each line is:
;	X	obj,que,<p1,p2,p3,p4,p5>
;
;where		obj is the object type specified as the XXX in .OTXXX
;		que is the queue in which jobs reside for this object
;		p1 - p5 are the initial contents of the 5 parameter
;			words when an object entry is created.
;			These are a single macro argument.

DEFINE	MAPOBJ,<
	X	BAT,INP,<<1,,77>,<0,,^D600>,0,<INPOIP,,0>,<1,,^D512>>
	X	LPT,LPT,<<1,,77>,<1,,^D500>,<FRMNOR>,<FLEACT,,0>,0>
	X	PTP,PTP,<<1,,77>,<1,,^D500>,<FRMNOR>,<FLEACT,,0>,0>
	X	CDP,CDP,<<1,,77>,<1,,^D500>,<FRMNOR>,<FLEACT,,0>,0>
	X	PLT,PLT,<<1,,77>,<1,,^D30>,<FRMNOR>,<FLEACT,,0>,0>
	X	RDR,RDR,<0,0,0,0,0>
	X	BIN,BIN,<0,0,0,0,0>
	X	DBM,DBM,<0,0,0,0,0>

   TOPS20 <
	X	RET,RET,<0,0,0,0,0>
	X	NOT,NOT,<0,0,0,0,0>
          > ;END TOPS20

>  ;END DEFINE MAPOBJ

;OBJ definitions are on the following page
	PHASE	QEHSIZ		;APPEND TO QUEUE ENTRY HEADER

OBJTYP:! BLOCK	1			;OBJECT TYPE
OBJUNI:! BLOCK	1			;UNIT NUMBER OF THIS TYPE
OBJNOD:! BLOCK	1			;NODE THAT THIS UNIT IS ON
OBJNAM:! BLOCK  LPTNLN			;[1263]REMOTE LPT NAME BLOCK
OBJPID:! BLOCK	1			;PID WHICH HAS THIS OBJ SETUP
OBJTCR:! BLOCK	1			;[1276]TTY CHARACTERISTIC 

OBJITN:! BLOCK	1			;ITN OF CURRENT REQUEST ON OBJECT
OBJSCH:! BLOCK	1			;SCHEDULER STATE INFORMATION
	OBSSTA==1B0			;OBJECT IS STARTED
	OBSSUP==1B1			;OBJECT IS SETUP
	OBSBUS==1B2			;OBJECT IS BUSY
	OBSSIP==1B3			;SETUP IN PROGRESS
	OBSIGN==1B4			;IGNORE THIS FOR A WHILE
	OBSDAA==1B5			;DEVICE (DEC) ATTRIBUTES AVAILABLE
	OBSSEJ==1B6			;SHUTDOWN AT END-OF-JOB
	OBSINV==1B7			;OBJECT IS INVISIBLE
	OBSINT==1B8			;DO AN INTERNAL SHTDWN WHEN QUEUE EMPTYS
	OBSHUT==1B9			;OBJECT IS INTERNALLY SHUTDOWN
	OBSFRR==1B10			;A FREE RUNNING DEVICE.
	OBSSTP==1B11			;STOPPED BY THE OPERATOR
	OBSSER==1B12			;STOP AFTER EVERY REQUEST
	OBSSPL==1B13			;OBJECT IS SPOOLING TO TAPE
	OBSATR==1B14			;DEVICE ATTRIBUTES SET BY PROCESSOR
	OBSFRM==1B15			;FORMS CHANGE SCHEDULED
	OBSSNA==1B16			;OBJECT BELONGS TO SNA WORKSTATION
	OBSIBM==1B17			;Object belongs to an IBM node
	OBSQUH==0,,-1			;ADDRESS OF QUEUE HEADER FOR OBJECT
OBJSC2:! BLOCK	1			;[1302]SCHEDULDER STATE INFORMATION
	OB2LOG==1B0			;[1302]LOG/SPOOL FILES SCHEDULED
OBJRID:! BLOCK	1			;[NXT] REQUEST-ID TO SCHEDULE NEXT
OBJDAT:! BLOCK	1			;DEC-DEFINED ATTRIBUTES
;	RO.ATR==-1,,0			;   OBJECT ATTRIBUTES
OBJCAT:! BLOCK	1			;CUSTOMER-DEFINED ATTRIBUTES
OBJPRM:! BLOCK	OBPRSZ			;DEPENDENT PARAMETERS
OBJSTS:! BLOCK  1			;CURRENT DEVICE STATUS CODE
					;FILLED IN BY QUASAR, UPDTED BY SPOOLER
OBJST1:! BLOCK	STSSIZ			;CURRENT JOB STATUS IN ASCIZ
					;UPDATED BY THE SPOOLER

OBJSIZ:!				;SIZE OF AN OBJ QUEUE ENTRY


;DEFINITIONS OF WORDS WITHIN THE OBJPRM BLOCK

;COMMON MASKS
	OBPMIN==-1,,0			;MINIMUM VALUE
	OBPMAX==0,,-1			;MAXIMUM VALUE

;OUTPUT PARAMETERS (PRINTERS, PAPERTAPE, CARDPUNCH, PLOTTER)

	.OOPRI==0			;MIN AND MAX EXTERNAL PRIORITY
	.OOLIM==1			;MIN AND MAX OUTPUT LIMITS
	.OOFRM==2			;FORMS TYPE
	.OOFLG==3			;OUTPUT FLAGS
	   .OFLEA==-1,,0		;FORMS LIMIT EXCEEDED ACTION
	.OOTAP==4			;SIXBIT DEVICE NAME FOR SPOOLING TO TAPE
	;CONTINUED FROM THE PREVIOUS PAGE

;BATCH-STREAM PARAMETERS

	.OBPRI==0			;MIN AND MAX EXTERNAL PRIORITY
	.OBTIM==1			;MIN AND MAX RUNTIME LIMITS
	.OBFLG==3			;BATCH STREAM FLAGS
	   .OPRIN==-1,,0		;OPERATOR INTERVENTION FLAG
	       .OPINY==1		;ALLOW OPERATOR INTERVENTION JOBS
	       .OPINN==2		;NO OPERATOR INTERVENTION JOBS
	.OBCOR==4			;MIN AND MAX CORE LIMITS

;Retrieve-stream parameters

	.OBSTM==0			;Time stamp and flag
	.OBTAP==1			;Tape ID
	.OBSSN==2			;Saveset,,tape file #
	  OB.SSN==-1,,0			;Saveset
	  OB.TFN==0,,-1			;Tape file number
;OBJECT ATTRIBUTES (DEC)
	;THESE ATTRIBUTES ARE DEFINED IN SHORT CREATE MESSAGE


;OBSOLETE OBJECT ATTRIBUTES

	RO.PHY==1B0			;PHYSICAL UNIT SPECIFIED
	OBDLLC==1B1			;LOWERCASE PRINTER
	OBDLUC==1B2			;UPPERCASE PRINTER


	DEFINE	STATUS,<
	LSTOF.
		X	<Invalid>,%INVLD,100
		X	<Idle>,%IDLE,0
		X	<Active>,%ACTIV,0
		X	<Stopped>,%STOPD,0
		X	<Not Started>,%NSTRT,0
		X	<Not Available>,%NAVAL,0
		X	<No Ptys>,%NPTYS,.OTBAT
		X	<Offline>,%OFLNE,<.OTLPT,.OTPTP,.OTCDP,.OTPLT,.OTRDR>
		X	<System Full>,%SFULL,.OTBAT
		X	<Shutting Down>,%SHTDN,0
		X	<Aborting>,%CNCLG,0
		X	<Opr Resp Wait>,%OREWT,0
		X	<Aligning Forms>,%ALIGN,.OTLPT
		X	<>,%RESET,0
		X	<Reading>,%READN,.OTRDR
		X	<Requeing>,%REQUE,0
		X	<Shutting Down>,%SHUTD,0
		X	<Opr Output Wait>,%OPRWT,.OTLPT
		X	<Stop is Pending>,%STPPN,0
		X	<No processor>,%NOPRC,0
	LSTON.>  ;END STATUS MACRO


	ZZ==0			;START WITH VALUE OF 0
	DEFINE X(A,SYM,VAL),<
	  SYM==ZZ
	  %STMAX==ZZ		;;DECLARE MAXIMUM VALUE
	  ZZ==ZZ+1>

	STATUS			;DECLARE THE SYMBOL VALUES
SUBTTL	PSB - Processor Status Block

;	!=======================================================!
;	\                                                       \
;	\                The Queue Entry Header                 \
;	\                                                       \
;	!=======================================================!
;	!                   Process ID  (PID)                   !
;	!-------------------------------------------------------!
;	!                     Program Name                      !
;	!-------------------------------------------------------!
;	!  Current number of jobs   !  Maximum number of jobs   !
;	!-------------------------------------------------------!
;	!           Flags           !  Number of OBJect types   !
;	!-------------------------------------------------------!
;	!                                                       !
;	\                 List of object types                  \
;	\                                                       \
;	\                  Maximum of 5 types                   \
;	!                                                       !
;	!=======================================================!


	PHASE	QEHSIZ			;APPEND TO THE QUEUE ENTRY HEADER
PSBPID:! BLOCK	1			;PROGRAM'S PID
PSBNAM:! BLOCK	1			;PROGRAM NAME
PSBLIM:! BLOCK	1			;CURRENT AND MAX NUMBER OF JOBS
	PSLCUR==-1,,0			;CURRENT NUMBER OF JOBS
	PSLMAX==0,,-1			;MAXIMUM NUMBER OF JOBS
PSBFLG:! BLOCK	1			;FLAGS AND NUMBER OF OBJ TYPES
	PSFNOT==0,,-1			;NUMBER OF OBJECT TYPES
PSBOBJ:! BLOCK	OBPRSZ			;LIST OF OBJECTS (UP TO OBPRSZ)

PSBSIZ:!				;SIZE OF A PSB

	DEPHASE
SUBTTL	SPL - Spool Queue Definition

;	!=======================================================!
;	/                                                       /
;	/                THE QUEUE ENTRY HEADER                 /
;	/                                                       /
;	!=======================================================!
;	\                                                       \
;	\                REQUESTED OBJECT BLOCK                 \
;	\                                                       \
;	!-------------------------------------------------------!
;	!        JOB NUMBER         !     RETRIEVAL POINTER     !
;	!-------------------------------------------------------!
;	!                      FORMS TYPE                       !
;	!-------------------------------------------------------!
;	!                    AFTER PARAMETER                    !
;	!-------------------------------------------------------!
;	!                      NOTE FIELD                       !
;	!                       (2 WORDS)                       !
;	!-------------------------------------------------------!
;	!                           !      REQUEST LENGTH       !
;	!=======================================================!

	PHASE	QEHSIZ		;APPEND TO THE QUEUE ENTRY HEADER

SPLOID:! BLOCK	1		;OWNER'S ID
SPLROB:! BLOCK	ROBSIZ		;REQUESTED OBJECT BLOCK
SPLJOB:! BLOCK	1		;JOB INFORMATION
	SPYJOB==-1,,0		;THE JOB NUMBER
	SPYDPA==0,,-1		;THE RETRIEVAL POINTER

SPLFRM:! BLOCK	1		;FORMS TYPE
SPLAFT:! BLOCK	1		;AFTER PARAMETER
SPLNOT:! BLOCK	2		;NOTE FIELD
SPLRQZ:! BLOCK	1		;SIZE OF CURRENT REQUEST
	SPYLEN==0,,-1		;THE LENGTH (FROM .MSTYP)

SPLSIZ:!			;SIZE OF THE SPOOL QUEUE ENTRIES

	DEPHASE

;DURING Q$FSPL, THE SPL QUEUE IS SCANNED TO COMPRESS MULTIPLE SPOOL REQUESTS INTO A
;	SINGLE REQUEST.  THE FOLLOWING DECISIONS ARE MADE WITH THE INPUT BEING
;	THE CURRENT SPOOL MESSAGE FROM THE MONITOR AND THAT QUEUE AND STATION TESTS
;	HAVE SUCCEEDED.

;	  INPUT		CURRENT QUEUE	ACTION

;	STN. GENERIC	STN. GENERIC	APPEND
;	REAL DEVICE	STN. GENERIC	APPEND AND CHANGE TO REAL DEVICE
;	LL:/LU:		STN. GENERIC	APPEND AND CHANGE TO LL: OR LU:

;	STN. GENERIC	REAL DEVICE	APPEND
;	REAL DEVICE	REAL DEVICE	APPEND IF DEVICES MATCH
;	LL:/LU:		REAL DEVICE	NEVER APPEND

;	STN. GENERIC	LL:/LU:		APPEND
;	REAL DEVICE	LL:/LU:		NEVER APPEND
;	LL:/LU:		LL:/LU:		APPEND IF BOTH FOR LL: OR FOR LU:
SUBTTL	STR - Structure Queue Definition

	PHASE	QEHSIZ			;APPEND TO QUEUE ENTRY HEADER

IFN FTUUOS,<
STRNAM:! BLOCK	2			;STRUCTURE NAME
>  ;END IFN FTUUOS

IFN FTJSYS,<
STRNAM:! BLOCK	^D16			;STRUCTURE NAME (TOPS-20) MAX 79 CHARS
>  ;END IFN FTJSYS

STRSTS:! BLOCK	1			;STRUCTURE STATUS
	STSSSV==1B0			;STRUCTURE STATUS VALID
	STSONL==1B1			;STRUCTURE IS ONLINE

STRSIZ:!				;SIZE OF THE STR QUEUE ENTRY

	DEPHASE
	SUBTTL	NETWORK DATA BASE STRUCTURE


;	!=======================================================!
;	/							/
;	/		THE QUEUE ENTRY HEADER			/
;	/							/
;	!-------------------------------------------------------!
;	!		SIXBIT NODE (NETWORK) NAME		!
;	!-------------------------------------------------------!
;	!		   NODE (NETWORK) NUMBER		!
;	!-------------------------------------------------------!
;	!		ONLINE/OFFLINE STATUS			!
;	!-------------------------------------------------------!
;	\                                                       \
;	\                ASCIZ NETWORK NODE NAME                \
;	\                                                       \
;	!-------------------------------------------------------!
;	!                  CLEAR TO SEND DELAY                  !
;	!-------------------------------------------------------!
;	!                  RECORDS PER MESSAGE                  !
;	!-------------------------------------------------------!
;	!                   BYTES PER MESSAGE                   !
;	!-------------------------------------------------------!
;	!                  SILO WARNING LEVEL                   !
;	!-------------------------------------------------------!
;	!     NODE PORT NUMBER      !     NODE LINE NUMBER      !
;	!-------------------------------------------------------!
;	!         PORT/LINE HANDLE (FOR DN60 FRONT END)         !
;	!=======================================================!

		PHASE	QEHSIZ

TOPS20<	NETCOL:!	>	;-20 COLLATING SEQ BY NAME
TOPS10<	NETLOC:!	>	;-10 NOT COLLATING SEQ
NETNAM:! BLOCK	1		;SIXBIT NODE NAME

TOPS10<	NETCOL:!	>	;-10 COLLATING SEQ BY NUMBER
TOPS20<	NETLOC:!	>	;-20 NOT COLLATING SEQ
NETNBR:! BLOCK	1		;NODE NUMBER

NETSTS:! BLOCK	1		;FLAG WORD
   NT.FLG==777000,,0		;NETWORK FLAG BITS
	NETNSV==1B0		;  ONLINE/OFFLINE STATUS BIT IS VALID
	NETONL==1B1		;  ONLINE
	NETADD==1B2		;  THIS NODE ADDED LAST PASS
	NETIBM==1B3		;  NODE IS DN60 DRIVEN
	NETSHT==1B4		;  NETWORK SHUTDOWN IS IN PROGRESS
	NETSGN==1B5		;  NODE REQUIRES SIGNON PROCESSING
	NETNUP==1B6		;  NODE WAS ONLINE SOMETIME
	NETPRO==1B7		;  Proto-actual is online
	NETSNA==1B8		;  Node is SNA Workstation

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE

   NT.TYP==700,,0		;NETWORK TYPE
	DF.DEC==0		;  'DEC' NODE
	DF.378==1		;  3780 NODE
	DF.278==2		;  2780 NODE
	DF.HSP==3		;  HASP NODE
	DF.SNA==4		;  SNA NODE
   NT.MOD==70,,0		;NETWORK MODE
	DF.TRM==1		;  TERMINATION MODE
	DF.EMU==2		;  EMULATION MODE
	DF.PRO==3		;  Proto mode
   NT.TOU==7,,0			;PROTOCOL TIMEOUT CATAGORY
	ST.PRI==1		;  PRIMARY
	ST.SEC==2		;  SECONDARY
   NT.DTR==700000		;DATA TERMINAL READY
	ST.ON==1		;  ON
	ST.OFF==2		;  OFF
   NT.TRA==70000		;TRANSPARENCY
;	ST.ON==1		;  ON
;	ST.OFF==2		;  OFF
   NT.XTA==7777			;EXTRA BITS

NETASC:! BLOCK	3		;ASCIZ NETWORK NODE NAME FOR RAMDOM OUTPUT
NETCLM:! BLOCK	3		;ASCIZ NETWORK NODE NAME FOR COLUMNIZED OUTPUT
NETDAT:! BLOCK	6		;NODE DATA
NETSIZ:!
		DEPHASE

;
; FOR IBM EMULATION/TERMINATION (DN60) TYPE NODES
;
		PHASE	NETDAT

NETCSD:! BLOCK	1		;CLEAR TO SEND DELAY
NETRPM:! BLOCK	1		;RECORDS PER MESSAGE
NETBPM:! BLOCK	1		;BYTES PER MESSAGE
NETSWL:! BLOCK	1		;SILO WARNING LEVEL
NETPTL:! BLOCK	1		;PORT,,LINE NUMBER
   NT.PRT==-1,,0		;NODE PORT NUMBER
   NT.LIN==0,,-1		;NODE LINE NUMBER
NETIDN:! BLOCK	1		;PORT/LINE HANDLE (FOR DN60 FRONT END)
		DEPHASE

;
; FOR SNA WORKSTATION TYPE NODES
;

		PHASE	NETDAT

NETGWY:! BLOCK	1		;SNA GATEWAY NAME (SIXBIT)
NETACC:! BLOCK	3		;ACCESS NAME
NETNAB:! BLOCK	1		;SNA NODE ATTRIBUTE BLOCK
   NA.LEN==-1,,0		;NODE ATTRIBUTE BLOCK SIZE
   NA.ADR==0,,-1		;NODE ATTRIBUTE BLOCK ADDRESS
NETNOB:! BLOCK	1		;SNA NODE OBJECT LIST

		DEPHASE
	SUBTTL	NODE ATTRIBUTE BLOCK (for SNA Workstations)

;	!=======================================================!
;	/							/
;	/		    LOGON DATA				/
;	/							/
;	!-------------------------------------------------------!
;	/							/
;	/		    LOGON MODE				/
;	/							/
;	!-------------------------------------------------------!
;	/							/
;	/		    APPLICATION				/
;	/							/
;	!-------------------------------------------------------!
;	/							/
;	/		     CIRCUIT				/
;	/							/
;	!-------------------------------------------------------!
;	/							/
;	/		 TRANSLATION FILE			/
;	/							/
;	!=======================================================!

		PHASE	0

NABDAT:! BLOCK	7		; LOGON Data (ASCIZ)
NABLOM:! BLOCK	2		; LOGON Mode (ASCIZ)
NABPLU:! BLOCK	2		; Application (ASCIZ)
NABCIR:! BLOCK	2		; Circuit (ASCIZ)
NABCHS:! BLOCK	FDXSIZ		; Character Translation File

NABSIZ:!

		DEPHASE
	SUBTTL	NODE OBJECT BLOCK (for SNA Workstations)

;	!=======================================================!
;	!                    OBJECT TYPE                        !
;	!-------------------------------------------------------!
;	!                    OBJECT UNIT                        !
;	!-------------------------------------------------------!
;	!                    OBJECT NODE                        !
;	!-------------------------------------------------------!
;	!                     SNA FLAGS                         !
;	!-------------------------------------------------------!
;	/							/
;	!              DESTINATION SPECIFICATION                !
;	/							/
;	!=======================================================!

		PHASE	0

NOBOBJ:! BLOCK	OBJ.SZ		; Object Block
   NOBTYP==NOBOBJ		;   Type
   NOBUNI==NOBOBJ+1		;   Unit
   NOBNOD==NOBOBJ+2		;   Node
NOBFLG:! BLOCK	1		; Flags
   NOBSPL==1B0			;  /SPOOL
   NOBNTL==1B1			;  /NOTRANSLATE
 DSTSIZ==^D100/^D5		; Reserve room for 100 characters
NOBDST:! BLOCK	DSTSIZ		; Destination specification

NOBSIZ:!

		DEPHASE
	SUBTTL	ROUTE TABLE ENTRY DESCRIPTION

;	!=======================================================!
;	!		SOURCE OBJECT TYPE			!
;	!-------------------------------------------------------!
;	!		SOURCE UNIT NUMBER			!
;	!-------------------------------------------------------!
;	!		SOURCE NODE NAME			!
;	!-------------------------------------------------------!
;	!                                                       ! ;[1263]
;	/                                                       / ;[1263]
;	/              SOURCE REMOTE LPT NAME                   / ;[1263]
;	/                                                       / ;[1263]
;	!                                                       !
;	!-------------------------------------------------------!
;	!      SOURCE ENABLED FOR LOG/SPOOL REQUESTS            ! ;[1302]
;	!-------------------------------------------------------!
;	!	      DESTINATION OBJECT TYPE			!
;	!-------------------------------------------------------!
;	!	      DESTINATION UNIT NUMBER			!
;	!-------------------------------------------------------!
;	!	      DESTINATION NODE NAME			!
;	!-------------------------------------------------------!
;	!                                                       !
;	/                                                       /
;	/          DESTINATION REMOTE LPT NAME                  /
;	/                                                       /
;	!                                                       !
;	!-------------------------------------------------------! 
;	!      SOURCE ENABLED FOR LOG/SPOOL REQUESTS            ! ;[1302]
;	!=======================================================!

			PHASE	0

	RTEOB1:! BLOCK	OBJ.SQ		;[1271] Source object block
	RLSFG1:! BLOCK	1		;[1302]LOG/SPOOL FILES FLAG	
	RFDLEN:! 			;[1263]LENGTH OF A REMOTE FIELD
	RTEOB2:! BLOCK	OBJ.SQ		;[1271] Destination object block
	RLSFG2:! BLOCK	1		;[1302]LOG/SPOOL FILES FLAG	
	RTELEN:!			;TABLE ENTRY LENGTH
			DEPHASE
SUBTTL	CSM - Canonical SPOOL Message

;	!=======================================================!
;	!        JOB NUMBER         !  STATION #  !    FLAGS    !
;	!-------------------------------------------------------!
;	!                      OWNER'S ID                       !
;	!-------------------------------------------------------!
;	\                                                       \
;	\                REQUESTED OBJECT BLOCK                 \
;	\                                                       \
;	!-------------------------------------------------------!
;	!              ENTERED (GTJFN'ED) FILENAME              !
;	!-------------------------------------------------------!
;	!                   SIZE OF THE FILE                    !
;	!-------------------------------------------------------!
;	!           FLAGS FOR .FPINF OF INCLUDED FILE           !
;	!-------------------------------------------------------!
;	!                      FORMS TYPE                       !
;	!-------------------------------------------------------!
;	!                     OUTPUT LIMIT                      !
;	!-------------------------------------------------------!
;	!                AFTER PARAMETER FOR JOB                !
;	!-------------------------------------------------------!
;	!                      NOTE FIELD                       !
;	!                       (2 WORDS)                       !
;	!-------------------------------------------------------!
;	!                           !     ADDRESS OF THE FD     !
;	!=======================================================!
;
;	!                 -----  TOPS 10  -----                 !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                 USER'S NAME IN SIXBIT                 !
;	!                       (2 WORDS)                       !
;	!-------------------------------------------------------!
;	\							\
;	\		ASCIZ ACCOUNT STRING			\
;	\							\
;	!=======================================================!


	PHASE	0

CSM.JB:! BLOCK	1		;JOB INFORMATION
	CS.JOB==-1,,0		;JOB NUMBER
	CS.LOC==777000		;NODE NUMBER (20-ONLY)
	CS.LOC==777000		;STATION NUMBER.
	CS.FLG==000777		;FLAGS
		CS.DFR==1B27	;DEFERRED MODE SPOOLING

CSM.OI:! BLOCK	1		;OWNER'S ID
CSM.RO:! BLOCK	ROBSIZ		;REQUESTED OBJECT
CSM.EN:! BLOCK	1		;ENTER'ED (GTJFN'ED) FILENAME
CSM.FS:! BLOCK	1		;SIZE OF THE FILE
CSM.FP:! BLOCK	1		;FLAGS FOR .FPINF OF INCLUDED FILE
CSM.FM:! BLOCK	1		;FORMS TYPE
CSM.LM:! BLOCK	1		;OUTPUT LIMIT
CSM.AF:! BLOCK	1		;AFTER PARAMETER FOR JOB
CSM.NT:! BLOCK	2		;NOTE FIELD
CSM.FD:! BLOCK	1		;FILE DESCRIPTOR INFORMATION
	CS.FDA==0,,-1		;ADDRESS OF THE FD TO INCLUDE

TOPS10 <
CSM.US:! BLOCK	2		;USER NAME (2 WORDS)
CSM.AC:! BLOCK	10		;ASCIZ ACCOUNT STRING
>  ;END TOPS10

CSMSIZ:!			;LENGTH OF THE CANONICAL SPOOL MESSAGE

	DEPHASE
SUBTTL	CLM - Canonical LOGOUT Message

;	!=======================================================!
;	!                     FUNCTION CODE                     !
;	!-------------------------------------------------------!
;	!         JOB NUMBER        !       FLAG SETTINGS       !
;	!=======================================================!


	PHASE	0

CLM.FC:! BLOCK	1			;FUNCTION CODE - CONTAINS:
					;	 .IPCSL IF FROM MONITOR
					;        .QIFNC IF INTERNAL
CLM.JB:! BLOCK	1			;JOB INFORMATION
	CL.JOB==-1,,0			;JOB NUMBER
	CL.BAT==1B18			;JOB IS A BATCH JOB
	CL.BQE==0,,-1			;THIS FIELD CONTAINS THE ADDRESS
					; OF THE BATCH JOB REQUEST (.QExxx)
					; IF IT IS AN INTERNAL CALL


CLMSIZ:!				;LENGTH OF THE CANONICAL LOGOUT MESSAGE

	DEPHASE
SUBTTL	The Messages and their respective codes

;THE FOLLOWING PAGES CONTAIN THE FORMAT OF THE VARIOUS MESSAGES WHICH
;	ARE SENT TO OR BY QUASAR TO VARIOUS SYSTEM COMPONENTS.

	   ;EXTERNAL OPERATIONS

		.QOHEL==1	;HELLO - ESTABLISH CONTACT
		.QOREL==2	;RELEASE - FINISHED A REQUEST
		.QOCHE==3	;CHECKPOINT - FAILSOFT A REQUEST
		.QOREQ==4	;REQUEUE - RETURN A REQUEST
		.QONEX==5	;NEXTJOB - REQUEST GIVEN TO A COMPONENT
		.QOABO==6	;ABORT - STOP PROCESSING THAT REQUEST
		.QOCRE==7	;CREATE - MAKE A REQUEST
		.QOLIS==10	;LIST - GET A CROSS SECTION OF THE QUEUES
		.QOMOD==11	;MODIFY - CHANGE THE PARAMETERS OF A REQUEST
		.QOKIL==12	;KILL - REMOVE A REQUEST
		.QOLAN==13	;ANSWER MESSAGE TO LIST REQUEST
		;       14	;FUNCTION 14 OBSOLETE TEXT MSG (.QOOBS)
		.QORCK==15	;CHECKPOINT-REQUEST MESSAGE
		.QODFR==16	;DEFER MESSAGE
		.QOROU==17	;ROUTING CHANGE
		.QOCOU==20	;COUNT MESSAGE
		.QOCAN==21	;COUNT ANSWER MESSAGE
		.QOSUP==22	;SETUP MESSAGE
		.QORSU==23	;RESPONSE-TO-SETUP MESSAGE
		;       24	;FUNCTION 24 OBSOLETE OPR ACTION MSG (.QOOAC)
		.QOHBO==25	;HOLD/RELEASE MESSAGE
		;	26	;MONITOR SPOOL MESSAGE
		;	27	;MONITOR LOGOUT MESSAGE

		.QOMNT==30	;TAPE MOUNT REQUEST (USER TO QUASAR)
		.QOSTU==31	;DEVICE STATUS UPDATE MESSAGE
		.QOMTR==32	;TAPE MOUNT RELEASE MSG (SAME AS .QOREL)
		.QOMTC==33	;TAPE MOUNT CHKPNT MSG (SAME AS .QOCHE)
		.QOMTA==34	;TAPE MOUNT ABORT MSG (QUASAR TO MTCON)
		.QOMAT==35	;TAPE MOUNT ATTRIBUTES REQUEST
		.QONWA==36	;NODE-WENT-AWAY NOTIFICATION MESSAGE
		.QOCQE==37	;CREATE QUEUE ENTRY (SHORT CREATE MSG)
		.QOREC==40	;TAPE RECOGNIZE MESSAGE (QUASAR TO TAPE LABELER)
		.QOTST==41	;TAPE STATUS MESSAGE (TAPE LABELLER TO QUASAR)
		.QOUNL==42	;TAPE UNLOAD MESSAGE (QUASAR TO TAPE LABELLER)
		.QOVMN==43	;TAPE VOLUME IN USE (REASSIGNED)
				;	(QUASAR TO TAPE LABELLER)
		.QOVDM==44	;TAPE VOLUME DEASSIGNED (QUASAR TO TAPE LAB)
		.QOVSR==45	;VOLUME SWITCH REQUEST (TAPE LAB TO QUASAR)
		.QOVSD==46	;VOLUME SWITCH DIRECTIVE (QUASAR TO TAPE LAB)
		.QOREW==47	;TAPE REWIND MESSAGE (QUASAR 2 TAPE LABELER)
		.QORCT==50	;REQUEST FOR SYSTEM CATALOG INFO
		.QOCAT==51	;ANSWER TO SYSTEM CATALOG INFO REQUEST
		.QOBLD==52	;BUILD A STRUCTURE (QUASAR 2 TAPE LABELER)
		.QODSM==53	;DISMOUNT A STRUCTURE (QUASAR 2 TAPE LABELER)
		.QOACK==54	;MDA ACK MESSAGE (TAPE LABELER TO QUASAR)
		.QOASL==55	;ADD A STR TO A USERS SEARCH LIST (QUA 2 LBLR)
		.QODVS==56	;DISMOUNT/DEALLOCATE A VOL SET (USER 2 QUASAR)
		.QOLAC==57	;LIST SOME ALLOCATIONS
		.QOALC==60	;BATCH ALLOCATION PROCESSOR MESSAGE
		.QOPRM==61	;ANSWER TO ABOVE (A MOUNT MESSAGE)
		.QOIDN==62	;TAPE INITIALIZATION DONE
		.QOFCH==63	;LPTSPL FORMS CHANGE MESSAGE
		.QOIBM==64	;IBMCOM STATISTICS MESSAGE
		.QOGFR==65	;TOPS20 [SYSTEM]GOPHER


	   ;INTERNAL OPERATIONS

		.QIFNC==1B18	;IF BIT 18 IS SET, THE CALL IS INTERNAL
				; AND THE REQUEST MAY BE INTERPRETED
				; DIFFERENTLY THAN EXTERNAL CALLS
		.QIRET==1B19	;If bit 18 is set, this is a
				;monitor archive request, so
				;dont bomb it if queue entry
				;is disabled.
		.QIMOD==1B20	;If bit 20 is set, this is a
				;modify request, so don't increment
				;the external request id number
SUBTTL	The HELLO Message - Function 1

;	!=======================================================!
;	\                                                       \
;	\                  The Message Header                   \
;	\                                                       \
;	!=======================================================!
;	!                     Program Name                      !
;	!-------------------------------------------------------!
;	!  QUASAR Internal Version  !           Flags           !
;	!-------------------------------------------------------!
;	!  Number of OBJect Types   !  Max no. concurrent jobs  !
;	!-------------------------------------------------------!
;	!                                                       !
;	\                 List of object types                  \
;	\                                                       \
;	\           From 1 to 5 object types allowed            \
;	!                                                       !
;	!=======================================================!

	PHASE	MSHSIZ			;APPEND TO THE MESSAGE HEADER

HEL.NM:! BLOCK	1			;PROGRAM NAME
HEL.FL:! BLOCK	1			;INTERNAL VERSION AND FLAGS
	HEFVER==-1,,0			;INTERNAL VERSION NUMBER (%%.QSR)
	HEFFLG==0,,-1			;MASK FOR FLAGS
	HEFBYE==1B18			;PROCESSOR SAYING "GOOD BYE"
HEL.NO:! BLOCK	1			;NUMBER OF OBJ TYPES AND MAX NO JOBS
	HENNOT==-1,,0			;NUMBER OF OBJECT TYPES
	HENMAX==0,,-1			;MAXIMUM NUMBER OF JOBS
HEL.OB:! BLOCK	OBPRSZ			;LIST OF OBJECTS (UP TO OBPRSZ)
	HELOBJ==0,,-1			;OBJECT TYPE
	HELATR==-1,,0			;DEVICE ATTRIBUTES

HEL.SZ:!				;SIZE OF THE HELLO MESSAGE

	DEPHASE
SUBTTL The RELEASE Message - Function 2

;	!=======================================================!
;	/                                                       /
;	/                THE MESSAGE HEADER                     /
;	/                                                       /
;	!=======================================================!
;	!                  INTERNAL TASK NAME                   !
;       !-------------------------------------------------------!
;       !                      FLAG WORD                        !
;       !-------------------------------------------------------!
;       !                                                       !
;       /                                                       /
;       /                 RELEASE MESSAGE TEXT                  /
;       /                                                       /
;       !                                                       !
;       !=======================================================!

; BATCON, IN ADDITION, RETURNS THE FOLLOWING IN ITS RELEASE MESSAGE

;	!=======================================================!
;	!       FLAG SETTINGS       !      THE JOB NUMBER       !
;	!-------------------------------------------------------!
;	!                                                       !
;	/                                                       /
;	/       STANDARD FD AREA DESCRIBING THE LOG FILE        /
;	/                                                       /
;	!                                                       !
;	!=======================================================!

;THE FOLLOWING INFORMATION IS RETURNED BY LPTSPL FOR PRINT REQUESTS 
;THAT ORIGINATED ON A REMOTE NODE IN THE CLUSTER

;       !=======================================================!
;       !     NODE NAME WHERE PRINT REQUEST ORGINATED FROM      ! REL.NN
;       !-------------------------------------------------------!
;       !                        RUN TIME                       ! REL.RT
;       !-------------------------------------------------------! 
;       !                      DISK READS                       ! REL.DR
;       !-------------------------------------------------------!
;       !                       JOB NAME                        ! REL.JN
;       !-------------------------------------------------------!
;       !                      DEVICE NAME                      ! REL.DN
;       !-------------------------------------------------------!
;       !                  JOB SEQUENCE NUMBER                  ! REL.SN
;       !-------------------------------------------------------!
;       !                  TOTAL PAGES PRINTED                  ! REL.PP
;       !-------------------------------------------------------!
;       !                 TOTAL FILES PROCESSED                 ! REL.FP
;       !-------------------------------------------------------!
;       !             CREATION DATE/TIME OF REQUEST             ! REL.CD
;       !-------------------------------------------------------!
;       !                  SCHEDULED DATE/TIME                  ! REL.SD
;       !-------------------------------------------------------!
;       !                      FORMS TYPE                       ! REL.FT
;       !-------------------------------------------------------!
;       !                     JOB PRIORITY                      ! REL.JP
;       !-------------------------------------------------------!
;       !                                                       !
;       /                                                       /
;       /                       USER NAME                       / REL.UN
;       /                                                       /
;       !                                                       !
;       !-------------------------------------------------------!
;       !                                                       !
;       /                                                       /
;       /                ACCOUNT STRING POINTER                 / REL.AS
;       /                                                       /
;       !                                                       !
;       !=======================================================!
;       !             NUMBER OF FILES TO BE DELETED             ! REL.ND
;       !=======================================================!
;       !             LENGTH OF THE DELETE FILE BLOCK           ! REL.FB
;       !-------------------------------------------------------!
;       !                                                       !
;       /      THE ASCIZ STRING NAME OF THE FILE AS             /
;       /           DEV:[DIRECTORY]FILE.EXT.GEN                 /
;       !                                                       !
;       !=======================================================!
;	/                                                       /
;	/                                                       /
;	/                                                       /
;	/                                                       /
;       !=======================================================!
;       !             LENGTH OF THE DELETE FILE BLOCK           ! REL.FB
;       !-------------------------------------------------------!
;       !                                                       !
;       /      THE ASCIZ STRING NAME OF THE FILE AS             /
;       /           DEV:[DIRECTORY]FILE.EXT.GEN                 /
;       !                                                       !
;       !=======================================================!

	PHASE	MSHSIZ

REL.IT:! BLOCK  1               ;INTERNAL TASK NAME
REL.FL:! BLOCK  1               ;FLAG WORD
   RF.DEC==777777B17               ;LF FOR DEC
   RF.ABO==1B0                     ;JOB ABORTED (OUTPUT) OR FATAL ERROR (INPUT)
   RF.REM==1B1                     ;[1260]CORRESPONDS TO A REMOTE PRINT REQUEST
   RF.ACT==1B2                     ;[1260]ACCOUNTING INFORMATION IS INCLUDED
   RF.DEL==1B3                     ;[1260]NAMES OF FILES TO BE DELETED ARE INCLUDED
   RF.CST==777777B35               ;RH FOR WSM
REL.TX:! BLOCK  STSSIZ		;RELEASE MESSAGE TEXT
REL.SZ:!			;SIZE OF THE RELEASE MESSAGE
        DEPHASE

;BATCON INCLUDES THE FOLLOWING:

        PHASE   REL.SZ

REL.BJ:! BLOCK	1		;BATCH JOB INFORMATION
	RL.DLG==1B0		;DELETE THE LOG FILE AFTER PRINTING
	RL.SPL==1B1		;LOG FILE IS SPOOLED
	RL.JOB==0,,-1		;THE JOB NUMBER

REL.FD:! BLOCK	FDXSIZ		;RESERVE SPACE FOR THE MAXIMUM FD RETURNED

REL.BL:!			;MAXIMUM LENGTH OF A BATCON RELEASE

	DEPHASE

;[1260]LPTSPL, WHEN PROCESSING PRINT REQUESTS THAT ORIGINATED ON A REMOTE NODE
;[1260]IN THE CLUSTER, INCLUDES THE FOLLOWING:

	PHASE	REL.SZ

REL.NN:! BLOCK 1                ;[1260]NODE NAME
REL.RT:! BLOCK 1                ;[1260]RUN TIME
REL.DR:! BLOCK 1                ;[1260]DISK READS
REL.JN:! BLOCK 1                ;[1260]JOB NAME
REL.DN:! BLOCK 1                ;[1260]DEVICE NAME
REL.SN:! BLOCK 1                ;[1260]JOB SEQUENCE NUMBER
REL.PP:! BLOCK 1                ;[1260]PAGES PRINTED
REL.FP:! BLOCK 1                ;[1260]TOTAL FILES PROCESSED
REL.CD:! BLOCK 1                ;[1260]CREATION DATE/TIME OF REQUEST
REL.SD:! BLOCK 1                ;[1260]SCHEDULED DATE/TIME
REL.FT:! BLOCK 1                ;[1260]FORMS TYPE
REL.JP:! BLOCK 1                ;[1260]JOB PRIORITY
REL.UN:! BLOCK EQNMSZ           ;[1260]USER NAME
REL.AS:! BLOCK EQASSZ           ;[1260]ACCOUNT STRING POINTER
REL.ND:! BLOCK 1                ;[1260]NUMBER OF FILES TO BE DELETED
REL.RS:!                        ;[1260]MINIMUM SIZE OF THE RELEASE MESSAGE

        DEPHASE

;[1260]For each file to be deleted, there is a corresponding DELETE FILE block
;[1260]that contains the name of the file.  The format of a DELETE FILE block
;[1260]is:

        PHASE 0

REL.FB:! BLOCK 1                ;[1260]LENGTH WORD
REL.FS:!                        ;[1260]FIRST WORD OF THE FILE SPECIFICATION

        DEPHASE
SUBTTL	The CHECKPOINT and REQUEUE messages - Functions 3 and 4

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                  INTERNAL TASK NAME                   !
;	!-------------------------------------------------------!
;	!                                                       !
;	/            CHECKPOINT/REQUEUE INFORMATION             /
;	/                                                       /
;	/                       (5 WORDS)                       /
;	!                                                       !
;	!-------------------------------------------------------!
;	!                  AFTER TIMER (REQ)                    !
;	!=======================================================!

	PHASE	MSHSIZ

REQ.IT:! BLOCK	1		;INTERNAL TASK NAME
REQ.FL:! BLOCK	1		;REQUEUE FLAGS
	RQ.HBO==1B0		;HOLD BY OPR
	RQ.RLC==1B1		;RESTART AT LAST CHECKPOINT
				;I.E. DONT UPDATE CHECKPOINT INFO
	RQ.TIM==777		;TIME IN MINUTES TO WAIT BEFORE RESCHEDULING
REQ.IN:! BLOCK	EQCKSZ		;CHECKPOINTING INFORMATION

REQ.SZ:!

	DEPHASE

	PHASE	MSHSIZ

CHE.IT:! BLOCK	1		;INTERNAL TASK NAME
CHE.FL:! BLOCK	1		;FLAG WORD
	CH.FCH==1B0		;DO A CHECKPOINT
	CH.FST==1B1		;UPDATE STATUS
	CH.JBN==0,,-1		;BATCH JOB NUMBER

CHE.MS:!			;MINIMUM SIZE OF CHECKPOINT MESSAGE

CHE.IN:! BLOCK	EQCKSZ		;CHECKPOINT INFORMATION
CHE.ST:! BLOCK	STSSIZ		;SPOOLER STATUS

CHE.SZ:!

	DEPHASE
;Definition of the request limit words for each object type

DEFINE DEFLIM(NAME,WORD,SIZE,POS),<
	RADIX 5+5
	IF1,<IFDEF L.'NAME,<PRINTX Mult. defined limit parameter NAME>>
	IFL <36-SIZE>,<PRINTX Illegal size for limit NAME>
	IFL <35-POS>,<PRINTX Illegal position for limit NAME>
	IFLE <EQLMSZ-WORD>,<PRINTX Illegal word for limit NAME>
	L.'NAME==<BYTE (18) WORD (9) SIZE,POS>
	RADIX 4+4
>  ;END DEFINE DEFLIM

;Batch job parameters
	DEFLIM	UNIQ,0,2,1		;/UNIQUE
	DEFLIM	REST,0,2,3		;/RESTART
	DEFLIM	OINT,0,2,5		;/OPRINT (OPR INTERVENTION)
	DEFLIM	OUTP,0,3,8		;/OUTPUT
	DEFLIM	BSPR,0,9,17		;(SPARE BITS FOR INPUT DEPENDENCY)
	DEFLIM	DEPN,0,18,35		;/DEPENDENCY
	DEFLIM	CORE,1,18,17		;/CORE
	DEFLIM	TIME,1,18,35		;/TIME
	DEFLIM	SLPT,2,18,17		;SPOOLED LPT LIMIT
	DEFLIM	SCDP,2,18,35		;SPOOLED CDP LIMIT
	DEFLIM	SPTP,3,18,17		;SPOOLED PTP LIMIT
	DEFLIM	SPLT,3,18,35		;SPOOLED PLT LIMIT
	DEFLIM	ONOD,4,36,35		;BATCH OUTPUT DESTINATION NODE
	DEFLIM	BLOG,5,2,1		;/BATLOG

;Output job parameters
	DEFLIM	FORM,0,36,35		;FORMS
	DEFLIM	NBLK,1,18,17		;NUMBER OF BLOCKS
	DEFLIM	OLIM,1,18,35		;OUTPUT LIMIT
	DEFLIM	NOT1,2,36,35		;FIRST HALF OF NOTE
	DEFLIM	NOT2,3,36,35		;SECOND HALF OF NOTE
	DEFLIM	FLEA,4,2,1		;FORMS-LIMIT-EXCEEDED ACTION (SET BY OPR)

;Batch input parameters
	DEFLIM	CJOB,1,18,17		;NUMBER OF JOBS
	DEFLIM	CTIM,2,36,35		;START TIME
	DEFLIM	CNOD,3,36,35		;NODE AT WHICH READER IS LOCATED

TOPS20 <
;Archive tape parameters
	DEFLIM TDTD,0,36,35		;DUMPER timestamp
	DEFLIM TUFT,0,1,0		;Use 1st tape rather than 2nd if on
	DEFLIM TDAT,0,35,35		;Actual time stamp
	DEFLIM TID1,1,36,35		;Tape 1 ID
	DEFLIM TTN1,2,36,35		;Saveset and tape file #
	DEFLIM TTS1,2,18,17		; Saveset 1
	DEFLIM TTF1,2,18,35		;Tape file # 1
	DEFLIM TID2,3,36,35		;Tape 2 ID
	DEFLIM TTN2,4,36,35		;Saveset and tape file # 2
	DEFLIM TTS2,4,18,17		;Saveset 2
	DEFLIM TTF2,4,18,35		;Tape file # 2
> ;END TOPS20 CONDITIONAL
DEFINE GETLIM(AC,BLOCK,NAME),<
	IFNDEF L.'NAME,<PRINTX Undefined limit parameter NAME>
	..Z==BLOCK
	..O==<L.'NAME&777777000000>_-^D18
	..Z==..Z+..O
	..S==<L.'NAME&777000>_-^D9
	..P==<L.'NAME&777>
	..P==^D35-..P
	..Z==..Z+<..S>B11+<..P>B5
	LDB	AC,[EXP ..Z]
>  ;END DEFINE GETLIM

DEFINE STOLIM(AC,BLOCK,NAME),<
	IFNDEF L.'NAME,<PRINTX Undefined limit parameter NAME>
	..Z==BLOCK
	..O==<L.'NAME&777777000000>_-^D18
	..Z==..Z+..O
	..S==<L.'NAME&777000>_-^D9
	..P==<L.'NAME&777>
	..P==^D35-..P
	..Z==..Z+<..S>B11+<..P>B5
	DPB	AC,[EXP ..Z]
>  ;END DEFINE STOLIM

DEFINE WIDLIM(NAME),<<L.'NAME&777000>_-^D9>

DEFINE MAXLIM(NAME),<<1_<WIDLIM(NAME)>>-1>
SUBTTL The NEXTJOB and CREATE Messages - Functions 5 and 7


; The NEXTJOB Message, Function 5, is  the  message  which  instructs  a
; known  component to process a job.  The CREATE Message, Function 7, is
; sent to QUASAR by an unknown component as a request to create a job in
; one of the external queues.  Both of these messages are in the form of
; the External Queue Entry (EQ).
;
; The External Queue Entry (EQ) consists of a header section followed by
; a list of file-specifications.
;
; The header section has three (3) parts:
;
;      1.  The operating system independent header which is required and
;          is the same on both operating systems.
;
;      2.  The  operating  system  dependent  header  which  immediately
;          follows  the  operating  system  independent  header.   It is
;          required and is different for each operating system.
;
;     The above parts comprise the minimum header size EQHSIZ.
;
;
;      3.  The operating system dependent optional parameters which when
;          present  immediately  follow  the  operating system dependent
;          part of the header.
;
;
; The length of the entire header for a given request is stored  in  the
; header in .EQLEN<EQ.LOH>.
;
; Following  the  header  sections  is   a   list   of   one   or   more
; file-specifications.  Each file-spec consists of a File-Parameter area
; (FP) followed by the standard File Descriptor area (FD).
SUBTTL	EQ - The External Queue Entry

;	!=======================================================!
;	\                                                       \
;	\                  THE MESSAGE HEADER                   \
;	\                                                       \
;	!=======================================================!
;	!               INTERNAL TASK NAME (ITN)                !
;	!-------------------------------------------------------!
;	! INTERNAL REQUEST VERSION  !     LENGTH OF HEADER      !
;	!-------------------------------------------------------!
;	\                                                       \
;	\                REQUESTED OBJECT BLOCK                 \
;	\                                                       \
;	!-------------------------------------------------------!
;	\                                                       \
;	\                 JOB INFORMATION BLOCK                 \
;	\                                                       \
;	!-------------------------------------------------------!
;	!  REQUEST PROTECTION CODE  !NUMBER OF FILES IN REQUEST !
;	!-------------------------------------------------------!
;	!                    SPARE EQ FIELD                     !
;	!-------------------------------------------------------!
;	!      AFTER PARAMETER (INTERNAL DATE/TIME FORMAT)      !
;	!-------------------------------------------------------!
;	!			SPARE				!
;	!-------------------------------------------------------!
;	!                                                       !
;	\               REQUEST LIMIT INFORMATION               \
;	\             CONTENTS ARE QUEUE DEPENDENT              \
;	\                        5 WORDS                        \
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\            REQUEST CHECKPOINT INFORMATION             \
;	\            MAINTAINED BY KNOWN COMPONENTS             \
;	\                     EQCKSZ WORDS                      \
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\                    ACCOUNT STRING                     \
;	\                                                       \
;	\                        8 WORDS                        \
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	!         THE LAST FEW WORDS OF THE "EQ" HEADER         !
;	!       ARE OPERATING SYSTEM DEPENDENT AS FOLLOWS       !
;
;
;	!                 -----  TOPS 10  -----                 !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                  USER NAME IN SIXBIT                  !
;	!                       (2 WORDS)                       !
;	!=======================================================!
;	!                                                       !
;	\                  PATH SPECIFICATION                   \
;	\                      (OPTIONAL)                       \
;	\                       SIX WORDS                       \
;	!                                                       !
;	!=======================================================!
;
;	!                 -----  TOPS 20  -----                 !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\              REQUEST OWNER SPECIFICATION              \
;	\                                                       \
;	\                      (10 WORDS)                       \
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\        CONNECTED DIRECTORY OF REQUEST CREATOR         \
;	\                                                       \
;	\                      (12 WORDS)                       \
;	!                                                       !
;	!=======================================================!
;	!               SPOOLED INPUT SET HANDLE                !
;	!=======================================================!
	PHASE	MSHSIZ

.EQITN:! BLOCK	1		;INTERNAL TASK NAME
.EQLEN:! BLOCK	1		;LENGTH WORD
	EQ.VRS==-1,,0		;VERSION NUMBER OF REQUEST (%%.QSR)
	EQ.LOH==0,,-1		;LENGTH OF THE HEADER ( e.g. EQHSIZ)

.EQROB:! BLOCK	ROBSIZ		;REQUESTED OBJECT BLOCK
.EQJBB:! BLOCK	JIBSIZ		;JOB INFORMATION BLOCK
.EQSPC:! BLOCK	1		;FILE SPECIFICATION WORD
	EQ.PRO==-1,,0		;REQUEST PROTECTION
	EQ.NUM==0,,-1		;NUMBER OF FILES IN THE REQUEST

TOPS20<	BLOCK	1		;SPARE (TOPS20 ONLY) >
.EQAFT:! BLOCK	1		;AFTER PARAMETER (INTERNAL FORMAT)

.EQLIM:! BLOCK	EQLMSZ		;NOTE THAT EQLMSZ IS DEFINED IN
				;THE OVERALL STRUCTURE DEFINITION
.EQCHK:! BLOCK	EQCKSZ		;CHECKPOINT/REQUEUE INFORMATION

.EQACT:! BLOCK	EQASSZ		;ACCOUNT STRING

.EQUSR:! BLOCK	5		;ASCIZ /USER:name (MAX 24 CHARS)

.EQBOX:! BLOCK	^D10		;ASCIZ STRING FOR ROUTING OUTPUT REQUESTS
				;IE. /LOC:"ROOM 203, BOX 25"

.EQCST:! BLOCK	^D10		;CUSTOMER USE ONLY

.EQNOD:! BLOCK	1		;[1260]NODE WHERE PRINT REQUEST ORIGINATED FROM
.EQCHR:! BLOCK	4		;[1262]DQS CHARACTERISTICS BIT MASK
.EQNAM:! BLOCK	1		;[1267]REMOTE LPT NAME HEADER (FILLED BY QUASAR)
.EQRPN:! BLOCK	7		;[1262]VMS QUEUE NAME/ LAT PORT OR SERVICE NAME
.EQNJN:! BLOCK	1		;[1275]NODE AND JOB NUMBER OF REMOTE LPT REQUEST
	EQ.NNM==-1,,0		;[1275]NODE NUMBER WHERE PRINT REQUEST ORIGINATED
	EQ.JNM==0,,-1		;[1275]JOB NUMBER OF REMOTE USER
.EQPID:! BLOCK	1		;[1275]PID OF LISSPL
.EQPRI:! BLOCK	1		;[1302]LOG/SPOOL FILE REQUESTS
	EQ.LOG==1B0		;[1302]REQUEST CONTAINS LOG FILES
	EQ.SPO==1B1		;[1302]REQUEST CONTAINS SPOOLED FILES
.EQDEC:! BLOCK	4		;[1302]FOR DEC USE ONLY

EQISIZ:!

;END OF OPERATING SYSTEM INDEPENDENT HEADER  -  MORE OF CREATE MESSAGE FOLLOWS

	;THIS IS THE JOB INFORMATION BLOCK STRUCTURE DESCRIPTION

	.EQJOB==.EQJBB+JIB.JN	;JOB NAME (SIXBIT)
	.EQSEQ==.EQJBB+JIB.SQ	;EXTERNAL VALUES
	    EQ.SEQ==777700,,0	;EXTERNAL SEQUENCE NUMBER
	    EQ.NND==1B12	;[1300]NODE NAME HAS BEEN DEFAULTED TO LOCAL 
	    EQ.DLR==1B13	;[1262]PRINT REQUEST IS FOR A REMOTE PRINTER
	    EQ.RLT==1B14	;[1260]PRINT REQUEST FROM A REMOTE CLUSTER NODE
	    EQ.RAI==1B15	;[1260]ACCOUNTING ENABLED ON REMOTE CLUSTER NODE
	    EQ.CHP==1B16	;Priority change has occurred
	    EQ.ALR==1B17	;ALLOCATION REQUESTED
	    EQ.WAL==1B18	;BATCH REQUEST WAITING FOR ALLOCATION
	    EQ.WAM==1B19	;BATCH REQUEST WAITING FOR A MOUNT
	    EQ.ACT==3B21	;REQUEST REQUIRES ACCOUNT VALIDATION
	      %VALID==0		;ACCOUNT STRING IS VALID
	      %VALRQ==1		;ACCOUNT VALIDATION IS REQUIRED
	      %VALPD==2		;ACCOUNT VALIDATION HAS BEEN REQUESTED
	    EQ.IAS==1B22	;REQUEST CONTAINS AN INVALID ACCT STRING
	    EQ.NOT==3B24	;JOB REQUESTED /NOTIFY
	    EQ.JBC==1B25	;JOB HAS BEEN CHECKPOINTED
	    EQ.HBO==1B26	;JOB HELD BY OPERATOR
	    EQ.PRV==1B27	;REQUEST CREATOR WAS PRIVILEGED
	    EQ.SPL==1B28	;REQUEST CONTAINS SPOOLED FILES
	    EQ.RDE==1B29	;THIS REQUEST DOESN'T EXIST (CLEAN-UP)
	    EQ.PRI==77B35	;EXTERNAL PRIORITY
	.EQOID==.EQJBB+JIB.US	;-10(PPN), -20(USER NUMBER)
	.EQRID==.EQJBB+JIB.ID	;REQUEST ID
TOPS10 <
	.EQOWN==.EQJBB+JIB.NM	;TOPS-10 USER NAME IN SIXBIT (2 WORDS)
>
;BEGINNING OF OPERATING SYSTEM DEPENDENT HEADER


TOPS20 <
.EQOWN:! BLOCK	EQNMSZ		;EXTERNAL OWNER SPECIFICATION
.EQCON:! BLOCK	12		;CONNECTED DIRECTORY
>  ;END TOPS20 CONDITIONAL


;END OF OPERATING SYSTEM DEPENDENT HEADER


;BEGINNING OF OPERATING SYSTEM DEPENDENT OPTIONAL PARAMETERS

TOPS10 <			;MAKE ROOM FOR THE INPUT QUEUE PATH SPEC
.EQPAT:! BLOCK	6		;PATH
.EQPSZ:!			;SIZE OF HEADER WITH PATH
> ;END TOPS10 CONDITIONAL

TOPS20 <
.EQSIS:! BLOCK	1		;HANDLE FOR SPOOLED INPUT SET
> ;END TOPS20 CONDITIONAL

EQHSIZ:!			;TO DEFINE THE EQ HEADER SIZE


EQXSIZ:!			;MAXIMUM "DEFINED" SIZE OF AN EQ
				;THIS MAXIMUM SHOULD NOT BE ENFORCED SINCE
				; VARIOUS USER APPLICATIONS MAY PASS MORE

	DEPHASE
;	!=======================================================!
;	! LENGTH OF FILE-PARAM AREA !				!
;	!-------------------------------------------------------!
;	!FILE FMT !PAPR FMT!SPACING !    FLAGS    !   COPIES    !
;	!-------------------------------------------------------!
;	!         STARTING INFORMATION (CUSP DEPENDENT)         !
;	!-------------------------------------------------------!
;	!                    /REPORT WORD 1                     !
;	!-------------------------------------------------------!
;	!                    /REPORT WORD 2                     !
;	!-------------------------------------------------------!
;	!RCRD FMT!                                ! RECORD LGTH !
;	!-------------------------------------------------------!
;	!                     RECORD COUNT                      !
;	!-------------------------------------------------------!
;	!      UNIQUE FIELD OF THE NAME OF A TEMPORARY FILE     !
;	!=======================================================!

	PHASE	0

.FPLEN:! BLOCK	1		;SIZE WORD
	FP.LEN==-1,,0		;SIZE OF THE FP

	PHASE	1		;OUTPUT QUEUES

.FPINF:! BLOCK	1		;FILE PARAMETER INFORMATION
	FP.FFF==77B5		;FILE FORMAT
		.FPFAS==1	;ASCII
		.FPFFO==2	;FORTRAN
		.FPFCO==3	;COBOL
		.FPFAI==4	;AUGMENTED IMAGE (FOR BIN QUEUE)
		.FPFSA==5	;STREAM ASCII (FOR BIN QUEUE)
		.FPF11==6	;ELEVEN
		.FPFIM==7	;IMAGE (FOR XFR QUEUE)
		.FPF8B==10	;8 BIT ASCII FILE
		.FPMAX==.FPF8B	;MAX FP VALUE DEFINED

	FP.FPF==77B11		;PAPER FORMAT (SEE THE NEXT PAGE)
	FP.FSP==77B17		;SPACING CODE
	FP.DEL==1B18		;ON = DELETE THIS FILE
	FP.FLG==1B19		;THIS IS THE LOG FILE
	FP.NFH==1B20		;NO FILE HEADERS
	FP.SPL==1B21		;THIS IS A SPOOLED FILE
	FP.PCR==1B22		;SPOOLED CARD READER FILE
	FP.REN==1B23		;/DISPOSE:RENAME FILE
	FP.NRA==1B24		;[1260]USER DOES NOT HAVE READ ACCESS (CLUSTER LPT)
	FP.CPY==1B25		;[1260]FILE HAS A TEMPORARY COPY OF IT (CLUSTER LPT)
	FP.XXX==1B26		;[1260]EXTRA FLAG BIT
	FP.FCY==777B35		;COPY COUNT

.FPFST:! BLOCK	1		;STARTING POINT INFORMATION
.FPFR1:! BLOCK	1		;/REPORT WORD 1
.FPFR2:! BLOCK	1		;/REPORT WORD 2

TOPS10<
.FPONM:! BLOCK	1		;ORIGINAL FILE NAME IF /DISP:REN
.FPOXT:! BLOCK	1		;ORIGINAL EXTENSION IF /DISP:REN
>
FPMSIZ:!			;[1272]MINUMUM FP AREA SIZE
.FPTEM:! BLOCK	1		;[1260]UNIQUE PART OF TEMPORARY FILE NAME
FPXSIZ:!			;MAXIMUM FP AREA SIZE

	PHASE	1		;BIN QUEUE

.FPINF:! BLOCK	1		;FP INFORMATION (SEE NEXT PAGE)
	FP.RCF==77B5		;RECORD FORMAT
	FP.RCL==777B35		;RECORD LENGTH (FOR FIXED FORMAT)
.FPRCD:! BLOCK	1		;RECORD COUNT


	PHASE	1		;BATCH QUEUE (FOR SNA WORKSTATIONS)

.FPINF:! BLOCK	1		;FP INFORMATION
	FP.TAB==1B24		;Preserve tabs
	FP.NXL==1B25		;No Translate
	FP.RCL==777B35		;RECORD LENGTH (FOR FIXED FORMAT)

	DEPHASE
;PAPER FORMATS FOR LPT QUEUE (/PRINT)
	%FPLAR==1		;ARROW FORMAT
	%FPLAS==2		;ASCII FORMAT
	%FPLOC==3		;OCTAL FORMAT
	%FPLSU==4		;SUPPRESS FORMAT


;PAPER FORMATS FOR PTP QUEUE (/TAPE)
	%FPTAS==1		;ASCII FORMAT
	%FPTIM==2		;IMAGE FORMAT
	%FPTIB==3		;IMAGE BINARY FORMAT
	%FPTBI==4		;BINARY FORMAT


;PAPER FORMATS FOR CDP QUEUE (/PUNCH)
	%FPCAS==1		;ASCII FORMAT
	%FPCBC==2		;026 (BCD) FORMAT
	%FPCBI==3		;BINARY FORMAT
	%FPCIM==5		;IMAGE FORMAT


;PAPER FORMAT FOR PLT QUEUE  (/PLOT)
	%FPPIM==1		;IMAGE FORMAT
	%FPPAS==2		;ASCII FORMAT
	%FPPBI==3		;BINARY FORMAT

;VALUES FOR .EQLM1<EQ.OUT> (/OUTPUT FIELD)
	%EQONL==1		;NO LOG
	%EQOLG==2		;LOG FILE ALWAYS
	%EQOLE==3		;LOG FILE ON ERROR ONLY

;VALUES FOR .EQLM1<EQ.UNI> (/UNIQUE FIELD)
	%EQUNO==1		;/UNIQUE:NO
	%EQUYE==2		;/UNIQUE:YES

;VALUES FOR .EQLM1<EQ.RST> (/RESTART FIELD)
	%EQRNO==1		;/RESTART:NO
	%EQRYE==2		;/RESTART:YES

;VALUES FOR .EQLIM WORD 6 (BATCH ONLY)  (/BATLOG: FIELD)
	%BAPND==1		;APPEND OUTPUT LOG
	%BSCDE==2		;SUPERSEDE OUTPUT LOG
	%BSPOL==3		;SPOOL OUTPUT LOG

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE


;DEFINITIONS FOR XFR QUE FP

	FP.RFM==FP.FPF		;RECORD FORMAT INSTEAD OF PAPER FORMAT
	FP.MRS==FP.FCY		;MAXIMUM RECORD SIZE INSTEAD OF COPIES

    ;VALUES FOR RECORD FORMAT (FP.RFM)

	%FPXFI==1		;FIXED LENGTH RECORDS
	%FPXVA==2		;VARIABLE LENGTH RECORDS

;VALUE FOR FILE RETREIVAL .EQLM1<EQ.UFT>

	%EQUFT==1B0		;USE FIRST TAPE NOT SECOND IF LIT
	SUBTTL The ABORT Message - Function 6

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                  INTERNAL TASK NAME                   !
;	!-------------------------------------------------------!
;	!                      OBJECT TYPE                      !
;	!-------------------------------------------------------!
;	!                      UNIT NUMBER                      !
;	!-------------------------------------------------------!
;	!                         NODE                          !
;	!-------------------------------------------------------!
;	!                      REASON CODE                      !
;	!-------------------------------------------------------!
;	!          ID OF PERSON REQUESTING THE CANCEL           !
;	!=======================================================!

	PHASE	MSHSIZ

ABO.IT:! BLOCK	1		;INTERNAL TASK NAME
ABO.TY:! BLOCK	1		;OBJECT TYPE
ABO.UN:! BLOCK	1		;UNIT NUMBER
ABO.NO:! BLOCK	1		;NODE
ABO.CD:! BLOCK	1		;CODE INDICATING CAUSE OF MESSAGE
	ABOUSR==1		; BY USER REQUEST
	ABORMU==2		; [1306]BY A REMOTE USER
ABO.ID:! BLOCK	1		;ID OF PERSON REQUESTING THE KILL
ABO.SZ:!			;SIZE OF THE ABORT MESSAGE
;[1306]The following two blocks are added on by QUASAR if the abort
;[1306]request originated remotely
ABO.RU:! BLOCK	EQNMSZ		;[1306]REMOTE REQUESTOR NAME
ABO.ND:! BLOCK	1		;[1306]REMOTE REQUESTOR'S NODE NAME


	DEPHASE
SUBTTL	The LIST Message - Function 10

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!		   	FLAG WORD			!
;	!-------------------------------------------------------!
;	!		      ARGUMENT COUNT			!
;	!=======================================================!

;			ARGUMENT DATA BLOCK

;	!-------------------------------------------------------!
;	! LENGTH OF ARGUMENT BLOCK  !     TYPE OF ARGUMENT	!
;	!-------------------------------------------------------!
;	\							\
;	\		   DATA FOR THE ARGUMENT		\
;	\							\
;	!=======================================================!

	;THE FLAG WORD (.OFLAG) CAN HAVE THE FOLLOWING BITS LIT:

		LS.FST==1B1	;YOU WANT A QUICK QUEUES LISTING.
		LS.ALL==1B2	;YOU WANT TO SEE EVERYTHING !!!


	;THE LIST QUEUES MESSAGE MAY CONTAIN THE FOLLOWING BLOCKS

		.LSQUE==0	;THE QUEUES YOU WANT TO LIST.
		.LSUSR==1	;THE USER ID FOR THE QUEUE ENTRYS YOU WANT.
		.LSUSM==2	;THE USER ID MASK (FOR .LSUSR)
		.LSJOB==3	;THE JOB NAME YOU WANT TO LIST
		.LSJBM==4	;THE JOB NAME MASK (FOR .LSJOB)
		.LSUNT==5	;THE UNIT NUMBER YOU WANT TO LIST
		.LSDND==6	;THE DESTINATION NODE (WHERE OUTPUT GOES)
		.LSPND==7	;THE PROCESSING NODE (WHERE BATCH JOBS RUN)
		.LSPID==10	;[1264]PID OF SENDER FOR I O/DESTINATION-NODE
		.LSUNM==11	;[1301]REMOTE USER NAME BLOCK
		; .ORNOD	;THE NODE WHOSE QUEUE ENTRIES YOU WANT

	;THE .LSQUE BLOCK AND ITS POSSIBLE VALUES IS DEFINED BELOW.

		LIQBAT==1B0	;LIST THE BATCH QUEUE
		LIQLPT==1B1	;LIST THE PRINTER QUEUE
		LIQCDP==1B2	;LIST THE CARD-PUNCH QUEUE
		LIQPTP==1B3	;LIST THE PAPER-TAPE PUNCH QUEUE
		LIQPLT==1B4	;LIST THE PLOTTER QUEUE
		LIQMNT==1B6	;LIST THE TAPE MOUNT QUEUE
		LIQRET==1B7	;LIST THE RETRIEVAL QUEUE
		LIQALC==1B8	;LIST THE JOBS ALLOCATION

		LIQOUT==LIQLPT+LIQCDP+LIQPTP+LIQPLT ;LIST ALL OUTPUT QUEUES.

		LIQALL==LIQOUT+LIQBAT+LIQRET+LIQMNT ;LIST ALL THE QUEUES.

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE


;	!=======================================================!
;	!		2	!		.LSQUE		!
;	!-------------------------------------------------------!
;	!	THE QUEUE(S) YOU WANT TO LIST			!
;	!=======================================================!

	;THE .LSUSR BLOCK IS DEFINED BELOW.

;	!=======================================================!
;	!		2	!		.LSUSR		!
;	!-------------------------------------------------------!
;	!	THE USER ID (PPN ON THE -10) OF THE		!
;	!		QUEUE ENTRYS YOU WANT			!
;	!=======================================================!

	;THE .ORNOD BLOCK IS DEFINED BELOW

;	!=======================================================!
;	!		2	!		.ORNOD		!
;	!-------------------------------------------------------!
;	!	    SIXBIT NODE NAME or OCTAL NODE #		!
;	!=======================================================!
	SUBTTL	The MODIFY Message - Function 11

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                      QUEUE NAME                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\            REQUEST DESCRIPTOR BLOCK (RDB)             \
;	\                                                       \
;	\              TO DESCRIBE MODIFY REQUEST               \
;	!                                                       !
;	!-------------------------------------------------------!

; THE FOLLOWING BLOCK IS DUPLICATED FOR EACH "GROUP" TO BE MODIFIED
; THE LENGTH OF THE BLOCK IS DEPENDENT ON THE GROUP.
;  IF AN ELEMENT IS NOT TO BE CHANGED, SPECIFY -1 AS THE VALUE.

; ELEMENTS ARE POSITIONAL WITHIN A GROUP AND NO ENDING INDICATION IS NECESSARY
; AS THE VARIOUS LENGTH FIELDS DETERMINE THE NEXT OR END OF THE MESSAGE

; FOR DESCRIPTIONS OF THE GROUP ELEMENTS AND POSITIONS THE READER IS DIRECTED TO:
;	QSRQUE - MAJMOD FOR MAJOR REQUEST GROUP 0
;	QSRSCH - MODIFIERS FOR QUEUE DEPENDENT GROUP 1

;	!=======================================================!
;	!       GROUP NUMBER        !        WORD COUNT         !
;	!=======================================================!
	PHASE	MSHSIZ

MOD.OT:! BLOCK	1		;OBJECT TYPE

MOD.RQ:! BLOCK	RDBSIZ		;REQUEST DESCRIPTOR BLOCK

MOD.SZ:!			;MINIMUM SIZE OF A MODIFY REQUEST
MOD.FG:!			;FIRST GROUP WORD IN MODIFY REQUEST

	PHASE	0		;RELATIVE OFFSET

MOD.GN:! BLOCK	1		;GROUP WORD
	MODGPN==-1,,0		;THE GROUP NUMBER
		.GPMAJ==0	;MAJOR PARAMETERS (AFTER, PRIORITY, etc...)
		.GPQUE==1	;QUEUE DEPENDENT (FORMS, TIME LIMIT, etc...)

	MODGLN==0,,-1		;THE NUMBER OF ELEMENTS (INCLUDING THIS WORD)
MOD.GE:!			;THE FIRST GROUP ELEMENT TO BE MODIFIED
	DEPHASE


;IF MODIFYING /DEPENDENCY COUNT FOR INPUT QUEUES, 3 FORMS ARE RECOGNIZED

	.MODAB==0	;NEW VALUE IS ABSOLUTE CHANGE
	.MODPL==1	;NEW VALUE IS ADDITIVE
	.MODMI==2	;NEW VALUE IS SUBTRACTIVE
SUBTTL	The KILL Message - Function 12

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                      QUEUE NAME                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\            REQUEST DESCRIPTOR BLOCK (RDB)             \
;	\                                                       \
;	\               TO DESCRIBE KILL REQUEST                \
;	!                                                       !
;	!-------------------------------------------------------!

	PHASE	MSHSIZ

KIL.OT:! BLOCK	1		;OBJECT TYPE
KIL.RQ:! BLOCK	RDBSIZ		;REQUEST DESCRIPTOR BLOCK
KIL.PD:! BLOCK	1		;[1264]PID OF THE SENDER FOR CANCEL PRINT/DEST
KIL.ND:! BLOCK	1		;[1267]REMOTE NODE NAME FOR CANCEL PRINT/DEST
KIL.SZ:!			;SIZE OF KILL ENTRY
KIL.RU:! BLOCK	EQNMSZ		;[1306]REMOTE REQUESTOR'S NAME (FILLED IN BY
	DEPHASE			;[1306]QUASAR
	SUBTTL	THE LIST ANSWER MESSAGE.

	;THE LIST ANSWER MESSAGE IS CONSTRUCTED AS FOLLOWS:

;	!=======================================================!
;	\							\
;	\		THE MESSAGE HEADER			\
;	\							\
;	!=======================================================!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!
;	!		ARGUMENT COUNT				!
;	!=======================================================!
;	! HEADER LENGTH		!  HEADER BLOCK TYPE (.WTTYP)	!
;	!-------------------------------------------------------!
;	\							\
;	\		THE MESSAGE HEADER			\
;	\							\
;	!-------------------------------------------------------!
;	! ANSWER LENGTH		!  ANSWER BLOCK TYPE (.WTTXT)	!
;	!-------------------------------------------------------!
;	\							\
;	\	THE QUEUES LISTING IN ASCIZ			\
;	\							\
;	!=======================================================!


	;THE FLAG WORD CAN CONTAIN THE FOLLOWING BITS:

		WT.MOR==WT.MOR		;MORE DISPLAY PAGES COMMING.
					;THIS IS ORIGIONALLY DEFINED IN ORNMAC.
SUBTTL	The REQUEST FOR CHECKPOINT Message  -  Function 15

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                 INTERNAL TASK NUMBER                  !
;	!-------------------------------------------------------!
;	!                      OBJECT TYPE                      !
;	!-------------------------------------------------------!
;	!                      UNIT NUMBER                      !
;	!-------------------------------------------------------!
;	!                         NODE                          !
;	!=======================================================!

	PHASE	MSHSIZ

RCK.IT:! BLOCK	1		;THE ITN
RCK.TY:! BLOCK	1		;THE OBJECT TYPE
RCK.UN:! BLOCK	1		;THE UNIT NUMBER
RCK.NO:! BLOCK	1		;THE NODE

RCK.SZ:!			;THE SIZE OF THE REQUEST FOR CHECKPOINT MESSAGE

	DEPHASE
SUBTTL The DEFER Message  -  Function 16

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!         QUEUE NAME FOR THE REQUEST (0 IF ALL)         !
;	!-------------------------------------------------------!
;	!    FLAGS     !  FUNCTION   !        JOB NUMBER        !
;	!=======================================================!

	PHASE	MSHSIZ

DFR.OT:! BLOCK	1		;THE OBJECT TYPE ( 0 IF ALL)
DFR.JB:! BLOCK	1		;JOB INFORMATION
	DF.FNC==777B17		;THE FUNCTION REQUESTED
		.DFREL==0	;RELEASE ALL DEFERRED FILES
		.DFKIL==1	;KILL ALL DEFERRED FILES

	DF.JOB==0,,-1		;THE JOB NUMBER

DFR.SZ:!			;SIZE OF THE DEFER MESSAGE

	DEPHASE
SUBTTL	Event Counters

;QUASAR MAINTAINS A SET OF EVENT COUNTERS FOR VARIOUS EVENTS THAT
;	MIGHT BE OF INTEREST.  THESE COUNTERS ARE PRIMARILY FOR THE
;	USE OF SOFTWARE DEVELOPMENT PEOPLE TO HELP KEEP A HANDLE ON
;	WHAT IS REALLY HAPPENING INSIDE OF QUASAR.
;
;TWO MESSAGES EXIST TO HANDLE THESE COUNTERS:
;	COUNT		FUNCTION 20	SENT TO REQUEST CURRENT COUNTS
;	CNTANSWER	FUNCTION 21	SENT AS RESPONSE TO COUNT MESSAGE

;FOLLOWING ARE THE MACROS USED TO MANIPULATE THE COUNTERS:

DEFINE	X(A,B),<
	LSTOF.
	INTERN	$$'A
	$$'A==$$
	IFIDN <MNXT><A>,<$$==$$+.OTMAX>
	$$==$$+1
	LSTON.>  ;END DEFINE X

DEFINE	$COUNT(A),<
	IFNDEF $$'A,<
		PRINTX UNDEFINED COUNTER A USED
	>
	IFNDEF	G$ITEM,<EXTERN G$ITEM>
	AOS G$ITEM+$$'A
>  ;END DEFINE $COUNT

DEFINE	$SITEM(AC,A),<
	IFNDEF $$'A,<
		PRINTX UNDEFINED COUNTER A USED
	>
	IFNDEF	G$ITEM,<EXTERN G$ITEM>
	STORE AC,G$ITEM+$$'A
>  ;END DEFINE $SITEM


;THE COUNTERS ARE DEFINE ON THE NEXT PAGE
;THE COUNTERS

DEFINE $ITEM,<
	LSTOF.
	X	(ICNT,NUMBER OF ITEMS IN RECORD)
	X	(NOW,CURRENT TIME OF DAY)
	X	(STAR,QUASAR START TIME)
	X	(QJOB,QUASARS JOB NUMBER)
	X	(IPCI,TOTAL NUMBER OF IPCF INTERRUPTS RECEIVED)
	X	(RIPC,IPCF MESSAGES RECEIVED)
	X	(SIPC,IPCF MESSAGES SENT)
	X	(IPCF,IPCF SEND FAILURES)
	X	(IPCU,UNRECOVERABLE IPCF SEND FAILURES)
	X	(MREL,RELEASE MESSAGES RECEIVED)
	X	(MCHK,CHECKPOINT MESSAGES RECEIVED)
	X	(MREQ,REQUEUE MESSAGES RECEIVED)
	X	(MNXT,TOTAL NEXTJOB MESSAGES SENT BY TYPE)
	X	(MLST,LIST MESSAGES RECEIVED)
	X	(NLAP,LISTANSWER PAGES SENT)
	X	(SCRE,SUCCESSFUL CREATES DONE)
	X	(MMOD,MODIFY MESSAGES RECEIVED)
	X	(MKIL,KILL MESSAGES RECEIVED)
	X	(MDEF,DEFER MESSAGES RECEIVED)
	X	(ISPL,IMMEDIATE SPOOL MESSAGES RECEIVED)
	X	(DSPL,DEFFERED SPOOL MESSAGES RECEIVED)
	X	(MCAN,COUNTANSWER MESSAGES SENT)
	X	(SLCD,SCHEDULER LOOP COUNTDOWNS)
	X	(DEAD,MDA DEADLOCK AVOIDANCE CALLS)
	X	(DFAL,DEADLOCK AVOIDANCE FAILURES)
	X	(VSWM,VOLUME SWITCH TAPE MOUNT)
	X	(TAPM,TAPE MOUNT)
	X	(STRM,PHYSICAL STRUCTURE MOUNT)
	X	(USTM,USER STRUCTURE MOUNT)
	X	(GENM,GENERIC MOUNT)
	X	(TINP,TERMINATION BATCH REQUESTS)
	X	(TOUT,TERMINATION PRINT REQUESTS)
	X	(TCNI,TERMINATION CONSOLE INPUT)
	X	(TCNO,TERMINATION CONSOLE OUTPUT)
	X	(EINP,EMULATION BATCH REQUESTS)
	X	(EOUT,EMULATION PRINT REQUESTS)
	X	(ECNI,EMULATION CONSOLE INPUT)
	X	(ECNO,EMULATION CONSOLE OUTPUT)
	LSTON.>  ;END DEFINE $ITEM

	$$=0				;START CLEAN
	$ITEM				;NOW CALL IT

	NITEMS=$$			;TOTAL NUMBER OF ITEMS
SUBTTL	The COUNT Message - Function 20

	PHASE	MSHSIZ

COU.SZ:!			;SIZE OF COUNT MESSAGE
	DEPHASE
SUBTTL	The COUNTANSWER Message - Function 21

	PHASE	MSHSIZ

CAN.BL:! BLOCK	NITEMS		;BLOCK OF ITEMS

CAN.SZ:!			;SIZE OF COUNTANSWER MESSAGE
	DEPHASE
SUBTTL The SETUP/SHUTDOWN Message - Function 22

;The SETUP message is sent to cause a component to service an object for
;	which there is a job. The SHUTDOWN message is sent to cause a
;	component to give up control of a object.


;	!=======================================================!
;	\                                                       \
;	\                  The Message Header                   \
;	\                                                       \
;	!=======================================================!
;	!                         Flags                         !
;	!-------------------------------------------------------!
;	!               Type of OBJect to set up                !
;	!-------------------------------------------------------!
;	!            Unit number of OBJect to set up            !
;	!-------------------------------------------------------!
;	!               Node to set up OBJect at                !
;	!-------------------------------------------------------!
;	/							/	[1271]
;	/		Queue name (if DQS LPTSPL)		/	[1271]
;	/	or Port or Service name (if LAT LPTSPL)		/	[1271]
;	/							/	[1271]
;	!-------------------------------------------------------!	[1271]
;	/	DN60 line conditioning block (if DN60)		/	[1271]
;	!-------------------------------------------------------!	[1271]
;	!		Network Status Bits			!
;	!-------------------------------------------------------!
;	!	TTY LPTSPL SIXBIT characteristics word		!	[1271]
;	!-------------------------------------------------------!	[1271]
;	!		(SNA only) Gateway node in SIXBIT	!	[1271]
;	!-------------------------------------------------------!	[1271]
;	!		(SNA only) Access Name			!	[1271]
;	!-------------------------------------------------------!	[1271]
;	/		(SNA only) SNA Attribute Block		/	[1271]
;	!=======================================================!

		PHASE MSHSIZ		;START WITH STD. MESSAGE HEADER

SUP.FL:! BLOCK	1			;FLAGS
	SUFSHT==1B0			;SHUTDOWN INSTEAD OF SETUP
	SPLTAP==1B1			;BIT FOR PRINTER SPOOLER (SPOOL TO TAPE)
	LOCSPL==1B2			;[1260]A LOCAL LPTSPL
	CLUSPL==1B3			;[1260]A CLUSTER LPTSPL (CLUSPL)
	DQSSPL==1B4			;[1260]A DQS LPTSPL (DQSSPL)
	LATSPL==1B5			;[1260]A LAT LPTSPL (LATSPL)
	TTYSPL==1B6			;[1260]A TERMINAL LPTSPL (TTYSPL)

SUP.TY:! BLOCK	1			;TYPE OF OBJECT TO SET UP FOR
SUP.UN:! BLOCK	1			;UNIT NUMBER, OF THIS TYPE, TO SET UP
SUP.NO:! BLOCK	1			;SIXBIT NODE AT WHICH TO SET UP OBJ
SUP.QN:! BLOCK	LPTNLN			;[1271] Queue, port or service name
SUP.CN:! BLOCK	7			;DN60 LINE CONDITIONING BLOCK
SUP.ST:! BLOCK	1			;NETWORK STATUS/FLAG BITS OR TAPE/TTY
					;SEE 'NETSTS' BIT VALUES
SUP.CR:! BLOCK	1			;[1267]TTY LPT CHARACTERISTICS WORD
SUP.MS:!				;[1261]MINIMUM SIZE OF A SETUP MESSAGE

;THE FOLLOWING BLOCKS ARE USED BY SNA PROCESSING

SUP.GW:! BLOCK	1			;Gateway node in sixbit
SUP.AN:! BLOCK	3			;Access Name
SUP.AB:! BLOCK	NABSIZ			;SNA Attribute Block
SUP.SZ:!				;SIZE OF THE SETUP MESSAGE

	DEPHASE
SUBTTL	The RESPONSE-TO-SETUP Message - Function 23

;The RESPONSE-TO-SETUP message is sent to QUASAR by a known component
;	after the component receives a SETUP message for an object.

;	!=======================================================!
;	\                                                       \
;	\                  The Message Header                   \
;	\                                                       \
;	!=======================================================!
;	!                    The OBJect Type                    !
;	!-------------------------------------------------------!
;	!                The OBJect Unit Number                 !
;	!-------------------------------------------------------!
;	!         The NODE at which the OBJect Resides          !
;	!-------------------------------------------------------!
;	/	    Queue name (if DQS LPTSPL)			/	[1272]
;	/	or Port or Service name (if LAT LPTSPL)		/	[1272]
;	!-------------------------------------------------------!
;	!                   The RESPONSE Code                   !
;	!-------------------------------------------------------!
;	!                    RESPONSE REASON                    !
;	!-------------------------------------------------------!
;	!              The DEC Device Attributes                !
;	!-------------------------------------------------------!
;	!                  Prototype Node Name                  !
;	!-------------------------------------------------------!	[1271]
;	!	TTY LPTSPL SIXBIT characteristics word		!	[1271]
;	!=======================================================!
	PHASE	MSHSIZ			;STANDARD MESSAGE HEADER

RSU.TY:! BLOCK	1			;OBJECT TYPE
RSU.UN:! BLOCK	1			;UNIT NUMBER
RSU.NO:! BLOCK	1			;NODE
RSU.ND:! BLOCK	LPTNLN			;[1272] Queue, port or service name
RSU.CO:! BLOCK	1			;RESPONSE CODE
	%RSUOK==0			;SETUP OK
	%RSUNA==1			;OBJECT NOT AVAILABLE (TRY AGAIN LATER)
	%RSUDE==2			;OBJECT DOESNT EXIST (DONT TRY AGAIN)
	%RSUNC==3			;OBJECT PORT/LINE NOT CONDITIONED
RSU.CD:! BLOCK	1			;RESPONSE REASON
					;SEE OBJECT STATUS CODES IN OBJECT
					;    QUEUE DESCRIPTION
RSU.DA:! BLOCK	1			;DEC DEVICE ATTRIBUTES

RSU.PN:! BLOCK	1			;Prototype node name (SIXBIT)
RSU.CR:! BLOCK	1			;[1270] TTY LPT characteristics word
RSU.SZ:!				;[1264]MINIMUM SIZE OF A RELEASE MESSAGE

	DEPHASE
	SUBTTL	The HOLD/RELEASE Message - Function 25

;	!=======================================================!
;	\                                                       \
;	\                  THE MESSAGE HEADER                   \
;	\                                                       \
;	!=======================================================!
;	!                   THE OBJECT QUEUE                    !
;	!-------------------------------------------------------!
;	!                         FLAGS                         !
;	!-------------------------------------------------------!
;	\                                                       \
;	\               REQUEST DESCRIPTOR BLOCK                \
;	\                                                       \
;	!=======================================================!


	PHASE	MSHSIZ			;STANDARD MESSAGE HEADER

HBO.OT:! BLOCK	1			;OBJECT TYPE (QUEUE)
HBO.FL:! BLOCK	1			;FLAGS
	HB.FRL==1B0			;RELEASE FLAG
HBO.RQ:! BLOCK	RDBSIZ			;THE RDB SPECIFIED

HBO.SZ:!				;SIZE OF THE HBO MESSAGE

	DEPHASE
	SUBTTL	The SPOOL Message - Function 26 (sent by IPCC)

IFN FTUUOS,<
;	!=======================================================!
;	!          LENGTH           !    FUNCTION 26 - SPOOL    !
;	!-------------------------------------------------------!
;	!	!  JOB NUMBER       !  JBTLOC(J)  !    FLAGS    !
;	!-------------------------------------------------------!
;	!                      USERS NAME                       !
;	!                    2 SIXBIT WORDS                     !
;	!-------------------------------------------------------!
;	!              DEVICE INIT'ED BY THE USER               !
;	!-------------------------------------------------------!
;	!             STRUCTURE CONTAINING THE FILE             !
;	!-------------------------------------------------------!
;	!              MONITOR GENERATED FILE NAME              !
;	!-------------------------------------------------------!
;	!                   ENTERED FILE NAME                   !
;	!-------------------------------------------------------!
;	!                       FILE SIZE                       !
;	!-------------------------------------------------------!
;	!      FILE EXTENSION       !                           !
;	!-------------------------------------------------------!
;	!                   NUMBER OF COPIES                    !
;	!-------------------------------------------------------!
;	!                      FORMS NAME                       !
;	!-------------------------------------------------------!
;	!                     OUTPUT LIMIT                      !
;	!-------------------------------------------------------!
;	!SFL!                  FLAGS                  !DEV TYPE !
;	!-------------------------------------------------------!
;	!                   DEVICE ATTRIBUTES                   !
;	!-------------------------------------------------------!
;	!                         NODE                          !
;	!-------------------------------------------------------!
;	!                    AFTER PARAMETER                    !
;	!-------------------------------------------------------!
;	\							\
;	\		ASCIZ ACCOUNT STRING			\
;	\							\
;	!=======================================================!

	PHASE	0

SPL.HD:! BLOCK	1		;THE HEADER FROM IPCC
SPL.JB:! BLOCK	1		;USERS JOB NUMBER
	SP.STR==177000,,0	;BATCH STREAM NUMBER
	SP.JOB==777,,0		;THE JOB NUMBER CLOSING THE SPOOLED FILE
	SP.LOC==777B26		;CURRENT REMOTE STATION (.LOCATE n)
	SP.BAT==1B27		;THIS IS FOR A BATCH JOB
	SP.DFR==1B28		;DEFERRED MODE SPOOLING

SPL.US:! BLOCK	2		;THE USERS NAME (2 SIXBIT WORDS)
SPL.DV:! BLOCK	1		;DEVICE INIT'ed BY THE USER (e.g. LPT0:)
SPL.ST:! BLOCK	1		;STRUCTURE CONTAINING THIS FILE
SPL.FN:! BLOCK	1		;MONITOR GENERATED FILE NAME
SPL.EN:! BLOCK	1		;ENTERED FILE NAME
SPL.FS:! BLOCK	1		;FILE SIZE (IN BLOCKS)
SPL.EX:! BLOCK	1		;FILE EXTENSION
	SP.EXT==-1,,0		;IN LEFT HALF
SPL.CP:! BLOCK	1		;# COPIES
SPL.FM:! BLOCK	1		;FORMS NAME
SPL.LM:! BLOCK	1		;OUTPUT LIMIT
SPL.SF:! BLOCK	1		;SPOOLING FLAGS
	SP.FLG==3B2		;SPOOLING FLAG LOCATION
	   .SPDFD==1		;DEFERED SPOOLING
	   .SPDFI==2		;IMMEDIATE SPOOLING
	SP.TYP==77		;TYPE OF EDVICE
SPL.DA:! BLOCK	1		;DEVICE ATTRIBUTES
SPL.ND:! BLOCK	1		;NODE
SPL.AF:! BLOCK	1		;AFTER PARM
	 BLOCK	2		;SPARE SPOOLED PARAMETER WORDS
SPL.AC:! BLOCK	10		;ASCIZ ACCOUNT STRING

SPL.SZ:!			;SIZE OF THE SPOOL MESSAGE
	DEPHASE

>  ;END IFN FTUUOS
IFN FTJSYS,<

;	!=======================================================!
;	!                  FUNCTION 26 - SPOOL                  !
;	!-------------------------------------------------------!
;	!      # HEADER WORDS       !        JOB NUMBER         !
;	!-------------------------------------------------------!
;	!           FLAGS           !      STATION NUMBER       !
;	!-------------------------------------------------------!
;	!                     PROGRAM NAME                      !
;	!-------------------------------------------------------!
;	!         BYTE SIZE         !  NUMBER OF PAGES IN FILE  !
;	!-------------------------------------------------------!
;	!          BYTE COUNT WHICH WOULD ADDRESS EOF           !
;	!-------------------------------------------------------!
;	!                                                       !
;	/               FILESPEC FOR SPOOLED FILE               /
;	!                                                       !
;	!=======================================================!

	PHASE	0
SPL.HD:! BLOCK	1		;HEADER FROM IPCC
SPL.JB:! BLOCK	1		;JOB INFORMATION
	SP.NHW==-1,,0		;NUMBER OF HEADER WORDS
	SP.JOB==0,,-1		;JOB NUMBER
SPL.FL:! BLOCK	1		;FLAGS
	SP.BAT==1B0		;JOB MAKE REQUEST IS A BATCH JOB
	SP.DFR==1B1		;REQUEST IS DEFERED
	SP.LOC==0,,-1		;STATION NUMBER
SPL.PG:! BLOCK	1		;NAME OF PROGRAM WRITING FILE
SPL.BV:! BLOCK	1		;CONTENTS OF FDBBYV
	SP.SIZ==0,,-1		;NUMBER OF PAGES IN FILE
SPL.EF:! BLOCK	1		;BYTE COUNT WHICH ADDRESSES TO EOF
SPL.FI:!			;BEGINNING OF FILESPEC FOR SPOOLED FILE

SPL.SZ:!			;SPOOL MSG SIZE

	DEPHASE

>  ;END IFN FTJSYS
SUBTTL	The LOGOUT Message - Function 27 (sent by IPCC)

IFN FTUUOS,<

;	!=======================================================!
;	!          LENGTH           !   FUNCTION 27 - LOGOUT    !
;	!-------------------------------------------------------!
;	!	!  JOB NUMBER       !  JBTLOC(J)  !    FLAGS    !
;	!=======================================================!

	PHASE	0

LGO.HD:! BLOCK	1		;THE HEADER FROM IPCC
LGO.JB:! BLOCK	1		;USERS JOB NUMBER
	LG.STR==177000,,0	;BATCH STREAM NUMBER
	LG.JOB==777,,0		;THE JOB NUMBER
	LG.LOC==777B26		;THE CURRENT LOCATION
	LG.BAT==1B27		;THIS IS A BATCH JOB
	LG.DFR==1B28		;DEFERRED MODE SPOOLING
	LG.BSS==1B29		;BATCH STREAM NUMBER SET

LGO.SZ:!			;SIZE OF THE LOGOUT MESSAGE

	DEPHASE

>  ;END IFN FTUUOS

IFN FTJSYS,<

;	!=======================================================!
;	!                 FUNCTION 27 - LOGOUT                  !
;	!-------------------------------------------------------!
;	!    NO. OF HEADER WORDS    !        JOB NUMBER         !
;	!-------------------------------------------------------!
;	!           FLAGS           !      STATION NUMBER       !
;	!=======================================================!

	PHASE 0

LGO.HD:! BLOCK	1		;HEADER FROM IPCC
LGO.JB:! BLOCK	1		;JOB INFORMATION
	LG.NHW==-1,,0		;NUMBER OF HEADER WORDS
	LG.JOB==0,,-1		;JOB NUMBER

LGO.FL:! BLOCK	1		;FLAG WORD
	LG.BAT==1B0		;THIS WAS A BATCH JOB
	LG.DFR==1B1		;DEFERRED MODE SPOOLING
	LG.LOC==0,,-1		;JOBS STATION NUMBER

LGO.SZ:!			;SIZE OF THE LOGOUT MESSAGE

	DEPHASE

>  ;END IFN FTJSYS
	SUBTTL	MONITOR LOGIN MESSAGE PROCESSOR


TOPS10	<
		PHASE	0

	LGN.HD:! BLOCK	1	;MESSAGE HEADER  (LEN,,TYPE)
	LGN.JB:! BLOCK	1	;JOB DATA (SAME AS LGO.JB)
	LGN.US:! BLOCK	2	;SIXBIT USER NAME
	LGN.PV:! BLOCK	1	;USER PRIV WORD
	LGN.TT:! BLOCK	1	;USER TTY NUMBER (SIXBIT/TTYxxx/)

		DEPHASE

> ;END TOPS10 CONDITIONAL
	SUBTTL	TAPE ONLINE MESSAGE Function 31 (sent by IPCC)


TOPS10 <

;	!=======================================================!
;	!	Length		!	Function code		!
;	!-------------------------------------------------------!
;	!		Device Name (Sixbit)			!
;	!-------------------------------------------------------!
;	!					!Device Type	!
;	!=======================================================!


		PHASE	0

	.TONHD:! BLOCK	1		;TAPE ONLINE MESSAGE HEADER
	.TONDV:! BLOCK	1		;TAPE ONLINE DEVICE
	.TONST:! BLOCK	1		;TAPE ONLINE DEVICE TYPE
	    TON.TY==77			;DEVICE TYPE

		DEPHASE
>
	SUBTTL	THE DEVICE STATUS UPDATE MESSAGE - FUNCTION 31


;	!======================================================	!
;	\							\
;	\		THE MESSAGE HEADER			\
;	\							\
;	!=======================================================!
;	\							\
;	\		THE REQUESTED OBJECT BLOCK		\
;	\	    (including queue/port/service name)		\	[1271]
;	!=======================================================!
;	!		THE DEVICE STATUS CODE			!
;	!=======================================================!


		PHASE	MSHSIZ		;STANDARD MESSAGE HEADER

	STU.RB:! BLOCK	OBJ.SQ		;[1271] The object block you want
	STU.CD:! BLOCK	1		;THE DEVICE STATUS CODE
	STU.SZ:!

		DEPHASE
	SUBTTL	TAPE DEASSIGN/DISMOUNT MESSAGE (IPCC FUNCTION 34)



;	!=======================================================!
;	!	3		!	     34			!
;	!-------------------------------------------------------!
;	!	        SIXBIT DEVICE NAME			!
;	!-------------------------------------------------------!
;	!		   DEVICE TYPE				!
;	!-------------------------------------------------------!
;	!		     JOB NUMBER				!
;	!=======================================================!


		PHASE	0

	.TDHDR:! BLOCK	1		;HEADER
	.TDDEV:! BLOCK	1		;SIXBIT DEVICE NAME
	.TDDVT:! BLOCK	1		;DEVICE TYPE
	.TDJBN:! BLOCK	1		;USER JOB NUMBER

		DEPHASE
SUBTTL	Job reset message (IPCC function 37)


;	!=======================================================!
;	!	    2		    !	        37		!
;	!-------------------------------------------------------!
;	!	        	Job number			!
;	!=======================================================!

		PHASE	0

	.RSTHD:! BLOCK 	1		;MESSAGE HEADER
	.RSTJB:! BLOCK	1		;JOB NUMBER

		DEPHASE
	SUBTTL	Disk unit ATTACH/DETACH Message (IPCC FCN 42/43)

;	!=======================================================!
;	!	4		!	     42/43		!
;	!-------------------------------------------------------!
;	!	        SIXBIT UNIT NAME			!
;	!-------------------------------------------------------!
;	!		   PRIMARY PORT				!
;	!-------------------------------------------------------!
;	!		     SECONDARY PORT			!
;	!=======================================================!

		PHASE	0

	.ATTHD:! BLOCK 	1		;MESSAGE HEADER
	.ATTUN:! BLOCK	1		;AFFECTED UNIT NAME
	.ATTPR:! BLOCK	1		;NEW PRIMARY PORT
	.ATTSC:! BLOCK	1		;NEW SECONDARY PORT OR 0

		DEPHASE
	SUBTTL	Disk unit XCHANGE Message (IPCC function 44)

;	!=======================================================!
;	!	3		!	  .IPCXC (44)		!
;	!-------------------------------------------------------!
;	!		First unit name in SIXBIT		!
;	!-------------------------------------------------------!
;	!		Second unit name in SIXBIT		!
;	!=======================================================!

		PHASE	0

	.XCHHD:! BLOCK 	1		;MESSAGE HEADER
	.XCHU1:! BLOCK	1		;FIRST UNIT NAME IN SIXBIT
	.XCHU2:! BLOCK	1		;SECOND UNIT NAME IN SIXBIT

		DEPHASE
SUBTTL	Structure removal message (IPCC function 45)


;	!=======================================================!
;	!	2		!	  .IPCRM (45)		!
;	!-------------------------------------------------------!
;	!		Structure name in SIXBIT		!
;	!=======================================================!

		PHASE	0

	.REMHD:! BLOCK 	1		;MESSAGE HEADER
	.REMSN:! BLOCK	1		;STRUCTURE NAME IN SIXBIT

		DEPHASE
SUBTTL	Magtape unit accessible message (IPCC function 46)


;	!=======================================================!
;	!	2		!	  .IPCMT (45)		!
;	!-------------------------------------------------------!
;	!	     Magtape unit name in SIXBIT		!
;	!=======================================================!

		PHASE	0

	.MTAHD:! BLOCK 	1		;MESSAGE HEADER
	.MTAUN:! BLOCK	1		;MAGTAPE UNIT NAME IN SIXBIT

		DEPHASE
	SUBTTL	NODE-WENT-AWAY NOTIFICATION MESSAGE (FUNCTION 36)



;	!=======================================================!
;	!							!
;	!		MESSAGE HEADER				!
;	!							!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!
;	!		ARGUMENT COUNT				!
;	!-------------------------------------------------------!


;	THE ONLY BLOCK DEFINED FOR THIS MESSAGE IS .OROBJ
;	IT DEFINES THE NODE WHICH WENT OFFLINE

;	The .OFLAG word will contain a port,,line # if the node was
;	an IBM remote. It will be zero otherwise.

;	Also: If the %ONLINE bit is lit in .MSFLG then this msg
;	      is a Node-Online Message

	%ONLINE==1B3		;MAKE THIS A NODE ONLINE MESSAGE
	SUBTTL	.QOCQE - CREATE QUEUE ENTRY MESSAGE (FUNCTION 37)

;	!=======================================================!
;	!							!
;	!		MESSAGE HEADER				!
;	!							!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!
;	!		ARGUMENT COUNT				!
;	!-------------------------------------------------------!


	;THE MESSAGE BLOCK TYPES ARE:

	.QCFIL==10		;FILE SPEC BLOCK

	;This block is the Standard Galaxy FD with .QCFIL put in
	;the right half of the .FDLEN word.

	.QCCOP==11		;NUMBER OF COPIES BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCCOP			!
;	!-------------------------------------------------------!
;	!	THE NUMBER OF COPIES OF THE FILE TO		!
;	!		   BE OUTPUT				!
;	!-------------------------------------------------------!

	.QCFRM==12		;FORMS TYPE BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCFRM			!
;	!-------------------------------------------------------!
;	!	THE FORMS TYPE YOU WANT (SIXBIT)		!
;	!-------------------------------------------------------!

	.QCPTP==13		;FILE FORMAT BLOCK (ASCII, FORTRAN, ETC)

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCPTP			!
;	!-------------------------------------------------------!
;	!  THE FILE FORMAT TYPE (SEE .FPINF - FP.FFF)		!
;	!-------------------------------------------------------!

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE

	.QCODP==14		;/DISP: OUTPUT DISPOSITION BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCODP			!
;	!-------------------------------------------------------!
;	!  OUTPUT FILE DISPOSITION %PRESERVE or %DELETE		!
;	!-------------------------------------------------------!

		%PRESERVE==0	;DONT DELETE FILE AFTER PROCESSING
		%DELETE==1	;DELETE FILE AFTER PROCESSING
		%RENAME==2	;RENAME THE FILE INTO DSK:[3,3]

	.QCUNT==15		;UNIT TYPE (/UNIT:, /LOWER, /UPPER)

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCUNT			!
;	!-------------------------------------------------------!
;	!     DEVICE ATTRUBUTES ( %LOWER,%UPPER,%GENRC,%PHYCL)	!
;	!-------------------------------------------------------!

	.QCAFT==16		;/AFTER BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCAFT			!
;	!-------------------------------------------------------!
;	!	/AFTER TIME (IN UDT FORMAT)			!
;	!-------------------------------------------------------!

	.QCLIM==17		;LIMIT BLOCK (/TIME:, /PAGES:, ETC)

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCLIM			!
;	!-------------------------------------------------------!
;	!   LIMIT BLOCK (# OF PAGES,ETC or TIME IN SECS)	!
;	!-------------------------------------------------------!

	.QCUNI==20		;/UNIQUE BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCUNI			!
;	!-------------------------------------------------------!
;	!	/UNIQUE: VALUE (%EQUNO or %EQUYE)		!
;	!-------------------------------------------------------!

	.QCRES==21		;/RESTART BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCRES			!
;	!-------------------------------------------------------!
;	!	/RESTART: VALUE (%EQRNO or %EQRNY)		!
;	!-------------------------------------------------------!

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE

	.QCLOG==22		;/OUTPUT: (LOG,NOLOG,ERROR)

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCLOG			!
;	!-------------------------------------------------------!
;	!   /OUTPUT: VALUE (%EQONL or %EQOLG or %EQOLE)		!
;	!-------------------------------------------------------!

	.QCACT==23		;/ACCOUNT: ACCOUNT STRING BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH 	!	.QCACT			!
;	!-------------------------------------------------------!
;	\							\
;	\	USERS ACCOUNT STRING IN ASCIZ			\
;	\							\
;	!-------------------------------------------------------!

	.QCQUE==24		;QUEUE TYPE BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCQUE			!
;	!-------------------------------------------------------!
;	!   QUEUE TYPE (SEE GLXMAC OBJ.TY FIELD)		!
;	!-------------------------------------------------------!

	.QCNOD==25		;/NODE: DESTINATION NODE BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCNOD			!
;	!-------------------------------------------------------!
;	!   DESTINATION NODE NUMBER OR SIXBIT NODE NAME		!
;	!-------------------------------------------------------!

	.QCNAM==26		;USERS NAME BLOCK

;	!-------------------------------------------------------!
;	!  BLOCK LENGTH 	   !	.QCNAM			!
;	!-------------------------------------------------------!
;	\							\
;	\   USERS NAME (ASCIZ ON -20, SIXBIT ON THE -10)	\
;	\							\
;	!-------------------------------------------------------!

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE


	.QCOID==27		;USERS NUMBER BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCOID			!
;	!-------------------------------------------------------!
;	! USERS ID (36 BIT USER ID ON -20, PPN ON -10)		!
;	!-------------------------------------------------------!


	.QCNOT==30		;/NOTIFY BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCNOT			!
;	!-------------------------------------------------------!
;	!	/NOTIFY VALUE (%NOTTY, %NOTML, %NOTJB)		!
;	!-------------------------------------------------------!


	.QCBLT==31		;/BATLOG: BLOCK

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCBLT			!
;	!-------------------------------------------------------!
;	!  /BATLOG VALUE (%BAPND or %BSCDE or %BSPOL)		!
;	!-------------------------------------------------------!


	.QCJBN==32		;JOB NAME

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCJBN			!
;	!-------------------------------------------------------!
;	!		SIXBIT JOB NAME				!
;	!-------------------------------------------------------!


	.QCCDI==33		;CONNECTED DIRECTORY BLOCK

TOPS20	<
;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCCDI			!
;	!-------------------------------------------------------!
;	!	36 BIT CONNECTED DIRECTORY NUMBER		!
;	!-------------------------------------------------------!
>

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE


TOPS10	<
;	!-------------------------------------------------------!
;	!   BLOCK LENGTH 2-6	!	.QCCDI			!
;	!-------------------------------------------------------!
;	\							\
;	\		USER PATH BLOCK				\
;	\		 UP TO 6 WORDS				\
;	\							\
;	!-------------------------------------------------------!
>

	.QCNTE==34		;/NOTE: BLOCK

;	!-------------------------------------------------------!
;	!  BLOCK LENGTH 1-2	!	.QCNTE			!
;	!-------------------------------------------------------!
;	\							\
;	\		1 TO 12 SIXBIT CHARACTERS		\
;	\							\
;	!-------------------------------------------------------!


	.QCBGN==35		;/BEGIN: BLOCK

;	!-------------------------------------------------------!
;	!  BLOCK LENGTH (2)	!	.QCBGN			!
;	!-------------------------------------------------------!
;	!	BEGINNING PAGE NUMBER FOR STARTING OUTPUT	!
;	!-------------------------------------------------------!


	.QCPRI==36		;/PRIORITY: BLOCK

;	!-------------------------------------------------------!
;	!  BLOCK LENGTH (2)	!	.QCPRI			!
;	!-------------------------------------------------------!
;	!		PRIORITY (1 TO 20 OR 1 TO 77)		!
;	!-------------------------------------------------------!

	.QCFRR==37		;FREE RUNNING DEVICE LIMIT BLOCK (IE DBMS)

;	!-------------------------------------------------------!
;	!  LENGTH 1 - EQLMSZ	!	.QCFRR			!
;	!-------------------------------------------------------!
;	\							\
;	\		1 TO EQLMSZ LIMIT WORDS			\
;	\							\
;	!-------------------------------------------------------!

	.QCSNA==42		;FILE FORMAT BLOCK (SNA-WORKSTATIONS)

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCSNA	        	!
;	!-------------------------------------------------------!
;	!	  THE FILE FORMAT TYPE (SEE .FPINF)		!
;	!-------------------------------------------------------!
	SUBTTL	RECOGNIZE MESSAGE (FUNCTION .QOREC - 40)

TOPS10<

;	!=======================================================!
;	/							/
;	/		MESSAGE HEADER				/
;	/							/
;	!-------------------------------------------------------!
;	!		BLOCK COUNT (1)				!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!


	;THE ONLY BLOCK DEFINED IS .RECDV WHICH CONTAINS THE
	;SIXBIT DEVICE NAME

	.RECDV==3		;DEFINE THE DEVICE NAME BLOCK TYPE

;	!-------------------------------------------------------!
;	!	2		!	.RECDV			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!=======================================================!

	PHASE	0

.RECDN:! BLOCK	1		;SIXBIT DEVICE NAME
.RECSZ:!			;SIZE OF THE BLOCK

	DEPHASE

>;END TOPS10
	SUBTTL	Tape status message (.QOTST functions 41)

TOPS10<
;	!=======================================================!
;	/	EXPANDED GALAXY MESSAGE HEADER			/
;	!-------------------------------------------------------!

	;There are 3 blocks defined for this message: .TLSTA & .DSSTA
	;  and .STSTS.

;The Device Status Block (.STSTS)

	.STSTS==10		;UNIT STATUS BLOCK

;	!-------------------------------------------------------!
;	!	3		!	.STSTS			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!-------------------------------------------------------!
;	!		DEVICE STATUS BITS			!
;	!-------------------------------------------------------!

		PHASE	0

	.STUNT:! BLOCK	1		;UNIT NAME IN SIXBIT
	.STFLG:! BLOCK	1		;UNIT STATUS BITS (DEVICE DEPENDENT)
		ST.OFL==1B0		;ON IF UNIT IS OFF-LINE
		ST.LOK==1B1		;ON IF UNIT IS WRITE-LOCKED
		TS.DEN==77B8		;ACTUAL DENSITY OF TAPE (SEE UUOSYM)
		TS.LAB==77B14		;TAPE LABEL TYPE (SEE UUOSYM)
	.STLEN:!			;UNIT STATUS BLOCK LENGTH

		DEPHASE


;The tape volume status block (.TLSTA)

	.TLSTA==12		;TAPE STATUS BLOCK TYPE

;	!-------------------------------------------------------!
;	!	2		!	.TLSTA			!
;	!-------------------------------------------------------!
;	!                 SIXBIT VOLUME ID                      !
;	!=======================================================!

			PHASE	0

	.TLVOL:! BLOCK	1		;SIXBIT VOLUME ID
	.TLSIZ:!			;TAPE STATUS BLOCK SIZE
			DEPHASE

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE


;The disk structure status block (.DSSTA)

	.DSSTA==14		;DISK STATUS BLOCK TYPE

;	!-------------------------------------------------------!
;	!	6		!	.DSSTA			!
;	!-------------------------------------------------------!
;	!		SIXBIT HOME BLOCK ID			!
;	!-------------------------------------------------------!
;	!		SIXBIT NEXT VOL ID			!
;	!-------------------------------------------------------!
;	!		SIXBIT PREVIOUS VOL ID			!
;	!-------------------------------------------------------!
;	!		SIXBIT STRUCTURE NAME			!
;	!-------------------------------------------------------!
;	!		     OWNER PPN      			!
;	!=======================================================!

			PHASE	0
	.DSHID:! BLOCK	1		;HOME BLOCK ID IN SIXBIT
	.DSNXV:! BLOCK	1		;NEXT VOLUME IN STRUCTURE IN SIXBIT
	.DSLUN:! BLOCK	1		;LOGICAL UNIT NUMBER
	.DSSNM:! BLOCK	1		;STRUCTURE NAME IN SIXBIT
	.DSPPN:! BLOCK	1		;OWNER PPN
	.DSSIZ:!			;DISK STATUS BLOCK SIZE
			DEPHASE
>;END TOPS10
	SUBTTL	TAPE DRIVE UNLOAD MESSAGE (FUNCTION .QOUNL - 42)

	;ALSO	TAPE DRIVE REWIND MESSAGE (FUNCTION .QOREW - 47)


;	!=======================================================!
;	/							/
;	/		MESSAGE HEADER				/
;	/							/
;	!-------------------------------------------------------!
;	!		BLOCK COUNT (1)				!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!


	;THE ONLY BLOCK DEFINED IS .RECDV WHICH CONTAINS THE
	;SIXBIT DEVICE NAME

;	!-------------------------------------------------------!
;	!	2		!	.RECDV			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!=======================================================!
	SUBTTL	Volume Mounted message to tape labeller (.QOVMN = 43)

TOPS10<

;	!=======================================================!
;	/							/
;	/		MESSAGE HEADER				/
;	/							/
;	!-------------------------------------------------------!
;	!		BLOCK COUNT (2)				!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!

	;ONE BLOCK IS .RECDV WHICH CONTAINS THE
	;SIXBIT DEVICE NAME

;	!-------------------------------------------------------!
;	!	2		!	.RECDV			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!=======================================================!

	;THERE IS ONE VOLUME (SET) BLOCK ATTACHED TO THE MESSAGE
	;THIS BLOCK DESCRIBE THE INITIAL VOLUME BEING GIVEN TO THE
	;USER AND THE FIRST VOLUME IN THE VOLUME SET

	.VOLMN==4		;BLOCK TYPE FOR THE VOLUME BLOCK

;	!-------------------------------------------------------!
;	!         SIXBIT VOLUME ID FOR MOUNTED VOLUME		!
;	!-------------------------------------------------------!
;	!        SIXBIT VOLUME ID FOR FIRST VOLUME IN SET	!
;	!-------------------------------------------------------!
;	!LABEL TYPE!WLOCK!JOB #!				!
;	!-------------------------------------------------------!

	PHASE	0		;DEFINE THE CONTENTS OF THE BLOCK

.VMNIV:! BLOCK	1		;SIXBIT NAME OF INITIAL VOLUME
.VMNFV:! BLOCK	1		;SIXBIT NAME OF FIRST VOL IN SET
.VMNIN:! BLOCK	1		;INFORMATION ABOUT THE VOL SET
	VI.LTY==77B5		;LABEL TYPE
	VI.WLK==1B6		;WRITE LOCKED IF 1
	VI.JOB==777B17		;JOB NUMBER OF REQUESTOR
.VMNSZ:!			;SIZE OF THE BLOCK (WITHOUT HEADER)

>;END TOPS10
	SUBTTL	Volume dismounted message to tape labeller (.QOVDM = 44)

TOPS10<

;	!=======================================================!
;	/							/
;	/		MESSAGE HEADER				/
;	/							/
;	!-------------------------------------------------------!
;	!		BLOCK COUNT (1)				!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!

	;THE ONLY BLOCK DEFINED IS .RECDV WHICH CONTAINS THE
	;SIXBIT DEVICE NAME

;	!-------------------------------------------------------!
;	!	2		!	.RECDV			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!=======================================================!
>;END TOPS10
	SUBTTL	Volume switch request from tape labeller (.QOVSR = 45)

TOPS10<

;	!=======================================================!
;	/							/
;	/		MESSAGE HEADER				/
;	/							/
;	!-------------------------------------------------------!
;	!		BLOCK COUNT (2)				!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!

	;ONE BLOCK IS A .RECDV BLOCK WHICH HAS THE
	;SIXBIT DEVICE NAME OF THE DRIVE NEEDING A NEW VOLUME

;	!-------------------------------------------------------!
;	!	2		!	.RECDV			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!=======================================================!

	;THE OTHER BLOCK DESCRIBES WHICH VOLUME OF THE SET IS
	;NEEDED BY THE USER ON THAT DRIVE

;	!-------------------------------------------------------!
;	!	2		!	.RLVOL			!
;	!-------------------------------------------------------!
;	!WRT!		RELATIVE VOLUME CODE			!
;	!=======================================================!

	.RLVOL==4

	PHASE	0

.RLVCD:! BLOCK	1			;SPACE FOR THE RELATIVE VOLUME CODE
	%VWRT==1B0			;WANT TO USE 'NEXT' VOLUME FOR WRITING
	RLV.CD==7			;WHERE THE CODE GOES
	  %RLNXT==1			;GET THE NEXT VOLUME
	  %RLPRV==2			;GET THE PREVIOUS VOLUME
	  %RLFIR==3			;GET THE FIRST VOLUME OF THE SET

.RLVSZ:!				;SIZE OF THIS BLOCK

	DEPHASE

>;END TOPS10
	SUBTTL Volume Switch Directive From MDA to Tape Labeler (.QOVSD - 46)

TOPS10<

;This message is sent by MDA in response to a volume switch request
;	message from the tape labeller.  It directs the labeller
;	to continue the labelling process on the same drive
;	or on another drive which the OPR/MDA has chosen

;	!=======================================================!
;	/							/
;	/		MESSAGE HEADER				/
;	/							/
;	!-------------------------------------------------------!
;	!		BLOCK COUNT (1)				!
;	!-------------------------------------------------------!
;	!		   FLAG WORD				!
;	!-------------------------------------------------------!

	;Flags for this message

	%VEOF==1B0			;There are no more volumes in the set
					;give EOF to the requestor
	%VABT==1B1			;OPR has aborted the volume
					;switch request
	%VTMV==1B2			;Too many volumes in the
					;volume set

	;There are two blocks passed on this message
	;One is the Volume set directive block which describes
	;the two drives being swapped, and the other is a Volume
	;info block describing the new volume in use, its label type,
	;and its write enable/lock status


	.VSDBL==12		;VOLUME SET DIRECTIVE BLOCK

;	!-------------------------------------------------------!
;	!	4		!	.VSDBL			!
;	!-------------------------------------------------------!
;	!	INITIAL DRIVE NAME IN SIXBIT			!
;	!-------------------------------------------------------!
;	!	CURRENT DRIVE NAME IN SIXBIT			!
;	!-------------------------------------------------------!
;	!		CURRENT VOLUME NAME			!
;	!=======================================================!


		PHASE	0

	.VSDID:! BLOCK	1		;INITIAL DRIVE NAME
	.VSDCD:! BLOCK	1		;CURRENT DRIVE NAME

	VSDLEN:!			;BLOCK LENGTH

		DEPHASE

>;END TOPS10
	SUBTTL	Request for System Catalog Information (.QORCT)

	;This message is sent to the Tape Labeler Requesting information
	;from the System Catalog (STRLST for now).

;	!=======================================================!
;	\							\
;	\		Standard Galaxy Header			\
;	\							\
;	!-------------------------------------------------------!


	;There is one block defined for this message, .RCTVS

	.RCTVS==12		;Asciz Volume Set Name

;	!-------------------------------------------------------!
;	!	Length		!	.RCTVS			!
;	!-------------------------------------------------------!
;	\							\
;	\		Volume Set Name in Asciz		\
;	\							\
;	!-------------------------------------------------------!


		PHASE	0
	.RCTAV:	BLOCK	1	;VOLUME SET NAME
	.RCTLN:			;MINIMUM BLOCK LENGTH
		DEPHASE
	SUBTTL	Catalog information message (.QOCAT)

;	This message is sent from the system catalog to QUASAR
;	in response to a .QORCT message.

;	!=======================================================!
;	\							\
;	\		Standard Galaxy Header			\
;	\							\
;	!-------------------------------------------------------!

;	This message consists of at least two argument blocks.
;	The first is the .RCTVS block, which tells the
;	volume set being "looked up" in the catalog.

;	!-------------------------------------------------------!
;	!	Length		!	.RCTVS			!
;	!-------------------------------------------------------!
;	\							\
;	\		Volume Set Name in Asciz		\
;	\							\
;	!-------------------------------------------------------!

;	The second is the .CVSFS block, which describes
;	the information in the catalog about the volume set
;	asked for.  This second block is the last block if
;	the catalog contains no information about the volume set
;	(in this case, the error bit is on)

;	!-------------------------------------------------------!
;	!	Length		!	.CVSFS			!
;	!-------------------------------------------------------!
;	!			!	# of volumes		!
;	!-------------------------------------------------------!
;	!		Owner's PPN				!
;	!-------------------------------------------------------!
;	\		Owner's name 				\
;	\			(SIXBIT)			\
;	!-------------------------------------------------------!

	.CVSFS==.RCTVS+1		;Block type

	PHASE	0			;At end of Block header
.CVSNV:! BLOCK	1			;# of volumes
	CVS.NV==RHMASK			;Number of volumes
					;(# of .CVLPR blocks following)
.CVSOW:! BLOCK	1			;PPN of owner
.CVSON:! BLOCK	EQNMSZ			;Owner name
.CVSLN:!				;Length of the block
	DEPHASE

	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE

;	These blocks are generally followed by (n) .CVLPR blocks,
;	one for each volume in the volume set

;	!-------------------------------------------------------!
;	!	Length		!	.CVLPR			!
;	!-------------------------------------------------------!
;	!		Volume ID (SIXBIT)			!
;	!-------------------------------------------------------!
;	!					    !Kon!Uni!Cls!
;	!-------------------------------------------------------!

	.CVLPR==.CVSFS+1		;Block type

	PHASE	0			;After arg block header

.CVLID:! BLOCK	1			;Volume ID (SIXBIT)
.CVLST:! BLOCK	1			;Status bits
	CVL.KT==7000			;Kontroller type
	CVL.UT==70			;Unit type
	CVL.CL==7			;Class (?)
.CVLLN:!				;Length of block

	DEPHASE
	SUBTTL	INTERNAL CATALOG CACHE STRUCTURE

;	!-------------------------------------------------------!
;	!		SIXBIT VOL SET NAME			!
;	!-------------------------------------------------------!
;	!		   OWNER ID				!
;	!-------------------------------------------------------!
;	!		  VOLUME COUNT				!
;	!-------------------------------------------------------!
;	!		SIXBIT VOL NAME # 1			!
;	!-------------------------------------------------------!
;	!		VOLUME RESOURCE NUMBER			!
;	!-------------------------------------------------------!
;				.
;				.
;				.
;	!-------------------------------------------------------!
;	!		SIXBIT VOL NAME # n			!
;	!-------------------------------------------------------!
;	!		VOLUME RESOURCE NUMBER			!
;	!-------------------------------------------------------!


		PHASE	0

	.CTVSN:! BLOCK	1		;SIXBIT VOLUME SET NAME
	.CTOID:! BLOCK	1		;OWNERS PPN
	.CTNAM:! BLOCK	EQNMSZ		;OWNER'S NAME
	.CTBLD:! BLOCK	1		;BUILD CODE
	   .CTCAT==0			   ;FROM CATALOG (STRLST)
	   .CTQSR==1			   ;FROM QUASAR
	.CTCNT:! BLOCK	1		;VOLUME COUNT
	.CTVOL:!			;VOLUME BLOCK STARTING OFFSET

	CATLEN:!			;HEADER LENGTH
		DEPHASE

	;Volume Block Description

		PHASE	0

	.CTVID:! BLOCK	1		;VOLUME ID (SIXBIT)
	.CTRSN:! BLOCK	1		;VOLUME RESOURCE NUMBER
	CATBLN:!			;CATALOG BLOCK LENGTH

		DEPHASE
	SUBTTL	BUILD A STRUCTURE MESSAGE (.QOBLD)
	;
	;	DISMOUNT A STRUCTURE MESSAGE (.QODSM)

	;This message is sent to the Tape Labeler to define what volumes
	;comprise a structure

;	!=======================================================!
;	\							\
;	\		Standard Galaxy Header			\
;	\							\
;	!-------------------------------------------------------!

;	There are two flags in .OFLAG, for the /REMOVE and /NOCHECK switchs
;	The flags are defined in ORNMAC, and passed in to QUASAR and
;	out to the tape labeler.
;	The bits are .DMRMV for /REMOVE and .DMNCK for /NOCHECK.
;	One additional field is only of interest to QUASAR and PULSAR.
;	and is defined here. It indicates the number of queue requests
;	requiring a structure.

	.DMNRQ==7777B35		;NUMBER OF QUEUE REQUESTS REQUIRING STR


	;There are 2 blocks defined for this message, .BLDSN
	;   and .BLDUN

	.BLDSN==5		;STRUCTURE NAME BLOCK

;	!-------------------------------------------------------!
;	!	3		!	.BLDSN			!
;	!-------------------------------------------------------!
;	!		SIXBIT STRUCTURE NAME			!
;	!-------------------------------------------------------!
;	!		OWNERS PPN				!
;	!-------------------------------------------------------!


		PHASE	0
	.BLDNM:! BLOCK	1		;SIXBIT STRUCTURE NAME
	.BLDOW:! BLOCK	1		;OWNERS PPN
	.BLDLN:!			;BLOCK LENGTH
		DEPHASE


	.BLDUN==7		;UNIT(S) BLOCK

;	!-------------------------------------------------------!
;	!	n		!	.BLSUN			!
;	!-------------------------------------------------------!
;	!		SIXBIT UNIT NAME #1			!
;	!-------------------------------------------------------!
;	!	     SIXBIT HOME BLOCK NAME #1			!
;	!-------------------------------------------------------!
;	\			.				\
;	\-------------------------------------------------------\
;	\			.				\
;	\-------------------------------------------------------\
;	\			.				\
;	\-------------------------------------------------------\
;	!		SIXBIT UNIT NAME # n			!
;	!-------------------------------------------------------!
;	!	     SIXBIT HOME BLOCK NAME #n			!
;	!-------------------------------------------------------!
	SUBTTL	MDA ACK MESSAGE (.QOACK)

	;This message is sent by the Tape Labeler to QUASAR to ACK
	;certain actions requested by QUASAR.


;	!=======================================================!
;	!	LENGTH		   !	.QOACK			!  .MSTYP
;	!-------------------------------------------------------!
;	!							!  .MSCOD
;	!-------------------------------------------------------!
;	!NAK!			   !		Ack Type	!  .MSFLG
;	!-------------------------------------------------------!
;	!			0				!  .OFLAG
;	!-------------------------------------------------------!
;	!		BLOCK COUNT				!  .OARGC
;	!-------------------------------------------------------!


	;The .MSFLG word contains the NAK bit (sign bit). If this bit is
	; on, the the message is a NAK.
	;The AK.TYP field describes what flavor of ACK/NAK this message is
	;In addition, the message may have some number (0-n) of qualifier
	; argument blocks tacked on.

	;FIELDS OF .MSFLG:
	AK.NAK==MF.FAT			;THIS MESSAGE IS A NAK, NOT AN ACK
	AK.TYP==RHMASK			;FIELD FOR TYPE OF ACK/NAK
	;The valid ACK/NAK flavors are:
		%MOUNT==1	;MOUNT STRUCTURE ACK
		%DSMNT==2	;DISMOUNT STRUCTURE ACK
		%CATLG==3	;CATALOG REQUEST ACK (ONLY ON ERROR)
		%ADSTR==4	;ADD STRUCTURE TO SEARCH LIST ACK
		%RMSTR==5	;REMOVE STRUCTURE FROM A SEARCH LIST ACK
		%MNTNO==6	;MOUNT STRUCTURE ACK (NO OWNER PPN)

	;The allowable argument blocks follow:

	;	.RCTVS			;VOLUME SET BLOCK

		.ACUFD==.RCTVS+1	;QUALIFIER FOR ADD-TO-SEARCH-LIST ACK
					;INDICATES NO UFD CREATED ON STR
					;LENGTH = 1

		.ACQTO==.ACUFD+1	;QUALIFIER FOR REMOVE-FROM-SEARCH-LIST NAK
					;INDICATES USER IS OVER QUOTA BY N
					;BLOCKS. N IS THE ARG.DA WORD OF THE BLOCK
					;LENGTH = 2
	SUBTTL	ADD/REMOVE A STRUCTURE TO A USERS SEARCH LIST MESSAGE (.QOASL)


	;This message is sent to the tape labeler to add a structure to that
	;users search list. The flag bits are stored in .OFLAG.
	;The only block defined for this message is .BLDSN


	;If bit ASL.RM is lit in .OFLAG, Then this is a request
	;to remove the structure from the users search list
	;If bit ASL.RM is on, then ASL.NQ may be lit indicating
	;No quota check is to be performed.  This is lit when MDA
	;wants to take back a structure to keep deadlocks
	;straight, and can't be bothered with quota checks.


;	!=======================================================!
;	!	10		!	.QOASL			!  .MSTYP
;	!-------------------------------------------------------!
;	!							!  .MSCOD
;	!-------------------------------------------------------!
;	!							!  .MSFLG
;	!-------------------------------------------------------!
;	!WL!NC!PS!SA!NQ!			!JOB NUMBER	!  .OFLAG
;	!-------------------------------------------------------!


		ASL.WL==1B0		;ADD STRUCTURE 'WRITE LOCKED'
		ASL.NC==1B1		;ADD STRUCTURE 'NO CREATE'
		ASL.PS==1B2		;ADD STRUCTURE 'PASSIVE'
		ASL.SA==1B3		;ADD STRUCTURE 'SINGLE ACCESS'
		ASL.RM==1B4		;REMOVE THIS STR FROM USER SEARCH LIST
		ASL.NQ==1B5		;IF REMOVING, DON'T ENFORCE QUOTAS
		ASL.AR==1B6		;ALWAYS RECOMPUTE
		ASL.NR==1B7		;NEVER RECOMPUTE
		ASL.JB==777B35		;USERS JOB NUMBER
	SUBTTL	DISMOUNT/DEALLOCATE A VOLUME SET MESSAGE (.QODVS)

	;This Message is sent by the user to dismount or deallocate a
	;volume set

;	!=======================================================!
;	\							\
;	\		Standard Galaxy Msg Header		\
;	\							\
;	!-------------------------------------------------------!
;	!		Message flags (.OFLAG)			!
;	!-------------------------------------------------------!
;	!		Block count (.OARGC)			!
;	!_______________________________________________________!


;The allowable message flags are:

;	MM.DLC==MM.DLC			;Remove from jobs allocation state


	;There are two blocks defined for this message, .RECDV (Device Name)
	;   and .RCTVS (Volume Set Name)

	;Either type of block can be sent, but not both. On Deallocate, if
	;   .RCTVS is sent, the volume set name is also treated as a logical
	;   name. If the volume set name does not match for this user, the
	;   first 6 characters are treated as a logical name and this is used
	;   for a logical name search.

;.RECDV defined in Recognize message

;	.RECDV==3		;DEFINE THE DEVICE NAME BLOCK TYPE

;	!-------------------------------------------------------!
;	!	2		!	.RECDV			!
;	!-------------------------------------------------------!
;	!		SIXBIT DEVICE NAME			!
;	!=======================================================!

;	PHASE	0
;
;.RECDN:! BLOCK	1		;SIXBIT DEVICE NAME
;.RECSZ:!			;SIZE OF THE BLOCK
;
;	DEPHASE


;.RCTVS defined in Catalog message

;	.RCTVS==12		;Asciz Volume Set Name
;
;	!-------------------------------------------------------!
;	!	Length		!	.RCTVS			!
;	!-------------------------------------------------------!
;	\							\
;	\		Volume Set Name in Asciz		\
;	\							\
;	!-------------------------------------------------------!
;
;
;		PHASE	0
;	.RCTAV:	BLOCK	1	;VOLUME SET NAME
;	.RCTLN:			;MINIMUM BLOCK LENGTH
;		DEPHASE
	SUBTTL	.QOLAC - List allocations for a job
	SUBTTL	.QOALC - Prescan a control file for allocations

;This message is sent from QUASAR to the batch control file scanner
; (currently BATCON)
; to extract the batch job's required mountable
; device requirements before scheduling the stream
;This message is just a NEXTJOB message with an EQ already built,
; and all of the requisite FPs, and FDs attached
; In particular, the .EQRID field must be supplied.
	SUBTTL	.QOPRM - Response to .QOALC request

;This message is sent from the batch control file scanner
; to QUASAR after that process has performed pre-scanning of
; a control file for mountable device requirements

;The contents of this message are identical to the .QOMNT message
; except that the ME entries may have varying allocate/mount requirements
;Also, there is a bit defined in .OFLAG which indicates that
; there were no allocations found.
;The batch control file scanner extracts the Request
; ID from the EQ in the .QOALC message and places it in the .QOPRM
; message (in OFLAG, actually) so that QUASAR can line up the response
; with a waiting batch request

;	.OFLAG==.OFLAG			;Bits in the flag word
		PR.NON==1B0		;No allocations found
		PR.RID==RHMASK		;Request ID for identification
SUBTTL	.QOIDN - Tape Initialization Done message

;This message is set by PULSAR to QUASAR when a tape
; initialization sequence is finished.  The message tells QUASAR that
; the drive is now available for use.

;The message contains only one block. a .RECDV block
; which contains the drive name which is finished
	SUBTTL	LPTSPL forms change message (.QOFCH (63) )


;	!=======================================================!
;	\							\
;	\		Standard Galaxy Msg Header		\
;	\							\
;	!-------------------------------------------------------!
;	!		New forms type in sixbit (.OFLAG)	!
;	!-------------------------------------------------------!
;	!		Block count = 1 (.OARGC)		!
;	!_______________________________________________________!

;	!_______________________________________________________!
;	!	OBJ.SQ		!	.OROBJ			!
;	!_______________________________________________________!
;	\							\
;	\		OBJECT BLOCK				\
;	!_______________________________________________________!
	SUBTTL	IBMCOM Statistice message (.QOIBM)

;	!=======================================================!
;	\							\
;	\		Standard Galaxy Msg Header		\
;	\							\
;	!-------------------------------------------------------!
;	!		Statistics update code			!
;	!-------------------------------------------------------!


IFN FTDN60,<
	XP	FTIBMS,-1>	;Include IBM statistics
IFE FTDN60,<
	XP	FTIBMS,0>	;But only if IBMCOM is used

	;Possible statistics codes are:

		%TINP==1	;Termination batch requests   (CDRIVE)
		%TOUT==2	;Termination printer requests (LPTSPL)
		%TCNI==3	;Termination console input    (CDRIVE)
		%TCNO==4	;Termination console output   (LPTSPL)

		%EINP==5	;Emulation batch requests     (IBMSPL)
		%EOUT==6	;Emulation printer requests   (IBMSPL)
		%ECNI==7	;Emulation console input      (IBMSPL)
		%ECNO==8	;Emulation console output     (IBMSPL)
	SUBTTL	Common Parameters

;THE PARAMETERS DEFINED HERE ARE ONES THAT ARE NEEDED BY QUASAR BUT ARE
;SYSTEM DEPENDENT.  TO MINIMIZE FEATURE TESTS AND DUPLICATION OF ROUTINES,
;QUASAR PARAMETERS ARE USED AND EQUATED TO THE CORRECT SYSTEM VALUE.

;**NOTE: THESE VALUES ARE NOT TO BE CONSTRUED AS 'OPTIONS' AND ANY CHANGES
;		WILL CAUSE UNPREDICTABLE RESULTS.


	SYSPRM	ACC.KM,.ACREN,.CKAWT		;KILL/MODIFY ACCESS CODE
	SYSPRM	INT.PI,0,0			;IPCF INTERRUPT CHANNEL OR OFFSET
	SYSPRM	INT.PL,1,1			;IPCF PRIORITY INTERRUPT LEVEL
	SYSPRM	FSSBKS,200,1000			;STANDARD BLOCKSIZE
	SYSPRM	FSSFIB,2,1			;BLK. # OF 1ST INDEX BLK
SUBTTL	Random Macros

;DOSCHD is a macro which may be called to flag that something has
;	happened which might allow a scheduling pass to bear fruit.

DEFINE DOSCHD,<
	IFN <%%.MOD-<SIXBIT /QUASAR/>>,<EXTERN G$SCHD>
	SETOM	G$SCHD
>  ;END DEFINE DOSCHD
SUBTTL	Failsoft System Definitions

;I/O CHANNELS
	ND	CMQ1,10			;FIRST MASTER QUEUE CHANNEL
	ND	CMQ2,11			;SECOND MASTER QUEUE CHANNEL

;OTHER SYMBOLS
	XP	FSSSTR,FSSSTR		;STRUCTURE FOR MASTER QUEUES
	ND	FSSPRT,277		;PROTECTION FOR MASTER QUEUES

;FILE FORMAT AND INDEX DEFINITIONS
	XP	FSSQFV,%%.QSR		;QUEUE FILE VERSION
	XP	FSSMRS,1000		;MAXIMUM REQUEST SIZE
	XP	FSSBPR,<FSSMRS/FSSBKS>	;MAXIMUM BLOCKS/REQUEST
	XP	FSSWPI,1000		;NUMBER OF WORDS/INDEX
	XP	FSSNIB,<FSSWPI/FSSBKS>	;NUMBER OF INDEX BLOCKS/SECTION
	XP	FSSFDB,<FSSFIB+FSSNIB>	;BLK. NO.  OF FIRST DATA BLOCK
	XP	FSSBPS,FSSWPI		;BLOCKS PER SECTION
	XP	FSSMNS,5		;MAXIMUM NUMBER OF SECTIONS

;MASTER FILE NAMES

IFN FTUUOS,<
	DEFINE	MQFNM1,<SIXBIT\QSRMS1\>	;THE PRIMARY MASTER
	DEFINE	MQFNM2,<SIXBIT\QSRMS2\>	;    REDUNDANT MASTER
	ND	DFSSTR,<SIXBIT /DSK/>	;STRUCTURE TO USE IF DEBUGGING
	ND	SPLSTR,<SIXBIT/DSK/>	;SPOOL STRUCTURE
>  ;END OF IFN FTUUOS

IFN FTJSYS,<
	DEFINE	MQFNAM,<ASCIZ\SPOOL:PRIMARY-MASTER-QUEUE-FILE.QUASAR\> ;[1274]
	DEFINE	DMQFNM,<ASCIZ \DSK:PRIVATE-MASTER-QUEUE-FILE.QUASAR\>
	ND	SPLSTR,<ASCII/DSK:/>	;SPOOL STRUCTURE
>  ;END OF IFN FTJSYS


;REBUILD CODES
;	A REBUILD CODE IS STORED IN THE FILE INDEX ENTRY FOR EACH REQUEST
;	IN THE MASTER QUEUE FILE.  AT QUASAR INITIALIZATION THE CORRECT
;	ROUTINE IS CALLED WITH THE ENTRY BASED ON THE REBUILD CODE.

	%RBMIN==1			;Minimum valid code number
	%RBBAT==1			;BATCH JOB (INP, LPT, PLT, ...)
	%RBDEL==2			;DELETED FILES
	%RBMAX==%RBDEL			;Maximum valid code number
SUBTTL	QUASAR Fatal Error Codes

;ARGUMENTS USED ARE

;	X	'SUFFIX' , 'TEXT' , 'ERROR SEVERITY'

;THE EXPANDER IS TO DEFINE THE CORRECT 'X' MACRO

DEFINE	ERRCDS,<
	LSTOF.

	X	BMG,<Bad MODIFY Group>,MF.FAT
	X	ICM,<Illegal CREATE Message>,MF.FAT
	X	IFS,<Illegal File Specification>,MF.FAT
	X	ILM,<Illegal LIST Message>,MF.FAT
	X	IFD,<Illegally Formatted Device Name>,MF.FAT
	X	IMT,<Illegal Message Type>,MF.FAT
	X	INF,<Illegal Number of Files>,MF.FAT
	X	IPE,<Insufficient Privileges Enabled>,MF.FAT
	X	MTL,<Message Too Long>,MF.FAT
	X	MTS,<Message is Too Short>,MF.FAT
	X	NKC,<Not a Known Component>,MF.FAT
	X	NOR,<Number Out of Range>,MF.FAT
	X	NYO,<Not Your Object>,MF.FAT
	X	SNY,<Specified request is Not Yours>,MF.FAT
	X	UQS,<Unknown Queue Specified>,MF.FAT
	X	UOS,<Unknown Object Specified>,MF.FAT
	X	WVN,<Wrong Version Number>,MF.FAT
	X	IAS,<Invalid Account String Specified>,MF.FAT
	X	OHR,<Operator Has Restricted Queue Entry Commands>,MF.FAT
	X	IMM,<Illegal MOUNT Message>,MF.FAT
	X	MPN,<MOUNT Request Processor Not Running>,MF.FAT
	X	CDU,<Can't Default User Name>,MF.FAT
	X	CDD,<Can't Default Connected Directory>,MF.FAT
	X	NSD,<No such device>,MF.FAT
	X	CDA,<Can't Delete an Allocated request>,MF.FAT
	X	PRB,<Privileges Required for Bypass Label Processing>,MF.FAT
	X	ICD,<Illegal Connected Directory Specified>,MF.FAT
	X	IFC,<Invalid Function Code Specified>,MF.FAT
	X	MDA,<MDA is not supported in this monitor>,MF.FAT
	X	SDY,<Specified Device is not Yours>,MF.FAT
	X	IVN,<Invalid Volume Set Name Specified>,MF.FAT
	X	ISS,<Invalid Switch Specified in a Structure Mount Request>,MF.FAT
	X	MRP,<Mount Request is not Pending>,MF.WRN
	X	MIN,<Mount Illegal for 'No Operator Intervention' Request>,MF.FAT
	X	IPB,<Invalid Path Block Specified>,MF.FAT
	X	IBL,<Invalid Block Length/Count Specified>,MF.FAT
	X	MVB,<Multiple Volume Set Name Blocks is Illegal>,MF.FAT
	X	IMO,<Invalid message received from ORION>,MF.FAT
	X	NUA,<No Units Available for Mounting this Request>,MF.FAT
	X	RTE,<Route Table Entry does not Exist>,MF.FAT
	X	ISO,<Invalid Source Object Specified in Route Command>,MF.FAT
	X	IDO,<Invalid Destination Object Specified in Route Command>,MF.FAT
	X	CRG,<Cannot Route a Generic Unit>,MF.FAT
	X	UST,<Unknown device or structure name>,MF.FAT
	X	ERZ,<Ersatz devices may not be mounted>,MF.FAT
	X	DNM,<Device may not be mounted>,MF.FAT
	X	VID,<Volume identifier must be specified>,MF.FAT
	X	VIU,<Volume identifiers must be unique>,MF.FAT
	X	ISA,<Illegal attribute for structure mount request>,MF.FAT
	X	ITA,<Illegal attribute for tape mount request>,MF.FAT
	X	ILN,<Illegal logical name>,MF.FAT
	X	IDE,<Invalid density>,MF.FAT
	X	ILT,<Invalid label type>,MF.FAT
	X	RNS,<Reelid not specified in mount command>,MF.FAT
	X	NNR,<NEBULA is not running>,MF.FAT		;;[1301]
	X	ILF,<QUASAR received an illegally formatted message>,MF.FAT	;;[1304]
	X	IUN,<Illegal User Name Specificed>,MF.FAT	;;[1301]
	X	CNE,<Cluster GALAXY is not enabled>,MF.FAT	;;[1303]
	X	XXX,<This is a text buffer for messages built on the fly. MAX 70 characters>,MF.FAT

	LSTON.>  ;END OF DEFINE ERRCDS

DEFINE X(CODE,STRING,FLAGS),<
	ER$'CODE==..XX
	..XX=..XX+1
>;END DEFINE X

	..XX==1
	ERRCDS				;DEFINE THE ERROR OFFSETS
	SUBTTL	MDA ERROR MACROS AND CODES

	;Define the $ERJMP Macro
	;
	;Use: $ERJMP ERROR-CODE,AC-CONTAINING-VSL-ADDRESS

	DEFINE	$ERJMP(CODE,VSL),<
	LSTOF.
	  PUSHJ	P,D$MDAE
	  CAI	<<VSL>B23!<CODE>B35>
	LSTON.>

	AC.VSL==770000		;DEFINE VSL AC FIELD
	ER.CDE==007777		;DEFINE ERROR CODE FIELD

	;Define the error codes and strings

	DEFINE	MDAERR,<
	LSTOF.

	X	NVM,<No Volume Mounted On Drive>
	X	VAU,<Volume is Already in Use>
	X	DAU,<Drive is Already in Use>
	X	VIL,<Volume on Drive is Labeled>
	X	RDM,<Reelid does not match user's request>
	X	URB,<User Requested Bypass Label Volumes>
	X	URL,<User Requested Labeled Volumes>
	X	URW,<User Requested Write-Locked Volumes>
	X	URE,<User Requested Write-Enabled Volumes>
	X	RDD,<Requested Density Does not Match Volume Density>
	X	VND,<Requested Volume not on this Device>
	X	IUD,<Illegal for unavailable device>
	X	RLD,<Request Label Type Doesn't Match Volume Label Type>
	X	DAD,<Drive is already available>
	X	NVI,<VOLID Required for This Volume>
	X	CIU,<Cannot identify the Users Current Volume>
	X	TDM,<Request Track type Doesn't Match Device Type>
	X	DDD,<Device Allocation Error - Deadlock Detected>
	X	IDD,<Illegal density for drive>
	LSTON.>


	DEFINE	X(CODE,STRING),<
	MD$'CODE==..XX
	..XX==..XX+1
	>

	..XX==1

	MDAERR		;GENERATE THE MDA ERROR CODES
	SUBTTL	Definition of the Known Queues

;ARGUMENTS USED ARE

;	X	'QUENAME' , 'ENTRYSIZE' , 'TYPE' , 'FLAGS' , 'SCHEDULER'

DEFINE	QUEUES,<

	LSTOF.

	X	INP,QNTSIZ,.QHTIP,0,S$INPT,LIQBAT
	X	LPT,QNTSIZ,.QHTOU,0,S$LPT,LIQLPT
	X	PTP,QNTSIZ,.QHTOU,0,S$PTP,LIQPTP
	X	CDP,QNTSIZ,.QHTOU,0,S$CDP,LIQCDP
	X	PLT,QNTSIZ,.QHTOU,0,S$PLT,LIQPLT
	X	RET,QNTSIZ,.QHTAR,QH.INV,S$RET,LIQRET
	X	NOT,QNTSIZ,.QHTAR,QH.INV,S$NOT,0
	X	BIN,QNTSIZ,.QHTIP,QH.INV,S$BIN,0
	X	DBM,QNTSIZ,.QHFRR,QH.INV,S$DBM,0
	X	RDR,QNTSIZ,.QHFRR,0,S$RDR,0
	X	SPL,SPLSIZ,.QHTQS,QH.INV,0,0
	X	PSB,PSBSIZ,.QHTQS,QH.INV,0,0
	X	OBJ,OBJSIZ,.QHTQS,QH.INV,0,0
	X	USE,USESIZ,.QHTQS,QH.INV,0,0
	X	STR,STRSIZ,.QHTQS,QH.INV,0,0
	X	NET,NETSIZ,.QHTQS,QH.INV,0,0

	LSTON.>  ;END OF DEFINE QUEUES

	;DEFINE THOSE QUEUES WHICH ARE DEVICES.

DEFINE	DEVQUE,<
	X	BAT
	X	LPT
	X	CDP
	X	PTP
	X	PLT
	X	MNT
	X	RET
> ;END OF DEVICE QUEUES MACRO

	MAX	<QNTSIZ>	;INCLUDE ANY QUEUE THAT CAN HAVE AFTER OR INUSE
USESIZ==MAXSIZ			;DEFINE LARGEST ENTRY IN USE QUEUE
RDESIZ==MAXSIZ		;DEFINE LARGEST ENTRY IN RDE QUEUE


DEFINE	QUEHDR,<  ;MACRO TO GENERATE THE QUEUE HEADERS FROM THE QUEUES MACRO
	DEFINE	X(A,B,C,D,E,F),<	;DEFINE X FOR THE LATER EXPANSION OF QUEUES
HDR'A::	INSVL.(<SIXBIT\   A\>,QH.NAM)!INSVL.(C,QH.TYP)!D
	EXP	0
	IFDIF	<E> <0> ,<GLOB(E)>
	XWD	E,INSVL.(B,QH.SIZ)
	EXP	F
	EXP	0
	>  ;END OF DEFINE X
	QUEUES			;NOW EXPAND QUEUES
>  ;END OF DEFINE QUEHDR
	SUBTTL	MTCON MOUNT STRUCTURES

	;MOUNT REQUEST (SENT BY USER TO QUASAR)

;	!=======================================================!  /+\
;	\                                                       \   !
;	\                  THE MESSAGE HEADER                   \   !
;	\                                                       \   !
;	!=======================================================!   !
;	!        FLAGS THAT APPLY TO THE ENTIRE MESSAGE         !   !
;	!-------------------------------------------------------!   LM
;	!             SIXBIT NAME OF MOUNT REQUEST              !   !
;	!-------------------------------------------------------!   !
;	!        MOUNT ENTRY COUNT (MUST BE 1 FOR RLS 4)        !   !
;	!=======================================================!   !
;	!                 -----  TOPS 10  -----                 !   !
;	!                                                       !   !
;	!-------------------------------------------------------!   !
;	!                   SIXBIT USER NAME                    !   !
;	!                       (2 WORDS)                       !   !
;	!-------------------------------------------------------!   !
;	!                                                       !   !
;	\                  USER ACCOUNT STRING                  \   !
;	\                       IN ASCIZ                        \   !
;	\                      (10 WORDS)                       \   !
;	!                                                       !   !
;	!=======================================================!  \./

        PHASE MSHSIZ
.MMFLG:! BLOCK  1               ;FLAG WORD FOR MOUNT MESSAGE
	MM.WAT==1B0		;USER IS WAITING FOR IPCF ACK WHEN DONE
	MM.NOT==1B1		;USER WANTS NOTIFICATION VIA TRMOP.
	MM.DLC==1B2		;(DISMOUNT/DEALLOCATE ONLY) DEALLOCATE, NOT DISMOUNT
	MM.REM==1B3		;(DISMOUNT/DEALLOCATE ONLY) /REMOVE WAS TYPED
	MM.GFR==1B4		;INTERNAL USE ONLY (MSG SENT BY [SYSTEM]GOPHER)
.MMNAM:! BLOCK  1               ;SIXBIT NAME OF MOUNT REQUEST
.MMARC:! BLOCK  1               ;ARGUMENT COUNT FOR MOUNT MESSAGE

TOPS10 <
.MMUSR:! BLOCK	EQNMSZ		;SIXBIT USER NAME
.MMUAS:! BLOCK	10		;ASCIZ USER ACCOUNT STRING
>

.MMHSZ:!                        ;SIZE OF MOUNT MESSAGE HEADER
        DEPHASE
	SUBTTL	MOUNT REQUESTS (WITHIN THE MESSAGE)

;!=======================================================!  /+\
;!     ENTRY LENGTH (LE)     !         TYPE CODE         !   !
;!-------------------------------------------------------!   !
;!                REQUEST-SPECIFIC FLAGS                 !   !
;!-------------------------------------------------------!   !
;!                    SUBENTRY COUNT                     !   !
;!-------------------------------------------------------!   !
;!                     SUBENTRY # 1                      !   !
;!-------------------------------------------------------!   LE
;!                     SUBENTRY # 2                      !   !
;!-------------------------------------------------------!   !
;!                           .                           !   !
;!                           .                           !   !
;!                           .                           !   !
;!-------------------------------------------------------!   !
;!                     SUBENTRY # n                      !   !
;!=======================================================!  \./


        PHASE 0
.MEHDR:! BLOCK  1               ;MOUNT ENTRY HEADER WORD
	 .MNUNK==0		  ;Unknown Mount request type
	  .MNTTP==1		  ;Tape Mount Request Code
	  .MNTST==2		  ;Disk Mount Request Code
	  .DSMST==3		  ;Disk Dismount Request Code
.MEFLG:! BLOCK  1               ;FLAG WORD FOR ENTRY
;	(See below for bit definitions)

.MECNT:! BLOCK  1               ;SUBENTRY COUNT
.MEHSZ:!                        ;SIZE OF HEADER
        DEPHASE


;  The argument block is defined in GLXMAC under General Message Format.
;  Refer there for latest information.

;        PHASE 0
;ARG.HD:! BLOCK  1               ;SUBENTRY HEADER WORD
;        AR.LEN=-1,,0            ;LENGTH OF SUBENTRY
;        AR.TYP=0,,-1            ;TYPE OF SUBENTRY
;ARG.DA:!                        ;START OF DATA AREA
;        DEPHASE
	SUBTTL	TAPE MOUNT REQUEST BLOCKS

	.MDINV==0		;BLOCK TYPE 0 IS INVALID

	.TMDEN==1		;MAG TAPE DENSITY CODE

;	!-------------------------------------------------------!
;	!	2		!	.TMDEN			!
;	!-------------------------------------------------------!
;	!		The Tape Density Code			!
;	!-------------------------------------------------------!

	SYSPRM	(.TFD00,.TFD00,0)	;SYSTEM DEFAULT
	SYSPRM	(.TFD20,.TFD20,.SJDN2)	; 200 BPI
	SYSPRM	(.TFD55,.TFD55,.SJDN5)	; 556 BPI
	SYSPRM	(.TFD80,.TFD80,.SJDN8)	; 800 BPI
	SYSPRM	(.TFD16,.TFD16,.SJD16)	;1600 BPI
	SYSPRM	(.TFD62,.TFD62,.SJD62)	;6250 BPI

	.TMDRV==2		;MAG TAPE DRIVE TYPE

;	!-------------------------------------------------------!
;	!	2		!	.TMDRV			!
;	!-------------------------------------------------------!
;	!		.TMDR9 or .TMDR7			!
;	!-------------------------------------------------------!

		.TMDR9==1	;Nine Track Drive
		.TMDR7==2	;Seven Track Drive
		.TMDMX==2	; ?


	.TMLT==3		;Mag TAPE LABEL TYPE

;	!-------------------------------------------------------!
;	!	2		!	.TMLT			!
;	!-------------------------------------------------------!
;	!	.LTUNL or .LTANS or .LTEBC or .LTT20		!
;	!-------------------------------------------------------!

	SYSPRM	(%TFLBP,.TFLBP,-1)	;BYPASS
	SYSPRM	(%TFANS,.TFLAL,.LTANS)	;ANSII
	SYSPRM	(%TFEBC,.TFLIL,.LTEBC)	;EBCDIC (IBM)
	SYSPRM	(%TFUNL,.TFLNL,.LTUNL)	;UNLABELED
	SYSPRM	(%TFT20,-1,.LTT20)	;TOPS20
	SYSPRM	(%TFUNV,.TFLNV,-1)	;UNLABELED USER-EOV
	SYSPRM	(%TFMIN,.TFLBP,.LTUNL)	;MINIMUM LABEL TYPE
	SYSPRM	(%TFMAX,.TFLNV,.LTT20)	;MAXIMUM LABEL TYPE


	.TMSET==4		;MAG TAPE SET NAME

;	!-------------------------------------------------------!
;	!	2		!	.TMSET			!
;	!-------------------------------------------------------!
;	!		sixbit Volume Set Name			!
;	!-------------------------------------------------------!


	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE

	.TMRMK==5		;Asciz Remark for the Operator

;	!-------------------------------------------------------!
;	!	length		!	.TMRMK			!
;	!-------------------------------------------------------!
;	\							\
;	\		An Asciz remark for the OPR		\
;	\							\
;	!-------------------------------------------------------!


	.TMSTV==6		;Mag Tape Starting Volume

;	!-------------------------------------------------------!
;	!	2 or 3		!	.TMSTV			!
;	!-------------------------------------------------------!
;	!		Index into Volume set if length = 2	!
;	!-------------------------------------------------------!
;	!	Sixbit volume Id (Length = 3 & word 2 = 0)	!
;	!-------------------------------------------------------!



	.TMVOL==7		;Volume List

;	!-------------------------------------------------------!
;	!	Length		!				!
;	!-------------------------------------------------------!
;	\							\
;	\		Sixbit list of volumes			\
;	\							\
;	!-------------------------------------------------------!


	.TMVPR==10		;Volume Protection code For new volumes

;	!-------------------------------------------------------!
;	!	2		!	.TMVPR			!
;	!-------------------------------------------------------!
;	!	0		!	Protection Code		!
;	!-------------------------------------------------------!


	;CONTINUED ON THE NEXT PAGE
	;CONTINUED FROM THE PREVIOUS PAGE

	.TMINI==11		;Volume Initialization Parms

;	!-------------------------------------------------------!
;	!	2 or 3		!	.TMINI			!
;	!-------------------------------------------------------!
;	!		Tape Label Type				!
;	!-------------------------------------------------------!
;	!		User Number (Optional)			!
;	!-------------------------------------------------------!


	.SMNAM==12		;Disk Structure Name in sixbit

;	!-------------------------------------------------------!
;	!	2		!	.SMNAM			!
;	!-------------------------------------------------------!
;	!		Sixbit Structure Name			!
;	!-------------------------------------------------------!


	.SMALI==13		;Disk Structure Alias Name in sixbit

;	!-------------------------------------------------------!
;	!	2		!	.SMALI			!
;	!-------------------------------------------------------!
;	!		Sixbit Structure Alias			!
;	!-------------------------------------------------------!



	.TMLNM==14		;VOLUME SET LOGICAL NAME

;	!-------------------------------------------------------!
;	!	2		!	.TMLNM			!
;	!-------------------------------------------------------!
;	!		The Logical Volume Set name		!
;	!-------------------------------------------------------!



	.TMEXP==15		;VOLUME SET EXPIRATION DATE/TIME

;	!-------------------------------------------------------!
;	!	2		!	.TMEXP			!
;	!-------------------------------------------------------!
;	!		Expiration date time in UDT		!
;	!-------------------------------------------------------!

	%MDMAX==15		;Maximum block number allocated
	SUBTTL	.MEFLG BIT DEFINITIONS


;The following flags may be
;present in the .MEFLG word of a tape-mount request:

;FLAG  BIT     MEANING
;----  ---     -------
TM%SCR==1B0      ; Request to access temporary volume set.
                 ; Implies TM%NEW, TM%NOV, TM%WEN
                 ; TM%OSV is ignored if set
TM%NEW==1B1      ; Creating new volume set.
                 ; Implies TM%NOV, TM%WEN
TM%VFY==1B2      ; Verify that user-supplied setname
                 ; matches setname of volume(s) being mounted.
                 ; Meaningful for labeled tapes only.
TM%OSV==1B3      ; Operator will be asked to key in list of
                 ; volume identifiers.
TM%WEN==1B4      ; Volume(s) must be mounted write-enabled.
		 ;
TM%BYP==1B5      ; If label-type is unlabeled, bypass any label
                 ; security checks.
TM%NUL==1B6      ; Do not unload volumes at volume-switch or
                 ; when DISMOUNT TAPE command given.

SM%PAS==1B7	; Put structure in jobs passive search list

SM%EXC==1B8	; Request exclusive access

SM%DEF==1B9	; Defer mounting (reserved)

SM%NOC==1B10	; Don't allow creates on structure

TM%WLK==1B11	; User requested Write Locked Volumes

ME%ALC==1B12	; User requesting only allocation of these resources, not mount

SM%ARD==1B13	; Always recompute disk usage
	SUBTTL	MOUNT REQUEST

;                   TAPE MOUNT REQUEST
;          IPCF MESSAGE SENT FROM QUASAR TO MTCON
;!=======================================================!
;!   MESSAGE LENGTH (512)    !   MESSAGE TYPE (.QOMNT)   !
;!-------------------------------------------------------!
;!           FLAGS           !       SIXBIT SUFFIX       !
;!-------------------------------------------------------!
;!                  ACKNOWLEDGMENT CODE                  !
;!=======================================================!
;!                                                       !
;\      UNMODIFIED USER IPCF MESSAGE (MINUS HEADER)      \
;!                                                       !
;!-------------------------------------------------------!
;!                                                       !
;\                           0                           \
;!                                                       !
;!-------------------------------------------------------!
;!               INTERNAL TASK NAME (ITN)                !
;!-------------------------------------------------------!
;!                      USER'S PID                       !
;!-------------------------------------------------------!
;!             SIZE OF USER'S MOUNT MESSAGE              !
;!-------------------------------------------------------!
;!         ACK CODE FROM USER'S MESSAGE HANDLER          !
;!-------------------------------------------------------!
;!                  USER'S USER NUMBER                   !
;!-------------------------------------------------------!
;!              USER'S ENABLED CAPABILITIES              !
;!-------------------------------------------------------!
;!                                                       !
;\              USER'S ASCIZ ACCOUNT STRING              \
;!                                                       !
;!=======================================================!

	PHASE	762
.MMUMX:!                        ;MAXIMUM LENGTH OF USER MOUNT MESSAGE
.MMITN:! BLOCK  1               ;INTERNAL TASK NAME ASSIGNED BY QUASAR
.MMPID:! BLOCK  1               ;USER'S PID
.MMUMS:! BLOCK  1               ;SIZE OF USER'S MOUNT MESSAGE
.MMUCD:! BLOCK  1               ;ACK CODE FROM USER'S MESSAGE HEADER
.MMUNO:! BLOCK  1               ;USER'S USER NUMBER
.MMCAP:! BLOCK  1               ;USER'S ENABLED CAPABILITIES
.MMACT:! BLOCK  10              ;USER'S ASCIZ ACCOUNT STRING
        DEPHASE
	SUBTTL	Response to User Tape Mount Request

;After the user process has sent an IPCF message  to  QUASAR  to
;request  a  tape  mount, it will typically wait for a response,
;which will be sent when:
;     1.  QUASAR finds an error while parsing and validating the
;         user request;  the request is aborted.
;     2.  MTCON encounters  a  problem  trying  to  satisfy  the
;         request;  the request is aborted.
;     3.  MTCON  mounts  the  first  volume   of   the   request
;         successfully;   the  response  indicates  a successful
;         mount.

;The mount response message sent by MTCON or QUASAR to the  user
;will have the following format:

;!=======================================================!
;!      MESSAGE LENGTH       !   MESSAGE TYPE (.QOMNA)   !
;!-------------------------------------------------------!
;!           FLAGS           !       SIXBIT SUFFIX       !
;!-------------------------------------------------------!
;!     ACKNOWLEDGMENT CODE FROM USER'S MOUNT REQUEST     !
;!=======================================================!
;!                 FLAGS (NONE DEFINED)                  !
;!-------------------------------------------------------!
;!                      ENTRY COUNT                      !
;!-------------------------------------------------------!
;!                        ENTRY 1                        !
;!-------------------------------------------------------!
;!                           .                           !
;!                           .                           !
;!                           .                           !
;!-------------------------------------------------------!
;!                        ENTRY n                        !
;!=======================================================!


	;DEFINE THE MESSAGE TYPE

	.QOMNA==1		;TAPE MOUNT REQUEST ANSWER


;Either of two responses is conveyed:
;     1.  The request was completed successfully.  The  response
;         contains one .MNRDV and one .MNRTX.
;     2.  The request was aborted.  The  response  contains  one
;         .MNREC and possibly one .MNRTX.
	SUBTTL	MOUNT RESPONSES

;Mount response entry formats are described below:

	.MNREC==2		;Error Code

;     !=======================================================!
;     !        LENGTH (2)         !          .MNREC           !
;     !-------------------------------------------------------!
;     !             0             !    TOPS-20 ERROR CODE     !
;     !=======================================================!

	.MNRDV==1		;Device block

;     !=======================================================!
;     !      LENGTH (2 OR 3)      !          .MNRDV           !
;     !-------------------------------------------------------!
;     !           VOLUME SET NAME OR STRUCTURE NAME           !
;     !-------------------------------------------------------!
;     !       MT DEVICE DESIGNATOR (TAPE REQUESTS ONLY)       !
;     !=======================================================!

	.MNRTX==3		;Asciz Text

;     !=======================================================!
;     !          LENGTH           !          .MNRTX           !
;     !-------------------------------------------------------!
;     !                                                       !
;     \                      ASCIZ TEXT                       \
;     !                                                       !
;     !=======================================================!

	.MNSDV==4		;Sixbit Structure Alias

;	!=======================================================!
;	!	LENGTH		!	   .MNSDV		!
;	!-------------------------------------------------------!
;	!	SIXBIT STRUCTURE NAME				!
;	!=======================================================!

	.MNRNM==5		;Sixbit Mount Request Name

;	!=======================================================!
;	!	LENGTH		1	   .MNRNM		!
;	!-------------------------------------------------------!
;	!	SIXBIT MOUNT REQUEST NAME			!
;	!=======================================================!
	SUBTTL	CANCELING TAPE MOUNT REQUESTS


;Response to User Cancel Request

;MTCON will send the following message to the user PID to convey
;the actions taken as a result of the cancel request:

;!=======================================================!
;!      MESSAGE LENGTH       !   MESSAGE TYPE (.QOMCA)   !
;!-------------------------------------------------------!
;!           FLAGS           !       SIXBIT SUFFIX       !
;!-------------------------------------------------------!
;!     ACKNOWLEDGMENT CODE FROM USER'S MOUNT REQUEST     !
;!=======================================================!
;!                 FLAGS (NONE DEFINED)                  !
;!-------------------------------------------------------!
;!                   ENTRY COUNT                         !
;!=======================================================!
	SUBTTL	ABORT MSG FROM QUASAR TO MTCON


	;THIS MESSAGE IS SENT BY QUASAR TO MTCON WHEN A USER
	;CANCELS 1 OR MORE OF HIS MOUNT REQUESTS


;!=====================================================	!
;!   MESSAGE LENGTH	!  MESSAGE TYPE (.QOMTA)	!
;!------------------------------------------------------!
;!	FLAGS		!	SUFFIX			!
;!------------------------------------------------------!
;!	    ACKNOWLEDGEMENT CODE			!
;!------------------------------------------------------!
;!		FLAG WORD (NONE)			!
;!------------------------------------------------------!
;!		ARGUMENT COUNT				!
;!------------------------------------------------------!
;!    ENTRY LENGTH	!   ENTRY TYPE (.MTPID)		!
;!------------------------------------------------------!
;!		    USERS PID				!
;!------------------------------------------------------!
;!    ENTRY LENGTH	!   ENTRY TYPE (.MTITN)		!
;!------------------------------------------------------!
;!		      ITN				!
;!------------------------------------------------------!
;!		      ITN				!
;!------------------------------------------------------!

;			ETC


;	THE MESSAGE BLOCK TYPES ARE:

	.MTPID==1	;USERS PID
	.MTITN==2	;A LIST OF ITN'S TO CANCEL
	SUBTTL	MOUNT RELEASE MESSAGE
;When  a  request  completes,  MTCON  notifies  the   user   (if
;appropriate)  and  sends  a  RELEASE message to QUASAR for that
;request.

;           RELEASE MESSAGE FROM MTCON TO QUASAR

;!=======================================================!
;!      MESSAGE LENGTH       !   MESSAGE TYPE (.QOREL)   !
;!-------------------------------------------------------!
;!           FLAGS           !       SIXBIT SUFFIX       !
;!-------------------------------------------------------!
;!                  ACKNOWLEDGMENT CODE                  !
;!=======================================================!
;!             INTERNAL TASK NAME OF REQUEST             !
;!=======================================================!




	;CHECKPOINT MESSAGE DEFINITIONS

	;THESE DEFINE THE OFFSETS INTO THE CHE.IN BLOCK OF THE
	;TAPE/DISK CHECKPOINT MESSAGE

	.MTSTA==0		;CHECKPOINT STATUS INFORMATION
	.MTVOL==1		;CHECKPOINT VOLUME INFORMATION
	  %VOLBL==0		;NO VOLUME PRESENT
	  %VOLSC==1		;SCRATCH VOLUME
	  			;WORD MAY ALSO CONTAIN A SIXBIT VOLUME ID
	.MTTYP==2		;CHECKPOINT VOLUME TYPE
				;SEE THE MOUNT REQUEST BLOCK CODES FOR TYPES
	SUBTTL	QUASAR TAPE MOUNT REQUEST QUEUE STRUCTURE

;	!=======================================================!
;	!		36 BIT USER ID				!
;	!-------------------------------------------------------!
;	/		ASCIZ USER NAME				/
;	/							/
;	!-------------------------------------------------------!
;	!	FLAGS		!	USERS JOB NUMBER	!
;	!-------------------------------------------------------!
;	!		SIXBIT REQUEST NAME			!
;	!-------------------------------------------------------!
;	/							/
;	/		USERS ASCIZ ACCOUNT STRING		/
;	/							/
;	!-------------------------------------------------------!
;	!		   USERS PID #				!
;	!-------------------------------------------------------!
;	!	# OF VSL'S	!	REQUEST ID		!
;	!-------------------------------------------------------!
;	/							/
;	/		POINTERS TO THE VOLUME			/
;	/		     SET LISTS				/
;	/							/
;	!-------------------------------------------------------!




		PHASE	0

	.MRUSR:! BLOCK	1	;36 BIT USER ID OR PPN (-10)
	.MRNAM:! BLOCK	EQNMSZ	;USER NAME (ASCIZ -20, SIXBIT -10)
	.MRJOB:! BLOCK	1	;CAPABILITIES (IPCF MDB.PV),,JOB NBR
	   BA%JOB==400000	;LIT IF THIS IS A BATCH ALLOCATION
				;   THEN THE 'JOB NBR' IS THE REQUEST ID
	.MRQEA:! BLOCK	1	;REQUESTS QE ADDRESS
	.MRNOD:! BLOCK	1	;NODE NAME WHERE USER IS LOCATED
	.MRTTY:! BLOCK	1	;TTY DATA WHERE USER IS LOCATED
	  MR.TRD==-1,,0		;TERMINAL DESIGNATOR
	  MR.TNO==0,,-1		;LINE NUMBER
	.MRACT:! BLOCK	10	;ASCIZ ACCOUNT STRING
	.MRPID:! BLOCK	1	;REQUESTORS PID
	.MRACK:! BLOCK	1	;USER ACK CODE
	.MRFLG:! BLOCK	1	;FLAG BITS FOR THIS MDR
	  MR.FLG==76B4		;Flag field
	  MR.WAT==1B0		;SENDER IS WAITING FOR IPCF ACK WHEN DONE
	  MR.NOT==1B1		;SENDER WANTS NOTIFICATION BY TRMOP.
	  MR.ACK==1B2		;WAITING FOR INITIAL ACK
	  MR.GFR==1B3		;REQUEST CREATED BY UUO ( [SYSTEM]GOPHER )
	  MR.DMO==1B4		;DISMOUNT (USED FOR TEXT FORMATTING)
	  MR.QUE==77B35		;OBJECT TYPE OF THE PSEUDO PROCESS (IF NEEDED)
	.MRLOG:! BLOCK	1	;UNIVERSAL TIME OF LOGIN
	.MRCNT:! BLOCK	1	; 0,,VOL SET COUNT
	  MR.CNT==0,,-1		  ;VOLUME SET COUNT IN THE RIGHT HALF
	  MR.LNK==-1,,0		  ;CURRENT VSL LINK CODE
	.MRVSL:! BLOCK	1	;POINTERS TO THE VOLUME SET LISTS (MINIMUM 1)

	MDRLEN:!		;MINIMUM MDR QUEUE LENGTH

		DEPHASE
	SUBTTL	VOLUME SET LIST (VSL) STRUCTURE

;	!-------------------------------------------------------!
;	!                    POINTER TO MDR                     !
;	!-------------------------------------------------------!
;	!                       FLAG WORD                       !
;	!-------------------------------------------------------!
;	!         # TRACKS          !          DENSITY          !
;	!-------------------------------------------------------!
;	!                    VOLUME SET NAME                    !
;	!-------------------------------------------------------!
;	/                                                       /
;	/                 USER'S ASCIZ REMARKS                  /
;	/                                                       /
;	!-------------------------------------------------------!
;	!        VOLUME SET LOGICAL NAME         !  PROTECTION  !
;	!-------------------------------------------------------!
;	!       VOLUME COUNT        !       VOLUME OFFSET       !
;	!-------------------------------------------------------!
;	!                POINTERS TO VOLUME LIST                !
;	!-------------------------------------------------------!

		PHASE	0

	.VSMDR:! BLOCK	1	;POINTER TO THE CONTROLLING MDR
	.VSFLG:! BLOCK	1	;MOUNT FLAG WORD
	   VS.SCR==1B1		  ;THIS IS A SCRATCH VOLUME SET
	   VS.NEW==1B2		  ;THIS IS A NEW VOLUME SET
	   VS.UAL==1B3		  ;USER ALLOCATED THIS VOLUME SET
	   VS.OPR==1B4		  ;OPR WILL BE ASKED FOR VOLUME SET LIST
	   VS.WLK==1B5		  ;0=WRITE ENABLED, 1=WRITE LOCKED
	   VS.REM==1B6		  ;USER REQUEST TO DISMOUNT THE STRUCTURE
	   VS.TYP==7B9		  ;VOLUME TYPE 1=TAPE, 2=STRUCTURE, 3=DECTAPE
	   VS.LBT==17B13	  ;VOLUME LABEL TYPE FOR LABEL PROCESSING
	   VS.VSW==1B14		  ;VOLUME SWITCH IN PROGRESS
	   VS.ALC==1B15		  ;VOLUME SET IS IN ALLOCATION STATE
	   VS.WAL==1B16		  ;VOL SET IS WAITING FOR DEVICE ALLOCATION
	   VS.CLM==1B17		  ;RESOURCES FOR THIS VSL ARE CLAIMED
	   VS.PAS==1B18		  ;(DISK) PUT IN PASSIVE 1/2 OF SEARCH LIST
	   VS.NOC==1B19		  ;(DISK) DON'T DO CREATES ON THIS STR
	   VS.SIN==1B20		  ;(DISK) SINGLE ACCESS
	   VS.NMT==1B21		  ;VOLUME SET MOUNTED FOR A PSEUDO PROCESS
	   VS.ABO==1B22		  ;REQUEST CANCELLED BY THE OPERATOR
	   VS.REL==1B23		  ;USER SPECIFIED A REEL ID FOR THIS REQUEST
	   VS.CTL==1B24		  ;THIS REQUEST IS PART OF PSEUDO PROCESS ALLOC
	   VS.ARD==1B25		  ;ALWAYS RECOMPUTE DISK USAGE
	.VSATR:! BLOCK	1	;MOUNT REQUEST DEVICE ATTRIBUTES
	   VS.PRT==777B8	  ;PROTECTION CODE
	   VS.DEN==7B20		  ;VOLUME DENSITY STATUS
	   VS.TRK==7B23		  ;VOLUME TRACK STATUS
	   VS.RSN==77B29	  ;REQUESTED RESOURCE TYPE
	   VS.DDN==1B34		  ;DENSITY STATUS IS DEFAULTED
	   VS.DTK==1B35		  ;TRACK STATUS IS DEFAULTED
	.VSRID:! BLOCK	1	;VOLUME SET REQUEST ID
	   VS.RID==-1,,0	  ;VOLUME SET REQUEST ID
	   VS.LNK==0,,-1	  ;VOLUME SET REQUEST LINK
	.VSVSN:! BLOCK	VSNLEN	;ASCIZ VOLUME SET NAME
	.VSTXT:! BLOCK	1	;TEXT POINTER FOR USER ACKS
	   VS.LEN==-1,,0	  ;TEXT BLOCK LENGTH
	   VS.ADR==0,,-1	  ;TEXT BLOCK ADDRESS
	.VSREM:! BLOCK	^D12	;ASCIZ USER REMARKS (59 CHARS MAX)
	.VSCRE:! BLOCK	1	;REQUEST CREATION TIME
	.VSSCH:! BLOCK	1	;REQUEST SCHEDULED TIME
	.VSLNM:! BLOCK	1	;VOLUME SET LOGICAL NAME (-10 ONLY)
	.VSUCB:! BLOCK	1	;POINTER TO LAST DEVICE ALLOCATED TO THIS VSL
	.VSCVL:! BLOCK	1	;VOL COUNT,,OFFSET TO THE CURRENT VOLUME
	   VS.OFF==0,,777000	  ;OFFSET TO THE CURRENT VOLUME
	   VS.CNT==-1,,0	  ;VOLUME COUNT
	.VSVOL:! BLOCK	2	;Pointers to the volume list
;Following the volume list pointers is the sixbit name of the first volume.
;This is used by INFORMATION MOUNT/ALL

	VSLLEN:!		;MINIMUM LENGTH OF A VSL

		DEPHASE
	SUBTTL	VOLUME LIST STRUCTURE (VOL)



;	!-------------------------------------------------------!
;	!		  SIXBIT VOLUME NAME			!
;	!-------------------------------------------------------!
;	!		      OWNER PPN  			!
;	!-------------------------------------------------------!
;	!		VOLUME FLAG BITS			!
;	!-------------------------------------------------------!
;	!       MOUNT COUNT         !       OWNER OFFSET        !
;	!-------------------------------------------------------!
;	!		POINTER TO THE UCB			!
;	!-------------------------------------------------------!
;	/							/
;	/		POINTER(S) TO THE VSL(S)                /
;	/							/
;	!-------------------------------------------------------!

		PHASE	0

	.VLNAM:! BLOCK	1		;VOLUME NAME (STRUCTURE NAME OR VOL ID)
	.VLVID:! BLOCK	1		;INTERNAL VOLUME ID FOR STRUCTURES
	.VLOID:! BLOCK	1		;OWNER PPN OR USER ID
	.VLMTM:! BLOCK	1		;VOLUME MOUNT TIME
	.VLFLG:! BLOCK	1		;VOLUME FLAG BITS
	   VL.STA==7B2			  ;VOLUME STATUS
	     %STAWT==0			    ;VOLUME IS WAITING
	     %STAAB==1			    ;VOLUME USE HAS BEEN ABORTED
	     %STAMN==2			    ;VOLUME IS MOUNTED
	     %STADM==3			    ;VOLUME IS TO BE DISMOUNTED
	   VL.SCR==1B3			  ;VOLUME IS A SCRATCH VOLUME
	   VL.SHR==1B4			  ;VOLUME IS TO BE SHARED (DISK ONLY)
	   VL.DEN==7B7			  ;VOLUME DENSITY
	   VL.LBT==17B11		  ;VOLUME LABEL TYPE
	   VL.LUN==7B14			  ;STRUCTURE LOGICAL UNIT NUMBER
	   VL.REM==1B15			  ;REMOVE THE STRUCTURE ON DISMOUNT
	   VL.LCK==3B17			  ;VOLUME LOCK STATUS
	     %UNLCK==0			     ;NOT LOCKED
	     %LOCKD==1			     ;LOCKED
	     %LOCKP==2			     ;UNLOCKED, LOCK PENDING
	     %ULCKP==3			     ;LOCKED, UNLOCK PENDING
	   VL.SRD==1B18			;SET REQUESTED DENSITY FOR USER
	   VL.RSN==777B35		;VOLUME RESOURCE NUMBER
	   VL.FLG==-1,,777000		;FLAG AREA MASK (NOT INCLUDING RSN)
	.VLLTM:! BLOCK	1	 	;VOLUME LOCK OR UNLOCK TIME (UDT)
	.VLOWN:! BLOCK	1		;COUNT OF REQUESTORS,,OFFSET TO OWNER
	   VL.CNT==-1,,0		  ;NUMBER OF REQUESTORS FOR THIS VOLUME
	.VLUCB:! BLOCK	1		;POINTER TO THE UCB
	.VLPTR:! BLOCK	1		;BACK,,FORWARD PTRS TO MULTIPLE VOL STRS
	   VL.PRV==-1,,0		  ;ADDR OF PREVIOUS VOLUME BLOCK IN STR
	   VL.NXT==0,,-1		  ;ADDR OF NEXT VOLUME BLOCK IN STR
	.VLSTR:! BLOCK	1		;VOLUME STRUCTURE NAME
	.VLNXT:! BLOCK	1		;SIXBIT VOL NAME OF NEXT VOL IN STR
	.VLVSL:! BLOCK	1		;POINTER(S) TO THE VSL(S)
	   VL.ASN==1B0			  ;FLAG BIT INDICATING THAT VOL IS
					  ;   ASSIGNED BY THE USER
	   VL.ASK==1B1			  ;FLAG BIT INDICATING THAT VOL
					  ;   ASSIGNMENT HAS BEEN REQUESTED
	   VL.OWN==1B2			  ;FLAG BIT INDICATING THE VOLUME WAS
					  ;    OWNED BY THE USER AT SOME TIME
	   VL.AAS==1B3			  ;STRUCTURE ALREADY ASSIGNED

	VOLLEN:!			;MINIMUM VOLUME ENTRY LENGTH

		DEPHASE
	SUBTTL	UNIT CONTROL BLOCK STRUCTURE


;	!===============================================================!
;	!		    Device Name (Sixbit)			!
;	!---------------------------------------------------------------!
;	!		    Device Status Bits				!
;	!---------------------------------------------------------------!
;	!		     User Mount Count				!
;	!---------------------------------------------------------------!
;	!		      Volume Pointer				!
;	!===============================================================!



		PHASE	0

	.UCBNM:! BLOCK	1		;UNIT/DEVICE NAME IN SIXBIT
	.UCBAU:! BLOCK	1		;ALTERNATE UNIT FOR DUAL PORTED SYSTEMS
	.UCBST:! BLOCK	1		;DEVICE STATUS BITS
	    UC.SEL==1B0			  ;UNIT IS SELECTED (USED FOR OPR NOT)
	    UC.200==1B2			  ;DEVICE SUPPORTS 200 BPI
	    UC.556==1B3			  ;DEVICE SUPPORTS 556 BPI
	    UC.800==1B4			  ;DEVICE SUPPORTS 800 BPI
	    UC.1600==1B5		  ;DEVICE SUPPORTS 1600 BPI
	    UC.6250==1B6		  ;DEVICE SUPPORTS 6250 BPI
	    UC.AVR==1B7			  ;AVR BIT 1=ENABLED
	    UC.WLK==1B8			  ;UNIT WRITE LOCKED 1=LOCKED
	    UC.OFL==1B9			  ;UNIT IS OFFLINE 1=OFFLINE
	    UC.DVT==17B13		  ;UNIT DEV TYPE (%TAPE, %DISK, %DTAPE)
	    UC.KTP==7B16		  ;UNIT CONTROLLER TYPE
	    UC.AVA==1B17		  ;UNIT IS AVAILABLE FOR USE BY MDA
	    UC.VSW==1B18		  ;UCB IS IN VOLUME SWITCH STATE
	    UC.UTP==3B20		  ;UNIT TYPE (DEPENDS ON UC.KTP)
	    UC.SHR==1B21		  ;UNIT CAN BE SHARED
	    UC.RSN==777B30		  ;UNIT RESOURCE NUMBER
	    UC.SWP==1B31		  ;UNIT HAS SWAP SPACE ON IT
	    UC.INI==1B32		  ;UNIT IS INITIALIZING
	    UC.TRK==3B34		  ;TRACK STATUS 1=7TRK, 2=9TRK
	      %TRK7==1			      ; 7 TRACK
	      %TRK9==2			      ; 9 TRACK
	.UCBCN:! BLOCK	1		;USER MOUNT COUNT
	.UCBVL:! BLOCK	1		;PTR TO VOLUME MOUNTED ON THIS DEVICE
	.UCBVS:! BLOCK	1		;POINTER TO THE VSL WHICH OWNS THIS UCB

	UCBLEN:!			;A UCB LENGTH

		DEPHASE

	;DEVICE AND RESOURCE TYPE DESCRIPTIONS

	     %UNKN==0		    ;THIS IS AN UNKNOWN MOUNT REQUEST
	     %ZER1==%UNKN	    ;THIS IS A 'NO LEVEL' RESOURCE
	     %TAPE==1		    ;THIS IS A TAPE MOUNT REQUEST
	     %DISK==2		    ;THIS IS A STRUCTURE MOUNT REQUEST
	     %DTAP==3		    ;THIS IS A DECTAPE MOUNT REQUEST
	     %DSMT==4		    ;THIS IS A DISMOUNT REQUEST
	     %STRC==5		    ;THIS IS A STRUCTURE
	     %TVOL==6		    ;THIS IS A TAPE VOLUME RESOURCE
	     %DTVOL==7		    ;THIS IS A DEC-TAPE VOLUME RESOURCE
	     %HLR1==%STRC	    ;THIS IS A HIGHER LEVEL RESOURCE
	     %LLR1==%DISK	    ;THIS IS A LOWER LEVEL RESOURCE
	SUBTTL	ALLOCATION AND DEADLOCK AVOIDANCE MATRICES


	;'A' Matrix entry

		PHASE	0
	.AMNAM:! BLOCK	1		;ASCIZ RESOURCE NAME ADDRESS
	  AM.USE==1B0			;SLOT IN USE, (MUST BE SIGN BIT)
	  AM.PRM==1B1			;NAME STRING FROM PERMANENT A MATRIX
	  AM.PRR==1B2			;RESOURCE (STRUCTURE) IS 'PERMANENT'
					;AND WILL 'NEVER' BE REMOVED FROM SYSTEM
	  AM.NAM==RHMASK		;ADRS OF NAME STRING
	.AMSTA:! BLOCK	1		;ENTRY STATUS BITS (SAME AS .UCBST),,0
	  AM.DVT==UC.DVT		;MATRIX ENTRY TYPE (%TAPE, %DISK, ETC)
	.AMCNT:! BLOCK	1		;ENTRY COUNTS
	  AM.AVA==7777B11		;COUNT OF UNITS AVAILABLE
	  AM.ALO==7777B23		;COUNT OF UNITS ALLOCATED
	  AM.CLM==7777B35		;COUNT OF UNITS CLAIMED (OWNED)
	.AMDLK:! BLOCK 1		;SCRATCH WORD FOR USE DURING
					;DEADLOCK AVOIDANCE COMPUTATIONS
	AMALEN:!			;MATRIX ENTRY LENGTH
		DEPHASE

	MAXRES==3777			;MAXIMUM NUMBER OF A RESOURCE AVAILABLE
	SGNBIT==4000			;SIGN BIT FOR RESOURCE COUNTS

	;'A' Matrix Header

		PHASE	0
	.AMHDR:! BLOCK	1		;MATRIX HEADER
	   AM.LEN==-1,,0		;LENGTH IN LEFT HALF
	   AM.CNT==777B35		;HIGHEST INDEX CURRENTLY IN USE
	   AM.MCN==777B26		;# OF SLOTS IN THIS MATRIX (.GE. AM.CNT)
	.AMSPR:! BLOCK	AMALEN-.-.AMHDR ;SPARE HEADER WORDS
		DEPHASE


	;'B' & 'C' Matrix Entries


		PHASE	0
	.SMJOB:! BLOCK	1		;USERS JOB NUMBER 400000+RID FOR BATCH
	.SMFLG:! BLOCK	1		;ENTRY FLAG WORD
	  SM.IGN==400000,,0		;IGNORE THIS ENTRY
	  SM.CNT==0,,-1			;RESOURCE COUNT
	.SMDLK:! BLOCK	1		;DEADLOCK FLAG BITS AND SEQUENCE NUMBERS
	  SM.PLY==1B0			;ON IF THIS PROCESS HAS BEEN PLAYED
	  SM.DLK==1B1			;ON IF THIS PROCESS IS IN A DEADLOCK
	  SM.SEQ==RHMASK		;POSITION PLAYED INTO SAFE SEQUENCE
					;IF SM.PLY IS ON
	.SMRES==.-1			;RESOURCE # OFFSET (WITH BASE OF 1)
	  SM.RSN==-1,,0			;RESOURCE NUMBER
	  SM.CLM==0,,-1			;TOTAL CLAIMED
		BLOCK	2		;SPACE FOR 2 RESOURCE NUMBERS
	SMALEN:!			;MINIMUM ENTRY LENGTH
		DEPHASE
	SUBTTL  REQUEST FOR MOUNT ATTRIBUTES

;THIS IS A REQUEST TO QUASAR (ACTUALLY MTCON) FROM A USER TO RETURN
;ATTRIBUTES OF A MOUNTED DEVICE.  THE MESSAGE SENT BY THE USER
;CONTAINS ONLY THE HEADER AND THE DEVICE DESIGNATOR.  QUASAR
;ADDS THE PID AND CAPABILITIES WORDS AND PASSES THE MESSAGE TO
;MTCON, WHO THEN SENDS A REPLY TO THE USER'S PID.

;!=======================================================!
;!      MESSAGE LENGTH       !     MSG TYPE (.QOMAT)     !
;!-------------------------------------------------------!
;!                         FLAGS                         !
;!-------------------------------------------------------!
;!              USER'S ACKNOWLEDGMENT CODE               !
;!=======================================================!
;!                   DEVICE DESIGNATOR                   !
;!-------------------------------------------------------!
;!                      USER'S PID                       !
;!-------------------------------------------------------!
;!     USER CAPABILITIES     !        USER JOB #         !
;!=======================================================!

	PHASE MSHSIZ

.MATDV:! BLOCK	1		;DEVICE DESIGNATOR
.MATUS:!			;SIZE OF USER ATTRIBUTE REQUEST MESSAGE
.MATPD:! BLOCK	1		;USER'S PID
.MATCP:! BLOCK	1		;USER'S CAPABILITIES AND JOB NUMBER
.MATQS:! 			;SIZE OF QUASAR-TO-MTCON MESSAGE

	DEPHASE
	SUBTTL  RESPONSE TO REQUEST FOR MOUNT ATTRIBUTES

;!=======================================================!
;!      MESSAGE LENGTH       !   MESSAGE TYPE (.QOMAR)   !
;!-------------------------------------------------------!
;!                         FLAGS                         !
;!-------------------------------------------------------!
;!              USER'S ACKNOWLEDGMENT CODE               !
;!=======================================================!
;!                 FLAGS (NONE DEFINED)                  !
;!-------------------------------------------------------!
;!                      ENTRY COUNT                      !
;!-------------------------------------------------------!
;!                        ENTRY 1                        !
;!-------------------------------------------------------!
;!                           .                           !
;!                           .                           !
;!                           .                           !
;!-------------------------------------------------------!
;!                        ENTRY n                        !
;!=======================================================!


	;DEFINE THE MESSAGE TYPE

	.QOMAR==2		;TAPE MOUNT ATTRIBUTES ANSWER


;EACH ENTRY CONSISTS OF A 1-WORD HEADER (LENGTH IN LEFT HALF, TYPE
;IN RIGHT HALF) FOLLOWED BY THE ENTRY-SPECIFIC INFORMATION. THE
;FOLLOWING ENTRIES ARE RETURNED FOR MAGTAPE DEVICES:

;.TMVOL		LIST OF SIXBIT VOLIDS

;.TMSET		SIXBIT SETNAME

;.MATDD		DESIGNATOR OF MT DEVICE

.MATDD==100
SUBTTL  The ARCHIVE Message - Function 41 (sent by IPCC)

TOPS20 <

	PHASE 0
ARC.HD:!BLOCK	1		; Header

ARC.FN:!BLOCK	1		; Function and reason for message
	AR.FNC==0,,-1		; Function code
	AR.MOD==-1,,0		; Function modifier (reason)

ARC.PR:!BLOCK	1		; Protection of file
	AR.PRT==0,,-1		; LH is unused

ARC.T1:!BLOCK	1		; Tape ID #1

ARC.N1:!BLOCK	1		; Further tape #1 info
	AR.TSN==-1,,0		; Tape saveset number
	AR.TFN==0,,-1		; Tape file number

ARC.T2:!BLOCK	1		; Tape ID #2

ARC.N2:!BLOCK	1		; Saveset and file nos. for tape #2

ARC.TT:!BLOCK	1		; TAD file written to tape

ARC.AS:!BLOCK	10		; Account string

ARC.FL:!			; File name begins here

ARC.SZ:!			; Minimum size of ARCHIVE msg

	DEPHASE

>  ;END TOPS20 CODE
;	BLOCK DEFINITIONS FOR MDA (MOUNT/DISMOUNT/ALLOCATE/DEALLOCATE)
;
;TAPE DENSITY BLOCK
.QBDEN==42
;	.QBLEN==0	;TAPE DENSITY BLOCK LENGTH
	.QBTDN==1	;TAPE DENSITY CODE (.TFDxx)
;TAPE TRACK BLOCK
.QBTRK==43
;	.QBLEN==0	;TAPE TRACK BLOCK LENGTH
	.QBDRV==1	;TAPE TRACK REQUEST CODE
	   .QBDR9==1	; WANT 9 TRACK DRIVE
	   .QBDR7==2	; WANT 7 TRACK DRIVE
;LABEL TYPE BLOCK
.QBLTP==44
;	.QBLEN==0	;LABEL TYPE BLOCK LENGTH
	.QBLAB==1	;LABEL TYPE CODE (See .TFxxx)
;REMARK BLOCK
.QBRMK==45
;	.QBLEN==0	;REMARK BLOCK LENGTH
	.QBREM==1	;START OF ASCIZ REMARK TO BE SENT TO OPERATOR
;TAPE VOLUME LIST BLOCK
.QBVOL==46
;	.QBLEN==0	;TAPE VOLUME LIST BLOCK LENGTH
	.QBVLS==1	;START OF LIST OF SIXBIT TAPE VOLUME IDS (MAX 63)
;VOLUME SET LOGICAL NAME BLOCK
.QBLNM==47
;	.QBLEN==0	;LOGICAL NAME BLOCK LENGTH (MUST BE 2)
	.QBLGN==1	;SIXBIT LOGICAL NAME FOR THIS VOLUME SET
;MOUNT/DISMOUNT FLAG BLOCK
.QBMFG==50
;	.QBLEN==0	;FLAG BLOCK LENGTH (MUST BE 2)
	.QBMDF==1	;MOUNT/DISMOUNT FLAG BITS
	  QB.PAS==1B0	;ADD STR TO PASSIVE SEARCH LIST (ACTIVE IS DEFAULT)
	  QB.EXC==1B1	;WANT EXCLUSIVE/SINGLE ACCESS (SHARE IS DEAFULT)
	  QB.NOC==1B2	;WANT /NOCREATE (CREATE IS DEFAULT)
	  QB.DSK==1B3	;THIS IS A STRUCTURE REQUEST (UNKNOWN IS DEFAULT)
	  QB.TAP==1B4	;THIS IS A TAPE REQUEST (UNKNOWN IS DEFAULT)
	  QB.WLK==1B5	;WANT VOLUME SET WRITE LOCKED
	  QB.WEN==1B6	;WANT VOLUME SET WRITE ENABLED
	  QB.REM==1B7	;ASK OPR TO REMOVE STR ON DISMOUNT
	  QB.SCR==1B8	;WANT SCRATCH TAPE
	END