0RF 
          IDENT  0RF,URFX 
          PERIPH J
          BASE   MIXED
          SST 
 REL$     SET    0
 QUAL$    EQU    1           DEFINE UNQUALIFIED COMMON DECKS
*COMMENT  0RF - UPDATE RESOURCE DEMAND FILE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  0RF - UPDATE RESOURCE DEMAND FILE. 
          SPACE  4,10 
***       0RF - UPDATE RESOURCE DEMAND FILE.
*         M. E. MADDEN.      73/04/01.
*         W. E. GOEBEL.      76/05/12.
*         J. L. LARSON.      77/01/17.
*         J. L. LARSON.      81/12/14.
*         J. L. LARSON.      82/06/24.
          SPACE  4,10 
***              *0RF* IS A LOCATION FREE ROUTINE USED TO CLEAR 
*         THE RESOURCE DEMAND (RSXDID) FILE ENTRY AT JOB COMPLETION 
*         OR TO UPDATE THE RESOURCE DEMAND FILE ENTRY FOR RETURN
*         OF A REMOVABLE PACK RESOURCE. 
* 
*         *0RF* IS CALLED BY *0DF* (RETURN/UNLOAD USER,S LAST 
*         DIRECT ACCESS FILE ON A REMOVABLE PACK), *PFM* (DECREMENT 
*         DEMAND ENTRY FOR *GET* ON REMOVABLE PACK), AND BY *1AJ* 
*         FOR JOB TERMINATION PROCESSING (CLEAR DEMAND FILE ENTRY 
*         ON JOB COMPLETION). 
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
*         (FA) = RELATIVE FNT ADDRESS IN NFL. 
*         (FS)     = EQ 
*         (FS+1)   = X
*         ((LA)-1) = Y
*                WHERE LA = LOAD ADDRESS
*                      X = OPTION 
*                        4 = RSXDID ENTRY CLEAR 
*                        5 = RSXDID ENTRY UPDATE FOR RETURN OF
*                            REMOVABLE PACK RESOURCE
*                      Y = RESOURCE UPDATE CONTROL
*                            BIT 0 = 0, IF UPDATING ASSIGNED AND DEMAND 
*                                    1, IF NOT UPDATING DEMAND COUNT
*                      EQ = EST ORDINAL FOR RETURN OF REMOVABLE 
*                            PACK RESOURCE (OPTION 1).
*         (FN - FN+4) = PACK NAME, IF RETURN REMOVABLE PACK RESOURCE
*                       AND DEVICE IS CURRENTLY UNAVAILABLE.
* 
*         USES   DIRECT CELLS 0 - 17. 
*                *BFMS* MS SECTOR BUFFER. 
          SPACE  4,10 
***       EXIT CONDITIONS.
* 
*         (A) .LT. 0 IF RESOURCE DEMAND FILE DEVICE INACCESSIBLE. 
*         (T5) = EST ORDINAL OF RESOURCE DEMAND FILE. 
*         (FSTL OF FNT) UPDATED IN CM.
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSMSP 
          ORG    5           KEEP LOCATIONS UNDER 473B
*CALL     COMPREL 
          QUAL   COMSRSX
*CALL     COMSRSX 
          QUAL   *
*CALL     COMSZOL 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 RI       EQU    16 - 17     RANDOM INDEX (2 LOCATIONS) 
 FS       EQU    20 - 24     FST INFORMATION (5 LOCATIONS)
 FN       EQU    40 - 44     PACK NAME
 FA       EQU    57          RELATIVE FNT ADDRESS IN NFL
          SPACE  4,10 
*         ASSEMBLY CONSTANTS. 
  
  
 RPST     EQU    BFMS+2+/COMSRSX/RRPS*5-500B  FWA SHARE TABLE 
 RPSTL    EQU    BFMS+2+/COMSRSX/RPSL*5  LWA+1 SHARE TABLE
 TACT     EQU    BFMS+2+/COMSRSX/RVAL*5+3  TOTAL ASSIGNED COUNT 
 TDCT     EQU    BFMS+2+/COMSRSX/RVAL*5+4  TOTAL DEMAND COUNT 
  
