1MU 
          IDENT  1MU,IMU
          PERIPH
          BASE   MIXED
          SST 
*COMMENT  1MU - MAGNET AUXILIARY PROCESSOR. 
          COMMENT COPYRIGHT CONTROL SYSTEMS INC. 1993.
          TITLE  1MU - MAGNET AUXILIARY PROCESSOR.
          SPACE  4
***       1MU - MAGNET AUXILIARY PROCESSOR. 
*         G. S. YODER.       93/09/23.
          SPACE  4
***       *1MU* PERFORMS FUNCTIONS FOR MAGNET THAT DO NOT REQUIRE 
*         HARDWARE ACCESS TO TAPE UNITS.
          SPACE  4
***       CALL. 
* 
* 
*T RA+1   18/  *1MU*,1/0,5/ CP,36/  0 
          SPACE  4
**        ASSEMBLY CONSTANTS. 
  
  
 QUAL$    EQU    1           DEFINE UNQUALIFIED COMMON DECKS
          SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
          QUAL   ATF
*CALL     COMSATF 
          QUAL   *
*CALL     COMSCPS 
          QUAL   DFS
 QUAL$S   EQU    1           DO NOT QUALIFY *COMSDFS* 
*CALL     COMSDFS 
          QUAL   *
*CALL     COMSEJT 
*CALL     COMSEVT 
*CALL     COMSMSP 
          LIST   X
          QUAL   MTX
*CALL     COMSMTX 
          QUAL   *
          LIST   *
*CALL     COMSPFM 
*CALL     COMSPIM 
          QUAL   RSX
*CALL     COMSRSX 
          QUAL   *
*CALL     COMSSSD 
*CALL     COMSSRU 
*CALL     COMSZOL 
          SPACE  4
**        DIRECT LOCATION ASSIGNMENTS.
  
  
 T8       EQU    16          TEMPORARY
 T9       EQU    17          TEMPORARY
 CN       EQU    20 - 24     CENTRAL MEMORY BUFFER
 ED       EQU    25          EQUIPMENT DESCRIPTION
 HP       EQU    26          HARDWARE PARAMETERS
 EO       EQU    27          EST ORDINAL
 ES       EQU    30          EXTENDED STATUS
 DS       EQU    31          DEVICE STATUS
 EI       EQU    32          ERROR ITERATIONS 
 WP       EQU    33          BID WINDOW POINTER (MTS/ATS) 
 BL       EQU    34 - 35     BLOCK COUNT
 UP       EQU    36          USER OPTIONS, FLAGS
 LG       EQU    37 - 40     LENGTH OF LAST GOOD RECORD 
 EP       EQU    41 - 42     ERROR PARAMETERS 
 EC       EQU    43          ERROR CODE 
 LT       EQU    44          LABEL TYPE, DEVICE TYPE, REQUESTED DENSITY 
 SP       EQU    45          SOFTWARE OPTIONS 
 FM       EQU    46          TAPE FORMAT AND NOISE BYTE DEFINITION
 WC       EQU    47          CM WORDS PER PRU 
 OV       EQU    50          CHUNK COUNT - LONG BLOCKS
 FO       EQU    51          FAST ATTACH FILE FNT ORDINAL 
 AM       EQU    52          FAST ATTACH FILE ACCESS MODE 
 RI       EQU    53 - 54     RANDOM INDEX 
 FA       EQU    57          LOCAL FNT ADDRESS
 RS       EQU    60          RETURN STATUS
 FN       EQU    61          FUNCTION NUMBER
 MD       EQU    62          DRIVER MODE FUNCTION 
 PA       EQU    63          PARAMETER
 PB       EQU    64          PARAMETER
          TITLE  MACROS.
**        OVERLAY CONTROL DEFINITIONS.
          NOREF  .I 
          NOREF  .N 
 .I       SET    /MTX/MDFN*2
 .N       SET    0
 OVLB     MICRO  1,, 3M      BASE OVERLAY NAME
 ENTRY    SPACE  4,10 
**        ENTRY - DEFINE OVERLAY ENTRY POINT. 
* 
* 
*         ENTRY  NAME 
  
  
          PURGMAC ENTRY 
  
 ENTRY    MACRO  NAME 
          QUAL
 NAME     EQU    *+1R".M"*10000 
          QUAL   ".O" 
          ENDM
 FCN      SPACE  4,10 
**        FCN - DEFINE FUNCTION PROCESSOR.
* 
* 
*         FCN    NAME,FUN 
* 
*         ENTRY  *NAME* = NAME OF FUNCTION PROCESSOR. 
*                *FUN* = *COMSMTX* FUNCTION CODE. 
  
  
 FCN      MACRO  A,B
          LOC    .I/2 
          ERRNZ  .I/2-B      ERROR IN FUNCTION PROCESSOR DEFINITION 
          CON    A/10000,A-A/10000*10000
 .I       SET    .I+2 
          ENDM
 OVERLAY  SPACE  4
**        OVERLAY - GENERATE OVERLAY CONSTANTS. 
* 
* 
*         OVERLAY (TEXT)
  
  
          PURGMAC OVERLAY 
  
 OVERLAY  MACRO  TEXT 
          QUAL
 .N       SET    .N+1 
 .M       MICRO  .N,1, 56789
 .O       MICRO  1,3, "OVLB"".M"
          QUAL   ".O" 
          TTL    1MU/".O" - TEXT
          TITLE 
          IDENT  ".O",OVL    TEXT 
*COMMENT  1MU - TEXT
          COMMENT COPYRIGHT   CONTROL DATA SYSTEMS INC. 1993. 
          ORG    OVL
          LJM    *
          UJN    *-2
          ENDM
          TITLE  MAIN ROUTINES. 
**        1MU - MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 IMU      RJM    PRS         PRESET 
          RJM    UUF         UPDATE UNIT FLAGS
          RJM    CSJ         CHECK STAGING JOBS 
          RJM    UDT         PROCESS UDT REQUESTS 
          LDN    ZERL 
          CRD    CM 
          LDD    RA          CLEAR *1MU* ACTIVE 
          SHN    6
          ADK    /MTX/APS 
          CWD    CM 
          MONITOR  DPPM      DROP PP
          LJM    PPR         RETURN TO PP RESIDENT
 UDT      SPACE  4,10 
**        UDT - PROCESS UDT REQUESTS. 
* 
*         ENTRY  (UDTA) = ADDRESS OF FIRST UDT ENTRY. 
* 
*         EXIT   (UDTA) = ADDRESS OF FIRST UDT ENTRY. 
* 
*         CALLS  AUA, UAD.
  
  
  
 UDT      SUBR               ENTRY/EXIT 
          UJN    UDT6        CHECK  FIRST UNIT
  
*         NORMAL COMPLETION EXIT. 
  
 UDT1     LDN    /MTX/NCP    SET NORMAL COMPLETION
          UJN    UDT4        SET COMPLETION STATUS
  
*         REQUEUE ON JOB ROLLED OUT EXIT. 
  
 UDT2     LDN    /MTX/RJB    SET REQUEUE ON JOB ROLLED OUT
          UJN    UDT4        SET COMPLETION STATUS
  
*         ERROR RETURN EXIT.
  
 UDT3     LDN    /MTX/ERR    SET ERROR STATUS 
  
*         SET REQUEST STATUS EXIT.
  
 UDT4     STD    RS          SET REQUEST STATUS 
  
*         UPDATE UDT. 
  
          LDN    0           DO NOT COMPLETE FET
          RJM    RCP         RETURN TO MAGNET CP
          RJM    UAD
          ADK    /MTX/UST2   UPDATE UDT PARAMETERS
          CWM    EI,TR
          CWM    DNCV,ON
          ADK    /MTX/UXRQ-/MTX/UST5-1  SET RESPONSE STATUS 
          CWD    RS 
  
*         CHECK NEXT UNIT.
  
 UDT5     RJM    AUA         ADVANCE UDT ADDRESS
          ZJN    UDTX        IF END OF UNITS
 UDT6     RJM    UAD
          ADK    /MTX/UXRQ   GET REQUEST
          CRD    RS 
          LDD    RS 
          NJN    UDT5        IF REQUEST IN PROGRESS OR COMPLETE 
          LDD    FN 
          LPN    77 
          SBN    /MTX/MDFN
          MJN    UDT5        IF NO REQUEST OR *1MT* REQUEST 
          SHN    1           SET *TFCN* INDEX 
          STD    CN 
          SBN    /MTX/MFUN*2-/MTX/MDFN*2
          PJN    UDT5        IF NOT *1MU* REQUEST 
  
*         PROCESS REQUEST.
  
          LDN    /MTX/RIP    SET REQUEST IN PROGRESS FOR RECOVERY 
          STD    RS 
          RJM    UAD
          ADK    /MTX/UXRQ   UPDATE REQUEST STATUS
          CWD    RS 
          ADK    /MTX/UST1-/MTX/UXRQ  SET UDT CELLS 
          CRM    ED,TR
          CRD    LT 
          ADK    /MTX/UST5-/MTX/UST4
          CRM    DNCV,ON
          LDM    TFCN,CN     SET OVERLAY NAME 
          ADC    2L"OVLB" 
          RJM    EXR         LOAD OVERLAY 
          LDM    TFCN+1,CN   SET ENTRY ADDRESS
          STD    T1 
          LJM    0,T1        PROCESS REQUEST
  
  
 TFCN     BSS    0
  
          FCN    CUF,/MTX/CUF  COMPLETE USER FET
          FCN    MAB,/MTX/MAB  ISSUE MESSAGE AND ABORT REQUEST
          FCN    CJE,/MTX/CJE  CHECK JOB ERROR FLAG 
          FCN    PAF,/MTX/AFN  AUXILIARY PROCESSOR FUNCTION 
  
          LOC    *O 
  
 NCPX     EQU    UDT1        NORMAL COMPLETION EXIT 
 RJBX     EQU    UDT2        REQUEUE ON JOB ROLLED OUT EXIT 
 ERRX     EQU    UDT3        ERROR RETURN EXIT
 SRSX     EQU    UDT4        SET REQUEST STATUS EXIT
          TITLE  SUBROUTINES. 
 AUA      SPACE  4,10 
**        AUA - ADVANCE UDT ADDRESS.
* 
*         ENTRY  (UDTA) = CURRENT UDT ADDRESS.
* 
*         EXIT   (A) .NE. 0 IF NOT LAST UDT ON ENTRY. 
*                (A) = 0 IF LAST UDT ON ENTRY.
*                (UDTA) = NEXT UDT ADDRESS IF NOT LAST UDT ON ENTRY.
*                (UDTA) = FIRST UDT ADDRESS IF LAST UDT ON ENTRY. 
  
  
 AUA      SUBR               ENTRY/EXIT 
          LDK    /MTX/UNITL 
          RAM    UDTA 
          LMC    0
 AUAA     EQU    *-1         (UDT LWA+1)
          NJN    AUAX        IF NOT END OF UDT
          LDC    0           SET TO FIRST ENTRY 
 AUAB     EQU    *-1         (UDT FWA)
          STM    UDTA 
          LDN    0           SET END OF UDT 
          UJN    AUAX        RETURN 
 CCP      SPACE  4,10 
**        CCP - CHANGE TO USER CONTROL POINT. 
* 
*         EXIT   (A) = 0 IF CHANGE MADE.
*                (A) .NE. 0 IF CHANGE NOT MADE. 
* 
*         USES   CM - CM+4, CN - CN+4, T1 - T1+4. 
* 
*         CALLS  UAD. 
* 
*         MACROS MONITOR. 
  
  
 CCP      SUBR               ENTRY/EXIT 
          RJM    UAD
          ADK    /MTX/UVRI   GET EJT ORDINAL
          CRD    CN 
          SFA    EJT,CN 
          ADK    JSNE 
          CRD    CM          GET JOB STATUS 
          ADK    SCHE-JSNE
          CRD    T1          GET CP NUMBER
          LDD    CM+4 
          LPC    176
          LMN    EXJS*2 
          NJN    CCPX        IF JOB ROLLED OUT OR INTERLOCKED 
          LDD    T1+3        SET CP NUMBER
          ADK    RCMS+ALCS   SET MOVE REJECT AND ALTERNATE CP 
          STD    CM+1 
          MONITOR  CCAM      SET ACCESS TO USER CP
          LDD    CM+1 
          NJN    CCPX        IF CHANGE NOT MADE 
          AOM    RCPB        SET USER CP FLAG 
          LDD    CP 
          ADK    TFSW        VERIFY JOB EJT ORDINAL 
          CRD    CM 
          LDD    CM 
          LMD    CN 
          ZJN    CCP1        IF CORRECT JOB 
          LDN    0
          RJM    RCP         RETURN TO MAGNET CP
          LDN    1           SET CHANGE NOT MADE
 CCP1     LJM    CCPX        RETURN 
 HNG      SPACE  4,10 
**        HNG - HANG PP ON SYSTEM ERROR.
* 
*         MACROS MONITOR. 
  
  
 HNG      SUBR               ENTRY
 HNG1     MONITOR  HNGM      HANG PP
          UJN    HNG1        HANG PP
 RCP      SPACE  4,15 
