Google
 

Trailing-Edge - PDP-10 Archives - BB-BT99S-BB_1990 - 10,7/galaxy/quasar/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) DIGITAL EQUIPMENT CORPORATION 1975,1976,1977,1978,1979,
;1980,1981,1982,1983,1984,1985,1986,1987.  ALL RIGHTS RESERVED.
;
;     THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY  BE  USED
;     AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
;     AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS
;     SOFTWARE  OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
;     OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.  NO  TITLE  TO
;     AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
;
;     THE INFORMATION  IN  THIS  SOFTWARE  IS  SUBJECT  TO  CHANGE
;     WITHOUT  NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
;     BY DIGITAL EQUIPMENT CORPORATION.
;
;     DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
;     OF  ITS  SOFTWARE  ON  EQUIPMENT  WHICH  IS  NOT SUPPLIED BY
;     DIGITAL.

	SEARCH	GALCNF		;GET CONFIGURATION DATA
	SEARCH	GLXMAC		;GET GALAXY SYMBOLS
	SEARCH	ORNMAC		;GET OPERATOR SYMBOLS
	SEARCH	CATPRM		;GET CATALOG 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==41			;MAJOR CHANGE NUMBER OF QSRMAC


QSRVER==5			;MAJOR VERSION NUMBER
QSRMIN==0			;MINOR VERSION NUMBER
QSRWHO==0			;LAST EDITOR
QSREDT==1523			;EDIT NUMBER

	QSRVRS==<VRSN.(QSR)>	;MAKE UP A VERSION 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

1132	QSRSCH	Reapply QUASAR V4.0 edit # 415. QUASAR V4.0
		edit # 376 does not completely address the problem
		Remove edit # 376 and convert QUASAR's batch stream
		time limit parameters from minutes to seconds before
		the limits are compared. SPR 20-18114	15-APR-83/CTK

1133	QSRMDA	Fix tape density problems. The ".SET DENSITY"
	QSRT10	command values are not seen for the second tape
		of multiply reels. The wrong density is used.
		2-Jun-83/CTK

1134	QSRMDA	Fix bypass-label-processing option bug for magtapes
		and erratic "Initialize new tape" message problem.
		SPR # 10-33400,10-33903,10-33931	7-JUN-83/CTK

1135	QSRMDA	QUASAR does not check for the user's /ASSIST:NO switch
		and a MOUNT request asking for operator action will
		be processed.
		SPR # 10-33886,10-33887,10-33962	7-JUL-83/CTK

1136	QSRMDA	Originally published as TOPS-10 QUASAR EDIT # 1210.
		Make sure all the tapes of a multi-volume save set
		match the density of the first. TU70 and TU72 problem only.
		SPR # 10-33230 11-NOV-82/NT
		
1137	QSRSCH	Files queued /DISP:RENAME may be modified /DISP:PRESERVE
	QSRQUE	and QUASAR responds with a "[ 1 job modified]" message
		indicating success. The files are not renamed and 
		they are deleted from [3,3] after processing.
		SPR # 10-33935	14-JUL-83/CTK

1140	QSRMDA	Prestaging does not work for unlabeled tapes.
		The OPR command IDENTIFY MTAx: VOLUME FOO is given
		and then the user command MOUNT TAPE(FOO):MT:/LABEL:NONE
		is not automatically satisfied with the tape on MTAx:
		SPR # 10-33710	23-JUL-83/CTK

1141	QSRMDA	Clear the MDA bit in the DEASSIGN code if the device is not
		a magtape because a device such as a line printer may be
		mounted via the mount command and the device becomes
		permanently stuck to  QUASAR with the MDA bit on.
		SPR # 10-33707	26-JUL-83/CTK

1142	QSRNET	QUASAR does not notice when the first node in its
		list goes off-line because when the list is sorted
		we did not remove the code to skip the central site.
		SPR # 10-33258	27-JUL-83/CTK

1143	QSRMDA	A MOUNT request with /NEW or /SCRATCH requiring multiple
		reels with only one drive available is confusing to the
		operator.  QUASAR will incorrectly request a scratch tape
		when volume switching on a rewind, it knows the correct
		VOLUME-ID and refuses to reassign the tape to the user if
		the operator tries to use a new VOLUME-ID.
		SPR # 10-33904	2-AUG-83/CTK

1144	QSRMDA	When a disk structure is prelocked those users who
		have the structure mounted will be given a warning
		message. But no warning message is given to those
		users who mount the structure after it has been prelocked.
		SPR # 10-33399	2-AUG-83/CTK

1145	QSRSCH	Use QSRMAC symbol TIMONA where appropriate in QSRSCH.
		SPR # 10-34103	15-AUG-83/CTK

1146	QSRQUE	QUEUE UUO fails with error code: 200000 + QUFER%
		because the QSRQUE CRQUNT routine is failing a
		validity check. This is occurred because the ATRCDS
		table is incorrect because the X MACRO invoked by
		the ATTRIB MACRO is wrong.
		QAR # 10-125376	15-AUG-83/DPM

1147	QSRDSP	Clean up IBMCOM display problem with the
		OPR>SHOW PARAMETERS NET command.
		NO SPR	21-AUG-83/CTK

1150	QSRMDA	Remove edit 1140 for security reasons involving
		prestaging of unlabeled tapes.
		SPR # 10-33710	7-SEP-83/CTK

1151	QSRT10	Fix problem with hung tape drives. The problem is seen
		when an OPR SET TAPE MTAn: AVAILABE command is done and
		the tape drive has a degaussed tape mounted. The problem
		is caused by QUASAR turning on AVR and PULSAR attempting
		to read a tape label.
		SPR # 10-34112	15-SEP-83/CTK

1152	QSRMAC	Add QUASAR support to allow OPR to DISABLE
	QSRADM	individual queues. Requires ORION edit 341, ORNMAC edit 36,
	QSRMDA	and OPRCMD edit 146, MOUNT edit 53.
	QSRSCH
	QSRQUE	18-SEP-83/CTK

1153	QSRMDA	Fix LPTSPL/LOCK bug.
	QSRT10	SPR 10-33485	18-OCT-83/CTK

1154	QSRMAC	Don't let QSRMDA delete VOL block during volume switch
	QSRMDA	that has been aborted if user was switching to a previous
		volume. Add new field, VS.PRE, in .VSCVL word in VSL block.
		VS.PRE is offset to previous VOL block. Routines D$VSR and
		DELVSW. SPR 10-33178  18-Oct-83 /LWS
		Superseded by 1162. 29-Nov-83

1155	QSRT10	Fix race in edit 1153.
		SPR 10-33485	8-NOV-83/CTK

1156	QSRDSP	Change the way jobs in the output queues are displayed
		taken the original objects they were queued to are
		routed to another device.
		SPR 10-34115 8-Nov-83 /LWS

1157	QSRMDA	Fix NBM and RMBstopcodes that occur because the
		operator CANCELs a tape MOUNT request in volume
		switch state and the user does a DISMOUNT or KJOB.
		IMPORTANT: REQUIRES QUASAR EDIT 1154 !!!
		SPR 10-34308	14-NOV-83/CTK
		Superseded by 1162. 29-Nov-83

1160	QSRT10	Fix DISMOUNT/DEALLOCATE bug in REMSTR, the problem
		will be seen when the I$SLCM IPCF packet contains
		in the first word beyond the valid length a SIXBIT
		structure that is in QUASAR's current search list
		for this user. This bug will result in structure
		allocation data base errors. This problem existed before
		QUASAR edits 1153 and 1155 but can not be exercised
		until they are installed.
		SPR # 10-33485	21-NOV-83/CTK

1161	QSRMAC	Define new bit, EQ.CHG, in .EQSEQ word of EQ block that
	QSRQUE	indicates QUASAR set user's requested priority down to
	QSRSCH	non-wheel user maximum, MXUPRI. Add code to tell user
		what happened.
		SPR 10-34293  19-Nov-83 /LWS

1162	QSRMAC	More problems when volume switch is cancelled.
	QSRMDA	Make sure 'A' and 'C' matrices are the updated
		for the volume user is made to keep. At beginning
		of volume switch counts are decremented. If volume
		switch is cancelled, make sure counts are incremented.
		Also add support for PULSAR cancelling vol switches.
		New value, %RLABO, in vol switch message.
		This edit REQUIRES QUASAR edit 1154.
		This edit SUPERSEDES QUASAR edit 1157.
		29-Nov-83 /LWS

1163	QSRMAC	Define new bit in object block status word, OBSFCH, which means
	QSRSCH	forms change is in progress. Testing this bit stops the race
	QSRADM	where QUASAR decides to shutdown remote printer before it is
		completely setup with correct forms. Testing this bit also
		fixes a problem with ALIGN PRI x /STOP.
		SPR 10-34350, SPR 10-34180 5-Dec-83 /LWS

1164	QSRMAC	Add support for /NEW-VOLUME user requested reinitializaion.
	QSRMDA	QUASAR tells PULSAR how to reinitialize (density,protection)
	QSRDSP	the volumes. Cannot change label types. Owner fields must
		match on labeled tapes.
		8-Dec-83 /LWS

1165	QSRMAC	Fix problems with DEC/Mag tape statistics
	QSRT10	in usage accounting file.
		SPR 10-34170 /DPM

1166	QSRADM	Fix typo in 1163. At A$OBST+19L, change S1 to S2.
		15-Dec-83 /LWS

1167	QSRADM	Allow operator to schedule a job for an object using the
		NEXT command before the object is STARTed.
		SPR 10-34374  19-Dec-83  /LWS

1170	QSRT10	Fix ACKing problems with QUEUE. UUO. Redo some of the
	QSRMDA	logic so it's somewhat clearer what should be done when
		ACKing the user.
		SPR 10-34383  29-Dec-83 /LWS

1171	QSRQUE	Allow SUBMIT FOO/DISPOSE:XXXX via QUEUE. UUO to work.
		SPR 10-34398  27-Jan-84  /LWS

1172	QSRT10	Check for BATCON batch job in I$SLCM. Check OB.BSS
		instead of JB.LBT. MIC sets JB.LBT for cojobs.
		21-Feb-84 /LWS

1173	QSRMAC	Fix problems with ACK data in MDR getting overwritten
	QSRMDA	by subsequent mount requests before pending requests
	QSRT10	(and ACKs) are completed. Add 3 words to VSL that are
	QSRDSP	copies of corresponding words in MDR. The words are:
		.MRFLG <-> .VSRFL, .MRACK <-> .VSACK, .MRPID <-> .VSPID
		The fields in .MRFLG are the same in .VSRFL.
		SPR 10-34182 14-Feb-84 /LWS

1174	QSRMAC	NBM stopcodes. QUASAR was updating catalog for structure
	QSRMDA	that had a different resource number but the same VSN
		as original catalog entry when there were allocations
		pending for original entry. This caused 'C' matrix to
		be incremented for newly (and wrongly) created entry
		(structure). 'B' matrix was never incremented because
		the initial allocation never happened. Don't delete an
		existing entry when there are pending allocations for
		the corresponding resource.
		Clean up code in D$CCAT. Change SKIPE to SKIPN !!!
		Get number of allocations in RH of P1 for WTO.
		27-Feb-84 /LWS

1175	QUASAR	Remove QBI stopcode at SNDREC. Change to a WTO. Problem
	QSRMDA	is most likely in ORION or GLXLIB. One way QBI occurred
		is fixed in GLXLIB edit 1163. ORION edit 604 adds PBI
		stopcode to catch P$DEV screwing up. Also, make stack
		bigger for deadlock code support.
		2-Mar-84 /LWS

1176	QSRT10	Fix problem where request type was not displayed
		in SHOW STATUS STR /USER. REQUIRES edit 1173.
		8-Mar-84 GCO 10004 /LWS

1177	QSRDSP	Fix ILM problem when OPR does a SHO STA command
		and a large number of batch and print jobs are
		in process.
		SPR 10-34352	9-MAR-84/CTK

1200	QSRDSP	Spurious TAB in LPT queue listing
		when there are a large number of entries.
		The last line before the extra TAB will end
		with a non-standard forms type.
		SPR 10-34351	10-MAR-84/CTK

1201	QSRQUE	BATCH jobs fail to LOGIN because of a QUEUE
	QSRSCH	/DESTINATION:SIXBIT switch. The SIXBIT node
		name is not allowed by LOGIN's /LOCATE switch.
		Convert the SIXBIT node name to number at
		the earliest possible occasion and don't
		schedule the job until the node name has been converted.
		SPR 10-34584,10-34586	30-MAR-84/CTK

1202	QSRADM	Fix problem where a stopped printer seemed to continue
		by itself.
		SPR 10-34596 GCO 10017 2-Apr-84 /LWS

