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