**        RCP - UPDATE ACCOUNTING AND RETURN TO MAGNET CONTROL POINT. 
* 
*         ENTRY  (A) = FET COMPLETION STATUS IF .NE. 0. 
*                (A) = 0 IF NOT TO COMPLETE FET.
*                (RCPA) = SRU INCREMENT.
*                (RCPC) = BLOCKS SKIPPED COUNT. 
* 
*         EXIT   (RCPA) = 0.
*                (RCPC) = 0.
* 
*         USES   CM+1 - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RCP      SUBR               ENTRY/EXIT 
          STD    CM+4        SET FET COMPLETION STATUS
          SHN    -14
          LMC    0           SET SRU INCREMENT
 RCPA     EQU    *-1         (SRU INCREMENT)
          STD    CM+3 
 RCPB     LDN    0
*         LDN    1           (ASSIGNED TO USER CP)
          ZJN    RCPX        IF NOT AT USER CP
          LDM    UDTA        SET UDT ADDRESS
          STD    CM+1 
          LDC    0           SET BLOCKS SKIPPED 
 RCPC     EQU    *-1         (BLOCKS SKIPPED) 
          STD    CM+2 
          MONITOR  TIOM      CHANGE TO MAGNET CP
*         LDN    0
          STM    RCPA        CLEAR SRU INCREMENT
          STM    RCPC        CLEAR BLOCKS SKIPPED 
          SOM    RCPB        CLEAR USER CP FLAG 
          UJN    RCPX        RETURN 
 UAD      SPACE  4,10 
**        UAD - SET UDT ADDRESS.
* 
*         ENTRY  (UDTA) = UDT RELATIVE ADDRESS. 
* 
*         EXIT   (A) = UDT ABSOLUTE ADDRESS.
  
  
 UAD      SUBR               ENTRY/EXIT 
          LDD    RA 
          SHN    6
          ADC    0           SET UDT ADDRESS
 UDTA     EQU    *-1         (UDT ADDRESS)
          UJN    UADX        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
 EJT$     EQU    1           ASEMBLE EJT PROCESSOR
 FNT$     EQU    1           ASSEMBLE SYSTEM FNT PROCESSOR
 IFP$     EQU    1           ASSEMBLE REMOTE INITIALIZATION CODE
*CALL     COMPGFP 
          SPACE  4,10 
**        UDT DATA. 
  
  
*         *UST5*. 
  
 DNCV     BSS    1           DENSITY AND CONVERSION MODE
 ERSC     BSS    1           ERROR SUB-CODE 
          BSS    3           RESERVED 
  
  
          USE    OVERLAY
  
 OVL      EQU    *+10        OVERLAY ORIGIN ADDRESS 
          TITLE  ROUTINES OVERLAID BY FUNCTION PROCESSORS.
 PRS      SPACE  4,10 
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   TO *PPR* IF NOT CALLED BY MAGNET.
*                (UDTA) = FIRST UDT ADDRESS.
* 
*         CALLS  IFP. 
* 
*         MACROS MONITOR. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADK    JCIW 
          CRD    CM 
          LDD    CM+2 
          LMC    MTSI 
          ZJN    PRS1        IF CALLED BY MAGNET
          LDC    PRSA        * 1MU INCORRECT CALL.* 
          RJM    DFM
          MONITOR  ABTM 
          LJM    PPR         EXIT TO PPR
  
 PRS1     RJM    IFP         INITIALIZE FILE PROCESSORS 
          LDD    RA 
          SHN    6
          ADK    /MTX/UBUF   GET UDT POINTERS 
          CRD    CM 
          LDD    CM+4        SET UDT FWA
          STM    AUAB 
          STM    UDTA 
          LDD    CM+2        SET UDT LWA+1
          STM    AUAA 
          LJM    PRSX        RETURN 
  
  
 PRSA     DATA   C* 1MU INCORRECT CALL.*
 CCA      SPACE  4,15 
**        CCA - CHECK CHANNEL ACCESS. 
* 
*         ENTRY  (A) = CHANNEL BYTE FROM EST ENTRY. 
*                (T8) = UNIT FLAG MASK. 
*                (T9) = UNIT FLAG BYTE INDEX. 
*                (CN - CN+4) = EST ENTRY *EQAE* WORD. 
* 
*         EXIT   UNIT FLAG SET IN *TUAC* IF UNIT ACCESSIBLE ON CHANNEL. 
*                (CM+3) = 0 IF UNIT ACCESSIBLE ON CHANNEL.
*                (CN - CN+4) = EST ENTRY *EQAE* WORD. 
* 
*         USES   CM+3, T1.
  
  
 CCA      SUBR               ENTRY/EXIT 
          STD    T1          SAVE CHANNEL BYTE
          SHN    -11
          LMN    4
          NJN    CCAX        IF NO CHANNEL ACCESS 
          STD    CM+3        INDICATE UNIT ACCESSIBLE 
          LDD    T1          SET CHANNEL NUMBER 
          LPN    37 
          STD    T1 
          LDM    TUAA,T1     GET *TUAC* ADDRESS 
          ADD    T9          SET BYTE ADDRESS 
          STD    T1 
          LDD    T8          SET UNIT FLAG IN *TUAC*
          RAI    T1 
          UJN    CCAX        RETURN 
 CES      SPACE  4,20 
**        CES - CHECK EQUIPMENT STATUS. 
* 
*         ENTRY  (T8) = UNIT FLAG MASK. 
*                (T9) = UNIT FLAG BYTE INDEX. 
*                (UDTA) = UDT ADDRESS.
* 
*         EXIT   UNIT FLAG SET IN *TUAC* ENTRIES FOR CHANNELS WITH
*                  ACCESS TO UNIT.
*                UNIT FLAG SET IN *ACCM* IF UNIT ACCESSIBLE ON CHANNEL. 
*                UNIT FLAG SET IN *ASGM* IF UNIT AVAILABLE FOR
*                  ASSIGNMENT.
*                UNIT FLAG SET IN *JBRO* IF JOB ROLLED OUT. 
* 
*         USES   CM - CM+4, CN - CN+4.
* 
*         CALLS  CCA, UAD.
* 
*         MACROS MONITOR, SFA.
  
  
 CES      SUBR               ENTRY/EXIT 
  
*         GET UDT AND EST INFORMATION.
  
          RJM    UAD
          ADK    /MTX/UXRQ   GET PP REQUEST 
          CRD    RS 
          ADK    /MTX/UST1-/MTX/UXRQ  GET EST ORDINAL 
          CRD    ED 
          ADK    /MTX/UVRI-/MTX/UST1  GET ASSIGNED EJT ORDINAL
          CRD    CN 
          SFA    EST,EO 
          ADK    EQDE        GET CHANNEL STATUS 
          CRD    CM 
  
*         CHECK UNIT ACCESSIBILITY. 
  
          LDD    CM 
          LPN    3
          LMN    DWES 
          ZJN    CES3        IF UNIT *DOWN* 
          LDD    CM+1 
          RJM    CCA         CHECK PRIMARY CHANNEL ACCESS 
          LDD    HP 
          SHN    21-7 
          PJN    CES1        IF NOT CTS UNIT
          LDD    CM+3 
          ZJN    CES2        IF UNIT ACCESSIBLE ON PRIMARY CHANNEL
 CES1     LDD    CM+2 
          RJM    CCA         CHECK SECONDARY CHANNEL ACCESS 
          LDD    CM+3 
 CES2     ZJN    CES5        IF UNIT ACCESSIBLE 
 CES3     LDD    RS 
          NJN    CES4        IF REQUEST IN PROGRESS OR COMPLETE 
          LDD    FN 
          LPN    77 
          ZJN    CES4        IF NO REQUEST
          SBN    /MTX/MDFN
          PJN    CES4        IF NOT *1MT* REQUEST 
  
*         REQUEUE *1MT* REQUEST ON INACCESSIBLE UNIT. 
  
          LDM    UDTA        SET UDT ADDRESS
          STD    CM+1 
          LDN    0           DO NOT CHECK UNIT BUSY 
          STD    CM+2 
          MONITOR  TDRM      SET REQUEST IN PROGRESS
          LDD    CM+4 
          ZJN    CES6        IF REQUEST NOT INTERLOCKED 
          RJM    UAD
          ADK    /MTX/UXRQ   GET REQUEST
          CRD    RS 
          LDK    /MTX/RAC    SET REQUEUE ON INACCESSIBLE UNIT 
          STD    RS 
          RJM    UAD
          ADK    /MTX/UXRQ   REQUEUE REQUEST
          CWD    RS 
 CES4     UJN    CES6        UPDATE JOB STATUS
  
*         SET UNIT ACCESSIBLE.
  
 CES5     LDD    T8          SET UNIT ACCESSIBLE
          RAM    ACCM,T9
          LDD    CM 
          LPN    3
          LMK    ONES 
          NJN    CES6        IF UNIT NOT *ON* 
          LDD    T8          SET UNIT ASSIGNABLE
          RAM    ASGM,T9
  
*         CHECK JOB STATUS. 
  
 CES6     SFA    EJT,CN      GET JOB STATUS FROM EJT
          ADK    JSNE 
          CRD    CM 
          LDD    CM+4 
          LPN    77 
          LMN    EXJS*2 
          ZJN    CES7        IF JOB EXECUTING OR UNIT NOT ASSIGNED
          LDD    T8          SET JOB ROLLED OUT 
          RAM    JROM,T9
 CES7     LJM    CESX        RETURN 
 CSJ      SPACE  4,15 
**        CSJ - CHECK STAGING JOBS. 
* 
*         USES   CM - CM+4, CN - CN+4, T0 - T7. 
* 
*         CALLS  STM. 
  
  
 CSJ      SUBR               ENTRY/EXIT 
          LDD    RA          READ STAGE POINTER WORD
          SHN    6
          ADN    /MTX/TAJP
          CRD    T3 
          LDD    T3          CHECK FOR ENTRIES
          STD    T5          (T5) = ENTRIES LEFT, (T6-T7) = FWA TABLE 
  
*         PROCESS NEXT ACTIVE STAGE JOB TABLE ENTRY.
  
 CSJ1     SOD    T5          DECREMENT COUNT
          MJN    CSJX        IF PROCESSED ALL ENTRIES 
          LDD    T6 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    T7 
          ADD    T5 
          CRD    CN          READ ACTIVE STAGE JOB TABLE ENTRY
          LDD    CN 
          ZJN    CSJ1        IF NO ENTRY PRESENT
  
*         SEARCH INPUT QUEUE FOR JOB. 
  
          LDK    QFTP        SEARCH INPUT QUEUE FOR JOB 
          CRD    T0          READ TABLE POINTER 
 CSJ2     SOD    T2          DECREMENT OFFSET 
          MJN    CSJ4        IF ALL ENTRIES CHECKED 
          LDN    QFTE        ADVANCE QFT ADDRESS
          RAD    T1 
          SHN    -14
          RAD    T0 
          SHN    14 
          LMD    T1 
          ADK    JSNQ 
          CRD    CM          READ JSN AND QUEUE TYPE
          LDD    CM+4 
          SHN    -11
          LMK    INQT 
          NJN    CSJ2        IF NOT INPUT QUEUE FILE
          LDD    CM 
          LMD    CN 
          NJN    CSJ2        IF NO MATCH
          LDD    CM+1 
          LMD    CN+1 
          NJN    CSJ2        IF NO MATCH
 CSJ3     UJN    CSJ1        JOB FOUND IN INPUT QUEUE 
  
*         SEARCH EJT FOR JOB. 
  
 CSJ4     LDK    EJTP        SEARCH EJT FOR JOB 
          CRD    T0          READ TABLE POINTER 
 CSJ5     SOD    T2          DECREMENT OFFSET 
          MJN    CSJ6        IF ALL ENTRIES CHECKED 
          LDN    EJTE        ADVANCE EJT ADDRESS
          RAD    T1 
          SHN    -14
          RAD    T0 
          SHN    14 
          LMD    T1 
          ADK    JSNE 
          CRD    CM          READ JSN 
          LDD    CM 
          LMD    CN 
          NJN    CSJ5        IF NO MATCH
          LDD    CM+1 
          LMD    CN+1 
          NJN    CSJ5        IF NO MATCH
          UJN    CSJ3        ENTRY FOUND IN EJT 
  
*         JOB MISSING, INFORM MAGNET. 
  
 CSJ6     LDD    CN          SET JSN
          STD    CM+1 
          LDD    CN+1 
          STD    CM+2 
          LDN    /MTX/TJE    SET TERMINATE JOB TABLE ENTRY
          STD    CM 
          LDN    0
          STD    CM+3 
          LDN    1
          STD    CM+4 
          RJM    STM         SEND *TDAM* TO MAGNET
          LJM    CSJX        RETURN 
 STM      SPACE  4,15 