1203	QSRSCH	CORMAX check is wrong, were comparing words
		to pages. So fix it.
		SPR 10-34598/CTK

1204	QSRMDA	Have QUASAR issue more descriptive ACKs to OPR
		commands concerning structures that are in the
		process of being dismounted. (PULSAR is waiting for
		WTOR answer from operator). Prevents PULSAR problems.
		9-Apr-84 GCO 10023 /LWS

1205	QSRIPC	Fix bug in IPCF message RESEND code. We were killing
		PSBs becasue we were getting the PID of the resend
		failure from the wrong place.
		SPR 10-34664 GCO 10029  18-Apr-84 /LWS

1206	QSRNET	Spooler jobs will not be scheduled or scheduling
	QSRSCH	will stop if we are on non-network monitor.
	QSRADM	Problems related to QUASAR edit 1142
	QSRDSP	only reflect part of the problem.
		SPR 10-34655 GCO 10030	20-APR-84/CTK

1207	QSRSCH	Fix bug where NEXT request REQUEST-ID for an object
		was not cleared even after the request was scheduled.
		SPR 10-34688 GCO 10038 10-May-84 /LWS

1210	QSRADM	After edit 1206 ANF network line printers will not start.
		SPR 10-34655	GCO 10041	16-MAY-84/CTK

1211	QSRMDA	After edit 1151 we did not honor the AVR bit
		and still send the recognize message to PULSAR.
		SPR 10-34112	GCO 10040	16-MAY-84/CTK

1212	QSRQUE	QUASAR using inordinate amount of runtime
		and not deleting spooled files because the
		structure is not on-line or no longer exists.
		SPR 10-34636	GCO 10043	29-MAY-84/CTK

1213	QSRSCH	For small files and numerious copies the LPT's
		request page limit may be less than the number
		of files in the request. This leads to
		"Page Limit Exceeded" and the job does not
		complete.
		SPR 10-34720	GCO 10044	6-MAY-84/CTK

1214	QSRSCH	Add code to support modifing the /ASSIST switch.
		If this edit is installed QMANGR edit 2255
		is required or QUASAR may incorrectly modify
		a batch request's /ASSIST value.
		SPR 10-34294	GCO 10046	14-JUN-84/CTK

1215	QSRMAC	Change CVL.KT definition from 7000 to 77000.
		This size and position matches the Kont type
		field of STRLST.
		SPR 10-34762	GCO 10048	5-Jul-84 /LWS

1216	QSRQUE	The short create CRQNOD routine moves the
		output destination field to the processing
		node word, so don't do it.
		SPR 10-34766	GCO 10054	11-JUL-84/CTK

1217	QSRMAC	Add support for new 'structure mounted' message
	QSRMDA	from monitor. This message is a result from
	QSRT10	a priv'd user mounting a structure without
	QUASAR	PULSAR getting involved.
		GCO 10055	16-Jul-84 /LWS

1220	QSRMAC	Add support for CI disks (entries in GENRES macro).
	QSRMDA	Shuffle bits in .UCBST to make UC.KTP 5 bits wide.
	QSRDSP	3 bits isn't enough to handle all DEC controller types
		as well as allowing room for customer specific disk
		controller type codes.
		NO SPR	6-MAR-84/JAD

1221	QSRMDA	Prevent undeserved deadlock errors when all disk resources
		are in use and drives are attached and detached.
		SPR 10-33486, 10-34211
		GCO 10061	31-Jul-84 /DPM

1222	QSRQUE	More of edit 1212, there remained problems
		with requests that were not incore and a missing
		index AC.
		SPR 10-34636A	GCO 10043	1-Aug-84/CTK

1223	QUASAR	Long messages truncated by QUASAR in the G$CCHR
		routine will trash all future QUASAR user text
		messages.
		SPR 10-34595A	GCO 10063	2-AUG-84/CTK

1224	QSRMDA	Avoid races when reassign tapes to users where the
	QSRT10	label type requested differs from what's on the tape.
		13-Aug-84  GCO 10074  /DPM

1225	QSRMDA	Mount requests for 'foreign' devices aren't displayed to OPR
		if G$DEAD is zero.
		30-Oct-84 GCO 10113 /LWS

1226	QSRMAC	Mounts requests coming in via QUEUE.'s aren't checked very
	QSRT10	well for validity. Add DEVCHK routine which essentially does
	QUASAR	the same kind of checking as the MOUNT program. Also, fix
		problem where QUASAR uses GALGEN specified queue structure
		instead of actual structure when setting up spooled log
		file requests. GALGEN default is SSL!
		SPR 10-34898 GCO 10123 21-Nov-84 /LWS

1227	QSRMDA	Fix problems with aliased structures getting allocated
		to requestors of the structure before it was aliased.
		SPR 10-34768 GCO 10124 28-Nov-84 /LWS

1230	QSRMAC	No code to support short create setting the
	QSRQUE	operator intervention bit or a processing
		node for IBMCOM.
		SPR 10-34766A MCO 11686 GCO 10130 16-DEC-84/CTK

1231	QSRDSP	SHOW PARAMETERS BATCH /NODE:FOO where FOO is an IBM
		emulation node gives "unknown device" even when there
		really is a IBM node online.
		SPR 10-34990 GCO 10134 7-Jan-84 /LWS

1233	QSRT10	Fix up handling of disk detach messages.
	QSRMAC	15-May-85  GCO 10208  SPR 10-35195  /JAD

1234	QSRMAC	Add code to handle volume switch tape statistics.
	QSRT10	Fixes problems that cause QUASAR to send ACTDAE
	QSRMDA	junk for tape stats.
		SPR 10-35081 GCO 10209 17-May-85 /LWS

1235	QSRQUE	Allow .QBBGN block for input queue as well as output
		queue, and disallow SIXBIT argument for output queue.
		SPR 10-35221 GCO 10237 25-Jun-85 /JAD

1236	QSRIPC	Fix bugs in edit 1205.
		SPR 10-34664A GCO 10262 23-Jul-85 /JAD

1237	QSRT10	Handle account string blocks in gopher messages which
		have a zero-length account string.
		SPR 10-34151A GCO 10277 26-Aug-85 /JAD

1240	QSRMDA	On reel switches, do AVR only if drive is enabled.
		Remove check for drive being owned.
		SPR 10-35187  GCO 10312  28-Sep-85  /DPM

** Version 5 Development **

1300	ALL	Reference QSRMAC's and QUASAR's versions in all
		modules to help catch version skews.

1301	QSRMAC	Have QUASAR connect to PSI for KSYS and handle
	QSRADM	countdown and user warnings of impending KSYS.
	QSRT10	When timesharing is over, send .QOKSY message
	QSRDSP	to BATCON to log jobs out.
	QUASAR

1302	QSRMAC	Turn on deadlock avoidance code and see what happens.
	QSRMDA	Fix BLI (Process owns more resources than allocated)
		stopcode. VS.ABO is lit for no real reason. In fact,
		the bit isn't even needed. VS.ABO was lit in DELVSW which
		never worked to begin with when deadlock was last used.
	QSRDSP	Fix bug in mount queue display. If status is not known,
		make it 'Waiting'.

1303	QSRALC	Recompile QSRALC.B36. First UNDECLARE some symbols
		that are in GLXMAC and QSRMAC, both.
		ILM was occurring in UNMAP because catalogue entry
		changed and QSRALC wasn't recompiled.

1304	QSRMDA	Allow operator to set/clear AVR for a specific
	QSRT10	tape drive even if drive is 'unavailable'. Also,
		if AVR is 'on' for an unavailable drive, keep it
		'on' when setting tape 'available'.

1305	QUASAR	Add
	QSRADM	 support
	QSRDSP	  for
	QSRMAC	   the
	QSRQUE	    wonderful
	QSRSCH	     Event
	QSRT10	      Queue

1306	QSRT10	Fix bug where QUASAR typed KSYS warning messages once
		a minute until the time till KSYS matched up with
		the KSYTAB entry. This only happens when QUASAR is
		started and there's already a pending KSYS.
		30-Jul-84 GCO 10060 /LWS

1307	QSRT10	"Timesharing is over!" not SEND ALLed. KSYTTY changes
		incomplete.
		3-Aug-84 GCO 10065 /LWS

1310	QSRMAC	Use definition of G.DEAD, defined via GALGEN, to turn
		on/off deadlock avoidance.
		6-Aug-84 GCO 10067 /LWS

1311	QUASAR	Add interface to the catalog daemon, [SYSTEM]CATALOG.
	QSRMDA	This edit adds module QSRCAT which will eventually
	QSRMDA	contain all the catalog-related code.  For the time
		being, only a couple of calls in QSRMDA will change
		to use QSRCAT.  As of this edit, QUASAR no longer
		requests catalog information from PULSAR.  Message
		types .QORCT and .QOCAT are obsolete.
		7-Aug-84 GCO 10069 /DPM

1312	QUASAR	Add code to support [SYSTEM]INFO.
	QSRMAC	This edit adds module QSRINF which is the [SYSTEM]INFO
	QSRMEM	process.  In addition, to support INFO, it adds variable
	QSRIPC	length queue types, and changes the resend queue from
	QSRINF	a library linked list to a variable-length queue.
		14-Aug-84 GCO 10079 /RCB

1313	QSRMAC	Add support for Usage accounting events and new QUEUE.
	QSRQUE	UUO arg block, .QBESW.	Add new  event independent switches
	QSRSCH	/FAILSOFT and /NOFAILSOFT.
	QSRT10	20-Aug-84 GCO 10077 /LWS

1314	QSRT10	Make QUASAR more defensive when someone does a SETUUO UUO
		to change KSYS. Create or release KSYS events when needed.
		21-Aug-84 GCO 10080 /LWS

1315	QUASAR	Add fallback code.  Also rip out the GALAXY.LOG code,
	QSRMAC	which was only for 4.1 field test.  Fix a bug in the
	QSRINF	CNTANSWER message, so that it's useful for people who
	QSRADM	still want an idea of where QUASAR spends its time.
	QSRQUE	28-Aug-84 GCO 10084 /RCB

1316	QSRMAC	Add new symbol MR.JOB to be used like the old MD.PJB.
	QSRMDA	However, MR.JOB is now 19 bits wide (1777777B35) and
	QSRT10	BA%JOB is now 1B17. This fixes the 'no batch allocations'
	QSRQUE	bug introduced when 1312 changed MD.PJB to 777B35.
	QUASAR
	QSRDSP
	QSRALC
	QSRCAT	30-Aug-84 GCO 10086 /LWS

1317	QSRMAC	Add default descriptive text for event queue entries.
	QSRQUE	Put the event queue at the top of the QUEUES macro
	QSRSCH	so it's the first one scanned.
		31-Aug-84 GCO 10088 /LWS

1320	QSRMAC	Add support for operator log file closure event.
	QSRSCH	Also, allow for fudge factor for UDTs in EVTCMP.
	QSRT10	Fix problem with 'NOW' events not being scheduled.
	QSRQUE	5-Sep-84  GCO 10092 /LWS

1321	QUASAR	Change SHOW STATUS display so that "Timesharing ends"
	QSRDSP	is only displayed if KSYS is within an hour. Redo part
	QSRT10	of edit 1317 - don't put default text in QE, only use it
	QSRQUE	when displaying event queue entries. Reword some default
	QSRMAC	descriptive text, too. Add support for Date/Time change
	QSRSCH	PSI interrupts. When interrupt occurs, modify .MRLOG,
		.VSCRE, .VSSCH, .EVTIM, .VLMTM, and .VLLTM in their
		respective data structures.
		24-Sep-84 GCO 10099 /LWS

1322	QSRQUE	Fix problems with 'stale' events being left in the
	QSRT10	queue with QE.RDE lit. Do change .EQAFT at CREA.1 if
		event and internal request. Make sure Q$EVTD loops
		thru the entire event queue after failsoft rebuild.
		Also don't change structure lock time when date/time
		PSI happens.
		5-Oct-84 GCO 10100 /LWS

1323	QSRADM	Add code in A$AUTO to support AUTO TAKE file
		/DISPLAY and /NODISPLAY switches. Also see
		ORION edit 721.
		19-Oct-84 GCO 10078 /CTK

1324	QSRT10	We missed a place where we didn't clear the JCH bits
		in G$PRVS where most of QUASAR thinks is just a job
		number. We didn't clear the JCH bits when processing
		[SYSTEM]GOPHER messages (QUEUE.s)
		22-Oct-84 GCO 10107 /LWS

1325	QSRMAC	Add QUASAR support for FAL streams. (.OTFAL)
	QSRADM
	QSRSCH
	QSRDSP	14-Nov-84 GCO 10121 /LWS