****
          TITLE  MAIN PROGRAM.
 URF      SPACE  4,10 
**        URF - MAIN ROUTINE. 
  
  
          ORG    5
 URF      SUBR               ENTRY/EXIT 
          RJM    IFP         INITIALIZE GLOBAL FNT PROCESSOR
  
*         READ RESOURCE DEMAND FILE ENTRY.
  
          LDN    RDFO        FETCH RESOURCE DEMAND FILE FST ENTRY 
          SFA    FNT
          ADN    FSTG 
          CRD    T5 
          SETMS  IO,RW
          LDD    CM+4 
          SHN    3
          ADN    TRLL        FETCH TRT POINTER
          CRD    CM 
          LDD    T6          PRESERVE FIRST TRACK OF DEMAND FILE
          STD    T3 
 URF0     ZJN    URFX        IF FILE UNUSED 
          LDD    CM+3 
          LPN    77 
          SHN    14 
          LMD    CM+4        PRESET *COMPCRA* 
          SBD    TH 
          STM    CRAA+1 
          SHN    -14
          RAM    CRAA 
  
*         PAUSE AND CHECK FOR OPERATOR OVERRIDE.
  
 PSE      LDN    20          SET TWO MILLISECOND DELAY
          STD    T1 
 PSE1     DELAY 
          PAUSE 
          LDD    CM+1        CHECK ERROR FLAG 
          LMN    ORET 
          ZJN    URF0        IF OPERATOR OVERRIDE 
          SOD    T1 
          NJN    PSE1        IF NOT END OF DELAY
*         LDN    SFIN 
          ERRNZ  SFIN        CODE DEPENDS ON VALUE
*         STD    T1 
          LDN    RDFO        INTERLOCK DEMAND FILE FNT ENTRY
          SFA    FNT
          RJM    SFI
          NJN    PSE         IF INTERLOCK UNAVAILABLE 
  
*         CALCULATE ENTRY SECTOR NUMBER FOR OPTION. 
  
 URF1     LCN    2
          RAD    FS+1 
          SHN    -1 
          STD    T1 
          LDD    CP          FETCH DEMAND FILE RANDOM INDEX 
          ADN    RFCW 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          SHN    14 
          ADD    CM+4 
          ZJN    URF6        IF NO RANDOM INDEX 
          ADD    T1          BIAS FOR FIRST OR SECOND SECTOR
          STD    RI+1 
          SHN    -14
          STD    RI 
          RJM    CRA         CONVERT RANDOM INDEX 
          MJN    URF6        IF RANDOM ADDRESS ERROR
          LDC    BFMS 
          RJM.   RDS         READ SECTOR
          PJN    URF7        IF NO READ ERROR 
 URF3     SHN    21-12
          MJN    URF4        IF NON-RECOVERABLE ERROR 
          SOM    URFA 
 URF4     LCN    0           SET CHANNEL RELEASE WITH NO UPDATE 
 URF5     RJM    CLE
 URF6     LDN    CFIN        SELECT CLEAR OPTION
          STD    T1 
          LDN    RDFO 
          SFA    FNT
          RJM    SFI         CLEAR RESOURCE FILE INTERLOCK
*         LDN    0
 URFA     ADN    0           SET EXIT CONDITION 
*         LCN    77          (RECOVERABLE MS ERROR ENCOUNTERED) 
          LJM    URFX        RETURN 
  
*         DETERMINE TYPE OF PROCESSING. 
  
 URF7     LDD    FS+1 
          ZJN    URF5        IF CLEARING SECTOR 1 ENTRY 
          SBN    2
          NJN    URF9        IF NOT CLEARING SECTOR 2 ENTRY 
 URF8     RJM    CLE
          LDD    T3          RESET FIRST TRACK
          STD    T6 
          LJM    URF1        PROCESS SECTOR 1 
  
 URF9     PJN    RRP         IF UPDATING SHARE TABLE IN SECTOR 2
          LJM    URC         UPDATE RESOURCE COUNTS IN SECTOR 1 
 RRP      SPACE  4,10 