**        STM - SEND *TDAM* TO *MAGNET*.
* 
*         ENTRY  (CM - CM+4) = *MAGNET* REQUEST WORD. 
* 
*         EXIT   (A) = 0, IF REQUEST COMPLETED. 
*                (A) .NE. 0, IF *TDAM* WRITE REJECT.
*                TO *PNR5* IF ERROR FLAG DETECTED.
* 
*         USES   CM+1 - CM+4. 
* 
*         MACROS DELAY, MONITOR, PAUSE. 
  
  
 STM      SUBR               ENTRY/EXIT 
          LDD    MA          WRITE REQUEST TO MESSAGE BUFFER
          CWD    CM 
 STM1     LDN    1           SET WRITE FUNCTION 
          STD    CM+1 
          LDC    MTSI        SET *MAGNET* SUBSYSTEM IDENTIFICATION
          STD    CM+2 
          LDD    HN          SET WORD COUNT 
          STD    CM+3 
          LDK    /MTX/RCAL   SET ADDRESS OF *RESEX* REQUEST BUFFER
          STD    CM+4 
          MONITOR  TDAM 
          LDD    CM+1 
          ZJN    STMX        IF NO ERROR
          SBN    4
          ZJN    STMX        IF *MAGNET* NOT ACTIVE (IGNORE)
          ADN    -1+4 
          NJN    STMX        IF ERROR OTHER THAN STORAGE MOVE (IGNORE)
          DELAY 
          PAUSE 
          LDD    CM+1 
          ZJN    STM1        IF ERROR FLAG NOT SET
          LJM    STMX        RETURN 
 UUF      SPACE  4,15 
**        UUF - UPDATE UNIT FLAGS.
* 
*         ENTRY  (UDTA) = FIRST UDT ADDRESS.
* 
*         EXIT   UNIT STATUS FLAGS RETURNED TO MAGNET.
*                CHECK UNIT ACTIVITY FLAG SET IF CHANGE IN UNIT STATUS. 
*                REQUEST REQUEUED ON INACCESSIBLE UNITS WITH *1MT*
*                  REQUESTS.
*                (UDTA) = FIRST UDT ADDRESS.
* 
*         USES   T1, T2, T3, T8, T9, CM - CM+4. 
* 
*         CALLS  AUA, CES.
  
  
 UUF      SUBR               ENTRY/EXIT 
  
*         INITIALIZE *TUAA* TABLE AND UNIT MASK.
  
          LDK    /MTX/CST    INITIALIZE CST ADDRESS 
          STD    T1 
          LDK    TUAC        INITIALIZE *TUAC* ADDRESS
          STD    T2 
 UUF1     LDD    RA          SET CST ADDRESS
          SHN    6
          ADD    T1 
          ADK    /MTX/CPST   READ CHANNEL NUMBER
          CRD    CM 
          LDD    CM+4 
          ZJN    UUF2        IF END OF CHANNELS 
          LDD    CM+3        SET CHANNEL NUMBER 
          LPN    37          SET CHANNEL NUMBER 
          STD    T3 
          LDD    T2          SET *TUAC* ADDRESS 
          STM    TUAA,T3
          LDN    /MTX/CSTE   ADVANCE CST ADDRESS
          RAD    T1 
          LDN    5           ADVANCE *TUAC* ADDRESS 
          RAD    T2 
          UJN    UUF1        CHECK NEXT CST ENTRY 
  
 UUF2     STD    T9          INITIALIZE UNIT FLAG BYTE INDEX
          LDC    4000        INITIALIZE UNIT FLAG MASK
          STD    T8 
  
*         CHECK UNIT. 
  
 UUF3     RJM    CES         CHECK EQUIPMENT STATUS 
          RJM    AUA         ADVANCE UDT ADDRESS
          ZJN    UUF5        IF ALL UNITS CHECKED 
          LDD    T8          ADVANCE UNIT MASK
          SHN    -1 
          NJN    UUF4        IF NOT END OF BYTE 
          AOD    T9          ADVANCE BYTE INDEX 
          LDC    4000        RESET MASK FOR NEW BYTE
 UUF4     STD    T8 
          UJN    UUF3        CHECK NEXT UNIT
  
*         RETURN UNIT FLAGS TO MAGNET.
  
 UUF5     LDK    /MTX/CST+/MTX/CUAC  INITIALIZE *CUAC* ADDRESS
          STD    T1 
 UUF6     LDD    RA          SET *CUAC* ADDRESS 
          SHN    6
          ADD    T1 
          CWM    TUAC,ON     UPDATE ACCESS FLAGS
 UUFA     EQU    *-1         (*TUAC* ADDRESS) 
          LDN    5           ADVANCE *TUAC* ADDRESS 
          RAM    UUFA 
          LDK    /MTX/CSTE   ADVANCE *CUAC* ADDRESS 
          RAD    T1 
          LMC    /MTX/CST+/MTX/MCHAN*/MTX/CSTE+/MTX/CUAC
          NJN    UUF6        IF MORE CHANNELS TO PROCESS
          LDD    RA 
          SHN    6
          ADK    /MTX/ACCU
          CRD    CM          GET PREVIOUS ACCESSIBLE UNITS
          CWM    ACCM,ON     UPDATE ACCESSIBLE UNITS
          ADK    /MTX/ASGU-/MTX/ACCU-1
          CRD    CN          GET PREVIOUS ASSIGNABLE UNITS
          CWM    ASGM,ON     UPDATE ASSIGNABLE UNITS
          ADK    /MTX/JBRO-/MTX/ASGU-1
          CWM    JROM,ON     UPDATE JOB STATUS FLAGS
          LDD    CM 
          LMM    ACCM 
          NJN    UUF7        IF CHANGE IN UNIT STATUS 
          LDD    CM+1 
          LMM    ACCM+1 
          NJN    UUF7        IF CHANGE IN UNIT STATUS 
          LDD    CN 
          LMM    ASGM 
          NJN    UUF7        IF CHANGE IN UNIT STATUS 
          LDD    CN+1 
          LMM    ASGM+1 
          ZJN    UUF8        IF NO CHANGE IN UNIT STATUS
 UUF7     LDN    ZERL 
          CRD    CM 
          LDC    4000 
          STD    CM 
          LDD    RA 
          SHN    6
          ADK    /MTX/CUAF   SET CHECK UNIT ACTIVITY FLAG 
          CWD    CM 
 UUF8     LJM    UUFX        RETURN 
 TUAA     SPACE  4,10 
**        TUAA - TABLE OF *TUAC* ADDRESSES INDEXED BY CHANNEL NUMBER. 
* 
*T,       12/ TADD
* 
*                TADD = ADDRESS OF *TUAC* ENTRY FOR CHANNEL.
  
 TUAA     BSSZ   40 
 TUAC     SPACE  4,10 
**        TUAC - *CUAC* WORDS OF *CST* IN *CST* ORDER.
* 
*T,       16/ UNITA,44/ 0 
* 
*                UNITA = MASK OF UNITS ACCESIBLE ON CHANNEL 
  
  
 TUAC     BSSZ   /MTX/MCHAN*5 
 USTB     SPACE  4,10 
**        USTB - UNIT STATUS FLAGS ASSEMBLY BUFFER. 
* 
*         BUFFER FOR MAGNET CELLS *ACCU*, *ASGU*, AND *JBRO*. 
  
 USTB     BSSZ   3*5
 ACCM     EQU    USTB        *ACCU* 
 ASGM     EQU    USTB+5      *ASGU* 
 JROM     EQU    USTB+2*5    *JBRO* 
  
  
 IFP      HERE               CODE TO INITIALIZE SYSTEM FNT PROCESSOR
          OVERLAY (CIO OPERATIONS.) 
          TITLE  COMPLETE USER FET. 
 CUF      SPACE  4,10 
**        CUF - COMPLETE USER FET.
*         COMPLETES THE FET AND HANDLES SPECIAL REQUIREMENTS
*         FOR CLOSE CODES.
* 
*T        12/ 0,12/ CUF,18/,18/ RETURN CODE 
* 
*         CALLS  CCR, CUL, CUP, PRS.
  
  
          ENTRY  CUF
          RJM    PRS         PRESET 
          LCN    1           SEARCH FOR SPECIAL PROCESSOR 
          STD    T1 
 CUF1     LDN    2
          RAD    T1 
          LDM    CUFB,T1
          ZJN    CUF2        IF END OF TABLE
          LMM    ECIO        COMPARE WITH I/O REQUEST 
          LPC    774
          NJN    CUF1        IF NO MATCH
          LDM    CUFB+1,T1   EXECUTE SPECIAL PROCESSOR
          STM    CUFA 
          RJM    *
 CUFA     EQU    *-1
 CUF2     LDD    PA          COMPLETE FET 
          LPN    77 
          SHN    14 
          LMD    PB 
          SCN    3           INSURE COMPLETE BIT SET
          ADN    1
          RJM    CCR         COMPLETE CIO REQUEST 
          LJM    NCPX        EXIT 
  
  
 CUFB     BSS    0           TABLE OF CIO CODES NEEDING SPECIAL CARE
          CON    170,CUL     CLOSE/UNLOAD 
          CON    174,CUL     CLOSE/UNLOAD 
          CON    330,CUP     CLOSER 
          CON    350,CUP     CLOSER 
          CON    370,CUP     CLOSER/UNLOAD
          CON    374,CUL     CLOSER/RETURN
          CON    0           END OF TABLE 
 CUL      SPACE  4,10 
**        CUL - CLOSE/UNLOAD PROCESSOR. 
* 
*         EXIT   TO *RET1*. 
* 
*         USES   FA, CM - CM+4, CN - CN+4.
* 
*         CALLS  CCR, FAD, HNG, *0DF*.
* 
*         MACROS EXECUTE. 
  
  
 CUL3     RJM    HNG         HANG 
  
 CUL      SUBR               ENTRY/EXIT 
          LDM    FNTA        SET FNT ADDRESS
          STD    FA 
          NFA    FA,R 
          ADK    FSTL 
          CRD    CN          GET TAPE FILE FST
          LDD    CN 
          LMD    EO 
          NJN    CUL3        IF EST ORDINAL NOT CORRECT 
          LDM    ECIO        SET RETURN/UNLOAD FLAG FOR *0DF* 
          SHN    -2 
          LPN    1
          LMN    1
          STM    B0DF-1 
          EXECUTE 0DF,B0DF   DROP FILE
          SHN    -14
          STD    T1          SAVE *0DF* STATUS
          LDN    0           SET STATUS WORD
          RJM    FAD         SET FET ADDRESS
          ZJN    CUL2        IF FET STATUS NOT IN FL
          CRD    CM          READ FET STATUS
          LDD    PA 
          LPN    77 
          SHN    14 
          LMD    PB 
          SCN    3
          ZJN    CUL1        IF SET COMPLETE BIT ONLY 
          LMD    CM+4        SET COMPLETION STATUS
          SCN    2
          LMD    CM+4 
          STD    CM+4 
          SHN    -14
          LMD    CM+3 
          LPN    77 
          LMD    CM+3 
          STD    CM+3 
 CUL1     LDD    CM+4        SET COMPLETE BIT 
          SCN    1
          LMN    1
          STD    CM+4 
          LDN    0           SET STATUS WORD
          RJM    FAD         SET FET ADDRESS
          CWD    CM          UPDATE FET STATUS
          LDN    0
 CUL2     RJM    CCR         UPDATE BLOCK COUNT AND RETURN TO MAGNET CP 
          LDN    ZERL 
          CRD    CM 
          LDK    /MTX/RTF    SET RETURN FILE REQUEST
          STD    CM 
          RJM    UAD
          ADK    /MTX/UFRQ
          CWD    CM 
          LJM    NCPX        EXIT 
 CUP      SPACE  4,10 
**        CUP - CHECK USER PROCESSING ON CLOSER.
* 
*         EXIT   (PA - PB) = UPDATED IF NEEDED. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  FAD. 
  
  
 CUP      SUBR               ENTRY/EXIT 
          LDM    FETO 
          SHN    21-11
          PJN    CUP1        IF UP NOT SELECTED 
          LDD    PA          CHECK ERROR CODE 
          LPN    3
          SHN    14 
          ADD    PB 
          SHN    -12
          NJN    CUPX        IF ERROR 
          LDM    ECIO        SET TO RETURN END OF REEL
          LPC    774
          LMC    2001 
          STD    PB 
          UJN    CUPX        RETURN 
  
 CUP1     LDD    LT 
          SHN    21-12
          PJN    CUPX        IF NOT LABELED 
          LDM    FETO 
          SHN    21-5 
          MJN    CUPX        IF EXTENDED LABELS 
          LDM    FETL 
          SHN    -6          FET LENGTH - 5 
          SBN    10 
          MJN    CUPX        IF FET NOT LONG ENOUGH FOR LABEL PORTION 
          LDN    14          SET WORD TO READ 
          RJM    FAD         SET FET ADDRESS
          ZJN    CUP3        IF ADDRESS NOT IN FL 
          CRD    CM          READ FET + 14
          AOD    CM+4 
          LPN    77 
          LMN    1R9+1
          NJN    CUP2        IF NO OVERFLOW 
          LDN    100-1R9-1+1R0
          RAD    CM+4 
          SHN    -6 
          LMN    1R9+1
          NJN    CUP2        IF NO OVERFLOW 
          LDC    -1R9*100-100+1R0*100 
          RAD    CM+4 
          AOD    CM+3 
          LPN    77 
          LMN    1R9+1
          NJN    CUP2        IF NO OVERFLOW 
          LDN    100-1R9-1+1R0
          RAD    CM+3 
 CUP2     LDN    14          SET WORD TO WRITE
          RJM    FAD         SET FET ADDRESS
          CWD    CM          UPDATE REEL NUMBER IN FET
 CUP3     LJM    CUPX        RETURN 
          TITLE  ABORT CIO REQUEST. 
 MAB      SPACE  4,25 
