IDENT SSIR
TITLE SSIR - SPECIAL SYSTEM INTERFACE ROUTINES.
*COMMENT SPECIAL SYSTEM INTERFACE ROUTINES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4
***** SSIR - SPECIAL SYSTEM INTERFACE ROUTINES.
*
* R. R. SEKHON 78/12/15.
SPACE 4
***** *SSIR* IS A COLLECTION OF RELOCATABLE MODULES
* THAT PROVIDE THE INTERFACE BETWEEN *SYMPL* ROUTINES
* AND THE SPECIAL SYSTEM INTERFACE ROUTINES.
*
* THE CALLING ROUTINE SHOULD HAVE SSJ= ENTRY POINT IN
* ORDER TO CALL THESE SPECIAL SYSTEM INTERFACE ROUTINES.
* THE *SYMPL* CALLING SEQUENCE IS SHOWN IN EACH MODULE
* ALONG WITH THE OTHER PERTINENT INFORMATION E.G ENTRY,
* EXIT, *SYMPL* DATA TYPES NEEDED ETC..
SPACE 4
***** *SSIR* MODULES TRANSLATE PARAMETERS IN *SYMPL*
* CALL TO A FORMAT USABLE BY *COMPASS* CODE.
*
* ENTRY *SYMPL* CALL USES THE ACTUAL PARAMETER LIST, CALL
* BY REFERENCE CALLING SEQUENCE WHERE
* (A1) = FWA OF PARAMETER ADDRESS LIST.
* ((A1)) = FIRST PARAMETER.
* ((A1+1)) = SECOND PARAMETER.
* . .
* . .
* . .
* ((A1+N-1)) = N-TH PARAMETER.
* ((A1+N)) = 0 (ZERO) (NOMINALLY)
* (X1) = FIRST PARAMETER.
*
* NEEDS THESE MODULES NEED COMCMAC, COMCCMD AND THE
* COMMON DECKS DEFINED IN *NOSTEXT*.
*
* NOTE B1 IS SET TO ONE UPON ENTRY TO EACH MODULE.
*
* OTHER *SSIR* IS A COLLECTION OF RELOCATABLE MODULES
* COMBINED INTO ONE *MODIFY* DECK NAMED *SSIR*.
SPACE 4,10
***** DAYFILE MESSAGES.
*
* * RDPFC - ERROR IDLE, DN XX.* - *RDPFC*
* SKIPPED DEVICE X ON ACCOUNT OF ERROR
* IDLE SET ON IT.
*
* * RDPFC - PF UTILITY ACTIVE, DN XX.* - *RDPFC*
* SKIPPED DEVICE X ON ACCOUNT OF PF UTILITY
* ACTIVE ON THE DEVICE.
END
IDENT PFMAC
ENTRY ASIGNPF
ENTRY CKPFETC
ENTRY CLEARAF
ENTRY DROPDS
ENTRY DROPIDS
ENTRY SETAF
ENTRY SETASA
ENTRY SETDA
ENTRY UATTACH
ENTRY UGET
ENTRY UREPLAC
SYSCOM B1
TITLE SPECIAL PFM MACROS.
*COMMENT SPECIAL PFM MACROS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMCCMD
SPACE 4,40
*** PFMAC - SPECIAL *PFM* MACROS.
*
* ENTRY (AF) = ALTERNATE STORAGE FLAG.
* (AL) = ACCESS LEVEL FOR FILE.
* (ASA) = ALTERNATE STORAGE ADDRESS.
* 18/0,6/AT,36/AA
* AT = ALTERNATE STORAGE TYPE.
* AA = ALTERNATE STORAGE ADDRESS.
* (CDT) = CREATION DATE AND TIME.
* (EMA) = ERROR MESSAGE RETURN ADDRESS.
* (FL) = FILE LENGTH BEING REQUESTED.
* (FM) = FAMILY NAME.
* (LFN) = LOCAL FILE NAME, LEFT JUSTIFIED, ZERO
* FILLED, SEVEN CHARACTERS MAXIMUM.
* (M) = ACCESS MODE.
* = 0, READ/WRITE.
* = 1, READ.
* = 2, APPEND.
* = 3, EXECUTE.
* = 4, NONE.
* = 5, MODIFY.
* = 6, READ AND ALLOW MODIFY.
* = 7, READ AND ALLOW APPEND.
* = 8, UPDATE.
* = 9, READ AND ALLOW UPDATE.
*
* (PFC) = 16 WORD BUFFER FOR THE CATALOG IMAGE.
* (PFID) = PERMANENT FILE CATALOG INDEX.
* 28/0,2/PEO,6/DN,12/TRACK,12/SECTOR
* PEO = PFC ORDINAL.
* DN = DEVICE NUMBER.
* TRACK = TRACK NUMBER WHERE PFC RESIDES.
* SECTOR = SECTOR ORDINAL.
* (PFN) = PERMANENT FILE NAME, SAME CHARACTERISTICS
* AS *LFN*.
* (RP) = RETURN PROCESSING.
* = 1, REAL TIME PROCESSING.
* = 2, STANDARD ERROR PROCESSING ONLY.
* = 3, STANDARD AND REAL TIME PROCESSING.
* = 4, USER PROCESSING.
* = 6, FULL ERROR PROCESSING OPTIONS.
* (STAT) = *PFM* RETURN STATUS.
* (UI) = USER INDEX.
SPACE 4,15
** INIT - INTIALIZE *PFM* FET.
*
* ENTRY (A1) = FWA OF PARAMETER ADDRESS LIST.
* (X2) = RETURN JUMP TO THE MACRO INTERFACE
* CALLING ROUTINE.
* (B2) = ERROR MESSAGE RETURN ADDRESS.
*
* EXIT (STATW) = ADDRESS OF RETURN STATUS WORD.
* (EXITA) = RETURN JUMP TO THE MACRO INTERFACE
* CALLING ROUTINE.
* IF *PFET* COMPLETION BIT IS SET -
* (PFET) = INITIALIZED *PFM* FET.
* IF *PFET* IS BUSY -
* (X6) .LT. ZERO (IF *PFET* IS BUSY, USER MAY RETRY).
*
* USES X - 2, 3, 6.
* A - 2, 3, 6.
* B - 1.
*
* MACROS SETFET.
INIT SUBR ENTRY/EXIT
SB1 1
SA3 PFET FWA OF FET
BX6 X2 SAVE RETURN ADDRESS FOR MACRO
SA6 EXITA
SA2 A1+B1 SAVE ADDRESS OF RETURN STATUS WORD
BX6 X2
SA6 STATW
LX3 59-0 CHECK COMPLETION BIT
MX6 -1 SET STATUS FOR (*PFET* BUSY, RETRY LATER)
PL X3,EXIT1 IF *PFET* BUSY
SETFET PFET,(LFN=#A1+B0),(ERP=#A1+2),(ERA=B2),(PFN=INITA)
EQ INITX RETURN
INITA CON 0 DEFAULT PFN
SPACE 4,10
** EXIT - COMMON EXIT FOR SPECIAL *PFM* MACROS.
*
* ENTRY (EXITA) = RETURN JUMP TO THE MACRO INTERFACE
* CALLING ROUTINE.
* (STATW) = ADDRESS OF RETURN STATUS WORD.
* AT *EXIT1*, TO RETURN STATUS SPECIFIED IN (X6).
*
* EXIT (STAT) = ERROR STATUS.
* (STAT) .LT. ZERO, IF *PFET* BUSY.
*
* USES A - 1, 2, 6.
* X - 0, 1, 2, 6.
*
* NOTES REFER TO *COMSPFM* FOR ERROR STATUS VALUES.
EXIT BSS 0 ENTRY/EXIT
SA1 PFET RETURN ERROR STATUS
MX0 -8 MASK ERROR CODE
AX1 10
BX6 -X0*X1
EXIT1 SA2 STATW STORE ERROR CODE IN STATUS RETURN WORD
SA6 X2
EXITA CON 0
* EQU * SET FOR RETURN FROM MACRO CALLS
ASIGNPF SPACE 4,25
*** ASIGNPF - ASSIGN PERMANENT FILE SPACE.
*
* ASIGNPF(LFN,STAT,RP,FL,UI,FM,AL,EMA); (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS ASSIGNPF.
ASIGNPF SUBR ENTRY/EXIT
SA2 ASIGNPF
SA3 A1+7 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
ASSIGNPF PFET,#A1+3,SRB,#A1+4,#A1+5,#A1+6
EQ EXIT RETURN
CKPFETC SPACE 4,25
*** CKPFETC - CHECK *PFM* FET COMPLETION.
*
* *SYMPL* CALL -
* CKPFETC(LFN,STAT);
*
* EXIT (STAT) .LT. ZERO IF *PFET* BUSY.
*
* USES X - 2, 3, 6.
* A - 2, 3, 6.
* B - 1.
*
* CALLS EXIT.
CKPFETC SUBR ENTRY/EXIT
SB1 1
SA2 CKPFETC SET RETURN ADDRESS
BX6 X2
SA6 EXITA
SA2 A1+B1 ADDRESS OF RETURN STATUS WORD
SA3 PFET
BX6 X2
LX3 59-0 CHECK COMPLETION BIT
SA6 STATW SAVE ADDRESS OF RETURN STATUS WORD
MX6 -1 SET STATUS FOR (*PFET* BUSY, RETRY LATER)
PL X3,EXIT1 IF *PFET* BUSY
EQ EXIT RETURN (WITH STATUS)
CLEARAF SPACE 4,35
*** CLEARAF - CLEAR ALTERNATE STORAGE FLAGS.
*
* CLEARAF(LFN,STAT,RP,UI,FM,PFID,ASA,CDT,AF,EMA);
* (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS CLEARAF.
CLEARAF SUBR ENTRY/EXIT
SA2 CLEARAF
SA3 A1+9 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
CLEARAF PFET,SRB,#A1+3,#A1+4,#A1+5,#A1+6,#A1+7,#A1+8
EQ EXIT RETURN
DROPDS SPACE 4,30
*** DROPDS - DROP DIRECT ACCESS FILE DISK SPACE.
*
* DROPDS(LFN,STAT,RP,UI,FM,PFID,ASA,CDT,EMA); (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS DROPDS.
DROPDS SUBR ENTRY/EXIT
SA2 DROPDS
SA3 A1+8 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
DROPDS PFET,SRB,#A1+3,#A1+4,#A1+5,#A1+6,#A1+7
EQ EXIT RETURN
DROPIDS SPACE 4,20
*** DROPIDS - DROP INDIRECT ACCESS FILE DISK SPACE.
*
* *SYMPL* CALL -
* DROPIDS(LFN,STAT,RP,UI,FM,PFID,ASA,CDT,EMA);
*
* USES X - 2, 3.
* A - 2, 3.
* B - 2.
*
* CALLS INIT.
*
* MACROS DROPIDS.
DROPIDS SUBR ENTRY/EXIT
SA2 DROPIDS
SA3 A1+8 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
DROPIDS PFET,SRB,#A1+3,#A1+4,#A1+5,#A1+6,#A1+7
EQ EXIT RETURN
SETAF SPACE 4,35
*** SETAF - SET ALTERNATE STORAGE FLAGS.
*
* SETAF(LFN,STAT,RP,UI,FM,PFID,ASA,CDT,AF,EMA); (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS SETAF.
SETAF SUBR ENTRY/EXIT
SA2 SETAF
SA3 A1+9 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
SETAF PFET,SRB,#A1+3,#A1+4,#A1+5,#A1+6,#A1+7,#A1+8
EQ EXIT RETURN
SETASA SPACE 4,30
*** SETASA - SET ALTERNATE STORAGE ADDRESS IN CATALOG.
*
* SETASA(LFN,STAT,RP,UI,FM,PFID,ASA,CDT,EMA); (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS SETASA.
SETASA SUBR ENTRY/EXIT
SA2 SETASA
SA3 A1+8 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
SETASA PFET,SRB,#A1+3,#A1+4,#A1+5,#A1+6,#A1+7
EQ EXIT RETURN
SETDA SPACE 4,30
*** SETDA - SET DISK ADDRESS.
*
* SETDA(LFN,STAT,RP,UI,FM,PFID,ASA,CDT,EMA); (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS SETDA.
SETDA SUBR ENTRY/EXIT
SA2 SETDA
SA3 A1+8 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
SETDA PFET,SRB,#A1+3,#A1+4,#A1+5,#A1+6,#A1+7
EQ EXIT RETURN
UATTACH SPACE 4,45
*** UATTACH - UTILITY ATTACH.
*
* UATTACH(LFN,STAT,RP,PFN,M,UI,FM,PFID,PFC,CDT,EMA);
* (*SYMPL* CALL)
*
* USES A - 2, 3.
* B - 2.
* X - 2, 3.
*
* CALLS INIT, EXIT.
*
* MACROS UATTACH.
UATTACH SUBR ENTRY/EXIT
SA2 UATTACH
SA3 A1+10 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
SA2 A1+8 GET ADDRESS OF *PFC*
SB2 X2
UATTACH PFET,#A1+3,#A1+4,SRB,#A1+5,#A1+6,#A1+7,B2,#A1+9
EQ EXIT RETURN
UGET SPACE 4,20
*** UGET - UTILITY GET.
*
* *SYMPL* CALL -
* UGET(LFN,STAT,RP,PFN,UI,FM,PFID,PFC,CDT,EMA);
*
* EXIT *UGET* FUNCTION INITIATED.
* (FUNCTION IS PERFORMED WITHOUT AUTORECALL).
*
* USES X - 2, 3.
* A - 2, 3.
* B - 2.
*
* CALLS INIT.
*
* MACROS UGET.
UGET SUBR ENTRY/EXIT
SA2 UGET
SA3 A1+9 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
SA2 A1+7 GET ADDRESS OF *PFC*
SB2 X2
UGET PFET,#A1+3,SRB,#A1+4,#A1+5,#A1+6,B2,#A1+8
EQ UGETX RETURN
UREPLAC SPACE 4,20
*** UREPLAC - UTILITY REPLACE.
*
* *SYMPL* CALL -
* UREPLAC(LFN,STAT,RP,PFN,UI,FM,PFID,ASA,CDT,EMA);
*
* EXIT *UREPLACE* FUNCTION INITIATED.
* (FUNCTION IS PERFORMED WITHOUT AUTORECALL).
*
* USES X - 2, 3.
* A - 2, 3.
* B - 2.
*
* CALLS INIT.
*
* MACROS UREPLAC.
UREPLAC SUBR ENTRY/EXIT
SA2 UREPLAC
SA3 A1+9 GET ERROR MESSAGE RETURN ADDRESS
SA3 X3
SB2 X3
RJ INIT INITIALIZE *PFM* FET
UREPLAC PFET,#A1+3,SRB,#A1+4,#A1+5,#A1+6,#A1+7,#A1+8
EQ UREPLACX RETURN
FET SPACE 4,10
* *PFM* FET USED/SHARED BY ALL MACRO INTERFACE ROUTINES.
PFET FILEB DMMY,DMYL,(FET=16D) DUMMY *PFM* FET
DMYL EQU 0 LENGTH OF DUMMY *CIO* BUFFER
DMMY BSS 0
SRB BSS 4 SPECIAL REQUEST BLOCK
STATW BSS 1 ADDRESS OF *STAT*
END
IDENT BUDT
ENTRY BUDT
SYSCOM B1
SST
TITLE BUDT - BUILD UNIT DEVICE TABLE.
*COMMENT BUILD UNIT DEVICE TABLE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
UDTN EQU 5 NUMBER OF WORDS PER *UDT* ENTRY
BUDT SPACE 4,15
*** BUDT - BUILD UNIT DEVICE TABLE.
*
* THE ENTIRE EST IS READ, VIA *RDESTC*. FOR EACH EST ENTRY
* FOR *MSS* EQUIPMENT A CORRESPONDING ENTRY IS SET
* UP IN THE UNIT DEVICE TABLE. *MSID* REPRESENTS
* THE *MSF* HARDWARE COMPONENT IDENTIFIER.
*
* BUDT(UDT); (*SYMPL* CALL)
*
* EXIT (UDT) = UNIT DEVICE TABLE.
*
* USES A - 1, 2, 3, 4, 5, 6.
* B - 1, 2, 3, 4, 5.
* X - 0, 1, 2, 3, 4, 5, 6.
*
* CALLS RDESTC.
*
* MACROS SYSTEM.
*
* NOTES ARRAY *UDT* MUST BE 65 CM WORDS LONG.
BUDT SUBR ENTRY/EXIT
BX6 X1 SAVE ADDRESS OF *UDT*
SB4 B0
SA6 UDTA
* READ EST INTO *ESTB*.
SB2 ESTB SET EST BUFFER ADDRESS
SB3 ESTN
SB1 1
RJ =XRDESTC READ EST INTO *ESTB*
SX4 UDTN NUMBER OF WORDS PER *UDT* ENTRY
SA1 ESTN SET LAST EST ORDINAL + 1
SB2 X1
SB3 NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
SA5 UDTA ADDRESS OF BUFFER TO HOLD *UDT*
SB5 X5
* SEARCH EST AND BUILD *UDT*.
BDT1 SB3 B3+B1
EQ B2,B3,BUDTX IF END OF EST
SX1 B3 CALCULATE *ESTB* OFFSET
R= X0,ESTE
IX1 X1*X0
SA1 ESTB+X1+EQDE GET NEXT EST ENTRY
MX0 -11 CHECK FOR *MSS* EQUIPMENT
LX0 22-10
BX2 -X0*X1
LX2 10-22
SX3 X2-2RCS
ZR X3,BDT2 IF SELECTOR EST ENTRY
SX3 X2-2RCT
NZ X3,BDT1 IF NOT TRANSPORT EST ENTRY
MX0 -2 GET POSITION OF TRANSPORT IN *CSU*
LX0 7-1
BX6 -X0*X1 SET TRANSPORT POSITION IN *UDT*
SB4 B4+B1 INCREMENT INDEX OF *UDT* ENTRY FOR *CSU*
EQ BDT3 BUILD REMAINING FIELDS IN *UDT* ENTRY
BDT2 SB4 B0 INITIALIZE INDEX OF *UDT* ENTRY FOR *CSU*
BX6 X6-X6
MX0 -4 GET *CSU* INDEX
LX0 8-3
BX2 -X0*X1
LX2 3-8
SX2 X2-1 CALCULATE ADDRESS OF *UDT* ENTRY FOR *CSU*
IX3 X2*X4
SX5 X3+B5
BDT3 MX0 5 BUILD *UDT* ENTRY
LX0 40-59
BX2 X0*X1
LX6 26-7
LX2 58-40
BX6 X2+X6 SET CHANNEL NUMBER IN *UDT* ENTRY
MX0 4 GET *MSA* MSID
LX0 35-59
BX2 X0*X1
LX2 53-35
BX6 X2+X6 SET *MSA* MSID IN *UDT* ENTRY
MX0 8 GET UNIT MSID
LX0 31-59
BX2 X0*X1
LX2 49-31
BX6 X2+X6 SET UNIT MSID IN *UDT* ENTRY
MX0 1
LX0 41-59
BX6 X0+X6 MERGE ON/OFF STATUS
LX0 23-41
BX2 X0*X1 CHECK ON/OFF STATUS
ZR X2,BDT4 IF ON
SX0 B0 OFF STATUS
BDT4 LX0 40-23
BX6 X0+X6 SET CLEAN UP BIT
SX2 B3 SET EST ORDINAL
MX0 -9
BX2 -X0*X2
LX2 38-8
BX6 X2+X6
MX0 -3 GET EQUIPMENT (CONTROLLER) NUMBER
LX0 11-2
BX2 -X0*X1
LX2 29-11
BX6 X2+X6 SET EQUIPMENT (CONTROLLER) NUMBER
MX0 -2 GET *MSA* NUMBER ON COUPLER
LX0 4-1
BX2 -X0*X1
LX2 22-4
BX6 X2+X6 SET *MSA* NUMBER IN *UDT* ENTRY
MX0 -3 GET UNIT NUMBER ON *MSA*
BX2 -X0*X1
LX2 20-2
BX6 X2+X6 SET UNIT NUMBER IN *UDT* ENTRY
SA6 X5+B4 SET UP *UDT* ENTRY IN THE BUFFER
EQ BDT1 PROCESS NEXT EST ENTRY
ESTB BSS ESMX*ESTE EST BUFFER
ESTN BSS 1 NUMBER OF EST ENTRIES RETURNED
UDTA BSS 1 ADDRESS OF BUFFER TO HOLD *UDT*
END
IDENT CALLSS
ENTRY CALLSS
SYSCOM B1
TITLE CALLSS - ISSUE A CALLSS REQUEST TO A SUBSYSTEM.
*COMMENT ISSUES A CALLSS REQUEST TO A SUBSYSTEM.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
CALLSS SPACE 4,15
*** CALLSS - ISSUES A CALLSS REQUEST TO A SUBSYSTEM.
*
* CALLSS(SS,PADDR,R); (*SYMPL* CALL)
*
* ENTRY (SS) = SUBSYSTEM QUEUE PRIORITY.
* (PADDR) = PARAMETER BLOCK.
* (R) = RECALL, IF .NE. 0, RECALL IS REQUESTED.
*
* USES A - 1, 3, 4, 5.
* B - 1.
* X - 1, 3, 4, 5.
*
* MACROS CALLSS, RECALL.
CALLSS SUBR ENTRY/EXIT
SB1 1
SA3 A1+B1 GET ADDRESS OF *PADDR*
SA4 A3+B1 GET ADDRESS OF *R*
SA1 X1 GET *SS*
SA5 X4 GET *R*
CALLSS X1,X3
ZR X5,CALLSSX IF RECALL NOT REQUESTED
RECALL X3
EQ CALLSSX RETURN
END
IDENT CINTLK
ENTRY CINTLK
SYSCOM B1
TITLE CINTLK - GET/RELEASE CATALOG INTERLOCK.
*COMMENT GET/RELEASE CATALOG INTERLOCK.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMSPFU
CINTLK SPACE 4,20
*** CINTLK - GET/RELEASE CATALOG INTERLOCK.
*
* CINTLK(FUNC,FAM,DM); (*SYMPL* CALL)
*
* ENTRY (FUNC) = 3/AT,3/F.
* AT = ALTERNATE STORAGE TYPE -
* = 0 (ATNO), DEAFAULT (*MSS*).
* = 1 (ATMS), *MSS*.
* = 2 (ATAS), *MSE*.
*
* F = FUNCTION -
* = 0, GET LOCK.
* = 1, RELEASE LOCK.
*
* (FAM) = FAMILY NAME, LEFT JUSTIFIED,
* SEVEN CHARACTERS MAXIMUM.
* (DM) = DEVICE MASK, RIGHT JUSTIFIED (6 BITS).
*
* USES X - 0, 1, 2, 3, 6.
* A - 1, 2, 3, 6.
* B - 1.
*
* MACROS CALLPFU.
CINTLK SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET ADDRESS OF *FAM*
SA3 A2+B1 GET ADDRESS OF *DM*
SA1 X1 GET *FUNC* (3/AT,3/F)
MX0 -2 BUILD FUNCTION CONTROL WORD
LX0 3
BX6 -X0*X1 GET ALTERNATE STORAGE TYPE
LX6 3
SX6 X6+B1 ADD COMPLETION BIT
LX2 59-17 SET FAMILY ADDRESS
BX6 X6+X2
LX3 41-17 SET DEVICE MASK ADDRESS
BX6 X6+X3
SA6 CTCW STORE CONTROL WORD
LX1 59-0 (FUNCTION TO SIGN BIT)
NG X1,CIN1 IF RELEASE LOCK REQUEST
CALLPFU CTCW,CTGE,R GET LOCK
EQ CINTLKX RETURN
CIN1 CALLPFU CTCW,CTRE,R RELEASE LOCK
EQ CINTLKX RETURN
* CONTROL WORD FORMAT -
* 18/FAM,18/DM,12/,6/AT,5/,1/C.
CTCW VFD 59/0,1/1 *CALLPFU* CONTROL WORD
*CALL COMCPFU
*CALL COMSPFU
END
IDENT EESET
ENTRY EESET
SYSCOM B1
TITLE EESET - SET EVENT TABLE.
*COMMENT SET EVENT TABLE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
EESET SPACE 4,15
*** EESET - SET EVENT TABLE.
*
* EESET(EVENT); (*SYMPL* CALL)
*
* ENTRY (EVENT) = EVENT DESCRIPTOR.
*T EVENT 39/, 9/ EQ, 12/ CONDITION
*
* EQ = EST ORDINAL OF THE EQUIPMENT ON
* WHICH THE SYSTEM IS WAITING FOR THE
* CONDITION TO OCCUR.
* CONDITION = EVENT VARIABLE.
*
* USES A - 1.
* B - 1.
* X - 1.
*
* MACROS EESET.
EESET SUBR ENTRY/EXIT
SB1 1
SA1 X1 GET *EVENT*
EESET X1
EQ EESETX RETURN
END
IDENT GETACT
ENTRY GETACT
SYSCOM B1
TITLE GETACT - GET CURRENT JOB ACTIVITY COUNTS.
*COMMENT GET CURRENT JOB ACTIVITY COUNTS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMCCMD
GETACT SPACE 4,30
*** GETACT - GET CURRENT JOB ACTIVITY COUNTS.
*
* GETACT(ADDR); (*SYMPL* CALL)
*
* ENTRY ADDR = ADDRESS FOR RESPONSE.
*
* EXIT (ADDR) = JOB ACTIVITY INFORMATION IN THE
* FOLLOWING FORMAT.
* 12/SHORT,1/L,23/0,12/INS,11/0,1/C
*
* SHORT SHORT TERM ACTIVITY COUNTS, INCREMENTED BY
* ONE FOR EACH OF THE FOLLOWING.
* PPU ACTIVITY.
* PPU IN RECALL.
* TAPE ACTIVITY.
* ROLLOUT REQUESTED.
* SCP WAIT RESPONSE INDICATORS.
* TERMINAL OUTPUT FET ADDRESS PRESENT.
* L LONG TERM ACTIVITY COUNTS. FIELD IS ONE
* IF ANY OF THE FOLLOWING CONDITIONS ARE MET.
* *K* OR *L* DISPLAY INTERFACE ACTIVE.
* *CFO* ENTRY ENABLED.
* SCP LONG TERM CONNECTION ESTABLISHED.
* INS RESERVED FOR INSTALLATIONS.
* C COMPLETE BIT, ALWAYS ONE UPON COMPLETION.
*
* USES B - 1.
*
* MACROS GETACT.
GETACT SUBR ENTRY/EXIT
SB1 1
GETACT X1
EQ GETACTX RETURN
END
IDENT GETDI
ENTRY GETDI
SYSCOM B1
TITLE GETDI - GET DEVICE INHIBIT DATE AND TIME.
*COMMENT GET DEVICE INHIBIT DATE AND TIME.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMCCMD
*CALL COMSMMF
*CALL COMSSFM
GETDI SPACE 4,15
*** GETDI - GET DEVICE INHIBIT DATE AND TIME.
*
* GETDI(EQ,INDT); (*SYMPL* CALL)
*
* ENTRY (EQ) = EST ORDINAL.
*
* EXIT (INDT) = DEVICE INHIBIT DATE AND TIME.
* (CEQN) = CURRENT EST ORDINAL.
* (CIDT) = CURRENT DEVICE INHIBIT DATE AND TIME.
* (INIT) = 1.
*
* USES A - 1, 2, 3, 5, 6, 7.
* B - 1.
* X - 1, 2, 3, 5, 6, 7.
*
* MACROS GETDI.
GETDI SUBR ENTRY/EXIT
SB1 1
SA5 A1+B1 SAVE ADDRESS OF *INDT*
SA1 X1
SA2 INIT
ZR X2,GTD1 IF FIRST CALL
SA2 CEQN COMPARE EST ORDINALS
BX3 X2-X1
NZ X3,GTD2 IF DIFFERENT FROM LAST CALL
SA1 CIDT
EQ GTD3 RETURN DEVICE INHIBIT DATE AND TIME
GTD1 SX7 B1+
SA7 A2+
GTD2 BX6 X1
SA6 CEQN SAVE EST ORDINAL
GETDI SFET,X1
SA1 BUF+MDIT RETURN DEVICE INHIBIT DATE AND TIME
GTD3 BX6 X1
SA6 CIDT SAVE CURRENT DEVICE INHIBIT DATE AND TIME
SA6 X5
EQ GETDIX RETURN
*CALL COMCSFM
SFET FILEB BUF,BUFL,(FET=10D) FET FOR *SFM* CALL
BUFL EQU 101B
BUF BSS BUFL
CEQN CON 0 CURRENT EST ORDINAL
CIDT BSS 1 CURRENT DEVICE INHIBIT DATE AND TIME
INIT CON 0 INITIAL CALL INDICATOR
END
IDENT GETFAM
ENTRY GETFAM
SST
EXT RDESTC
SYSCOM B1
TITLE GETFAM - SET FAMILY TABLE AND SUBSYSTEM ID.
*COMMENT SET FAMILY TABLE AND SUBSYSTEM ID.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
MSTN EQU DULL-TDGL+1 NUMBER OF MST ENTRY WORDS TO READ
GETFAM SPACE 4,25
*** GETFAM - SET FAMILY TABLE AND SUBSYSTEM ID.
*
* GETFAM(FMT,NUM,LNK,DEF,SS); (*SYMPL* CALL)
*
* ENTRY (SS) = ALTERNATE STORAGE TYPE -
* = 0, DEFAULT (*MSS*).
* = 1, *MSS*.
* = 2, *MSE*.
*
* EXIT (FMT) = FAMILY TABLE.
* 42/FM,18/MSTA
* FM = FAMILY NAME.
* MSTA = ADDRESS OF MST ENTRY.
*
* (NUM) = NUMBER OF ENTRIES IN FAMILY TABLE.
* (LNK) = LINK INFORMATION.
* 12/DT,12/0,36/LNKO
* DT = LINK DEVICE TYPE.
* LNKO = ORDINAL OF ENTRY IN FAMILY TABLE
* CONTAINING FAMILY NAME OF LINK DEVICE.
* (DEF) = ORDINAL OF ENTRY CONTAINING DEFAULT
* FAMILY NAME.
* (SS) = SUBSYSTEM IDENTIFIER.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* B - 1, 2, 3, 4, 5, 6, 7.
* X - ALL.
*
* CALLS RDESTC.
*
* MACROS SYSTEM.
*
* NOTES ARRAY *FMT* MUST BE 24 CM WORDS LONG.
GETFAM SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET ADDRESS OF *NUM*
SA3 A2+B1 GET ADDRESS OF *LNK*
SA4 A3+B1 GET ADDRESS OF *DEF*
BX7 X1 SAVE ADDRESS OF *FMT*
SA7 FMTA
BX7 X2 SAVE ADDRESS OF *NUM*
SA7 NUMA
BX6 X3 SAVE ADDRESS OF *LNK*
BX7 X4 SAVE ADDRESS OF *DEF*
SA6 LNKA
MX6 1
SA7 DEFA
SA5 A4+B1 GET ADDRESS OF *SS*
MX7 -2
SA1 X5 GET ALTERNATE STORAGE TYPE
BX1 -X7*X1
SA1 X1+ASID SUBSYSTEM ID
BX7 X1
SA7 X5 RETURN SUBSYSTEM ID
* READ WORD *PFNL* IN *CMR*.
SA1 PFNA
SA6 PFNB
SYSTEM RSB,R,A1
* READ WORD *MMFL* IN *CMR*.
MX7 1
SA1 MMFA
SA7 MMFB
SYSTEM RSB,R,A1
SB2 ESTB BUFFER TO RECEIVE EST ENTRIES
SB3 ESTN
SB4 -B1 READ MASS STORAGE ENTRIES
RJ =XRDESTC READ EST INTO *ESTB*
MX0 -12
SA1 PFNB GET DEFAULT FAMILY EST ORDINAL
LX1 -12
BX6 -X0*X1
SB2 X6
SA1 MMFB GET EST ORDINAL OF LINK FAMILY
LX1 -36
MX0 -9
SA5 ESTN
BX6 -X0*X1
SB3 X6+
SB6 X5 SET LAST MASS STORAGE ORDINAL + 1
SA5 FMTA GET ADDRESS OF FAMILY TABLE
SX5 X5-1
SB4 NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
SB5 B1 INITIALIZE ORDINAL OF FAMILY TABLE
* SEARCH EST FOR MASS STORAGE DEVICES.
GTF1 SB4 B4+B1
EQ B4,B6,GTF3 IF END OF MASS STORAGE DEVICES
SX1 B4 CALCULATE *ESTB* OFFSET
R= X6,ESTE
IX1 X1*X6
SA1 ESTB+X1+EQDE GET NEXT EST ENTRY
PL X1,GTF1 IF NOT MASS STORAGE DEVICE
BX6 X1
LX6 59-54
NG X6,GTF1 IF DEVICE UNAVAILABLE FOR ACCESS
RJ RDM READ WORDS *TDGL* TO *DULL* OF MST
SA2 MSTB+ACGL-TDGL
LX2 59-4
NG X2,GTF1 IF ERROR IDLE SET ON DEVICE
SA2 MSTB+MDGL-TDGL
LX2 59-58
NG X2,GTF1 IF AUXILIARY DEVICE
SA2 MSTB+DULL-TDGL
LX2 59-11
NG X2,GTF1 IF FAMILY IDLE DOWN FLAG IS SET
SA2 MSTB+PFGL-TDGL
MX0 42
BX1 X0*X2
* CHECK FAMILY TABLE FOR A MATCHING FAMILY NAME.
RJ SFT
EQ B7,B5,GTF2 IF NO MATCHING FAMILY NAME
EQ GTF1 PROCESS NEXT EST ENTRY
GTF2 BX6 X1+X3 SET ENTRY IN FAMILY TABLE
SA6 X5+B5
SB5 B5+B1
EQ GTF1 PROCESS NEXT EST ENTRY
* SET ORDINAL OF DEFAULT FAMILY.
GTF3 SX1 B2 CALCULATE *ESTB* OFFSET
R= X6,ESTE
IX1 X1*X6
SA1 ESTB+X1+EQDE GET EST ENTRY FOR DEFAULT FAMILY
RJ RDM
SA2 MSTB+PFGL-TDGL
MX0 42
BX1 X0*X2
RJ SFT SEARCH FAMILY TABLE FOR DEFAULT FAMILY
NE B7,B5,GTF4 IF MATCHING FAMILY FOUND
SB7 B0+
GTF4 SX6 B7 SET DEFAULT FAMILY ORDINAL
SA2 DEFA
SA6 X2
* SET LINK ORDINAL AND DEVICE TYPE.
SB7 B0+
ZR B3,GTF5 IF NO LINK FAMILY
SX1 B3 CALCULATE *ESTB* OFFSET
R= X6,ESTE
IX1 X1*X6
SA1 ESTB+X1+EQDE GET EST ENTRY FOR LINK EQUIPMENT
MX0 -11 GET LINK DEVICE TYPE
BX6 X1
LX6 -12
BX6 -X0*X6
SB3 X6
RJ RDM
SA2 MSTB+PFGL-TDGL
MX0 42
BX1 X0*X2
RJ SFT SEARCH FAMILY TABLE FOR LINKED FAMILY
NE B7,B5,GTF5 IF MATCHING FAMILY FOUND
SB7 B0+
GTF5 SX5 B3 SET LINK ORDINAL AND DEVICE TYPE
SA2 LNKA
SX6 B7
LX5 48
BX6 X5+X6
SA6 X2
SX6 B5-B1 SET NUMBER OF ENTRIES IN FAMILY TABLE
SA1 NUMA
SA6 X1
EQ GETFAMX RETURN
RDM SPACE 4,15
** RDM - READ WORDS *TDGL* TO *DULL* OF MST ENTRY.
*
* ENTRY (X1) = EST ENTRY.
*
* EXIT (X3) = MST ADDRESS.
* (MSTA) = MST POINTER PARAMETER.
* (MSTB) = *MSTN* CONTIGUOUS WORDS STARTING AT *TDGL*
* OF THE MST ENTRY.
*
* USES A - 6, 7.
* X - 0, 2, 3, 6, 7.
*
* MACROS SYSTEM.
RDM SUBR ENTRY/EXIT
MX0 -12
BX3 -X0*X1 GET ADDRESS OF MST ENTRY
LX3 3
SX2 X3+TDGL READ WORD *TDGL* OF MST
LX2 35-17
MX7 1
SA7 MSTB
SX7 MSTN NUMBER OF MST ENTRY WORDS TO READ
LX7 59-23
BX6 X7+X2
SX2 MSTB
BX6 X2+X6
SA6 MSTA
SYSTEM RSB,R,A6
EQ RDMX RETURN
SFT SPACE 4,15
** SFT - SEARCH FAMILY TABLE FOR A GIVEN FAMILY NAME.
*
* ENTRY (X1) = FAMILY NAME (UPPER 42 BITS) TO
* BE MATCHED.
* (X5) = FWA - 1 OF FAMILY TABLE.
* (B5) = ORDINAL OF LAST ENTRY IN FAMILY TABLE + 1.
*
* EXIT (B7) = ORDINAL OF MATCHING ENTRY IN FAMILY TABLE.
* NOTE - (B7) = (B5), IF MATCHING ENTRY IS NOT FOUND.
*
* USES A - 2.
* B - 5, 7.
* X - 2, 4, 6.
SFT SUBR ENTRY/EXIT
MX0 42
SB7 B0
SFT1 SB7 B7+B1
EQ B7,B5,SFTX IF NO MATCHING FAMILY NAME
SA2 X5+B7 GET NEXT ENTRY IN FAMILY TABLE
BX4 X0*X2
BX6 X4-X1
ZR X6,SFTX IF MATCHING FAMILY FOUND
EQ SFT1 CHECK NEXT ENTRY
*CALL COMSSSD
SPACE 4,15
MMFA VFD 24/1,18/MMFL,18/MMFB *MMFL* POINTER PARAMETER
PFNA VFD 24/1,18/PFNL,18/PFNB *PFNL* POINTER PARAMETER
DEFA BSS 1 ADDRESS OF DEFAULT FAMILY ORDINAL
ESTB BSS ESMX*ESTE EST BUFFER
ESTN BSS 1 LAST MASS STORAGE ORDINAL + 1
FMTA BSS 1 ADDRESS OF FAMILY TABLE
LNKA BSS 1 ADDRESS OF LINK FAMILY ORDINAL
MMFB BSS 1 *MMFL* WORD IN *CMR*
MSTA BSS 1 MST POINTER PARAMETER WORD
MSTB BSS MSTN MST ENTRY BUFFER
NUMA BSS 1 ADDRESS OF NUMBER OF FAMILY TABLE ENTRIES
PFNB BSS 1 *PFNL* WORD IN *CMR*
* TABLE OF ALTERNATE STORAGE SUBSYSTEM IDENTIFIERS.
ASID EQU * ALTERNATE STORAGE SUBSYSTEM IDENTIFIERS
CON MFSI AT=0, DEFAULT (*MSS*)
CON MFSI AT=1, *MSS*
CON ASSI AT=2, *MSE*
END
IDENT GETMI
ENTRY GETMI
SST
SYSCOM B1
TITLE GETMI - GET MACHINE INFORMATION.
*COMMENT GET MACHINE INFORMATION.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMSMMF
GETMI SPACE 4,20
*** GETMI - GET MACHINE INFORMATION.
*
* GETMI(STATUS,EVENT); (*SYMPL* CALL)
*
* EXIT (STATUS) = MACHINE INFORMATION.
* 1/MSX,1/MFI,1/ASX,3/,12/ MID,39/,3/MFID
* MSX = 0, *MSS* MASTER MODE EXECUTIVE
* = 1, *MSS* SLAVE MODE EXECUTIVE
* ASX = 0, *MSE* MASTER MODE EXECUTIVE
* = 1, *MSE* SLAVE MODE EXECUTIVE
* MFI = 0, SINGLE MAIN FRAME MODE.
* = 1, MULTI MAIN FRAME MODE.
* MID = MACHINE ID
* MFID = MAINFRAME INDEX
* (EVENT) = EVENT DESCRIPTORS -
* 18/,9/,12/ *ASXE*,9/,12/ *MSXE*
* *ASXE* = *MSE* EVENT
* *MSXE* = *MSS* EVENT
*
* USES A - 1, 2, 6, 7.
* B - 1.
* X - 0, 1, 2, 6, 7.
*
* MACROS SYSTEM.
GETMI SUBR ENTRY/EXIT
SB1 1
BX6 X1
SA6 STATW SAVE ADDRESS OF *STATUS*
SA2 A1+B1 RETURN EVENT DESCRIPTOR
SA1 GMIA
BX6 X1
SA6 X2 STORE EVENT DESCPITORS
MX7 1
SA1 SSTA READ WORD *SSTL* IN *CMR*
SA7 SSTB
SYSTEM RSB,R,A1
MX7 1
SA1 MMFA READ WORD *MMFL* IN *CMR*
SA7 MMFB
SYSTEM RSB,R,A1
SA1 SSTB SET MASTER/SLAVE EXEC MODE
MX6 -1
LX6 49
BX6 -X6*X1 GET *MSE* MASTER/SLAVE BIT
LX6 57-49
MX7 1
LX1 59-55
BX1 X7*X1 GET *MSS* MASTER/SLAVE BIT
BX6 X6+X1 (X6= 1/MSX,1/0,1/ASX,57/0)
SA1 MMFB GET MULTI/SINGLE MF MODE
MX0 12
LX0 47-59
BX2 X0*X1
NZ X2,GMI1 IF MULTI MAIN FRAME MODE
BX7 X7-X7
GMI1 LX7 59 SET MULTI/SINGLE MF MODE
BX6 X6+X7
MX0 -3
ERRNG 7-MXMF CODE DEPENDS ON VALUE OF TAG
BX7 -X0*X1 SET MF-ID
BX6 X6+X7
MX0 12
BX7 X0*X1
LX7 53-59
BX6 X6+X7
SA2 STATW
SA6 X2
EQ GETMIX RETURN
*CALL COMSEVT
GMIA VFD 18/0,9/0,12/ASXE,9/0,12/MSXE *MSE*/*MSS* EVENT
MMFA VFD 24/1,18/MMFL,18/MMFB *SSTL* POINTER PARAMETER
SSTA VFD 24/1,18/SSTL,18/SSTB *MMFL* POINTER PARAMETER
MMFB BSS 1 *MMFL* WORD IN *CMR*
SSTB BSS 1 *SSTL* WORD IN *CMR*
STATW BSS 1 ADDRESS OF RETURN STATUS WORD
END
IDENT GETPFP
ENTRY GETPFP
SYSCOM B1
TITLE GETPFP - GET PERMANENT FILE PARAMETERS.
*COMMENT GET PERMANENT FILE PARAMETERS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
GETPFP SPACE 4,15
*** GETPFP - GET PERMANENT FILE PARAMETERS.
*
* GETPFP(ADDR); (*SYMPL* CALL)
*
* ENTRY ADDR = ADDRESS OF A 3 WORD BLOCK FOR RESPONSE.
*
* EXIT (ADDR) = CURRENT CONTROL POINT PARAMETERS RETURNED
* IN FORMAT-
* 42/FAMILY NAME,18/0
* 42/PACKNAME,18/0
* 42/USER NUMBER,18/USER INDEX
*
* USES B - 1.
*
* MACROS GETPFP.
GETPFP SUBR ENTRY/EXIT
SB1 1
GETPFP X1
EQ GETPFPX RETURN
END
IDENT GETSPS
ENTRY GETSPS
SYSCOM B1
TITLE GETSPS - RETURN SYSTEM ORIGIN PRIVILEGES STATUS.
*COMMENT RETURN SYSTEM ORIGIN PRIVILEGES STATUS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMCCMD
GETSPS SPACE 4,15
*** GETSPS - RETURN SYSTEM ORIGIN PRIVILEGES STATUS.
*
* GETSPS (ADDR); (*SYMPL* CALL)
*
* ENTRY ADDR = ADDRESS OF THE RETURN STATUS WORD.
*
* EXIT STATUS HAS BEEN RETURNED TO *ADDR*.
* 48/ ,12/STATUS
* STATUS .EQ. 0 IF USER HAS SYSTEM ORIGIN PRIVILEGES.
* .NE. 0 IF USER DOES NOT HAVE SYSTEM ORIGIN
* PRIVILEGES.
*
* USES B - 1.
*
* MACROS GETSPS.
GETSPS SUBR
SB1 1
GETSPS X1
EQ GETSPSX RETURN
END
IDENT RDEST
ENTRY RDEST
SYSCOM B1
TITLE RDEST - READ EST TO BUFFER.
*COMMENT READ EST TO BUFFER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
RDEST SPACE 4,20
*** RDEST - READ EST TO BUFFER.
*
* RDEST(ESTB,ESTN,ESTO); (*SYMPL* CALL)
*
* ENTRY (ESTN) = NUMBER OF EST ENTRIES TO BE READ.
* (ESTO) = ORDINAL OF EST ENTRY TO BE RETURNED
* = 0, TO TRANSFER ENTIRE EST.
* = -1, TO TRANSFER MASS STORAGE ENTRIES ONLY.
*
* EXIT (ESTB) = EST.
* (ESTN) = NUMBER OF EST ENTRIES RETURNED.
* .LE. ZERO, IF REQUESTED ORDINAL(S)
* OUTSIDE OF EST.
*
* USES A - 2, 3, 4.
* B - 1, 2, 3, 4.
* X - 2, 3, 4.
*
* CALLS RDESTC.
RDEST SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET ADDRESS OF *ESTN*
SA3 A2+B1 GET ADDRESS OF *ESTO*
SB2 X1
SB3 X2
SA4 X3 GET EST ORDINAL
SB4 X4
LE B4,B0,RDE1 IF TRANSFER OF ENTIRE OR MASS STORAGE EST
SB4 X3+ SET ADDRESS OF EST ORDINAL
RDE1 RJ =XRDESTC READ EST INTO *ESTB*
EQ RDESTX RETURN
END
IDENT RDESTC
ENTRY RDESTC
SST
SYSCOM B1
TITLE RDESTC - READ EST INTO BUFFER.
*COMMENT READ EST INTO BUFFER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
RDESTC SPACE 4,25
*** RDESTC - READ EST INTO BUFFER.
* *RDESTC* CAN BE CALLED ONLY FROM A *COMPASS* ROUTINE.
*
* ENTRY (B2) = ADDRESS OF EST BUFFER. IF THE ENTIRE EST
* EST IS TO BE RETURNED, BUFFER MUST BE AT
* LEAST ESMX*ESTE WORDS IN LENGTH.
* (B3) = ADDRESS OF LOCATION CONTAINING NUMBER OF EST
* ENTRIES TO BE RETURNED.
* (B4) = ADDRESS OF LOCATION CONTAINING EST ORDINAL TO
* BE RETURNED.
* = 0, TO RETURN ENTIRE EST.
* = -1, TO RETURN ONLY MASS STORAGE EST ENTRIES.
*
* EXIT BUFFER CONTAINS REQUEST EST ENTRY/ENTRIES.
* ((B3)) = NUMBER OF EST ENTRIES RETURNED.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* X - ALL.
*
* MACROS SYSTEM.
*
* CALLS RSB=.
RDESTC SUBR ENTRY/EXIT
SA1 CMRA READ EST POINTERS
MX7 1
SA7 CMRW
SYSTEM RSB,R,A1
SA1 CMRW
MX0 -12 SET *COMCRSB* ENTRY CONDITIONS
LX1 24
SX2 X1 SET (X2) = FWA OF EST
LX1 12
BX3 -X0*X1 SET LAST EST ORDINAL + 1
LX1 12
BX4 -X0*X1 SET LAST MASS STORAGE ORDINAL + 1
SX5 X4 PRESET NUMBER OF MASS STORAGE ENTRIES
NZ B4,RDE1 IF SPECIFIC OR MS ENTRIES REQUIRED
SX5 X3 SET NUMBER OF EST ENTRIES
EQ RDE3 CONTINUE
RDE1 PL B4,RDE2 IF SPECIFIC EST ENTRIES REQUIRED
EQ RDE3 CONTINUE
RDE2 SA1 B4 READ SPECIFIC EST ENTRIES
SX4 X1 SAVE EST ORDINAL
SX6 ESTE
IX1 X1*X6 OFFSET OF REQUIRED EST ENTRY
IX2 X2+X1 FWA OF REQUIRED EST ENTRY
SA5 B3 NUMBER OF EST ENTRIES REQUIRED
IX4 X4+X5 CHECK FOR RANGE WITHIN EST
IX4 X3-X4
PL X4,RDE4 IF EST ENTRIES WITHIN RANGE
IX5 X4+X5 NUMBER OF EST ENTRIES ACTUALLY READ
RDE3 BX6 X5 RETURN NUMBER OF EST ENTRIES
SA6 B3
ZR X6,RDESTCX IF ORDINAL OUTSIDE OF EST
NG X6,RDESTCX IF ORDINAL OUTSIDE OF EST
* READ EST ENTRIES.
RDE4 SX6 ESTE CALCULATE WORD COUNT
IX3 X5*X6 SET (X3) = WORD COUNT TO READ
SX1 B2 SET (X1) = *ESTB*
SX4 B0 SET (X4) = SUBSYSTEM (= *CMR*)
SA7 B2
RJ RSB= READ EST
EQ RDESTCX RETURN
CMRA VFD 24/1,18/ESTP,18/CMRW *CMR* POINTER PARAMETER
CMRW BSS 1 WORD *ESTP* IN *CMR*
*CALL COMCRSB
END
IDENT RDPFC
ENTRY RDPFC
SST
SYSCOM B1
TITLE RDPFC - READ PERMANENT FILE CATALOG.
*COMMENT READ PERMANENT FILE CATALOG.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
*CALL COMCCMD
*CALL COMSPFM
*CALL COMSPFS
*CALL COMSPFU
*CALL COMSSSJ
TITLE ASSEMBLY CONSTANTS
** ASSEMBLY CONSTANTS.
*
NWPS EQU 100B NUMBER OF WORDS/SECTOR
NWPC EQU NWPS+2 NUMBER OF WORDS/SECTOR + CONTROL WORDS
CBUFL EQU NWPC*10+1 CATALOG BUFFER LENGTH
MSTN EQU MDGL-TDGL+1 NUMBER OF MST WORDS TO READ
MSTTL EQU ESMX*2+1 MST TABLE LENGTH
SECL EQU NWPS+1 NUMBER OF WORDS/SECTOR + TRAILING
CONTROL WORD
TITLE MAIN LOOP
SPACE 4,15
*** *RDPFC* IS A *SYMPL* CALLABLE *COMPASS* ROUTINE
* THAT READS THE PERMANENT FILE CATALOG.
*
* RDPFC(FM,SBM,PFCB,WDCN,FLAG); *SYMPL* CALL.
*
* NOTE *RDPFC* DOES A SEQUENTIAL READ OF THE PERMANENT
* FILE CATALOG ON ALL THE DEVICES IN A GIVEN
* FAMILY. IF THE SUB FAMILY OPTION IS SELECTED,
* ONLY THE DEVICES WITH THE SELECTED SUBFAMILY
* ARE READ. ON EACH CALL TO *RDPFC* A SECTOR
* OF PFC ENTRIES ALONG WITH THE CONTROL WORD
* IS RETURNED TO THE CALLING PROCEDURE. *PFU*
* FUNCTIONS ARE USED TO OPEN THE CATALOG TRACK,
* TO ADVANCE TO THE NEXT TRACK AND TO READ THE
* CATALOG TRACK. THE DEVICES WITH ERROR IDLE
* SET OR PF UTILITY ACTIVE ARE EXCLUDED FROM
* THE MASS STORAGE TABLE BUILT. THE ERROR STATUS
* IS RETURNED TO THE CALLING ROUTINE. THE CALLING
* ROUTINE MAY THEN ABORT OR CALL *RDPFC* AGAIN TO
* READ THE REMAINING DEVICE IN THE MASS STORAGE TABLE.
SPACE 4,10
*** DAYFILE MESSAGES.
*
* * RDPFC - ERROR IDLE, DN XX.* - *RDPFC* SKIPPED
* DEVICE X ON ACCOUNT OF ERROR IDLE ON THE DEVICE.
*
* * RDPFC - PF UTILITY ACTIVE, DN XX.* - *RDPFC*
* SKIPPED DEVICE X ON ACCOUNT OF PF UTILITY
* ACTIVE ON THE DEVICE.
RDPFC SPACE 4,20
*** RDPDC - READ PERMANENT FILE CATALOG.
*
* ENTRY (FAM) = FAMILY NAME, LEFT JUSTIFIED,
* SEVEN CHARACTERS MAXIMUM.
* (SBM) = SUB FAMILY MASK, IF SUB FAMILY
* OPTION IS SELECTED.
* = 0, OTHERWISE.
* (MORD) = -1, ON FIRST CALL OR IF AN ERROR IDLE OR
* PF UTILITY ACTIVE WAS ENCOUNTERED ON
* THE PREVIOUS CALL.
* = ORDINAL OF CURRENT *MSTT* ENTRY ON
* SUBSEQUENT CALLS.
* (DVFL) = 0, READ THE NEXT PERMANENT FILE CATALOG
* SECTOR.
* = 1, READ THE DEVICES IN THE FAMILY BESIDES
* THE ONES WITH ERROR IDLE SET OR PF UTILITY
* ACTIVE.
*
* EXIT (PFCB) = SECTOR OF PFC ENTRIES ALONG WITH
* THE TRAILING CONTROL WORD.
* NOTE - BUFFER LENGTH MUST BE 101B.
* CONTROL WORD FORMAT IS
* 6/DN,18/,12/EQ,12/TRACK,12/SECTOR
* (WDCN) = NUMBER OF WORDS OF DATA IN SECTOR.
* (FLAG) = 0, MORE PFC ENTRIES TO GO.
* 1, END OF PFC.
* 2, NO DEVICES IN THE FAMILY.
* 3, BAD CATALOG SECTOR.
* 4, ERROR IDLE OR PF UTILITY ACTIVE ON ONE
* OR MORE DEVICES IN THE FAMILY.
* (DVFL) = 0, ALL DEVICES ARE OK TO BE READ.
* 1, ERROR IDLE OR PF UTILITY ACTIVE ON
* ONE OR MORE DEVICES IN THE FAMILY.
* (MORD) = -1, ON THE FIRST CALL WHEN AN ERROR IDLE
* OF PF UTILITY ACTIVE WAS FOUND.
* = ORDINAL OF CURRENT *MSTT* ENTRY OTHERWISE.
*
* USES A - 1, 2, 3, 6, 7.
* B - 1.
* X - 1, 2, 3, 6, 7.
*
* CALLS AVC, BMT, CAC, RCT.
RDPFC SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET SUB FAMILY MASK
SA3 X2
BX6 X3
SA6 SMSK
SA3 A2+B1 SAVE ADDRESS OF *PFCB*
BX6 X3
SA6 PFC
SA2 A3+B1 SAVE ADDRESS OF *WDCN*
BX6 X2
SA6 WCNA
SA3 A2+B1 SAVE ADDRESS OF *FLAG*
BX6 X3
SA6 FG
SA2 MORD CHECK FOR FIRST CALL
PL X2,RDP3 IF NOT FIRST CALL
SA3 DVFL CHECK ERROR IDLE/PF UTILITY FLAG
ZR X3,RDP1 IF FIRST CALL
BX6 X6-X6 CLEAR ERROR FLAG SET IN PREVIOUS CALL
SA6 DVFL
EQ RDP2 INITIALIZE FIRST DEVICE
RDP1 SA1 X1 GET FAMILY NAME
BX6 X1
SA6 FM
RJ BMT BUILD *MSTT* TABLE
SA3 DVFL CHECK ERROR IDLE/PF UTILITY ACTIVE FLAG
ZR X3,RDP2 IF ALL DEVICES OK TO BE READ
SX2 4 FLAG *ERROR IDLE/PF UTILITY ACTIVE*
EQ RDP4 RETURN DEVICE STATUS
RDP2 RJ AVC INITIALIZE FIRST DEVICE
SA2 EOP
ZR X2,RDP3 IF FIRST DEVICE INITIALIZED
SX2 2 FLAG *NO DEVICES IN THE FAMILY*
EQ RDP4 RETURN STATUS
RDP3 RJ RCT READ CATALOG TRACK
SA2 EOP
ZR X2,RDP4 IF MORE PFC ENTRIES TO GO
RJ CAC CLEAR PF ACTIVITY COUNT
SA2 EOP
RDP4 BX7 X2
SA2 FG
SA7 X2
SA2 WCNT RETURN WORD COUNT
BX6 X2
SA3 WCNA
SA6 X3
EQ RDPFCX RETURN
TITLE SUBROUTINES
AVC SPACE 4,25
** AVC - ADVANCE CATALOG TRACK.
*
* THE CATALOG TRACK IS ADVANCED TO THE NEXT TRACK
* ON THE DEVICE. IF END OF CATALOG TRACKS IS ENCOU-
* NTERED ON THE DEVICE, IT SWITCHES TO THE NEXT
* DEVICE IN THE FAMILY AND OPENS THE FIRST CATALOG
* TRACK ON THE DEVICE.
*
* ENTRY (NCTR) = CURRENT NUMBER OF CATALOG TRACKS.
* (SMSK) = DEVICE MASK FOR SELECTED SUB FAMILIES.
* (MORD) = ORDINAL OF CURRENT *MSTT* ENTRY.
*
* EXIT (NCTR) = UPDATED NUMBER OF CATALOG TRACKS.
* (MAEQ) = MASTER DEVICE EST ORDINAL.
* (MORD) = UPDATED ORDINAL OF CURRENT *MSTT* ENTRY.
* (EOP) = 0, IF MORE PFC ENTRIES TO GO.
* = 1, IF END OF PFC IS REACHED.
* CATALOG TRACK ADVANCED.
* DEVICE SWITCH MADE IF NECESSARY.
*
* USES A - 1, 2, 4, 6, 7.
* B - 3.
* X - 0, 1, 2, 4, 5, 6, 7.
*
* CALLS CAC, SAC.
*
* MACROS CALLPFU, READCW, RETURN.
AVC SUBR ENTRY/EXIT
SA1 NCTR
ZR X1,AVC1 SWITCH TO THE NEXT DEVICE
CALLPFU CATS,CTAC,R ADVANCE TO NEXT CATALOG TRACK
EQ AVC7 CONTINUE
* ADVANCE TO THE NEXT DEVICE.
AVC1 RJ CAC CLEAR PF ACTIVITY COUNT
AVC1.1 SA2 MORD INCREMENT *MSTT* ORDINAL
SX6 X2+B1
SX7 B1
SA6 MORD
SA4 MSTT+X6 GET THE NEXT *MSTT* ENTRY
NZ X4,AVC2 IF NOT END OF TABLE
SA7 EOP SET END OF PFC FLAG
EQ AVCX RETURN
* CHECK TO SEE IF A SPECIFIED SUB FAMILY RESIDES ON THIS DEVICE.
AVC2 SA1 SMSK CHECK SUB FAMILY MASK
MX0 -20 SELECT THE MATCHING DEVICE
BX5 -X0*X4 GET THE DEVICE MASK
AX5 12
ZR X1,AVC4 IF SUBFAMILY OPTION NOT SELECTED
BX7 X1*X5
ZR X7,AVC1.1 IF SUB FAMILY NOT ON DEVICE
* DETERMINE DEVICE PARAMETERS.
AVC4 MX0 -12 SET NUMBER OF CATALOG TRACKS
BX6 -X0*X4
ZR X6,AVC1.1 IF NO CATALOG TRACKS
SA6 NCTR
LX4 59-53 SET MASTER DEVICE EST ORDINAL
MX0 12
BX6 X0*X4
LX6 12
SA6 PDWD SET UP PF DESCRIPTION WORD
SA6 MAEQ SAVE MASTER DEVICE EST ORDINAL
LX5 59-7
RJ SAC SET PF ACTIVITY COUNT
* DETERMINE STARTING USER INDEX ON THE DEVICE.
SX1 PDWD SET ADDRESS OF PF DESCRIPTION WORD
SB3 7 DEVICE MASK BIT COUNT - 1
AVC5 NG X5,AVC6 IF DEVICE MASK BIT SET
LX5 1 POSITION NEXT MASK BIT
SB3 B3-B1
PL B3,AVC5 IF MORE BITS TO CHECK
AVC6 SX6 B3 SET STARTING USER INDEX
SA6 CUI
SX2 A6 SET ADDRESS OF USER INDEX WORD
LX1 35-17
BX6 X1+X2
SA6 CATS+FTPM
CALLPFU CATS,CTCT,R GET CATALOG TRACK PARAMETERS
* SET UP CATALOG *FST* ENTRY.
SA1 CATS+FTPM GET CATALOG TRACK PARAMETERS
SA2 FIST SET FILE ID AND STATUS
MX0 -21
BX1 -X0*X1 SET *EQ* AND FIRST TRACK
MX0 -12
BX6 -X0*X1 SET CURRENT TRACK
LX1 59-23 POSITION EST ORDINAL AND FIRST TRACK
BX2 X2+X1 BUILD CATALOG TRACK *FST* ENTRY
LX6 35-11
BX7 X2+X6
LX6 11-35
SA6 CCTR
SA7 A1
* OPEN CATALOG FILE.
RETURN CATS RETURN EXISTING FILE
CALLPFU CATS,CTOP,R OPEN CATS FILE
AVC7 SA1 NCTR UPDATE NUMBER OF CATALOG TRACKS
SX6 X1-1
SA6 NCTR
READCW CATS,17B,R READ CATALOG TRACK
EQ AVCX RETURN
BMT SPACE 4,20
** BMT - BUILD MASS STORAGE TABLE.
*
* ENTRY (FM) = FAMILY NAME.
*
* EXIT MASS STORAGE TABLE BUILT.
* (DVFL) = 0, IF NO ERROR IDLE OR PF UTILITY
* ACTIVE ON ANY DEVICE.
* 1, IF ERROR IDLE OR PF UTILITY ACTIVE
* ON ONE OR MORE DEVICES.
*
* USES X - ALL.
* A - 1, 2, 3, 6, 7.
* B - 2, 3, 4, 5.
*
* CALLS COD, RSB=, SNM.
*
* MACROS MESSAGE, SYSTEM.
*
* NOTES DEVICES THAT DO NOT BELONG TO THE GIVEN
* FAMILY, OR ARE UNAVAILABLE OR ARE LOCALLY
* UNLOADED, ARE IGNORED. A DEVICE IS ALSO
* IGNORED, IF AN ERROR IDLE IS SET ON THE
* DEVICE OR IF A PF UTILITY IS ACTIVE ON
* IT. SEE DOCUMENTATION OF *MSTT* FOR FORMAT.
* READ EST INTO *ESTB*.
BMT SUBR ENTRY/EXIT
SA1 BMTA READ EST POINTERS
MX7 1
SA7 ESTB
SYSTEM RSB,R,A1
SA2 ESTB SET *COMCRSB* ENTRY CONDITIONS
MX3 -12
SX1 A2 (X1) = ADDRESS TO TRANSFER TO
AX2 12
BX7 -X3*X2
SA7 BMTB SAVE LAST MASS STORAGE ORDINAL + 1
AX2 24 (X2) = ADDRESS TO TRANSFER FROM
R= X6,ESTE
IX3 X7*X6 (X3) = WORD COUNT
SX4 B0 (X4) = SUBSYSTEM (= *CMR*)
MX6 1
SA6 X1
RJ RSB= READ EST
SB2 NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
SA2 BMTB SET LAST MASS STORAGE ORDINAL + 1
SB3 X2
SB4 B0 SET INITIAL MASS STORAGE TABLE INDEX
* READ NEXT MST ENTRY.
BMT1 SB2 B2+B1 ADVANCE TO NEXT EST ENTRY
EQ B2,B3,BMT4 IF END OF EST
SX1 B2 CALCULATE *ESTB* OFFSET
R= X6,ESTE
IX1 X1*X6
SA1 ESTB+X1+EQDE
PL X1,BMT1 IF NOT MASS STORAGE EQUIPMENT
MX2 -12 SET MST ADDRESS
BX6 -X2*X1
LX1 59-54
LX6 17-14
SX6 X6+TDGL
LX6 35-17
NG X1,BMT1 IF DEVICE UNAVAILABLE
SX2 MSTN NUMBER OF MST WORDS NEEDED
SX7 MSTB
LX2 59-23
BX1 X6+X7
MX7 1 SET ABSOLUTE MEMORY FLAG
BX6 X1+X2
SA7 MSTB
SA6 MSTA
SYSTEM RSB,R,A6 READ MST ENTRY
* CHECK FOR USABLE MST ENTRY.
SA2 MSTB+PFGL-TDGL CHECK FAMILY NAME
MX0 42
SA3 FM
BX6 X2-X3
BX2 X0*X6
NZ X2,BMT1 IF NOT CORRECT FAMILY NAME
SA2 MSTB+ACGL-TDGL CHECK FOR ERROR IDLE
LX2 59-4
SB5 MSGA * RDPFC - ERROR IDLE, DN XX.
NG X2,BMT2 IF DEVICE ERROR IDLE
SA3 MSTB CHECK FOR PF UTILITY ACTIVE
LX3 59-42
SB5 MSGB * RDPFC - PF UTILITY ACTIVE, DN XX.*
NG X3,BMT2 IF PF UTILITY ACTIVE ON DEVICE
* BULID MASS STORAGE TABLE *MSTT* INFORMATION.
SA1 MSTB+ALGL-TDGL SET NUMBER OF CATALOG TRACKS
MX3 -12
AX1 12
BX6 -X3*X1
SA1 MSTB+PFGL-TDGL SET DEVICE NUMBER
MX3 6
LX1 59-17
BX7 X3*X1
BX6 X6+X7
SX1 B2 SET EST ORDINAL
LX1 53-11
BX6 X6+X1
SA1 MSTB+PUGL-TDGL SET DEVICE MASK
MX3 -8
BX7 -X3*X1
LX7 19-7
BX6 X6+X7
SA6 MSTT+B4 SET *MSTT* ENTRY
SB4 B4+B1 ADVANCE TABLE INDEX
EQ BMT1 GET NEXT EST ENTRY
* DISPLAY DAYFILE MESSAGES.
BMT2 SX5 B2 SAVE CURRENT EST ORDINAL
SX6 B1 SET ERROR IDLE FLAG
SA6 DVFL
SA2 MSTB+PFGL-TDGL GET DEVICE NUMBER
MX0 -6
LX2 -12
BX1 -X0*X2
RJ COD CONVERT DEVICE NUMBER TO DISPLAY CODE
MX0 -12
BX1 -X0*X6
LX1 59-11
SB2 1R/
RJ SNM SET DEVICE NUMBER IN MESSAGE
MESSAGE B5,3,R
SB2 X5 RESTORE EST ORDINALS
SA2 BMTB
SB3 X2
EQ BMT1 GET NEXT EST ENTRY
* TERMINATE MASS STORAGE TABLE.
BMT4 BX6 X6-X6 TERMINATE BY A WORD OF ZEROES
SA6 MSTT+B4
EQ BMTX RETURN
BMTA VFD 24/1,18/ESTP,18/ESTB EST POINTER PARAMETER
BMTB BSS 1 LAST MASS STORAGE ORDINAL + 1
CAC SPACE 4,15
** CAC - CLEAR PF ACTIVITY COUNT.
*
* ENTRY (ACFL) = 1, IF ACTIVITY COUNT SET.
* 0, IF ACTIVITY COUNT ALREADY CLEAR.
* (MAEQ) = MASTER DEVICE EST ORDINAL.
*
* EXIT (ACFL) = 0.
* PFU CALLED TO CLEAR PF ACTIVITY COUNT IF
* NOT ALREADY CLEAR.
*
* USES A - 1, 6.
* X - 1, 6.
*
* MACROS CALLPFU.
CAC SUBR ENTRY/EXIT
SA1 ACFL CHECK ACTIVITY COUNT FLAG
ZR X1,CACX IF ACTIVITY COUNT ALREADY CLEAR
SA1 MAEQ GET MASTER DEVICE EST ORDINAL
SX6 ACFL SET ACTIVITY COUNT FLAG ADDRESS
LX1 59-11
BX6 X1+X6 MERGE EST ORDINAL
SA6 ACFT+FTPM
CALLPFU ACFT,CTDA,R DECREMENT PF ACTIVITY COUNT
EQ CACX RETURN
RCT SPACE 4,20
** RCT - READ CATALOG TRACK.
*
* ENTRY (CATS) = FWA OF FET FOR CATALOG FILE.
* (EOP) = 0, MIDDLE OF PFC(CATALOG) TRACK.
* 3, BAD PREVIOUS PFC(CATALOG) SECTOR.
*
* EXIT (PFCB) = A SECTOR OF PFC ENTRIES ALONG
* WITH THE TRAILING CONTROL WORD.
* (EOP) = 0, MIDDLE OF PFC(CATALOG) TRACK.
* 1, END OF PFC(CATALOG) TRACK.
* 3, BAD PFC(CATALOG) SECTOR.
*
* USES A - 1, 2, 3, 6, 7.
* B - 2.
* X - 0, 1, 2, 3, 6, 7.
*
* CALLS AVC.
*
* MACROS READO, READW.
RCT SUBR ENTRY/EXIT
SA1 EOP
ZR X1,RCT1 IF IN THE MIDDLE OF TRACK
* CLEAN UP ERROR FIELDS FOR PREVIOUS BAD SECTOR.
SA2 CATS
SX6 36000B CLEAR FET ERROR STATUS
BX6 -X6*X2
SA6 A2
BX6 X6-X6
SA6 A2+6 CLEAR FET DETAILED ERROR STATUS
SA6 EOP CLEAR ERROR FLAG
RCT1 READO CATS READ *CIO* HEADER CONTROL WORD
NZ X1,RCT3 IF END OF CATALOG TRACK
PL X6,RCT2 IF ERROR INDICATOR CLEAR
SX7 3 FLAG *BAD SECTOR*
SA7 EOP
RCT2 SX5 5 DETERMINE WORD COUNT
MX0 -24
BX6 -X0*X6
ZR X6,RCT3 IF END OF TRACK
IX7 X6/X5
SA7 WCNT
SX7 X7+1
SA1 PFC
READW CATS,X1,X7 READ CATALOG SECTOR+CONTROL WORD
* SET DEVICE NUMBER IN TRAILING CONTROL WORD.
SA1 MORD GET *MSTT* ENTRY
SA2 MSTT+X1
MX0 6
BX6 X0*X2
SA1 PFC
SA4 WCNT
SB2 X4
SA3 X1+B2
MX0 24
BX7 -X0*X3
BX6 X6+X7
SA6 A3
EQ RCTX RETURN
RCT3 RJ AVC ADVANCE TO NEXT TRACK
SA1 EOP
ZR X1,RCT1 IF NOT END OF PFC
EQ RCTX RETURN
SAC SPACE 4,10
** SAC - SET PF ACTIVITY COUNT.
*
* ENTRY (ACFL) = 0, IF PF ACTIVITY COUNT NOT SET.
* 1, IF PF ACTIVITY COUNT ALREADY SET.
* (MAEQ) = MASTER DEVICE EST ORDINAL.
*
* EXIT (ACFL) = 1.
* PFU CALLED TO SET PF ACTIVITY COUNT IF NOT
* ALREADY SET.
*
* USES A - 1, 6.
* X - 1, 6.
*
* MACROS CALLPFU, REPRIEVE.
SAC SUBR ENTRY/EXIT
SA1 ACFL
NZ X1,SACX IF PF ACTIVITY COUNT ALREADY SET
SA1 MAEQ GET MASTER DEVICE EST ORDINAL
SX6 ACFL SET ACTIVITY COUNT FLAG ADDRESS
LX1 59-11
BX6 X1+X6 MERGE EST ORDINAL
SA6 ACFT+FTPM
REPRIEVE /ERR/RPVB,SET,277B SET REPRIEVE
CALLPFU ACFT,CTIA,R INCREMENT PF ACTIVITY COUNT
EQ SACX RETURN
*CALL COMCCOD
*CALL COMCPFU
*CALL COMCRDO
*CALL COMCRDW
*CALL COMCRSB
TITLE WORKING STORAGE AND BUFFERS.
*CALL COMCSNM
** RESERVED LOCATIONS.
*
*T PDWD 42/0,6/0,12/ESTO
* ESTO = EST ORDINAL OF A FAMILY DEVICE.
* EQ = EST ORDINAL OF A FAMILY DEVICE.
PDWD BSS 1 PF DESCRIPTION WORD
ACFL CON 0 PF ACTIVITY FLAG
CCTR BSS 1 CURRENT CATALOG TRACK
CUI BSS 1 CURRENT USER INDEX
DVFL CON 0 ERROR IDLE/PF UTILITY ACTIVE FLAG
EOP CON 0 END OF PFC FLAG
ESTA BSS 1 RSB PARAMETER WORD FOR EST
FG BSS 1 ADDRESS OF RETURN STATUS WORD
FIST VFD 60/5 FILE STATUS
FM BSS 1 FAMILY NAME
MAEQ BSS 1 MASTER DEVICE EST ORDINAL
MORD DATA -1 CURRENT *MSTT* TABLE ENTRY ORDINAL
MSTA BSS 1 RSB PARAMETER WORD FOR MST
NCTR CON 0 NUMBER OF CATALOG TRACKS IN CURRENT DEVICE
PFC BSS 1 ADDRESS OF BUFFER TO HOLD PFC ENTRIES
SMSK BSS 1 SUBFAMILY MASK
WCNT BSS 1 WORD COUNT
WCNA BSS 1 ADDRESS OF WORD TO RETURN WORD COUNT
* MSTT - TABLE OF MST INFORMATION.
*
* 6/DN,12/EQ,22/,8/DM,12/NCTR
*
* DN = DEVICE NUMBER.
* EQ = EST ORDINAL.
* DM = DEVICE MASK.
* NCTR = NUMBER OF CATALOG TRACKS.
MSTT BSS MSTTL MST INFORMATION TABLE
* FETS.
ACFT FILEB 0,0,(FET=10) FET TO CONTROL PF ACTIVITY COUNT
CATS FILEB CBUF,CBUFL,FET=10D
* BUFFERS.
CBUF BSS CBUFL CATALOG BUFFER
ESTB BSS ESMX*ESTE EST BUFFER
MSTB BSS MSTN MST BUFFER
* DISPLAYED MESSAGE CONSTANTS.
MSGA DATA 40C RDPFC - ERROR IDLE, DN //.
MSGB DATA 40C RDPFC - PF UTILITY ACTIVE, DN //.
QUAL ERR
ERR SPACE 4,10
** ERR - ERROR INTERRUPT HANDLER.
*
* ENTRY REPRIEVE SET.
* PF ACTIVITY COUNT FLAG SET OR CLEAR.
*
* EXIT PF ACTIVITY COUNT FLAG CLEAR.
*
* CALLS CAC.
*
* MACROS REPRIEVE.
ERR BSS 0
RJ CAC CLEAR PF ACTIVITY COUNT
ERR1 REPRIEVE RPVB,RESET,0
QUAL$ SET 0
*CALL COMCPFU
*CALL COMCSYS
RPVA EQU *-1 LWA TO CHECKSUM
* REPRIEVE PARAMETER BLOCK.
RPVB BSS 0
VFD 36/0,12/RPVL,12/0
VFD 30/RPVA,30/ERR
BSSZ 23
RPVL EQU *-RPVB LENGTH OF REPRIEVE PARAMETER BLOCK
QUAL *
END
IDENT SETPFP
ENTRY SETPFP
SYSCOM B1
TITLE SETPFP - SET PERMANENT FILE PARAMETERS.
*COMMENT SET PERMANENT FILE PARAMETERS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
SETPFP SPACE 4,30
*** SETPFP - SET PERMANENT FILE PARAMETERS.
*
* SETPFP(ADDR); (*SYMPL* CALL)
*
* ENTRY (ADDR) = PARAMETER BLOCK WHICH HAS THE
* FOLLOWING FORMAT -
* 42/FAMILY NAME,14/,4/FG
* 42/PACKNAME,18/
* 42/USER NUMBER,18/USER INDEX
* FG = FLAG BITS DENOTING WHICH FIELDS TO SET.
* BIT 3 - FAMILY NAME.
* BIT 2 - PACKNAME.
* BIT 1 - USER NUMBER.
* BIT 0 - USER INDEX.
*
* EXIT PARAMETERS SET IN CONTROL POINT AREA IF FLAGGED.
* STATUS OF SPECIFIED FAMILY RETURNED AS FOLLOWS -
* 42/FAMILY NAME,6/ST,8/0,4/FG
* ST = 0, IF FAMILY NAME SET IN CONTROL POINT AREA.
* = 1, IF SPECIFIED FAMILY WAS NOT FOUND (CURRENT
* FAMILY REMAINS UNCHANGED).
*
* USES B - 1.
*
* MACROS SETPFP.
SETPFP SUBR ENTRY/EXIT
SB1 1
SETPFP X1
EQ SETPFPX RETURN
END
IDENT SFCALL
ENTRY SFCALL
SYSCOM B1
TITLE SFCALL - PRIVILEGED SYSTEM CALL FROM SUBSYSTEM.
*COMMENT PRIVILEGED SYSTEM CALL FROM SUBSYSTEM.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
*CALL COMCMAC
SFCALL SPACE 4,25
*** SFCALL - PRIVILEGED SYSTEM CALL FROM SUBSYSTEM.
*
* SFCALL(ADDR,R); (*SYMPL* CALL)
*
* ENTRY (ADDR) = ADDRESS OF TWO WORD PARAMETER BLOCK
* WITH THE FOLLOWING FORMAT -
* 6/RC,12/FP,18/UCPA,18/SCPA,6/FC
* 36/SEQN,12/0,12/FSTA
* RC = REPLY CODE.
* FP = NUMBER OF ENTRIES IN THE LIST.
* UCPA = ADDRESS WITHIN UCP.
* SCPA = FWA OF CONTIGUOUS PARAMETER LIST.
* FC = FUNCTION CODE.
* (R) = IF .NE. 0, RECALL IS REQUESTED.
*
* EXIT SFCALL ISSUED AND THE RESPONSE CODE
* RETURNED IN THE *RC* FIELD OF THE
* PARAMETER BLOCK.
*
* USES A - 2, 4.
* B - 1.
* X - 2, 4.
*
* MACROS SFCALL.
SFCALL SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET RECALL PARAMETER
SA2 X2
SA4 X1 GET ADDRESS OF PARAMETER BLOCK
ZR X2,SFC1 IF RECALL NOT REQUESTED
SFCALL X4,R
EQ SFCALLX RETURN
SFC1 SFCALL X4
EQ SFCALLX RETURN
END