**        RRP - RETURN REMOVABLE PACK RESOURCE (OPTION 1).
* 
*         EXIT   TO *URF8* TO UPDATE SECTOR 2 DEMAND ENTRY. 
* 
*         ERROR  TO *HNG* IF MATCHING SHARE TABLE ENTRY NOT FOUND.
* 
*         MACROS SFA. 
  
  
 RRP      BSS    0           ENTRY
          LDC    RPST-5      SCAN SHARE TABLE ENTRIES 
          STD    T2 
          LDD    MA          MOVE PACK NAME 
          CWD    FN 
          CRD    CM 
          LDD    FS 
          ZJN    RRP1        IF EST ORDINAL NOT SPECIFIED 
          SFA    EST
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4        FETCH PACKNAME FOR SELECTED DEVICE 
          SHN    3
          ADN    PFGL 
          CRD    CM 
 RRP1     LDN    5           CHECK NEXT SHARE TABLE ENTRY 
          RAD    T2 
          STM    RRPA 
          ADC    -RPSTL 
          NJN    RRP2        IF NOT END OF SHARE TABLE ENTRIES
          LJM    HNG         HANG PP
  
 RRP2     LDI    T2 
          LMD    CM 
          NJN    RRP1        IF NO MATCH
          LDM.   1,T2 
          LMD    CM+1 
          NJN    RRP1        IF NO MATCH
          LDM.   2,T2 
          LMD    CM+2 
          NJN    RRP1        IF NO MATCH
          LDM.   3,T2        COMPARE LAST CHARACTER 
          LMD    CM+3 
          SCN    77 
          NJN    RRP1        IF NO MATCH
          LDM.   4,T2        GET RESOURCE POINTER 
          STD    FS+3 
          LDN    ZERL 
          CRM.   *,ON        CLEAR SHARE TABLE ENTRY
 RRPA     EQU    *-1
*         LDN    ZERL+1 
          LJM    URF8        UPDATE SECTOR 2 DEMAND FILE ENTRY
 URC      SPACE  4,10 
**        URC - UPDATE RESOURCE COUNTS. 
* 
*         ENTRY  (FS+3) = 3/, 3/UNIT COUNT, 6/RESOURCE INDEX. 
* 
*         EXIT   TO *URF5* TO UPDATE SECTOR 1 DEMAND FILE ENTRY 
* 
*         ERROR  TO *HNG* IF RESOURCE COUNTS INVALID. 
* 
*         USES   T1, T2.
  
  
 URC      BSS    0           ENTRY
          LDD    FS+3        CALCULATE RESOURCE BYTE POSITION 
          SHN    14 
          STD    T1          UNIT COUNT 
          SHN    -14
          STD    T2 
          SHN    2
          ADC    BFMS+2+5 
          RAD    T2 
          LDD    T1 
          SBN    5
          MJN    URC1        IF NOT IN SECOND WORD OF ENTRY 
          ADN    1           ADJUST TO SECOND WORD
 URC1     RAD    T2 
  
*         DECREMENT RESOURCE ASSIGNED COUNT AND TOTAL ASSIGNED COUNT. 
  
          LDC    -100        DECREMENT RESOURCE ASSIGNED COUNT
          RAI    T2 
          MJN    HNG         IF RESOURCE ASSIGNED COUNT OUT OF RANGE
          LDM.   TDCT        CHECK TOTAL DEMAND COUNT = 1 
          SBN    1
          ZJN    URC2        IF ONLY ONE CONCURRENT RESOURCE SCHEDULED
          LDM    -1 
          NJN    URC3        IF UNLOAD (DECREMENT ASSIGNED COUNT) 
  
