Google
 

Trailing-Edge - PDP-10 Archives - BB-H138A-BM - 3a-sources/qsrmac.mac
There are 45 other files named qsrmac.mac in the archive. Click here to see a list.
UNIVER	QSRMAC  --  Parameter File for QUASAR
SUBTTL	Larry Samberg - Chuck O'Toole /CER 13 Nov 77 (+JBS 13-MAY-77)
; ADDED TWO QUEUES FOR THE DN60 PROJECT, IBM AND JOB.  /JBS




;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1974, 1975, 1976, 1977, 1978 BY
;	DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

	SEARCH	GALCNF		;GET CONFIGURATION DATA
	SEARCH	SBSMAC		;GET SUB-SYSTEMS MACROS
	SEARCH	MACTEN		;SEARCH MACRO DEFINITION 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==33			;MAJOR CHANGE NUMBER OF QSRMAC


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

;               TABLE OF CONTENTS FOR QSRMAC
;
;
;                        SECTION                                   PAGE
;    1. Table of Contents.........................................   2
;    2. Revision History..........................................   3
;    3. Accumulator Definitions...................................  10
;    4. Symbols derived from GALCNF...............................  11
;    5. Changable System Parameters...............................  12
;    6. Abbreviations Used in QUASAR-10...........................  13
;    7. PT   --  Page Table Definitions...........................  14
;    8. IDS  --  Internal Device Specifier........................  15
;    9. FD  --  File Descriptor...................................  16
;   10. RDB  --  Request Descriptor Block.........................  18
;   11. QH   --  Queue Header Definitions.........................  20
;   12. QE   --  Queue Entry Definitions..........................  21
;   13. PSB  --  Program Status Block.............................  23
;   14. SPL  --  Spool Queue Definition...........................  25
;   15. CSM  --  Canonical SPOOL Message..........................  26
;   16. CLM  --  Canonical LOGOUT Message.........................  27
;   17. The Messages..............................................  28
;   18. MS   --  Message Header Definition........................  29
;   19. The HELLO Message -- Function 1...........................  30
;   20. The RELEASE Message -- Function 2.........................  31
;   21. The CHECKPOINT and REQUEUE messages -- Functions 3 and 4..  32
;   22. The NEXTJOB and CREATE Messages -- Functions 5 and 7......  33
;   23. EQ   --  The External Queue Entry.........................  34
;   24. The ABORT Message -- Function 6...........................  40
;   25. The LIST Message -- Function 10...........................  41
;   26. The MODIFY Message -- Function 11.........................  42
;   27. The KILL Message -- Function 12...........................  44
;   28. The LIST ANSWER Message -- Function 13....................  45
;   29. The TEXT Message  --  Function 14.........................  47
;   30. The REQUEST FOR CHECKPOINT Message  --  Function 15.......  48
;   31. The DEFER Message  --  Function 16........................  49
;   32. The ROUTE Message  --  Function 17........................  50
;   33. Event Counters............................................  51
;   34. The COUNT Message  --  Function 20........................  53
;   35. The COUNTANSWER Message  --  Function 21..................  54
;   36. The SPOOL Message - Function 26 (sent by IPCC)............  55
;   37. The LOGOUT Message - Function 27 (sent by IPCC)...........  57
;   38. IPCF Parameters...........................................  58
;   39. Common Parameters.........................................  59
;   40. Operating System Dependent Macros.........................  60
;   41. Failsoft System Definitions...............................  62
;   42. QUASAR Fatal Error Codes..................................  63
;   43. Definition of the Known Queues............................  64
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$ROUTE 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.

  100	QSRMAC	MAKE THIS VERSION 3.  MERGE IN DN64 SUPPORT WHICH INCLUDES
		ADDING 2 NEW QUEUES (IBM AND JOB).
	QSRSCH	DEFINE SCHEDULING VECTOR FOR IBM AND JOB QUEUES TO BE THE
		SAME AS THE CDP QUEUE

  101	QSRT20	Fix a problem by which QUASAR dies with ?ILL PAGE ACCESS
	QSRFSS	when the master queue file becomes 513 blocks.

	\	;End Of Revision History
SUBTTL	Accumulator Definitions

;ACCUMULATORS  0 THRU 12, AND 17 ARE DEFINED IN SBSMAC


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

	E==14			;QUEUE ENTRY POINTER

	H==15			;QUEUE HEADER POINTER

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

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

	XP	FTUUOS,FTUUOS		; ON = BUILDING GALAXY-10
	XP	FTJSYS,FTJSYS		; ON = BUILDING GALAXY-20
	XP	FTRQUE,FTRQUE		; ON = KEEP A REDUNDANT MASTER QUEUE
	XP	FTSPLIT,FTSPLIT		; ON = SPLIT REQUESTS BY STRUCTURE

; DEFINE BATCH JOB PARAMETERS

	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	INPNUM,G.IMXJ		;MAXIMUM NUMBER OF CONCURRENT BATCH JOBS

; DEFINE SPOOLING SYSTEM PARAMETERS

	XP	SPLLIM,G.SBIA		;BIAS FOR SPOOLED REQUESTS
	XP	SPLPRI,G.SPRI		;PRIORITY FOR SPOOLED REQUESTS
	XP	SPLMBC,G.NMBC		;NUMBER OF MINUTES BETWEEN CHECKPOINTS

	XP	FRMNUM,G.DNFS		;FORMS TO REMEMBER DURING SCHEDULING
	XP	FRMTHR,G.AFCT		;AUTOMATIC FORMS CHANGE THRESHOLD
	XP	FRMNOR,G.DNOR		;NAME OF "NORMAL" FORMS
	XP	FRMUNI,G.DNUC		;NUMBER OF UNIQUE CHARACTERS IN THE NAME
	XP	FRMKSY,G.SAFC		;MINS BEFORE KSYS TO STOP AUTO FORMS CHANGE

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

	XP	LPTFCT,G.FLPT		;FACTOR FOR BLOCKS TO PAGES
	XP	CDPFCT,G.FCDP		;  "  TO CARDS
	XP	PLTFCT,G.FPLT		;  "  TO PLOTTER MINUTES
	XP	PTPFCT,G.FPTP		;  "  TO FEET