1326	QSRMAC	More of above edit. Add FAL STATUS UPDATE message,
	QUASAR	.QOFAS. We need this because what FAL needs to tell
	QSRADM	us won't fit in the regular status update message.
		26-Dec-84 GCO 10132 /LWS

1327	QSRMAC	Add symbold %FPGRF to specify that the user typed
		/GRAPHICS on print command. Extend queue entries
		to include room for FONT name.
		31-Jan-85 GCO 10142 /NT

1330	QSRDSP	Add possible tape drive densities to SHOW STATUS
		TAPE-DRIVE command display.
		19-Feb-85 GCO 10150 /LWS

1331	QSRDSP	Change SHOW PARAMETERS NETWORK display to correctly
		display new style DN60 port argument.
		11-Mar-85 GCO 10159 /LWS

1332	QUASAR	Keep QUASAR's catalog cache in synch with [SYSTEM]CATALOG.
	QSRMAC	Also do a general cleanup of the CATALOG daemon interface
	QSRALC	and of QSRCAT.  Enhance DECtape and magtape code to allow
	QSRCAT	these types of volume-sets to be cataloged.  A side effect
	QSRDSP	of this edit provides full MDA support for DECtapes.  Also
	QSRMDA	lots of dead code in QSRMDA.
	QSRT10
		19-Mar-85  GCO 10166  /DPM

1333	QUASAR	Move call to init for PSI KSYS interrupts until after
	QSRQUE	QUASAR has read the master queue file. Also consider
		same event types identical entries if the expiration
		times are within 59 seconds.
		19-Mar-85 GCO 10169 /LWS

1334	QSRMAC	Reserve storage for /BATOPT in the batch limit words.
		This contains the sixbit option name to be passed to
		LOGIN on batch logins (i.e. LOGIN/OPTION:xxx).
		21-Mar-85  GCO 10172  /DPM

1335	QUASAR	Add a mechanism whereby priv'ed users can obtain the
	QSRMAC	EQ for a running spooler job.  The message to QUASAR
	QSRQUE	is function .QOEQR and must contain a .OROBJ block.
		The answer from QUASAR is message type .QOEQA.
		22-Mar-85  GCO 10176  /DPM

1336	QSRMAC	Re-implement old QUASAR V2 functionality of listing
	QSRDSP	summaries.
		22-Mar-85  GCO 10173  /DPM

1337	QSRMDA	For cataloged volume-sets, display the media storage location
	QSRT10	text in the mount messages sent to OPR.
		25-Mar-85  GCO 10175  /DPM

1340	QSRMAC	Forgot to bump the master queue file version number.
		Lenghten the user name to octal 10 words. Shorten the
		box location for output to octal 10 words.
		26-Mar-85  GCO 10180 /NT

1341	QSRMAC	Make it easier to create new queues.  Add several new
	QSRADM	arguments to the QUEUES macro.  Store queue dependent
	QSRDSP	data in the queue headers.  Currently, most of the new
	QSRQUE	data relates mostly to listing generation.
		28-Mar-85  GCO 101XX  /DPM

1342	QSRMAC	If there is a problem with a request when reaching RENDEF
	QSRSCH	(G$ERR non-zero) don't rename files as the request will
		not be queued and the files will be lost in [3,3].
		30-Mar-85  GCO 10183  /JAD

1343	QSRMAC	Add support for new QUEUE. UUO sub-blocks: .QBOPT, .QBDIS,
	QSRQUE	and .QBUSR.
		 2-Apr-85  GCO 10187  /DPM

1344	QSRMAC	Add "Object type Data Block" (ODB) to queue header
	QSRADM	definitions as a variable length queue. These blocks
		will contain data common to all objects of the same
		type. Created to support FAL's default network PPN
		and rejection list definition commands which are common
		to all FAL streams.
		 8-Apr-85 GCO 10189 /LWS

1345	QSRT10	Teach QUASAR to use new function UGVUP$ to validate
		account string and return user profile. Default .EQUSR
		and .EQBOX from .AEPNM and .AEBOX respectively if needed.
		22-Apr-85 GCO 10198 /LWS

1346	QSRCAT	Keep QUASAR in sync with CATLOG by updating the catalog
	QSRMDA	on reel switches.
		 8-May-85  GCO 10206  /DPM

1347	QSRCAT	If MDA is turned off, just return in V$INIT.
		20-May-85 QAR #868095 GCO 10211 /LWS

1350	QSRT10	Fix bug where REDDIR gets clobbered by DSKCHR UUO.
		Make ACTSTR's length .DCMAX.
		21-May-85 QAR #868117 GCO 10213 /LWS

1351	QSRMDA	Decouple magtape drive availability status from AVR status.
	QSRT10
		29-May-85  GCO 10220  /DPM

1352	QSRMAC	Define FTDQS feature switch.
		4-Jun-85  GCO 10225  /JAD

1353	QSRMAC	Completely redo edit 1152.  In particular, only input or
	QSRADM	output queues may be enabled or disabled.  Furthermore,
	QSRMDA	1152 made no consideration for batch, thus allowing an
	QSRQUE	operator to start a batch job and then disable a queue
	QSRSCH	which could cause the job to fail.  Batch jobs are now
	QSRT10	immune to disabled queues.  Disabled queues should have
	QUASAR	no effect on scheduling jobs as it previously did.
		 6-Jun-85  GCO 10227  /DPM

1354	QSRMAC	DQS support for QUASAR.  Expand the DEFINE NODE command
	QSRADM	to allow defining a node as a SERVER.  Don't worry about
	QSRSCH	offline status for such nodes when scheduling objects.
		Add .EQDEP (same as .EQTXT) for queue-dependent info.
		6-Jun-85  GCO 10228  /JAD

1355	QSRDSP	SHOW SYSTEM PARAMETERS loses the KSYS time on a video
		terminal.  EXPTIM wasn't ending $TEXT line with CRLF.
		17-Jun-85  GCO 10233  /JAD

1356	QSRDSP	Finish DQS support in QUASAR.  Display node type SERVER
	QSRSCH	in SHOW STATUS NETWORK.  Add another server check in
		the scheduling loop.
		20-Jun-85  GCO 10236  /JAD

1357	QSRDSP	Use summary name from QH when listing queues instead of
		always saying "jobs".
		26-Jun-85  GCO 10238  /JAD

1360	QSRMAC	Make QUEUE FOO/UNIT:LN01 work.  A side effect is QUASAR
	QSRADM	will always preserve object attributes across internal
	QSRDSP	shutdowns for remove devices.  This helps prevent IPCF
	QSRSCH	wars between QUASAR and LPTSPL when trying to schedule
		jobs for on a remote station whose device(s) do not
		support the attributes needed by the request being
		scheduled.
				*** NOTE ***
		Neither QUASAR nor QUEUE perform any validity checks
		on the new unit class quantity.  This enables a customer
		to write a spooler which passes the unit class info to
		QUASAR with no modifications necessary to any part of
		QUASAR or QUEUE.
		 1-Jul-85  GCO 10240  /DPM

1361	QSRMAC	Make START NODE work correctly for ANF-10 remote stations
	QSRADM	by starting only those devices which the node supports instead
	QSRNET	of always starting a single LPT and CDR.
		 2-Jul-85  GCO 10241  /DPM

1362	QSRADM	Make SHUT NODE <nodename> doesn't work for ANF-10 remote
		stations like it does when a node number is specified.
		 2-Jul-85  GCO 10242  /DPM

1363	QSRADM	Fix undeserved "No processor" status and remote job scheduling
		problems caused by remote objects having other than %GENRC
		attributes by updating the PSB with object/attribute data
		from response to setup messages.  Aftermath of edit 1360.
		 9-Jul-85  GCO 10243  /DPM

1364	QSRADM	Check for objects needing a restart when processing
	QSRSCH	HELLO messages.
		10-Jul-85  GCO 10248  /DPM

1365	QSRNET	Correct QE/OBJ attribute check in N$CSTN by using OBSDAA
	QSRSCH	instead of OBSSUP to indicate the presence of device
		attributes.  Remove check for OBSDAA in in scheduler pass
		two since OBJ attribute checking is done correctly in
		N$CSTN.
		22-Jul-85  GCO 10255  /DPM

1366	QSRDSP	Only list event queues if no destination node or only
		local node is specified.
		22-Jul-85  GCO 10256  /DPM

1367	QUASAR	Have QUASAR create an AUTO file request to process the
	QSRT10	GALAXY startup command file SYS:SYSTEM.CMD each time
		QUASAR is started.
		10-Sep-85  GCO 10283  /JAD

1370	QSRMDA	Fix junk MDA error acks.
		16-Sep-85  GCO 10286  /DPM

1371	QSRMAC	Allow certain queues to be processed by the scheduler even
	QSRSCH	after KSYS expires.  Do this by creating a new bit in the
		queue header flag word called QH.IKS (Immune to KSYS).
		Needed specifically for the event queue.  Right now, all
		other queues will behave as they always have.
		18-Sep-85  GCO 10304  /DPM

1372	QSRMAC	Define a maximum unit number so we can toss silly unit
		number ranges in START, etc., commands.
		22-Oct-85  GCO 10308  /JAD

1373	QSRINF	Fix Ill mem ref caused by trashed index register when assigning
		a system PID (such as [SYSTEM]MAILER).
		29-Oct-85  GCO 10316  /RCB

1374	QSRT10	Only do account validation for input or output queues.
		29-Oct-85  GCO 10317  /DPM

1375	QSRMDA	Remove stopcode ITR.  Return an error to a user if no tape
		drives support the requested density.
		 5-Nov-85  GCO 10321  /DPM

1376	QSRMDA	Remove stopcode MVD.  Return an error to a user who tries
		to mount a multi-reel DECtape volume-set.
		 5-Nov-85  GCO 10322  /DPM

1377	QSRT10	Add a few oddball devices to the "foreign" device table
		so Narf can do wierd things with his KS10.  New devices
		are RDA, DTE, DDP, and RX2.
		11-Nov-85  GCO 10324  /DPM

1400	QSRMAC	Re-define .EQUSR and .EQBOX to be 8-bit ASCIZ.  This changes
	QSRT10	master queue file format.  Upgrade to version 6 accounting
		profile format.
		12-Nov-85  GCO 10326  /DPM

1401	QSRT10	Add missing QUEUE. UUO function dispatch table entry so
		events can be queued up with the QUEUE. UUO.
		19-Nov-85  GCO 10328  /DPM

1402	QSRSCH	Allow IBM multilation nodes to be started.
		 4-Dec-85  GCO 10334  /DPM

1403	QSRMAC	Remove references to SPLTAP in the SETUP message.  It's
	QSRSCH	obsolete.  LPTSPL's drivers are responsible for figuring
		out what the difference is between a printer and a magtape.
		17-Dec-85  GCO 10344  /DPM

1404	QSRSCH	Fix up /CORE defaulting now that QUEUE doesn't do that any
	QSRT10	more.  Also correct comparrisons between core values (pages)
		and CORMAX and MINMAX storage (words).  Both quantities are
		now pages.
		23-Dec-85  GCO 10345  /DPM

1405	QSRNET	If spooling to a specific device, don't declare the printer
	QSRSCH	remote unless the device really exists at a remote station.
		 6-Jan-86  GCO 10349  /DPM

1406	QSRQUE	Correct block lengths for .QBDIS and .QBUSR when converting
		short creates into EQ format.  Also, don't overwrite user name
		with distribution location.
		 7-Jan-86  GCO 10350  /DPM

1407	QSRADM	Fix comparrison UDTs in A$AGE by converting result to seconds.
	QSRQUE	Lite internal function bit for event EQs.  Don't require
	QSRSCH	priv's when doing event queue defaulting if an internal
	QSRT10	function.  Remove trailing CRLF on event text for startup
	QUASAR	command file processing.  If a zero sleep time is computed,
		then sleep for one second (see QUASAR edit 347).
		 9-Jan-86  GCO 10355  /DPM

1410	QSRSCH	Fix loop in setup code for DN60 nodes.
		13-Jan-86  GCO 10357  /DPM

1411	QSRT10	Aviod DTL stopcodes in QSRFSS by not stuffing junk into the
		DPA storage area of the QE if we're not rewriting the EQ on
		disk while processing an account validation message.
		14-Jan-86  GCO 10361  /DPM

1412	QSRSCH	Fix stopcode CRM and RRF caused by a user submitting a batch
	QSRT10	job whose CTL or LOG file structures specify a generic device
		such as DSK.  Bomb these requests out with an appropriate
		error message.
		14-Jan-86  GCO 10362  /DPM

1413	QSRADM	Fix setup message processing for DN60s and cosmetic error
		where ACKs can display junk port numbers.
		17-Jan-86  GCO 10364  /DPM

