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