**        MAB - ISSUE MESSAGE AND ABORT REQUEST.
* 
* 
*T UXRQ   12/ 1,12/ MAB,12/,12/ PA,12/ PB 
* 
*         PB = *COMSMTX* ERROR CODE IF .NE. 0.
*         PB = 0 IF TO USE ERROR CODE IN UDT. 
*         PA = *COMSMTX* ERROR SUB-CODE IF *PB* IS ERROR CODE.
* 
*T, EXIT  12/ 2,12/ MAB,12/,12/ PA,12/ PB 
* 
*         PB = *COMSMTX* ERROR CODE USED IN ABORT PROCESSING. 
*         PA = ERROR SUB-CODE.
* 
*         CALLS  CCR, C2D, DFM, FAD, HNG, MFM, NWE, OPM, PRS, STM, TME, 
*                UAD, VAE.
* 
*         MACROS MONITOR. 
  
  
          ENTRY  MAB
          RJM    PRS         PRESET 
          LDD    PB 
          NJN    MAB1        IF ERROR CODE SPECIFIED IN CALL
          LDM    ERSC        SET SUB-CODE 
          STD    PA 
          LDD    EC          SET ERROR CODE 
          ZJN    MAB3        IF NO ERROR CODE 
          STD    PB 
 MAB1     SBN    /MTX/MERC
          MJN    MAB4        IF VALID ERROR CODE
 MAB3     RJM    HNG         HANG 
  
 MAB4     LDN    0           SET STATUS WORD
          RJM    FAD         CHECK FET ADDRESS
          NJN    MAB5        IF FET WITHIN FL 
          LDN    ZERL 
 MAB5     CRD    CN 
          LDD    CN+3        TERMINATE FILE NAME FOR MESSAGE ASSEMBLY 
          SCN    77 
          STD    CN+3 
          LDM    TUEM,PB     SET MESSAGE ADDRESS
          NJN    MAB6        IF DEFINED 
          LDD    PB 
          RJM    C2D
          STM    TERR+6 
          LDC    TERR        SET HARDWARE ERROR MESSAGE 
 MAB6     RJM    IDF         ISSUE MESSAGE
          LDM    TSPC,PB
          ZJN    MAB7        IF NO SPECIAL PROCESSOR
          STD    T1 
          RJM    0,T1 
 MAB7     LDD    BL 
          NJN    MAB8        IF NOT FIRST BLOCK 
          LDD    BL+1 
          SBN    2           0 OR 1 CONSIDERED FIRST BLOCK
          PJN    MAB8        IF NOT FIRST BLOCK 
          LDM    TAME,EC
          ZJN    MAB8        IF NO SPECIAL MESSAGE
          RJM    DFM
 MAB8     LDD    PB 
          LMN    /MTX/ERM 
          NJN    MAB9        IF NOT END OF REEL MESSAGE 
          LJM    NCPX        EXIT 
  
 MAB9     LDN    0           CLEAR ERROR PARAMETERS 
          STD    EP 
          STD    EI 
          LDD    HP 
          SHN    21-7 
          MJN    MAB10       IF CTS UNIT
          LDN    0
          STD    EP+1 
 MAB10    LDD    PB 
          SBN    /MTX/MFAT
          MJN    MAB11       IF FATAL USER ERROR
          SBN    /MTX/EFT-/MTX/MFAT 
          ZJN    MAB12       IF ERROR FLAG TERMINATION
          LDD    SP 
          SHN    21-0 
          MJN    MAB11       IF IGNORE EP SET 
          LDM    FETO 
          SHN    21-10
          MJN    MAB12       IF ERROR PROCESSING SET
          LDD    SP 
          SHN    21-1 
          PJN    MAB11       IF NOT ACCEPT DATA WITHOUT EP SET
          LDN    1           SET TO NOT RETURN ERROR CODE 
          STM    MABA 
          UJN    MAB12       DO NOT SET ERROR FLAG
  
 MAB11    LDN    PPET        SET ERROR FLAG 
          STD    CM+1 
          MONITOR  CEFM 
 MAB12    LDM    ECIO        CHECK EXTERNAL CIO CODE
          LPC    774
          LMC    200
          NJN    MAB13       IF NOT CONTROL WORD READ 
          LDM    MABA 
          LMN    1
          ZJN    MAB13       IF NOT RETURN ERROR CODE 
          LDM    LVLN        PRESERVE LEVEL NUMBER
          SHN    -6 
          LPN    74 
          RAM    MABA-1 
 MAB13    LDM    ECIO        GET EXTERNAL CIO CODE
          LPC    774
          LMC    4001 
 MABA     EQU    *-1         (FET COMPLETION STATUS)
          RJM    CCR         SET FET COMPLETE AND RETURN TO MAGNET CP 
  
*         CHECK FOR ERROR DURING *POSMF* REQUEST OR REEL SWAP.
  
          LDM    ECIO 
          LPC    774
          LMC    110
          NJN    MAB14       IF NOT *POSMF* REQUEST 
          LDD    UP          SET END OF SET STATUS
          LPC    7677 
          LMD    HN 
          STD    UP 
 MAB14    RJM    UAD
          ADK    /MTX/UVRI
          CRD    CN 
          ADK    /MTX/UFSN-/MTX/UVRI
          CRD    CM 
          LDD    CN+4 
          LPN    26 
          LMN    20 
          ZJN    MAB15       IF REEL ASSIGNED AND NOT END OF REEL 
          LDD    UP 
          SCN    40 
          LMN    40          SET FILE POSITION INDETERMINATE
          STD    UP 
 MAB15    LDD    CN+4 
          LPN    6
          ZJN    MAB17       IF NOT END OF REEL PROCESSING
          SHN    21-1 
          MJN    MAB16       IF NEXT VSN RETURNED 
          SOD    CN+3        DECREMENT REEL NUMBER
          UJN    MAB17       CLEAR FLAGS
  
 MAB16    AOD    CM+4        INCREMENT SECTION NUMBER 
          SHN    -14
          RAD    CM+3 
 MAB17    LDD    CN+4 
          SCN    17          CLEAR DISPLAY AND END OF REEL FLAGS
          STD    CN+4 
          RJM    UAD
          ADK    /MTX/UVRI
          CWD    CN 
          ADK    /MTX/UFSN-/MTX/UVRI
          CWD    CM 
          LJM    NCPX        EXIT 
 IDF      SPACE  4,10 
**        IDF - ISSUE DAYFILE MESSAGE WITH FILE NAME AND FET ADDRESS. 
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE.
*                (CN - CN+3) = FILE NAME. 
* 
*         EXIT   MESSAGE ISSUED TO DAYFILE. 
* 
*         USES   T1, T2.
* 
*         CALLS  ACS, ANS, DFM. 
  
  
 IDF      SUBR               ENTRY/EXIT 
          STD    T2          SAVE MESSAGE ADDRESS 
          LDC    BFMS        SET ASSEMBLY ADDRESS 
          STD    T1 
          LDN    0           INITIALIZE MESSAGE ASSEMBLY
          STI    T1 
          LDD    T2 
          RJM    ACS         ASSEMBLE MESSAGE TEXT
          LDN    CN 
          RJM    ACS         ASSEMBLE FILE NAME 
          LDC    =Z* AT * 
          RJM    ACS         ASSEMBLE * AT *
          LDM    FETA        SET FET ADDRESS
          SHN    6
          ADM    FETA+1 
          RJM    ANS         ASSEMBLE FET ADDRESS 
          LDC    =Z*.*
          RJM    ACS         ASSEMBLE MESSAGE TERMINATOR
          LDC    BFMS        ISSUE MESSAGE TO DAYFILE 
          RJM    DFM
          LJM    IDFX        RETURN 
 MFM      SPACE  4,10 
**        MFM - MULTI-FILE MISSING MESSAGE. 
* 
*         ENTRY  (LG) = REQUESTED FILE SECTION NUMBER.
*                (LG+1) = HIGHEST EXISTING FILE SECTION NUMBER. 
* 
*         EXIT   (LG - LG+1) = 0. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  C2D, DFM.
  
  
 MFM1     LDC    MFMD        SET FILE IDENTIFIER NOT FOUND
          STM    MFMA 
 MFM2     LDC    MFMC        * FOUND SECTION  NNNN.*
*         LDC    MFMD        * FILE IDENTIFIER NOT FOUND.*
 MFMA     EQU    *-1
          RJM    DFM
 MFM3     LDN    2           SET END OF SET ERROR STATUS
          RAM    MABA-1 
          LDC    1001 
          STM    MABA 
  
 MFM      SUBR               ENTRY/EXIT 
          LDD    PB          CHECK ERROR MESSAGE
          LMN    /MTX/IOS 
          ZJN    MFM3        IF INCORRECT OPERATION AT END OF SET 
          LDD    LG 
          ADD    LG+1 
          ZJP    MFM1        IF FILE IDENTIFIER NOT FOUND 
          LDD    LG          CONVERT REQUESTED FILE SECTION NUMBER
          SHN    -6 
          RJM    C2D
          STM    MFMB+12
          LDD    LG 
          RJM    C2D
          STM    MFMB+13
          LDD    LG+1        CONVERT FOUND FILE SECTION NUMBER
          SHN    -6 
          RJM    C2D
          STM    MFMC+10
          LDD    LG+1 
          RJM    C2D
          STM    MFMC+11
          LDC    MFMB        * REQUESTED SECTION  NNNN.*
          RJM    DFM
          LDN    0           CLEAR PARAMETERS 
          STD    LG 
          STD    LG+1 
          LJM    MFM2        ISSUE NEXT MESSAGE 
  
  
 MFMB     DATA   C* REQUESTED SECTION  0000.* 
 MFMC     DATA   C* FOUND SECTION  0000.* 
 MFMD     DATA   C* FILE IDENTIFIER NOT FOUND.* 
 NWE      SPACE  4,10 
**        NWE - NO WRITE ENABLE.
* 
*         CALLS  DFM, HNG.
  
  
 NWE1     RJM    HNG         HANG 
  
 NWE      SUBR               ENTRY/EXIT 
          LDD    PA 
          ZJN    NWE1        IF NO SUB-CODE 
          SBN    /MTX/MWSC
          PJN    NWE1        IF NOT VALID SUB-CODE
          LDM    TNWE,PA
          ZJN    NWEX        IF NO ADDITIONAL MESSAGE 
          RJM    DFM
          UJN    NWEX 
 OPM      SPACE  4,10 
**        OPM - OUTPUT MESSAGE ON OPEN PARAMETER ERROR. 
* 
*         ENTRY  (EP) = CHARACTER POSITION OF FIELD IN ERROR. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  DFM. 
* 
*         MACROS MONITOR. 
  
  
 OPM      SUBR               ENTRY/EXIT 
          LDN    ZERL        CONVERT DATA 
          CRD    CM 
          LDD    EP 
          STD    CM+4 
          LDD    MA 
          CWD    CM 
          MONITOR  RDCM 
          LDD    MA 
          CRD    CM 
          LDD    CM+4 
          STM    OPMA+12
          LDC    OPMA        * FIELD BEGINNING AT NN NO COMPARE.* 
          RJM    DFM
          UJN    OPMX        RETURN 
  
  
 OPMA     DATA   C* FIELD BEGINNING AT 00 NO COMPARE.*
 STM      SPACE  4,30 
**        STM - MTS/ATS STATUS ERROR DEFINTION. 
*         GIVES ADDITIONAL DESCRIPTION OF STATUS ERROR MESSAGE. 
* 
*         ISSUES ONE OF THE FOLLOWING MESSAGES FOR MTS. 
* 
*         UNIT HAS MOTION PROBLEMS. (SEVERE START ERROR)
*         SINGLE FRAME ERROR(S).
*         LRC ERROR(S). 
*         CRC ERROR(S). 
*         POSTAMBLE ERROR.
*         MULTI-TRACK PHASE ERROR.
*         INCORRECT CHARACTER.
*         PARITY ERROR. 
* 
*         ISSUES ONE OF THE FOLLOWING MESSAGES FOR ATS. 
* 
*         UNIT PROBLEMS. (UNIT CHECK) 
*         SINGLE FRAME ERROR. 
*         CRC ERROR.
*         INCORRECT CHARACTER.
*         PARITY ERROR. 
* 
*         USES   T1, T3.
* 
*         CALLS  DFM. 
  
  
 STM      SUBR               ENTRY/EXIT 
          LDD    HP 
          SHN    21-7 
          MJN    STMX        IF CTS 
          SHN    7-21 
          LPN    20 
          ZJN    STM1        IF MTS CONTROLLER
          LDN    ATSM-MTSM
 STM1     ADC    MTSM-2      SET ADDRESS OF MESSAGE TABLE 
          STD    T3 
 STM2     LDN    2           INCREMENT TO NEXT ENTRY
          RAD    T3 
          LDI    T3 
          ZJN    STM3        IF END OF TABLE
          SHN    14          POSITION INDEX INTO DETAILED STATUS
          STD    T1 
          SHN    6           SET CORRECT SHIFT
          LPN    77 
          LMC    SHNI 
          STM    STMA 
          LDM    DSTS,T1     CHECK BIT
 STMA     SHN    0
          PJN    STM2        IF BIT NOT SET IN STATUS BYTE
 STM3     AOD    T3          GET MESSAGE ADDRESS
          LDI    T3 
          RJM    DFM         ISSUE MESSAGE
          LJM    STMX        RETURN 
 TME      SPACE  4,10 
