MPF 
          IDENT  MPF,MPF
          PERIPH
          BASE   MIXED
          SST 
          TITLE  MPF - *PACKER* UTILITY HELPER. 
          SPACE  4,10 
*COMMENT  MPF - *PACKER* UTILITY HELPER.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       MPF - *PACKER* UTILITY PP HELPER ROUTINE. 
* 
*         W. J. STURGIS.     78/02/14.
*         K. A. GILLIAM.     80/08/11.
*         D. G. BEAUSANG.    80/08/26.
*         A. J. NATHANSON.   83/10/25.
*         K. R. DELAY.       84/03/26.
*         P. C. SMITH.       87/12/01.
          SPACE  4,10 
***       MPF IS A PP HELPER PROGRAM FOR THE UTILITY *PACKER*.
          SPACE  4,10 
***       CALL -
* 
*T        18/ *MPF*,6/ R,12/ FN,6/ ,18/ ADDR
* 
*                FN = FUNCTION CODE.
*                ADDR = ADDRESS OF FET OR PARAMETER BLOCK.
* 
*         SEE INDIVIDUAL FUNCTIONS FOR MORE DETAILS.
* 
*         FN = 0, DROP TRACKS ON IAPF CHAIN.
*         FN = 1, REWRITE EOI.
*         FN = 2, DELINK TRACKS FROM IAPF CHAIN.
*         FN = 3, (RESERVED). 
*         FN = 4, READ SYSTEM SECTOR. 
*         FN = 5, WRITE SYSTEM SECTOR.
*         FN = 6, RETURN FST FOR CATALOG OVERFLOW TRACK.
*         FN = 7, REWRITE CATALOG SECTOR. 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED TO THE SYSTEM AND LOCAL 
*         DAYFILES, AND THE CALLING JOB IS ABORTED. 
* 
*         * MPF - ADDRESS OUT OF RANGE.*
*                 THE SPECIFIED ADDRESS WAS .LE. 1 OR .GE. FL.
* 
*         * MPF - BUFFER ARGUMENT ERROR.* 
*                 BUFFER ARGUMENTS (FIRST/IN/OUT/LIMIT) ARE INCORRECT.
* 
*         * MPF - CATALOG REWRITE LINK BYTE ERROR.* 
*                 AN INCORRECT LINK BYTE WAS READ FROM THE
*                 CATALOG TRACK.
* 
*         * MPF - DEVICE ERROR IDLE SET.* 
*                 A DEVICE ERROR IDLE WAS SET AS THE RESULT OF AN 
*                 INCORRECT CATALOG SECTOR WRITE. 
* 
*         * MPF - EQXX  TKYYYY  SCZZZZ.*
*                 THE EST ORDINAL, TRACK AND SECTOR LOCATION OF THE 
*                 INCORRECT SECTOR WRITE. 
* 
*         * MPF - FET COMPLETE BIT SET.*
*                 THE FET COMPLETE BIT WAS SET ON ENTRY FOR FN=7. 
* 
*         * MPF - FET TOO SHORT.* 
*                 THE FET WAS TOO SHORT FOR FN=7. 
* 
*         * MPF - FILE NOT FOUND.*
*                 THE LOCAL FILE SPECIFIED IN THE FET WAS NOT FOUND.
* 
*         * MPF - FM DN FFFFFFF NN.*
*                 THE FAMILY NAME (FFFFFFF) AND DEVICE NUMBER (NN)
*                 OF THE DEVICE ON WHICH ERROR IDLE WAS SET.
* 
*         * MPF - INACCESSIBLE DEVICE.* 
*                 THE DEVICE STATUS RETURNED BY THE *SETMS* MACRO 
*                 INDICATES THAT THE DEVICE IS NOT ACCESSIBLE.
* 
*         * MPF - INCORRECT CALL.*
*                 CALLER WAS NOT *SSJ=* PROGRAM, OR *MPF* WAS 
*                 NOT CALLED WITH AUTO RECALL.
* 
*         * MPF - INCORRECT CATALOG REWRITE REQUEST.* 
*                 INCORRECT SECTOR LENGTH, INCORRECT RANDOM ADDRESS,
*                 INCORRECT EST ORDINAL, ET CETERA. 
* 
*         * MPF - INCORRECT CIO CODE IN CATALOG REWRITE.* 
*                 THE CIO CODE FOR *REWRITE* MUST BE SET IN THE FET 
*                 FOR A SECTOR REWRITE WITH 100B WORDS; THE CIO CODE
*                 FOR *REWRITER* MUST BE SET IN THE FET FOR A SECTOR
*                 WITH LESS THAN 100B WORDS.
* 
*         * MPF - INCORRECT FUNCTION.*
*                 FUNCTION NUMBER NOT RECOGNIZED. 
* 
*         * MPF - INCORRECT LINK BYTE IN CATALOG SCAN.* 
*                 THE CONTROL BYTES IN THE SECTOR AT END OF A TRACK 
*                 WERE NOT LINK BYTES, THE LINK BYTE POINTED TO AN
*                 UNRESERVED TRACK, OR THE LINK BYTE POINTED TO A 
*                 TRACK WHICH WAS NOT ON THE TRACK CHAIN WHICH STARTED
*                 WITH THE LABEL TRACK. 
* 
*         * MPF - INCORRECT OVERFLOW FST REQUEST.*
*                 THE PARAMETER BLOCK FOR FN=6 WAS INCORRECT. 
* 
*         * MPF - INCORRECT SECTOR READ IN CATALOG REWRITE.*
*                 AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED 
*                 ON A SECTOR READ. 
* 
*         * MPF - INCORRECT SECTOR READ IN CATALOG SCAN.* 
*                 AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED 
*                 ON A CATALOG TRACK. 
* 
*         * MPF - INCORRECT SYSTEM SECTOR.* 
*                 THE LINKAGE BYTES IN THE BUFFER WERE NOT CORRECT
*                 FOR THE WRITE SYSTEM SECTOR FUNCTION. 
* 
*         * MPF - INCORRECT WORD COUNT IN CATALOG REWRITE.* 
*                 THE WORD COUNT IN THE CIO BUFFER IS .GE. THAN 100B. 
* 
*         * MPF - INCORRECT WRITE IN CATALOG REWRITE.*
*                 AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED 
*                 ON A SECTOR WRITE.  THIS ERROR WILL SET ERROR IDLE
*                 ON THE DEVICE.
* 
*         * MPF - I/O SEQUENCE ERROR.*
*                 FST ENTRY FOR REWRITE EOI WAS BUSY. 
* 
*         * MPF - RANDOM ADDRESS NOT ON IAPF CHAIN.*
*                 THE SPECIFIED RANDOM ADDRESS WAS NOT FOUND ON 
*                 THE IAPF CHAIN. 
* 
*         * MPF - SYSTEM SECTOR ERROR.* 
*                 A MASS STORAGE ERROR WAS ENCOUNTERED WHEN READING 
*                 OR WRITING A SYSTEM SECTOR. 
* 
*         * MPF - WRITE LOCK-OUT ON CATALOG FILE.*
*                 THE CATALOG FILE WAS NOT IN WRITE MODE. 
          TITLE  COMMON DECKS.
          SPACE  4,10 