*         IF ALL DEMANDS SATISFIED, DECREMENT RESOURCE DEMAND COUNT 
*         AND TOTAL DEMAND COUNT. 
  
 URC2     LDM.   TACT        CHECK ALL DEMANDS SATISFIED
          SBM.   TDCT 
          MJN    URC3        IF NOT ALL DEMANDS SATISFIED 
          SOI    T2          DECREMENT RESOURCE DEMAND COUNT
          SHN    21-5 
          MJN    HNG         IF RESOURCE DEMAND COUNT OUT OF RANGE
          SOM.   TDCT        DECREMENT TOTAL DEMAND COUNT 
          MJN    HNG         IF TOTAL DEMAND COUNT NOT IN RANGE 
 URC3     SOM.   TACT 
          MJN    HNG         IF TOTAL ASSIGNED COUNT OUT OF RANGE 
          LDN    1
          LJM    URF5        UPDATE DEMAND FILE ENTRY AND EXIT
 HNG      SPACE  4,10 
**        HNG - HANG PP.
* 
*         EXIT   TO *URF4* IF PP HANG CLEARED.
* 
*         MACROS MONITOR. 
  
  
 HNG      BSS    0           ENTRY
          MONITOR  HNGM      HANG PP
          LJM    URF4        RELEASE CHANNEL AND EXIT 
          TITLE  SUBROUTINES. 
 CLE      SPACE  4,20 
**        CLE - CLEAR/UPDATE FILE ENTRY.
* 
*         ENTRY  (A) = 0, IF CLEAR FILE ENTRY.
*                (A) .GT. 0, IF UPDATE FILE ENTRY.
*                (A) .LT. 0, IF RELEASE CHANNEL WITH NO UPDATE. 
*                (FA) = RELATIVE FNT ADDRESS IN NFL.
*                (T5 - T7) = RESOURCE DEMAND FILE MS PARAMETERS.
*                (FS - FS+4) = FST INFORMATION. 
*                (BFMS) = DEMAND FILE ENTRY (MS SECTOR).
* 
*         EXIT   RESOURCE FILE SECTOR REWRITTEN FROM BFMS BUFFER
*                FOR ENTRY CONDITION (A) .GE. 0.
* 
*         ERROR  TO *URF3* IF MASS STORAGE ERROR. 
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  WDS. 
* 
*         MACROS ENDMS, NFA.
  
  
 CLE3     LDD    FA 
          ZJN    CLE4        IF NO FNT ENTRY
          NFA    FA,R 
          ADN    FSTL        UPDATE FST INFORMATION 
          CWD    FS 
 CLE4     ENDMS 
  
 CLE      SUBR               EXTRY/EXIT 
          NJN    CLE2        IF UPDATE ONLY 
          LDC    500
          STD    T1 
 CLE1     LDN    0
          STM.   BFMS+1,T1
          SOD    T1 
          NJN    CLE1        IF MORE TO CLEAR 
 CLE2     MJN    CLE4        IF NO UPDATE 
          LDC    BFMS+WLSF
          RJM.   WDS         WRITE SECTOR 
          PJN    CLE3        IF NO ERROR
          LJM    URF3        PROCESS MASS STORAGE ERROR 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
 IRA$     SET    1           DEFINE INITIALIZATION
 REL$     SET    1
*CALL     COMPCRA 
 FNT$     EQU    1           ASSEMBLE SYSTEM FNT PROCESSOR
 IFP$     EQU    1           ASSEMBLE REMOTE INITIALIZATION CODE
*CALL     COMPGFP 
 SFI$     EQU    1           SELECT IMMEDIATE RETURN FROM *SFI* 
*CALL     COMPSFI 
  
  
 IFP      HERE               CODE TO INITIALIZE SYSTEM FNT PROCESSOR
          SPACE  4,10 
          RSTR
          SPACE  4,10 
          OVERFLOW 5,ZRFL 
  
          END 
