Trailing-Edge
-
PDP-10 Archives
-
bb-d868a-bm
-
3-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 IPCF INTERRUPTS)
X (RIPC,IPCF MESSAGES RECEIVED)
X (SIPC,IPCF MESSAGES SENT)
X (IPCF,IPCF SEND FAILURES)
X (IPCU,UNRECOVERABLE IPCF SEND FAILURES)
X (MREL,RELEASE MESSAGES RECEIVED)
X (MCHK,CHECKPOINT MESSAGES RECEIVED)
X (MREQ,REQUEUE MESSAGES RECEIVED)
X (MNXT,NEXTJOB MESSAGES SENT)
X (MABO,ABORT MESSAGES SENT)
X (NPGC,PAGES GARBAGE COLLECTED)
X (NGCC,GARBAGE COLLECTOR CALLS)
X (MLST,LIST MESSAGES RECEIVED)
X (NLAP,LISTANSWER PAGES SENT)
X (SCRE,SUCCESSFUL CREATES DONE)
X (MMOD,MODIFY MESSAGES RECEIVED)
X (MKIL,KILL MESSAGES RECEIVED)
X (MDEF,DEFER MESSAGES RECEIVED)
X (ISPL,IMMEDIATE SPOOL MESSAGES RECEIVED)
X (DSPL,DEFFERED SPOOL MESSAGES RECEIVED)
X (MCAN,COUNTANSWER MESSAGES SENT)
LIST
SALL
> ;END DEFINE $ITEM
$$=0 ;START CLEAN
$ITEM ;NOW CALL IT
NITEMS=$$ ;TOTAL NUMBER OF ITEMS
SUBTTL The COUNT Message -- Function 20
PHASE MSHSIZ
COU.SZ:! ;SIZE OF COUNT MESSAGE
DEPHASE
SUBTTL The COUNTANSWER Message -- Function 21
PHASE MSHSIZ
CAN.BL:! BLOCK NITEMS ;BLOCK OF ITEMS
CAN.SZ:! ;SIZE OF COUNTANSWER MESSAGE
DEPHASE
SUBTTL The SPOOL Message - Function 26 (sent by IPCC)
IFN FTUUOS,<
; !=======================================================!
; ! LENGTH ! FUNCTION 26 - SPOOL !
; !-------------------------------------------------------!
; ! JOB NUMBER ! JBTLOC(J) ! FLAGS !
; !-------------------------------------------------------!
; ! USERS NAME !
; ! 2 SIXBIT WORDS !
; !-------------------------------------------------------!
; ! DEVICE INIT'ED BY THE USER !
; !-------------------------------------------------------!
; ! STRUCTURE CONTAINING THE FILE !
; !-------------------------------------------------------!
; ! MONITOR GENERATED FILE NAME !
; !-------------------------------------------------------!
; ! ENTERED FILE NAME !
; !-------------------------------------------------------!
; ! FILE SIZE !
; !=======================================================!
PHASE 0
SPL.HD:! BLOCK 1 ;THE HEADER FROM IPCC
SPL.JB:! BLOCK 1 ;USERS JOB NUMBER
SP.JOB==-1,,0 ;THE JOB NUMBER CLOSING THE SPOOLED FILE
SP.LOC==777B26 ;CURRENT REMOTE STATION (.LOCATE n)
SP.BAT==1B27 ;THIS IS FOR A BATCH JOB
SP.DFR==1B28 ;DEFERRED MODE SPOOLING
SP.IUD==1B29 ;FILE IN USER'S DIRECTORY
SPL.US:! BLOCK 2 ;THE USERS NAME (2 SIXBIT WORDS)
SPL.DV:! BLOCK 1 ;DEVICE INIT'ed BY THE USER (e.g. LPT0:)
SP.QUE==-1,,0 ;QUEUE NAME TO GET THIS FILE
SPL.ST:! BLOCK 1 ;STRUCTURE CONTAINING THIS FILE
SPL.FN:! BLOCK 1 ;MONITOR GENERATED FILE NAME
SPL.EN:! BLOCK 1 ;ENTERED FILE NAME
SPL.FS:! BLOCK 1 ;FILE SIZE (IN BLOCKS)
SPL.SZ:! ;SIZE OF THE SPOOL MESSAGE
DEPHASE
> ;END IFN FTUUOS
IFN FTJSYS,<
; !=======================================================!
; ! FUNCTION 26 - SPOOL !
; !-------------------------------------------------------!
; ! # HEADER WORDS ! JOB NUMBER !
; !-------------------------------------------------------!
; ! FLAGS ! STATION NUMBER !
; !-------------------------------------------------------!
; ! PROGRAM NAME !
; !-------------------------------------------------------!
; ! BYTE SIZE ! NUMBER OF PAGES IN FILE !
; !-------------------------------------------------------!
; ! BYTE COUNT WHICH WOULD ADDRESS EOF !
; !-------------------------------------------------------!
; ! !
; / FD AREA FOR SPOOLED FILE /
; ! !
; !=======================================================!
PHASE 0
SPL.HD:! BLOCK 1 ;HEADER FROM IPCC
SPL.JB:! BLOCK 1 ;JOB INFORMATION
SP.NHW==-1,,0 ;NUMBER OF HEADER WORDS
SP.JOB==0,,-1 ;JOB NUMBER
SPL.FL:! BLOCK 1 ;FLAGS
SP.BAT==1B0 ;JOB MAKE REQUEST IS A BATCH JOB
SP.DFR==1B1 ;REQUEST IS DEFERED
SP.LOC==0,,-1 ;STATION NUMBER
SPL.PG:! BLOCK 1 ;NAME OF PROGRAM WRITING FILE
SPL.BV:! BLOCK 1 ;CONTENTS OF FDBBYV
SP.SIZ==0,,-1 ;NUMBER OF PAGES IN FILE
SPL.EF:! BLOCK 1 ;BYTE COUNT WHICH ADDRESSES TO EOF
SPL.FD:! ;BEGINNING OF FD AREA FOR SPOOLED FILE
DEPHASE
> ;END IFN FTJSYS
SUBTTL The LOGOUT Message - Function 27 (sent by IPCC)
IFN FTUUOS,<
; !=======================================================!
; ! LENGTH ! FUNCTION 27 - LOGOUT !
; !-------------------------------------------------------!
; ! JOB NUMBER ! JBTLOC(J) ! FLAGS !
; !=======================================================!
PHASE 0
LGO.HD:! BLOCK 1 ;THE HEADER FROM IPCC
LGO.JB:! BLOCK 1 ;USERS JOB NUMBER
LG.JOB==-1,,0 ;THE JOB NUMBER OF THE USER LOGGING OUT
LG.LOC==777B26 ;THE CURRENT REMOTE STATION NUMBER OF THIS JOB
LG.BAT==1B27 ;THIS IS A BATCH JOB
LG.DFR==1B28 ;DEFERRED MODE SPOOLING
LGO.SZ:! ;SIZE OF THE LOGOUT MESSAGE
DEPHASE
> ;END IFN FTUUOS
IFN FTJSYS,<
; !=======================================================!
; ! FUNCTION 27 - LOGOUT !
; !-------------------------------------------------------!
; ! NO. OF HEADER WORDS ! JOB NUMBER !
; !-------------------------------------------------------!
; ! FLAGS ! STATION NUMBER !
; !=======================================================!
PHASE 0
LGO.HD:! BLOCK 1 ;HEADER FROM IPCC
LGO.JB:! BLOCK 1 ;JOB INFORMATION
LG.NHW==-1,,0 ;NUMBER OF HEADER WORDS
LG.JOB==0,,-1 ;JOB NUMBER
LGO.FL:! BLOCK 1 ;FLAG WORD
LG.BAT==1B0 ;THIS WAS A BATCH JOB
LG.DFR==1B1 ;DEFERRED MODE SPOOLING
LG.LOC==0,,-1 ;JOBS STATION NUMBER
LGO.SZ:! ;SIZE OF THE LOGOUT MESSAGE
DEPHASE
> ;END IFN FTJSYS
SUBTTL IPCF Parameters
PHASE QEHSIZ ;APPEND TO THE QUEUE-ENTRY-HEADER
IPCFLG:! BLOCK 1 ;FLAGS (SEE UUOSYM.MAC FOR DEFINITIONS)
IPCSDR:! BLOCK 1 ;SENDERS PID
IPCRCR:! BLOCK 1 ;RECEIVERS PID
IPCMES:! BLOCK 1 ;MESSAGE INFORMATION
IPM.CT==-1,,0 ;COUNT OF WORDS
IPM.AD==0,,-1 ;ADDRESS OF THE MESSAGE
IPCHSZ==.-IPCFLG ;SIZE OF THE PDB FOR SEND
IPCSID:! BLOCK 1 ;SENDERS ID
IPCPRV:! BLOCK 1 ;SENDERS CAPABILITIES (PRIVS)
IFN FTUUOS,<
IPCCDI==IPCSID ;CONNECTED DIR=SENDER'S ID
> ;END IFN FTUUOS
IFN FTJSYS,<
IPCCDI:! BLOCK 1 ;CONNECTED DIRECTORY OF SENDER
> ;END IFN FTJSYS
IPCRSZ==.-IPCFLG ;SIZE OF THE PDB FOR RECEIVE
IPCDAT:!
IPCSIZ:! ;SIZE OF AN IPCF ENTRY (NOT COUNTING
; THE MESSAGE)
DEPHASE
;WHEN CALLING C$SEND FOR IPCF SENDS, BITS LIT IN AP ARE:
IPS.TF==1B0 ;TRY FIRST (IGNORE SCAN OF IPS QUEUE)
IPS.ID==1B1 ;IGNORE DUPLICATE (REQUESTED PID IN IPS)
IPS.IF==1B2 ;IGNORE FAILURE (THROW AWAY PACKET)
SUBTTL Common Parameters
;THE PARAMETERS DEFINED HERE ARE ONES THAT ARE NEEDED BY QUASAR BUT ARE
;SYSTEM DEPENDENT. TO MINIMIZE FEATURE TESTS AND DUPLICATION OF ROUTINES,
;QUASAR PARAMETERS ARE USED AND EQUATED TO THE CORRECT SYSTEM VALUE.
;**NOTE: THESE VALUES ARE NOT TO BE CONSTRUED AS 'OPTIONS' AND ANY CHANGES
; WILL CAUSE UNPREDICTABLE RESULTS.
SYSPRM ACC.KM,.ACREN,.CKAWT ;KILL/MODIFY ACCESS CODE
SYSPRM INT.PI,,0 ;IPCF PRIORITY INTERRUPT CHANNEL
SYSPRM INT.PL,,^D3 ;IPCF PRIORITY INTERRUPT LEVEL
SYSPRM IPE.SQ,IPCRS%,IPCFX6 ;SENDERS QUOTA EXHAUSTED
SYSPRM IPE.RQ,IPCRR%,IPCFX7 ;RECEIVERS QUOTA EXHAUSTED
SYSPRM IPE.SF,IPCRY%,IPCFX8 ;SYSTEM FREE SPACE EXHAUSTED
SYSPRM IPE.DU,IPCDU%,IPCFX4 ;DESTINATION UNKNOWN
SYSPRM IPE.DD,IPCDD%,IPCFX5 ;DESTINATION DISABLED
SYSPRM IP.CFV,,IP%CFV ;PAGE MODE BIT
SYSPRM IP.CFC,,IP%CFC ;FROM SYSTEM INFO OR IPCC
SYSPRM IP.CFM,,IP%CFM ;A RETURNED MESSAGE
SYSPRM IP.CFE,,IP%CFE ;ERROR INDICATORS
SYSPRM IP.CFP,,IP%CFP ;PRIVILEGED SEND
SYSPRM IP.TTL,IP.CFT,IP%TTL ;TRUNCATE IF TOO LONG
SYSPRM FSSBKS,200,1000 ;STANDARD BLOCKSIZE
SYSPRM FSSFIB,2,1 ;BLK. # OF 1ST INDEX BLK
SYSPRM SP.QSR,.IPCPQ,.SPQSR ;SYSTEM PID TABLE ENTRY FOR QUASAR
SYSPRM SP.MDA,.IPCPM,.SPMDA ; " " " " " MDA
SYSPRM DEBUGW,.JBOPS,135 ;DEBUG WORD
SUBTTL Operating System Dependent Macros
IFN FTUUOS,< ;TOPS10 DEFINITIONS
DEFINE PROLOGUE(A),< ;MACRO TO GENERATE MODULE PROLOGUE
SALL
XLIST
SEARCH SBSMAC ;GET SUB-SYSTEMS MACROS
SEARCH MACTEN ;GET UNIVERSAL SYMBOLS AND MACROS
INTERN %%.QSR,%%.SBS ;FOR LINK CONSISTENCY CHECKS
SEARCH UUOSYM ;GET TOPS10-UUO SYMBOLS
IFIDN <A><QUASAR>,< ;IF MAIN MODULE
.REQUIRE QSRMEM,QSRQUE,QSRSCH,QSRIPC,QSRFSS,QSRADM,QSRT10,SBSCOM
> ;END OF IFIDN
IFIDN <A><QSRT20>,< ;IF OTHER INTERFACE
PASS2 ;SAVE THE ASSEMBLY
END ;AND THE PAPER
> ;END OF IFIDN
LIST
SALL
> ;END OF DEFINE PROLOGUE
> ;END OF IFN FTUUOS
IFN FTJSYS,< ;TOPS20 DEFINITIONS
DEFINE PROLOGUE(A),< ;MACRO TO GENERATE MODULE PROLOGUE
SALL
XLIST
SEARCH SBSMAC ;GET SUB-SYSTEMS MACROS
SEARCH MACTEN ;GET UNIVERSAL SYMBOLS AND MACROS
INTERN %%.QSR,%%.SBS ;FOR LINK CONSISTENCY CHECKS
SEARCH MONSYM ;GET TOPS20-JSYS SYMBOLS
IFIDN <A><QUASAR>,< ;IF MAIN MODULE
.REQUIRE QSRMEM,QSRQUE,QSRSCH,QSRIPC,QSRFSS,QSRADM,QSRT20,SBSCOM
> ;END OF IFIDN
IFIDN <A><QSRT10>,< ;IF OTHER INTERFACE
PASS2 ;SAVE THE ASSEMBLY
END ;AND THE PAPER
> ;END OF IFIDN
LIST
SALL
> ;END OF DEFINE PROLOGUE
> ;END OF IFN FTJSYS
SUBTTL Failsoft System Definitions
;I/O CHANNELS
ND CMQ1,10 ;FIRST MASTER QUEUE CHANNEL
ND CMQ2,11 ;SECOND MASTER QUEUE CHANNEL
;OTHER SYMBOLS
XP FSSSTR,FSSSTR ;STRUCTURE FOR MASTER QUEUES
ND FSSPRT,277 ;PROTECTION FOR MASTER QUEUES
;FILE FORMAT AND INDEX DEFINITIONS
XP FSSQFV,%%.QSR ;QUEUE FILE VERSION
XP FSSMRS,1000 ;MAXIMUM REQUEST SIZE
XP FSSBPR,<FSSMRS/FSSBKS> ;MAXIMUM BLOCKS/REQUEST
XP FSSWPI,1000 ;NUMBER OF WORDS/INDEX
XP FSSNIB,<FSSWPI/FSSBKS> ;NUMBER OF INDEX BLOCKS/SECTION
XP FSSFDB,<FSSFIB+FSSNIB> ;BLK. NO. OF FIRST DATA BLOCK
XP FSSBPS,FSSWPI ;BLOCKS PER SECTION
XP FSSMNS,5 ;MAXIMUM NUMBER OF SECTIONS
;MASTER FILE NAMES
IFN FTUUOS,<
DEFINE MQFNM1,<SIXBIT\QSRMS1\> ;THE PRIMARY MASTER
DEFINE MQFNM2,<SIXBIT\QSRMS2\> ; REDUNDANT MASTER
> ;END OF IFN FTUUOS
IFN FTJSYS,<
DEFINE MQFNAM,<ASCIZ\DSK:<SPOOL>PRIMARY-MASTER-QUEUE-FILE.QUASAR\>
> ;END OF IFN FTJSYS
SUBTTL QUASAR Fatal Error Codes
;ARGUMENTS USED ARE
; X 'SUFFIX' , 'TEXT'
;THE EXPANDER IS TO DEFINE THE CORRECT 'X' MACRO
DEFINE ERRCDS,<
XLIST
X BMG,<Bad MODIFY Group>
X CBL,<Can not Build Queue Listing, wait then try again>
X CLQ,<Specified queue cannot be listed>
X ICM,<Illegal CREATE Message>
X IFD,<Illegally Formatted Device Name>
X IMT,<Illegal Message Type>
X INF,<Illegal Number of Files>
X IPE,<Insufficient Privileges Enabled>
X MTL,<Message Too Long>
X MTS,<Message is Too Short>
X NKC,<Not a Known Component>
X NOR,<Number Out of Range>
X SNY,<Specified request is Not Yours>
X UQS,<Unknown Queue Specified>
X WVN,<Wrong Version Number>
LIST
SALL
> ;END OF DEFINE ERRCDS
SUBTTL Definition of the Known Queues
;ARGUMENTS USED ARE
; X 'QUENAME' , 'ENTRYSIZE' , 'TYPE' , 'FLAGS' , 'SCHEDULER'
DEFINE QUEUES,<
XLIST
X INP,QNTSIZ,.QHTIP,QH.LST,S$INPT
X LPT,QNTSIZ,.QHTOU,QH.LST,S$LPT
X PTP,QNTSIZ,.QHTOU,QH.LST,S$PTP
X CDP,QNTSIZ,.QHTOU,QH.LST,S$CDP
;
; THE FOLLOWING TWO QUEUES ADDED FOR THE DN60 PROJECT /JBS
;
X IBM,QNTSIZ,.QHTOU,QH.LST,S$IBM
X JOB,QNTSIZ,.QHTOU,QH.LST,S$JOB
;
X PLT,QNTSIZ,.QHTOU,QH.LST,S$PLT
X IPC,IPCSIZ,.QHTQS,QH.IPC,0
X IPS,IPCSIZ,.QHTQS,QH.IPC,0
X SPL,SPLSIZ,.QHTQS,0,0
X PSB,PSBSIZ,.QHTQS,0,0
X USE,USESIZ,.QHTQS,0,0
X AFT,AFTSIZ,.QHTQS,0,S$AFTR
X RDE,RDESIZ,.QHTQS,0,S$RDE
LIST
SALL
> ;END OF DEFINE QUEUES
MAX <QNTSIZ> ;INCLUDE ANY QUEUE THAT CAN HAVE AFTER OR INUSE
USESIZ==MAXSIZ ;DEFINE LARGEST ENTRY IN USE QUEUE
AFTSIZ==MAXSIZ ;DEFINE LARGEST ENTRY IN AFT QUEUE
RDESIZ==MAXSIZ ;DEFINE LARGEST ENTRY IN RDE QUEUE
DEFINE QUEHDR,< ;MACRO TO GENERATE THE QUEUE HEADERS FROM THE QUEUES MACRO
DEFINE X(A,B,C,D,E),< ;DEFINE X FOR THE LATER EXPANSION OF QUEUES
HDR'A:: INSVL.(<SIXBIT\ A\>,QH.NAM)!INSVL.(C,QH.TYP)!D
EXP 0
IFDIF <E> <0> ,<GLOB(E)>
XWD E,INSVL.(B,QH.SIZ)
> ;END OF DEFINE X
QUEUES ;NOW EXPAND QUEUES
> ;END OF DEFINE QUEHDR
END