*         COMMON DECKS. 
          SPACE  4,10 
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSLSD 
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSPIM 
*CALL     COMSWEI 
          TITLE  MACRO DEFINITIONS. 
          SPACE  4,10 
*         MACRO DEFINITIONS.
 ERROR    SPACE  4,10 
**        ERROR - ISSUE ERROR MESSAGE AND ABORT.
* 
*         ERROR  MSG
* 
*         MSG = ADDRESS OF ERROR MESSAGE. 
* 
*         CALLS  ERR. 
  
  
          PURGMAC  ERROR
  
 ERROR    MACRO  M
          MACREF ERROR
          LDC    M
          RJM    ERR
 ERROR    ENDM
 LDCA     SPACE  4,10 
**        LDCA - LOAD AND CHECK CENTRAL ADDRESS.
* 
*         LDCA   ADDR,OFFSET
* 
*         (ADDR - ADDR+1) = RELATIVE ADDRESS. 
*         OFFSET = ADDED TO ADDRESS.
* 
*         CALLS  VCA. 
* 
*         USES   T1, T2.
  
  
          PURGMAC LDCA
  
 LDCA     MACRO  A,N
          MACREF LDCA 
          LDD    A
          LPN    37 
          SHN    14 
          ADD    A+1
          IFC    NE,$N$$,1
          ADK    N
          RJM    VCA
 LDCA     ENDM
          TITLE  DIRECT CELL DEFINITIONS. 
          SPACE  4,10 
*         DIRECT CELL DEFINITIONS.
  
  
 FS       EQU    20 - 24     FST ENTRY
 RI       EQU    25 - 26     RANDOM INDEX 
 CT       EQU    35          OVERFLOW TRACK NUMBER
 TK       EQU    36          LABEL TRACK
 FN       EQU    40 - 44     FNT ENTRY
 FA       EQU    57          FNT ADDRESS
 FT       EQU    60 - 61     FIRST
 IN       EQU    62 - 63     IN 
 OT       EQU    64 - 65     OUT
 LM       EQU    66 - 67     LIMIT
          TITLE  MAIN PROGRAM.
          SPACE  4,10 
          ORG    PPFW 
 MPF      SPACE  4,10 
**        MPF - MAIN PROGRAM. 
  
  
 MPF      BSS    0           ENTRY
          RJM    PRS         PRESET 
          RJM    0,T1        EXECUTE FUNCTION 
          MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
          TITLE  ERROR PROCESSING.
 ERR      SPACE  4,10 
**        ERR - ERROR PROCESSOR.
* 
*         ENTRY  (A) = ADDRESS OF ERROR MESSAGE TEXT. 
* 
*         EXIT   TO *PPR*.
*                PP HUNG IF *SYSTEM DEBUG* ENABLED. 
* 
*         CALLS  DFM, SFC.
* 
*         MACROS MONITOR. 
  
  
 ERR      SUBR               ENTRY
          RJM    DFM         ISSUE DAYFILE MESSAGE
          RJM    SFC         SET FST COMPLETE 
          LDK    ZERL 
          CRD    CM 
          LDM    ERR         SET ADDRESS OF CALLER
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
          MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT TO PP RESIDENT
 ERRMSG   SPACE  4,10 
*         ERROR MESSAGES. 
  
  
 ERAR     DATA   C* MPF - ADDRESS OUT OF RANGE.*
 ERBA     DATA   C* MPF - BUFFER ARGUMENT ERROR.* 
 ERCC     DATA   C* MPF - INCORRECT CIO CODE IN CATALOG REWRITE.* 
 ERCR     DATA   C* MPF - INCORRECT CATALOG REWRITE REQUEST.* 
 EREI     DATA   C* MPF - DEVICE ERROR IDLE SET.* 
 ERFC     DATA   C* MPF - FET COMPLETE BIT SET.*
 ERFS     DATA   C* MPF - FET TOO SHORT.* 
 ERIC     DATA   C* MPF - INCORRECT CALL.*
 ERID     DATA   C* MPF - INACCESSIBLE DEVICE.* 
 ERIF     DATA   C* MPF - INCORRECT FUNCTION.*
 ERIO     DATA   C* MPF - I/O SEQUENCE ERROR.*
 ERIS     DATA   C* MPF - INCORRECT SYSTEM SECTOR.* 
 ERLR     DATA   C* MPF - CATALOG REWRITE LINK BYTE ERROR.* 
 ERLS     DATA   C* MPF - INCORRECT LINK BYTE IN CATALOG SCAN.* 
 ERNF     DATA   C* MPF - FILE NOT FOUND.*
 EROF     DATA   C* MPF - INCORRECT OVERFLOW FST REQUEST.*
 ERRA     DATA   C* MPF - RANDOM ADDRESS NOT ON IAPF CHAIN.*
 ERRR     DATA   C* MPF - INCORRECT SECTOR READ IN CATALOG REWRITE.*
 ERSR     DATA   C* MPF - INCORRECT SECTOR READ IN CATALOG SCAN.* 
 ERSS     DATA   C* MPF - SYSTEM SECTOR ERROR.* 
 ERWL     DATA   C* MPF - WRITE LOCK-OUT ON CATALOG FILE.*
 ERWR     DATA   C* MPF - INCORRECT WORD COUNT IN CATALOG REWRITE.* 
 ERWW     DATA   C* MPF - INCORRECT WRITE IN CATALOG REWRITE.*
          TITLE  FUNCTION PROCESSORS. 
 DTK      SPACE  4,10 