1414	QSRT10	Fix "Wrong Profile Format" errors by requesting the proper
		type of account validation.
		20-Jan-86  GCO 10366  /DPM

1415	QSRADM	Fix AGE computation.  Also, KSYS has a resolution of
	QSRSCH	minutes, not seconds.
		24-Jan-86  GCO 10370  /DPM

1416	QSRT10	Fix incorrect usage of UV$ACE when validating account string.
		UV$ACE is last word in message, not length of message.
		28-Jan-86  GCO 10372  /JAD

1417	QSRSCH	Check for nexted request before checking for KSYS
		expiration. This allows print jobs to be scheduled
		in a "stand-alone" environment.
		 6-Mar-86  GCO 10386  /NT

1420	QSRDSP	List queue requests in the order of 1) Running; 2) Runnable
		(no /AFTER time); 3) Deferred (a /AFTER time).
		18-Mar-86  GCO 10388  /JAD

1421	QSRT10	Make name, distribution location, and log file defaulting
		work even when account validation is turned off.
		 9-Apr-86  GCO 10393  /DPM

1422	QSRMDA	Add support for overriding disk set number when mounting
		a disk via the MOUNT command.
		28-Apr-86  GCO 10401  /JAD

1423	QUASAR	Add a new queue header (network queue names).  Add code
	QSRADM	to support OPR's DEFINE/SHOW NETWORK-QUEUE(-NAMES).
	QSRDSP	Add a binary listing message and response which gives a
	QSRQUE	queue listing in forms of "QE"'s in a page.
		12-may-86  GCO 10407  /JAD

1424	QSRMDA	Make /TAPE with a cataloged volume-set work.
		19-May-86  GCO 10408  /DPM

1425	QSRADM	Turn on code to set and display output spooler magtape
	QSRDSP	parameters.  *** Note ***  Associated edit 765 to ORION.
		20-Apr-86  GCO 10409  /DPM

1426	QSRMAC	Add support for scheduling input or output jobs destined
	QSRADM	for a remote queue.  Invent new NETSTS bit NETNQC which
	QSRDSP	supersedes the old NETSRV.  Eventually, this and all old
	QSRSCH	DQS code will go away.
		 6-Jun-86  GCO 10413  /DPM

1427	QSRADM	Base NQC operation on queue name string supplied when a
	QSRDSP	request is queued, rather than twiddling a queue name into
	QSRQUE	a node/unit.  New switch in QUEUE (/QUEUE) specifies the
	QSRSCH	remote queue name for various operations.  Lots of rework
	QSRT10	to edits 1424 and 1426.
		18-Jun-86  GCO 104xx  /JAD

1430	QSRDSP	End message strings with a null to prevent junk
		from previous messages coming out.
		25-Jun-86 GCO 10424  /NT

1431	QSRQUE	Fix Q$EQR so that .QOEQR doesn't generate an MF.NOM ACK
		in addition to a .QOEQA message.  A text ACK will still
		occur instead of .EQEQA if an error occurs.
		26-Jun-86 GCO 10426 /TL

1432	QSRDSP	Default node/unit stuff from queue name in GETPAR.
		30-Jun-86  GCO 10432  /JAD

1433	QSRT10	Allocate a private block for I$SSRL to build search list change
		messages in.  QSRMDA will use G$MSG which can confuse I$SLCM
		when it tries to process the message I$SSRL built.
		1-Jul-86  GCO 10434  /JAD

1434	QSRSCH	Translate queue name string to upper case.
		2-Jul-86  GCO 10435  /JAD

1435	QSRADM	Fix usage of NETSRV where NETNQC should have been used.
	QSRDSP	Equate CHKRMQ to .RETF## instead of .RETF.
		11-Jul-86  GCO 10437  /JAD

1436	QUASAR	Have EQDFLT verify the characteristics and forms type arguments
	QSRSCH	on a CREATE by calling routines in CHRFRM.
		13-Jul-86  GCO 10438  /JAD

1437	QSRMAC	Add another word to the NQC status information to contain the
	QSRDSP	number of bytes transferred, and output that in the SHOW STAT.
		31-Jul-86  GCO 10439  /JAD

1440	QSRADM	Avoid ill mem ref in A$FNDB by using full word compare,
		not half-word compare.
		15-Aug-86  GCO 10454  /DPM

1441	QSRMDA	Clear the last word of the G$MSG block when setting up the
	QSRT10	byte pointer (MDBPTR) into the buffer to keep from losing
		ACK text.
		26-Aug-86  GCO 10456  /JAD

1442	QSRMDA	Fix bug in linking VOL blocks to VSLs that prevented all
		structure mount requests from being satisfied when an
		unmounted structure was spun up.
		 3-Sep-86  GCO 10457  /DPM

1443	ALL	Change $STOP to STOPCD.
		24-Nov-86  GCO 10470  /BAH

1444	QSRMAC	Allow SET BATCH n SYSTEM-OPR-INTERVENTION.
	QSRADM	These streams behave as OPR-INTERVENTION when OPR is on duty,
	QSRDSP	and as NOOPR-INTERVENTION when off.  This can reduce skew
	QSRSCH	between what a batch job can test (OPR on) and what controls
	QSRT?0	scheduling of other jobs (OPR-INTERVENTION).
		14-Dec-86	GCO 10476	/TL

1445	QSRQUE	Re-enter GCO 10383 which fixes unit type storage in QUEUE.
		UUO processing.
		16-Dec-86	GCO 10478	/JJF

1446	QSRT10	Make SET KSYS NOW do it NOW rather than blithely ignoring it
		half the time and doing it a minute later the other half.
		27-Jan-87	GCO 10488	/JJF

1447	QSRMDA	IVV stopcode when IBM Emulation Batch is running and there
		is a mount request from a batch stream.  Make sure the
		batch stream belongs to local processor when handling
		a mount request from batch.
		16-Feb-87	GCO 10493	/BAH

1450	QSRDSP	Include write protect/single access/private structure status
		in SHOW STATUS STRUCTURE output.
		29-Apr-87	GCO 10504	/JAD

1451	QSRMAC	Increase size of MR.JOB to handle request numbers bigger
	QSRCAT	than 18 bits.  Redefine .VSRID as a full word quantity.
	QSRDSP	Define PR.RID (request ID for allocation prescan) to be
	QSRMDA	the same as MR.JOB minus the "batch request" flag BA%JOB.
	QSRT10	Invent .VSLNK to hold link previously in .VSRID.
		29-May-87	GCO 10510	/JAD

1452	QSRMAC	Add support for "demand spoolers/processors" and new
	QUASAR	galactic startup done by QUASAR. QUASAR now starts up
	QSRT10	ORION, PULSAR, and CATLOG. The object processors
	QSRSCH	(BATCON, LPTSPL, etc) are also started by QUASAR, but
	QSRADM	only when they're needed. (See PRCDAT macro in QSRMAC).
	QSRQUE  N.B. QUASAR NOW HAS AN "UNTIL RESET" PID.
	QSRCAT
		25-Jun-87	GCO 10516	/LWS

1453	QSRMAC	Change NEBULA to a %ONCE processor. Add code to
	QSRSCH	SCH3.1 so NEBULA gets a SETUP msg if not already
		SETUP.
		1-Jul-87	GCO 10519	/LWS

1454	QSRALC  .B36  Have BLISS include CATPRM.L36 for symbols.
		2-Jul-87	GCO 10520	/LWS

1455	QSRMDA	Fix it so DISABLE OUTPUT-DISPLAY MOUNT-MESSAGES
		works.
		3-Jul-87	GCO 10524	/LWS

1456	QSRSCH	Make sure we don't overload NEBULA with jobs.
		Check and set the correct OBJSCH bits in SCH3.1.
	QSRMAC	Add new object status code, %INACT (Inactive).
	QSRDSP	If no PSB is found for the object and it's a
		%DEMND spooler, set this status.
		7-Jul-87	GCO 10528	/LWS

1457	QSRSCH	If debugging don't do demand spooler stuff or KSYS
	QSRADM	processing.
		13-Jul-87	GCO 10531	/LWS

1460	QSRT10	A mount request for DTA succeeds whereas a mount request
		for DTAx: doesn't. Fix DEVCHK so mounts for DTAx work.
		15-Jul-87	GCO 10532	/LWS

1461	QSRSCH	Cure NEBULAitis. Don't try to find/create a PSB for
		%GENRC .OTNQC objects.
		27-Jul-87	GCO 10539	/LWS

1462	QSRMAC	Change PRCDAT macro to include all attributes an object
	QSRSCH	processor can handle. Simplify SOPTYP macro (new args).
	QSRT10	Change format of OPDTAB and require attributes in call
	QSRDSP	to I$GOPD. Beef up pass 3 since NEBULA will be returning
	QSRADM	%RSUNA when appropriate. Don't turn off OBSIGN in object
		block in KILPSB.
		 3-Aug-87	GCO 10546	/LWS

1463	QSRDSP	Fix it so "ignored" objects are set to "Inactive" in
		status display when processor is not around.
		10-Aug-87	GCO 10549	/LWS

1464	QSRNET	In N$INTR, don't assume local node is first entry
		in network node queue.
		10-Aug-87	GCO 10550	SPR 10-35622	/LWS

1465	QSRMDA	QUASAR RNR stopcodes. Catalog entry is deleted for
		a structure when it's dismounted even if the structure
		has outstanding requestors. Don't delete catalog
		entry if there are outstanding requests/allocations
		for the structure.
		12-Aug-87	GCO 10551	SPR 10-35671	/LWS

1466	QSRMAC	QUASAR gets confused and sends BATCON batch jobs to
	QSRQUE	IBMSPL. Invent "IBM Batch" attribute.
	QSRSCH
		17-Aug-87	GCO 10554	SPR 10-35999	/LWS

1467	QSRMAC	Remove reference to FTFLBK.
	QSRINF	21-Aug-87	GCO 10557	/LWS

1470	QUASAR	Put set/clear of G$ACKO in main IPCF loop so QUASAR
	QSRQUE	doesn't get confused if an ack to OPR is needed during
		internal creates.
		5-Sep-87	GCO 10569	SPR 10-35726	/TL/LWS

1471	QSRT10	Fix I$VACT so it can tell if a profile is returned or
		not in UGVUP$ msg ack. This edit requires ACTDAE edit 153.
		7-Sep-87	GCO 10570	SPR 10-36011	/LWS
		
1472	QSRMDA	Don't set a tape drive unavailable if it causes a
		deadlock.
		10-Sep-87	GCO 10571	SPR 10-35582	/LWS

1473	QSRT10	Take dependency checking AC setup out of loop at INIT.2.
		21-Sep-87	GCO 10576	/LWS

1474	QSRADM	More attribute stuff.
	QSRSCH	2-Oct-87	GCO 10578	/LWS

1475	QSRMAC	Add new word to response-to-setup msg so that more
	QSRSCH	attribute type things can be returned by spooler.
		5-Oct-87	GCO 10579	/LWS

1476	QSRADM	Attributes again (hopefully for the last time).
	QSRSCH	12-Oct-87	GCO 10580	/LWS

1477	QSRQUE	Fix user output-device acknowledgement so that it supplies
		a CRLF at the end.  Makes it consistent with the rest of
		QUASAR, and with QUEUE which no longer supplies a free
		CRLF at the end of an ACK string.
	QSRDSP	Fix user-level 'The queues are empty' message so it doesn't
		produce 3 extra CRLFs when QUEUE displays it.  Terminate
		the $TEXT string with a ^A.  We'll get 1 CRLF from QUEUE
		when it exits.
		30-Oct-87	GCO 10588	/JJF

1500	QSRT10	In I$LOGFD, default the path of control file to
		.EQOID if no PPN was given for control file.
		12-Nov-87	GCO 10590	/LWS

1501	QSRMDA	Remove check for DECtape mount in LBLNOT and always send
		tape mounted message to PULSAR.
		29-Dec-87	GCO 10592	/JAD

1502	QUASAR	Add code to handle .IPCSM (Schedule Bits Change) message
	QSRT10	from monitor. Fixes problem where batch jobs don't
		get scheduled when schedule bits are changed.
		Requires MCO 13773.
		29-Dec-87	GCO 10593	SPR 10-36077	/LWS

1503	QSRMAC	Add code to handle reverse LAT and LN03's.
	QSRADM	02-Feb-88	GCO 10599	/KDO
	QSRSCH

1504	QSRCAT	Check for lower case volume names in CATALOG message.
		04-Apr-88	GCO 10613	/LWS

1505	QSRMAC	Add new bits VS.MWL and VS.MWE so the WL/WE status
	QSRMDA	of a mount request can be preserved in case we have to
	QSRCAT	wait for a response from CATLOG.
		06-Apr-88	GCO 10614	SPR 10-36100	/LWS