;FAILSOFT SYSTEM PARAMETERS

	XP	FSSSTR,G.QSTR		;FILE-STRUCTURE FOR MASTER QUEUES
SUBTTL	Changable System Parameters

DEFINE PARAM(SYM,VAL,MIN,MAX),<
	IFDEF SYM,<
		IFL <SYM-MIN>,<PRINTX VALUE OF SYM IS TOO SMALL>
		IFG <SYM-MAX>,<PRINTX VALUE OF SYM IS TOO LARGE>
	>  ;END IFDEF SYM
	IFNDEF SYM,<SYM==VAL>
>  ;END DEFINE PARAM

	PARAM(EQCKSZ,5,5,200)		;SIZE OF REQUEST CHECKPOINT AREA
SUBTTL	Abbreviations Used in QUASAR-10

COMMENT \

Abbreviation	Meaning
------------	-------

    ITN		Internal Task Name
    PDB		Packet Data Block (for IPCF)
    PSB		Program Status Block
    RQP		Relative Queue Pointer
    NJP		Number of Jobs being Processed
    DPA		Disk Page Address
    IDS		Internal Device Specifier
    CSM		Canonical SPOOL Message
    CLM		Canonical LOGOUT Message
    RDB		Request Descriptor Block

\
SUBTTL	PT   --  Page Table Definitions

;	!-------------------------------------------------------!
;	! LINK TO NEXT !  FLAG BITS  !   COUNT OF FREE CELLS    !
;	!  0 IF NONE   !             !   REMAINING THIS PAGE    !
;	!-------------------------------------------------------!

	PT.LNK==777B8		;LINK TO NEXT PAGE FOR THIS QUEUE
	PT.USE==1B9		;PAGE IN USE
	PT.WRK==1B10		;PAGE IS IN WORKING SET
	PT.ADR==1B11		;PAGE IS ADDRESSABLE
	PT.CNT==0,,-1		;FREE CELL COUNT


;THE STATE OF A PAGE CAN BE DETERMINED BY THE FOLLOWING FLAG BIT SETTINGS

;	PT.USE	PT.WRK	PT.ADR		MEANING

;	  0	  0	  0	DESTROYED PAGE (LOWEST RE-USE)
;	  0	  0	  1	CREATED (HIGH DESTROY, MEDIUM RE-USE)
;	  0	  1	  0	IMPOSSIBLE
;	  0	  1	  1	AVAILABLE (HIGHEST RE-USE, HIGH PAGE OUT, LOW DESTROY)
;	  1	  0	  0	TEMP STATE WHILE BEING CREATED OR IPCF'ed AROUND
;	  1	  0	  1	PAGED OUT (PAGE IN ON PAGE FAULT)
;	  1	  1	  0	IMPOSSIBLE
;	  1	  1	  1	ACTIVLY USED (LOW PAGE OUT)
SUBTTL	IDS  --  Internal Device Specifier

;	!=======================================================!
;	!    GENERIC DEVICE NAME    !    FLAGS    !STATION !UNIT!
;	!=======================================================!


	DV.GDN==-1,,0		;GENERIC DEVICE NAME
	DV.DMD==0,,-1		;DEVICE MODIFIERS

		DV.NUL==1B24		;NULL UNIT (GENERIC SPECIFICATION)
		DV.LLP==1B25		;LOWER CASE LPT
		DV.LUP==1B26		;UPPER CASE LPT
		DV.STN==77B32		;STATION NUMBER
		DV.UTN==7B35		;UNIT NUMBER
SUBTTL	FD  --  File Descriptor

;ANY TIME A FILE-SPECIFICATION MUST BE PASSED AS A DATA ITEM
;	BETWEEN SUBROUTINES OR WITHIN MESSAGES AND DATA-STRUCTURES,
;	IT IS REPRESENTED BY A "FILE DESCRIPTOR" OR "FD".

IFN FTUUOS,<	;FILE DESCRIPTOR FOR TOPS10

;	!=======================================================!
;	!             STRUCTURE CONTAINING THE FILE             !
;	!-------------------------------------------------------!
;	!                       FILE NAME                       !
;	!-------------------------------------------------------!
;	!                       EXTENSION                       !
;	!-------------------------------------------------------!
;	!                        [P,PN]                         !
;	!=======================================================!
;	!                                                       !
;	!                 SFD PATH FOR THE FILE                 !
;	!               THESE WORDS ARE OPTIONAL                !
;	!             AND CAN BE OF LENGTH  0 TO 5              !
;	!                                                       !
;	!=======================================================!

	PHASE	0

.FDSTR:! BLOCK	1		;STRUCTURE CONTAINING THE FILE
.FDNAM:! BLOCK	1		;THE FILE NAME
.FDEXT:! BLOCK	1		;THE EXTENSION
.FDPPN:! BLOCK	1		;THE OWNER OF THE FILE
FDMSIZ:!			;MINUMUM SIZE OF A FILE DESCRIPTOR

.FDPAT:! BLOCK	5		;PATH (OPTIONAL AND FROM 0 TO 5 WORDS)
FDXSIZ:!			;MAXIMUM FD AREA SIZE

	DEPHASE

>  ;END OF IFN FTUUOS

					;CONTINUED ON FOLLOWING PAGE
IFN FTJSYS,<		;FILE DESCRIPTOR FOR TOPS20

;	!=======================================================!
;	/                                                       /
;	/                                                       /
;	/   THE FILE DESCRIPTOR ON TOPS20 IS AN ASCIZ STRING    /
;	/      OF VARIABLE LENGTH AND READY TO BE GTJFN'ED      /
;	/                                                       /
;	/                                                       /
;	!=======================================================!

	PHASE	0