***       DTK (0) - DROP TRACKS ON IAPF CHAIN.
* 
*         ENTRY  (IR+3 - IR+4) = PARAMETER ADDRESS. 
* 
*T ADDR   12/ EQ,24/ ,24/ EOI 
* 
*                EQ  = EST ORDINAL. 
*                EOI = RANDOM ADDRESS OF NEW EOI. 
* 
*         EXIT   TRT UPDATED. 
*                DEVICE CHECKPOINT REQUESTED. 
  
  
 DTK      SUBR
          LDCA   IR+3        SET EST ORDINAL
          CRD    CM 
          LDD    CM 
          LPC    3777 
          STD    T5 
          LDCA   IR+3 
          RJM    CDA         COMPUTE DISK ADDRESS 
          LDD    T5 
          ADC    4000        DEVICE CHECKPOINT FLAG 
          STD    CM+1 
          LDD    T6          SET EOI TRACK
          LPC    3777        CLEAR LINK BIT 
          STD    CM+2 
          LDD    T7          SET EOI SECTOR 
          STD    CM+3 
          MONITOR  DTKM 
          LJM    DTKX        RETURN 
 RWE      SPACE   4,10
***       RWE (1) - REWRITE EOI.
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
*                LOCAL FILE POSITIONED TO CORRECT SECTOR FOR EOI WRITE. 
* 
*         EXIT   EOI WRITTEN. 
  
  
 RWE      SUBR
          RJM    SFP         SET FILE PARAMETERS
          SETMS  IO,RW
          RJM    PDS         PROCESS DEVICE STATUS
          RJM    WEI         WRITE EOI SECTOR 
          ENDMS 
          RJM    SFC         SET FST COMPLETE 
          UJN    RWEX        RETURN 
 DLK      SPACE  4,15 
***       DLK (2) - DELINK TRACKS FROM IAPF CHAIN.
* 
*         ENTRY  (IR+3 - IR+4) = PARAMETER ADDRESS. 
* 
*T ADDR   12/ ,12/ EQ,12/ FT,12/ NT,12/ LT
* 
*                EQ = EST ORDINAL.
*                FT = FIRST TRACK.
*                NT = NEXT TRACK. 
*                LT = LAST TRACK. 
* 
*         EXIT   TRACKS DELINKED FROM IAPF CHAIN. 
*                DEVICE CHECKPOINT REQUESTED. 
  
  
 DLK      SUBR
          LDCA   IR+3 
          CRD    CM          READ PARAMETER 
          LDD    CM+1 
          LPC    3777 
          LMC    4000        DEVICE CHECKPOINT FLAG 
          STD    CM+1 
          LDD    CM+2        ENSURE LINK BIT CLEAR
          LPC    3777 
          STD    CM+2 
          MONITOR  DLKM 
          UJN    DLKX        RETURN 
 RSC      SPACE  4,10 
***       RSC (4) - READ SYSTEM SECTOR. 
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
*                RANDOM ADDRESS OF SYSTEM SECTOR IN FET+6.
* 
*         EXIT   SYSTEM SECTOR RETURNED TO BUFFER STARTING AT *FIRST*.
*                RANDOM ADDRESS IN FET+6 UPDATED. 
  
  
 RSC      SUBR               ENTRY/EXIT 
          RJM    SFP         SET FILE PARAMETERS
          LDCA   IR+3,6      GET RANDOM ADDRESS 
          RJM    CDA         COMPUTE DISK ADDRESS 
          SETMS  IO 
          RJM    PDS         PROCESS DEVICE STATUS
          LDN    0           DO NOT COMPARE FILE NAME 
          RJM    RSS         READ SYSTEM SECTOR 
          ZJN    RSC2        IF SYSTEM SECTOR VALID 
 RSC1     ERROR  ERSS        * SYSTEM SECTOR ERROR.*
  
 RSC2     ENDMS 
          LDCA   IR+3,6 
          CRD    CM 
          AOD    CM+4        UPDATE RANDOM ADDRESS IN FET+6 
          SHN    -14
          RAD    CM+3 
          LDCA   IR+3,6 
          CWD    CM 
          SBN    5           FIRST
          CRD    CM 
          LDCA   CM+3,101    ENSURE THAT SYSTEM SECTOR FITS IN CM FL
          LDCA   CM+3 
          CWM    BFMS,ON     WRITE CONTROL BYTES TO CM BUFFER 
          CWM    BFMS+2,HN   WRITE SYSTEM SECTOR TO CM BUFFER 
          RJM    SFC         SET FST COMPLETE 
          LJM    RSCX        RETURN 
 WSC      SPACE  4,10 
***       WSC (5) - WRITE SYSTEM SECTOR.
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
*                SYSTEM SECTOR IN BUFFER STARTING AT *FIRST*. 
*                RANDOM ADDRESS OF SYSTEM SECTOR IN FET+6.
* 
*         EXIT   SYSTEM SECTOR WRITTEN. 
*                RANDOM ADDRESS IN FET+6 UPDATED. 
  
  
 WSC      SUBR               ENTRY/EXIT 
          RJM    SFP         SET FILE PARAMETERS
          LDCA   IR+3,6      RANDOM ADDRESS 
          RJM    CDA         COMPUTE DISK ADDRESS 
          LDCA   IR+3,1      FIRST
          CRD    CM 
          LDCA   CM+3,101    ENSURE SYSTEM SECTOR IS WITHIN CM FL 
          LDCA   CM+3 
          CRM    BFMS,ON     READ CONTROL BYTES FROM CM BUFFER
          CRM    BFMS+2,HN   READ SYSTEM SECTOR FROM CM BUFFER
          LDM    BFMS 
          LMC    3777        CHECK CONTROL BYTES
          LMM    BFMS+1 
          LMN    77 
          ZJN    WSC1        IF CONTROL BYTES VALID 
          ERROR  ERIS        * INCORRECT SYSTEM SECTOR.*
  
 WSC1     LDD    T6 
          STM    FTSS        SET FIRST TRACK
          LDD    T7 
          ADN    FSMS 
          STM    NSSS        NEXT SECTOR
          LMM    SLM
          NJN    WSC2        IF NOT END OF TRACK
          RJM    SNT
          STM    NSSS 
 WSC2     SETMS  IO,RW
          RJM    PDS         PROCESS DEVICE STATUS
          LDC    BFMS+WLSF
          RJM    WDS         WRITE SYSTEM SECTOR
          PJN    WSC3        IF NO DISK ERROR 
          ERROR  ERSS        * SYSTEM SECTOR ERROR.*
  
 WSC3     ENDMS 
          RJM    SFC         SET FST COMPLETE 
          LDCA   IR+3,6 
          CRD    CM 
          AOD    CM+4        UPDATE RANDOM ADDRESS IN FET+6 
          SHN    -14
          RAD    CM+3 
          LDCA   IR+3,6 
          CWD    CM 
          LJM    WSCX        RETURN 
 RTF      SPACE  4,25 
