Google
 

Trailing-Edge - PDP-10 Archives - BB-4172H-BM - language-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

;
;
;         COPYRIGHT (c) 1975,1976,1977,1978,1979,1980,1981,1982
;                    DIGITAL EQUIPMENT CORPORATION
;
;     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  WHICH  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


QSRVER==4			;MAJOR VERSION NUMBER
QSRMIN==0			;MINOR VERSION NUMBER
QSRWHO==0			;LAST EDITOR
QSREDT==1214			;EDIT NUMBER
SUBTTL	Table of Contents

;               TABLE OF CONTENTS FOR QSRMAC
;
;
;                        SECTION                                   PAGE
;    1. Table of Contents.........................................   2
;    2. Revision History..........................................   3
;    3. Accumulator Definitions...................................  11
;    4. Symbols derived from GALCNF...............................  12
;    5. Changable System Parameters...............................  13
;    6. Abbreviations Used in QUASAR-10...........................  14
;    7. RDB  --  Request Descriptor Block.........................  15
;    8. ROB  --  Requested Object Block...........................  17
;    9. QH   --  Queue Header Definitions.........................  18
;   10. QE   --  Queue Entry Definitions..........................  19
;   11. OBJ  --  Object Queue.....................................  21
;   12. PSB  --  Processor Status Block...........................  23
;   13. SPL  --  Spool Queue Definition...........................  24
;   14. CSM  --  Canonical SPOOL Message..........................  25
;   15. CLM  --  Canonical LOGOUT Message.........................  26
;   16. The Messages and their respective codes...................  27
;   17. The HELLO Message -- Function 1...........................  28
;   18. The RELEASE Message -- Function 2.........................  29
;   19. The CHECKPOINT and REQUEUE messages -- Functions 3 and 4..  30
;   20. The NEXTJOB and CREATE Messages -- Functions 5 and 7......  31
;   21. EQ   --  The External Queue Entry.........................  32
;   22. The ABORT Message -- Function 6...........................  40
;   23. The LIST Message -- Function 10...........................  41
;   24. The MODIFY Message -- Function 11.........................  42
;   25. The KILL Message -- Function 12...........................  44
;   26. The LIST ANSWER Message -- Function 13....................  45
;   27. The REQUEST FOR CHECKPOINT Message  --  Function 15.......  47
;   28. The DEFER Message  --  Function 16........................  48
;   30. Event Counters............................................  50
;   31. The COUNT Message  --  Function 20........................  52
;   32. The COUNTANSWER Message  --  Function 21..................  53
;   33. The SETUP/SHUTDOWN Message  --  Function 22...............  54
;   34. The RESPONSE-TO-SETUP Message  --  Function 23............  55
;   35. The OPERATOR-ACTION Message  --  Function 24..............  56
;   36. The HOLD/RELEASE Message  --  Function 25.................  57
;   37. The SPOOL Message - Function 26 (sent by IPCC)............  58
;   38. The LOGOUT Message - Function 27 (sent by IPCC)...........  60
;   39. IPCF Parameters...........................................  61
;   40. Common Parameters.........................................  62
;   41. Prolog macro for generating common header.................  63
;   42. Random Macros.............................................  64
;   43. Failsoft System Definitions...............................  65
;   44. QUASAR Fatal Error Codes..................................  66
;   45. Definition of the Known Queues............................  67
SUBTTL	Revision History

	COMMENT	\