.FDSTG:! BLOCK	1		;ASCIZ STRING FOR GTJFN/OPENF SEQUENCE
FDMSIZ:!			;MINIMUM SIZE OF A FILE DESCRIPTOR
FDXSIZ==^D150/^D5		;RESERVE ROOM FOR 150 CHARACTERS

	DEPHASE

>  ;END OF IFN FTJSYS
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                !
;	!-------------------------------------------------------!
;	!                                                       !
;	!                                                       !
;	
;	
;	
;	!                 -----  TOPS10  -----                  !
;	!                                                       !
;	!-------------------------------------------------------!
;	!              OWNER IDENTIFICATION (PPN)               !
;	!-------------------------------------------------------!
;	!                     OWNER ID MASK                     !
;	!-------------------------------------------------------!
;	
;	
;	
;	!                 -----  TOPS20  -----                  !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\            SPECIFICATION OF REQUEST OWNER             \
;	\                                                       \
;	\                                                       \
;	!                                                       !
;	!-------------------------------------------------------!


				;DEFINITIONS FOLLOW ON NEXT PAGE
	PHASE	0

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

IFN FTUUOS,<
.RDBOI:! BLOCK	1			;OWNER ID
.RDBOM:! BLOCK	1			;OWNER ID MASK
>  ;END IFN FTUUOS

IFN FTJSYS,<
.RDBOW:! BLOCK	10			;REQUEST OWNER SPEC
>  ;END IFN FTJSYS


RDBSIZ:!

	DEPHASE
SUBTTL	QH   --  Queue Header Definitions

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

	PHASE	0

.QHTYP:! BLOCK	1		;QUEUE TYPE WORD
	QH.NAM==-1,,0		;3 CHARACTER QUE NAME
	QH.FLG==777B26		;FLAGS
		QH.IPC==1B18	;QUEUE FOR IPCF, ADD IN G$MPS TO SIZE
		QH.LST==1B19	;QUEUE CAN BE LISTED
	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

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

.QHPAG:! BLOCK	1		;STORAGE INFORMATION
	QH.SCH==-1,,0		;SCHEDULER ENTRY VECTOR
		SCHLNK==0	;   LINK IN
		SCHSCH==1	;   SCHEDULE
		SCHDEF==2	;   FILL IN DEFAULTS FOR CREATE
		SCHMOD==3	;   PREFORM QUEUE DEPENDENT MODIFY

	QH.SIZ==777B26		;SIZE OF EACH ENTRY
	QH.NTL==777		;LAST # OF PAGES NEEDED TO LIST THIS QUEUE

QHSIZE:!			;SIZE OF A QUEUE HEADER

	DEPHASE
SUBTTL	QE   --  Queue Entry Definitions

;	!=======================================================!
;	!     LINK TO PREVIOUS      !       LINK TO NEXT        !
;	!  0 IF THIS IS THE FIRST   !   0 IF THIS IS THE LAST   !
;	!=======================================================!
;	!  CREATION TIME OF ENTRY (INTERNAL DATE/TIME FORMAT)   !
;	!-------------------------------------------------------!
;	!      PID PROCESSING THIS ENTRY (0 IF NOT IN USE)      !
;	!-------------------------------------------------------!
;	!             DEVICE PROCESSING THIS ENTRY              !
;	!-------------------------------------------------------!
;	!                  INTERNAL TASK NAME                   !
;	!-------------------------------------------------------!
;	!          FILE-STRUCTURE CONTAINING REQUEST            !
;	!-------------------------------------------------------!
;	!                   ENTRANCE PRIORITY                   !
;	!-------------------------------------------------------!
;	! EXTERNAL SEQUENCE NUMBER  !      FLAGS       !PRIORITY!
;	!-------------------------------------------------------!
;	!    REQUEST PROTECTION     !     DEVICE MODIFIERS      !
;	!-------------------------------------------------------!
;	!                OWNER'S IDENTIFICATION                 !
;	!-------------------------------------------------------!
;	!                   EXTERNAL JOB NAME                   !
;	!-------------------------------------------------------!
;	!    DEADLINE PARAMETER (INTERNAL DATE/TIME FORMAT)     !
;	!-------------------------------------------------------!
;	!                                                       !
;	!               REQUEST LIMIT INFORMATION               !
;	!             CONTENTS ARE QUEUE DEPENDENT              !
;	!                        5 WORDS                        !
;	!                                                       !
;	!-------------------------------------------------------!
;	!     DISK PAGE ADDRESS     !    RQP     !              !
;	!-------------------------------------------------------!

;	!                 -----  TOPS10  -----                  !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                       USER NAME                       !
;	!                       (2 WORDS)                       !
;	!=======================================================!
;	
;	
;	!                 -----  TOPS20  -----                  !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                OWNER (LOGGED IN USER)                 !
;	!                       (8 WORDS)                       !
;	!-------------------------------------------------------!
;	!              CREATOR'S CONNECT DIRECTORY              !
;	!                      (10 WORDS)                       !
;	!=======================================================!
	PHASE	0

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

QEHSIZ:!			;SIZE OF QUEUE-ENTRY-HEADER

.QECRE:! BLOCK	1		;INTERNAL CREATION TIME OF THIS ENTRY
.QEPID:! BLOCK	1		;PID PROCESSING THIS ENTRY (0 IF AVAILABLE)
.QEDEV:! BLOCK	1		;DEVICE PROCESSING THIS ENTRY (E.G. LPT2)
.QEITN:! BLOCK	1		;INTERNAL TASK NAME
.QESTR:! BLOCK	1		;FILE STRUCTURE CONTAINING REQUEST
.QEIPR:! BLOCK	1		;ENTRANCE PRIORITY FOR THIS ENTRY
.QESEQ:! BLOCK	1		;EXTERNAL VALUES
	QE.SEQ==-1,,0		;EXTERNAL SEQUENCE NUMBER
	QE.SPL==1B28		;THIS REQUEST CONTAINS SPOOLED FILES
	QE.RDE==1B29		;THIS REQUEST DOESN'T EXIST (CLEAN-UP)
	QE.PRI==77B35		;EXTERNAL PRIORITY