***       RTF (6) - RETURN FST FOR CATALOG OVERFLOW TRACK.
* 
*         ENTRY  (IR+3 - IR+4) = PARAMETER BLOCK ADDRESS. 
* 
*T ADDR   12/ EQ,12/ FT,12/ CT,12/ CS,12/ ST
*T,ADDR+1 48/ ,12/ OT 
*T,ADDR+2 60/ 
* 
*                EQ = EST ORDINAL.
*                FT = FIRST TRACK.
*                CT = CURRENT TRACK (IGNORED).
*                CS = CURRENT SECTOR (IGNORED). 
*                ST = STATUS (IGNORED). 
*                OT = OVERFLOW TRACK INDEX. 
* 
*         EXIT   (ADDR+2) = FST ENTRY FOR THE *OT*-TH OVERFLOW TRACK. 
* 
*T ADDR+2 12/ EQ,12/ FT,12/ CT,12/ CS,12/ ST
* 
*                EQ = EST ORDINAL.
*                FT = FIRST TRACK.
*                CT = FIRST TRACK.
*                CS = 0.
*                ST = 5.
  
  
 RTF6     LDCA   IR+3,2      RETURN LOCATION IN PARAMETER BLOCK 
          CWD    FS          WRITE REPLY
  
 RTF      SUBR               ENTRY/EXIT 
          LDCA   IR+3        READ PARAMETER BLOCK 
          CRD    FS 
          LDCA   IR+3,1 
          CRD    CM 
          LDD    CM+4 
          ZJN    RTF1        IF NO OVERFLOW TRACK INDEX 
          STD    CT 
          AOD    CT          INCREMENT FOR ENTRY INTO LOOP
          LDD    FS          EST ORDINAL
          LPC    3777 
          STD    T5 
          LDD    FS+1        TRACK
          LPC    3777 
          LMC    4000 
          STD    T6 
          LDN    0           SET FST FIELDS FOR RETURN
          STD    FS+3 
          LDN    5
          STD    FS+4 
          RJM    CMS         CHECK MASS STORAGE 
          NJN    RTF1        IF ERROR 
          LDD    FS+1        STARTING TRACK 
          LPC    3777 
          ADC    4000 
          RJM    VTB         VALIDATE TRACK BYTE
          ZJN    RTF2        IF TRACK BYTE VALID
 RTF1     ERROR  EROF        * INCORRECT OVERFLOW FST REQUEST.* 
  
 RTF2     SOD    CT          DECREMENT COUNTER
          ZJP    RTF6        IF DONE
          LDD    FS+1        TRACK
          STD    T6 
          SETMS  IO 
          RJM    PDS         PROCESS DEVICE STATUS
          LDM    SLM         SECTOR LIMIT 
          SBN    1           LAST SECTOR ON TRACK 
          STD    T7 
          LDC    BFMS 
          RJM    RDS         READ SECTOR
          PJN    RTF3        IF NO ERROR
          ERROR  ERSR        * INCORRECT SECTOR READ IN CATALOG SCAN.*
  
 RTF3     ENDMS 
          LDM    BFMS        GET LINK BYTE
          NJN    RFT4        IF NOT EOF/EOI 
          LDM    BFMS+1      GET SECOND LINK BYTE 
 RFT4     SHN    21-13
          PJN    RTF5        IF NOT LINK BYTE 
          SHN    -6 
          STD    FS+1 
          STD    FS+2 
          RJM    VTB         VALIDATE TRACK LINK BYTE 
          ZJP    RTF2        IF NO ERROR
 RTF5     ERROR  ERLS        * INCORRECT LINK BYTE IN CATALOG SCAN.*
 RWC      SPACE  4,25 
