0RT 
          IDENT  0RT,RTRX 
          PERIPH J
          BASE   MIXED
          SST 
 REL$     SET    0
 QUAL$    EQU    1           DEFINE UNQUALIFIED COMMON DECKS
*COMMENT  0RT - RETURN TAPE RESOURCE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  0RT - RETURN TAPE RESOURCE.
          SPACE  4,10 
***       0RT - RETURN TAPE RESOURCE. 
* 
*         J. L. LARSON.      81/12/14.
          SPACE  4,10 
***              *0RT* IS A LOCATION FREE ROUTINE USED TO CLEAR 
*         THE ASSOCIATED VSN (RSXVID) FILE ENTRY AND UPDATE THE 
*         JOB DEMAND (RSXDID) FILE ENTRY FOR RETURN OF A TAPE RESOURCE. 
* 
*         *0RT* IS CALLED BY *0DF* (RETURN/UNLOAD TAPE).
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
*         (FA) = RELATIVE FNT ADDRESS IN NFL
*         ((LA)-1) = Y
*                WHERE LA = LOAD ADDRESS
*                       Y = RESOURCE UPDATE CONTROL 
*                            BIT 0 = 0, IF UPDATING ASSIGNED AND DEMAND 
*                                    1, IF NOT UPDATING DEMAND COUNT
*         (FS - FS+4) = FST INFORMATION 
* 
*         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 DEVICE, IF INACCESSIBLE.
*         (FSTL OF FNT) UPDATED IN CM.
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
*CALL     COMSCPS 
          QUAL   COMSMTX
*CALL     COMSMTX 
          QUAL   *
*CALL     COMSPIM 
*CALL     COMSMSP 
*CALL     COMPREL 
          QUAL   COMSRSX
*CALL     COMSRSX 
          QUAL   *
*CALL     COMSSSD 
*CALL     COMSZOL 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 FS       EQU    20 - 24     FST INFORMATION (5 LOCATIONS)
 RI       EQU    FS+2        RANDOM INDEX (2 LOCATIONS) 
 FA       EQU    57          RELATIVE FNT ADDRESS IN NFL
          SPACE  4,10 
*         ASSEMBLY CONSTANTS. 
  
  
 DFRA     EQU    BFMS+2+/COMSRSX/VDFI*5+3  DEMAND FILE RANDOM ADDRESS 
 TACT     EQU    BFMS+2+/COMSRSX/RVAL*5+3  TOTAL ASSIGNED COUNT 
 TDCT     EQU    BFMS+2+/COMSRSX/RVAL*5+4  TOTAL DEMAND COUNT 
 TRIX     EQU    BFMS+2+/COMSRSX/VDFI*5+2  TAPE RESOURCE INDEX
  
****
          TITLE  MAIN PROGRAM.
 RTR      SPACE  4,10 
**        RTR - MAIN ROUTINE. 
  
  
          ORG    5
 RTR      SUBR               ENTRY/EXIT 
          RJM    IFP         INITIALIZE GLOBAL FNT PROCESSOR
          LDD    FS+4 
          SHN    21-2 
          MJN    RTR1        IF PREVIOUS DEMAND FILE ERROR
          LDN    RVFO        SET RESOURCE VSN FILE ORDINAL
          RJM    RRF         READ VSN FILE ENTRY
  
*         CLEAR VSN ENTRY.
  
          LDM.   DFRA        SET DEMAND FILE RANDOM ADDRESS 
          STD    RI 
          LDM.   DFRA+1 
          STD    RI+1 
          LDM.   TRIX        GET TAPE RESOURCE INDEX AND BYTE POINTER 
          SBD    HN          CONVERT BYTE POINTER TO ACCESS LEVEL 
          SHN    3
          LMN    4
          RAD    FS+4 
          LDN    0
          RJM    CLE         CLEAR VSN ENTRY
          LDD    FS+1 
          ZJN    RTRX        IF NO UDT ADDRESS
 RTR1     LDN    RDFO        RESOURCE DEMAND FILE ORDINAL 
          RJM    RRF         READ DEMAND FILE ENTRY 
*         UJN    URC         UPDATE RESOURCE COUNTS 
 URC      SPACE  4,10 