.QEPRT:! BLOCK	1		;REQUEST PROTECTION
	QE.PRO==-1,,0		;THE PROTECTION FIELD
	QE.DMD==DV.DMD		;DEVICE MODIFIERS (MUST BE DV.DMD)

.QEOID:! BLOCK	1		;OWNER IDENTIFIER
.QEJOB:! BLOCK	1		;EXTERNAL JOB NAME
.QEDED:! BLOCK	1		;DEADLINE PARAMETER
.QELM1:! BLOCK	1		;THE FIRST LIMIT WORD (OUTPUT = FORMS TYPE)
	QE.DEP==EQ.DEP		;THE DEPENDENCY COUNT
	QE.UNI==EQ.UNI		;/UNIQUE: VALUE
		QE.UNO==EQ.UNO	;  /NO

.QELM2:! BLOCK	1		;THE SECOND LIMIT WORD
	QE.PGS==EQ.PGS		;OUTPUT PAGE LIMIT
	QE.COR==EQ.COR		;BATCH JOB CORE LIMIT
	QE.TIM==EQ.TIM		;BATCH JOB TIME LIMIT

.QELM3:! BLOCK	1		;THE THIRD LIMIT WORD
.QELM4:! BLOCK	1		;THE FOURTH LIMIT WORD
.QELM5:! BLOCK	1		;THE FIFTH LIMIT WORD
.QESTN:! BLOCK	1		;REMOTE INFORMATION
	QE.DPA==-1,,0		;DISK PAGE ADDRESS
	QE.RQP==177B24		;RELATIVE QUEUE POINTER

IFN FTUUOS,<
.QEUSR:! BLOCK	2		;USER'S NAME (2 WORDS)
>  ;END IFN FTUUOS
IFN FTJSYS,<
.QEOWN:! BLOCK	10		;REQUEST OWNER
.QECON:! BLOCK	12		;CONNECTED DIRECTORY
>  ;END IFN FTJSYS

QNTSIZ:!			;SIZE OF THE QUEUE ENTRY

	DEPHASE
SUBTTL	PSB  --  Program Status Block

;	!=======================================================!
;	/                                                       /
;	/                THE QUEUE ENTRY HEADER                 /
;	/                                                       /
;	!=======================================================!
;	!                 PID OF KNOWN PROGRAM                  !
;	!-------------------------------------------------------!
;	!                    PROGRAM'S NAME                     !
;	!-------------------------------------------------------!
;	!         DEVICE TO SCHEDULE FOR ( IDS FORMAT )         !
;	!-------------------------------------------------------!
;	!              DEVICE USED BY THAT PROGRAM              !
;	!-------------------------------------------------------!
;	!  FLAG SETTINGS   !   NJP   ! ADDR OF THE QUEUE HEADER !
;	!-------------------------------------------------------!
;	!                  INFORMATION WORD 1                   !
;	!-------------------------------------------------------!
;	!                  INFORMATION WORD 2                   !
;	!-------------------------------------------------------!
;	!                  INFORMATION WORD 3                   !
;	!-------------------------------------------------------!
;	!                    SCHEDULER WORD                     !
;	!-------------------------------------------------------!
;	!               TIME FOR NEXT CHECKPOINT                !
;	!=======================================================!
	PHASE	QEHSIZ		;APPEND TO THE QUEUE ENTRY HEADER SIZE

PSBBGN:!			;FIRST LOC OF THE PSB
PSBPID:! BLOCK	1		;PROGRAM'S PID
PSBNAM:! BLOCK	1		;PROGRAM NAME IN SIXBIT
PSBSDV:! BLOCK	1		;DEVICE TO SCHEDULE FOR
	PSYQUE==-1,,0		;QUEUE NAME TO DRAW FROM
	PSYDMD==DV.DMD		;DEVICE MODIFIERS (MUST BE DV.DMD)

PSBPDV:! BLOCK	1		;PROCESSING DEVICE
PSBSTS:! BLOCK	1		;STATUS FLAGS
	PSYSCH==1B0		;AVAILABLE FOR SCHEDULING
	PSYFRZ==1B1		;SPECIFIED FORMS ARE FROZEN
	PSYLLP==1B2		;DEVICE IS LOWER CASE PRINTER (LL:)
	PSYRDE==1B3		;COMPONENT CAN HANDLE RDE JOBS
	PSYNJP==77B17		;NUMBER OF JOBS BEING PROCESSED FOR THIS PSB
	PSYHDR==0,,-1		;ADDRESS OF QUEUE HEADER

PSBIN1:! BLOCK	1		;INFORMATION WORD 1 (OUTPUT = CURRENT FORMS)
	PSYSJT==-1,,0		;SINGLE JOB TIME MAXIMUM
	PSYTBT==0,,-1		;TOTAL TIME FOR ALL BATCH

PSBIN2:! BLOCK	1		;INFORMATION WORD 2
	PSYPGS==-1,,0		;MLIMIT
	PSYMJB==77B17		;MJOB (SAME SIZE AS PSYNJP)
	PSYNXT==0,,-1		;NEXT JOB

PSBIN3:! BLOCK	1		;INFORMATION WORD 3
	PSYSJC==-1,,0		;SINGLE JOB CORE MAXIMUM
	PSYTBC==0,,-1		;TOTAL CORE FOR ALL BATCH

PSBSCH:! BLOCK	1		;SCHEDULER INFO
	PSYSMC==-1,,0		;SUM OF CORE CURRENTLY ALLOCATED
	PSYSMT==0,,-1		;SUM OF TIME CURRENTLY COMMITTED