***       RWC (7) - REWRITE CATALOG SECTOR. 
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
*                RANDOM ADDRESS FOR REWRITE IN FET+6. 
*                SECTOR DATA IN CM BUFFER.
* 
*         EXIT   SECTOR REWRITTEN, FET UPDATED AND SET COMPLETE.
*                CRI NOT UPDATED, RR NOT CLEARED, FST POSITION
*                  IS THE TRACK AND SECTOR JUST WRITTEN.
* 
*                TO *ERR* IF ERROR; ERROR IDLE SET ON DEVICE
*                  IF UNRECOVERABLE MS ERROR RETURNED ON REWRITE
*                  OF CATALOG SECTOR. 
  
  
 RWC      SUBR               ENTRY/EXIT 
          LDN    5+2         MINIMUM FET LENGTH REQUIRED
          RJM    IFQ         INITIAL FET QUERY
          RJM    PIO         PRESET I/O 
          RJM    CMS         CHECK MASS STORAGE 
          NJN    RWC1        IF ERROR 
          LDD    FS+1        FIRST TRACK
          RJM    VTB         VALIDATE THAT TRACK IS ON LABEL TRT CHAIN
          ZJN    RWC2        IF NO ERROR
 RWC1     ERROR  ERCR        * INCORRECT CATALOG REWRITE REQUEST.*
  
 RWC2     NFA    FA,R        READ FNT 
          CRD    CM 
          LDD    CM+3 
          LPN    1
          ZJN    RWC3        IF FILE IN WRITE MODE
          ERROR  ERWL        * WRITE LOCK-OUT ON CATALOG FILE.* 
  
 RWC3     LDD    FS+1        FIRST TRACK
          STD    T6 
          LDCA   IR+3,6      RANDOM ADDRESS FROM FET (RR) 
          CRD    CM 
          LDD    CM+4 
          STD    RI+1        RANDOM INDEX 
          LDD    CM+3 
          STD    RI 
          LDN    0           ENSURE CURRENT TRT 
          RJM    CRA         CONVERT RANDOM ADDRESS 
          MJP    RWC1        IF ADDRESS NOT VALID 
          LDD    T6 
          LMD    FS+1 
          NJP    RWC1        IF TRACK IS NOT THE SAME AS FIRST TRACK
          LDD    T7          CHECK TRACK AT SECTOR LIMIT
          ADN    1
          STM    BFMS        NEXT SECTOR
          LMM    SLM
          ZJN    RWC4        IF AT LAST SECTOR IN TRACK 
          RJM    COB         CHECK OUTPUT BUFFER (GET WORDS IN BUFFER)
          MJP    RWC11       IF BUFFER ARGUMENT ERROR 
          STM    BFMS+1      WORDS IN SECTOR
          SBD    HN 
          ZJN    RWC5        IF FULL SECTOR 
          MJN    RWC6        IF SHORT SECTOR
          ERROR  ERWR        * INCORRECT WORD COUNT IN CAT REWRITE.*
  
 RWC4     SETMS  IO          READ TO OBTAIN LINK BYTES
          RJM    PDS         PROCESS DEVICE STATUS
          LDC    BFMS 
          RJM    RDS
          PJN    RWC8        IF NO ERROR
          ERROR  ERRR        * INCORRECT SECTOR READ IN CAT REWRITE.* 
  
 RWC5     LDC    214         *REWRITE* CODE 
          UJN    RWC7        SET *CIO* FUNCTION CODE
  
 RWC6     LDC    224         *REWRITER* CODE
 RWC7     STD    T3          SET *CIO* FUNCTION CODE
          LDCA   IR+3        GET *CIO* FUNCTION CODE FROM FET+0 
          CRD    CM 
          LDD    CM+4 
          LPC    1774        CODE FIELD 
          LMD    T3 
          ZJN    RWC12       IF *CIO* FUNCTION CODE MATCHES 
          ERROR  ERCC        * INCORRECT CIO CODE IN CAT REWRITE.*
  
 RWC8     LDM    BFMS        CHECK LINKAGE BYTES
          ZJN    RWC9        IF EOF OR EOI
          LMC    3777 
          ZJN    RWC9        IF SYSTEM SECTOR 
          RJM    COB         CHECK OUTPUT BUFFER (GET WORDS IN BUFFER)
          MJN    RWC10       IF BUFFER ARGUMENT ERROR 
          LMM    BFMS+1 
          ZJN    RWC12       IF SECTOR LENGTH DID NOT CHANGE
 RWC9     ENDMS 
          ERROR  ERLR        * CATALOG REWRITE LINK BYTE ERROR.*
  
 RWC10    ENDMS 
 RWC11    ERROR  ERBA        * BUFFER ARGUMENT ERROR.*
  
 RWC12    LDM    BFMS+1      NUMBER OF WORDS IN SECTOR
          STM    T3          NUMBER OF WORDS TO READ
          LDC    BFMS+2      PP BUFFER ADDRESS
          RJM    RBB         READ BINARY BUFFER 
          SETMS  IO,RW,EBMS 
          RJM    PDS         PROCESS DEVICE STATUS
          LDC    BFMS+WLSF
          RJM    WDS
          PJN    RWC13       IF NO ERROR
          LDC    ERWW        * MPF - INCORRECT WRITE IN CAT REWRITE.* 
          RJM    DFM
          RJM    LTD         LOG LOCATION TO DAYFILE
          RJM    FDD         LOG FAMILY NAME, DEVICE NUMBER TO DAYFILE
          LDN    STEI        SET ERROR IDLE STATUS
          RJM    SES
          SMSTF  GDEI 
          ERROR  EREI        * DEVICE ERROR IDLE SET.*
  
 RWC13    ENDMS 
          LDN    ZERL        UPDATE OUT POINTER IN FET
          CRD    CM 
          LDD    OT+1 
          STD    CM+4 
          LDD    OT 
          STD    CM+3 
          LDCA   IR+3,3 
          CWD    CM 
  
*         T6 AND T7 (CURRENT TRACK AND CURRENT SECTOR) ARE NOT
*         UPDATED TO REFLECT THE NEXT SECTOR TO AVOID THE NON-
*         STANDARD NEXT TRACK LINKAGE PROBLEM.  THUS, THE FST 
*         CURRENT POSITION WILL POINT AT THE SECTOR WRITTEN.
  
          RJM    CIO         COMPLETE I/O 
          LJM    RWCX        RETURN 
          TITLE  SUBROUTINES. 
 CDA      SPACE  4,15 
**        CDA - COMPUTE DISK ADDRESS. 
* 
*         ENTRY  (A) = CM ADDRESS OF RANDOM ADDRESS.
*                (T5) = EST ORDINAL.
* 
*         EXIT   (T6) = TRACK.
*                (T7) = SECTOR. 
*                (RI - RI+1) = RANDOM ADDRESS.
* 
*         USES   T6, CM - CM+4, RI - RI+1.
* 
*         CALLS  CRA. 
* 
*         MACROS ERROR, SFA.
  
  
 CDA      SUBR               ENTRY/EXIT 
          CRD    CM 
          LDD    CM+3 
          STD    RI 
          LDD    CM+4 
          STD    RI+1 
          SFA    EST,T5 
          ADK    EQDE 
          CRD    CM          READ EST ENTRY 
          LDD    CM+4 
          SHN    3           MST ADDRESS
          ADN    ALGL 
          CRD    CM 
          LDD    CM          FIRST TRACK OF IAPF CHAIN
          STD    T6 
          LDN    0           ENSURE CURRENT TRT 
          RJM    CRA         COMPUTE RANDOM ADDRESS 
          PJN    CDAX        IF ADDRESS IS IN TRACK CHAIN 
          ERROR  ERRA        * RANDOM ADDRESS NOT ON IAPF CHAIN.* 
 CFS      SPACE  4,10 
**        CFS - COMPLETE FET STATUS.
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
* 
*         EXIT   FET STATUS SET COMPLETE (IF FET ADDRESS VALID).
*                (IR+3 - IR+4) = 0 (IF FET STATUS SET COMPLETE).
* 
*         USES   CM - CM+4, IR+3 - IR+4.
* 
*         MACROS LDCA.
  
  
 CFS      SUBR               ENTRY/EXIT 
          LDCA   IR+3        FET ADDRESS
          CRD    CM 
          AOD    CM+4 
          LDCA   IR+3 
          CWD    CM 
          LDN    0           CLEAR FET ADDRESS
          STD    IR+3 
          STD    IR+4 
          UJN    CFSX        RETURN 
 CIO      SPACE  4,20 
**        CIO - COMPLETE I/O. 
* 
*         COMPLETE FST WRITE AND SET FET STATUS COMPLETE. 
* 
*         ENTRY  OPERATION COMPLETED ON FILE. 
*                (T5) = EST ORDINAL.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
* 
*         EXIT   FET STATUS SET COMPLETE. 
*                FST WRITTEN. 
* 
*         USES   FS - FS+4. 
* 
*         CALLS  CFS, SFC.
  
  
 CIO      SUBR               ENTRY/EXIT 
  