1506	QSRMDA	Fix problems where premounted volume of a cataloged
	QSRCAT	tape volume-set is not reassigned when the mount
		request for the volume-set is processed.
		12-Apr-88	GCO 10615	/LWS

1507	QSRADM	When calling I$GOPD in A$OSTA, make sure we pick up
		object's attributes in S2. Also, in HELSTA, don't
		restart object if it's not started already.
		7-May-1988	GCO 10626	QARs 1025,2038	/LWS

1510	QSRMAC	Change PRCDAT macro: Remove HPQ arg and add arg that
	QSRT10	be text strings to be sent down FRCLIN before running
	QSRADM	spooler. Also increase FRCLIN wait times for extreme
		circumstances.
		11-May-88	GCO 10629	/LWS

1511	QSRMDA	Add A matrix definitions for SA10 disks and tri-density
		magtapes.
		13-Jun-88	GCO 10639	/DPM

1512	QSRDSP	Fix SHOW PARAMETERS NET <nodename> display bug.
		16-Jun-88	GCO 10644	/LWS

1513	QSRT10	Timesharing over message not ended with a null in
		buffer. If "in " just happens to proceed it, INITIA
		runs when SEND ALL command is shoved down FRCLIN.
		4-Sep-88	GCO 10654	/LWS

1514	QSRT10	1. QUASAR will fire up a BATCON needlessly at KSYS time.
	QSRADM	2. We decrement PSLCUR in the PSB on an internal
	QSRSCH	   shutdown of an object and if the same object has only
		   one device setup and we shut it down via OPR when it's
		   internally shutdown, PSLCUR gets deceremented again making
		   it go to -1 and A$GPSB fails to find the PSB when the
		   object is started again causing a duplicate spooler to
		   startup needlessly.
		3. Store default protection and priv'd PPN in event EQ
		   to keep nonpriv'd users from cancelling events.
		29-Sep-88	GCO 10657	/LWS

1515	QSRSCH	I$LGFD checking for junk file structures is insufficient.
	QSRT10	.CTL FDs are ignored and non-batch queues have no checking
		at all.  Add FILCHK routine which gets called at the end
		of all xxxDEF routines to check all filespecs in all EQs.
		23-Nov-88	GCO 10661	/DPM

1516	QSRSCH	SYSTEM.CMD is not taken at startup after edit 1515.
		FILCHK causes event creates to fail if the command file
		FD contains an ersatz device.  Don't call FILCHK for
		event creates.  FILCHK was intended for device/deadlock
		checking only.
		 6-Jan-89	GCO 10663	/DPM

1517	QSRNET	On a Non-ANF system, QUASAR gets confused about the node
		names of local objects when there are DQS-Server queues
		defined. Make sure the dummy LOCAL node name gets set
		in local object blocks.
		10-Apr-89	GCO 10665	SPR 10-36259	/LWS

1520	QSRMAC	Remove SM.RSN and SM.CLM (not needed).
		24-May-89	GCO 10668	/KDO

1521	QSRMAC	Remove .SMDLK.  The rewritten D$DEAD routine doesn't
		need it anymore.
		28-May-89	GCO 10669	/KDO

1522	QSRMAC	Make NEXT command work for NQC streams.  Also, remove
	QSRADM	FTDQS conditional since this feature cannot be successfully
	QSRDSP	turned off.  Return a warning message if a user attempts to
	QSRQUE	modify a destination node in cases where a queue name string
	QSRSCH	is in use.
	QUASAR
		21-Jul-89	GCO 10673	/DPM

1523	QSRMAC	Part of Edit 1514 didn't quite fix the problem for which
	QSRSCH	it was intended. We always have to decrement PSLCUR on
		either kind of shutdown. However, we just shouldn't store
		it in the PSB if it goes negative. Also invent new meaning
		for OBSINT (it was only set in -20 code). It means SETUP
		msg to be sent for object is a setup after an internal
		shutdown. When this bit is lit, we lite the new bit, SUFINT,
		in the SETUP msg so that the spooler knows that it should
		not up the new setup in SSETUP for keeping track
		of when to logout when it's a %STCMD spooler. Also, lite
		SUFINT in a SHUTDOWN msg when we are shutting down an object
		internally. The spooler uses this bit in the SHUTDOWN msg the
		converse way it did for the SETUP msg, i.e. not count down
		SSETUP.

		30-Nov-89	GCO 10681	SPR 10-36284	/LWS
\	;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
	XP	MDADAE,G.DEAD		; ON = ENABLE DEADLOCK AVOIDANCE CODE
	XP	FTINFO,FTINFO		; ON = INCLUDE [SYSTEM]INFO SUPPORT


; 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
	XP	INPCEN,5		;START NODE STREAMS AT CENTRAL STATION
	XP	INPREM,0		;START NODE STREAMS AT REMOTE  STATION

; DEFINE SPOOLING SYSTEM PARAMETERS

	XP	IDLMIN,G.IMIN		;MINUTES DEMAND SPOOLERS STAY IDLE
	XP	SPLPRI,G.DPRI		;PRIORITY FOR SPOOLED REQUESTS
	XP	MXUPRI,G.SPRI		;MAXIMUM USER PRIORITY

	XP	MXUNIT,^D127		;MAXIMUM UNIT NUMBER
IFG <INPMAX-1>-MXUNIT,<XP MXUNIT,<INPMAX-1>> ;LEAVE ROOM FOR ALL BATCH STREAMS

	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	PRMSTR,0		;PERMANENT STRUCTURES 0=OFF, 1=ON
					;NEVER TURN ON PERMANENT STRUCTURES
>
TOPS20<	XP	NPRTBL,NPRTLB >		;BLP FOR 1=ALL USERS, 0=PRIV USERS

;FAL-STREAM PARAMETERS

	XP	FALNTY,G.FNTY		;DEFAULT NETWORK TYPE FOR FAL-STREAM

;NETWORK QUEUE CONTROL
	XP	QNMLEN,10		;LENGTH OF QUEUE NAME IN WORDS
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	RMKLEN,10,2		;REMARK STRING 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,17,17		;OBJECT BLOCK PARAMETER LENGTH
	SYSPRM	CHRSIZ,4,4		;LENGTH OF CHARACTERISTICS STRING
	SYSPRM	FRMSIZ,4,4		;LENGTH OF LONG FORMS NAME
	SYSPRM	LPTNLN,14,14		;LAT SERVER/SERVICE/PORT NAME

	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

;Note: When adding new attribute, check PRCDAT to be sure attribute
;      is accounted for.

	DEFINE ATTRIB,<			;;DECLARE THE VALID ATTRIBUTES
	LSTOF.
	X	<Invalid>,%INVLD,0	;;INVALID FOR ALL
	X	<Lower>,%LOWER,.OTLPT	;;LOWER CASE
	X	<Upper>,%UPPER,.OTLPT	;;UPPERCASE
	X	<Physical>,%PHYCL,<.OTLPT,.OTPTP,.OTCDP,.OTPLT>
	X	<Generic>,%GENRC,-1	;;GENERIC (VALID FOR ALL)
	X	<Sitgo>,%SITGO,.OTBAT	;;SITGO REQUEST
	X	<Input>,%NQINP,.OTNQC	;;NET QUEUE CTL INPUT STREAM
	X	<Output>,%NQOUT,.OTNQC	;;NET QUEUE CTL OUTPUT STREAM
	X	<IBM batch>,%IBMBT,.OTBAT ;;[1466] IBM BATCH (IBMSPL)
	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
.ROBUT:! BLOCK	1			;SIXBIT UNIT TYPE
.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  !             !
;	!   AND LINKING ALGORITHM   !    ENTRY    !             !
;	!-------------------------------------------------------!
;	!                  LIST FLAG (LIQxxx)                   !
;	!-------------------------------------------------------!
;	!                      OBJECT TYPE                      !
;	!-------------------------------------------------------!
;	!               LISTING ROUTINE ADDRESS                 !
;	!-------------------------------------------------------!
;	!               SUMMARY ROUTINE ADDRESS                 !
;	!-------------------------------------------------------!
;	!          ASCIZ LISTING QUEUE NAME ADDRESS             !
;	!-------------------------------------------------------!
;	!        ASCIZ SUMMARY "QUANTITY" NAME ADDRESS          !
;	!-------------------------------------------------------!
;	!        ASCIZ SUMMARY "QUANTITY" TYPE ADDRESS          !
;	!-------------------------------------------------------!
;	!           ASCIZ NOTIFICATION TEXT ADDRESS             !
;	!=======================================================!
	PHASE	0

.QHTYP:! BLOCK	1		;QUEUE TYPE WORD
	QH.NAM==-1,,0		;3 CHARACTER QUE NAME
	QH.FLG==777B26		;FLAGS
		QH.VAR==1B18	;ENTRY SIZE IS VARIABLE
		QH.INV==1B19	;QUEUE IS INVISIBLE
		QH.DIS==1B20	;QUEUE IS DISABLED
		QH.IKS==1B21	;QUEUE IS IMMUNE TO KSYS
		QH.OAV==1B22	;OBJECT ALWAYS VISIBLE (DESPITE QUEUE SETTING)
	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
		.QHTEV==6	;EVENT 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	;   PERFORM 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)
.QHOBJ:! BLOCK	1		;ASSOCIATED OBJECT TYPE
.QHDEP:! BLOCK	1		;LISTING ROUTINE
.QHSUM:! BLOCK	1		;SUMMARY ROUTINE
.QHLQN:! BLOCK	1		;ASCIZ LISTING QUEUE NAME
.QHSQN:! BLOCK	1		;ASCIZ SUMMARY "QUANTITY" NAME
.QHSQT:! BLOCK	1		;ASCIZ SUMMARY "QUANTITY" TYPE
.QHNOT:! BLOCK	1		;ASCIZ NOTIFICATION TEXT

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 FIXED QUEUE-ENTRY-HEADER

.QEVSZ:! BLOCK	1		;SIZE OF EXTENSION AREA (QH.VAR QUEUES ONLY)
	QE.VSZ==0,,-1		;EXTENSION SIZE (BEYOND QH.SIZ)

QEHVSZ:!			;SIZE OF VARIABLE QUEUE-ENTRY-HEADER (QH.VAR)

	DEPHASE			;END OF QUEUE HEADER DEFINITION

	PHASE	QEHSIZ		;START QE-SPECIFIC DEFINITION
				; (QE IS IN A FIXED-LENGTH QUEUE)

.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
.QENQC:! BLOCK	1		;NETWORK QUEUE CONTROL
	QE.STR==1B0		;SPOOLING TO REMOTE IN PROGRESS