PSBRCK:! BLOCK	1		;TIME TO REQUEST THE NEXT CHECKPOINT

PSBSIZ:!			;SIZE OF THE STATUS BLOCK

	DEPHASE
SUBTTL	SPL  --  Spool Queue Definition

;	!=======================================================!
;	/                                                       /
;	/                THE QUEUE ENTRY HEADER                 /
;	/                                                       /
;	!=======================================================!
;	!                OWNER'S IDENTIFICATION                 !
;	!-------------------------------------------------------!
;	!             INTERNAL DEVICE SPECIFICATION             !
;	!-------------------------------------------------------!
;	!        JOB NUMBER         !     RETRIEVAL POINTER     !
;	!-------------------------------------------------------!
;	!          FILE-STRUCTURE CONTAINING REQUEST            !
;	!-------------------------------------------------------!
;	!                           !     LENGTH OF REQUEST     !
;	!=======================================================!

	PHASE	QEHSIZ		;APPEND TO THE QUEUE ENTRY HEADER

SPLOID:! BLOCK	1		;OWNER'S ID
SPLQUE:! BLOCK	1		;INTERNAL DEVICE SPECIFICATION
SPLJOB:! BLOCK	1		;JOB INFORMATION
	SPYJOB==-1,,0		;THE JOB NUMBER
	SPYDPA==0,,-1		;THE RETRIEVAL POINTER

SPLSTR:! BLOCK	1		;STRUCTURE CONTAINING THE REQUEST
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	CSM  --  Canonical SPOOL Message

;	!=======================================================!
;	!        JOB NUMBER         !  STATION #  !    FLAGS    !
;	!-------------------------------------------------------!
;	!                  USER NAME IN SIXBIT                  !
;	!                       (2 WORDS)                       !
;	!-------------------------------------------------------!
;	!                OWNER'S IDENTIFICATION                 !
;	!-------------------------------------------------------!
;	!               INIT'ED (OPEN'ED) DEVICE                !
;	!-------------------------------------------------------!
;	!             STRUCTURE CONTAINING THE FILE             !
;	!-------------------------------------------------------!
;	!                   ENTER'ED FILENAME                   !
;	!-------------------------------------------------------!
;	!     SIZE OF THE FILE IN 200 WORD DISK BLOCK UNITS     !
;	!-------------------------------------------------------!
;	!     LENGTH OF THE FD      !     ADDRESS OF THE FD     !
;	!=======================================================!


	PHASE	0

CSM.JB:! BLOCK	1		;JOB INFORMATION
	CS.JOB==-1,,0		;JOB NUMBER
	CS.LOC==777B26		;STATION NUMBER
	CS.FLG==777		;FLAGS
		CS.DFR==1B27	;DEFERRED MODE SPOOLING

CSM.OI:! BLOCK	1		;OWNER'S ID
CSM.DV:! BLOCK	1		;INIT'ED DEVICE
CSM.ST:! BLOCK	1		;STRUCTURE CONTAINING THE FILE
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.FD:! BLOCK	1		;FILE DESCRIPTOR INFORMATION
	CS.FDL==-1,,0		;LENGTH OF THE FD AREA
	CS.FDA==0,,-1		;ADDRESS OF THE FD TO INCLUDE

IFN FTUUOS,<
CSM.US:! BLOCK	2		;USER NAME (2 WORDS)
>  ;END IFN FTUUOS

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

;THE FOLLOWING PAGES CONTAIN THE FORMAT OF THE VARIOUS MESSAGES WHICH
;	ARE SENT TO OR BY QUASAR TO VARIOUS SYSTEM COMPONENTS.
SUBTTL	MS   --  Message Header Definition

;	!=======================================================!
;	!      MESSAGE LENGTH       !       MESSAGE TYPE        !
;	!=======================================================!

	PHASE	0		;NORMALLY INDEXED BY 'M'

.MSTYP:! BLOCK	1		;TYPE OF MESSAGE
	MS.ACK==1B0		;CALLER WANTS A RESPONSE
	MS.CNT==377777B17	;LENGTH OF THE MESSAGE (INCLUDING WORD 0)
	MS.TYP==0,,-1		;TYPE CODE

	   ;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
		.QOTEX==14	;TEXT MESSAGE
		.QORCK==15	;CHECKPOINT-REQUEST MESSAGE
		.QODFR==16	;DEFER MESSAGE
		.QOROU==17	;ROUTING CHANGE
		.QOCOU==20	;COUNT MESSAGE
		.QOCAN==21	;COUNT ANSWER MESSAGE

	   ;INTERNAL OPERATIONS

		.QIFNC==1B18	;IF BIT 18 IS SET, THE CALL IS INTERNAL
				; AND THE REQUEST MAY BE INTERPRETED
				; DIFFERENTLY THAN EXTERNAL CALLS

MSHSIZ:!			;SIZE OF THE MESSAGE HEADER

	DEPHASE
SUBTTL	The HELLO Message -- Function 1

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                     PROGRAM NAME                      !
;	!-------------------------------------------------------!
;	!               SIXBIT SCHEDULING DEVICE                !
;	!-------------------------------------------------------!
;	!                   PROCESSING DEVICE                   !
;	!-------------------------------------------------------!
;	!                  INFORMATION WORD 1                   !
;	!-------------------------------------------------------!
;	!                  INFORMATION WORD 2                   !
;	!-------------------------------------------------------!
;	!                  INFORMATION WORD 3                   !
;	!-------------------------------------------------------!
;	! STATION !      FLAGS       !     REQUEST VERSION      !
;	!=======================================================!

	PHASE	MSHSIZ

HEL.NM:! BLOCK	1		;PROGRAM NAME
HEL.SD:! BLOCK	1		;DEVICE TO SCHEDULE FOR
	HELQUE==-1,,0		;QUEUE NAME
	HELDMD==DV.DMD		;DEVICE MODIFIERS (MUST BE DV.DMD)