*         URC - UPDATE RESOURCE ASSIGNED AND DEMAND COUNTS. 
* 
*         ENTRY  (FS+4) = RESOURCE BYTE POINTER.
* 
*         EXIT   TO *RTU* TO RELEASE TAPE UNIT. 
* 
*         ERROR  TO *HNG* IF RESOURCE COUNTS INVALID. 
* 
*         USES   T2.
  
  
 URC      BSS    0           ENTRY
          LDD    FS+4 
          SHN    -3          CALCULATE RESOURCE BYTE NUMBER 
          LPN    77 
          STD    T2 
          SHN    2
          ADC    BFMS+2+5 
          RAD    T2 
          LDD    FS+4 
          ADD    TH          CONVERT ACCESS LEVEL TO BYTE POINTER 
          SHN    -11
          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 
          PJN    RTU         IF TOTAL ASSIGNED COUNT NOT OUT OF RANGE 
*         UJN    HNG         HANG PP
 HNG      SPACE  4,10 
**        HNG - HANG PP.
* 
*         EXIT   TO *RRF4* IF PP HANG CLEARED.
* 
*         MACROS MONITOR. 
  
  
 HNG      BSS    0           ENTRY
          MONITOR  HNGM      HANG PP
          LJM    RRF4        RELEASE CHANNEL AND EXIT 
 RTU      SPACE  4,10 
**        RTU - RELEASE TAPE UNIT.
* 
*         ENTRY  (FS - FS+4) = FST INFORMATION. 
* 
*         EXIT   TO *RTRX*. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CLE, PAU.
* 
*         MACROS MONITOR. 
  
  
 RTU      BSS    0           ENTRY
          LDN    1
          RJM    CLE         UPDATE DEMAND FILE ENTRY 
  
*         IF CALLED BY MAGNET, A *CLOSE/UNLOAD* OR *CLOSE/RETURN* 
*         REQUEST IS IN PROGRESS.  IN THIS CASE, *1MT* WILL INITIATE
*         THE UNIT RETURN PROCESSING. 
  
          LDD    IA          SET CALLING CONTROL POINT ADDRESS
          CRD    CM 
          LDD    CM+1 
          LPN    37 
          SHN    7
          ADK    JCIW        GET SUBSYSTEM ID 
          CRD    CM 
          LDD    CM+2 
          LMK    MTSI 
          ZJN    RTU2        IF CALLED BY MAGNET
          LDN    ZERL 
          CRD    CM 
          LDN    /COMSMTX/RTF  SET RETURN REQUEST 
          STD    CM 
          LDD    MA 
          CWD    CM 
 RTU1     RJM    PAU         PAUSE
          LDD    FS+1        SET *UFRQ* ADDRESS 
          ADK    /COMSMTX/UFRQ
          STD    CM+4 
          LDN    5           SET WRITE AND INCREMENT TAPE ACTIVITY
          STD    CM+1 
          LDD    HN          SET NUMBER OF WORDS TO WRITE 
          STD    CM+3 
          LCN    7777-MTSI
          STD    CM+2 
          MONITOR TDAM       MAKE TAPE RETURN REQUEST 
          LDD    CM+1 
          ZJN    RTU2        IF COMPLETE
          SBN    1
          ZJN    RTU1        IF MAGNET MOVING 
          LDD    FS          SET EST ORDINAL
          STD    CM+1 
          MONITOR  DEQM      DROP EQUIPMENT 
*         LDN    0           SET RETURN COMPLETE
 RTU2     LJM    RTRX        RETURN 
          TITLE  SUBROUTINES. 
 RRF      SPACE  4,15 
**        RRF - READ RESOURCE FILE ENTRY. 
* 
*         ENTRY  (A) = FNT ORDINAL OF RESOURCE FILE.
*                (RI - RI+1) = RANDOM INDEX OF RESOURCE FILE ENTRY. 
* 
*         EXIT   (T5 - T7) = RESOURCE FILE MS PARAMETERS. 
*                (BFMS) = RESOURCE FILE ENTRY (MS SECTOR).
* 
*         ERROR  TO *RTRX* IF FILE EMPTY, RANDOM INDEX ERROR, 
*                OR SECTOR READ ERROR.
* 
*         USES   T1, T3, CM - CM+4, T5 - T5+4.
* 
*         CALLS  CLE, CRA, PAU, RDS, SFI. 
* 
*         MACROS SETMS, SFA.
  
  
 RRF      SUBR               ENTRY/EXIT 
          STD    T3 
          SFA    FNT         GET RESOURCE FILE FST ENTRY
          ADN    FSTG 
          CRD    T5 
          LDD    T6 
          ZJN    RRF1        IF FILE UNUSED 
          SETMS  IO,RW
          LDD    CM+4        FETCH FWA OF TRT 
          SHN    3
          ADN    TRLL 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          SHN    14 
          LMD    CM+4 
          SBD    TH          4000/4 
          STM    CRAA+1 
          SHN    -14
          LMC    ADCI 
          STM    CRAA 
          LDD    RI 
          ADD    RI+1 
 RRF1     ZJN    RRF5        IF NO RANDOM INDEX 
 RRF2     RJM    PAU         PAUSE