*         UPDATE FST ENTRY AND WRITE. 
  
          LDD    FS+4        SET FILE STATUS
          SCN    16 
          LMN    4
          STD    FS+4 
          LDD    T6          SET TRACK
          STD    FS+2 
          LDD    T7          SET SECTOR 
          STD    FS+3 
          LDD    T5          SET EST ORDINAL
          STD    FS 
          RJM    SFC         SET FST COMPLETE 
          RJM    CFS         COMPLETE FET STATUS
          UJP    CIOX        RETURN 
 CMS      SPACE  4,15 
**        CMS - CHECK MASS STORAGE. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = TRACK.
* 
*         EXIT   (A) = 0 IF NO ERROR. 
*                (TK) = LABEL TRACK.
* 
*         USES   T1, CM - CM+4. 
* 
*         MACROS SFA. 
  
  
 CMS1     LDN    1           INDICATE ERROR 
  
 CMS      SUBR               ENTRY/EXIT 
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    21-13
          PJN    CMS1        IF NOT MASS STORAGE
          LDD    CM+4        MST/10 
          STD    T1 
          SHN    3
          ADK    TDGL 
          CRD    CM 
          LDD    CM+2        LENGTH OF TRT
          ADD    TH          4000/4 
          SHN    2
          SBD    T6          REQUESTED TRACK
          MJN    CMS1        IF INCORRECT TRACK 
          LDD    T1 
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    CM+1        LABEL TRACK
          LPC    3777 
          ADC    4000 
          STD    TK 
          LDD    CM+3 
          ZJP    CMS1        IF NO CATALOG TRACKS 
          LDN    0           INDICATE NO ERROR
          UJP    CMSX        RETURN 
 FDD      SPACE  4,15 
**        FDD - LOG FAMILY NAME AND DEVICE NUMBER TO DAYFILE. 
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         EXIT   MESSAGE ISSUED.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  C2D, DFM.
* 
*         MACROS SFA. 
  
  
 FDD      SUBR               ENTRY/EXIT 
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4        GET MST ADDRESS
          SHN    3
          ADK    PFGL        READ FAMILY NAME / DEVICE NUMBER 
          CRM    FDDA+6,ON   MERGE INTO MESSAGE 
          LDM    FDDA+11     CONVERT DEVICE NUMBER
          RJM    C2D
          STM    FDDA+12     SET DEVICE NUMBER INTO MESSAGE 
          LDM    FDDA+11     BLANK FILL FAMILY NAME 
          SCN    77          CLEAR BINARY DEVICE NUMBER 
          ZJN    FDD1        IF TWO OR MORE BLANKS NEEDED 
          LMN    1R          MERGE SINGLE BLANK INTO MESSAGE
          STM    FDDA+11
          UJN    FDD4        ISSUE MESSAGE
  
 FDD1     LDC    2R          SET TWO BLANKS INTO MESSAGE
          STM    FDDA+11
          LDN    3           NUMBER OF BYTES MAY NEED TO BLANK FILL 
          STD    CM 
 FDD2     LDM    FDDA+5,CM
          NJN    FDD3        IF END OF FAMILY NAME FOUND
          LDC    2R          SET TWO MORE BLANKS INTO MESSAGE 
          STM    FDDA+5,CM
          SOD    CM          DECREMENT COUNTER
          NJN    FDD2        IF NOT DONE
          UJN    FDD4        ISSUE MESSAGE
  
 FDD3     LPN    77          CHECK IF SINGLE BLANK NEEDED 
          NJN    FDD4        IF NO BLANK NEEDED 
          LDM    FDDA+5,CM
          LMN    1R          SINGLE BLANK 
          STM    FDDA+5,CM
 FDD4     LDC    FDDA 
          RJM    DFM         ISSUE DAYFILE MESSAGE
          LJM    FDDX        RETURN 
  
  
 FDDA     DATA   C*MPF - FM DN FFFFFFF NN.* 
 IFQ      SPACE  4,15 
**        IFQ - INITIAL FET QUERY.
* 
*         VALIDATE THAT THE FET IS LONG ENOUGH, IS WITHIN FL, 
*         AND DOES NOT HAVE COMPLETE BIT SET. 
* 
*         ENTRY  (A) = MINIMUM FET LENGTH REQUIRED. 
*                (IR+3 - IR+4) = FET ADDRESS. 
* 
*         EXIT   TO *ERR* IF FET IS NOT VALID.
* 
*         USES   T2, T3, CM - CM+4. 
* 
*         CALLS  VCA. 
* 
*         MACROS LDCA.
  
  
 IFQ      SUBR               ENTRY/EXIT 
          STD    T3          REQUIRED FET LENGTH
          LDCA   IR+3        VALIDATE FET+0 ADDRESS 
          CRD    CM          CHECK COMPLETE BIT CLEAR 
          LDD    CM+4 
          LPN    1
          ZJN    IFQ1        IF COMPLETE BIT IS CLEAR 
          ERROR  ERFC        * FET COMPLETE BIT SET.* 
  
 IFQ1     LDCA   IR+3,1      GET FET LENGTH 
          CRD    CM 
          LDD    CM+3 
          SHN    -6 
          ADN    5
          STD    T2          CHECK FET LENGTH 
          SBD    T3 
          PJN    IFQ2        IF FET IS LONG ENOUGH
          ERROR  ERFS        * FET TOO SHORT.*
  
 IFQ2     LDD    IR+3        CHECK IF LAST WORD OF FET IS WITHIN FL 
          SHN    14 
          LMD    IR+4 
          ADD    T2 
          SBN    1
          RJM    VCA         VALIDATE CENTRAL ADDRESS 
          UJP    IFQX        RETURN 
 LTD      SPACE  4,10 
**        LTD - LOG LOCATION TO DAYFILE.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
* 
*         EXIT   MESSAGE ISSUED TO DAYFILE. 
* 
*         CALLS  C2D, DFM.
  
  
 LTD      SUBR               ENTRY/EXIT 
          LDD    T5          CONVERT EST ORDINAL
          RJM    C2D
          STM    LTDA+5 
          LDD    T5 
          SHN    -6 
          RJM    C2D
          STM    LTDA+4 
          LDD    T6          CONVERT TRACK
          RJM    C2D
          STM    LTDA+11
          LDD    T6 
          SHN    -6 
          RJM    C2D
          STM    LTDA+10
          LDD    T7          CONVERT SECTOR 
          RJM    C2D
          STM    LTDA+15
          LDD    T7 
          SHN    -6 
          RJM    C2D
          STM    LTDA+14
          LDC    LTDA        ISSUE MESSAGE
          RJM    DFM
          UJP    LTDX        RETURN 
  
  
 LTDA     DATA   C*MPF - EQXXXX  TKYYYY  SCZZZZ.* 
 PDS      SPACE  4,10 