HEL.PD:! BLOCK	1		;PROCESSING DEVICE
HEL.I1:! BLOCK	1		;INFORMATION WORD 1
				;INPUT  = XWD TIME,SUMTIME (SECONDS)
				;OUTPUT = FORMS TYPE
HEL.I2:! BLOCK	1		;INFORMATION WORD 2
				;INPUT  = XWD MJOB,NEXT
				;OUTPUT = XWD MLIMIT,NEXT
HEL.I3:! BLOCK	1		;INFORMATION WORD 3
				;INPUT  = XWD CORE,SUMCORE (PAGES)
				;OUTPUT = (UNUSED)
HEL.ST:! BLOCK	1		;STATUS FLAGS
	HELDSN==77B5		;SPOOLERS DEFAULT STATION
	HELSCH==1B6		;  AVAILABLE FOR SCHEDULING
	HELFRZ==1B7		;  FREEZE SPECIFIED FORMS
	HELSTC==1B8		;  STATUS CHANGE
	HELBYE==1B9		;  DISCONNECT (GOOD-BYE)
	HELLLP==1B10		;  OWNS A LOWER CASE PRINTER (PROCESSING DEVICE)
	HELRDE==1B11		;  COMPONENT CAN HANDLE RDE JOBS
	HELVER==0,,-1		;ASSEMBLED VERSION OF QSRMAC (%%.QSR)

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.SZ:!			;SIZE OF THE RELEASE MESSAGE

REL.BJ:! BLOCK	1		;BATCH JOB INFORMATION
	RL.DLG==1B0		;DELETE THE LOG FILE AFTER PRINTING
	RL.PRL==1B1		;PRINT THE LOG FILE
	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.IN:! BLOCK	EQCKSZ		;REQUEUE INFORMATION
REQ.AF:! BLOCK	1		;AFTER TIME (IN MINUTES, RELATIVE TO "NOW")

REQ.SZ:!

	DEPHASE

	PHASE	MSHSIZ

CHE.IT:! BLOCK	1		;INTERNAL TASK NAME
CHE.IN:! BLOCK	EQCKSZ		;CHECKPOINT INFORMATION

CHE.SZ:!

	DEPHASE
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 DEVICE                    !
;	!-------------------------------------------------------!
;	!                   EXTERNAL JOB NAME                   !
;	!-------------------------------------------------------!
;	! EXTERNAL SEQUENCE NUMBER  !DEF NODE! FLAGS  !EXT. PRIO!
;	!-------------------------------------------------------!
;	!  REQUEST PROTECTION CODE  !NUMBER OF FILES IN REQUEST !
;	!-------------------------------------------------------!
;	!                    AFTER PARAMETER                    !
;	!-------------------------------------------------------!
;	!                  DEADLINE PARAMETER                   !
;	!-------------------------------------------------------!
;	!                                                       !
;	\               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       !
;	!                 -----  TOPS10  -----                  !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                       USER NAME                       !
;	!                        2 WORDS                        !
;	!-------------------------------------------------------!
;	!            REQUEST OWNER'S IDENTIFICATION             !
;	!=======================================================!
;	!                                                       !
;	\                  PATH SPECIFICATION                   \
;	\                      (OPTIONAL)                       \
;	\                        6 WORDS                        \
;	!                                                       !
;	!=======================================================!
;	
;	
;	
;	!                 -----  TOPS20  -----                  !
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\            REQUEST OWNER'S IDENTIFICATION             \
;	\                                                       \
;	\                        8 WORDS                        \
;	!                                                       !
;	!-------------------------------------------------------!
;	!                                                       !
;	\        CONNECTED DIRECTORY OF REQUST CREATOR         \
;	\                                                       \
;	\                       10 WORDS                        \
;	!                                                       !
;	!=======================================================!
;	!          SPOOLED INPUT SET HANDLE (OPTIONAL)          !
;	!=======================================================!
	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)
.EQRDV:! BLOCK	1		;REQUESTED DEVICE
.EQJOB:! BLOCK	1		;JOB NAME (SIXBIT)
.EQSEQ:! BLOCK	1		;EXTERNAL VALUES
	EQ.SEQ==-1,,0		;EXTERNAL SEQUENCE NUMBER
	EQ.DSN==77B23		;DEFAULT STATION (JBTLOC(J))
	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

.EQSPC:! BLOCK	1		;FILE SPECIFICATION WORD
	EQ.PRO==-1,,0		;REQUEST PROTECTION
	EQ.NUM==0,,-1		;NUMBER OF FILES IN THE REQUEST

.EQAFT:! BLOCK	1		;AFTER PARAMETER (INTERNAL FORMAT)
.EQDED:! BLOCK	1		;DEADLINE TIME (INTERNAL FORMAT)
.EQLM1:! BLOCK	1		;FIRST LIMIT WORD
	EQ.NRS==1B0		;THE NON-RESTARTABLE BIT
	EQ.DEP==0,,-1		;DEPENDENCY COUNT
	EQ.UNI==3B2		;/UNIQUE:VALUE
		EQ.UNO==0	;/NO
	EQ.OUT==7B8		;/OUTPUT
	EQ.FRM==-1,,-1		;FOR OUTPUT = FORMS TYPE

.EQLM2:! BLOCK	1		;SECOND LIMIT WORD
	EQ.NBL==-1,,0		;OUTPUT NUMBER OF BLOCKS IN REQUEST
	EQ.PGS==0,,-1		;OUTPUT PAGE LIMIT
	EQ.COR==-1,,0		;INPUT CORE LIMIT (PAGES)
	EQ.TIM==0,,-1		;INPUT TIME LIMIT (SECONDS)

.EQLM3:! BLOCK	1		;THIRD LIMIT WORD
				;OUTPUT 1ST HALF OF /NOTE
	EQ.LPT==-1,,0		;INPUT PAGE REQUEST
	EQ.CDP==0,,-1		;INPUT CARD REQUEST