*         LDN    SFIN 
          ERRNZ  SFIN        CODE DEPENDS ON VALUE
*         STD    T1 
          SFA    FNT,T3      INTERLOCK RESOURCE FILE
          RJM    SFI
          NJN    RRF2        IF INTERLOCK UNAVAILABLE 
          RJM    CRA
          MJN    RRF4        IF RANDOM ADDRESS ERROR
          LDC    BFMS 
          RJM.   RDS         READ SECTOR
          MJN    RRF3        IF READ ERROR
          LJM    RRFX        RETURN 
  
 RRF3     SHN    21-12
          MJN    RRF4        IF NON-RECOVERABLE ERROR 
          SOM    RRFA 
 RRF4     LCN    0           RELEASE FILE WITH NO UPDATE
          RJM    CLE
*         LDN    0           SET EXIT CONDITION 
 RRFA     ADN    0
*         LCN    77          (RECOVERABLE MS ERROR ENCOUNTERED) 
 RRF5     LJM    RTRX        RETURN 
 CLE      SPACE  4,25 
**        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. 
*                (T3) = FNT ORDINAL OF RESOURCE FILE. 
*                (FA) = RELATIVE FNT ADDRESS IN NFL.
*                (T5 - T7) = RESOURCE FILE MS PARAMETERS. 
*                (FS - FS+4) = FST INFORMATION. 
*                (BFMS) = RESOURCE FILE ENTRY (MS SECTOR).
* 
*         EXIT   RESOURCE FILE SECTOR REWRITTEN FROM BFMS BUFFER
*                FOR ENTRY CONDITION (A) .GE. 0.
* 
*         ERROR  TO *RRF3* IF MASS STORAGE ERROR. 
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  SFI, WDS.
* 
*         MACROS ENDMS, SFA.
  
  
 CLE      SUBR               EXTRY/EXIT 
          NJN    CLE2        IF UPDATE ONLY 
          LDC    500
          STD    T1 
 CLE1     LDN    0           CLEAR SECTOR BUFFER
          STM.   BFMS+1,T1
          SOD    T1 
          NJN    CLE1        IF MORE TO CLEAR 
 CLE2     MJN    CLE3        IF NO SECTOR TO WRITE
          LDC    BFMS+WLSF   WRITE SECTOR 
          RJM.   WDS
          MJP    RRF3        IF WRITE ERROR 
          NFA    FA,R 
          ADN    FSTL        UPDATE FST INFORMATION 
          CWD    FS 
 CLE3     ENDMS              END MASS STORAGE OPERATION 
          LDN    CFIN        CLEAR FILE INTERLOCK OPTION
          STD    T1 
          SFA    FNT,T3      ABSOLUTE ADDRESS OF RESOURCE FILE FNT
          RJM    SFI         CLEAR RESOURCE FILE INTERLOCK
          UJP    CLEX        RETURN 
 PAU      SPACE  4,10 
**        PAU - PAUSE AND CHECK FOR OPERATOR OVERRIDE.
* 
*         EXIT   (A) = (T1) = 0.
* 
*         ERROR  TO *RTRX* IF OPERATOR OVERRIDE ERROR FLAG. 
* 
*         USES   T1.
* 
*         MACROS DELAY, PAUSE.
  
  
 PAU      SUBR               ENTRY/EXIT 
          LDN    20          DELAY TWO MILLISECONDS 
          STD    T1 
 PAU1     SOD    T1 
          ZJN    PAUX        IF END OF DELAY
          DELAY 
          PAUSE 
          LDD    CM+1 
          LMN    ORET 
          NJN    PAU1        IF NOT OPERATOR OVERRIDE 
          LJM    RTRX        EXIT 
          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,ZRTL 
  
          END 