**        TME - TAPE MANAGER ERROR. 
* 
*         EXIT   END OF SET STATUS SET. 
*                *TFM* ERROR MESSAGE ISSUED.
* 
*         CALLS  DFM. 
  
  
 TME      SUBR               ENTRY/EXIT 
          LDD    UP          SET END OF SET FLAG
          LPC    7677 
          LMD    HN 
          STD    UP 
          LDC    TMMS 
          RJM    DFM         ISSUE MESSAGE
          UJN    TMEX        RETURN 
 VAE      SPACE  4,10 
**        VAE - ISSUE VSN ASSIGNMENT ERROR MESSAGE. 
* 
*         USES   T1, T3.
* 
*         CALLS  ACS, DFM.
  
  
 VAE      SUBR               ENTRY/EXIT 
          LDD    PB 
          LMN    /MTX/AME 
          ZJN    VAE1        IF ACS MOUNT ERROR 
          LDC    TRRJ&TACM
 VAE1     LMC    TACM        SET MESSAGE TEXT ADDRESS 
          ADD    PA 
          STD    T3 
          LDI    T3 
          ZJN    VAEX        IF NO MESSAGE
          LDC    BFMS        SET ASSEMBLY ADDRESS 
          STD    T1 
          LDN    0           INITIALIZE ASSEMBLY BUFFER 
          STI    T1 
          LDC    =Z* VSN *
          RJM    ACS         ASSEMBLE PREFIX
          LDC    EVSN 
          RJM    ACS         ASSEMBLE VSN 
          LDI    T3          SET MESSAGE TEXT ADDRESS 
          RJM    ACS         ASSEMBLE MESSAGE TEXT
          LDC    BFMS 
          RJM    DFM         ISSUE MESSAGE
          LJM    VAEX        RETURN 
 PROC     SPACE  4,10 
**        PROC - DEFINE MESSAGE PROCESSOR FOR MTS/ATS.
* 
*         PROC   INDEX,BIT,ADDR 
* 
*                *INDEX* = INDEX INTO MTS/ATS DETAILED STATUS.
*                *BIT* = BIT TO CHECK IN STATUS BYTE. 
*                *ADDR* = ADDRESS OF MESSAGE TO ISSUE IF BIT SET. 
  
  
 PROC     MACRO  IN,BIT,AD
          CON    IN*100+21-BIT,AD 
          ENDM
 MTSM     SPACE  4,10 
**        MTSM - MTS MESSAGE PROCESSOR TABLE. 
*         ENTRY = 2 WORDS.
* 
*T,       6/INDEX,6/SHIFT,12/ADDR 
* 
*         INDEX  INDEX INTO MTS/ATS DETAILED STATUS.
*         SHIFT  CORRECT SHIFT TO TEST DESIRED BIT. 
*         ADDR   ADDRESS OF MESSAGE TO ISSUE IF BIT SET.
  
  
 MTSM     BSS    0
          LOC    0
          PROC   1,13,(=C* UNIT HAS MOTION PROBLEMS.*)
          PROC   1,10,(=C* SINGLE FRAME ERROR.*)
          PROC   1,7,(=C* LRC ERROR.*)
          PROC   1,4,(=C* CRC ERROR.*)
          PROC   1,0,(=C* POSTAMBLE ERROR.*)
          PROC   3,11,(=C* MULTI-TRACK PHASE ERROR.*) 
          PROC   0,11,(=C* PARITY ERROR.*)
          PROC   2,5,(=C* INCORRECT CHARACTER.*)
          CON    0,=C* PARITY ERROR.*  END OF TABLE 
          LOC    *O 
 ATSM     SPACE  4,10 
**        ATSM - ATS MESSAGE PROCESSOR TABLE. 
*         ENTRY = 2 WORDS.
* 
*T,       6/INDEX,6/SHIFT,12/ADDR 
* 
*         INDEX  INDEX INTO MTS/ATS DETAILED STATUS.
*         SHIFT  CORRECT SHIFT TO TEST DESIRED BIT. 
*         ADDR   ADDRESS OF MESSAGE TO ISSUE IF BIT SET.
  
  
 ATSM     BSS    0
          LOC    0
          PROC   0,12,(=C* UNIT PROBLEMS.*) 
          PROC   2,7,(=C* CRC ERROR.*)
          PROC   2,10,(=C* CRC ERROR.*) 
          PROC   2,11,(=C* CRC ERROR.*) 
          PROC   2,6,(=C* SINGLE FRAME ERROR.*) 
          PROC   2,2,(=C* INCORRECT CHARACTER.*)
          PROC   0,11,(=C* PARITY ERROR.*)
          CON    0,=C* PARITY ERROR.*  END OF TABLE 
          LOC    *O 
 TACM     SPACE  4,10 
**        TACM - TABLE OF ACF RESPONSE MESSAGES FOR *AME* ERROR.
* 
*         INDEXED BY *COMSATF* RESPONSE CODE. 
  
  
 TACM     INDEX 
          INDEX  /ATF/NSA,(=Z* NOT IN REQUESTED ACS.*)
          INDEX  /ATF/URL,(=Z* UNREADABLE OPTICAL LABEL.*)
          INDEX  /ATF/VNL,(=Z* NOT IN ACS LIBRARY.*)
          INDEX  /ATF/MXFE
 TNWE     SPACE  4,10 
**        TNWE - TABLE OF MESSAGES FOR *NWE* ERROR. 
* 
*         INDEXED BY *NWE* SUB ERROR CODE.
  
  
 TNWE     INDEX 
          INDEX  /MTX/WTB,(=C* 200 BPI WRITE INCORRECT.*) 
          INDEX  /MTX/LNE,(=C* LABEL NOT EXPIRED.*) 
          INDEX  /MTX/MWSC
 TRRJ     SPACE  4,10 
**        TRRJ - TABLE OF MESSAGES FOR *RRJ* ERROR. 
* 
*         INDEXED BY *RRJ* SUB ERROR CODE.
  
  
 TRRJ     INDEX 
          INDEX  /MTX/WRD,(=Z* NOT WRITE ENABLED.*) 
          INDEX  /MTX/NLB,(=Z* NOT LABELED.*) 
          INDEX  /MTX/CAD,(=Z* CANNOT ACCESS FILE DATA.*) 
          INDEX  /MTX/WVS,(=Z* INTERNAL VSN MISMATCH.*) 
          INDEX  /MTX/MRSC
 TUEM     SPACE  4,10 
****      TUEM - TABLE OF USER ERROR MESSAGES.
*         ALL USER ERRORS ARE FATAL UNLESS THEY ARE ALSO CONTAINED
*         IN THE FOLLOWING TABLE. 
  
  
 TUEM     INDEX 
          INDEX  /MTX/BEI,(=Z* BOT/EOT ENCOUNTERED, *)
          INDEX  /MTX/ERM,(=Z* END OF TAPE, *)
          INDEX  /MTX/BTA,(=Z* BLANK TAPE, *) 
          INDEX  /MTX/NWE,(=Z* NO WRITE ENABLE, *)
          INDEX  /MTX/BCW,(=Z* BUFFER CONTROL WORD ERROR, *)
          INDEX  /MTX/RAF,(=Z* READ AFTER WRITE, *) 
          INDEX  /MTX/IOS,(=Z* END OF SET INCORRECT REQUEST, *) 
          INDEX  /MTX/BAE,(=Z* BUFFER ARGUMENT ERROR, *)
          INDEX  /MTX/SCI,(=Z* CODED I/O NOT SUPPORTED, *)
          INDEX  /MTX/TPE,(=Z* JOB ABORTED BY TAPE MANAGER, *)
          INDEX  /MTX/AME,(=Z* ACS MOUNT ERROR, *)
          INDEX  /MTX/RRJ,(=Z* REEL ASSIGNMENT REJECTED, *) 
          INDEX  /MTX/LAM,(=Z* LABEL MISSING, *)
          INDEX  /MTX/LCE,(=Z* LABEL CONTENT ERROR, *)
          INDEX  /MTX/LBE,(=Z* TRAILER BLOCK COUNT ERROR, *)
          INDEX  /MTX/LPE,(=Z* LABEL PARAMETER ERROR ON OPEN, *)
          INDEX  /MTX/LIT,(=Z* INCORRECT LABEL TYPE, *) 
          INDEX  /MTX/IXL,(=Z* XL BUFFER/FET PARAMETER ERROR, *)
          INDEX  /MTX/MFM,(=Z* MULTI-FILE NOT FOUND, *) 
          INDEX  /MTX/EFT,(=Z* ERROR FLAG TERMINATION, *) 
          INDEX  /MTX/SYE,(=Z* SYSTEM ERROR, *) 
          INDEX  /MTX/FPI,(=Z* FILE POSITION INDETERMINATE, *)
          INDEX  /MTX/OPA,(=Z* WRONG PARITY, *) 
          INDEX  /MTX/BTL,(=Z* BLOCK TOO LARGE, *)
          INDEX  /MTX/BNE,(=Z* BLOCK SEQUENCE ERROR, *) 
          INDEX  /MTX/STE,(=Z* STATUS ERROR, *) 
          INDEX  /MTX/CMF,(=Z* CHANNEL MALFUNCTION, *)
          INDEX  /MTX/RDR,(=Z* READY DROP, *) 
          INDEX  /MTX/FRJ,(=Z* FUNCTION REJECT, *)
          INDEX  /MTX/WEO,(=Z* UNIT HUNG UP ON EOP OR BUSY, *)
          INDEX  /MTX/CRJ,(=Z* CONNECT REJECT, *) 
          INDEX  /MTX/ERA,(=Z* ERASE LIMIT, *)
          INDEX  /MTX/PLO,(=Z* POSITION LOST, *)
          INDEX  /MTX/RCE,(=Z* REPOSITION CORRECTED ERROR, *) 
          INDEX  /MTX/MWT,(=Z* MARGINALLY WRITTEN TAPE, *)
          INDEX  /MTX/WVF,(=Z* WRITE VERIFY FAILURE, *) 
          INDEX  /MTX/TME,(=Z* WRITE TAPE MARK FAILURE, *)
          INDEX  /MTX/TCF,(=Z* TAPE CLEANER FAULT, *) 
          INDEX  /MTX/BFR,(=Z* READ ID BURST FAILURE, *)
          INDEX  /MTX/BFW,(=Z* WRITE ID BURST FAILURE, *) 
          INDEX  /MTX/MERC
  
 TERR     DATA   Z* ERROR CODE 00,* 
  
*         TAME - TABLE OF ADDITIONAL MESSAGES TO BE ISSUED IF ERROR 
*         OCCURS ON THE FIRST BLOCK OF THE TAPE.
  
 TAME     INDEX 
          INDEX  /MTX/BTL,(=C* TAPE FORMAT PROBABLY WRONG.*)
          INDEX  /MTX/BNE,(=C* TAPE FORMAT PROBABLY WRONG.*)
          INDEX  /MTX/MERC
 TSPC     SPACE  4,10 
**        TSPC - TABLE OF SPECIAL PROCESSORS. 
  
 TSPC     INDEX 
          INDEX  /MTX/NWE,NWE 
          INDEX  /MTX/IOS,MFM 
          INDEX  /MTX/TPE,TME 
          INDEX  /MTX/AME,VAE 
          INDEX  /MTX/RRJ,VAE 
          INDEX  /MTX/LPE,OPM 
          INDEX  /MTX/MFM,MFM 
          INDEX  /MTX/STE,STM 
          INDEX  /MTX/MERC
          TITLE  CHECK JOB ERROR FLAG.
 CJE      SPACE  4,15 
**        CJE - CHECK JOB ERROR FLAG. 
* 
* 
*T UXRQ   12/ 1,12/ CJE,12/,12/ PA,12/ PB 
* 
*         PA = 0. 
*         PB = 0. 
* 
*T, EXIT  12/ 2,12/ CJE,12/,12/ PA,12/ PB 
* 
*         PA = 0. 
*         PB = 0 IF NOT TO ABORT *CIO* REQUEST. 
*         PB .NE. 0 IF TO ABORT *CIO* REQUEST.
* 
*         CALLS  CCR, PRS.
  
  
          ENTRY  CJE
          RJM    PRS         PRESET 
          LDD    CP          READ ERROR FLAG
          ADN    STSW 
          CRD    CM 
          LDD    CM+1 
          LMN    ODET 
          ZJN    CJE1        IF OPERATOR DROP 
          LMN    TAET&ODET
          ZJN    CJE1        IF USER BREAK TWO
          LMN    FSET&TAET
          ZJN    CJE1        IF FORCED ERROR
          LMN    FSET 
          SBN    SPET 
          MJN    CJE2        IF NOT SPECIAL PROCESSING ERROR
 CJE1     AOD    PB          SET TO ABORT REQUEST 
 CJE2     LDN    0           DO NOT COMPLETE FET
          RJM    CCR         COMPLETE REQUEST 
          LJM    NCPX        EXIT 
          TITLE  COMMON DATA AREA.
          SPACE  4,10 
**        UDT DATA. 
  
  
*         *UFRQ*. 
  
 FREQ     BSS    1           FILE REQUEST 
 FRST     BSS    1           FILE REQUEST STATUS
          BSS    2           RESERVED 
 FNTA     BSS    1           LOCAL FNT ADDRESS
  