.QEQNM:! BLOCK	QNMLEN		;REMOTE QUEUE NAME
.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 (ORIGINAL 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 values for processor types to associate	with the objects below.

	%ONCE==0	;Started once by QUASAR (at QUASAR startup time)
			; Does not logout when idle
	%STCMD==1	;Started on START command from OPR
			; Logout when all streams shutdown via OPR
	%DEMND==2	;Started on demand (job for a stream)
			; Logout when all streams idle for x mins.

;Define a macro that defines the program name and processor type for
;	a given object.
;
;	P1	object type(s) (.OTxxx)
;	P2	program name
;	P3	processor type (defined above)
;	P4	object attribute(s)
;	P5	dependencies (ANF10, DECNET, DN60)
;	P6	text string(s) to be sent down FRCLIN at spooler startup

DEFINE	PRCDAT,<
	X	BAT,BATCON,%DEMND,%GENRC,,<SET HPQ 0,SET DSKPRI 0>
	X	LPT,LPTSPL,%DEMND,<%GENRC,%LOWER,%UPPER,%PHYCL>
	X	<PTP,CDP,PLT>,SPROUT,%DEMND,%GENRC
	X	RDR,CDRIVE,%STCMD,%GENRC
	X	BIN,SPRINT,%DEMND,%GENRC
	X	FAL,FAL,%STCMD,%GENRC,<ANF10,DECNET>
	X	BAT,IBMSPL,%STCMD,%IBMBT,DN60
	X	NQC,NEBULA,%ONCE,<%NQOUT,%NQINP>,DECNET
REPEAT	0,<
	X	FOO,FOOSPL,%DEMND,%GENRC,,<SET HPQ 15,SET DSKPRI 1>
>
>

;Define a macro to be used by object processors to determine their
;	respective object processor type.
;
;	NAM is the processor's name (eg. LPTSPL)
;	SYM is the symbol that will be assigned object processor type

DEFINE	SOPTYP (NAM,SYM), <
   XLIST

   DEFINE X (OTYP,PNAM,PTYP,PATR,PDEP,PTXT), <
      PRCTYP (PNAM,PTYP)
   >;;END X

   ..CNT==0
   .XCREF ..CNT

      DEFINE PRCTYP (PN,PT), <
         IFIDN <NAM><PN>, <
            IFG ..CNT-0, <      ;;MAKE SURE ONLY ONE ENTRY PER PROCESSOR
                  IF1,<
         	     PRINTX ?More than one entry in PRCDAT for same processor
                  >
            >;;END IFG

            'SYM=='PT		;;SET PROCESSOR TYPE
            ..CNT==..CNT+1	;;COUNT THEM
         >;;END IFIDN
      >;;END PRCTYP

      PRCDAT			;;INVOKE THIS MESS

   PURGE ..CNT
   LIST
>;;END SOPTYP

;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>
	X	EVT,EVT,<0,0,0,0,0>
	X	FAL,FAL,<<FALNTY>,0,0,0,0>
	X	NQC,QNM,<<%NQOUT>,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			;SETUP IS INTERNAL "RESTART" OF OBJECT
	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
	OBSFCH==1B16			;[1163] FORMS CHANGE IN PROGRESS
	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
	   OF.LP2==3B20			;LP20 SIMULATION
	      .OFLDF==0			;DEFAULTED BY DRIVER
	      .OFLNO==1			;NO
	      .OFLYE==2			;YES
	.OOTAP==4			;SIXBIT DEVICE FOR SPOOLING TO TAPE
	.OOUNT==5			;SIXBIT UNIT TYPE
	.OOMTA==6			;MAGTAPE CHARACTERISTICS SET BY OPR
	.OOVSN==7			;VOLUME-SET NAME
	;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
	       .OPINS==3		;ALLOW IF SCHED # 400
	.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

;FAL-STREAM parameters

	.OBNTY==0			;NETWORK-TYPE
	.OBCON==1			;ELAPSED CONNECT TIME
	.OBBYT==2			;BYTES TRANSFERRED
	.OBNDN==3			;CONNECTED NODE	NAME (SIXBIT)

;Network Queue Controller parameters

	.ONNOD==0			;CONNECTED NODE NAME (SIXBIT)
	.ONCON==1			;ELAPSED CONNECT TIME (SECONDS)
	.ONLNK==2			;LINK (NETWORK) TYPE
	.ONBYT==3			;BYTES TRANSFERRED


;MAGTAPE BITS
	OB.MRL==3B3			;MULTI-REEL VOLUME-SET
	   .OBMRD==0			   ;DEFAULT
	   .OBMRN==1			   ;NO
	   .OBMRY==2			   ;YES
	OB.MDI==3B5			;MAGTAPE DIRECTORY
	   .OBMDD==0			   ;DEFAULT
	   .OBMDN==1			   ;NO
	   .OBMDY==2			   ;YES
	OB.MTK==3B7			;TRACKS
;	   .TMDRD==0			   ;DEFAULT
;	   .TMDR9==1			   ;9-TRACK
;	   .TMDR7==2			   ;7-TRACK
	OB.MPR==3B9			;PARITY
	   .OBMPD==0			   ;DEFAULT
	   .OBMPO==1			   ;ODD
	   .OBMPE==2			   ;EVEN
	OB.MDN==7B12			;DENSITY
	OB.MLV==1B13			;LABEL TYPE FIELD VALID
	OB.MLT==17B17			;LABEL TYPE


;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
		X	<Changing Forms>,%FRMCH,<.OTLPT,.OTPLT,.OTPTP,.OTCDP>
		X	<Connecting>,%CNECT,<.OTNQC,.OTFAL>
		X	<Mount wait>,%MWAIT,0
		X	<Inactive>,%INACT,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   !
;	!-------------------------------------------------------!
;	!  UDT set by QUASAR when processor should be running	!
;	!-------------------------------------------------------!
;	!                                                       !
;	\                 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
	PSFCNT==000777,,0		;NUMBER OF TIMES TRIED TO STARTUP
	PSFSTS==777000,,0		;STATUS OF PROCESSOR
	 PS.RUN==0			;RUNNING
	 PS.WAT==1			;WAITING FOR HELLO MESSAGE
	 PS.FIR==2			;PROCESSOR IS TO BE FIRED UP
	 PS.KSY==3			;SPECIAL BATCON STATUS AT KSYS TIME
	PSFNOT==0,,-1			;NUMBER OF OBJECT TYPES
PSBUDT:! BLOCK	1			;UDT WHEN PROCESSOR BETTER BE THERE
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)         !
;	!=======================================================!

TOPS10	<
; MACRO TO DEFINE THE LIST OF ALL POSSIBLE ANF-10 NETWORK OBJECT TYPES
DEFINE	ANFOBJ,<
	X	(BAT,.TYTTY)
	X	(LPT,.TYLPT)
	X	(PTP,.TYPTP)
	X	(CDP,.TYCDP)
	X	(PLT,.TYPLT)
	X	(RDR,.TYCDR)
> ;END DEFINE ANFOBJ
> ;END TOPS10

		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==777700,,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
	NETNQC==1B8		;  REMOTE NET QUEUE CONTROLLER
	NETSRV==1B8		;  NODE IS A SERVER (SEE EDIT 1426)
	NETLAT==1B9		;Node is a LAT SERVER

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

   NT.TYP==70,,0		;NETWORK TYPE
	DF.DEC==0		;  'DEC' NODE
	DF.378==1		;  3780 NODE
	DF.278==2		;  2780 NODE
	DF.HSP==3		;  HASP NODE
	DF.LAT==5		;LAT-SERVER
   NT.MOD==7,,0			;NETWORK MODE
	DF.TRM==1		;  TERMINATION MODE
	DF.EMU==2		;  EMULATION MODE
	DF.PRO==3		;  Proto mode
   NT.TOU==700000		;PROTOCOL TIMEOUT CATAGORY
	ST.PRI==1		;  PRIMARY
	ST.SEC==2		;  SECONDARY
   NT.DTR==070000		;DATA TERMINAL READY
	ST.ON==1		;  ON
	ST.OFF==2		;  OFF
   NT.TRA==007000		;TRANSPARENCY
;	ST.ON==1		;  ON
;	ST.OFF==2		;  OFF
   NT.XTA==000777		;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)
NETLNM:! BLOCK	LPTNLN		;LAT SERVER/SERVICE/PORT

TOPS10	<
NETOBJ:!			;START OF OBJECT COUNT LIST
DEFINE	X	(OBJ,TYP),<NET'OBJ:! BLOCK	1>
	ANFOBJ
NETOBL==.-NETOBJ		;NUMBER OF ANF-10 NETWORK DEVICES
> ;END TOPS10

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	PID  --  [SYSTEM]INFO Queue of Names ands PIDs

IFN FTINFO,<		;DEFINE [SYSTEM]INFO'S PID QUEUE

;	!=======================================================!
;	\                                                       \
;	\       THE VARIABLE QUEUE ENTRY HEADER (QH.VAR)        \
;	\                                                       \
;	!=======================================================!
;	!                   THE PID ASSIGNED                    !
;	!-------------------------------------------------------!
;	!     LAST WHO TO TELL      !     FIRST WHO TO TELL     !
;	!-------------------------------------------------------!
;	!      LENGTH OF NAME       !     LAST KNOWN OWNER      !
;	!=======================================================!
;	\                                                       \
;	\             THE NAME CHOSEN BY THE CALLER             \
;	\                     ASCIZ FORMAT                      \
;	\                                                       \
;	!=======================================================!

	PHASE	QEHVSZ		;APPEND TO THE VARIABLE QUEUE ENTRY HEADER

PIDPID:! BLOCK	1		;THE PID ASSIGNED
PIDLNK:! BLOCK	1		;LINK INFORMATION
	PID.LT==QH.PTL		;TAIL LINK FOR WHO TO TELL AT DROP OF PID
	PID.LH==QH.PTF		;HEAD LINK FOR WHO TO TELL AT DROP OF PID
PIDJOB:! BLOCK	1		;JOB INFORMATION
	PID.LN==-1,,0		;NUMBER OF CHARACTERS IN THE NAME
	PID.CX==777B26		;CTX NUMBER OF OWNER
	PID.JB==777B35		;JOB NUMBER OF OWNER
	PID.JC==PID.CX!PID.JB	;JCH NUMBER OF OWNER

PIDNAM:!			;THE NAME PROPER
				;NUMBER OF WORDS DEPENDS ON G$MPS
PIDSIZ:!			;LENGTH OF PID QUEUE MINUS DATA

	DEPHASE

>  ;END OF IFN FTINFO
SUBTTL	IPC  --  QSRIPC resend queue format

;	!=======================================================!
;	\                                                       \
;	\       THE VARIABLE QUEUE ENTRY HEADER (QH.VAR)        \
;	\                                                       \
;	!=======================================================!
;	\                                                       \
;	\        THE SAB TO SEND (COPY OF G$SAB AT SEND)        \
;	\                                                       \
;	!=======================================================!
;	\                                                       \
;	\                  THE PACKET TO SEND                   \
;	\                                                       \
;	!=======================================================!

	PHASE	QEHVSZ		;THIS IS A QH.VAR QUEUE

RS.CNT:! BLOCK	1		;RESEND COUNT (FOR EXPIRATION CHECK)
RS.SAB:! BLOCK	SAB.SZ		;SAB USED FOR THE SEND
RS.MSG:!			;START OF THE MESSAGE (ONLY IF PACKET MODE)

IPCSIZ:!			;MINIMUM SIZE OF IPC QUEUE ENTRY

	DEPHASE
SUBTTL	ODB  --  Object type Data Block format

;	!=======================================================!
;	\                                                       \
;	\       THE VARIABLE QUEUE ENTRY HEADER (QH.VAR)        \
;	\                                                       \
;	!=======================================================!
;	!		OBJECT TYPE (.OTXXX)			!
;	!=======================================================!
;	!	   NUMBER OF ARG BLOCKS IN DATA AREA		!
;	!=======================================================!
;	\                                                       \
;	\        VARIABLE LENGTH DATA COMMON TO OBJECT          \
;	\                                                       \
;	!=======================================================!

Comment	\

  Object type data are parameters and such that are common to all
objects of the same type and are needed by all processors of the
objects, i.e. all .OTLPTs, no matter how many LPTSPLs are running
to process print requests. In other words, data that is common to
units, streams, etc. of the same object type, not settable on a
per unit or per stream basis.

  Object type data are stored in ODB queue entries. ODB queue entries
are variable length (see ODB format definition). Each entry contains
the object type (.OTxxx) the data pertains to and a variable length
data following.	The data area should be made of 1 or more "arg"
blocks, e.g. arg header word followed by data, header word containing
arg type and length of block. \

	PHASE	QEHVSZ		;THIS IS A QH.VAR QUEUE

ODB.OT:! BLOCK	1		;OBJECT TYPE (.OTXXX)
ODB.AC:! BLOCK	1		;NUMBER OF ARG BLOCKS IN DATA AREA
ODB.DA:!			;START OF OBJECT TYPE DATA
ODBSIZ:!			;MINIMUM SIZE OF ENTRY

	DEPHASE
SUBTTL	QNM  --  Queue Name Data Block format

;	!=======================================================!
;	/                                                       /
;	/                THE QUEUE ENTRY HEADER                 /
;	/                                                       /
;	!=======================================================!
;	!		QUEUE NAME IN 8-BIT ASCII		!
;	!-------------------------------------------------------!
;	!                REQUESTED OBJECT BLOCK                 !
;	!-------------------------------------------------------!
;	!			FLAGS				!
;	!=======================================================!

	PHASE	QEHSIZ

QNM.QN:! BLOCK	QNMLEN		;REMOTE QUEUE NAME

QNM.RO:! BLOCK	ROBSIZ		;REQUESTED OBJECT BLOCK

QNM.FL:! BLOCK	1		;FLAGS
	QN.LCL==1B0		;LOCAL QUEUE

