Google
 

Trailing-Edge - PDP-10 Archives - AP-4178E-RM - swskit-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 SCA