IDENT 0RP,DRPX
PERIPH J
TITLE 0RP - RELEASE PERMANENT FILE.
BASE MIXED
SST
QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
*COMMENT 0RP - RELEASE PERMANENT FILE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4
*** 0RP - RELEASE PERMANENT FILE.
* J. L. WARDELL 72/10/20.
* S. L. KSANDER. 75/05/26.
* W. E. GOEBEL. 77/01/14.
* P. C. SMITH. 79/04/27.
SPACE 4
*** 0RP IS A LOCATION FREE ROUTINE TO BE USED FOR
* RELEASING PERMANENT FILES.
*
* IF THE FILE IS ATTACHED IN WRITE MODE THE SYSTEM SECTOR
* OF THE FILE WILL BE UPDATED TO CLEAR THE WRITE LOCKOUT
* STATUS.
*
* IF THE FILE WAS ATTACHED IN READ MODE THE SYSTEM SECTOR OF
* THE FILE WILL BE UPDATED TO REFLECT ONE LESS USER
* ACCESSING THE FILE.
*
* IF THE PURGE BIT IS SET THE FILE WILL BE DROPPED IF THE
* USER COUNT INDICATES NO OTHER USERS ACCESSING FILE.
*
* ACTIVE FILE COUNT FOR DEVICE WILL BE DECREMENTED.
* MMF USER COUNTS IN THE SYSTEM SECTOR WILL BE UPDATED.
*
* AN EVENT WILL BE ISSUED TO ROLL IN USERS WAITING FOR
* THE FILE.
SPACE 4
*** CALL.
*
* ENTRY ((LA)-1) = FILE STATUS.
* 6/0,1/0,1/A/,1/M,1/E/,1/U,1/R
* A = APPEND
* M = MODIFY
* E = EXECUTE
* U = UTILITY ATTACH.
* R = READ ONLY
* (FS - FS+4) = FST INFORMATION.
*
* EXIT (A) .LT. 0 IF PERMANENT FILE DEVICE INACCESSIBLE.
* (T5) = EST ORDINAL OF PERMANENT FILE DEVICE.
* (T6) = FIRST TRACK OF PERMANENT FILE.
SPACE 4
*** DAYFILE MESSAGES.
*
* *EQXXX, TYYYY, SYSTEM SECTOR ERROR.*
* THIS MESSAGE IS ISSUED FOR EITHER READ OR WRITE ERRORS OR
* IF THE TRACK OR LINKAGE BYTES CONTAINED IN THE SYSTEM
* SECTOR ARE NOT VALID.
* EQ EQUIPMENT MNEMONIC.
* XXX EST ORDINAL.
* YYYY TRACK NUMBER.
SPACE 4
*** USES LOCATIONS 0 - 17, BFMS.
*
* MUST BE LOADED BELOW BFMS.
SPACE 4
*** ROUTINES USED.
*
* CALLS DFM, RDS, WDS.
SPACE 4
** COMMON DECKS.
*CALL COMPMAC
*CALL COMSCPS
QUAL EVENT
*CALL COMSEVT
QUAL *
*CALL COMSPFM
*CALL COMPREL
*CALL COMSMSP
*CALL COMSZOL
SPACE 4,10
**** DIRECT LOCATION ASSIGNMENTS.
CF EQU 16 CHECKPOINT REQUEST FLAG
FS EQU 20 - 24 FST INFORMATION (5 LOCATIONS)
****
TITLE MAIN ROUTINE.
** DRP MAIN ROUTINE.
ORG 5
DRP SUBR ENTRY/EXIT
* INTERLOCK TRACK.
DRP1 LDD FS SET EST ORDINAL
STD T5
ADD TH IMMEDIATE RETURN ON INACCESSIBLE DEVICE
STD CM+1
LDD FS+1 SET FIRST TRACK
STD T6
ZJN DRPX IF NO TRACKS ASSIGNED
STD CM+2
LDN STIS SET TRACK INTERLOCK
STD CM+3
MONITOR STBM
LDD CM+1
ZJN DRP3 IF INTERLOCK SET
SHN 21-11
MJN DRPX IF DEVICE INACCESSIBLE
LCN 77
STD T1
* DELAY 1/2 SECOND AND RETRY.
DRP2 SOD T1
ZJN DRP1 IF DELAY EXPIRED RETRY INTERLOCK
PAUSE
DELAY
LDD CM+1
LMN ORET
NJN DRP2 IF NO OPERATOR OVERRIDE
LJM DRP15 DECREMENT FILE COUNT AND EXIT
* READ SYSTEM SECTOR.
DRP3 STD T7
STD CF CLEAR CHECKPOINT FLAG
SETMS IO,RW
LDD CM+3 SET EQUIPMENT IN ERROR MESSAGE
LPC 3777
STM DRPE
LDC BFMS READ NEXT SECTOR
RJM. RDS
PJN DRP5 IF NO ERROR
DRP4 SHN 21-12
MJN DRP6 IF NON-RECOVERABLE ERROR
RJM ITR CLEAR TRACK INTERLOCK
LCN 0
LJM DRPX RETURN
DRP5 LDM. BFMS+1
LMN 77
NJN DRP9 IF NOT SYSTEM SECTOR WORD COUNT
LDM. BFMS CHECK NEXT SECTOR
LMC 3777
NJN DRP9 IF NOT SYSTEM SECTOR ID
LDD T6 CHECK TRACK
LMM. FTSS
DRP6 NJN DRP9 IF ERROR IN SYSTEM SECTOR
LDM. FISS
NJN DRP8 IF FAST ATTACH ENTRY
* SET ACCESS AND USER COUNTS FOR NORMAL FILE.
RJM UAM UPDATE ACCESS MODE AND USER COUNTS
ZJN DRP10 IF NO MORE USERS
LMN 40 CHECK PURGE BIT
NJN DRP10 IF USERS ACCESSING FILE
LDM. CTSS+FCEF CHECK FOR BOI/EOI VERIFICATION ERROR
SHN 0-13
NJN DRP11 IF ERROR (LEAVE IN CURRENT STATE)
* DROP FILE BEING PURGED.
LCN STBM-DTKM CHANGE TO DROP FILE
RAM ITRA
AOD CF
DRP8 UJN DRP11 RELEASE FILE
DRP9 ENDMS
UJN DRP13 ISSUE ERROR MESSAGE
* ISSUE EVENT WHILE WAITING FOR DISK REVOLUTION.
DRP10 LDN 0 ISSUE EVENT
STD CM+1
LDD T6
STD CM+4
LDD T5
STD CM+3
MONITOR EATM
LDC BFMS+WLSF REWRITE SYSTEM SECTOR
RJM. WDS
DRP11 PJN DRP14 IF NO WRITE ERROR
LJM DRP4 CHECK ERROR STATUS
* ISSUE ERROR MESSAGE.
DRP13 LDD T5 CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STM DRPE+1
LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL
LPN 7
SHN 6
RAM DRPE+2
LDD T6 SET TRACK NUMBER IN ERROR MESSAGE
SHN -6
RJM C2D
STM DRPE+4
LDD T6
RJM C2D
STM DRPE+5
LDC DRPE ISSUE DAYFILE MESSAGE
ADD LA
RJM. DFM
* CLEAR TRACK INTERLOCK / DROP TRACK.
DRP14 ENDMS
RJM ITR ISSUE TRACK REQUEST
LDD CF
ZJN DRP15 IF *DTKM* NOT ISSUED
* INCREMENT PRU LIMIT FIELD IN CONTROL POINT AREA.
* NUMBER OF SECTORS RETURNED BY *DTKM* IS IN (CM+3 - CM+4).
LDN CICS INCREMENT CP AREA FIELD FUNCTION CODE
STD CM
LDK ACLW ADDRESS OF MASS STORAGE PRU LIMIT
STD CM+1
LDN 0D*100+18D POSITION AND WIDTH OF LIMIT FIELD
STD CM+2
LDD MA WRITE *UADM* PARAMETERS TO MESSAGE BUFFER
CWD CM
LDN 1
STD CM+1 REQUEST COUNT
STD CM+2 DO NOT DROP PP
MONITOR UADM
* UPDATE DEVICE STATUS.
DRP15 LDD T5 DECREMENT USER COUNT
STD CM+1
LDN DUCS
STD CM+3
MONITOR SMDM
* ISSUE OVERCOMMITMENT EVENT FOR AUXILIARY REMOVABLE
* DEVICE WITH ZERO USER COUNT.
SFA EST,T5 CHECK FOR AUXILIARY REMOVABLE DEVICE
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADN MDGL
CRD CM
ADN STLL-MDGL
CRD T0 GET USER COUNT
LDD CM
SHN -12
LMN 3
NJN DRP16 IF FAMILY OR NON-REMOVABLE DEVICE
LDD T0+3
NJN DRP16 IF USERS
STD CM+1 ISSUE OVERCOMMITMENT EVENT
LDC /EVENT/OVRE
STD CM+4
SHN -14
STD CM+3
MONITOR EATM
DRP16 LJM DRPX EXIT
DRPE DATA C*EQ000, T0000, SYSTEM SECTOR ERROR.*
ITR SPACE 4,10
** ITR - ISSUE TRACK REQUEST.
*
* ENTRY (CF) = CHECKPOINT REQUEST FLAG.
* (T5) = EST ORDINAL.
* (T6) = FIRST TRACK OF FILE.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
ITR SUBR ENTRY/EXIT
LDD T6
STD CM+2 SET FIRST TRACK
LDD CF
SHN 13-0 CHECKPOINT FLAG
LMD T5
STD CM+1 APPEND TO EST ORDINAL
LDN CTIS
STD CM+3 CLEAR TRACK INTERLOCK
ITRA MONITOR STBM
* MONITOR DTKM (FILE PURGED)
* LDN 0
UJN ITRX RETURN
TITLE SUBROUTINES.
UAM SPACE 4
** UAM - UPDATE ACCESS MODE AND COUNTS.
*
* ENTRY (CASS) = ACCESS MODE OF FILE.
* BIT DESCRIPTION
* 0 UNUSED.
* 1 FILE MAY BE EXTENDED (W, M OR A MODE).
* 2 UNUSED.
* 3 FILE MAY BE REWRITTEN (W, M OR U MODE).
* 4 FILE MAY BE SHORTENED (W MODE).
* 5 FILE PURGED.
* 6 FILE ATTACHED BY SYSTEM UTILITY.
* (T5) = EST ORDINAL.
*
* EXIT (CASS) = NEW ACCESS MODE OF FILE.
* (A) .NE. 0 IF OTHER USERS ACCESSING FILE OR FILE
* PURGED.
* (A) = 40 IF FILE PURGED.
*
* USES T2, T3, CM - CM+4.
*
* MACROS SFA.
*
* NOTES WHEN A FILE IS ATTACHED IN A READ MODE AND THE USER
* COUNT IS TO BE DECREMENTED, IT IS DONE BY COMMON
* CODE. THIS IS DUE TO THE CORRESPONDENCE BETWEEN THE
* FILE STATUS VALUES FROM THE LOCAL FNT ENTRY FOR READ
* MODES AND THE BYTE WHERE THE APPROPRIATE USER COUNT
* IS LOCATED. ADDING ONE TO THE VALUE OF BITS 3-5 OF
* THE STATUS WILL GIVE THE BYTE NUMBER.
UAM4 SHN 1-3 DETERMINE USER COUNT OFFSET
LPN 3
STD T3
RAD T2 ADD WORD OFFSET OF LOCAL COUNTS
SOP UCSS+6,T2 DECREMENT LOCAL USER COUNT
SOP UCSS+1,T3 DECREMENT GLOBAL USER COUNT
* RETURN FILE STATUS.
UAM5 LDM. UCSS+1
ADM. UCSS+2
ADM. UCSS+3
ADM. UCSS+4
SHN 6
ADM. CASS
UAM SUBR ENTRY/EXIT
SFA EST,T5 COMPUTE BASE ADDRESS OF LOCAL COUNTS
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADN DULL GET MACHINE INDEX
CRD CM
LDD CM+2
LPN 17
STD T2
SHN 2
RAD T2
LDM -1
LPN 2
ZJN UAM2 IF UTILITY ATTACH STATUS NOT SET
* CLEAR SYSTEM UTILITY ATTACH FLAGS.
LDC -100 CLEAR GLOBAL UTILITY ATTACH FLAG
RAM. CASS
LCN 2 CLEAR LOCAL UTILITY ATTACH FLAG
RAP UCSS+5,T2
* WRITE MODE PROCESSOR.
UAM2 LDM -1
SHN 21-0
PJN UAM3 IF WRITABLE MODE
LJM UAM4 PROCESS NON-WRITEABLE MODES
UAM3 LDM. CASS CLEAR ALL WRITE BITS
SCN 32
STM. CASS
LDP UCSS+5,T2 CLEAR LOCAL WRITE FLAG
SCN 1
STP UCSS+5,T2
LJM UAM5 RETURN FILE STATUS
SPACE 4
** COMMON DECKS.
*CALL COMPC2D
SPACE 4
OVERFLOW 5,ZRPL
END