QNMSIZ:!			;SIZE OF ENTRY
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
		.QOKSY==66	;KSYS MESSAGE (QUASAR TO BATCON)
		.QOATO==67	;PROCESS AUTO-FILE (QUASAR TO ORION)
		.QOOLC==70	;OPERATOR LOG FILE CLOSURE (QUASAR TO ORION)
		.QOFAS==71	;FAL STATUS UPDATE MSG (FAL TO QUASAR)
		.QOEQR==72	;EQ REQUEST (PRIV'ED USER TO QUASAR)
		.QOEQA==73	;EQ ANSWER  (QUASAR TO PRIV'ED USER)
		.QOODB==74	;OBJECT TYPE DATA MSG (QUASAR TO PROCESSOR)
		.QOBLR==75	;BINARY QUEUE LIST REQUEST (USER TO QUASAR)
		.QOBLA==76	;BINARY QUEUE LIST ANSWER (QUASAR TO USER)

	   ;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
	DEFLIM	DLOG,5,1,2		;DEFAULT LOG FILE NEEDED
	DEFLIM	OPTN,6,36,35		;/BATOPN

;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

;Event queue parameters
	DEFLIM	FAIL,00,01,00		;FAILSOFT ENTRY
	DEFLIM	ACTV,00,01,01		;ACTIVE
	DEFLIM	INVS,00,01,02		;INVISIBLE ENTRY
	DEFLIM	REQT,00,01,03		;REQUEUE TIME ALREAY SET UP
	DEFLIM	NOFS,00,01,04		;DON'T FAILSOFT ENTRY
	DEFLIM	TYPE,00,18,35		;TYPE CODE (SEE EVENTS MACRO)
	DEFLIM	REPT,01,36,35		;REPEAT TIMES (DAY,DAILY,WEEKLY, ETC.)
	DEFLIM	TEXT,02,36,35		;ADDRESS OF REASON TEXT BLOCK
	DEFLIM	FILE,03,36,35		;ADDRESS OF FILE DESCRIPTOR
	DEFLIM	SWIT,04,36,35		;DEPENDENT EVENT SWITCHES

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	12		;39 CHR 8-BIT ASCIZ /USER:"TEXT"

.EQBOX:! BLOCK	12		;39 CHR 8-BIT ASCIZ /DISTRIBUTION:"TEXT"

.EQDEP:!			;ANOTHER NAME FOR THIS
.EQTXT:! BLOCK	STSSIZ		;REASON TEXT FOR EVENT QUEUES

.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.CHG==1B16	;[1161] PRIORITY WAS CHANGED BY QUASAR
	    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

	.EQQNM==.EQDEP		;WHERE QUEUE NAME STRING IS STORED
	.EQCHR==.EQQNM+QNMLEN	;WHERE CHARACTERISTICS STRING IS STORED
	.EQFRM==.EQCHR+CHRSIZ	;WHERE LONG FORMS NAME STRING IS STORED

	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
	FNMLTH==^D30/4+1	;LENGHT OF FONT NAME IN WORDS
.FPFNM:! BLOCK	FNMLTH		;SPACE FOR A FONT NAME

FPXSIZ:!			;MAXIMUM FP AREA SIZE

	PHASE	1		;BIN QUEUE

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

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


;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 !!!
		LS.SUM==1B3	;YOU WANT TO SEE ONLY A SUMMARY
		LS.RMT==1B35	;YOU WANT TO SEE REMOTE QUEUES TOO


	;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)
		.LSUTY==10	;THE SIXBIT UNIT TYPE
		.LSPID==11	;THE PID OF THE REQUESTOR (ONLY SUPPLIED BY
				; QUASAR TO THE NETWORK QUEUE CONTROLLER)
		.LSQNM==12	;THE NETWORK QUEUE NAME TO BE LISTED
		; .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
		LIQEVT==1B9	;LIST THE EVENT QUEUE

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

		LIQALL==LIQOUT+LIQBAT+LIQRET+LIQMNT+LIQEVT ;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 ORIGINALLY 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 DEFINED 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's start time)
	X	(QJOB,QUASAR's 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,Deferred SPOOL messages received)
	X	(MCAN,COUNTANSWER messages sent)
	X	(SLCD,Scheduler loop countdowns)
	X	(DEAD,MDA deadlock avoidance calls)
	X	(DFAL,MDA 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)
	X	(IPCE,Resend queue expirations)
	X	(DTAM,DECtape mounts)
	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
	SUFLAT==1B1			;BIT FOR LAT SERVICE
	SUFSRV==1B2			;BIT FOR SERVER STREAM
	SUFLP2==3B5			;LP20 SIMULATION
	SUFINT==1B6			;INTERNAL SETUP/SHUTDOWN
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.UT:! BLOCK	1			;SIXBIT UNIT TYPE (I.E. 'LN01', ETC.)
SUP.CN:! BLOCK	7			;DEVICE CONDITIONS/CHARACTERISTICS
					;SET BY THE OPERATOR
SUP.ST:! BLOCK	1			;NETWORK ('NETSTS') STATUS/FLAG BITS
SUP.MT:! BLOCK	1			;MAGTAPE CHARACTERISTICS
SUP.VS:! BLOCK	VSNLEN			;MAGTAPE VOLUME-SET NAME
SUP.LN:! BLOCK	LPTNLN			;LAT SERVER/SERVICE/PORT

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                  !
;	!-------------------------------------------------------!
;	!                    Attribute Flags                    !
;	!=======================================================!

	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.UT:! BLOCK	1			;SIXBIT UNIT TYPE
RSU.PN:! BLOCK	1			;PROTOTYPE NODE NAME (SIXBIT)
RSU.FL:! BLOCK	1			;EXTRA ATTRIBUTE FLAGS

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:!

;OPTIONAL DATA WHICH MAY BE INCLUDED IN THE STATUS MESSAGE

	STU.PR:! BLOCK	OBPRSZ		;DEPENDENT PARAMETERS
	STU.ST:! BLOCK	STSSIZ		;CURRENT JOB STATUS IN ASCIZ

	STU.MX:!			;MAXIMUM SIZE

		DEPHASE

	SUBTTL	TAPE DEASSIGN/DISMOUNT MESSAGE (IPCC FUNCTION 34)


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


;	This message consists of at least three words of common
;	deassign data.  For DECtapes and magtapes, additional
;	words follow containing device specific data.  These
;	words begin at .TDMIN (the minimum length of the deassign
;	message) and occupy only as many words as are required to
;	contain data to be storred in the "MOUNT" (dismount) IPCF
;	message sent to the Accounting Daemon.

		 PHASE	0		;[1165] COMMON DEASSIGN DATA

	.TDHDR:! BLOCK	1		;HEADER
	.TDDEV:! BLOCK	1		;SIXBIT DEVICE NAME
	.TDDVT:! BLOCK	1		;DEVICE TYPE
	   TDD.DV==777777		;[1234] DEVICE TYPE
	   TDD.FL==777777,,0		;[1234] FLAGS SET BY MONITOR
	      TD.VSW==400000		;[1234] VOLUME SWITCH STATS

	.TDJBN:! BLOCK	1		;USER JOB NUMBER
	.TDMIN:!			;[1165] MINIMUM SIZE OF MESSAGE

		 DEPHASE		;[1165] END COMMON DEASSIGN DATA


		 PHASE	.TDMIN		;[1165] DECTAPE SPECIFIC DATA

	.TDDTR:! BLOCK	1		;[1165] READS
	.TDDTW:! BLOCK	1		;[1165] WRITES

		 DEPHASE		;[1165] END DECTAPE SPECIFIC DATA


		 PHASE	.TDMIN		;[1165] MAGTAPE SPECIFIC DATA

	.TDCRD:! BLOCK	1		;[1165] # CHARS READ SINCE UNLOAD
	.TDCWR:! BLOCK	1		;[1165] # CHARS WRITTEN SINCE UNLOAD
	.TDSRE:! BLOCK	1		;[1165] SOFT READ ERRORS
	.TDHRE:! BLOCK	1		;[1165] HARD READ ERRORS
	.TDSWE:! BLOCK	1		;[1165] SOFT WRITE ERRORS
	.TDHWE:! BLOCK	1		;[1165] HARD WRITE ERRORS

		 DEPHASE		;[1165] END MAGTAPE SPECIFIC DATA
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			\
;	\							\
;	!-------------------------------------------------------!

	.QCAST==60		;OPERATOR INTERVENTION BLOCK (BATCH)
				;/ASSIST: SWITCH FUNCTIONALITY
;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCAST			!
;	!-------------------------------------------------------!
;	!    /ASSIST:YES  .OPINY==1, /ASSIST:NO  .OPINN==2	!
;	!-------------------------------------------------------!

	.QCPRC==61		;IBMCOM PROCESSING NODE BLOCK
				;/PROCESSING SWITCH FUNCTIONALITY

;	!-------------------------------------------------------!
;	!   BLOCK LENGTH (2)	!	.QCPRC			!
;	!-------------------------------------------------------!
;	!	  SIXBIT NODE NAME OR OCTAL NUMBER		!
;	!-------------------------------------------------------!

	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 magtape volume status block (.TLSTA)

	.TLSTA==12		;MAGTAPE STATUS BLOCK TYPE

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

			PHASE	0

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


;The DECtape volume status block (.DLSTA)

	.DLSTA==13		;DECTAPE STATUS BLOCK TYPE

;	!-------------------------------------------------------!
;	!	2		!	.DLSTA			!
;	!-------------------------------------------------------!
;	!                  SIXBIT REELID                        !
;	!=======================================================!

			PHASE	0

	.DLRID:! BLOCK	1		;SIXBIT REELID
	.DLSIZ:!			;DECTAPE 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
	  %RLABO==4			;[1162] PULSAR ABORTING VOL SWITCH

.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==77000			;[1215] Kontroller type
	CVL.UT==70			;Unit type
	CVL.CL==7			;Class (?)
.CVLLN:!				;Length of block

	DEPHASE
SUBTTL	Internal catalog cache structure


; Volume-set identifier block
	 PHASE	0
.CQVSN:! BLOCK	VSNSIZ		;VOLUME-SET NAME (7-BIT ASCIZ)
.CQFLG:! BLOCK	1		;FLAGS
   CQ.USE==777777B17		   ;CATALOG CACHE ENTRY USE COUNT
   CQ.TYP==7B32			   ;VOLUME-SET TYPE
   CQ.BLD==7B35			   ;BUILD CODE
      .CQCAT==0			      ;FROM [SYSTEM]CATALOG
      .CQQSR==1			      ;CREATED BY QUASAR
.CQNVL:! BLOCK	1		;NUMBER OF VOLUMES
.CQVUS:! BLOCK	1		;OWNER PPN (USER)
.CQVNM:! BLOCK	NAMSIZ		;8-BIT 39 CHARACTER ASCIZ NAME
.CQVLO:! BLOCK	LOCSIZ		;8-BIT 19 CHARACTER ASCIZ LOCATION TEXT
.CQVSC:! BLOCK	1		;VOLUME-SET CHARACTERISTICS
.CQVSL:!			;VOLUME-SET BLOCK LENGTH
	 DEPHASE


; Volume Block
	 PHASE	0
.CQVID:! BLOCK	1		;VOLUME ID (SIXBIT)
.CQRSN:! BLOCK	1		;VOLUME RESOURCE NUMBER
.CQVLL:!			;VOLUME 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==MR.JOB-BA%JOB	;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	THE FAL STATUS UPDATE MESSAGE - FUNCTION 71


;	!=======================================================!
;	\							\
;	\		THE MESSAGE HEADER			\
;	\							\
;	!=======================================================!
;	\							\
;	\		FAL STREAM OBJECT BLOCK			\
;	\							\
;	!=======================================================!
;	!		FAL STREAM STATUS CODE			!
;	!=======================================================!
;	\							\
;	\		OBJECT BLOCK PARAMETER WORDS		\
;	\							\
;	!=======================================================!
;	\							\
;	\		FAL STREAM STATUS (ASCIZ)		\
;	\							\
;	!=======================================================!

		PHASE	STU.SZ		;STANDARD MESSAGE HEADER

;FAL STATUS UPDATE MESSAGE IS REGULAR (.QOSTU) STATUS UPDATE MESSAGE
;WITH OBJECT BLOCK PARAMETER WORDS AND STATUS STRING WORDS ADDED.

	FAL.PR:! BLOCK	OBPRSZ		;DEPENDENT PARAMETERS
	FAL.ST:! BLOCK	STSSIZ		;CURRENT JOB STATUS IN ASCIZ

	FAL.SZ:!

		DEPHASE

	SUBTTL	Binary list request message (.QOBLR)

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!	          	   QUEUE		        !
;	!=======================================================!

	PHASE	MSHSIZ			;APPEND TO THE MESSAGE HEADER

LIS.QU:! BLOCK	1			;THE QUEUE(S) TO LIST
LIS.SZ:!				;SIZE OF THE BINARY LIST MESSAGE

;LIS.QU contains the same bits as the .LSQUE block in the ASCII
;list message.

	DEPHASE
	SUBTTL	Binary list answer message (.QOBLA)

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!

;A single LIST message may generate more than one LISTANSWER response.
;The LST.MS word of the LISTANSWER message is used to indicate how many
;responses were sent.  The RH of this word is a sequenced count of the
;number of LISTANSWER pages sent.  The sign bit is set for the last of
;the LISTANSWER responses.

	PHASE	MSHSIZ			;APPEND TO THE MESSAGE HEADER
LST.MS:! BLOCK	1			;MESSAGE SEQUENCE NUMBER
LST.FT:!				;THE FIRST ANSWER IN THIS BLOCK

;Each answer is in QE format.  If .QECRE is zero the last entry in
;the page was the last QE to be listed.

	LST.NU==<PAGSIZ-LST.FT>/QNTSIZ	;NUMBER OF ANSWERS PER PAGE

	DEPHASE
	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	UQN,<Unknown Queue Name Specified>,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	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	APE,<Already pending Event Queue entry>,MF.FAT
	X	ASN,<Ambiguous structure name>,MF.FAT  		;[1226]
	X	ISN,<Invalid structure name>,MF.FAT		;[1226]
	X	GDN,<Generic devices may not be mounted>,MF.FAT ;[1226]
	X	PLD,<Pathological name invalid>,MF.FAT		;[1226]
	X	IER,<Invalid EQ request message format>,MF.FAT
	X	MRD,<Multi-reel DECtape volume-sets are not permitted>,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	Queue create-related event defintions


; The following bits are used during event creation by the queue
; specific code in QSRSCH (the defaulting routine).

	EV.INT==1B0		;INTERNAL EVENT TYPE
	EV.CHK==1B1		;ALWAYS CHECK EACH TIME THROUGH SCHEDULER
	SUBTTL	Definition of the Event type codes


; Arguments used are

;	X	'ABRV' , 'SIXBIT NAME', 'SCHED' , 'RELEASE' , 'BITS' , 'TEXT'

DEFINE	EVENTS,<

X	TMR,<TIMER >,.POPJ,.POPJ,<EV.INT>,<>	;;RANDOM TIMER
X	KSY,<KSYS  >,I$SKSY,I$KKSY,<EV.CHK>,<Timesharing will end> ;;KSYS
X	SPL,<SPOOL >,.POPJ,.POPJ,<EV.INT>,<>	;;SPOOLER CREATION
X	ATO,<TAKFIL>,Q$EVTR,.POPJ,<0>,<Time-of-day OPR command file> ;;TIME-OF-DAY AUTO FILE
X	USG,<USGFIL>,I$UFIL,.POPJ,<0>,<Usage file closure>	;;SET USAGE FILE CLOSURE
X	BIL,<BILCLS>,I$UBIL,.POPJ,<0>,<Usage billing closure>	;;SET BILLING CLOSURE
X	OPR,<OPRFIL>,I$OCLS,.POPJ,<0>,<ORION log file closure>	;;SET OPERATOR LOG FILE CLOSURE
X	LCK,<FSLOCK>,.POPJ,.POPJ,<EV.INT>,<>	;;FILE STRUCTURE LOCK/UNLOCK
X	IGN,<IGNORE>,.POPJ,.POPJ,<EV.INT>,<>	;;IGNORE OBJECT REQUEST
X	AFT,<AFTER >,.POPJ,.POPJ,<EV.INT>,<>	;;/AFTER REQUEST
X	NLC,<LOCKED>,.POPJ,.POPJ,<EV.INT>,<>	;;LOCKED STR COUNTDOWN

> ;END EVENTS MACRO


	ZZ==0
DEFINE	X	(ABV,NAME,SCHED,KILL,BITS,TEXT),<.EV'ABV==<ZZ==ZZ+1>>

	EVENTS
	.EVMAX==ZZ		;HIGHEST LEGAL EVENT
	SUBTTL	Definition of the Known Queues

;ARGUMENTS USED ARE

;	A - SIXBIT QUEUE NAME
;	B - ENTRY SIZE
;	C - QUEUE TYPE
;	D - FLAGS
;	E - SCHEDULER DISPATCH VECTOR
;	F - LISTING FLAG
;	G - OBJECT TYPE (ZERO IF NONE)
;	H - QUEUE DEPENDENT LISTING ROUTINE
;	I - SUMMARY TYPEOUT ROUTINE
;	J - ASCIZ QUEUE NAME FOR LISTINGS
;	K - ASCIZ "QUANTITY" NAME (I.E. EVENTS, JOBS, ETC.)
;	L - ASCIZ "QUANTITY" TYPE (I.E. PAGES, REQUESTS, RUNTIME, ETC.)
;	M - ASCIZ NOTIFICATION TEXT

DEFINE	QUEUES,<

	LSTOF.

X EVT,QNTSIZ,.QHTEV,QH.IKS,S$EVT,LIQEVT,.OTEVT,DEPEVT,0,<Event>,<event>,<>,<>
X INP,QNTSIZ,.QHTIP,0,S$INPT,LIQBAT,.OTBAT,DEPBAT,LIST.T,<Batch>,<job>,<runtime>,<executing>
X LPT,QNTSIZ,.QHTOU,0,S$LPT,LIQLPT,.OTLPT,DEPOUT,LIST.D,<Printer>,<job>,<pages>,<printing>
X PTP,QNTSIZ,.QHTOU,0,S$PTP,LIQPTP,.OTPTP,DEPOUT,LIST.D,<Paper tape punch>,<job>,<feet>,<punching>
X CDP,QNTSIZ,.QHTOU,0,S$CDP,LIQCDP,.OTCDP,DEPOUT,LIST.D,<Card punch>,<job>,<cards>,<punching>
X PLT,QNTSIZ,.QHTOU,0,S$PLT,LIQPLT,.OTPLT,DEPOUT,LIST.D,<Plotter>,<job>,<minutes>,<plotting>
X RET,QNTSIZ,.QHTAR,QH.INV,S$RET,LIQRET,.OTRET,DEPRET,LIST.D,<File retrieval>,<requests>,<>,<retrieving>
X NOT,QNTSIZ,.QHTAR,QH.INV,S$NOT,0,0,0,0,<>,<>,<>,<>
X BIN,QNTSIZ,.QHTIP,QH.INV,S$BIN,0,.OTBIN,0,0,<Interpreter>,<jobs>,<decks>,<interpreting>
X DBM,QNTSIZ,.QHFRR,QH.IKS!QH.INV,S$DBM,0,.OTDBM,0,0,<>,<>,<>,<>
X RDR,QNTSIZ,.QHFRR,0,S$RDR,0,.OTRDR,0,0,<>,<>,<>,<>
X SPL,SPLSIZ,.QHTQS,QH.IKS!QH.INV,0,0,0,0,0,<>,<>,<>,<>
X PSB,PSBSIZ,.QHTQS,QH.IKS!QH.INV,0,0,0,0,0,<>,<>,<>,<>
X OBJ,OBJSIZ,.QHTQS,QH.IKS!QH.INV,0,0,0,0,0,<>,<>,<>,<>
X USE,USESIZ,.QHTQS,QH.IKS!QH.INV,0,0,0,0,0,<>,<>,<>,<>
X STR,STRSIZ,.QHTQS,QH.IKS!QH.INV,0,0,0,0,0,<>,<>,<>,<>
X NET,NETSIZ,.QHTQS,QH.IKS!QH.INV,0,0,.OTNCU,0,0,<>,<>,<>,<>
IFN FTINFO,<
X PID,PIDSIZ,.QHTQS,QH.IKS!QH.INV!QH.VAR,0,0,0,0,0,<>,<>,<>,<>
>
X IPC,IPCSIZ,.QHTQS,QH.IKS!QH.INV!QH.VAR,0,0,0,0,0,<>,<>,<>,<>
X FAL,QNTSIZ,.QHFRR,0,S$FAL,0,.OTFAL,0,0,<>,<>,<>,<>
X ODB,ODBSIZ,.QHTQS,QH.IKS!QH.INV!QH.VAR,0,0,0,0,0,<>,<>,<>,<>
X QNM,QNMSIZ,.QHTQS,QH.IKS!QH.INV!QH.OAV,S$NQC,0,.OTNQC,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
	X	EVT
> ;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,G,H,I,J,K,L,M),<

	IFDIF	<E><0>,<GLOB (E)>
	IFDIF	<H><0>,<GLOB (H)>
	IFDIF	<I><0>,<GLOB (I)>

HDR'A::	INSVL.(<SIXBIT\   A\>,QH.NAM)!INSVL.(C,QH.TYP)!D
	EXP	0
	XWD	E,INSVL.(B,QH.SIZ)
	EXP	F
	EXP	G
	EXP	H
	EXP	I
	EXP	[ASCIZ \J\]
	EXP	[ASCIZ \K\]
	EXP	[ASCIZ \L\]
	EXP	[ASCIZ \M\]
	>  ;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			!
;	!-------------------------------------------------------!

		.TMDRD==0	;Default
		.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
	  MR.JOB==177,,-1	;'JOB' NUMBER FIELD
	   BA%JOB==1B11		;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
	.VSPID:! BLOCK	1	;[1173] REQUESTORS PID
	.VSACK:! BLOCK	1	;[1173] USER ACK CODE
	.VSRFL:! BLOCK	1	;[1173] VSL MOUNT REQUEST FLAG'S
				;[1173] FIELDS ARE SAME AS IN .MRFLG
				;[1173] MR.ACK, MR.WAT, ETC.
				;[1173] ** DON'T DEFINE NEW FIELDS HERE!! **
	.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
	   VS.ALB==1B26		  ;[1162] VOL SWITCH ABORTED BY PULSAR
	   VS.INI==1B27		  ;[1164] REINIT IN PROGRESS
	   VS.FDV==1B28		  ;FOREIGN (UNIT RECORD) DEVICE
	   VS.MWL==1B29		  ;MOUNT REQUEST WRITE-LOCK STATUS (IN CASE
				  ;  CATALOG SEARCH NEEDED)
	   VS.MWE==1B30		  ;MOUNT REQUEST WRITE-ENABLE STATUS
	.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.DPR==1B33		  ;[1164] PROTECTION IS TO BE DEFAULTED
	   VS.DDN==1B34		  ;DENSITY STATUS IS DEFAULTED
	   VS.DTK==1B35		  ;TRACK STATUS IS DEFAULTED
	.VSRID:! BLOCK	1	;VOLUME SET REQUEST ID
	.VSLNK:! BLOCK	1	;VOLUME SET REQUEST LINK
	   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.PRE==0,,000777	  ;[1162] OFFSET TO THE PREVIOUS 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
	     %STAIN==4			    ;[1164] VOLUME IS INITIALIZING
	   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.FRC==1B19			;[1217] VOLUME 'FORCE' MOUNTED
	   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.AVA==1B1			  ;UNIT IS AVAILABLE FOR USE BY MDA
	    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==37B18		  ;UNIT CONTROLLER TYPE
	    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
	    UC.VSW==1B35		  ;UCB IS IN VOLUME SWITCH STATE
	.UCBS1:! BLOCK	1		;[1217] YES, A SECOND WORD FOR STATUS
	    U1.FRC==1B0			  ;[1217] 'FORCED MOUNT'. VOL LINKED IS
					  ;[1217]  BEING MOUNTED BEHIND PULSAR'S BACK
	.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

	.UCBS0==.UCBST			;[1217] FOR SYMMETRY

		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


;The first entry, the "header", in the 'A' matrix defines the length of
;	the matrix in words, the number of resources currently defined,
;	and the maximum number of resources that can be kept in this
;	data structure.

;	!=======================================================!
;	!          Length           !   Current   !   Maximum   !
;	!-------------------------------------------------------!
;	!                                                       !
;	\                                                       \
;	\                  Spare header words                   \
;	\                                                       \
;	!                                                       !
;	!=======================================================!

	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


;All other entries have the form:

;	!=======================================================!
;	!           Flags           !  Address of ASCIZ string  !
;	!-------------------------------------------------------!
;	!                      Status bits                      !
;	!-------------------------------------------------------!
;	!    Available     !    Allocated    !     Claimed      !
;	!=======================================================!

	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		;ADDRESS 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
;The entries in the 'B' (allocated) matrix and the 'C' (owned) matrix
;	have the form:

;	!=======================================================!
;	!                      Job number                       !
;	!-------------------------------------------------------!
;	!           Flags           !    Number of resources    !
;	!-------------------------------------------------------!
;	!                                                       !
;	\                                                       \
;	\                      Use counts                       \
;	\                                                       \
;	!                                                       !
;	!=======================================================!

	PHASE	0

.SMJOB:! BLOCK	1		;USER'S JOB NUMBER 400000+RID FOR BATCH
.SMFLG:! BLOCK	1		;ENTRY FLAG WORD
	SM.IGN==1B0		;IGNORE THIS ENTRY
	SM.CNT==0,,-1		;RESOURCE COUNT
.SMRES==.-1			;RESOURCE # OFFSET (WITH BASE OF 1)
	BLOCK	2		;SPACE FOR 2 RESOURCE COUNTS
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