*         *UCIA*. 
  
 ICIO     BSS    1           INTERNAL CIO CODE
 FETL     BSS    1           FET LENGTH - 5 AND SKIP COUNT
 SKPC     BSS    1           SKIP COUNT 
 FETA     BSS    2           FET ADDRESS
  
*         *UCIB*. 
  
 ECIO     BSS    1           EXTERNAL *CIO* CODE
 FETO     BSS    1           FET OPTIONS
 LVLN     BSS    1           LEVEL NUMBER / MLRS
 MLRS     BSS    2           MLRS 
  
*         *UDS1* - *UDS3*.
  
 DSTS     BSS    3*5         DETAILED STATUS
  
*         *UESN*. 
  
 EVSN     BSS    5           EXTERNAL VSN, FLAGS
  
*         *UMSG* AND MESAGE TERMINATOR. 
  
 TMMS     BSSZ   4*5         TAPE MANAGER MESSAGE 
          BSSZ   1           TERMINATOR 
          SPACE  4,10 
          TITLE  SUBROUTINES. 
 CCR      SPACE  4,15 
**        CCR - COMPLETE CIO REQUEST. 
* 
*         ENTRY  (A) = FET COMPLETION CODE IF .NE. 0. 
*                (A) = 0 IF NOT TO COMPLETE FET.
* 
*         EXIT   PP ASSIGNED TO MAGNET CONTROL POINT. 
*                BLOCKS SKIPPED COUNT CLEARED IN UDT. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  RCP, UAD.
  
  
 CCR      SUBR               ENTRY/EXIT 
          RJM    RCP         COMPLETE FET AND RETURN TO MAGNET CP 
          RJM    UAD
          ADK    /MTX/UBLC   GET BLOCKS SKIPPED 
          CRD    CM 
          LDN    0           CLEAR BLOCKS SKIPPED 
          STD    CM+4 
          RJM    UAD
          ADK    /MTX/UBLC   UPDATE UDT 
          CWD    CM 
          UJN    CCRX        RETURN 
 FAD      SPACE  4,10 
**        FAD - SET FET ADDRESS.
* 
*         ENTRY  (A) = OFFSET OF WORD IN FET. 
* 
*         EXIT   (A) = ADDRESS + RA IF FET ADDRESS IN FL. 
*                (A) = 0 IF FET ADDRESS NOT IN FL.
  
  
 FAD1     LDN    0           SET ADDRESS ERROR
  
 FAD      SUBR               ENTRY/EXIT 
          STD    T0          SAVE WORD OFFSET 
          LDM    FETA 
          SHN    14 
          ADM    FETA+1 
          ADD    T0 
          SHN    14 
          SBD    FL 
          SHN    6
          PJN    FAD1        IF ADDRESS NOT IN FL 
          SHN    14 
          ADD    FL 
          ADD    RA 
          SHN    6
          UJN    FADX        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPACS 
*CALL     COMPANS 
*CALL     COMPC2D 
          SPACE  4,10 
**        *0DF* BUFFER. 
  
  
 B0DF     EQU    *+1         *0DF* OVERLAY BUFFER 
          ERRNG  BFMS-B0DF-ZDFL  CHECK LENGTH OF *0DF*
          TITLE  OVERLAID SUBROUTINES.
 PRS      SPACE  4,10 
**        PRS - PRESET *CUF*, *MAB*, AND *CJE* FUNCTIONS. 
* 
*         EXIT   PP ASSIGNED TO USER CONTROL POINT. 
* 
*         CALLS  CCP, UAD.
  
  
 PRS      SUBR               ENTRY/EXIT 
          RJM    UAD
          ADK    /MTX/UFRQ   GET CIO PARAMETERS 
          CRM    FREQ,TR
          ADK    /MTX/UDS1-/MTX/UFRQ-3  GET DETAILED STATUS 
          CRM    DSTS,TR
          ADK    /MTX/UBLC-/MTX/UDS1-3  GET BLOCK ACCUMULATOR 
          CRD    CM 
          ADK    /MTX/UMSG-/MTX/UBLC  GET TAPE MANAGER MESSAGE
          CRM    TMMS,TR
          CRM    TMMS+5*3,ON
          ADK    /MTX/UESN-/MTX/UMSG-4  GET EXTERNAL VSN
          CRM    EVSN,ON
          LDN    0           TERMINATE VSN FOR MESSAGE ASSEMBLY 
          STM    EVSN+3 
          LDD    CM+4        SAVE BLOCKS SKIPPED
          STD    T8 
          RJM    CCP         CHANGE TO USER CP
          ZJN    PRS2        IF CHANGE MADE 
          LDD    FN 
          LMN    /MTX/CJE 
          NJN    PRS1        IF NOT CHECK JOB ABORT 
          LJM    NCPX        RETURN NORMAL COMPLETION STATUS
  
 PRS1     LJM    RJBX        SET RECALL ON JOB ROLLED OUT 
  
 PRS2     LDD    T8 
          ZJN    PRS3        IF NO BLOCKS SKIPPED 
          STM    RCPC        SET BLOCKS SKIPPED 
          LDC    ITPO*100    SET SRU INCREMENT
          STM    RCPA 
 PRS3     LJM    PRSX        RETURN 
          OVERLAY (PROCESS AUXILIARY FUNCTION.) 
 PAF      SPACE  4,10 
**        PAF - PROCESS AUXILIARY FUNCTION REQUEST. 
* 
*         REQUEST FORMAT -
* 
*         12/ 0,12/ *AFN*,12/ 0,12/ PM,12/ FC 
* 
*         PM     OPTIONAL PARAMETER.
*         FC     FUNCTION CODE. 
* 
*         CALLS  CJA, HNG, IAM, IRM, LGA, RVS, USP, VME, VSE. 
  
  
          ENTRY  PAF         ENTRY
          LDD    PB 
          SBN    /MTX/AFMX
          MJN    PAF1        IF VALID FUNCTION CODE 
          RJM    HNG         HANG PP
 PAF1     LDM    TAFN,PB
          STD    T1 
          LJM    0,T1        PROCESS FUNCTION 
 TAFN     SPACE  4,10 
**        TAFN - TABLE OF *AFN* REQUEST FUNCTION CODES. 
  
  
 TAFN     INDEX 
          INDEX  /MTX/AFRA,IAM  ISSUE REEL ASSIGNMENT MESSAGES
          INDEX  /MTX/AFRR,IRM  ISSUE REEL RETURN MESSAGES
          INDEX  /MTX/AFLA,LGA  LOG STATISTICAL ACCUMULATORS
          INDEX  /MTX/AFNV,RVS  RETURN NEXT VSN 
          INDEX  /MTX/AFUS,USP  INITIATE UNIT SWAP
          INDEX  /MTX/AFCJ,CJA  CLEAR JOB ASSIGNMENT
          INDEX  /MTX/AFVE,VSE  ISSUE VSN MOUNTED EVENT 
          INDEX  /MTX/AFME,VME  ISSUE VSN EVENT AFTER ACS MOUNT ERROR 
          INDEX  /MTX/AFMX   TERMINATE TABLE
 IAM      SPACE  4,10 
**        IAM - ISSUE REEL ASSIGNMENT MESSAGES. 
* 
*         CALLS  IRA, IVM.
  
  
 IAM      BSS    0           ENTRY
          RJM    IVM         ISSUE NEXT VSN ASSIGNED MESSAGE
          RJM    IRA         ISSUE REEL ASSIGNED MESSAGE
          LJM    NCPX        EXIT 
 IRM      SPACE  4,10 
**        IRM - ISSUE REEL RETURN MESSAGES. 
* 
*         CALLS  IPT, IRR, LCE. 
  
  
 IRM      BSS    0           ENTRY
          RJM    LCE         LOG CORRECTED ERRORS 
          RJM    IPT         ISSUE PRU-S TRANSFERRED MESSAGE
          RJM    IRR         ISSUE REEL RETURNED MESSAGE
          LJM    NCPX        EXIT 
 LGA      SPACE  4,10 
**        LGA - LOG STATISTICAL ACCUMULATORS. 
* 
*         CALLS  IPT, LCE, UAD. 
  
  
 LGA      BSS    0           ENTRY
          RJM    UAD
          ADK    /MTX/UERC   GET CORRECTED ERROR ACCUMULATORS 
          CRD    CM 
          LDD    CM 
          SHN    -3 
          NJN    LGA1        IF THRESHOLD REACHED 
          LDD    CM+1 
          LPN    77 
          NJN    LGA1        IF THRESHOLD REACHED 
          LDD    CM+2 
          SHN    -11
          NJN    LGA1        IF THRESHOLD REACHED 
          LDD    CM+3 
          NJN    LGA1        IF THRESHOLD REACHED 
          LDD    CM+4 
          SHN    -11
          ZJN    LGA2        IF THRESHOLD NOT REACHED 
 LGA1     RJM    LCE         LOG CORRECTED ERRORS 
          RJM    UAD
          ADK    /MTX/UBLC   GET BLOCKS TRANSFERRED ACCUMULATORS
          CRD    CM 
          LDD    CM 
          NJN    LGA2        IF THRESHOLD REACHED 
          LDD    CM+2 
          ZJN    LGA3        IF THRESHOLD NOT REACHED 
 LGA2     RJM    IPT         ISSUE PRU-S TRANSFERRED MESSAGES 
 LGA3     LJM    NCPX        EXIT 
 RVS      SPACE  4,10 
**        RVS - RETURN NEXT VSN.
* 
*         CALLS  AFA, IFA, RRS, UAD.
* 
*         MACROS ENDMS. 
  
  
 RVS      BSS    0           ENTRY
  
*         SET VSN FILE ACCESS AND READ ENTRY. 
  
          RJM    UAD
          ADK    /MTX/UVRI
          CRD    CN 
          LDD    CN+1        SET VSN FILE RANDOM ADDRESS
          LPN    77 
          STD    RI 
          LDD    CN+2 
          STD    RI+1 
          ADD    RI 
          ZJN    RVS4        IF NO RANDOM ADDRESS PRESENT 
          LDN    RVFO        SET VSN FILE ORDINAL 
          STD    FO 
          LDN    2           PRESET ERROR STATUS
          STD    T9 
          LDN    PTRM        SET READ READ ALLOW MODIFY ACCESS
          STD    AM 
          RJM    IFA         INITIALIZE VSN FILE ACCESS 
          NJN    RVS3        IF ERROR 
          RJM    RRS         READ VSN FILE SECTOR 
          ZJN    RVS1        IF RANDOM ADDRESS ERROR OR NOT FULL SECTOR 
          SHN    -21
          STD    T9          SET READ ERROR STATUS
          NJN    RVS2        IF READ ERROR
 RVS1     ENDMS 
 RVS2     LDN    RFAS        RETURN VSN FILE
          RJM    AFA
 RVS3     SOD    T9 
          MJN    RVS5        IF NO ERROR
          NJN    RVS4        IF NOT READ ERROR
          LDM    RDCT 
          SHN    21-12
          MJN    RVS4        IF NOT RECOVERABLE ERROR 
          LDN    /MTX/RDL    REQUEUE ON TIME DELAY
          LJM    SRSX        SET REQUEST STATUS 
  
*         RETURN SYSTEM ERROR.
  
 RVS4     LDK    /MTX/SYE    SET SYSTEM ERROR 
          STD    EC 
          LJM    ERRX        RETURN ERROR 
  
*         SET  ENTRY OFFSET.
  
 RVS5     RJM    UAD         GET VSN REQUEST
          ADK    /MTX/UESN
          CRD    CM 
          ADK    /MTX/UISN-/MTX/UESN
          CRD    T1 
          LDD    CN          VERIFY JOB EJT ORDINAL 
          LMM    BFMS+2+5*/RSX/VDFI 
          NJN    RVS4        IF INCORRECT EJT ORDINAL 
          LDD    CN+3        SET ENTRY ORDINAL
          STD    T6 
          LDM    BFMS+2+5*/RSX/VRLC+4 
          LPN    77          REEL COUNT 
          SBN    1
          SBD    T6 
          MJP    RVS7        IF NO ENTRY FOR REEL 
          LDM    BFMS+2+5*/RSX/VRLC+4 
          LPC    100
          ZJN    RVS6        IF NOT EQUIVALENCED VSN-S
          LDD    T6          ADJUST ORDINAL FOR EQUIVALENCED VSN-S
 RVS6     RAD    T6 
          SHN    2           SET VSN BUFFER OFFSET
          RAD    T6 
  
*         SET VSN-S FROM VSN FILE.
  
          LDM    BFMS+2+5*/RSX/VVSN,T6   SET EXTERNAL AND INTERNAL VSN
          STD    CM 
          STD    T1 
          LDM    BFMS+2+5*/RSX/VVSN+1,T6
          STD    CM+1 
          STD    T1+1 
          LDM    BFMS+2+5*/RSX/VVSN+2,T6
          STD    CM+2 
          STD    T1+2 
          LDM    BFMS+2+5*/RSX/VRLC+4 
          SHN    21-6 
          PJN    RVS9        IF NOT EQUIVALENCED VSN-S
          LDM    BFMS+2+5*/RSX/VVSN+5,T6 SET INTERNAL VSN 
          STD    T1 
          LDM    BFMS+2+5*/RSX/VVSN+6,T6
          STD    T1+1 
          LDM    BFMS+2+5*/RSX/VVSN+7,T6
          STD    T1+2 
          UJN    RVS9        UPDATE UDT 
  