**        PDS - PROCESS DEVICE STATUS.
* 
*         ENTRY  (MSD) = DEVICE STATUS UPON EXIT FROM *SETMS*.
*                (T5) = EST ORDINAL OF THE DEVICE.
*                DRIVER SOFTWARE IS LOADED. 
* 
*         EXIT   TO *ERR* IF DEVICE IS INACCESSIBLE.
* 
*         MACROS ENDMS, ERROR.
  
  
 PDS      SUBR               ENTRY/EXIT 
          LDM    MSD
          SHN    21-6 
          PJN    PDSX        IF DEVICE IS AVAILABLE, RETURN 
          ENDMS 
          ERROR  ERID        * INACCESSIBLE DEVICE.*
 PIO      SPACE  4,20 
**        PIO - PRESET I/O. 
* 
*         SET DIRECT CELLS FOR I/O OPERATION. 
* 
*         ENTRY  (IR+3 - IR+4) = VALIDATED FET ADDRESS. 
* 
*         EXIT   (FA) = FST ADDRESS OF FILE.
*                (FS - FS+4) = FST ENTRY FOR FILE.
*                (T5) = EST ORDINAL.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
*                (FT - FT+1) = FIRST. 
*                (IN - IN+1) = IN.
*                (OT - OT+1) = OUT. 
*                (LM - LM+1) = LIMIT. 
* 
*         CALLS  SBA, SFP, VBA. 
  
  
 PIO      SUBR               ENTRY/EXIT 
          RJM    SFP         SET FILE PARAMETERS
          RJM    SBA         SET BUFFER ADDRESSES 
          RJM    VBA         VALIDATE BUFFER ADDRESSES
          UJN    PIOX        RETURN 
 SBA      SPACE  4,15 
**        SBA - SET BUFFER ARGUMENTS. 
* 
*         READ BUFFER POINTERS INTO DIRECT CELLS. 
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
* 
*         EXIT   (FT - FT+1) = FIRST. 
*                (IN - IN+1) = IN.
*                (OT - OT+1) = OUT. 
*                (LM - LM+1) = LIMIT. 
* 
*         USES   CM - CM+4, FT - FT+1, IN - IN+1, LM - LM+1, OT - OT+1. 
  
  
 SBA      SUBR               ENTRY/EXIT 
          LDCA   IR+3,4      READ LIMIT 
          CRD    LM-3 
          SBN    1           READ OUT 
          CRD    OT-3 
          SBN    1           READ IN
          CRD    CM 
          LDD    CM+3 
          STD    IN 
          LDD    CM+4 
          STD    IN+1 
          LDCA   IR+3,1      READ FIRST 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          STD    FT 
          LDD    CM+4 
          STD    FT+1 
          UJP    SBAX        RETURN 
 SFC      SPACE  4,15 
**        SFC - SET FST COMPLETE. 
* 
*         ENTRY  (FS - FS+4) = FST. 
*                (FA) = FNT ADDRESS.
*                (FA) = 0, IF NO FILE CURRENTLY SET BUSY. 
* 
*         EXIT   FST SET COMPLETE AND WRITTEN TO CENTRAL. 
*                (FA) = 0.
* 
*         USES   FA, FS+4.
* 
*         MACROS NFA. 
  
  
 SFC      SUBR               ENTRY/EXIT 
          AOD    FS+4        SET STATUS COMPLETE
          LDD    FA 
          ZJN    SFCX        IF NO FST ADDRESS
          NFA    FA,R        WRITE FST
          ADK    FSTL 
          CWD    FS 
          LDN    0           CLEAR FNT ADDRESS
          STD    FA 
          UJN    SFCX        RETURN 
 SFP      SPACE  4,10 
**        SFP - SET FILE PARAMETERS.
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
* 
*         EXIT   (FA) = FNT ADDRESS.
*                (FS - FS+4) = FST ENTRY. 
*                (T5) = EST ORDINAL.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
*                FST SET BUSY.
* 
*         USES   FA, T5, T6, T7, FN - FN+4, FS - FS+4.
* 
*         CALLS  SAF, SFB.
* 
*         MACROS ERROR, LDCA. 
  
  
 SFP      SUBR               ENTRY/EXIT 
          LDCA   IR+3        READ FILE NAME 
          CRD    FN 
          LDCA   IR+3,4      READ FNT ADDRESS 
          CRD    FS 
          LDD    FS 
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          NJN    SFP1        IF FILE FOUND
          ERROR  ERNF        * FILE NOT FOUND.* 
  
 SFP1     RJM    SFB         SET FILE BUSY
          ZJN    SFP2        IF FILE SET BUSY 
          LDN    0           CLEAR FNT ADDRESS
          STD    FA 
          ERROR  ERIO        * I/O SEQUENCE ERROR.* 
  
 SFP2     LDD    FS 
          LPC    3777 
          STD    T5          EST ORDINAL
          LDD    FS+2 
          STD    T6          TRACK
          LDD    FS+3 
          STD    T7          SECTOR 
          UJP    SFPX        RETURN 
 VBA      SPACE  4,10 
**        VBA - VALIDATE BUFFER ADDRESSES.
* 
*         ENTRY  (FT - FT+1) = FIRST. 
*                (IN - IN+1) = IN.
*                (OT - OT+1) = OUT. 
*                (LM - LM+1) = LIMIT. 
* 
*         EXIT   TO *ERR* IF BUFFER ARGUMENT ERROR. 
* 
*         MACROS ERROR. 
  
  
 VBA      SUBR               ENTRY/EXIT 
          LDD    LM          CHECK LIMIT
          SHN    14 
          LMD    LM+1 
          SBN    1
          SHN    -6 
          SBD    FL 
          PJN    VBA1        IF LIMIT .GT. FL 
          LDD    OT          CHECK OUT
          SBD    LM 
          SHN    14 
          ADD    OT+1 
          SBD    LM+1 
          PJN    VBA1        IF OUT .GE. LIMIT
          LDD    OT 
          SBD    FT 
          SHN    14 
          ADD    OT+1 
          SBD    FT+1 
          MJN    VBA1        IF OUT .LT. FIRST
          LDD    IN          CHECK IN 
          SBD    LM 
          SHN    14 
          ADD    IN+1 
          SBD    LM+1 
          PJN    VBA1        IF IN .GE. LIMIT 
          LDD    IN 
          SBD    FT 
          SHN    14 
          ADD    IN+1 
          SBD    FT+1 
          MJN    VBA1        IF IN .LT. FIRST 
          UJP    VBAX        RETURN 
  
 VBA1     ERROR  ERBA        * BUFFER ARGUMENT ERROR.*
 VCA      SPACE  4,10 