.EQLM4:! BLOCK	1		;FOURTH LIMIT WORD
				;OUTPUT 2ND HALF OF /NOTE
	EQ.PTP==-1,,0		;INPUT PAPER TAPE REQUEST
	EQ.PLT==0,,-1		;INPUT PLOTTER TIME REQUEST

.EQLM5:! BLOCK	1		;THE FIFTH WORD IS EXTRA
.EQCHK:! BLOCK	5		;CHECKPOINT/REQUEUE INFORMATION
EQCKSZ==.-.EQCHK		;SYMBOLIZE THE SIZE

.EQACT:! BLOCK	10		;ACCOUNT STRING

EQISIZ:!

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

IFN FTUUOS,<
.EQUSR:! BLOCK	2		;USER NAME
.EQOWN:! BLOCK	1		;EXTERNAL OWNER SPECIFICATION
>  ;END IFN FTUUOS

IFN FTJSYS,<
.EQOWN:! BLOCK	10		;EXTERNAL OWNER SPECIFICATION
.EQCON:! BLOCK	12		;CONNECTED DIRECTORY
>  ;END IFN FTJSYS

EQHSIZ:!			;MINIMUM SIZE OF THE EXTERNAL QUEUE ENTRY HEADER

;END OF OPERATING SYSTEM DEPENDENT HEADER


;BEGINNING OF OPERATING SYSTEM DEPENDENT OPTIONAL PARAMETERS

IFN FTUUOS,<			;MAKE ROOM FOR THE INPUT QUEUE PATH SPECIFICATION
.EQPAT:! BLOCK	6		;PATH
.EQPSZ:!			;SIZE OF HEADER WITH PATH
>  ;END OF IFN FTUUOS

IFN FTJSYS,<
.EQSIS:! BLOCK	1		;HANDLE FOR SPOOLED INPUT SET
>  ;END IFN FTJSYS

	DEPHASE
;	!=======================================================!
;	! LENGTH OF FILE-PARAM AREA ! LENGTH OF FILE-DESCR AREA !
;	!-------------------------------------------------------!
;	!FILE FMT !PAPR FMT!SPACING !    FLAGS    !   COPIES    !
;	!-------------------------------------------------------!
;	!         STARTING INFORMATION (CUSP DEPENDENT)         !
;	!-------------------------------------------------------!
;	!                    /REPORT WORD 1                     !
;	!-------------------------------------------------------!
;	!                    /REPORT WORD 2                     !
;	!=======================================================!

	PHASE	0

.FPSIZ:! BLOCK	1		;SIZE WORD
	FP.FHD==-1,,0		;SIZE OF THE PARAMETER HEADER
	FP.FFS==0,,-1		;SIZE OF THE DESCRIPTOR BLOCK

.FPINF:! BLOCK	1		;FILE PARAMETER INFORMATION
	FP.FFF==77B5		;FILE FORMAT
		.FPFAS==1	;ASCII
		.FPFFO==2	;FORTRAN
		.FPFCO==3	;COBOL
		.FPF11==6	;ELEVEN

	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.IGN==1B22		;IGNORE THIS FILE (IT IS /REMOVED)
	FP.XXX==17B26		;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

FPMSIZ:!			;MINUMUM FP AREA SIZE

FPXSIZ:!			;MAXIMUM FP AREA SIZE

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


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


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


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

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

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!                  INTERNAL TASK NAME                   !
;	!-------------------------------------------------------!
;	!                      REASON CODE                      !
;	!-------------------------------------------------------!
;	!          ID OF PERSON REQUESTING THE CANCEL           !
;	!=======================================================!

	PHASE	MSHSIZ

ABO.IT:! BLOCK	1		;INTERNAL TASK NAME
ABO.CD:! BLOCK	1		;CODE INDICATING CAUSE OF MESSAGE
	ABOUSR==1		; BY USER REQUEST
	ABOOPR==2		; BY OPERATOR 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                   /
;	/                                                       /
;	!=======================================================!
;	!            QUEUE NAME TO LIST ( 0 IF ALL)             !
;	!=======================================================!

	PHASE	MSHSIZ

LIS.QN:! BLOCK	1		;THE QUEUE NAME (0 IS ALL)
	LISQUE==-1,,0

LIS.SZ:!			;SIZE OF A LIST REQUEST

	DEPHASE
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
;	QSRQUE - FILMOD FOR FILE SPECIFIC GROUP 2

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

MOD.QN:! BLOCK	1		;QUEUE NAME
	MODQUE==-1,,0		;QUEUE NAME

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...)
		.GPFSM==2	;FILE SPECIFIC MODIFY BLOCK

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

;FOR GROUP .GPFSM (FILE SPECIFIC MODIFY)

MOD.FI:! BLOCK	1		;FD INFORMATION
	MODFDL==0,,-1		;LENGTH OF SPEC AND MASKS FOR THE FD

;FOLLOWED BY 2 FD'S OF THAT LENGTH. THE 1ST IS THE SPEC TYPED BY THE USER,
;	THE 2ND IS THE MASKS FOR WILD CARD MATCHING.

MOD.FD:!			;THE FIRST FD

;THE SECOND FD IS  (FDLENGTH+MOD.FD)
;THE FIRST GROUP ELEMENT IS  (2*FDLENGTH+MOD.FD)
;THE NUMBER OF ELEMENTS IS (GROUPLENGTH - (2*FDLENGTH)+MOD.FD)

	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.QN:! BLOCK	1		;QUEUE NAME
	KILQUE==-1,,0		;QUEUE NAME

KIL.RQ:! BLOCK	RDBSIZ		;REQUEST DESCRIPTOR BLOCK

KIL.SZ:!			;SIZE OF KILL ENTRY
	DEPHASE
SUBTTL	The LIST ANSWER Message -- Function 13