*         CHECK VSN RETURNED FROM *EOV2* LABEL. 
  
 RVS7     LDD    CN+4 
          LPN    10 
          NJN    RVS8        IF VSN RETURNED FROM *EOV2* LABEL
          STD    T1          CLEAR INTERNAL VSN 
          STD    T1+1 
          STD    T1+2 
 RVS8     LDD    T1          SET EXTERNAL VSN TO INTERNAL VSN 
          STD    CM 
          LDD    T1+1 
          STD    CM+1 
          LDD    T1+2 
          STD    CM+2 
  
*         UPDATE UDT. 
  
 RVS9     LDD    CM+4        CLEAR SCRATCH VSN FLAG 
          SCN    40 
          STD    CM+4 
          LDD    CM          CHECK FOR SCRATCH VSN
          LMC    2R 
          NJN    RVS10       IF NOT SCRATCH VSN 
          LMD    CM 
          LMD    CM+1 
          NJN    RVS10       IF NOT SCRATCH VSN 
          LMD    CM+1 
          LMD    CM+2 
          NJN    RVS10       IF NOT SCRATCH VSN 
          LDN    40          SET SCRATCH VSN
          RAD    CM+4 
 RVS10    RJM    UAD
          ADK    /MTX/UVRI   WRITE VSN FLAGS
          CWD    CN 
          ADK    /MTX/UESN-/MTX/UVRI  WRITE EXTERNAL VSN
          CWD    CM 
          ADK    /MTX/UISN-/MTX/UESN  WRITE INTERNAL VSN
          CWD    T1 
          LJM    NCPX        EXIT 
 USP      SPACE  4,10 
**        USP - INITIATE UNIT SWAP. 
* 
*         ENTRY  (PA) = NEW UDT ADDRESS.
* 
*         EXIT   (PA) = NEW UDT ADDRESS.
* 
*         CALLS  CCP, HNG, UAD. 
* 
*         MACROS MONITOR, NFA.
  
  
 USP      BSS    0           ENTRY
          RJM    UAD         GET TAPE FILE FNT ADDRESS
          ADK    /MTX/UFRQ
          CRD    CM 
          LDD    CM+4        SET FNT ADDRESS
          STD    FA 
          LDD    RA          SET NEW UDT ADDRESS
          SHN    6
          ADD    PA 
          ADK    /MTX/UST1   GET NEW EST ORDINAL
          CRD    CM 
          ADK    /MTX/UVRI-/MTX/UST1  GET UNIT SWAP FLAG
          CRD    CN 
          LDD    CM+2        SAVE NEW EST ORDINAL 
          STD    T8 
          LDD    CN+1 
          SHN    21-13
          MJN    USP1        IF UNIT SELECTED FOR UNIT SWAP 
          RJM    HNG         HANG - NO RETURN 
  
 USP1     RJM    CCP         CHANGE TO USER CP
          NJN    USP2        IF CHANGE NOT MADE 
          LDD    T8          SET NEW EST ORDINAL
          STD    CM+1 
          LDN    REQS        SET REQUEST ACTIVE EQUIPMENT 
          STD    CM+2 
          MONITOR  REQM      REQUEST NEW EQUIPMENT
          LDD    CM+1 
          NJN    USP3        IF EQUIPMENT ASSIGNED
 USP2     LDN    /MTX/BEI    SET UNIT SWAP FAILURE
          STD    EC 
          LJM    ERRX        RETURN ERROR STATUS
  
 USP3     NFA    FA,R        SET FNT ADDRESS
          ADK    FSTL        GET FST ENTRY
          CRD    CM 
          LDD    CM 
          LMD    EO 
          NJN    USP4        IF INCORRECT EST ORDINAL 
          LDD    CM+4 
          SHN    21-0 
          PJN    USP5        IF FILE BUSY 
 USP4     RJM    HNG         HANG - NO RETURN 
  
 USP5     LDD    T8          SET NEW EST ORDINAL
          STD    CM 
          LDD    PA          SET NEW UDT ADDRESS
          STD    CM+1 
          NFA    FA,R        UPDATE FST ENTRY 
          ADK    FSTL 
          CWD    CM 
          LDD    EO          SET OLD EST ORDINAL
          STD    CM+1 
          MONITOR  DEQM      DROP OLD EQUIPMENT 
          LJM    NCPX        EXIT 
 CJA      SPACE  4,10 
**        CJA - CLEAR JOB ASSIGNMENT. 
* 
*         CALLS  CCP, RCP, UAD. 
* 
*         MACROS MONITOR. 
  
  
 CJA      BSS    0           ENTRY
          RJM    CCP         CHANGE TO USER CP
          NJP    RJBX        IF CHANGE NOT MADE 
          LDD    EO          SET EST ORDINAL
          STD    CM+1 
          MONITOR  DEQM      DROP TAPE EQUIPMENT
          LDN    1           SET TO DECREMENT TAPE ACTIVITY 
          RJM    RCP         RETURN TO MAGNET CP
          LDN    ZERL 
          CRD    CM 
          RJM    UAD
          ADK    /MTX/UVRI   CLEAR JOB ASSIGNMENT IN UDT
          CWD    CM 
          LDC    OVRE        ISSUE OVERCOMMITMENT EVENT 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR  EATM 
          LJM    NCPX        EXIT 
 VSE      SPACE  4,10 
**        VSE - ISSUE VSN MOUNTED EVENT.
* 
*         EXIT   VSN EVENT ISSUED.
* 
*         USES   CN - CN+4. 
* 
*         CALLS  IVE, UAD.
  
  
 VSE      BSS    0           ENTRY
          RJM    UAD
          ADN    /MTX/UMST   GET ACS VSN
          CRD    CN 
          LDD    ED 
          SHN    21-1 
          MJN    VSE1        IF ACS UNIT
          RJM    UAD
          ADK    /MTX/UVSN   GET INTERNAL VSN 
          CRD    CN 
          LDD    CN+3 
          SHN    21-12
          PJN    VSE1        IF NOT SCRATCH TAPE
          LDC    2R          SET SCRATCH VSN
          STD    CN 
          STD    CN+1 
          STD    CN+2 
 VSE1     RJM    IVE         ISSUE VSN EVENT
          LJM    NCPX        EXIT 
 VME      SPACE  4,10 
**        VME - ISSUE VSN EVENT AFTER ACS VSN MOUNT ERROR.
* 
*         ENTRY  (PA) = MOUNT ERROR TABLE ORDINAL.
* 
*         EXIT   VSN EVENT ISSUED.
* 
*         USES   CN - CN+4. 
* 
*         CALLS  IVE. 
  
  
 VME      BSS    0           ENTRY
          LDD    RA 
          SHN    6
          ADK    /MTX/VET 
          ADD    PA          SET ADDRESS OF VSN WITH MOUNT ERROR
          CRD    CN 
          RJM    IVE         ISSUE VSN EVENT
          LJM    NCPX        EXIT 
          TITLE  FAST ATTACH FILE ACCESS ROUTINES.
 AFA      SPACE  4,15 
**        AFA - ISSUE *AFAM* FUNCTION.
* 
*         ENTRY  (A) = *AFAS* IF TO ATTACH FILE.
*                (A) = *RFAS* IF TO RETURN FILE.
*                (FO) = GLOBAL FNT ORDINAL. 
*                (FA) = ACCESS MODE.
* 
*         EXIT   (CM+1 - CM+4) = *AFAM* FUNCTION EXIT PARAMETERS. 
* 
*         USES   CM+1 - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 AFA      SUBR               ENTRY/EXIT 
          STD    CM+3        SET SUBFUNCTION
          LDD    FO          SET FNT ORDINAL
          STD    CM+4 
          LDD    AM          SET ACCESS MODE
          STD    CM+2 
          LDN    0           SET LOCAL FAST ATTACH FILE 
          STD    CM+1 
          MONITOR  AFAM      ATTACH OR RETURN FILE
          UJN    AFAX        RETURN 
 IFA      SPACE  4,15 
**        IFA - INITIALIZE FAST ATTACH FILE ACCESS. 
* 
*         ENTRY  (FO) = GLOBAL FNT ORDINAL. 
*                (AM) = ACCESS MODE.
* 
*         EXIT   (A) = 0 IF FILE ATTACHED.
*                (A) .NE. 0 IF FILE NOT ATTACHED. 
*                MASS STORAGE DRIVER LOADED AND PRESET. 
* 
*         USES   T5 - T7, CM - CM+1.
* 
*         CALLS  AFA. 
* 
*         MACROS DELAY, PAUSE, SETMS, SFA.
  
  
 IFA2     SFA    FNT,FO 
          ADN    FSTG        GET FILE POINTERS
          CRD    T5 
          SETMS  IO,RW
          LDN    0           SET NO ERROR 
  
 IFA      SUBR               ENTRY/EXIT 
 IFA1     LDN    AFAS        ATTACH FILE
          RJM    AFA
          LDD    CM+1 
          ZJN    IFA2        IF FILE ATTACHED 
          PAUSE 
          DELAY 
          LDD    CM+1 
          ZJN    IFA1        IF ERROR FLAG NOT SET
          UJN    IFAX        RETURN WITH ERROR STATUS 
 RRS      SPACE  4,15 
**        RRS - READ RANDOM SECTOR. 
* 
*         ENTRY  (RI - RI+1) = RANDOM ADDRESS.
* 
*         EXIT   (A) .GT. 0 IF FULL SECTOR READ.
*                (A) = 0 IF RANDOM ADDRESS ERROR OR NOT FULL SECTOR.
*                (A) .LT. 0 IF READ ERROR.
*                (T6) = TRACK IF NO ERROR.
*                (T7) = SECTOR IF NO ERROR. 
*                SECTOR READ TO *BFMS* IF NO ERROR. 
* 
*         CALLS  CRA, RDS.
  
  
 RRS1     LDN    0           SET ERROR
  
 RRS      SUBR               ENTRY/EXIT 
          RJM    CRA         CONVERT RANDOM ADDRESS 
          MJN    RRS1        IF INCORRECT RANDOM ADDRESS
          LDC    BFMS        SET BUFFER ADDRESS 
          RJM    RDS         READ SECTOR
          MJN    RRSX        IF READ ERROR
          LDM    BFMS+1      CHECK IF FULL SECTOR 
          SHN    -6 
          UJN    RRSX        RETURN WITH STATUS 
          TITLE  DAYFILE MESSAGE ROUTINES.
 CBC      SPACE  4,10 
**        CBC - CHECK BLOCK COUNT.
* 
*         ENTRY  (T3 - T4) = BLOCKS TRANSFERRED COUNT.
* 
*         EXIT   BLOCK COUNT MESSAGE ISSUED TO ACCOUNT FILE AND ERROR 
*                  LOG IF NON-ZERO BLOCK COUNT. 
* 
*         CALLS  C2D, ITU.
  
  
 CBC      SUBR               ENTRY/EXIT 
          LDD    T3 
          ADD    T4 
          ZJN    CBCX        IF NO BLOCKS TRANSFERRED 
          LDD    T4 
          RJM    C2D         CONVERT BLOCK COUNT
          STM    IPTB+11
          LDD    T4 
          SHN    -6 
          RJM    C2D         CONVERT BLOCK COUNT
          STM    IPTB+10
          LDD    T3 
          RJM    C2D         CONVERT BLOCK COUNT
          STM    IPTB+7 
          LDD    T3 
          SHN    -6 
          RJM    C2D         CONVERT BLOCK COUNT
          STM    IPTB+6 
          LDC    IPTA        SET MESSAGE ADDRESS
          RJM    ITU         ISSUE MESSAGE
          UJN    CBCX        RETURN 
 IPT      SPACE  4,10 
**        IPT - ISSUE PRU,S TRANSFERRED TO ACCOUNT FILE.
* 
*         USES   T1 - T7, CM - CM+4.
* 
*         CALLS  CBC, UAD.
  
  
 IPT      SUBR               ENTRY/EXIT 
          RJM    UAD         GET BLOCKS READ
          ADK    /MTX/UBLC
          CRD    T3 
          RJM    CBC         CHECK BLOCK COUNT
          LDN    ZERL 
          CRD    CM 
          RJM    UAD         GET BLOCKS WRITTEN 
          ADK    /MTX/UBLC
          CRD    T1 
          CWD    CM          CLEAR BLOCK ACCUMULATORS 
          LDC    2RW.        SET *W.* IN MESSAGE
          STM    IPTB+13
          RJM    CBC         CHECK BLOCK COUNT
          UJN    IPTX        RETURN 
  
  
 IPTA     VFD    60/-0       JOB SEQUENCE NUMBER AND SERVICE CLASS
 IPTB     DATA   C*SCMT,  000, 00000000, R.*
 IRA      SPACE  4,10 