**        VCA - VALIDATE CENTRAL ADDRESS. 
* 
*         ENTRY  (A) = RELATIVE ADDRESS.
* 
*         EXIT   (A) = ABSOLUTE ADDRESS IF ADDRESS VALID. 
* 
*         USES   T1, T2.
* 
*         MACROS ERROR. 
  
  
 VCA      SUBR
          STD    T2 
          SCN    1
          ZJN    VCA1        IF ADDRESS .LE. 1
          SCN    77 
          SHN    6
          STD    T1 
          SHN    6
          SBD    FL 
          PJN    VCA1        IF ADDRESS .GE. FL 
          LDD    T1          FORM ABSOLUTE ADDRESS
          SHN    6
          ADD    RA 
          SHN    6
          ADD    T2 
          UJP    VCAX        RETURN 
  
 VCA1     ERROR  ERAR        * ADDRESS OUT OF RANGE.* 
 VTB      SPACE  4,10 
**        VTB - VALIDATE TRACK LINK BYTE. 
* 
*         ENTRY  (A) = TRACK LINK BYTE TO VALIDATE. 
*                (TK) = LABEL TRACK.
*                (T5) = EST ORDINAL.
* 
*         EXIT   (A) = 0 IF NO ERROR. 
* 
*         USES   T1, T2, T6, CM - CM+4. 
* 
*         CALLS  SNT. 
* 
*         MACROS MONITOR. 
  
  
 VTB      SUBR               ENTRY/EXIT 
          STD    T2          SAVE BYTE
          LDD    TK          LABEL TRACK
          STD    T6 
          LDN    UTRS        SET SUBFUNCTION CODE 
          STD    CM+3 
          LDD    T5          SET EST ORDINAL
          STD    CM+1 
          MONITOR  STBM      GET CURRENT TRT
 VTB1     RJM    SNT         GET LINK 
          STD    T6 
          LMD    T2 
          ZJN    VTB3        IF LINKED TO REQUESTED TRACK BYTE
          LDD    T6 
          SHN    21-13
          MJN    VTB1        IF LINK BYTE 
 VTB2     LDN    1           INDICATE ERROR 
          UJN    VTBX        RETURN 
  
 VTB3     LDD    T6 
          SHN    21-13
          PJN    VTB2        IF NOT A LINK BYTE 
          RJM    SNT
          LDD    T1 
          ADC    SHNI+6+14-4
          STM    VTBA 
          LDD    CM+4 
 VTBA     SHN    ** 
          PJN    VTB2        IF NOT RESERVED
          LDN    0           INDICATE NO ERROR
          UJP    VTBX        RETURN 
          TITLE  BUFFER ALLOCATION. 
          SPACE  4,10 
*         BUFFER ALLOCATION.
  
  
 WEIA     BSSZ   WCEI*5+2    EOI SECTOR BUFFER (FOR *COMPWEI*)
  
 EBMS     EQU    BFMS-502    MASS STORAGE ERROR BUFFER
          TITLE  COMMON DECKS.
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPCOB 
 CRA$     EQU    0           ENSURE CURRENT TRT 
*CALL     COMPCRA 
*CALL     COMPCRS 
*CALL     COMPC2D 
*CALL     COMPRBB 
 RIS$     EQU    1           READ IAPF SYSTEM SECTOR
*CALL     COMPRSS 
 SAF$     EQU    0           SEARCH SPECIFIC ENTRY FIRST
*CALL     COMPSAF 
*CALL     COMPSES 
*CALL     COMPSFB 
*CALL     COMPSNT 
*CALL     COMPTGB 
*CALL     COMPWEI 
          SPACE  4,10 
          ERRPL  *-EBMS      OVERFLOW INTO MS ERROR BUFFER
          ERRPL  *-BFMS      OVERFLOW INTO MS BUFFER
          TITLE  PRESET.
 PRS      SPACE  4,15 
**        PRS - PRESET. 
* 
*         ENTRY  (IR+2) = FUNCTION CODE.
* 
*         EXIT   (T1) = FUNCTION PROCESSOR ADDRESS. 
* 
*         USES   FA, T1, CM - CM+4. 
* 
*         CALLS  CRS. 
* 
*         MACROS ERROR. 
  
  
 PRS      SUBR
          LDN    0           CLEAR FST ADDRESS
          STD    FA 
          LDD    CP          CHECK IF CALLER IS *SSJ=*
          ADK    SEPW 
          CRD    CM 
          LDD    CM 
          SHN    21-2 
          MJN    PRS2        IF CALLER IS *SSJ=*
 PRS1     ERROR  ERIC        * INCORRECT CALL.* 
  
 PRS2     RJM    CRS
          ZJN    PRS1        IF NOT CALLED WITH AUTO RECALL 
          LDD    IR+2 
          STD    T1          FUNCTION CODE
          SBN    TFCNL
          MJN    PRS4        IF LEGAL FUNCTION
 PRS3     ERROR  ERIF        * INCORRECT FUNCTION.* 
  
 PRS4     LDM    TFCN,T1     FUNCION PROCESSOR ADDRESS
          STD    T1 
          ZJN    PRS3        IF INCORRECT FUNCTION
          UJP    PRSX        RETURN 
          SPACE  4,10 
*         TFCN - TABLE OF FUNCTION PROCESSORS.
  
  
 TFCN     BSS    0
          CON    DTK         DROP TRACKS
          CON    RWE         REWRITE END OF INFORMATION 
          CON    DLK         DELINK TRACKS
          CON    0           (RESERVED) 
          CON    RSC         READ SYSTEM SECTOR 
          CON    WSC         WRITE SYSTEM SECTOR
          CON    RTF         RETURN FST FOR CATALOG OVERFLOW TRACK
          CON    RWC         REWRITE CATALOG SECTOR 
 TFCNL    EQU    *-TFCN 
          SPACE  4,10 
          OVERFLOW  PPFW,EPFW 
          SPACE  4
          END 