;	!=======================================================!
;	/STANDARD MESSAGE HEADER EXCEPT THAT THE LENGTH FIELD IS/
;	/  A SEQUENCED COUNT OF THIS ANSWER. SINCE THEY CAN BE  /
;	/    RECEIVED IN ANY ORDER, 1B0 IS SET FOR THE LAST     /
;	!=======================================================!

;THE FOLLOWING ENTRY IS DUPLICATED FOR EACH REQUEST TO LIST
;THE LISTING IS TERMINATED BY A ZERO (0) AS THE JOB NAME

;	!=======================================================!
;	!                   EXTERNAL JOB NAME                   !
;	!-------------------------------------------------------!
;	! EXTERNAL SEQUENCE NUMBER  !    REQUEST PROTECTION     !
;	!-------------------------------------------------------!
;	!       SIXBIT DEVICE NAME FOR QUEUE AND STATION        !
;	!-------------------------------------------------------!
;	!         PROCESSING DEVICE IF ENTRY IS IN USE          !
;	!-------------------------------------------------------!
;	!                OWNER'S IDENTIFICATION                 !
;	!-------------------------------------------------------!
;	!             AFTER PARAMETER ( 0 IF NONE )             !
;	!-------------------------------------------------------!
;	!                                                       !
;	!               REQUEST LIMIT INFORMATION               !
;	!             CONTENTS ARE QUEUE DEPENDENT              !
;	!                        5 WORDS                        !
;	!                                                       !
;	!-------------------------------------------------------!
;	!          FILE-STRUCTURE CONTAINING REQUEST            !
;	!-------------------------------------------------------!
;	!                                             !PRIORITY !
;	!=======================================================!
;	!               USERS NAME (TOPS10 ONLY)                !
;	!                    2 SIXBIT WORDS                     !
;	!=======================================================!
	PHASE	MSHSIZ
LST.FT:!			;THE FIRST ANSWER IN THIS BLOCK
	PHASE	0		;REPEATED FOR EACH ENTRY TO LIST

LST.JB:! BLOCK	1		;THE EXTERNAL JOB NAME
LST.SQ:! BLOCK	1		;EXTERNAL VALUES WORD
	LS.SEQ==-1,,0		;THE EXTERNAL SEQUENCE NUMBER
	LS.PRO==0,,-1		;EXTERNAL PROTECTION

LST.DV:! BLOCK	1		;THE QUEUE OR DEVICE
LST.PV:! BLOCK	1		;DEVICE PROCESSING THIS ENTRY (0 IS NONE)
LST.OI:! BLOCK	1		;OWNER'S ID
LST.AF:! BLOCK	1		;AFTER PARAMETER IN INTERNAL FORM (0 IS NONE)
LST.LM:! BLOCK	5		;THE LIMIT WORDS (QUEUE DEPENDENT)
LST.ST:! BLOCK	1		;STRUCTURE CONTAINING THE REQUEST
LST.PI:! BLOCK	1		;PRIORITY WORD
	LS.PRI==77B35		;EXTERNAL PRIORITY

IFN FTUUOS,<
LST.US:! BLOCK	2		;USERS NAME (2 SIXBIT WORDS)
>  ;END IFN FTUUOS

LST.SZ:!			;SIZE OF A LIST ELEMENT

	DEPHASE

LST.NU==<1000-LST.FT>/LST.SZ	;NUMBER OF LIST ELEMENTS PER PAGE
SUBTTL	The TEXT Message  --  Function 14

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!             STATUS FLAGS AND INFORMATION              !
;	!-------------------------------------------------------!
;	/                                                       /
;	/                MESSAGE IN ASCIZ FORMAT                /
;	/                                                       /
;	!=======================================================!

	PHASE	MSHSIZ

TEX.ST:! BLOCK	1		;THE STATUS WORD
	TX.FAT==1B0		;A FATAL MESSAGE
	TX.WRN==1B1		;A WARNING MESSAGE (NEITHER MEANS INFORMATIONAL)
	TX.OPR==1B2		;TELL THE OPERATOR AS WELL
	TX.EXI==1B3		;TO KNOWN COMPONENT, GIVE UP NOW
	TX.NMS==1B4		;TO UNKNOWN COMPONENT, NO MESSAGE (ACK)
	TX.MOR==1B5		;ANOTHER MESSAGE TO FOLLOW
	TX.SUF==0,,-1		;SIXBIT SUFFIX FOR MESSAGE

TEX.MS:!			;THE START OF THE MESSAGE

	DEPHASE
SUBTTL	The REQUEST FOR CHECKPOINT Message  --  Function 15

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

	PHASE	MSHSIZ

;THERE IS NO BODY TO THE REQUEST FOR CHECKPOINT MESSAGE AS THE TYPE ITSELF
;	IS SUFFICIENT INFORMATION TO THE COMPONENT

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.QN:! BLOCK	1		;THE QUEUE NAME ( 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 The ROUTE Message  --  Function 17

;	!=======================================================!
;	/                                                       /
;	/                  THE MESSAGE HEADER                   /
;	/                                                       /
;	!=======================================================!
;	!     ORIGINAL STATION      !    NEW ROUTING FOR IT     !
;	!=======================================================!

	PHASE	MSHSIZ

ROU.ST:! BLOCK	1		;STATION INFORMATION
	RO.ORG==-1,,0		;ORIGINAL STATION
	RO.NEW==0,,-1		;NEW DESTINATION

ROU.SZ:!			;SIZE OF THE ROUTE 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),<
	XLIST
	INTERN	$$'A
	$$'A==$$
	$$==$$+1
	LIST
	SALL
>  ;END DEFINE X

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

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


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

DEFINE $ITEM,<
	XLIST
	X	(NOW,CURRENT TIME OF DAY)
	X	(STAR,QUASAR START TIME)
	X	(QJOB,QUASARS JOB NUMBER)
	X	(IPCI,TOTAL NUMBER OF IPCF INTERRUPTS RECEIVED)
	X	(IPCD,DEFERRED I