Edit	Module	Explanation

   1	ALL	First System Version Of QUASAR-10 February, 1975

   2	QSRSCH	Operator NEXT Command Caused Batch Job Tables To Get Out Of Sync

   3	QSRMEM	Add New Routine For Cusp Version (CSPMEM) To Clean Core When
		Cusp Is Going Dormant.  Call It M$CLNC

   4	QSRMAC	Invent High Availability Queues
		The Pages Belonging To Them Remain Even If The Queue Is Empty
		Define QH.HAQ In The Queue Header Flags, Include In QUEUES Macro
	QSRMEM	Have M$GCOL Collect Empty Pages That Are Not High Availability
		Remove Some Checks From M$PFRE

   5	QSRSCH	Clean up some code in SCHSTR to remove an extra
		call to I$VSTR.
	QSRIPC	Have SNDFAI save the correct address of a requeued message
		in the IPS entry, and also have it requeue "all"
		messages to SYSINF whether the error was recoverable
		or not.
	QSRQUE	Q$KLPD clobbers H and AP causing a great deal of trouble.
		Preserve both of them.  Also take check out of Q$RTMS for
		the message type, and call Q$KLPD for all returned messages.

   6	QSRFSS	Move index-SAT words into the index itself.
		Start integrating code for multiple sections.
	QSRINT	Start moving code to open the master queue files into QSRINT
		from QSRFSS.

   7	QSRFSS	Fully integrate code for multiple sections.
	QSRINT	On TOPS10 whenever master queue file is extended,
		force the RIBs to be written.  On fatal STOPCDs,
		store away acs so they can be found easily.
		Call M$IPRM when an IPCF receive failed with error IPCUP%.
	QSRMEM	Install M$IPRM

  10	QSRMAC	Define the TEXT Message as an acknowledgement of an operation.
	QUASAR	Implement the global string routines to build the TEXT message.
		Give TEXT message as a return if the caller sets MS.ACK non-zero.
	QSRINT	Invent I$WHEEL to check if caller is an operator of some flavor.
	QSRQUE	Call I$WHEEL in HELLO message processor.
		Send explicit TEXT acknowledgements after KILL, MODIFY, LIST.
	QSRSCH	Call I$WHEEL during default processing if (.EQDIR .NE. G$DIR)
  11	ALL	Insert code for the 6.02 device names.
	QSRQUE	Move changable data from the internal queue to the external
		queue request during Q$NEXTJOB.
	QSRSCH	Insure the Batch job limits for cards, paper tape, etc...,
		get applied to the spooled requests.
	QSRINT	Complete moving code to open master files from QSRFSS.

  12	QSRSCH	Broadcast TEXT message with TX.NMS set now that it has been defined
	QSRQUE	Remove the old Q$SYNC code.
	CSPQSR	Watch for in-coming TEXT messages

  13	ALL	This is the version of QUASAR-10 sent to Field Test, June, 1975.

  14	QSRMAC	Eliminate most of edit 12 and instead invent the Request For Checkpoint
		message.  Every SPLMBC minutes, ask the component to Checkpoint itself.
		Add a word to the PSB to contain the next time to request a checkpoint.
		Define ABO.DI in the ABORT message as the directory of the requestor.
	QSRSCH	Keep track of the Checkpoint time, send during the scheduling loop.
		The Request for Checkpoint message serves a dual purpose.
		  1)  The individual spoolers don't need to watch the time for Checkpoints
		  2)  The message is used to determine if the component is still alive
		Therefore, dead interlock recovery is done every SPLMBC minutes.
	QSRMEM	Have ANYOUT look for pages to destroy first.
	QSRQUE	Install Q$RCK to actually send out the Request for Checkpoint message.
		Include directory of sender in ABORT message.

  15	QSRMAC	Define the Canonical SPOOL Message.
	QSRINT	Invent a new class of routines, the FD Manipulaters.
	QSRQUE	Use the Canonical SPOOL Message throughout the spooling subroutines.
		Generalize SPLINC to include based on the Canonical SPOOL Message,
			call it Q$INCL.
	QSRSCH	Build a Canonical SPOOL Message in S$RELE, call Q$INCL for the Log File.

  16	ALL	Major Change of QSRMAC (#27).
	QSRMAC	Include /REPORT FP areas in all requests.
		This adds 2 words to the minimum FP size.
	QSRQUE	Set and check the Request Doesn't Exist bit instead of the old ones.
	QSRSCH	Set RDE in the external request during SCHDEF if all files are /REMOVEd.
	QSRINT	Monitor change to 6.02. The extension of a spooled LL or LU is LPT.

  17	GALGEN	Ask for Automatic Forms Change Threshold.
	QSRMAC	Define FRMTHR = the answer from GALGEN.
		Add definition of the DEFER Message.
		Define the Canonical LOGOUT Message.
	QSRQUE	Include Q$DEFER to operate on the Defer Message.
		Implement File-Specific Modifies.
		Use the Canonical LOGOUT Message in Q$LOGOUT.
	QSRMEM	Define co-routine ".SAVAP" to save/restore AP.
		Add ".CALLn" to save/restore the preserved acs.
	QSRSCH	Use FRMTHR instead of the absolute 100.
		Build a Canonical LOGOUT Message in S$RELE.
	QSRINT	Add I$FMCH to compare 2 FDs with masks.
  20	GALGEN	Add question for enforcing the jobs core limit.
		If the answer is YES, ask for the default value of /CORE.
		If the answer is NO, define the default = 0.
	QSRMAC	Extract INPCOR = G.ICOR (the GALGEN value).
	QSRSCH	Insert code in INPSCH to use the core values.

  21	ALL	Become version 1A

  22	ALL	Major Change of QSRMAC (#30).
	QSRINT	Get the maximum IPCF packet size from the operating system during
		initialization and store it in G$MPS.
		Install I$CSM for TOPS20.
	QSRQUE	Determine the entry size for the IPC and IPS queues at runtime using
			the maximum packet size in G$MPS.
		Include the number of files in File-Specific Modify, re-work
			Q$MODIFY, Q$KILL, Q$DEFER, BLDKMS, FILMOD.
	QUASAR	Use G$MPS whenever a check must be made for the maximum IPCF packet size.

  23	QSRMAC	Define the Universal Directory Specification
	QUASAR	Remove G$LOCS, G$SDIR, and G$FFAD
	QSRINT	Add more TOPS20 routines

  24	ALL	Make consistent use of connected and logged in
		directories in TOPS20.

  25	QSRIPC	If C$GET does a query which returns false, clear IPCPND.
	QSRINT	Add I$READ and I$WRIT for TOPS20.
		Add I$CRIP routine.
	QSRFSS	Call I$CRIP in the appropriate places.

  26	**NOTE	[SYSTEM]QUASAR no longer requires [SYSTEM]INFO
	QSRMAC	Add a bit in the external queue to indicate that the creator
		of a request was privileged at the time of creation.
		This will reduce the number of CHKACC's required in the spoolers.
	QSRSCH	Set the Privilege bit appropriately.
	QUASAR	Dispatch messages from [SYSTEM]IPCC independently.
	QSRIPC	Move code to establish a PID into QSRINT.
		Remove C$ISM since QUASAR handles the dispatch.
	QSRINT	Add I$EPID and associated routines for acquiring a PID.
	CSPQSR	Remove code for [SYSTEM]INFO, call [SYSTEM]IPCC instead.

  27	ALL	Major Change of QSRMAC (#31).
	QSRMAC	Make .EQPAT optional and TOPS10 only.
	QUASAR	Lay the groundwork for handling multiple PIDs.
		Add G$SFAL to notify all concerned of an invalid PID.
		Isolate dispatch for messages directed to [SYSTEM]QUASAR (G$QPID).
	QSRQUE	Remove Q$RTMS, G$SFAL directly calls Q$KLPD.
	QSRIPC	Add C$GIPC to get a specific response from [SYSTEM]IPCC.
		Re-arrange SNDFAI to call G$SFAL.
	QSRMEM	Define co-routine ".SAVEH" to save/restore H.
  30	QSRINT	Break up QSRINT into the appropriate modules.
		Name the new ones QSRT10 & QSRT20.

  31	QSRQUE	Have CHKMCH just check for matching owner field
		rather than complete directory.
	QSRSCH	If the request protection field is 0 fill in a default
		protection using the contents of G$SPRT.

  32	QSRMAC	Define TX.MOR indicating another ACK to follow.
	QUASAR	If TX.MOR is set at G$MSND, don't clear G$ACK.
		Add G$CSIX for sixbit conversions.
		Add G$CCHR for a Single Characters.
	QSRQUE	Have Q$CREATE send an explicit acknowledgement indicating:
		    Quename:Jobname=/SEQUENCE:s, n Files

  33	QSRSCH	Could ask for Forms Change for non-existant (EQ.RDE) requests,
			Override Forms Type for those requests.

  34	GALGEN	Ask Questions about conversions from Blocks to "Units".
	QSRMAC	Extract the answers.  Define EQ.NBL in .EQLM2 for Output Queues.
	QSRQUE	Replace code that deals with Spooled Limits with some that counts blocks.
	QSRSCH	Convert blocks to limit appropriately during default filling.

  35	QSRMAC	Invent the "listable" bit (QH.LST) in the queue header.
		Put in CLQ message.
		Add new bit to batch release message to flag that the
		log file is to be printed.
	QSRQUE	Check "listable" bit on LIST requests.
		ACK for CREATE in 'INP' with an after parameter was wrong
		because H pointed to 'AFT'.
	QSRSCH	Zero copies field for log file if RL.PRL is off.

  36	QSRSCH	Default the /OUTPUT field in SCHDEF('INP').

  37	ALL	Become version 2.
		Major change of QSRMAC (#32).
	QUASAR	Provide LUUO handler for new STOPCD calls.
	QSRMAC	Remove definitions now found in SBSMAC, Search it.
		Make the same change to the PROLOGUE Macro.
		Re-arrange CHECKPOINT and REQUEUE messages so that the
			entire block is available for CHECKPOINT information.
	QSRT20	Have I$KSYS return seconds to shutdown minus 1 minute.
		Set up IPCF quotas during I$EPID.
		Change I$STCD to accept standard calls.
	QSRT10	Change I$STCD to accept standard calls.
	QSRSCH	Ask for checkpoint from all components after KSYS has expired.
	QSRQUE	Don't give extended "ACK" during create of "RDE" requests.
		Change Q$CHECKPOINT and Q$REQUEUE to account for
			the changes to those messages.
	CSPQSR	Accept indicator in call to CSPINI as:
		  0 = old style call
		 -1 = caller will handle interrupt system.
  40	QSRQUE	Deferred requests recovered from the failsoft file had
			/LIMIT:0 sent to the spooler.
		Move Q$CDIN to inline code in KILPSB.
	QUASAR	Add G$MCOR as minimum system value of /CORE.
	QSRT10	Fill in G$MCOR with %CNMMX.
		If IO.BKT is set on Master file, use SETSTS to clear it.
	QSRT20	Set G$MCOR = 0, there is no system minimum.
	QSRSCH	Check value of G$MCOR after defaulting /CORE.
		Use G$MCOR in input scheduling as PSB minimum.
	QSRIPC	PDL used during IPCF interrupts was too short.
		Could miss a call to I$POST.

  41	QSRQUE	Report words not being cleared during Q$INCL.
		Could MODIFY a file if it had been /REMOVEd previously.
	QUASAR	Wrong ac loaded on returned packets.

  42	QSRMEM	Re-define free space management to optimize size and paging.
		Add M$MOVE for moving entries between queues.
	QSRMAC	Define the "route" message (function 17) to change the routing
		  of output from one station to another.
		Include S$USE as scheduling vector for the USE queue.
	QUASAR	Add dispatch entry 17 to S$ROUTE.
	QSRSCH	Install S$ROUTE and tables required, convert station
		  numbers in OUTREJ.
		Assume forms are frozen if "NO OPERATOR ON DUTY".
		Apply the bias (SPLLIM) on a per file basis.
		Add linking dispatch for the USE Queue (S$USE).
	QSRT10
	QSRT20	Install I$OPER to check if an operator is present.
	QSRQUE	Call M$MOVE during Q$REQUEUE, Q$NEXTJOB, Q$CKAF, and KILPSB.

   43	GALGEN	Don't convert LPT limit factor from pages/page to
		pages/block.  Add a question for the number of minutes before
		system shutdown to stop scheduling automatic forms changes.
	QSRMAC	Extract new symbol from GALCNF.
	QSRSCH	If KSYS is set and is less than FRMKSY minutes away,
		don't schedule a forms change.
		PRIO:0 now means default.  Default it in SCHDEF, and change
		link-in routines to make PRIO:1 do fifo linking.
	QSRT20	Maintain spooled file-sizes in pages on -20.

   44	QSRADM	Add new module QSRADM  to handle system
		administrative functions.  Move all the routing routines
		from QSRSCH to QSRADM.
	QSRMAC	Include .REQUIRE for QSRADM in PROLOGUE  macro.
	QUASAR	Call A$INIT, and dispatch to A$ORTE on a
		ROUTE message.
	QSRSCH	Remove routing code and put in QSRADM.

   45	ALL	Cleanup accumulator conventions in all QUASAR modules.
		P registers "must" be saved by ALL routines which use them.
   46	ALL	Major change of QSRMAC (#33).
		Start rearranging code and data-structures to allow for
		new user and directory number format on TOPS20.
	QSRMAC	Add account string block to the EQ.
		Define the Request Descriptor Block (RDB).
		Invent new CBL error code.
	QSRT10	Invent I$EQQE, I$QELA, I$SMEQ, I$RMCH, I$DFEQ.
		Make I$VSTR much smarter.
		Remove I$DCHK.
	QSRT20	Invent I$EQQE, I$QELA, I$SMEQ, I$RMCH, I$DFEQ.
		Write I$VSTR.
		Remove I$DCHK.
		Start removing/changing JSYSes which are non-
		existant or different in TOPS20 release 2.
	QSRMEM	Invent M$PCNT to determine whether a given
		number of pages can be acquired.
	QSRQUE	On LISTANSWER keep track of the number of pages
		needed to build the listing and if the number of pages needed
		to build the last listing are not available give the new
		CBL error.

   47	ALL	Start putting in event counters.
	QSRQUE	Remove all PSB handling routines, Q$RCK, Q$HELLO, and Q$KLPD.
		Move the ACK call from Q$LIST and move it to Q$LANSWER
		after check for %CBL since otherwise user never gets CBL error.
	QSRADM	Insert all PSB handlers and routines removed from QSRQUE.
		Invent COUNT and CNTANSWER messages.
	QSRT20	Put in STGWLD routine to compare a "wild"
		string against a base string.
		Uninvent I$MSTR, it wasn't useful on -20.
	QSRT10	Uninvent I$MSTR and have I$VSTR do its work.

   50	QSRMAC	Define flags for calling C$SEND.
	QSRMEM	In M$MOVE, if moving to a queue with no scheduling
		vector defined, use M$ELNK to link the entry in.
	QSRSCH	Remove scheduling vector for USE QUEUE.
	QSRIPC	Modify calling sequence to C$SEND to optionally
		allow specification of additional action to be performed.
	QSRT10	Cleanup I$EPID a little.
		Add some more debugging aids, i.e. the CRASH routine.
	QSRT20	Change I$CHAC to allow access only if caller
		is a wheel or the request owner.
		Add some more debugging aids, i.e. the CRASH routine.

    51	QSRMEM	Call new routine I$MFFP to find first free page in
		my address space during initialization.
	QSRT10	Add new routine I$MFFP.
	QSRT20	Add new routine I$MFFP.
   52	QSRMAC	Add QUASAR job number to COUNTANSWER.
	QSRT10	Set job number in COUNTANSWER.
	QSRT20	Set job number in COUNTANSWER and fix problems with I$VSTR.

   53	QSRMEM	Incorporate performance improvements in garbage collection
		and free page searching.
	QSRT10	GETTAB directories for prime and redundant queues at
		initialization time on -10.

   54	QSRT10	Make I$GTAB into a local routine.
	QSRT20	Extract structure from spooled file name and store it
		in the CSM so FTSPLIT works on the -20.
	QSRIPC	Set "truncate if too long" on all receives.
	CSPQSR	Set "truncate if too long" on all receives.
	GALGEN	Ask about FTSPLIT on the -20.

   55	QSRSCH	Call routines in operating system interface to handle
		/UNIQUE checking of directories.
	QSRT10
	QSRT20	Add I$UQST, I$UQCL, I$UQCH to worry about /UNIQUE directory
		checking for batch requests.

;;First field-test release of GALAXY release 2, Jan, 1977

   56	QSRMAC	Invent the RDE queue.
	QSRQUE	Place jobs which get the RDE bit set into a
		separate queue, the RDE queue.
	QSRSCH	If a known component has said that it can handle RDE jobs,
		try to schedule it one before checking the processing queue.
	QSRT10	Make the maximum IPCF packet size equal to the
		MAX(SPL.SZ,monitor supplied maximum).

   57	QSRSCH	Add the "bias" to the limit for each copy of each file
		rather than each file.
200	QSRMAC	Begin release 3 development.  Major change of QSRMAC (#34).
		Take length of FD out of the FP and add a length field to the FD.
		Define two new queues, XFR and BIN.
	ALL	Use new FD/FP format.  This change affects the format
		of the CSM, FP, MODIFY message.
	QSRSCH	Add a release entry to scheduling vectors (SCHREL).
		Add vectors for the new queues.
	QSRQUE	Call the SCHREL entry instead of S$RELE.

201	QSRT20	Fix some problems with edit 200.

202	QSR???	Change all QUASAR modules to use the new GLXLIB conventions,
		routines and symbols. Also add some debugging code.
203	QSR???	Integrate more of GLXLIB

204	QSR???	Change to use the new GLXLIB segment

205	QSR???	Begin adding QSROPR, ORION-QUASAR interface

206	QSRMAC	Remove file-specific modify symbols.
		Remove FP.IGN field from the FP.
	QSRSCH
	QSRQUE	Remove group 2 (file-specific) modify, and make the various
		parameters part of the group 1 (queue-specific) modify parameters.
	QSRT10
	QSRT20	Remove I$FMCH.

207	QSR???	Make use of the GLXLIB module GLXINT for interrupt handling
		and common operating system tasks.

210	QSR???	Move TEXT message to GLXMAC

211	QSRMAC	Major change 35 to %%.QSR, message format change (.MSxxx)

212	QSRMAC	Make /UNIQUE values 1 and 2 rather than 0 and 1 so that it can be default.
		Make /RESTART a 2 bit field with values 1 and 2 for the same reason.
	QSRSCH	Default the /UNIQUE and /RESTART fields.

213	QSRMAC	Add canonical device types
	QSRADM	Add new object queue creation code
	QSRTx0	Add I$NLDV for finding number of local devices of type 'xxx'

214	QSRMAC	Insert new definitions for the PSB and the HELLO message.
		Insert definitions for new SETUP and RESPONSE-TO-SETUP messages.
	QSRSCH	Re-write entire module from scratch to implement new scheduling
		algorithms.
	QSRADM	Re-write A$HELLO and KILPSB to keep up with all the other changes.

215	ALL	Due to interim release on the -20 called version 3,
		make this version 4 of GALAXY.  Continue with new
		scheduling changes.

216	QSRMAC	Change ROUTE message to use full words for nodes, to allow
	QSRADM	TOPS20 style node names

217	QSRMAC	Add symbol for file spooler XFRSPL OBJect type.
		Add mask symbol for flags in flags word of HELLO message.

220	QSRMAC	Get rid of the AFT queue and keep AFT jobs in the
	QSRQUE	appropriate external queue.
	QSRSCH

221	QSRMAC	Add new Table of Contents.

222	QSRQUE
	QSRSCH	Make jobs which have been scheduled and checkpointed at
		least once get restarted sooner after a system crash by
		invisibly bumping its priority.

223	ALL	Remove FTSPLIT conditional in preparation of new general
		dependency list.

224	QSRMAC	Define new data-structures (and re-define old ones) for new
		dependency list.

225	QSRMAC	Create the QSRMDA module which will contain all the routines
	QSRMDA	which do things with file-structures.  Include the .REQUIRE
		for QSRMDA in the PROLOGUE macro.

226	QSRMAC	Invent the RDR queue for Readers (card).  Take the structure
	QSRSCH	word out of the LISTANSWER message and just include a bit
	QSRQUE	which indicates waiting for structure.

227	QSRT10	Add a routine to validate objects.
	QSRADM	Add the hooks to call the object validation routine.
	QSRMAC	Add INPMAX which defines the maximum number of Batch
		streams which can be started.
230	QSRMAC	Change PROLOGUE macro to .REQUIRE QSRSHO if QUASAR is defined.
	QSRSHO	Add a new QUASAR module for display messages.

231	QSRMAC	Remove .REQUIRE Statements for all Modules
		and Create a Separate Command file QUASAR.CMD
		to load the module.

232	ALL	Remove PROLOGUE macro from QSRMAC. Use PROLOGUE in GLXMAC.

233	ALL	Changed DEFLIM OUTP to be compatible with QMANGR
234	QSRADM	Modified The route processor for the new
		message types.
	QSRDSP	Added the SHOW ROUTE TABLE message processor.

235	QSRMAC	Modified INPMAX so as to get its value as a GALGEN parm.
	QUASAR	Added G$NBAT as a global parm. Used to keep track
		of the number of batch streams started.
	QSRT10	Modified I$VOBJ to use G$NBAT
	QSRSCH	Modified the SHUTDOWN code to Update G$NBAT.

236	QSRMAC	Define  a  symbol representing the number of
                words used for the .EQLIM block.  Also,  get
                rid of the old .EQ??? and EQ.??? symbols.
237	QSRMAC	Add IBM and Card Reader queues
	QSRSCH	Add Card Reader scheduling code. IBM is the same as card punch.

240	QSRMAC	Add the new Network data base structure.
	QSRSCH	Modify all calls to network subrutines to use the new routines
	QSRADM	Deleted all network support from this module
	QSRNET	Added this new QUASAR module in support of Networks.

241	QSRDSP	Modified the queues display to its new format.
	QSRSCH	Modified the scheduler so that network devices get shutdown
		when the queue is empty.

242	QSRT10	Fixed I$LGFD so that it generates ledgible file names
	QSRMDA	Fixed a bug in D$ESTR which allowed null structure names.

243	QSRADM	Added support for SET LIMIT-EXCEEDED commands.
	QSRMAC	Here also
	QSRMAC	Added support for DISP:RENAME

244	QSRMAC	Modify the Spool Msg structure for DISP:RENAME
	QSRT10	Add more DISP:RENAME code

245	QSRT10	Complete the DISP:RENAME coding

246	QSRQUE	Fix a bug which caused create's with bad structure names
		to be fail-softed. This caused QUASAR to stopcode
		if it was restarted since when Q$CREATE rejected the
		entry the second time, QSRFSS couldnt handle it.

247	QSRMAC	Add .FPINF to the EQ for the card reader
	QSRSCH	Add defaults for the SPRINT queue
	QSRT10	Fix I$CSM for DISP:RENAME

250	QSRMAC	Changed a duplicate definition of SP.DFR under SPL.SF
		to SP.FLG.
	QSRT10	Changed I$CSM to use the new definition.

251	QSRT20	Fix a bug in I$CSM so that device numbers specified
		in the spool message FD are parsed.

252	QSRMAC	Expand EQ limit block to 6 words.
		Define a Device Status Update msg (Function 31).
		Change the Object queue entry OBJSTS to 1 word which
		will contain a code describing the Object status.
		Define the object status codes.
		Add operator intervention symbols, DEFLIM it, and add
		to the Object queue parameter words
		Add RSU.CD to the Response-to-Setup message. This
		contains an optional reason why the device count not
		be started.

253	QSRQUE	Fix the Request-Id logic so that RIDs are maintained
		after queue modification
	QSRSCH	Add code to INPFJB so that it checks the opr intrvn
		status before scheduling a job for a stream.
		Add code to default the opr intrvn status for batch jobs.

254	QSRIPC	Fix C$GET so that oversize packets are recieved properly.

255	QSRADM	Remove Set Job Priority - make it a Modify Command.
		Add code for Set OPr/NO-OPR Intrvn.
		Change A$OREQ, A$OHLD, A$OREL to use Req Id instead of
		Jobname & Seq number.
		Add A$DELETE to remove jobs from the queues
		Add A$STATUS to update the Object status via a device
		status update message

256	QSRT10	Fix I$LGFD so that it generates unique funny-name
		log file-specs

257	QSRDSP	Re-write the Show Status and Show Parameters routines
		to display the data in a different format

260	QSRSCH	Add code
	QSRT10	     to support
	QSRQUE		 the /NOTIFY option

261	QSRMAC	Add %READN to object status code list.
	QSRADM	Fix A$OBST so the Free running objects are always set 'IDLE'
	QSRDSP	Fix DMPSTS so that the call to CHKSPC for the /AFTER parm
		is made after we're sure that there is a /AFTER parm
	QSRQUE	Modify NOTIFY routine to put out a crlf first.

262	QSRMAC	Delete Function 24, operator action message (Now obsolete)
	QUASAR	Add G$RMTE for remote operator queue requests
		It contains the node at which the operator is located.
	QSRQUE	Fix Q$CREATE so that the correct number of limit words
		are BLT'd from the EQ to the QE
		Modify FNDREQ so that if its checking an operator request,
		it looks at G$RMTE and only wins if the queue entry is
		destined for that operators remote station
	QSRSCH	Fixed LNKPRI so that priority 1 jobs are always linked
		to the end of the queue, regardless of limit specifications.
	QSRADM	Added a DOSCHD to the SET message processing routine
		Added code in A$MODIFY, A$OHLD, A$OREL, A$ODEL
		and GENRDB to support the .ORNOD block in operator msgs.
	QSRNET	Make QUASAR completly Node number/Node name knowledgable.
		Ie., make it so that it understands either an
		octal node number or a sixbit node name in all cases where
		a node value is referenced.

263	QSRMAC	Add symbols for /BATLOG: switch
	QSRSCH	Add code for /BATLOG: support

264	QSRMAC	Add %REQUE to the list of object status codes
	QSRSCH	Fix scheduling bug in batch for opr intrvn allowed
		Also add defaulting code for batch log type

265	QSRMAC	Change .QEJBN so that it contains 2 values:
		QE.UJN==0,,-1  ;Users Job Number
		QE.BJN==-1,,0  ;Batch Job Number
		Also change CHE.FL, adding CH.JBN which is the
		job number of the checkpointed batch job.
	QSRQUE	Modify Q$CHECKPOINT so that it save the batch job number.
		Add routine Q$NOTIFY to setup /NOTIFY parameters.
	QSRT10	Delete routine I$NOTF
	QSRT20	Delete routine I$NOTF

266	QUASAR	Deleted G$OLNK hack.
	QSRSCH	Deleted references to G$OLNK.

267	QSRMAC	Delete .OTBIN and .OTXFR symbols. Define them in GLXMAC.

270	QSRSCH	Add processing code for XFR queue.  Simple first come
		first serve scheduling.

271	QSRMAC	Add symbols QE.AVO, QE.AVI to redefine .QEITN for
		account verification (-10 only)
	QSRSCH	Add hooks for Account Verification
	QSRT10	Add routines I$VACT, I$ACCT. These two routines
	QSRT20	   are used for Account Verification. I$ACCT is
		   a no-op on the -20.

272	QSRMAC	Delete OBSNLP
	QSRSCH	Delete code supporting OBSNLP. This modifies the
		scheduler such that it does not shut down objects
		just because there are no jobs in the queue AND
		there is another object which needs to be started.
		Remote objects will still be shut down when the
		Queue go empty.

273	QSRMAC	Add QH.INV to queue header flag.
		Add OBSINV to object flags
		Add node block to list queues request message (function 10)
		Add QH.INV to QUEUES macro.
	QSRADM	Add support for initializing invisible objects when the
		object gets started.
	QSRDSP	Add support in D$SHST and D$SHPR so that invisible objects
		are not displayed in status/parameters requests.

274	QSRMAC	Delete SPRINT .EQLIM definitions for CMOD, CSIZ, NCRDS.
		Add %EQUFT for file retrieval
		Add new object scheduling bit OBSINT (internal shutdown)
	QSRSCH	Modify CHKOBJ so that it shutsdown the object if its
		remote or if OBSINT is lit.
	QSRT20	Modify I$DFEQ so that if the job name in the EQ is
		null,,it gets defaulted to the first 6 chars of the filename.
	QSRQUE	Rewrote Q$ARCHIVE so that it conforms to GALAXY standards.
	QSRADM	Changed GETOBJ so that the right field is checked when
		looking to see if the object is free running. (QH.TYP)
	QSRDSP	Changed DEPRET to fix a few bugs. (Wrong ac's, a PUSH and
		no POP, etc.)

275	QSRMAC	Add new message type .QONWA and description (function 36).
		Add FP.RCD to the BIN queue FP description.
	QSRNET	Add NODE Jsys to GETNODE routine.
		Modify N$INTR so that when a node goes offline, it
		searches the object queue looking for objects started
		and setup for that node. If it finds one, it sends a
		node went away message to the controlling spooler.
		When done, it sends ORION the same message.
	QSRT20	Change I$RDEF so that it picks up the tape info from
		the limit words instead of the checkpoint words.
	QSRQUE	Change Q$ARCHIVE so that it saves the tape info in
		the limit words instead of the checkpoint words.

276	QSRMAC	Move EQHSIZ to the end of the EQ header definition (where
		its supposed to be)

277	QSRMAC	Put all ARCHIVE definitions under TOPS20 conditional.
	QSRQUE	Move Q$ARCHIVE to QSRT20.
	QUASAR	Change Archive message entry point to I$ARCHIVE.

300	QSRMAC	Add a redefinition of the RDB for ARCHIVE requests.
		Delete the ARCHIVE definition's in the KILL msg.
		Add an ARCHIVE msg Create code (.QIRET) so that
		creates wont fail if Queue Creates are disabled.
	QSRQUE	Delete routine FNDFRR and make it work with FNDREQ.
	QSRT20	Delete all Archive notification routines (they
		were terribly written) and replace them with code
		that works.

301	QSRMAC	Change .EQUSR to .EQOWN (Just to be consistant)
		Add symbol EQNMSZ which is the length of .EQOWN.
		Add .QOCQE (Short Create message) to msg type table
	QSRQUE	Add Support code for .QOCQE (Short Create Message)
	QUASAR	Add .QOCQE to the QUASAR message Dispatch Table.

302	QSRMAC	Change .EQTIM to .EQSPR (SPARE)
	QSRADM	Delete 'Requeue' from Request-Id error message
	QSRQUE	Change create ack to put out # of files if greater then 1.

303	QSRT20	Change Archeive Notify to put flag on in .OFLAG and to
		use .CMDIR for the Directory

304	QSRMAC	Add SUP.PL for DN60 PORT,,LINE #'s to SETUP message

305	QSRMAC	Add SUP.ST For remote network status/flag bits in SETUP msg.

306	QSRMAC	Add .OOTAP to OBJPRM definition and OBDTAP to
		line printer attributes for spooling to mag tape
	QSRADM	Modify A$OSTA to support spooling to mag tape
	QSRSCH	Modify SETUP to support spooling to mag tape

307	QSRMAC	Add NETBPM to network data base (Bytes Per Message)
	QSRADM	Add DN60 CALL11 Support

310	QSRMAC	Change INPMAX to default to 30 streams total
		Add INPLOG to default /OUTPUT:(LOG,NOLOG,ERROR)
		Change INPOIP to default to 1 (opr intrvn required)
	QSRSCH	Change INPDEF to use INPLOG to default the /OUTPUT: switch

311	QSRMAC	Add a new limit word to the card reader inperpreter .QE
		queue. This new field is CNOD which is the node where the
		card deck origionated.

312	QSRMAC	Remove error DRN - Duplicate Mount Request Name - from
		the QUASAR error list.
	QSRT20	Remove the code from U$MNT which checks for duplicate
		mount request names.
	QSRSCH	Modify LPTFJB so that if spooling to tape, it skips the
		device check

313	QSRMAC	Add a new queue for DBMS (DBM)
	QSRSCH	Add scheduling control vector for DBMS

314	QSRMAC	Add %OPRWT to list of Object status codes for DN60
		Add error code WFM (waiting for tape/structure mount) for
		R.ACE and Co.
	QSRT20	Have U$MNT always return through E$WFM.

315	QSRADM	Make A$OBST set remote stations which are internally
		shutdown show up as IDLE instead of NOT AVAILABLE
	QSRDSP	Fix a bug in PADLIN so that the correct byte count
		is calculated even if the count is negative.
	QSRNET	Fix a bug so that TOPS-10 603A and non-decnet
		TOPS-20 monitors will run. The bug fix is just to
		make sure that the central site status bits
		are not set to indicate that the node is offline.
	QSRQUE	Fix a bug - make sure that if a BIN (SPRINT) request
		is processed, that no NOTIFY takes place.

316	QSRADM	In the DEFINE command processor, start a batch stream for
		Emulation.
	QSRDSP	In the list file archiving code, if the user specified
		/ALL, list the archived file name (From .QECON)
	QSRT20	In the File Archiving defaulting code, stash the archived
		file name in the connected directory area (.EQCON)

317	QSRMAC	Add response to setup code %RSUNC for
		'Port/Line not conditioned'
		Add another word to the network data base for port/line handles
		Add another word to the setup message for port/line handles
	QSRADM	Add code to A$DEFINE so that it generates a handle for
		that port/line number by which the front end and spoolers
		can identify one another. Use the UDT and save in net DB.
	QSRSCH	Modify the setup message processor so that it sends the
		port/line handle along if setuping up a DN60 remote station
		Modify the Response to setup code so that, if the line/port
		handles do not match(%RSUNC) we will re-define the port/line
		and retry the device setup.

320	QSRDSP	Add code to D$DMNT (Show Mount Queues) to support
		'INFO MOUNT/USER:xxxx'

*********** Start MDA Modifications/Additions **************

321	QSRMAC	Remove the TOPS20 conditional from the MOUNT structures.
	QSRT20	Remove The MOUNT message processor from the U$MNT code
		and make it D$CMDR to create the MDA MDR queue. Put it
		into QSRMDA.
		Add I$DFMR to default the system dependent data for the MDR.
	QSRDSP	Change all MNTQUE references to MDRQUE
	QSRMDA	Add D$INIT to initialize the MDA system
		Add D$CMDR to create an entry in the MDR queue.

322	QSRMAC	Change the disk mount block type codes so that they fall in
		line with the tape block codes.
		Add 2 new block types, .MDNAM, .MDACT for the user
		number, the user name, and the users account string.
	QSRMDA	Add the block processors for the new codes.

323	QSRMAC	Impliment Base Level -3 of MDA . Make Mucho changes/refinements
		to the MDA structures. Update all the Pictures for all QUASAR
		structures. Delete the File Retrieval cancel msg Structure.
	QSRT10	Add code for Initialization to build the UCB chain.
		Add routine I$OMNT to parse operator mount messages and
		send them off to the correct msg processor.
		Delete all U$xxxx routines and/or modify them to be I$xxxx.
	QSRQUE	Make Q$LOGOUT exit through the MDA logout processor D$LOGOUT.
	QSRMDA	Add mucho code to support base level -3 of MDA. This base level
		supports tape mounts (no AVR) and replaces the UMOUNT/OMOUNT
		interface for tapes.
	QSRDSP	Cleanup/fix the tape/disk mount queue display routine to use
		the MDA structures.

324	QSRMAC	Add Volume status (on-line/offline) message block definitions

325	QSRMAC	Delete the file archiving cancel message decsriptions
	QSRT20	Delete the code in I$RMCH for matching file archiving
		requests since the cancel message is going to look just
		like all other cancel messages.

326	QSRMAC	Add /NOTE:, /BEGIN:, and /PRIORITY: to the list of short
		create blocks.
	QSRADM	Make D60CND set the IBM node offline. Make A$OSND send
		the message if the destination node is an IBM station.
	QSRSCH	Make RSETUP set an IBM node Online if the setup is %RSUOK.
		Make RSETUP set the IBM node offline if the response if
		%RSUDE and we were setup prior to getting the response to
		setup.
	QSRMDA	Make some mods to get MDA code running on the -20.
	QSRDSP	Delete/Change D$SHRT (Show route tables) so that it dumps
		the network data base.
		Make D$SMNT dump the remarks if /ALL is specified.
		Add code for /SCRATCH in D$SMNT.
	QSRQUE	Add processing routines CRQNTE, CRQBGN, and CRQPRI for new
		short create message blocks.

327	QSRT20	Make I$CACV get the user number from the EQ.
		Re-arrange some code in I$DFEQ to make sure .EQOID is
		defaulted before account validation

330	QSRT20 	Fix a bug in the file archiving notification code which
		caused a DTL stopcode. Must asve AP across the NSNDIT
		subroutine call.

331	QSRMDA	Add finishing touches on volume switch support (tape).
		Put up latest version for everyone to use.
	QSRDSP	Add REMARK and LABEL TYPE on tape Q display

332	QSRMAC	Add error code CIU.
	QSRMDA	Fix a bug in MDA Identify code to prevent OPR from identifying
		the users current tape as the user next tape in volume switch.
	QSRT10	Delete temporary code for setting/clearing DVCMDA.

333	QSRMAC	Add new Message type .QOREW for MDA Tape Rewind
	QSRMDA	Add code to support the new rewind function
	QSRT10	Fix a bug (MDA) so that if the device is not available,
		we don't lite the AVR bit on startup.

334	QSRMAC	Add Error Code ICD, Illegal Connected Directory Specified.
		Modify the setup msg block for passing DN60 line conditioning
		block
	QSRT20	Return Error ICD if Connected directory error
		Add a WTO for a File Retrieval Request.
	QSRNET	Remove IBM check from N$NODE and only return TRUE is online
	QSRSCH	Re-Work S$RSETUP and remove the old DN60 crocks and add some
		new ones
		Delete routine CHKNODE and put the node online/offline checking
		in the scheduler and the object validation in GETOBJ(QSRADM).
		Modify SETUP to pass a correct DN60 line conditioning block
		to the spoolers.
	QSRADM	Delete the DN60 line conditioning routines (They're moving to
		the spoolers) and re-work the DN60 support code.
		Add some more object validation to GETOBJ.
	QSRMDA	Move the PUSHJ P,UNLOAD from CHKVOL to the device status msg
		processing routine.

335	QSRMAC	Expand the node went away message so that we can stuff the
		port,,line number in .OFLAG and lite %ONLINE in .MSFLG to
		make it a Node Online Message.
	QSRADM	Add code in KILPSB so that if we are killing a processor for
		an IBM remote, we set the node offline
	QSRNET	Add entry points N$NONL (online) and N$NOFF (offline) for IBM
		online/offline processing. Have it send a node-went-away or
		node-came-online message to Orion.
	QSRSCH	Make the RSETUP routines call N$NONL & N$NOFF for IBM remotes.

336	QSRMAC	Add .FPF8B for 8 bit files
	QSRSCH	Add DN60 Node offline call to the shutdown code.
		Also, send the setup msg to DN60 devices regardless of
		requests in the queue.
	QSRADM	Delete the code to set an IBM node offline in SHUTDOWN NODE

337	QSRDSP	Add support to the show status processor for the emulation
		spooler. If the emulation spooler is running, send the status
		message to it so that it can generate the ack back to the OPR.

340	QSRT10	Modify I$IPS so that it works the same on both the -10 and
		-20. That is, if the message being sent is greater then the
		maximum packet size, then allow it to be sent anyway. We
		did this by allocating a page for the message and sending
		a page instead of a packet. This allows for GALAXY debugging
		where IP.CFL would not.

341	QSRSCH	TOPS20 QAR (20-00605) Delete the spooling to tape check
		in OUTFJB.

342	QSRADM	Add DN60 Signon support to DEFINE and SET NODE commands.
	QSRMAC	Add Node Status Bit NETSGN for Node Signon Required.
	QSRDSP	Modify D$NPRM to display Signon Required info

343	QSRMAC	Add a new status bit to the EQ for account validation required.
		Delete OBJECT status bit OBSAVW.
	QSRT10	Start adding code to support disk units in MDA. Build the
		UCB's and VOL's for disk drives in I$INIT.
		Make I$SACV always return true.
	QSRSCH	Delete the JUMPF .RETF following the call to I$SACV
		in NEXTJB.
		Delete the JUMPF SCHD.4 following the PUSHJ P,SCHSCH(P2)
		in SCHD.2
		Change the PUSHJ P,EQDFLT at BINDEF to PUSHJ P,INPDEF
	QSRNET	In N$NONL, change the check for .OTIBM to .OTBAT
		Also, only send the Node online/node offline message to
		ORION if the node is termination
	QSRADM	In A$HELLO, $LOG the processor signon event.
		In KILPSB, $LOG the deletion of a PSB.
	QUASAR	Add support for account validation response from ACTDAE,
		so that we dispatch to the correct routine.

344	QSRSCH	Add OBSSIP to S$SHUT code to check if setup in progress
		for shutting down an object
	QSRADM	Add OBSSIP to A$SHUT to check for setup in progress when
		shutting down an object
	QSRDSP	Remove label type from /ALL mount queue listing

345	QSRADM	Change A$OSHT to remove the OBSSIP bit check added above.
		Instead, make A$OSHT call S$SHUT to shut down the object.
		Also, change SHUTNO to call S$SHUT to shut down an object.
	QSRT20	Zero the VL.SCR (CHKP.5-3) bit if MOUNTR passes back a
		volume ID.

346	QSRSCH	Add a hack (Should be removed ASAP) to correct a problem
		in BINDEF where the CNOD limit word can get trashed by
		the call to INPDEF. Save the CNOD limit word across the call.

347	QSRT20	Modify I$AGE so that it always returns a value. If the
		calculated time difference is 0, then return 1 second.
	QSRT10	Same As Above.

350 - 600	Spare Edit Numbers For Release 4

601	QSRMAC	Expand the EQ status bit (QE.ACT) so that it is a field 2
		bits in size. Add EQ.ACT codes %VALID, %VALRQ, %VALPD
	QSRT10	Change I%ACTV, I%CACV, I%VACT to use the new codes.

	;Start implimenting disk structure support for MDA.

602	QSRMAC	Add symbols .VLVID, .VLSTR to the VOL structure description.
		Add symbols .UCBAU, UC.UTP to the UCB structure description.
		Add Symbols for .DSVOL block in the .QOTST message
	QSRT10	Add disk structure initialization support for MDA.
		Define .QOCAT and .QORCT message formats

603	QSRMAC	Add symbol for %RMSTR, removal of str from user's search list
		ACK code type.

604	QSRMAC	Add %UNKN for unknown mount requests
	QSRMDA	Fix many bugs in MDA code for Strcutures
	QSRDSP	Add a display routine for SHOW STATUS STRUCTURES

605	QSRMDA	Make MDA pass and understand the ack code for
		catalog requests.
		Delete routine D$MVSL as it is now not needed.
	QSRDSP	Change the reference to D$MVSL to do check .VSUCB instead
		Make KONTBL a global table

606	QSRMAC	Add .RDBVS to the RDB structure for canceling mount requests
	QSRT10	Change I$KMNT to use .RDBVS
	QSRMDA	Change MDA to enable multiple volume set requests
	QSRDSP	Change D$SMNT for new MDA structure

607	QSRQUE	Make the message length check in Q$KILL upward compatible
	QSRADM	Add OBSSIP to A$OSHT so that setup in progress is equilvelant
		to setup
	QSRSCH	Add OBSSIP to S$SHUT when shutting down an object.

610	QSRMDA	Fix 2 bugs. One in D$IDEN which would cause an IVU stopcode
		by deleting a volume which was requested by someone. Second,
		make REASSIGN take a VSL Address in S2 so that we assign the
		device to the correct volume set.

611	QSRMDA	Add .VLOID the owner id for private structures
		Don't build structure until we know the owner (via GETCAT)

612	QSRMDA	Make DELVOL delete all volumes of a multiple
		volume structure.
	QUASAR	Add support for [SYSTEM]GOPHER messages
	QSRT10	Add routine I$GOFR to process [SYSTEM]GOPHER messages.

613	QSRMEM	Remove routine SETSIZ and make the references just a LOAD.
	QSRT10	Remove routine I$IPS for sending IPCF Messages
	QSRMAC	Remove the IPCF resend and input queues
	QSRIPC	Delete all old code and rewrite QSRIPC, using the GLXLIB
		IPCF interface

614	QSRADM	Change A$OSHT to remove the OBSSIP bit check. Instead make
		A$OSHT call S$SHUT to shut down the object. Also change
		SHUTNO to call S$SHUT to shut down the object.
	QSRSCH	Add OBSSIP to RSET.2 so that it gets cleared when OBSSUP does

615	QSRIPC	Add a call to G$SFAL in the unrecoverable send code to
		delete the PSB and clean up the world if the 'user' that
		went away was a processor.

616	QSRIPC	If we queue up a message to be resent later, then return true.
	QSRMDA	Add code to build the 'A' matrix for deadlock avoidance.
		Change USRNOT so that it sets up the page in both the ACK code
		and the NOTIFY code.
		Add new DISK. function to clear MDA WAIT in UNISTS.
		Fix a bug in DELVSL so that if called with TMPVSL as the VSL
		to delete, then we do the right things

617	QSRT10	Delete the code to get the device attributes during UCB
		generation and make it a separate subroutine called I$GATR
	QSRMDA	Add support for the ATTACH/DETACH monitor messages.
		Make SET x AVAILABLE call I$GATR to setup attributes.

620	QSRMDA	Add support for LOCK and UNLOCK commands

621	QSRSCH	OK Fans, I've finally gone and done it. With this edit,
		QUASAR now has an EVENT queue for scheduling events by time.
		Rewrote routine CHKTIM.
		Added routine S$EVENT
	QUASAR	Deleted routine G$STIM and added global variable G$EVENT

622	QSRMDA	Display units of structure when dismount ack comes thru.
	QSRMAC	Symbolize forward, backward pointers in .VLPTR

623	QSRQUE	Delete the call to S$SCHK when a checkpoint message is processed
	QSRSCH	Make S$SCHK check the OBJTIM word to see if a checkpoint is
		scheduled. If it is non-zero, then return now.
		Make CHKPOINT zero the OBJTIM word.
	QSRT10	Change the INIT code so that if there is no MDA support in the
		monitor, we don't do MDA initialization. Also, add code to force
		QUASAR to wait for the system components it needs before
		continueing to process.
	QUASAR	Add global word G$MDA for an MDA support flag.

624	QSRMDA	Add ALLOCATION support
		Add code to support QUASAR running without MDA monitor support
	QSRMAC	Add MR.LNK, delete VS.LVL.

625	QSRMDA	Rewrite MATUNI, and add routines ACKUSR, CHKVSL, MNTVSL in
		order to support multiple VSL Mount requests
	QSRT10	Add routine to send SHOW messages for system DUMP list to
		PULSAR.
		Add a new error E$MDA for no MDA monitor support
	QSRDSP	Make D$SMNT check to see if the request is an allocation
		request and if it is, skip over it.

626	QSRMDA	Make D$CMDR be Global
	QSRT10	Add code to process messages from the monitor for search
		list changes.
	QUASAR	Add an entry for the above monitor message

627	QSRDSP	Do something with /MOUNTED and /FREE on
		SHOW STAT DISK

630	QUASAR	Add a dispatch entry point for the LOGIN message.
	QSRT10	Add routine I$LOGN to process LOGIN messages

631	QSRMAC	Add VS.WAL for a new volume set state (waiting for allocation)
	QSRALC	Create module QSRALC for MDA Device Allocation
	QSRMDA	Add calls to D$ALOC (in QSRALC) to perform device allocation

632	QSRDSP	Add SHOW ALLOCATION support

633	QSRMDA	Add support for ASCII resource names

634	QSRMAC	Add definition for unknown mount request type

635	QSRMDA	Add support for /SINGLE, /NOCREATE, /WL, /PASSIVE
	QSRMAC	for disks.

636	QSRMAC	Add .QOALC message type for BATCON allocation processing
	QSRQUE	Add support for MDA batch Interface (Call I$BMDR)
	QSRT10	Add routines I$BALC (Batch Allocation Msg) and I$BMDR
		for creating the batch request MDR.

637	QSRMAC	Move the MM.ALC bit from .MMFLG to .MEFLG, and call it ME%ALC
		Also Change MM.ALC to MM.DLC
		Invent the .QOPRM message (just like .QOMNT) except
		for use only from pre-scan process to QUASAR.

640	QSRMDA	UiO hacking... Countdown on locked strucutres notification
		Single access file structures.  Operator intervention streams
		Automatic unlod of file structure when last lock goes away.

641	QSRMDA	More UiO hcaking.  Don't account for resources
	QSRALC	used by 'permannent' structures.  Remove those resources
	QSRMAC	from the A matrix at startup time

642	QSRMAC	Add VS.REM to indicate user wants str dismounted
		Add MM.REM for the same reason
	QSRDSP	Fix bugs in STATUS displays involving remote stations
	QSRMDA	Fix bugs causing PPR stopcodes in the batch/MDA interface
		Make MDA wait for the dismount ack from PULSAR before
		acking the user
		Add support for user requesting structure dismount
	QSRT10	Fix more batch/MDA interface problems (I$UMDR)
	QSRALO	Add code to make the allocation routine reset the VSL link
		codes for pseudo requests if the allocation wins

643	QSRT10	Fix a bug: Make I$KMNT check for a null MDR and delete it
		before returning.
		Add some code to support MDA UUO interface (Errors only)
	QSRMAC	Add MR.ACK for checking ack msg requests in mount/allocate
	QSRMDA	Modify D$MOUNT to set MR.ACK and USRNOT to check it.

644	QSRT10	Add full UUO support for MDA.
	QSRMAC	Add MR.GFR to indicate request was generated by UUO.
	QSRMDA	Make USRACK look at MR.GFR and exit if set
		Rewrite VALMSG so that it validates ALL message block lengths

645	QSRMAC	Invent ASL.NQ so MDA can tell PULSAR to remove a str from
		a user without regard for quotas

646	QSRMDA	Fix a couple of bugs. First, delete the call to MATUNI in
		ALCVSL for mag tapes and make DELVSL always call ALCVSL.
		Second, Create a new status bit, VS.NMT (Not Mounted) so that
		we can mount a volume set for a pseudo process without really
		assigning the device.
		Add $ERJMP macros for error calls which will display the
		error for the operator.
	QSRMAC	Define some new error macros and codes for MDA

647	QSRMDA	Make MNTDRV look at 7 track codes, instead of 9 track
		Make DEFTAP call TAPRSN to validate the resource type
		Create routine REMOVE to delete a specific VSL and retry the
		mount with the remaining requests (If any).
		Call REMOVE from CATACK and D$RCAT

650	QSRMDA	Fix NBE (Negative 'B' Matrix) Stopcode. In DELVSL, lite VS.UAL
		with an IORM instead if INCR. In D$DVS, call DELVSL on a
		Deallocate.

651	QSRT10	Finish Set Tape Initialize, Add .QOIDN (Initialize Done)
		Message.
	QSRMDA	Add Support for MOUNT with ALIAS (OPR MOUNT command)
		Add quota enforcement support

652	QSRNET	Add support for device routing (Rewrite N$NRTE)

653	QSRMAC	Add definition for %TFxxx tape label types
		Make .TFDnn definitions as SYSPRM's
		Add error codes for MOUNT message parsing

654	QSRMAC	Add definition for %SITGO attribute and obsolete
		OBDLLC, OBDLUC and RO.PHY
	QSRADM	Add support for device attributes in KILPSB, A$HELLO, and
		A$OSTA.
	QSRNET	Change Device attribute check in N$CSTN for new attributes.
	QSRSCH	Add support for device attributes in the scheduler and
		RSETUP.

655	QSRMAC	Add an account string entry to the CSM and SPOOL msg
		descriptions for TOPS10.
	QSRADM	Add routine A$GPSB & A$LPSB to find a generic PSB entry
		using the object type and device attributes.
	QSRT10	Change I$CSM to move the account string from the monitor
		spool message into the connical spool message
		Change I$SMEQ to move the account string from the CSM to the EQ
		Change I$RALC so that it calls A$LPSB to find an allocation
		processor, and also make it look at .QECRE and the DEPN limit
		word before sending the request for allocation.
	QSRSCH	Delete the PSB search from the scheduling loop and insert a
		call to A$GPSB instead.

656	QSRMDA	Fix a bug in volume set name translation from lower case
		to upper case
	QSRQUE	In Q$REQUEUE, make sure we always convert the MDR to a
		pseudo process MDR
	QSRT10	Store BA%JOB+Request-id in the QE when building the
		MDR (I$BMDR)
	QSRALO	Store BA%JOB+Request-id in the QE when converting from a
		real MDR to a pseudo process MDR

657	QSRMAC	Add OBSSER (Stop after every request) to OBJECT status bits
	QSRMDA	Add LOCK /NOUNLOAD support
	QSRADM	Re-write A$OPAU to support various flavors of STOP

660	QSRMDA	Add DISMOUNT str:/NOCHECK

661	QSRMDA	Add D$ASGN to support foreign devices
	QSRT10	Add I$CUNK to support foreign devices
	QSRDSP	Modify D$SMNT for %UNKN displays

662	QSRMDA	Store density index into VS.DEN in the VSL and make DENSTY
		global.
	QSRDSP	Add code to display volume set, tracks, and density on MOUNT
		request listings. Also display single access mounts in SHOW
		ALLOCATION commands.

663	QSRDSP	Modify ACKs to include queue type on INP, LPT, etc. queue
		requests.

664	QSRALO	Merge this modult into QSRMDA and delete it
	QSRMDA	Add support for deadlock avoidance during volume switch
		and at IDENTIFY time
		Fix numerous bugs.
	QSRQUE	Add a new short create block for free running processors.
	QSRDSP	Add the remark, track and density data to the mount displays
	QSRMAC	Add VL.OWN to the volume status bits to indicate that the user
		owned this volume at some time

	;In-house 4.1 Load Test started 5-May-80

665	QSRMDA	At MNT.2B, delete the check for allocation wait.
	QSRSCH	At INPFJB, delete the check for dependancy and /AFTER
		times and always call I$RALC to check these and validate
		allocation.
	QSRT10	Make I$RALC always return FALSE unless we are no longer
		waiting for allocation (QE.WAL not lit)
	QSRADM	Rewrite A$FOBJ so that we call N$MTCH to compare the
		OBJNOD fields of the 2 object blocks.

666	QSRDSP	Delete the "alloc Wait' status from the SHOW QUEUE display
	QSRMDA	In D$IDEN, call D$BMTX to locate the guys 'B' matrix entry
		before updating his 'B' matrix.

667	QSRMAC	ADD %TFT20 TAPE LABEL DEFINITION FOR TOPS20
		MAKE %TFLBP ILLEGAL FOR TOPS20
	QSRT10	Make the I$ATCH code clear the MDA wait status in the UNISTS
		word for the port which was attached
	QSRNET	Always call the PURGE.DUP.OBJS routine for nodes online
		and nodes just added. Also, always gen a new node name for
		nodes online and just added.

670	QSRMAC	Add an event counter for the number of times the deadlock
		avoidance alogrithm is invoked.
		Delete all references to the /DEADLINE parm (obsolete)
		Add symbols MAXRES for the max resource count, and SGNBIT
		for the "A" matrix count fields sign bit.
	QSRMDA	Add the counter increment to D$DEAD
		Change the max number of a particular resource to MAXRES,
		from G$MAXJ.
		Change TELOPR to put out remark/track/density info on tape mnts
	QSRSCH	Modify INPSCH and INPRJI to fix a bug caused by multiple
		batch streams (same batch stream number) being started.
	QSRDSP	Add track type to show status tape
		Replace Req# with Job# in show status tape
		Fix a bug in mount queue display so that we get correct tracks
	QSRQUE	Delete the modify instruction for /DEADLINE

671	QSRMDA	Make the Mount request display for volume switches be the same
		as normal mount requests.
		Make /SCRATCH and /NEW tape volume sets work correctly
		Make Bypass label processing a privilaged label type
	QSRSCH	Fix a bug in the new UNIQUE code (INPSCH).
	QSRT10	Fix a bug - clear 'waiting for MDA' on ATTACH of either primary
		or secondary port (Not just primary port)

672	QSRMAC	Expand MDR for some accounting info.
	QSRMDA	Add hooks for MDA accounting
		Fix a bug - Always call the deadlock avoidance routine during
		device allocation
	QSRT10	Add subroutines for MDA Accounting
		In I$BMDR, do not set QE.WAM by default.

673	QSRMAC	Define VL.FLG to mask the .VLFLG flag bits area
		Add definitions for MDA defaulting from GALCNF
	QSRMDA	Add routine CKTVOL to check for duplicate VOLID requests
		in different volume sets
		In IDEN.3+x only move the .VLFLG flag bits from the mounted
		VOL block to the user VOL block
		In VSR.4 change the MOVEM P3,0(S2) to a HRRM P3,0(S2). This
		will preserve the VSL pointer flag bits in the left half.
		Add routine MNTOPR to notify the operator of pending mount reqs
	QUASAR	Add a generic error buffer called ER$XXX. This can be $TEXT'd
		into in order to generat an ack back to the user
		Move the call to DETACH up before the call to I%INIT.
	QSRT10	Fix misc bugs in the MDA accounting routines

674	QSRMDA	Delete the FROM: from the MDA opr displays
	QSRT10	Make the accounting routines do a DSKCHR to get the private
		structure bit.
		Make the login routine do the ACCT. UUO to get the users
		account string.
	QSRDSP	Fix a bug in CHKOBJ. Must save S2 around the call to N$NODE.

675	QSRMAC	Delete .MRACT from the MDR.
	QSRSDP	Put the secondary port unit back into SHOW STATUS DISK
	QSRT10	Make I$LOGN convert the batch MDR to a real MDR.
		Make the MDA accounting routines get the users account
		string and private structure bit at the time the account
		entry is made.
	QSRQUE	Delete the code from Q$CHECKPOINT which takes the job number
		from batch checkpoint messages and puts it into the QE.
	QSRMDA	On duplicate mount requests for tapes, don't allow attribute
		changes. (prevents NCM stopcode)
		On Set Tape Unavailable, do NOT unload the tape drive.

676	QSRMAC	Add new counts inc. deadlock failures, nextjob messages
		by objects, and mount by types
	QSRMDA	Do the counts for mounts and deadlock failures
		Add the MPP stopcode to the D$PPRE routine
	QSRSCH	Do counts on nextjob messages by object
	QSRQUE	Fix bugs in the Modify code which caused MPP and PPR
		stopcodes. Change Q$CREATE so that we ALWAYS generate
		a new request ID. Change MODI.5 so that we delete the
		old MDR for the request being modified.

677	QSRSCH	Fix up some undefined symbols under INPCOR conditional.
	QSRDSP	Change Batch queue display to include /CORE value. Also
		clean up random messages.

700	QSRMDA	In the dismount structure ack code, is the requestor was a
		pseudo process, then set the QE.WAM status bit instead of
		calling USRNOT.

701	QSRT20	SPR 20-14519 Make NTIMER build the file archiving object block,
		instead of relying on it being built by someone else.

702	QSRMAC	Fix counts to have MNXT counted correctly (+.OTMAX+1)
		Remove MABO so things remain the same

703	QSRDSP	The OPR command "SHOW STATUS NETWORK-NODE nnn" where nnn was
		an offline (unknown to QUASAR) octal node number would return
		a junk node name in the ACK. QUASAR assumes that all node
		names/numbers are in sixbit and would ^W/.../ the quantity.
		^N/.../ instead.

704	QSRMAC	Correct bad spelling in the IMO fatal error message.

705	QSRT10	Check DEVCHR bits DV.ASC!DV.ASP to determine if a device
		is in use instead of DEVTYP's TY.JOB field.

706	QSRMAC	Define new LIST message fields
	QSRDSP	Process new LIST message fields for SHOW QUEUE and QUENCH.

707	QSRDSP	QAR # 10-04634  Fix display for OPR> SHOW STATUS STRUCTURE
		/USER to show correct batch request number and notate same.

710	QSRSCH	Change all search references of D60JSY to D60UNV


711	QSRMAC	Implement /DISPOSE:RENAME correctly
	QSRSCH	Add routine RENDEF to default process /DISP:RENAME
	QSRT10	Add Routine I$REND to rename the file to DSK:[3,3]

712	QSRT10	Rewrite the ATTACH/DETACH routine for the new monitor
		message

713	QSRSCH	Fix /MODIFY of input /DEST and /BEGIN
	QSRDSP	List input /DEST as well as /PROC

714	QUASAR	Use new feature IB.DET to detach from FRCLIN.

715	QSRDSP	Do a DEVNAM UUO for the device specified in SHO STA TAP x
	QSRMDA	Do ***NOT*** poll the tape drives on MDA initialization
	QUASAR	Delete the IB.DET bit from the IB. GLXLIB defaults to detach
		if on FRCLIN
	QSRSCH	In INPDEF, zero .EQROB+.ROBAT to make sure no unit is specified
	QSRT10	In D$BMDR, save the pseudo job number in the QE (.QEJBN)

716	QSRMAC	Add symbol %RENAME for QUEUE. UUO and Short Create
	QSRQUE	Modify CRQODP to handle the %RENAME function
	QSRT10	Fix debugging code at SETO.1-2 (QAR 10-04678)
	QSRMDA	Put out an error msg for IDENTIFY with bad RID (QAR 10-04675)

717	QSRT10	Add routine I$CGEN which validates device requests
		Modify I$DTCH & I$ATCH so that multiple deatches for the same
		drive do not change the unit availability count and an attach
		for a previously unavailable drive gets the device attributes
		again
	QSRMDA	Modify TELOPR so that the device type is displayed
		for generic mounts
	QSRDSP	Modify D$SMNT so that the device type is displayed
		for generic mounts

720	QSRMAC	Add MR.QUE to the MDR flag word. Contains the object type of
		the process if a pseudo process
		Define VS.ABO for OPR mount cancels during volume switch
		Expand the VS.RSN field to 6 bits & VS.TRK to 3 bits
	QSRT10	Make I$BMDR set MR.QUE
		Delete the force line detach code (GLXLIB always detaches)
	QSRMDA	Change all calls to A$FREQ which just need an object type to
		use MR.QUE
		Make CANCEL MOUNT <str> or <*> work.
		Add support for mount cancel during volume switchs
	QSRDSP	Change all calls to A$FREQ which just need an object type to
		use MR.QUE
		Check VS.ABO before putting out a mount request

721	QSRMAC	Add RSU.PN to respond to setup message for prototype node name

722		Fix SCE stopcodes
	QSRMAC	Add VS.REL to indicate a reel id was specified by the user
	QSRMDA	Modify MNTVOL to set VS.REL
	QSRT10	Modify I$CUNK to check VS.REL

723	QSRMDA	Fix multiple scratch tape mount problem
	QSRT10	Add a WTO to the operator on a user mount cancel
		Make the cancel mount code call CHKOWN
	QSRDSP	Make show status structure display the time in hours:minutes

724	QSRT10	During initialization, turn off spooling so QUASAR can reassign
		physical devices (non-disk/tape) to users.

725	QSRMDA	Confused user when QUASAR tells him that pending UNLOCK has been
		canceled instead of pending LOCK.

726	QSRMAC	No way to tell if a given stream or unit has a process driving
	QSRDSP	it. Invent new status "No processor" to indicate the obvious.


727	QUASAR	Add code for statistics recording (G$LOG)
	QSRMDA	Clean up some noisy messages (those with bells).
	QSRQUE
	QSRT10

730	QSRADM	Use ^N instead of ^W for node names
	QSRDSP
	QSRMDA	Fix a bug so that the OPR cannot set a tape drive unavailable
		while the user is switching volumes.
	QSRT10	Modify I$BMDR so that we don't request allocation for jobs
		destined for remote nodes.

731	QSRMDA	Set and clear DVCMDA for all non-disk/non-magtape devices
		reassigned so that pretty messages will appear on the OPR
		terminal.

732	QSRMDA	QAR #10-04775  Make disable/enable volume recognition work
		correctly for both tape and disk drives

733	QSRT10	QAR # 10-04779  Reverse execution of GTNEN. with GETLCH
		to use correct terminal number with GETLCH

734	QSRADM	QAR # 10-04904 Can't shutdown the central node. Remove
		useless check at SHUTNO plus a few.

735	QSRT10	QAR # 10-04776 Confused programmer. Description of ACTSTR block
		says its storage for an accounting string. Not any more.
		Change comments a bit.

736	QSRADM	Add
	QSRNET	     prototype
	QSRSCH		      node
	QSRDSP			   support for DN60

737	QSRMAC	Remove definition for argument block and place in GLXMAC

740	QSRSCH	Fix QAR # 10-04950 Don't zero attributes in INPDEF.
	QSRMAC	DELETE DEFDEN AND ADD DEF7TK AND DEF9TK FOR 7 AND 9
		TRACK DEFAULTS.
	QSRMDA	ADD SUPPORT FOR DEFAULTING 7 AND 9 TRACK DENSITIES
		ALSO, DO NOT ALLOW NULL DISK VOLIDS ON DISK ONLINE
		ALSO, EXPAND VSL QUEUE ON STACK IN MNTVSL
	QSRNET	FIX SOME BUGS IN PROTOTYPE NODE SUPPORT FOR DN60
	QSRT10	DO USAGE ACCOUNTING EVEN IF NOT DOING ACCOUNT VALIDATION
	QUASAR	DELETE G$APID (NOT USED)

741	QSRMDA	Fix NCE stopcodes by checking VS.ABO in VSLRSN.
	QSRADM	Fix A$GBLK so that it is more defensive against bad messages

742	QSRDSP	Clean up parameter display when stream attrributes are involved.

743	QSRMDA	Don't set up AP at RCAT.0-1. FNDVSL already did it.
		Fix up LOCK code so that PULSAR always deletes a sstructure
		when a lock expires
	QSRIPC	In C$SEND, if no PID in SAB.PD, then skip resend logic
	QSRDSP	Enhance SHOW ALLOCATION display to include resource type.

744	QSRT10	Delete the WTO for invalid unit characteristics (of no use !)

745	QSRADM	Stop the resetting of device attributes in KILPSB!
		(%SITGO gets blown away)

746	QSRDSP	Allow ranges specified in SHOW PARAMETER or DEVICE to
		function correctly.

747	QSRT10	Enhance DECtape support. Change MOUNT queue display to
	QSRMDA	include device type and write locked/enabled status for
	QSRDSP	DECtapes. Change operator MOUNT message to include more
		information about DECtapes. Add DECtape accounting.

750	QSRDSP	Get rid of extra carriage return in SHOW STAT STR/USERS.
		Align "Ask" with Lim-Ex column in parameter display.
		Check for /FREE switch on SHOW STATUS TAPE display.

751	QSRMDA	Fix generation of structure mounted messages to ]<crlf>[

752	QSRMDA	Use symbolic, not numeric references to data within CATQUE.
753	QSRMDA	QUASAR adopted the habit of handing out logical names for free
		in the hopes of providing the user with a new "useful" way
		of accessing a device. It has the nasty side effect of not
		allowing the user to type .MOUNT MTA/switches twice, since
		QUASAR tries to assign the logical name 'MTA' to both tapes.
		Naturally, the first wins and the second loses. Also fix up
		ACKs that want to display logical names when there aren't any.

754	QSRADM	Change the default for transparance for IBM to off per B.S.
	QUASAR	Add a dispatch table for system messages to QUASAR
	QSRMAC	Add ATTACH/DETACH message definition to QSRMAC.
	QSRT10	Delete ATTACH/DETACH message definition.
	QSRDSP	Fix QSRDSP to display correct forms type
		Add 25 words to end of display page. Some mount displays
		exceed 50 words.

755	QSRMAC	Add .QEMDR & .MRQEA so we can point MDR's and QE at each other
	QSRMDA	Make MDA use .QEMDR & .MRQEA to reference MDR's and QE's
		Do not allow SET AVAILABLE if device already is available
		No not tell OPR to mount anything if batch req's has uniqueness
	QSRT10	Make MDA use .QEMDR & .MRQEA to reference MDR's and QE's
	QSRSCH	Make NEXTJB reset .MRQEA
	QSRQUE	Make REQUEUE reset .MRQEA
	QSRDSP	Fix mount display to prevent wrap around.
	QUASAR	Do not execute G$LOG (Statistics routine) if debugging.

756	QSRMAC	Add new object attribute OBSATR
	QSRSCH	If the processor resets the object attributes, set OBSATR
		When shutting down the object, only reset attributes if
		OBSATR is on
	QSRADM	When killing a PSB, only reset object attributes if OBSATR
		is on

757	QSRDSP	Modify the SHOW ALLOCATION display to include any volume set
	QSRMDA	names that the user has. Other minor cosmetic fixes.
	QSRQUE

760	QSRMAC	Some accounting changes. Keep the account string in the QE
	QSRQUE	so verification at scheduling time is faster, support the
	QSRSCH	new IPCF message returned from ACTDAE on a sucessfull account
	QSRT10	validation (it contains a possibly modified/defaulted account
		string) and move the new account string into the QE.
		Fix a bug where spooled files didnt get account
		strings unless account validation was required.
	QSRMDA	Fix logical name defaulting so that we always default the
		logical name, but if the REASSIGN fails, we zero the name
		and retry the REASSIGN UUO.

761	QSRADM	Simplify A$CPOB to use a BLT to accomplish the move.
	QSRSCH	Fix bug in scheduling of remote batch jobs
	QSRMDA	Fix big in DELRID for bad request id display
		Fix bug in DSMACK so that mounts do not disappear.

	;Field test tape #4

762	QSRQUE	Fix an old bug which caused mount requests to disappear.
	QSRSCH	Delete automatic checkpointing (performance fix) and let
		the spoolers send checkpoints when they feel like it
	QSRADM	Add code to send a null ack to all PSB's when a HELLO msg
		is processed. This will let QUASAR know what processors
		still exist.

763	QSRSCH	Jobs don't get scheduled for off-line nodes when spooling to
		a random device. Add a check.
	QSRADM	No not shutdown invisible objects on SHUTDOWN NODE command

764	QSRMAC	Define IPCC message type .IPCXC (XCHANGE disk unit).
		Define some new .EQ fields: .EQUSR, .EQBOX, .EQCST, .EQDEC
	QSRMDA	Impliment a scheme for letting PULSAR return text to QUASAR
		Do not create mount request for NUL: if pseudo process
	QUASAR	Add symbol MSGLN which defines G$MSG buffer length
	QSRIPC	Fix bug in C$SEND resend queue logic
	QUASAR	Define MSGLN for G$MSG length
	QSRSCH	Fix bug which caused remote devices to be shutdown (really)
		when the queue was empty

765	QSRT10	Check for NUL: on pseudo process MDR creates
		Fix DECtape accounting routines
	QSRNET	Don't check for non-standard devices (tape) when performing
		network device checks for the scheduler.
	QSRMDA	Modify D$DEAS, D$ASGN to support (better) DECtapes, etc.
		Fix a bug - Mount requests for strs when opr dismount fails
		If perm str is dismounted,,update the 'A' matrix

766	QSRMAC	Add OBSFRM to indicate forms change required
	QSRSCH	Fix DTS stopcode for IBM remote batch jobs
		Add support for forms type change for LPTSPL
	QSRT10	Add FTOACT feature test for FACT file accounting support
	QSRNET	Change output of route command to use decimal unit numbers
	QSRDSP	Add support to list reader interpreter (SPRINT) queues
	QSRADM	Add A$FRMC and modity SETFRM for LPTSPL forms change

767	QSRMDA	Tell the OPR if user deallocates a mount request
		Modify D$ESTR to not allow multiple entries for generic strs
		Modify volume switch code to pass back more descriptive
		errors in the volume switch directive message.
		Make the owner ID get set when a str is mounted
	QSRT10	Remove [..] from user ack on mount cancel
	QSRNET	Modify N$CSTN to not do routing for batch requests.
	QSRMAC	Add %VTMV to volume switch directive message
		Delete .VLOID (Use .CTOID instead)

770	QSRSCH	Clean up limits for plotter (they are minutes not feet)
	QSRDSP	Allow user setting/modification of PTP and PLT limits.

771	QSRQUE	Fix it so request modification does NOT modify the /NOTIFY
		ID of the origional requestor (once and for all !!!)
	QSRT10	Fix I$LOGN to use .QEMDR to locate the MDR for the QE.
		Also, check success in finding 'B' and 'C' matrix entries
		Also, make attach/detach disk processor create/delete UCB's
		as needed.

772	QSRMDA	Allow OPR mount to work if users requested the structure
		In MNTACK, if the mount fails then reset the forward/back
		VOL block address pointers in .VLPTR
	QSRADM	Fix the last 'No Processor' bug. Move the code to set
		genric attributes into the create object code.

773	QSRMDA	Fix the big ones !!! Re-organize the way device allocation
		is performed for mag tapes in order to prevent unwanted
		deadlocks.
		Finally make IDENTIFY work on BATCH mounts.

774	QUASAR	Define entry points for monitor exchange message and
		structure removed message
	QSRMDA	Add D$RMS to process the structure removed message
		Allow tape initialization during volume switch
	QSRT10	Add I$XCH to process the exchange message
		Add routine REMSTR to remove structures not currently mounted
		when the search list change message comes through
	QSRDSP	Add KSYS display to SHOW STATUS

775	QSRMAC	Add ARF (Arbitrary Rate Factor) and KTL (KSYS Threshold Limit)
	QSRSCH	values. Add KSYS checking (based on ARF values) for all
		output queues.
	QUASAR	Modify G$LOG so that if QUASAR is started within 10 minutes
		after the system is booted, it will not write out a restart
		record. This modification also creates a 70 minute window
		after system restarts during which the SYS:GALAXY.LOG file
		can be deleted.
	QSRT10	Allow user to request scratch tape with QUEUE. UUO.

776	QSRDSP	Fix a bug in allocation display so that the 'own' field is ok
		Validate job numbers on SHOW ALLOCATION JOB x
	QSRMDA	Notify users if OPR unlocks a structure
	QSRMAC	Remove .OFLAG, .OARGC, symbols (Defined in GLXMAC)
	QSRT10	Add routine I$CHKJ to check the schedulability of a request

777	QSRDSP	Display /OUTPUT and /BATLOG on batch /LIST:ALL

1000	QSRSCH	Produce a warning message when files with /DISPOSE:RENAME
		can't be renamed.

1001	QSRT10	Use FTFACT from GALGEN dialogue and delete references to FTOACT.
	QSRDSP	Correct mount queue display listing when a job name (volume
		name) is specified. Don't list the SPRINT queue if the user
		specified a job name, PPN or unit number.

1002	QSRSCH	Generate warning messages when /DISPOSE:RENAME fails and
	QSRQUE	add brackets around queue ACKs.

1003	QSRT10	Remove G$LOGN as the OPR can restrict batch jobs from OPR
	QSRSCH	Remove G$LOGN from batch schedeuling check since we won't
		schedule IBMCOM jobs if its set.
	QUASAR	Remove G$LOGN since its no longer needed (and won't be back)

1004	QSRMAC	Make default unit/stream parameters more reasonable.
	QUASAR	Define X$XCH to be D$XCH and delete [SYSTEM]GOPHER ID
	QSRADM	Add a DOSCHD call if status update returns %RESET.
	QSRMDA	Modify CHKBAT to get QE address from MDR and call S$INPS
		to check request schedulability
		Add D$XCH to process monitor XCHANGE messages.
	QSRSCH	Change INPFJB to call I$RALC (which calls S$INPS) to
		check the request schedulability
		Move all of the request dependent scheduler parameters into
		S$INPS - These include /AFTER, /DEP, operator hold, etc.
		Allow /DISPOSE:RENAME file processing for batch CTL and LOG
		files by having INPDEF call RENDEF.
	QSRT10	Delete I$CHKJ and add I$LCKS to check structure lock
		schedules. Also, have I$UMDR clear QE.ALR & QE.WAL.
	QSRDSP	In D$SMNT, call S$INPS to check request schedulability
		before including the request in the mount display

1005	QSRMAC	Check new bit in monitor LOGIN and LOGOUT message to determine
	QSRT10	if the job is a Galaxy batch job. The bit is LG.BSS (batch
		stream set). The regular batch bit doesn't do the job since
		both BATCON and MIC cause this bit to be set.

1006	QSRSCH	Move call to I$SYSV above G$SCHD check
	QSRT20	Fix I$SYSV to use new -1 value returned from KSYS check
	QSRT10	Fix I$SYSV to request a scheduling pass if KSYS state changes
	QUASAR	Fix G$MSND to set MF.NOM if a null ack is sent

1007	QSRMDA	Fix /SINGLE structure mount problem.

1010	QSRMAC	XP number of LPT banners, trailers and headers from GALCNF.
	QUASAR	Check for zero length messages sent to QUASAR
	QSRSCH	Do not schedule 'stopped' objects. Also minor performance win
		in job scheduling by moving 'stopped' check to top of scan
	QSRADM	Make A$OBST set the status correctly for 'stopped' objects
	QSRT10	Set spooled file protection code on /DISPOSE:RENAME files.

1011	QSRMDA	Fix 'No operator on duty' message so that it works
		Fix lost allocations as a result of batch requeues
		Do not put pseudo requests into 'mount wait' if just allocating
		Fix DISMOUNT/DEALLOCATE /NOTIFY
		Fix 'MOUNT/WAIT' so that it does something reasonable
	QSRQUE	Delete code in Q$CREA which sets up wakeup timer for /AFTER
		and put it into QSRSCH
		On batch requeues, call new routine S$AFTR to setup wakeup time
	QSRSCH	Add routine S$AFTR to setup /AFTER wakeup timer

1012	QSRDSP	Fix 'SHO STA STR/USER' for batch requests
	QSRT10	Move the PPN from the QE to G$SID before calling D$CMDR

1013	QSRSCH	Make it so that froms change will happen with the NEXTJB
		message if there is a schedulable job in the queue
	QSRT20	Fix I$AGE ala PCO 20-QUASAR-008
	QUASAR	Do not allow QUASAR to sleep forever (1 minute max)
	QSRADM	Fix START code - cancel pending shutdown (ala PCO 20-QUASAR-010)

1014	QSRMAC	Remove some TOPS10 conditionals from the EQ
	QSRMDA	Only call CKTVOL in BLDVSL if a tape mount request
		Fix Tape allocation problems by modifying a users allocation
		on the fly.

1015	QSRMDA	Fix bug in XCHANGE message processing that caused
		ill mem refs.
		Make SNDREC a global routine
	QSRT10	Make the ATTACH code do an automatic RECOGNIZE

1016	QSRT10	DO not stopcode if there are no tape drives on the system
	QSRMDA	Fix NBM stopcode - Check for 'ignored' entries in D$BMTX & CMTX
	QSRDSP	Fix SHOW STATUS TAPES/FREE so that only free drives are listed
		Fix SHOW STATUS TAPE so that drives owned by batch requests
		which are not running display the batch jobs request ID as the
		owner job number, not 1319 which is garbage...

1017	QSRMDA	Fix HUNG dismounts for invalid structures
		Have D$GUCB return 'No such device' instead of stopcoding
		Do not allow IDENTIFY on cancelled mount requests
	QSRT10	Fix I$CHAC bug (typo) @CHAC.2+1 change JUMPE to JUMPE S2,
		Fix attach/detach so we only 'recognize' on attach's
	QSRDSP	Fix retrieval queue listing so that columns line up

1020	QUASAR	Modify the GALAXY logging routine so that the log file is
		closed once a week. The log is renamed to Gddmmm.LOG
	QSRDSP	Do not modify the object status if it is not started
		Add another digit the REQ# column in mount displays
	QSRNET	Add routine N$PORT to check for multiple starts of
		different nodes on the same port/line
	QSRADM	Add hooks to call N$PORT.
	QSRMDA	Allow DEFTAP to set tape defaults on TOPS20

1021	QSRDSP	Make /DESTINATION and /PROCESSING work correctly for all
		flavors of queue listings.
	QSRT10	Add some 'foreign' devices to DEVTBL and DEVNTB.
	QSRMDA	Add support for SET TAP INIT /ABORT
	QSRSCH	In pass 2 of the scheduler, allow remote jobs to run when the
		requested node is off-line if we're spooling to a magtape.

1022	QUASAR	Fix a bug in GALAXY.LOG close code so we check times correctly
	QSRT20	Fix 2 bugs in archive notification - Use timer queue to
		schedule the notification (now once an hour), do notifications
		during QUASAR initialization, and check for page overflow
		and send multiple messages if they all won't fit in 1 page.
	QSRQUE	Fix user notification block so that it corresponds to the
		object types
	QSRNET	Fix a bug in N$NONL for prototype nodes which caused the
		real node name/number to get inserted into NETCOL when trying
		to convert the node data base entry back to a prototype.
	QSRMDA	Remove IVR stopcode and instead send 'TMV' message to PULSAR

1023	QSRMAC	Add event counters for IBMCOM
		Create a new message (.QOIBM) for IBM statistics
	QUASAR	Add routine IBMSTS to process the .QOIBM message

1024	QSRMAC	Add feature test switch FTIBMS which is to be used to decide
		if IBM statistics are to be done.
	QSRDSP	Fix bug at SHOW.7 so that SPRINT queue is displayed correctly
	QSRT20	Fix file archive notification bug

1025	QUASAR	QUASAR too big. Remove duplicate code in QSRT10 and QSRT20
	QSRADM	and put it into QSRADM. The routines affected are:
	QSRMDA		I$AGE	->	A$AGE
	QSRQUE		I$AFT	->	A$AFT
	QSRSCH		I$WHEEL	->	A$WHEEL
	QSRT10
	QSRT20

1026	QUASAR	Don't sleep for more than 1 minute.
	QSRMAC	Add RQ.TIM to allow pgms to specify reschedule time in requeues
	QSRQUE	Check for RQ.TIM in requeue processing

1027	QSRNET	Make N$NONL start an operators console output device
		(LPTSPL) when a termination prototype comes online
		Fix GET-NETWORK-TOPOLOGY for -20 so that with Phase III DECnet
		we allocate enough space for the entire network topology.

1030	QUASAR	Plug remaining holes in the spooling system that relates to
	QSRQUE	spooled CDR files on TOPS-20. QUASAR now will delete those
	QSRT10	files for batch jobs that have been canceled before they
	QSRT20	ran.

1031	QSRDSP	Check alternate port name on SHOW STATUS DISK commands.

1032	QSRMAC  Reorganize the prototype node support for IBMCOM.
		Define NETLOC as the opposite of NETCOL in the node data
		base.  Also add bit NETPRO to indicate actual online.
		Also add prototype mode.
	QSRADM	Make certain we only start up IBM objects as part of START NODE
		Make certain we only shut IBM objects as part of SHUT NODE.
		Change DEFINE processing to check for signon and to checkout
		signon file.
	QSRDSP	Display new prototype information, inc. SHO NET and PARA NET.
	QSRNET	Support the new scheme of things in the node data base.
		Add the routine to check out the state of nodes and the routine
		to parse the signon file for an IBM node.

1033	QSRMAC	Turn off deadlock avoidance.
	QUASAR	Don't schedule batch jobs if we now they can't LOGIN.
	QSRMDA	Define G$LOGN to indicate if LOGINs are allowed or not.
	QSRSCH
	QSRT10
	QSRT20

1034	QSRADM	Ack if operator shuts down node that does not exist.
	QSRDSP	Modify displays for SHOW STATUS NET and SHO PARA NET to
		leave room for large node names.  Add pointers from the
		prototype to the actual when same is online.  Remove
		data-termin-ready and silo-warn. from parameter display.
		Add timeout cat. to parameter display.
	QSRNET	In signon file, blank node name at end is not an error.
		Give warning if online processing and node is already online.
		Shutdown actual if not defined as IBM node.

1035	QSRMAC	Define IPCC message type .IPCMT (magtape unit accessible).
	QUASAR	Add an entry for .IPCMT in the message dispatch table.
	QSRT10	Add code to support .IPCMT messages.
	QSRMDA	Plug the last remaining holes in the dual-port logic.

1036	QSRDSP	Fix UDT to hours minutes conversion to make it more accurate.
		This in routine D$SSTR. Expand request-id field to 6 digits
		in all displays. Clean up pending KSYS time display.
	QSRT10	On detach disk message processing, don't set seondary port to
		be the port detached. This screws up displays and leaves the
		UCB data base incorrect. On attach messages, always use the
		attached port name, not the primary port name when doing the
		RECOGNIZE.

1037	QSRADM	Change the way IBM node parameters are set by default in the
		define node command @DEFI.2.

1040	QSRMAC	Add
	QSRADM	  support for
	QSRSCH		the NEXT
	QUASAR		     command

1041	QSRADM	Call the right routines in QSRNET to add nodes.
	QSRDSP	Widen LIMIT field in displays a bit.
	QSRNET	Concatonate all node on-line/off-line messages into one.
	QSRT10	If a create contains a blank user name, store the [PPN] in
		in the user name field.

1042	QSRMAC	Add symbol for msg from [SYSTEM]GOPHER on TOPS20 and reserve
		space in the release message for customers.
	QSRADM	Use new ORNMAC symbol DF.TPP instead of DF.TYP
	QSRT10	Clear FILDAE bit (400) when access checking queue protections.
	QSRMDA	Fix bugs in MOUNT STR/ACTIVE and MOUNT STR/PASSIVE. Clear
		DVCMDA on DECtape deassign (DECtape accounting broke it).
	QSRQUE	Fix a reversed table entry in the object defns

1043	QSRADM	In IBMCOM when prototype name is the same as actual name...
	QSRNET	When shutting down, don't shut down twice.
		When online processing, set both pointers the same.
		When offline processing, don't clear the node type.
		In either, use flag NOTIFY to notify ORION of change.
		In routing, if eq object matches a route entry which does not
		match the device, fail in N$CSTN.
	QSRQUE	Allow /NOTIFY to work with SPRINT jobs. Also notify when batch
		jobs submitted by SPRINT are finished.
	QSRSCH	Don't schedule batch jobs when queues are disabled.

1044	QSRDSP	Fix bugs relating to jobs being scheduled when a required
	QSRMDA	structure wasn't on line and MDA was turned on. Also correct
	QSRSCH	an inaccurate display when a job was waiting for a structure
		to come on line.
	QSRQUE	Fix a bug relating to spooled file limits QAR 10-06742

1045	QSRNET	Fix a bug where processing node signon file lost if node name
		contained six characters.
	QSRMDA	Don't send mount request pending message to OPR if SCHED 400.
	QSRT10	Speed up operator on duty checking by removing I$OPRC and
	QSRT20	setting flag G$OPRA (operator available flag) in I$SYSV.

1046	QSRQUE	Fix a bug in FNDREQ so that we don't process the same queue
		entries multiple times
		Add a check to the requeue code to check to see if the request
		was cancelled and if so delete the queue entry

1047	QUASAR	Change the format of the "count" records by adding an item
	QSRMAC	at the beginning of the record which is ICNT, the count of
		the items in the record.
	QSRT10	Set the queue structure name in the monitor after opening the
		master queue file.
	QSRSCH	Answer to QAR 10-06543. Fixes junk in response block for
		bad QUEUE. block. In S$INPS, check G$MDA only on the -10.
1050	QSRMAC	Invent new macros to handle limit paramters;
		MAXLIM(x) returns max value of limit parameter x
		WIDLIM(x) returns width in bits of limit parameter x
		Define word .DSPPN in the .DSSTA block of the .QOTST message
		to allow PULSAR to pass the owner PPN of a volume back to
		QUASAR.
	QSRSCH	Use MAXLIM and check that the output limit doesnt exceed
		2**18. If it does, set it to the maximum.
	QSRMDA	Fix yet another dual-ported disk problem when secondary ports
		are ATTACHed. Plug more holes in the owner PPN stuff for STRs
		mounted due to AVR with no user MOUNT command pending.
		Add routine D$ICAT for debugging.
	QSRT10	Record the owner PPN for STRs mounted at system startup time.


1051	QSRDSP	Change width of the node field display to include longest
		possible node name and widen the header for the SHOW STATUS
		NETWORK display.
	QSRNET	Have IBM online/offline processing call GENNOD to update the
		node name ASCII strings.  Fix GENNOD to print out the either
		node name or number in parens.

1052	QSRMAC	Define new bits in the ASL messages for quota checking, etc.
		Add new bits in the VSL and VOL blocks for handling str mounts.
	QSRMDA	Fix up ACK code and make it work consistantly for all devices.
	QSRT10	Perform bit translations for recomp bits from the QUEUE. UUO.
	QSRT20	Add dummy routine I$CGEN.

1053	QSRMAC	Defined protection field for the MOUNT tape /PROT command.
	QSRMDA	Tell OPR how to initialize tapes with /LABEL: and
		/NEW or /SCRATCH.
	QSRDSP	Put above into SHOW Q MOUNT displays.
		QAR: 10-06434 = GCO: 1245

1054	QSRNET	In GENNOD, use ^N for the node number on the 20 and ^O for
		node number field on the 10.
		GCO: 4.2.1246

1055	QSRMDA	Full word compares of half word addresses plus varying flags
		don't make it. Ignore flags. GCO 1252.

1056	QSRMAC	When a str needed for batch requests gets dismounted via tha
	QSRDSP	OPR DISMOUNT or LOCK commands, make a mount queue entry and
	QSRMDA	prevent the batch job from starting up. Clear up confusion
		in the SHOW STATUS STRUCTURE display regarding mount counts
		and the number of users (including batch jobs) on DISMOUNT
		and LOCK command ACKs. GCO 1258

1057	QSRNET	Change GENNOD to generate the ascii string for the node name
		based on NETCOL not on NETNBR.  GCO 4.2.1267

1060	QSRMDA	Add support for hardware-write-protected disks and the operator
		MOUNT command switch /WRITE-LOCKED. GCO 1271

1061	QRSMAC	Make this entry into the revision history.
	QSRMDA	Fix a complaint that message on SET TAPE ... AVAILABLE
	QSRT10	is too cryptic. GCO 1279

1062	QSRMAC	Make sure that reelid's are checked even in unlabelled
	QSRMDA	tape. New error message. GCO 1299

1063	QSRDSP	Display needed structure on all queue requests that can't run.
		GCO 1300

1064	QSRDSP	Fix wrap around and widen job/req-id column in SHOW STATUS TAPE
		display. GCO 1305

1065	QSRQUE	Don't let a user specify an old after parameter. GCO 1306

1066	QSRMAC	Allow the operator to reassign away an unlabeled tape to a user
	QSRMDA	when the requested density does not match what is mounted on a
	QSRT10	drive (legal for write-enabled tapes only). GCO 1317

1067	QSRMDA	Always reschedule mount queue check events. GCO 1332

1070	QSRADM	Rework node support so IBMCOM will function on TOPS10.
	QSRNET	GCO 4.2.1336

1071	QSRMDA	Fix an IDENTIFY problem involving /SCRATCH with no /VOLID:
		GCO 4.2.1337

1072	QSRMDA	Fix a small problem with not getting rid of mount requests
		with labelled non-scratch volumes on volume switches.
		GCO 4.2.1340

1073	QSRDSP	Make it so SHOW QUEUE /NODE:FOO:: works by using the node
		switch as the destination node.  GCO 4.2.1343

1074	QSRT10	Spell implemented correctly in a displayed message.
		GCO 4.2.1347

1075	QSRMDA	Always make sure the operator gets informed of mount requests
		that go into the queue, even if they cannot presently be
		satisfied. GCO 1350

1076	QSRNET	Shutdown the printer if necessary when termination node goes
	QSRT20	offline.  If CREATE message is rejected because of insufficient
		privs., say so.  GCO 4.2.1352

1077	QSRADM	Don't allow batch stream numbers greater than INPMAX. GCO 1357

1100	QSRT10	Make access checking work again.  GCO 1364

1101	QSRMDA	Don't allow MOUNT STRUCTURE DSKB: (as) DTA0: to work.
	QSRT10	Add routine to validate a device name.  GCO 1367

1102	QSRMDA	Set density on mounts and clean up ACKs to OPR for pseudo
		processes.  GCO 1368

1103	QSRDSP	Get these modules to handle false returns from GLXLNK
	QSRIPC	correctly.  GCO 4.2.1369
	QSRNET
	QSRQUE
	QSRSCH
	QSRT20

1104	QSRDSP	Make node name the processing node name so SHOW QUEUE BAT
		/NODE:FOO:: works.  GCO 4.2.1374

1105	QSRSCH	Fix scheduling of batch jobs which exceed the time limit
		for the stream. GCO 4.2.1375

1106	QSRQUE	Fix the problem with passing privs for printing batch logs
		for jobs submitted "/CONNECTED-DIRECTORY:" GCO 4.2.1377

1107	QSRT20	WITHDRAWN

1110	QSRSCH	Fix conditional in S$INPS so batch jobs will always be scheduled
		when they're supposed to be.  GCO 1384

1111	QSRDSP	Fix up formatting in structure displays.  Make disk status
		display of secondary units work again.  GCO 1391

1112	QSRSCH	Allow NEXT requests after KSYS times out.  GCO 1399

1113	QSRNET	Allow node number 0 on non-network sites. GCO 1403

1114	QSRSCH	Fix bug that would keep QSRDSP from displaying the
		mount request from a batch job that had a locked
		structure and was already running. GCO 1408

1115	QSRDSP	Display bug caused by timesharing and batch jobs attempting
		to mount the same volume.  GCO 1409

1116	QSRDSP	Re-work edit 1104.  GCO 1411

1117	QSRT20	Remove edit 1107 GCO 1414

1120	QSRDSP	Final edit to allow queue listings to work correctly given
		any combination of /DEST, /PROC, /UNIT, etc. on QUEUE class
		commands or use of the /NODE, /UNIT, etc. switches to the
		OPR's SHOW Q command.  GCO 1416

1121	QSRT20	Place startup of FTS object under FTFTS conditionals
		GCO 4.2.1423

1122	QSRDSP	Don't allow mounts to batch jobs on HOLD.  GCO 1431
	QSRMDA
	QSRQUE

1123	QSRNET	Clear up remote printer problems on the -10 by checking both
		node name and number when processing node off-line interrupts.
		GCO 1436

1124	QSRMDA	Allow scratch tapes to get reassigned again.  GCO 1438

1125	QSRMAC	Turn off permanent structures, 'til the bugs are worked out.
	QUASAR	GCO 1439
	QSRT10

1126	QSRT10	Clean up bad DSKCHR argument block when setting the queue
		structure.  GCO 1440

1127	QUASAR	Put the deadlock avoidance flag in G$DEAD so I'm not tempted
	QSRMDA	to patch literals.  GCO 1442

1130	QSRMDA	Fix problem with reassigning labelled tapes from one drive
	type to another. GCO 1461

1131	QSRMAC	Attempt to trap all conditions that could cause NBM, IVU,
	QSRMDA	and NUV stopcodes as a result of the operator performing
		single and multi-pack structure mounts with and without
		aliasing.  Resolve internal catalog cache (STRLST) conflicts
		if possible, and prohibit mounts that would cause maxtix
		skews for allocated (but not mounted) structures. Let the
		operator know about conflicts if they arise to avoid SPRs
		and unnecessary confusion for all involved.  GCO 1464

;; Released with TOPS-10 GALAXY 4.1

1200	QSRMAC	Some JSYS can cause IST crashes because there are no
	QSRT20	ERJMPs or ERCALs after them. This is sloppy coding.
		Add them and make a counter/timer for PMAP failures.
		GCO 4.2.1463

1201	QSRNET	When a termination node goes offline due to an error, make
		sure we shut down the printer correctly including saving
		AP during S$SHUT.  GCO 4.2.1467

1202	QSRDSP	Help out edit 1120 by using new symbol KLUDGE to prevent
		symbol use conflicts.  Check the flag an additional place.
		GCO 4.2.1470

1203	QSRT10	Clear FILDAE bit before doing queue protection checks.  GCO 1481

1204	QSRDSP	Print out the density as part of I MOUNT.  Remember the density
	QSRMDA	so we can print it.  GCO 4.2.1482

1205	QSRDSP	In I MOUNT/ALL include the volume set name using already
		existing 10 code.  GCO 4.2.1503

1206	QSRMDA	Bad test caused multi-pack structures not to mount.  GCO 1506

1207	QSRQUE	Process connected directory blocks correctly on T20.  Delete
	QSRT20	I$QCDI in QSRT20 since it will no longer be used.  GCO 4.2.1520

1210	QSRMDA	Make sure all the tapes of a multi-volume save set
		match the density of the first. TU70 and TU72 problem only.

1211	QUASAR	Fix copyright notice.  GCO 4.2.1528

1212	QSRMAC	Add the symbol SPLMAX and use it in CHKOBJ to decide whether
	QSRADM	to allow a specific object number.  GCO 4.2.1529

1213	QSRNET	Fix the host node's participation in the node offline/online
		code.  GCO 4.2.1531

1214	QUASAR	Put logging of counts under conditional.  GCO 4.2.1533

\
;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,^D30		;DEFAULT BATCH STREAMS (ABS MAX = 63)
	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

;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	NPRTBL,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<	XP	NPRTBL,NPRTLB >		;BLP FOR 1=ALL USERS, 0=PRIV USERS
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	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
	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                 /
;	/                                                       /
;	!-------------------------------------------------------!
;	/                                                       /
;	/                 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
.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
.QEMDR:! BLOCK	1		;REQUESTS MDR ADDRESS
.QEACT:! BLOCK	10		;ACCOUNT STRING (POSSIBLY DIFFERENT FROM .EQACT)
TOPS20 <
.QEOWN:! BLOCK	10		;REQUEST OWNER
.QECON:! BLOCK	12		;CONNECTED DIRECTORY
> ;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.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                  !
;	!-------------------------------------------------------!
;	!              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
OBJPID:! BLOCK	1			;PID WHICH HAS THIS OBJ SETUP
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
	OBSQUH==0,,-1			;ADDRESS OF QUEUE HEADER FOR OBJECT
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			!
;	!-------------------------------------------------------!
;	!                   ROUTE ENTRY NAME                    !
;	!-------------------------------------------------------!
;	\                                                       \
;	\                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

	;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
   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
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)

NETSIZ:!

		DEPHASE
	SUBTTL	ROUTE TABLE ENTRY DESCRIPTION

;	!=======================================================!
;	!		SOURCE OBJECT TYPE			!
;	!-------------------------------------------------------!
;	!		SOURCE UNIT NUMBER			!
;	!-------------------------------------------------------!
;	!		SOURCE NODE NAME			!
;	!-------------------------------------------------------!
;	!	      DESTINATION OBJECT TYPE			!
;	!-------------------------------------------------------!
;	!	      DESTINATION UNIT NUMBER			!
;	!-------------------------------------------------------!
;	!	      DESTINATION NODE NAME			!
;	!=======================================================!

			PHASE	0

	RTEOB1:! BLOCK	OBJ.SZ		;SOURCE OBJECT BLOCK
	RTEOB2:! BLOCK	OBJ.SZ		;DESTINATION OBJECT BLOCK
	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.
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                   !
;	!=======================================================!

; EXTRA INFORMATION IS RETURNED BY BATCON DURING ITS RELEASE MESSAGE

;	!=======================================================!
;	!       FLAG SETTINGS       !      THE JOB NUMBER       !
;	!-------------------------------------------------------!
;	/                                                       /
;	/       STANDARD FD AREA DESCRIBING THE LOG FILE        /
;	/  THE LENGTH IS DERIVED FROM THE RELEASE MESSAGE SIZE  /
;	/                                                       /
;	!=======================================================!

	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.CST==777777B35		   ;RH FOR WSM
REL.TX:! BLOCK	STSSIZ		;RELEASE MESSAGE TEXT

REL.SZ:!			;SIZE OF THE RELEASE MESSAGE

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
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	10		;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

.EQDEC:! BLOCK	^D20		;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.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                      !
;	!=======================================================!

	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.XXX==7B26		;EXTRA FLAG BITS
	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:!			;MINUMUM FP AREA SIZE

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

	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
ABO.ID:! BLOCK	1		;ID OF PERSON REQUESTING THE KILL

ABO.SZ:!			;SIZE OF THE ABORT MESSAGE

	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 CONTAINS 2 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)
		; .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.SZ:!			;SIZE OF KILL ENTRY
	DEPHASE
	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 we have 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                !
;	!-------------------------------------------------------!
;	!	 Port Number	!	Line Number		!
;	!-------------------------------------------------------!
;	!		Network Status Bits			!
;	!-------------------------------------------------------!
;	!		Port/Line Handle			!
;	!=======================================================!


		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)
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.CN:! BLOCK	7			;DN60 LINE CONDITIONING BLOCK
SUP.ST:! BLOCK	1			;NETWORK STATUS/FLAG BITS
					;SEE 'NETSTS' BIT VALUES

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          !
;	!-------------------------------------------------------!
;	!                   The RESPONSE Code                   !
;	!-------------------------------------------------------!
;	!                    RESPONSE REASON                    !
;	!-------------------------------------------------------!
;	!              The DEC Device Attributes                !
;	!-------------------------------------------------------!
;	!                  Prototype Node Name                  !
;	!=======================================================!

	PHASE	MSHSIZ			;STANDARD MESSAGE HEADER

RSU.TY:! BLOCK	1			;OBJECT TYPE
RSU.UN:! BLOCK	1			;UNIT NUMBER
RSU.NO:! BLOCK	1			;NODE
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.SZ:!

	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		\
;	\							\
;	!=======================================================!
;	!		THE DEVICE STATUS CODE			!
;	!=======================================================!


		PHASE	MSHSIZ		;STANDARD MESSAGE HEADER

	STU.RB:! BLOCK	OBJ.SZ		;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			\
;	\							\
;	!-------------------------------------------------------!
	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.SZ		!	.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\DSK:<SPOOL>PRIMARY-MASTER-QUEUE-FILE.QUASAR\>
	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.

	%RBBAT==1			;BATCH JOB (INP, LPT, PLT, ...)
	%RBDEL==2			;DELETED FILES
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	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.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	1	;POINTERS TO THE VOLUME LIST

	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