**        IRA - ISSUE REEL ASSIGNED MESSAGE.
* 
*         CALLS  ITU, UAD.
* 
*         USES   CM - CM+4. 
  
  
 IRA      SUBR               ENTRY/EXIT 
          RJM    UAD         STORE VSN
          ADN    /MTX/UVSN
          CRD    CM 
          LDD    CM+3 
          SHN    21-2 
          MJN    IRA1        IF DEFAULT LABEL 
          LDD    CM 
          ADD    CM+1 
          ADD    CM+2 
          ZJN    IRA1        IF NO VSN
          LDD    CM          SET VSN
          STM    IRAB+6 
          LDD    CM+1 
          STM    IRAB+7 
          LDD    CM+2 
          STM    IRAB+10
          UJN    IRA2        ISSUE MESSAGE
  
 IRA1     LDC    2R.         ALTER MESSAGE FOR INDICATING NO VSN
          STM    IRAB+5 
          LDN    0
          STM    IRAB+6 
 IRA2     LDC    IRAA        SET MESSAGE ADDRESS
          RJM    ITU         ISSUE MESSAGE
          LJM    IRAX        RETURN 
  
  
 IRAA     VFD    60/-0       JOB SEQUENCE NUMBER AND SERVICE CLASS
 IRAB     DATA   C*AMAS,  000,       .* 
 IRR      SPACE  4,10 
**        IRR - ISSUE REEL RETURNED MESSAGE.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  ITU. 
* 
*         MACROS SFA. 
  
  
 IRR      SUBR               ENTRY/EXIT 
          LDD    HP 
          SHN    21-7 
          PJN    IRR1        IF NOT CTS 
          LDC    2R56 
          STM    IRRB+6 
          LDC    2R82        CHANGE TYPE TO *5682*
          STM    IRRB+7 
          LDC    2R.
          STM    IRRB+10
          UJN    IRR4        ISSUE MESSAGE
  
 IRR1     SHN    21-10-21+7 
          PJN    IRR2        IF NOT 639 TAPE UNIT 
          LDC    2R63 
          STM    IRRB+6 
          LDC    2R9. 
          STM    IRRB+7 
          UJN    IRR4        ISSUE MESSAGE
  
 IRR2     SHN    21-5+10-21 
          MJN    IRR4        IF MTS TAPE UNIT 
          SFA    EST,EO      CHECK FOR CMTS 
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          LPN    4
          ZJN    IRR3        IF NOT CMTS
          LDC    2R8.        CHANGE TYPE TO *698* 
          STM    IRRB+7 
          LDN    2
          RAM    IRRB+6 
 IRR3     AOM    IRRB+6      CHANGE TYPE TO *67X* (OR *698*)
 IRR4     LDC    IRRA        SET MESSAGE ADDRESS
          RJM    ITU         ISSUE MESSAGE
          LJM    IRRX        RETURN 
  
  
 IRRA     VFD    60/-0       JOB SEQUENCE NUMBER AND SERVICE CLASS
 IRRB     DATA   C*AMRT,  000, 66X.  *
 ITU      SPACE  4,15 
**        ITU - ISSUE TAPE USAGE MESSAGE. 
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE.
* 
*         EXIT   MESSAGE ISSUED TO ACCOUNT DAYFILE AND ERROR LOG. 
* 
*         USES   T3, CM - CM+4, CN - CN+4.
* 
*         CALLS  DFM, UAD.
* 
*         MACROS SFA. 
  
  
 ITU      SUBR               ENTRY/EXIT 
          STD    T3          SAVE MESSAGE ADDRESS 
          RJM    UAD
          ADK    /MTX/UVRI   GET EJT ORDINAL
          CRD    CM 
          SFA    EJT,CM      SET EJT ADDRESS
          ADK    JSNE        GET JSN
          CRD    CM 
          ADK    SCLE-JSNE   GET SERVICE CLASS
          CRD    CN 
          LDD    CM          SET JSN
          STI    T3 
          LDD    CM+1 
          STM    1,T3 
          LDD    CN          SET SERVICE CLASS
          SHN    -6 
          STM    4,T3 
          LDD    EO 
          RJM    C2D         CONVERT LOWER TWO DIGITS OF EST ORDINAL
          STM    11,T3       SET EST ORDINAL
          LDD    EO 
          SHN    -6 
          ADC    2R 0 
          STM    10,T3       SET EST ORDINAL UPPER DIGIT
          LDD    T3          SET MESSAGE ADDRESS AND OPTION 
          ADC    AJNN 
          RJM    DFM         ISSUE MESSAGE TO ACCOUNT FILE
          LDD    T3          SET MESSAGE ADDRESS AND OPTION 
          ADC    EJNN 
          RJM    DFM         ISSUE MESSAGE TO ERROR LOG 
          LJM    ITUX        RETURN 
 IVM      SPACE  4,10 
**        IVM - ISSUE VSN ASSIGNED MESSAGE TO USER DAYFILE. 
* 
*         EXIT   NEXT VSN MESSAGE ISSUED TO USER DAYFILE. 
*                TO REQUEUE REQUEST IF CP CHANGE NOT MADE.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  ACS, CCP, C2D, DFM, RCP, UAD, ZFV. 
  
  
 IVM      SUBR               ENTRY/EXIT 
          RJM    UAD
          ADK    /MTX/UFRQ   READ FILE REQUEST
          CRD    CM 
          ADK    /MTX/UESN-/MTX/UFRQ  READ VSN
          CRM    IVMA,ON
          LDD    CM+4        SET FNT ADDRESS
          STD    FA 
          RJM    CCP         CHANGE TO USER CONTROL POINT 
          NJP    RJBX        IF CHANGE NOT MADE 
          SFA    EST,EO      SET EST ADDRESS
          ADK    EQDE 
          CRD    T5          GET EQUIPMENT MNEMONIC 
          LDD    EO 
          SHN    -3 
          RJM    C2D         CONVERT UPPER TWO DIGITS OF EST ORDINAL
          STD    CM+1 
          LDD    EO 
          LPN    7           CONVERT LOWER DIGIT OF EST ORDINAL 
          ADN    1R0
          SHN    6
          STD    CM+2 
          LDN    0
          STD    CM+3 
          NFA    FA,R 
          ADK    FNTL        GET FILE NAME
          CRD    CN 
          LDD    CN+3        TERMINATE FILE NAME
          SCN    77 
          STD    CN+3 
          LDC    IVMA        SET VSN ADDRESS
          RJM    ZFV         ZERO FILL VSN
          LDC    BFMS        SET ASSEMBLY ADDRESS 
          STD    T1 
          LDC    1R *100     INITIALIZE MESSAGE ASSEMBLY
          STI    T1 
          LDN    CM          ASSEMBLE MNEMONIC AND EST ORDINAL
          RJM    ACS
          LDC    =Z* ASSIGNED TO *
          RJM    ACS
          LDN    CN          ASSEMBLE FILE NAME 
          RJM    ACS
          LDC    =Z*, VSN=* 
          RJM    ACS
          LDC    IVMA        ASSEMBLE VSN 
          RJM    ACS
          LDC    =Z*.*
          RJM    ACS         TERMINATE MESSAGE
          LDC    BFMS 
          RJM    DFM         ISSUE MESSAGE
          RJM    RCP         RETURN TO MAGNET CONTROL POINT 
          LJM    IVMX        EXIT 
  
  
 IVMA     BSSZ   5           VSN FROM UDT 
 LCE      SPACE  4,15 
**        LCE - LOG CORRECTED TAPE ERRORS.
* 
*         EXIT   CORRECTED ERRORS MESSSAGE ISSUED TO MAINTENANCE LOG IF 
*                  NON-ZERO ERROR COUNT.
*                CORRECTED ERROR COUNTS CLEARED.
* 
*         USES   CM - CM+4, T1 - T5.
* 
*         CALLS  DFM. 
* 
*         MACROS SFA. 
  
  
 LCE      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    T1 
          RJM    UAD
          ADC    /MTX/UERC   GET ERROR COUNTS 
          CRD    CM 
          CRM    CEMS+3*5,ON SET COUNTS IN MESSAGE
          SBN    1
          CWD    T1          CLEAR ERROR COUNTS 
          ADK    /MTX/UVSN-/MTX/UERC  SET VSN IN MESSAGE
          CRM    CEMS+2*5,ON
          LDD    CM 
          ADD    CM+1 
          ADD    CM+2 
          ADD    CM+3 
          ADD    CM+4 
          ZJN    LCEX        IF NO RECOVERED ERRORS 
          LDN    0           CLEAR UNUSED FIELDS
          STM    CEMS+2*5+3 
          STM    CEMS+2*5+4 
          SFA    EST,EO      GET EST INFORMATION
          ADK    EQDE 
          CRD    CM 
          LDD    HP 
          SHN    21-7 
          PJN    LCE1        IF NOT CTS UNIT
          LDD    CM+3 
          SHN    -7 
          ADN    /DFS/TM0046
          UJN    LCE5        SAVE MESSAGE ID
  
 LCE1     LDD    CM 
          LPN    14 
          ZJN    LCE2        IF NOT CMTS OR ISMT
          SHN    -3 
          UJN    LCE3        STORE *TMID* TABLE INDEX 
  
 LCE2     LDD    CM 
          SHN    -6 
          LPN    7
 LCE3     STD    T1          STORE *TMID* TABLE INDEX 
          RAD    T1 
          LDD    HP          CHECK IF 7 TRACK 
          SHN    21-0 
          PJN    LCE4        IF 7 TRACK 
          AOD    T1          INCREMENT INDEX TO 9 TRACK 
 LCE4     LDM    TMID,T1     SET MESSAGE ID 
 LCE5     STM    CEMS 
          LDD    HN          SET SYMPTOM CODE 
          STM    CEMS+1 
          LDD    CM+4        SET EQUIPMENT AND UNIT NUMBER
          LPC    7017 
          STM    CEMS+3 
          LDD    EO          SET EST ORDINAL
          STM    CEMS+1*5 
          LDN    4*5         SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    CEMS+BMLN
          RJM    DFM         LOG MESSAGE
          LJM    LCEX        RETURN 
          SPACE  4,15 
**        CORRECTED ERRORS MESSAGE. 
* 
*T  CEMS  12/MSGID,12/SYM,6/PP,6/CH,3/EQ,5/0,4/UN,12/0
*T,       12/EST,48/0 
*T,       36/ VOLUME SERIAL NUMBER,12/0,12/REEL NUMBER
*T,       18/LATE DATA ERRORS,18/WRITE ERRORS,6/0,18/READ ERRORS
* 
*         MSGID  MESSAGE IDENTIFICATION (DEVICE TYPE).
*         SYM    SYMPTOM CODE.
*         PP     PP NUMBER. 
*         CH     CHANNEL. 
*         EQ     EQUIPMENT NUMBER.
*         UN     UNIT NUMBER. 
* 
*         EST    EST ORDINAL. 
  
  
 CEMS     VFD    12/0,12/0,6/0,6/0,6/0,6/0,12/0 
          VFD    12/0,48/0
          VFD    36/0,12/0,12/0 
          VFD    18/0,18/0,6/0,18/0 
          SPACE  4,10 
**        TMID - TABLE OF MAGNETIC TAPE MESSAGE ID-S. 
* 
*T        12/ DEVICE MESSAGE ID 
* 
*         NOTE - CODE DEPENDS ON ORDER OF TABLE.
  
 TMID     CON    0
          CON    /DFS/TM0053  CMTS/698
          CON    0
          CON    /DFS/TM0057  ISMT/639
          CON    /DFS/TM0044  ATS/677 
          CON    /DFS/TM0054  ATS/679 
          CON    /DFS/TM0045  FSC/7 TRACK 
          CON    /DFS/TM0056  FSC/9 TRACK 
          CON    /DFS/TM0042  MTS/667 
          CON    /DFS/TM0052  MTS/669 
*         CON    /DFS/TM0046  AT (TABLE NOT USED
          CON    /DFS/TM0047  CT (TABLE NOT USED) 
          TITLE  UTILITY SUBROUTINES. 
 IVE      SPACE  4,10 
**        IVE - ISSUE VSN EVENT.
* 
*         ENTRY  (CN - CN+2) = VSN. 
* 
*         EXIT   VSN EVENT ISSUED.
* 
*         USES   CM+1, CM+3 - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 IVE      SUBR               ENTRY/EXIT 
          LDN    EEVS        SET ENTER EVENT
          STD    CM+1 
          LDN    VSNE/10000  SET VSN EVENT
          STD    CM+3 
          LDD    CN 
          ADD    CN+1 
          ADD    CN+2 
          STD    CM+4 
          MONITOR  EATM      ISSUE VSN EVENT
          UJN    IVEX        RETURN 
 ZFV      SPACE  4,10 
**        ZFV - ZERO FILL VSN.
* 
*         ENTRY  (A) = ADDRESS OF VSN.
* 
*         EXIT   TRAILING BLANKS REMOVED FROM VSN.
*                VSN TERMINATED WITH ZERO BYTE. 
* 
*         USES   T1, T2.
  
  
 ZFV      SUBR               ENTRY/EXIT 
          STD    T1          SET VSN ADDRESS
          ADN    3
          STD    T2 
          LDN    0           TERMINATE VSN
 ZFV1     STI    T2 
          SOD    T2 
          SBD    T1 
          MJN    ZFVX        IF CHECK COMPLETE
          LDI    T2 
          LMC    2R 
          ZJN    ZFV1        IF TWO BLANKS
          LPN    77 
          NJN    ZFVX        IF NOT TRAILING BLANK
          LDI    T2 
          SCN    77 
          STI    T2 
          UJN    ZFVX        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPACS 
*CALL     COMPCRA 
*CALL     COMPC2D 
  
  
          END 
