SFP 
          IDENT  SFP,SFP
          PERIPH
          BASE   MIXED
 QUAL$    EQU    1           DEFINES UNQUALIFIED COMMON DECKS 
          SST 
          SYSCOM
*COMMENT  SFP - SCOPE FUNCTION PROCESSOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  SFP - SCOPE FUNCTION PROCESSOR.
          SPACE  4,10 
*****     SFP - SCOPE FUNCTION PROCESSOR. 
*         D. J. TAYLOR.  72/09/27.
          SPACE  4,10 
***              *SFP* IS A FUNCTION PROCESSOR WHICH IS CALLED BY THE 
*         PPR SUBROUTINE *PLL* WHENEVER *PLL* IS UNABLE TO FIND A 
*         REQUESTED PP PROGRAM. *SFP* WILL CHECK THE REQUESTED PP 
*         PACKAGE AGAINST A TABLE OF ACCEPTABLE PP PACKAGE CALLS AND, 
*         IF LEGAL, WILL CALL THE ASSOCIATED FUNCTION PROCESSOR TO
*         PROCESS THE REQUEST. THE FUNCTION PROCESSORS ARE DESIGNED 
*         TO PROVIDE *SCOPE 3.4* CAPABILITY.
          SPACE  4,10 
***       CALL. 
* 
* 
*         *SFP* IS CALLED DIRECTLY BY THE PPR SUBROUTINE *PLL*. 
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
* 
*         (IR - IR+4) = ORGINAL PP PROGRAM CALL.
*         (PLLA - PLLA+1) = PP PACKAGE BEING CALLED.
          SPACE  4,10 
***       FUNCTIONS.
* 
*         THE FOLLOWING ARE THOSE PP PACKAGES WHO HAVE A ASSOCIATED 
*         FUNCTION PROCESSOR -
* 
*         STS - *SCOPE 3.4* STATUS PACKAGE
*         MSD - *SCOPE 3.4* SDA/SIS MESSAGE GENERATOR 
*         PFE - *SCOPE 3.4* EXTEND/ALTER FUNCTION 
*         ACE - *SCOPE 3.4* ADVANCE COMMAND.
*         CKP - *SCOPE 3.4* CHECKPOINT
*         REQ - *SCOPE 3.4* REQUEST CALL
*         DMB - DUMP CM/EXTENDED MEMORY FIELD LENGTH IN BINARY. 
*         DMM - DUMP MACHINE MEMORY.
*         DMP - DUMP FIELD LENGTH 
*         DMD - DUMP FIELD LENGTH - DISPLAY CODE
*         DEP - DUMP EXTENDED MEMORY FIELD LENGTH 
*         DED - DUMP EXTENDED MEMORY FIELD LENGTH - DISPLAY CODE
*         PRM - *SCOPE 3.4* PERMISSION CHECKING FUNCTION
*         D00 - *SCOPE 3.4* ERROR TEXT PROCESSOR
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         *XXX NOT IN PP LIB.*
*                THE PP PACKAGE, XXX, WAS NOT FOUND IN THE PPU
*                LIBRARIES. 
* 
*         *XXX NOT IN PP LIB. CALLED BY YYY.* 
*                THE PP PACKAGE, XXX, WAS CALLED BY THE PP PROGRAM, 
*                YYY, AND WAS NOT FOUND IN THE PPU LIBRARIES. 
* 
*         * SFP CALL ERROR.*
*                *SFP* WAS CALLED DIRECTLY AND NOT BY *PLL*.
* 
*         * SFP/XXX PARAMETER ERROR.* 
*                THE PARAMETER ADDRESS SPECIFIED IN THE INPUT REGISTER
*                IS OUT OF RANGE. THE PROGRAM BEING CALLED IS XXX.
* 
*         *MONITOR CALL ERROR.* 
*                THIS MESSAGE IS DETECTED BY *SFP* BUT IS ISSUED BY 
*                *1AJ*. 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSMSC 
*CALL     COMSMSP 
          QUAL   COMSMTX
*CALL     COMSMTX 
          QUAL   *
*CALL     COMSPIM 
*CALL     COMSWEI 
  
          TITLE  MACRO DEFINITIONS. 
 EMESS    SPACE  4,20 
**        EMESS - GENERATE ERROR MESSAGE
* 
*         EMESS  TYPE,KEY,ERR,COM,RET,CODE,(MESSAGE)
* 
*         TYPE   ERROR TYPE. MUST BE EITHER *FA* - FATAL OR 
*                *TR* - TRIVAL. 
* 
*         KEY   KEY PROCESSING. MUST BE EITHER *KY* - KEY 
*               PROCESSING REQUIRED, OR *NK* - NO KEY 
*               PROCESSING REQUIRED.
* 
*         ERR   MESSAGE CODE ORDINAL MINUS TABLE OFFSET. THIS 
*               PARAMETER MUST BE 3 CHARACTERS LONG IN MACRO
*               CALL. 
* 
*         COM   COMMENT TO ERROR FILE. MUST BE EITHER *CM* -
*               COMMENT TO ERROR FILE, OR *NC* - NO COMMENT TO
*               ERROR FILE. 
* 
*         RET   RETURN FLAG. MUST BE EITHER *RT* - USER EXITS 
*               ROUTINE AT ENTRY POINT, OR *NR* - USER EXITS
*               BY A JUMP INSTRUCTION.
* 
*         CODE  RETURN CODE. A FOUR LETTER RETURN CODE
*               INFORMING THE USER OF AN ERROR. 
* 
*         MESSAGE   ERROR MESSAGE. NO LEADING BLANKS ALLOWED. 
*                   IF FIRST CHARACTER A BLANK, MESSAGE MUST
*                   START IN COLUMN 2 OF A FOLLOWING CONTINUATION 
*                   COMMAND.
  
  
          PURGMAC EMESS 
  
  
 EMESS    MACRO  TY,KE,ER,CT,RC,CD,MS 
 .K       MICRO  1,1,*MS* 
          IFC    NE,*".K"* *
 .K       MICRO  1,,*MS*
          ELSE   4
 .K       MICRO  34,1,*MS*
          IFC    EQ,*".K"**,1 
          ERR    * -MESSAGE- NOT STARTED IN COL 2 OF CONT. LINE.* 
 .K       MICRO  34,,*MS* 
          IFC    EQ,*TY*FA* 
          VFD    1/1
          ELSE   3
          IFC    NE,*TY*TR*,1 
          ERR    * INCORRECT -TYPE- PARAMETER.* 
          VFD    1/0
          IFC    EQ,*KE*KY* 
          VFD    1/1
          ELSE   3
          IFC    NE,*KE*NK*,1 
          ERR    * INCORRECT -KEY- PARAMETER.*
          VFD    1/0
          IFC    EQ,*ER**,1 
          ERR    * UNDEFINED -ERR- PARAMETER.*
          VFD    9/ER 
          IFC    EQ,*CT*CM* 
          VFD    1/1
          ELSE   3
          IFC    NE,*CT*NC*,1 
          ERR    * INCORRECT -COM- PARAMETER.*
          VFD    1/0
          IFC    EQ,*RC*RT* 
          VFD    1/0
          ELSE   3
          IFC    NE,*RC*NR*,1 
          ERR    * INCORRECT -RET* PARAMETER.*
          VFD    1/1
          IFC    EQ,*CD**,1 
          ERR    * UNDEFINED -CODE- PARAMETER.* 
          VFD    2/0
          VFD    9/CD 
          DATA   C*".K"*
 EMESS    ENDM
 ENTRY    SPACE  4,10 
**        ENTRY - DEFINE OVERLAY ENTRY POINT. 
* 
*         ENTRY  NAME 
* 
*         NAME     NAME OF ENTRY ADDRESS
  
  
          PURGMAC ENTRY 
  
 ENTRY    MACRO  NAME 
          QUAL
 NAME     EQU    *+1R".M"*10000 
          QUAL   ".O" 
 ENTRY    ENDM
 FCN      SPACE  4,10 
**        FCN - DEFINE FUNCTION PROCESSOR.
* 
* 
* CALL    FCN    NAME,CHECK 
* 
*         CALL    NAME OF CALLING PP PACKAGE. 
* 
*         NAME    NAME OF ASSOCIATED FUNCTION PROCESSOR.
* 
*         CHECK   IF DEFINED, A VALID PARAMETER ADDRESS IS
*                 CONTAINED IN BITS 0 - 17 OF CALL. 
  
  
          PURGMAC  FCN
  
          MACRO  FCN,A,B,C
          NOREF  .I 
 .I       SET    0
          LOC    .I/3 
          IFC    EQ,*C**
          VFD    1/1
          ELSE   1
          VFD    1/0
          VFD    5/B/10000
 .J       MICRO  1,,*A* 
          VFD    18/3L".J"
          CON    B-B/10000*10000
 .I       SET    .I+3 
          ENDM
 LDA      SPACE  4,10 
**        LDA - FORM ABSOLUTE CM ADDRESS. 
* 
*         LDA    X,M
* 
*         X      DIRECT CELLS CONTAINING RELATIVE ADDRESS 
* 
*         M      IF SPECIFIED, ONLY LOWER 17 BITS OF (X - X+1)
*                ARE USED.
  
          PURGMAC  LDA
  
 LDA      MACRO  X,M
          LDD    X
          IFC    NE,*M**,1
          LPN    37 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    X+1
 LDA      ENDM
 OVERLAY  SPACE  4,10 
**        OVERLAY - GENERATE OVERLAY CONSTANTS. 
* 
*         OVERLAY (TEXT)
* 
*         TEXT     TEXT OF SUBTITLE.
  
  
          PURGMAC OVERLAY 
  
*         OVERLAY CONTROL.
  
  
 .N       SET    0
 OVLB     MICRO  1,, 2S      BASE OVERLAY NAME
  
 OVERLAY  MACRO  TEXT 
          QUAL
 .N       SET    .N+1 
 .M       MICRO  .N,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 
 .O       MICRO  1,3, "OVLB"".M"
          QUAL   ".O" 
          TTL    SFP/".O" - TEXT
          TITLE 
          IDENT  ".O",OVL    TEXT 
*COMMENT  SFP - TEXT
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    OVL
          LJM    *
          UJN    *-2
 OVERLAY  ENDM
          TITLE  DIRECT LOCATION ASSIGNMENTS. 
*         DIRECT LOCATION ASSIGNMENTS.
  
 FS       EQU    20 - 24     FST ENTRY (5 LOCATIONS)
 CN       EQU    30 - 34     CM WORD BUFFER (5 LOCATIONS) 
 PN       EQU    35 - 36     PACKAGE NAME (2 LOCATIONS) 
 PI       EQU    37          PARAMETER AREA INDEX 
 EI       EQU    46          ERROR NUMBER 
 OC       EQU    47          JOB ORGIN CODE 
 FN       EQU    40 - 44     FILE NAME (5 LOCATIONS)
 FA       EQU    57          ADDRESS OF FNT ENTRY 
 SP       EQU    60 - 64     COMMAND POINTER (5 LOCATIONS)
 SFP      TITLE  MAIN PROGRAM.
**        MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 SFP      PSN                ENTRY FROM *PPR* 
          PSN                SPACE FOR RETURN JUMP FROM *EXR* 
          RJM    PRS         PRESET  (ENTRY FROM *EXR*) 
 SFP1     LDC    0
 SFPA     EQU    *-1         (OVERLAY NAME) 
          ZJN    SFP2        IF NO OVERLAY REQUIRED 
          LMC    2L"OVLB"    LOAD OVERLAY 
          RJM    EXR
 SFP2     LJM    *           PROCESS REQUEST
 SFPB     EQU    *-1
  
 SFPX     MONITOR DPPM       DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
 ERR      SPACE  4,10 
**        ERR - PROCESS ERROR.
* 
*         ENTRY  (A) = ERROR NUMBER.
  
  
 ERR      STD    EI 
          LDC    ERP
          STM    SFPB        SET ERROR PROCESSING ENTRY 
          SHN    -14
          STM    SFPA        SET OVERLAY NAME 
          UJN    SFP1        LOAD ERROR PROCESSING OVERLAY
  
 ERRA     BSS    5           STORAGE FOR ERROR TEXT DECK NAME 
 ERRB     BSS    1           STORAGE FOR ERROR TEXT MESSAGE NUMBER
 MSR      SPACE  4,10 
**        MSR - PROCESS MASS STORAGE ERROR. 
* 
*         ENTRY  (T5) = EST ORDINAL OF DEVICE WITH ERROR. 
* 
*         EXIT   TO *SFPX* IF ERROR IS NOT RECOVERABLE OR ROLLABLE. 
*                TO *1RJ* TO ROLL JOB IF ERROR IS RECOVERABLE AND 
*                JOB IS ROLLABLE. 
  
  
 MSR      BSS    0           ENTRY
          LDM    RDCT        CHECK FOR NON-RECOVERABLE ERROR
          SHN    21-12
          MJN    MSR1        IF NON-RECOVERABLE MASS STORAGE ERROR
          LDM    MSD         CHECK FOR SUBSYSTEM
          SHN    21-13
          PJN    MSR1        IF SUBSYSTEM, RETURN ERROR 
          LDD    T5          EST ORDINAL OF DEVICE
          STD    IR+4 
          EXECUTE  1RJ       ROLL JOB 
*         LJM    PPR         DOES NOT RETURN
  
 MSR1     MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT 
  
          USE    OVERLAY
 OVL      EQU    *+10 
          TITLE  SUBROUTINES WHICH MAY BE OVERLAID. 
 PRS      SPACE  4,30 
**        PRS - PRESET PROGRAM. 
* 
*                CHECKS THE PP PACKAGE FOR WHICH *PLL* COULD NOT FIND 
*         THE ASSOCIATED ROUTINE AGAINST A TABLE OF SPECIAL FUNCTIONS 
*         ACCEPTABLE. IF PACKAGE ACCEPTABLE AS SPECIAL FUNCTION, A
*         CHECK IS PERFORMED FOR VALID FUNCTION CODE AND PARAMETER
*         ADDRESS WITHIN USER AREA. 
* 
*         ENTRY  (IR) = ADDRESS OF REQUESTING PP PROGRAM. 
*                (PLLA) = FIRST CHARACTER OF PP PACKAGE BEING CALLED. 
*                (PLLB) = SECOND AND THIRD CHARACTERS OF PACKAGE NAME.
* 
*         EXIT   *SFPA* = FUNCTION PROCESSOR NAME.
*                *SFPB* = FUNCTION PROCESSOR ENTRY ADDRESS
*                (PN - PN+1) = PACKAGE NAME.
* 
*         USES   T6, PN - PN+1. 
* 
*         MACROS PAUSE. 
  
 PRS      SUBR               ENTRY/EXIT 
          LDM    PLLA        STORE PACKAGE NAME 
          STD    PN 
          LDM    PLLB 
          STD    PN+1 
  
*         CHECK FOR LEGAL PP PACKAGE CALL.
  
          LDC    TFCN-3      SET START OF FUNCTION TABLE
          STD    T6 
 PRS1     LDN    3           ADVANCE TABLE ADDRESS
          RAD    T6 
          LDI    T6 
          LPN    77 
          ZJN    PRS4        IF NOT IN TABLE
          LMD    PN          COMPARE NAME 
          SHN    14 
          LMM    1,T6 
          LMD    PN+1 
          NJN    PRS1        IF NO MATCH
  
*         SET PROCESSOR PARAMETERS. 
  
          LDM    2,T6        SET PROCESSOR ADDRESS
          STM    SFPB 
          LDI    T6          SET OVERLAY
          SHN    -6 
          LPN    37 
          STM    SFPA 
          LDI    T6          CHECK PARAMETER PRESENT
          SHN    -13
          NJN    PRS5        IF NO PARAMETER CHECK
          LDD    IR+3        CHECK PARAMETER ADDRESS
          LPN    77 
          SHN    14 
          LMD    IR+4 
          SHN    -1 
          ZJN    PRS3        IF INCORRECT REQUEST 
          SHN    -5 
          SBD    FL 
          MJN    PRS5        IF ADDRESS IN FL 
 PRS3     LDN    /ERR/PAE&/ERR/PCE  *SFP/XXX PARAMETER ERROR.*
 PRS4     LMN    /ERR/PCE    *MONITOR CALL ERROR.*
          LJM    ERR
  
 PRS5     LJM    PRSX        RETURN 
 TFCN     SPACE  4,10 
**        TFCN - TABLE OF FUNCTION CODE PROCESSORS. 
* 
*         ENTRY  3 WORDS. 
* 
*T        1/  C,5/  OV,18/  PP PACKAGE,12/  ADDR
* 
*         PP PACKAGE - NAME OF LEGAL PP PACKAGE CALL
*         OV     OVERLAY NAME 
*         ADDR   ADDRESS OF FUNCTION PROCESSOR
*         C      0 IF TO CHECK PARAMETER ADDRESS
  
  
 TFCN     BSS    0
  
 STS      FCN    STS,C       STATUS PROCESSOR 
 MSD      FCN    EMG,C       SDA/SIS MESSAGE GENERATOR
 PFE      FCN    PFE,C       *ALTER* FUNCTION 
 ACE      FCN    ACE,C       ADVANCE COMMAND
 PRM      FCN    PRM,C       PERMISSION CHECKING FUNCTION 
 CKP      FCN    CKP         *SCOPE 3.4* CHECKPOINT REQUEST 
 REQ      FCN    REQ,C       *SCOPE 3.4* REQUEST
 DMB      FCN    DMP         DUMP CM/ECS FIELD LENGTH REQUEST - BINARY
 DMM      FCN    DMP         DUMP MACHINE MEMORY REQUEST
 DMP      FCN    DMP         DUMP FIELD LENGTH REQUEST
 DMD      FCN    DMP         DUMP FIELD LENGTH REQUEST - DISPLAY CODE 
 DEP      FCN    DEP         DUMP EXTENDED MEMORY FIELD LENGTH REQUEST
 DED      FCN    DEP         DUMP ECS FL REQUEST - DISPLAY CODE 
 D00      FCN    D00,C       ERROR TEXT PROCESSOR 
 FIN      FCN    FIN,C       FILE INFORMATION REQUEST 
 SFP      FCN    ERR         DETECT INCORRECT DIRECT CALL 
          ERRNZ  /ERR/SCE-0  INSURE DIRECT CALL ERROR IS ZERO 
  
          LOC    *O 
          CON    0           TERMINATE TABLE
  
          OVERFLOW
          OVERLAY (STS - STATUS PROCESSOR.) 
 STE      SPACE  4
          ENTRY  STS         ENTRY
          LDA    IR+3 
          CRD    SP          READ STATUS HEADER 
          LDN    0
          STD    SP+2        CLEAR RETURN LENGTH
          LDD    SP+1 
          NJN    STS2        IF LIST LENGTH .NE. 0
 STS1     LDN    /ERR/PAE 
          LJM    ERR         *PARAMETER ERROR*
  
 STS2     LDD    IR+3 
          SHN    14 
          LMD    IR+4 
          ADD    SP+1        CHECK LIST LENGTH
          ADN    1
          SHN    -6 
          SBD    FL 
          PJN    STS1        IF END OF LIST BEYOND FL 
          LDD    IR+2 
          NJN    STS4        IF FUNCTION CODE .NE. 0
 STS3     LDN    /ERR/IAF    * SFP/STS INCORRECT FUNCTION CODE.*
          LJM    ERR         PROCESS ERROR
  
 STS4     SBN    TSTSL
          PJN    STS3        IF FUNCTION OUT OF RANGE 
          LDM    TSTS-1,IR+2
          STD    T2          SET PROCESSOR ADDRESS
          LJM    0,T2 
  
  
**        TSTS - TABLE OF STS FUNCTIONS PROCESSORS. 
* 
*T        12/ ADDR
* 
*         ADDR   FUNCTION ADDRESS 
  
  
 TSTS     BSS    0
          LOC    1
          CON    STE
          CON    STF
          CON    STP
 TSTSL    EQU    *           *TSTS* TABLE LENGTH
          LOC    *O 
 SES      SPACE  4,10 
**        SES - SET EXIT STATUS.
* 
*         EXIT   FUNCTION SET COMPLETE. 
* 
*         USES   SP+4.
* 
*         MACROS LDA. 
  
  
 SES      LDN    1
          STD    SP+4        SET FUNCTION COMPLETE
          LDA    IR+3 
          CWD    SP 
          LJM    SFPX        RETURN 
          EJECT 
 STE      SPACE  4,30 
***       FUNCTION 01 - RETURN MASS STORAGE DEVICES STATUS. 
* 
*                RETURNS STATUS OF MASS STORAGE DEVICES STARTING AT 
*         ADDRESS+1 OF ADDRESS CONTAINED IN BITS 0 - 17 OF PROGRAM
*         CALL. RETURN AREA IS DEFINED BY ADDRESS - 
* 
* 
*T  ADR   12/ ,12/ LL,12/ LR,23/ ,1/A 
* 
*         LL     NUMBER OF WORDS, EXCLUDING THIS HEADER WORD, TO BE 
*                USED FOR RETURN INFORMATION; MUST BE SET BY USER TO
*                OTHER THAN 0.
* 
*         LR     NUMBER OF STATUS WORDS RETURNED. 
* 
*         A      AUTO RECALL REPLY; SET TO 0 BY USER AND SET TO 1 WHEN
*                REQUEST IS COMPLETE. 
* 
* 
*                THE MASS STORAGE DEVICE STATUS IS RETURNED, 1 WORD 
*         PER DEVICE, IN THE FOLLOWING FORMAT - 
* 
* 
*T ADR+N  3/ ,9/ STATUS,12/ DEV TYPE,12/ EST ORD,6/ CHAN,6/ EQ,12/ PRUS 
* 
*         STATUS   000 - NOT AVAILABLE, OFF, NOT IN USE 
*                  040 - UNLOADED PACK
*                  120 - *NOS* SYSTEM ROUTINES
*                  140 - *NOS* SYSTEM ROUTINES ON PACK
*                  620 - CONTAINS PERMANENT FILES 
*                  640 - PACK WITH PERMANENT FILES
*                  700 - *NOS* SYSTEM AND PERMANENT FILES 
*                  740 - *NOS* SYSTEM AND PERM FILES ON PACK
* 
*         DEV TYPE   *SCOPE 3.4* HARDWARE MNEMONIC IN DISPLAY CODE. 
*                    AZ - 844-41 DISK SYSTEM
* 
*         PRUS   NUMBER OF PRUS/100 OCTAL OF SPACE REMAINING ON THE 
*                DEVICE. A VALUE OF 7777 INDICATES AT LEAST 262,100 
*                PRUS AVAILABLE.
  
  
 STE      BSS    0           ENTRY
          LDC    =C$ **** ENDING SUPPORT OF STS FUNCTION 01 ****.$
          RJM    DFM
          LDN    ESTP 
          CRD    T6          READ EST POINTER 
          LDD    T6+3        SET LAST MASS STORAGE ORDINAL + 1
          STD    T7 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    CN+2 
 STE1     ZJN    SES         IF END OF LIST 
 STE2     AOD    CN+2 
          LMD    T7 
          ZJN    SES         IF END OF MS ENTRIES 
          SFA    EST,CN+2    READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM          CHECK MS DEVICE
          SHN    21-13
          PJN    STE2        IF NOT MASS STORAGE
          SHN    13-6 
          PJN    STE3        IF DEVICE AVAILABLE
          LDN    0
 STE3     SHN    -1          FORM INDEX TO STATUS TABLE 
          LPN    5
          STD    T2 
          LDD    CM+4        CHECK PERMANENT FILE STATUS
          SHN    3
          ADN    PUGL 
          CRD    FN 
          LDD    FN+3 
          LPN    17 
          ADD    FN+4 
          ZJN    STE4        IF NOT A PERMANENT FILE DEVICE 
          LDN    2
          RAD    T2 
 STE4     LDM    TSTE,T2     SET DEVICE STATUS
          STD    CN 
          LDD    CM+2 
          LPC    7000        EXTRACT EQUIPMENT
          SHN    3
          LMD    CM+1        MERGE CHANNEL
          SHN    6
          STD    CN+3        STORE CHANNEL/EQUIPMENT
          RJM    SDT
          STD    CN+1        SET DEVICE MNEMONIC
          LDD    CM 
          LPN    3
          ZJN    STE5        IF DEVICE LOGICALLY *ON* 
          LDN    0
          STD    CN          CLEAR STATUS BYTE
 STE5     LDD    CM+4 
          SHN    3           READ MST FOR DEVICE
          ADK    TDGL 
          CRD    CM 
          LDD    CM 
          SHN    14          FORM AVAILABLE SECTOR COUNT
          LMD    CM+1 
          SHN    -6          SECTOR COUNT / 100B
          STD    CN+4 
          AOD    SP+2        BUMP WORDS RETURNED COUNT
          LDA    IR+3 
          ADD    SP+2        COPY ENTRY TO CM 
          CWD    CN 
          LDD    SP+1        CHECK FOR END OF LIST
          LMD    SP+2 
          LJM    STE1        LOOP 
  
  
 TSTE     CON    0           TABLE OF DEVICE STATUS RETURNED
  
          LOC    0
          VFD    12/0040     UNLOAD PACK
          VFD    12/0620     CONTAINS PERMANENT FILES 
          VFD    12/0640     PACK WITH PERMANENT FILES
          VFD    12/0120     *NOS* SYSTEM ROUTINES
          VFD    12/0140     *NOS* SYSTEM ROUTINES ON PACK
          VFD    12/0700     *NOS* SYSTEM AND PERMANENT FILES 
          VFD    12/0740     *NOS* SYSTEM AND PERM FILES ON PACK
          LOC    *O 
 STF      SPACE  4,30 
***       FUNCTION 02 - RETURN FILE STATUS. 
* 
*                RETURNS TO THE CALLING PROGRAM THE FNT/FST ENTRIES 
*         OF FILES REQUESTED WHOSE NAMES ARE SET IN EVERY THIRD 
*         LOCATION STARTING WITH PARM+1 OF ADDRESS CONTAINED IN THE 
*         *PARM* FIELD OF THE CALLING PROGRAM. IF THE FILE EXISTS,
*         THE FILE NAME WILL BE REPLACED BY THE FNT/FST OF *NOS*
*         MAPPED INTO THE *SCOPE 3.4* FNT/FST. IF THE FILE
*         DOES NOT EXIST, THE FILE NAME WILL BE ZEROED OUT. 
* 
*         FORMAT OF LOCATION POINTED TO BY *PARM* - 
* 
* 
*T PARM   12/ ,12/ LL,12/ LR,23/ ,1/A 
* 
*         LL     NUMBER OF WORDS, EXCLUDING THIS HEADER WORD, TO BE 
*                USED FOR RETURN INFORMATION; MUST BE SET BY USER TO
*                A MULTIPLE OF THREE. 
* 
*         LR     LENGTH OF STATUS AREA RETURNED.
* 
*         A      AUTO RECALL REPLY - SET TO ZERO BY USER AND SET TO ONE 
*                WHEN REQUEST IS COMPLETE.
* 
*         FORMAT OF MAPPED 3 WORD *NOS* FNT/FST.
* 
*T        42/ FILE NAME, 18/ 0
*T,       12/ DEVT, 48/ 0 
*T,       36/ 0, 4/ PERM, 20/ 0 
  
  
 STF      BSS    0           ENTRY
          LDN    SSTL        CHECK LOGGING ENABLED
          CRD    CM 
          LDD    CM+3 
          SHN    21-4 
          MJN    STF0        IF ANALYST LOGGING DISABLED
          LDC    =C$ **** USE *FILINFO* IN PLACE OF *STS* CALL ****.$ 
          RJM    DFM
 STF0     LCN    1           INITIALIZE PARAMETER INDEX 
          STD    PI 
 STF1     LDN    3           ADVANCE PARAMETER INDEX
          RAD    PI 
          LDA    IR+3 
          ADD    PI          READ FILE NAME 
          CRD    FN 
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          NJN    STF3        IF FILE FOUND
          LDN    ZERL 
          CRD    FN 
          CRD    FS          CLEAR FNT/FST RETURN 
          CRD    CN 
 STF2     LDA    IR+3 
          ADD    PI 
          CWD    FN          WRITE FNT TO CENTRAL 
          ADN    1
          CWD    FS          COPY FST 
          ADN    1
          CWD    CN 
          LDN    3           ADVANCE WORDS RETURNED COUNT 
          RAD    SP+2 
          ADN    2           CHECK - END OF PARAMETER AREA
          SBD    SP+1 
          MJN    STF1        IF NOT END OF PARAMETER AREA 
          LJM    SES         SET ERROR STATUS 
  
 STF3     NFA    FA,R 
          CRD    FN          READ FNT 
          ADN    FSTL 
          CRD    FS          READ FST 
          LDD    FN+3 
          LPN    77          SAVE FILE CONTROL BITS 
          STD    T7 
          LMD    FN+3        CLEAR CONTROL BITS FROM FNT
          STD    FN+3 
          LDN    0           CLEAR REMAINING DATA 
          STD    FN+4 
          LDD    FS 
          SFA    EST         READ EST ENTRY FOR DEVICE
          ADK    EQDE 
          CRD    CM 
          RJM    SDT         TRANSLATE DEVICE MNEMONIC/TYPE 
          STD    T4          SET DEVICE MNEMONIC
          SHN    -14
          STD    T3 
          LDD    T4 
          LMC    2RNT 
          ZJN    STF6        IF 9 TRACK TAPE
          LMC    2RMT&2RNT
          NJN    STF9        IF NOT TAPE
 STF6     LDD    FS+2        CHECK TAPE FORMAT
          SHN    -10
          LMN    /COMSMTX/TFSI
          ZJN    STF8        IF SI FORMAT 
          LMN    /COMSMTX/TFI&/COMSMTX/TFSI 
          ZJN    STF8        IF *I* FORMAT
          LMN    /COMSMTX/TFS&/COMSMTX/TFI
          ZJN    STF7        IF S FORMAT
          LMN    /COMSMTX/TFL&/COMSMTX/TFS
          NJN    STF8        IF NOT *L* TAPE
          LDN    20 
 STF7     ADN    40 
 STF8     ADC    4002        FORCE DENSITY TO 800 BPI ALWAYS
          STD    FS 
          LDD    T3          SET NT/MT BIT
          LPC    100
          RAD    FS 
          LDD    FS+4        SET LABELED FLAG 
          SHN    -13
          SHN    2
          RAD    FS 
          UJN    STF10       CONTINUE 
  
 STF9     LDD    T3 
          SHN    6
          STD    FS          STORE DEVICE TYPE
 STF10    LDN    0           CLEAR DATA FIELDS
          STD    FS+1 
          STD    FS+2 
          STD    FS+3 
          STD    FS+4 
          LDN    ZERL 
          CRD    CN 
          LDD    T7          CHECK FILE CONTROL BITS
          LPN    35 
          ZJN    STF14       IF NO CONTROLS 
          SHN    21-2 
          PJN    STF11       IF NOT *EXECUTE ONLY*
          LDN    0
          UJN    STF15       SET *EXECUTE ONLY* 
  
 STF11    SHN    21-0-21+2
          PJN    STF12       IF NOT *READ ONLY* 
          LDN    1
          UJN    STF15       SET *READ ONLY*
  
 STF12    SHN    21-3-21+0+22 
          MJN    STF13       IF ALTER ONLY
          LDN    3
          UJN    STF15       SET STATUS 
  
 STF13    LDN    7
          UJN    STF15       SET STATUS 
  
 STF14    LDN    17 
 STF15    SHN    10 
          STD    CN+3        STORE FILE CONTROL 
          LJM    STF2        RETURN INFORMATION TO CM 
 STP      SPACE  4,30 
***       FUNCTION 3 - RETURN PRU COUNT OF FILE(S). 
* 
*         RETURNS TO THE CALLING PROGRAM THE NUMBER OF PRUS OF
*         THE FILES REQUESTED WHOSE NAMES ARE SET IN EVERY SECOND WORD
*         STARTING AT *PARM+1* OF ADDRESS CONTAINED IN THE *PARM* FIELD 
*         OF THE CALLING PROGRAM. IF THE FILE EXISTS, THE PRU COUNT 
*         WILL BE RETURNED IN BITS 0 - 23 OF THE SECOND WORD. IF THE
*         FILE DOES NOT EXIST, THE SECOND WORD WILL BE ZEROED.
* 
*         FORMAT OF LOCATION POINTED TO BY *PARM*.
* 
* 
*T PARM   12/ ,12/ LL,12/ LR,23/ ,1/A 
* 
*         LL     NUMBER OF WORDS, EXCLUDING THIS HEADER, TO BE USED;
*                MUST BE SET BY USER TO A MULTIPLE OF 2.
* 
*         LR     LENGTH OF STATUS REPLY AREA. 
* 
*         A      AUTO RECALL REPLY - SET TO ZERO BY USER AND SET TO ONE 
*                WHEN REQUEST IS COMPLETE.
  
  
 STP      BSS    0           ENTRY
          LDN    SSTL        CHECK LOGGING ENABLED
          CRD    CM 
          LDD    CM+3 
          SHN    21-4 
          MJN    STP0        IF ANALYST LOGGING DISABLED
          LDC    =C$ **** USE *FILINFO* IN PLACE OF *STS* CALL ****.$ 
          RJM    DFM
 STP0     LDN    ZERL        CLEAR SECTOR COUNT RETURN
          CRD    CN 
          LDN    1           INITIALIZE PARAMETER INDEX 
          STD    PI 
 STP1     LDA    IR+3 
          ADD    PI          READ FILE NAME 
          CRD    FN 
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          NJN    STP3        IF FILE FOUND
 STP2     STD    CN+4 
          SHN    -14
          STD    CN+3        SET SECTOR COUNT FOR FILE
 STP2.1   LDA    IR+3 
          ADD    PI 
          ADN    1
          CWD    CN 
          LDN    2
          RAD    SP+2        ADVANCE WORDS RETURNED COUNT 
          ADN    1
          STD    PI          ADVANCE PARAMETER INDEX
          SBD    SP+1 
          MJN    STP1        IF NOT END OF PARAMETER AREA 
          LJM    SES         SET ERROR STATUS 
  
 STP3     NFA    FA,R 
          ADN    FSTL 
          CRD    T5          READ FST 
          SFA    EST,T5      READ EST FOR DEVICE
          ADK    EQDE 
          CRD    CM          READ EST FOR DEVICE
          LDD    CM 
          SHN    -13
          ZJN    STP7        IF NOT MASS STORAGE
          LDD    T5+2 
          ZJN    STP7        IF FILE UNUSED 
          LDD    FS+4        CHECK FOR DIRECT ACCESS FILE 
          SHN    -6 
          LMN    PMFT 
          NJN    STP5        IF NOT DIRECT ACCESS 
          LDD    FS+3        CHECK FOR SPECIAL ACCESS MODE
          LPN    30 
          ZJN    STP4        IF NOT SPECIAL ACCESS MODE 
          LDD    TH          SET RETURN-ON-INACCESSIBLE OPTION
          RAD    T5 
          LCN    1
 STP4     ADN    1
 STP5     RJM    SEI         SEARCH FOR EOI 
          MJP    MSR         IF DEVICE INACCESSIBLE 
          LDD    T2          SET SECTOR COUNT 
          STD    CN+3 
          SOD    T3          DECREMENT FOR EOI SECTOR 
          PJN    STP6        IF NO UNDERFLOW
          SOD    CN+3 
          LCN    0
 STP6     STD    CN+4 
          LJM    STP2.1      LOOP 
  
 STP7     LJM    STP2        RETURN FILE STATUS 
 SDT      SPACE  4,10 
**        SDT - SET *SCOPE 3.4* DEVICE NAME/TYPE. 
* 
*         ENTRY  (CM - CM+4) = EST ENTRY
* 
*         EXIT   (A) = *SCOPE 3.4* DEVICE TYPE/MNEMONIC 
* 
*         USES   T4.
  
  
 SDT4     LDC    140000B+2RAZ 
  
 SDT      SUBR               ENTRY/EXIT 
          LDD    CM 
          SHN    0-13 
          NJN    SDT4        IF MASS STORAGE
          STD    T4          TABLE INDEX
 SDT1     LDM    TKDT,T4     SEARCH DEVICE TABLE FOR MATCH
          ZJN    SDT3        IF END OF TABLE
          LMD    CM+3 
          ZJN    SDT2        IF MATCH FOUND 
          AOD    T4          GET NEXT ENTRY 
          UJN    SDT1        LOOP 
  
 SDT2     LDD    T4 
          SHN    1           ORDINAL*2
          ADC    TSDT        ADD TABLE ADDRESS
          STD    T3 
          LDM    1,T3        LOAD DEVICE TYPE 
          SHN    6
          LMI    T3          MERGE DEVICE MNEMONIC
          UJN    SDTX        EXIT 
  
 SDT3     LDN    /ERR/IDC    UNKNOWN DEVICE TYPE/NAME 
          LJM    ERR         ERROR EXIT 
 TKDT     SPACE  4,10 
*         TKDT - TABLE OF *NOS* DEVICE NAMES/TYPES. 
  
  
 TKDT     BSS    0
          LOC    0
          CON    2RMT        7 - TRACK TAPES
          CON    2RNT        9 - TRACK TAPES
          CON    2RCT        CARTRIDGE TAPES
          CON    2RAT        ACS CARTRIDGE TAPES
          CON    2RCR        CARD READER
          CON    2RCP        CARD PUNCH 
          CON    2RLP        LINE PRINTER 
          CON    2RLQ        LINE PRINTER (512) 
          CON    2RTT        TIME-SHARING TERMINAL
          CON    2RLR        LINE PRINTER (580) 
          CON    2RRD        EST ORDINAL 0
          CON    2RNE        NULL EQUIPMENT 
          CON    0           END OF TABLE 
          LOC    *O 
 TSDT     SPACE  4,10 
*         TSDT - TABLE OF *SCOPE 3.4* DEVICE NAMES/TYPES. 
  
  
 TSDT     BSS    0
          LOC    0
          CON    2RMT,4000   7 - TRACK TAPES
          CON    2RNT,4100   9 - TRACK TAPES
          CON    2RNT,4100   CARTRIDGE TAPES (TREATED AS 9-TRACK) 
          CON    2RNT,4100   ACS CARTRIDGE TAPES (TREATED AS 9-TRACK) 
          CON    2RCR,6000   CARD READER
          CON    2RCP,7000   CARD PUNCH 
          CON    2RLP,5000   LINE PRINTER 
          CON    2RLQ,5000   LINE PRINTER (512) 
          CON    2RTA,6100   TIME-SHARING TERMINAL
          CON    2RLR,5000   LINE PRINTER (580) 
          CON    0,0         EST ORDINAL 0
          CON    0,0         NULL EQUIPMENT 
  
          LOC    *O 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPCTI 
 SEI$     EQU    1           MAKE INTERLOCKING AVAILABLE
*CALL,COMPSEI 
*CALL     COMPSAF 
*CALL     COMPSTI 
          SPACE  4,10 
          OVERFLOW OVL
          OVERLAY (MSD - SDA/SIS MESSAGE GENERATOR.)
 EMG      SPACE  4,10 
***       MSD - SDA/SIS MESSAGE GENERATOR.
* 
*                RETURNS MESSAGES TO SDA/SIS AS REQUESTED BY A
*         MESSAGE CODE CONTAINED IN THE PP CALL PARAMETER AREA. EMG 
*         PERFORMS THE FUNCTION OF THE *SCOPE 3.4* PP PROGRAM *MSD*.
* 
*         ENTRY  (IR - IR+4) = CALL TO *MSD* WITH THE FORMAT -
* 
* 
*T,       24/ *MSD* ,18/MESSAGE CODE,18/ RETURN ADDRESS 
* 
* 
*         MESSAGE CODE = MESSAGE ORDINAL OF MESSAGE TO BE RETURNED. 
* 
*         RETURN ADDRESS = CM ADDRESS TO RETURN MESSAGE BEGINNING AT
*                          (RETURN ADDRESS+1).
* 
*         EXIT   (RETURN ADDRESS) .NE. 0. UPON COMPLETION OF MESSAGE
*                                   TRANSFER, (RETURN ADDRESS) IS SET 
*                                   TO -
* 
*T        12/ MESS CODE,12/MESS SIZE-1,12/MESS SIZE,23/ ,1/1
* 
* 
*         MESS CODE = MESSAGE CODE ISSUED IN *MSD* CALL.
*         MESS SIZE = MESSAGE SIZE IN CM WORDS OF MESSAGE RETURNED. 
          SPACE  4,10 
*         RETURN CODES. 
  
  
 C001     EQU    445
 C002     EQU    446
 C003     EQU    6
 C004     EQU    50 
 C005     EQU    50 
 C006     EQU    50 
 C007     EQU    100
 C010     EQU    117
 C011     EQU    147
 C012     EQU    352
 C013     EQU    147
 C014     EQU    166
 C015     EQU    167
 C016     EQU    170
 C017     EQU    170
 C020     EQU    170
 C021     EQU    170
 C022     EQU    171
 C023     EQU    253
 C024     EQU    300
 C025     EQU    301
 C026     EQU    302
 C027     EQU    304
 C030     EQU    352
 C031     EQU    352
 C032     EQU    370
 C033     EQU    356
 C034     EQU    357
 C035     EQU    421
 C036     EQU    426
 C037     EQU    441
 C040     EQU    447
 C041     EQU    150
 C042     EQU    0
 C043     EQU    0
 C044     EQU    0
 C045     EQU    0
 C046     EQU    0
 C047     EQU    452
 C050     EQU    170
 C051     EQU    135
 C052     EQU    136
 C053     EQU    252
 C055     EQU    52B
 C175     EQU    175
 C176     EQU    176
 C201     EQU    0
 C202     EQU    0
 C203     EQU    416
 C204     EQU    445
 C205     EQU    6
 C206     EQU    50 
 C207     EQU    50 
 C210     EQU    50 
 C212     EQU    100
 C213     EQU    147
 C214     EQU    147
 C215     EQU    147
 C216     EQU    166
 C217     EQU    167
 C220     EQU    170
 C221     EQU    170
 C222     EQU    170
 C223     EQU    170
 C224     EQU    253
 C225     EQU    300
 C226     EQU    301
 C227     EQU    302
 C230     EQU    352
 C231     EQU    352
 C232     EQU    352
 C233     EQU    352
 C234     EQU    352
 C236     EQU    417
 C237     EQU    420
 C240     EQU    421
 C241     EQU    423
 C242     EQU    425
 C243     EQU    441
 C244     EQU    441
 C245     EQU    441
 C246     EQU    441
 C247     EQU    441
 C250     EQU    441
 C251     EQU    441
 C252     EQU    442
 C253     EQU    443
 C254     EQU    444
 C255     EQU    446
 C256     EQU    447
 C257     EQU    360
 C260     EQU    360
 C261     EQU    360
 C262     EQU    360
 C264     EQU    360
 C265     EQU    360
 C266     EQU    360
 C267     EQU    360
 C270     EQU    422
 C271     EQU    424
 C272     EQU    425
 C273     EQU    360
 C274     EQU    356
 C275     EQU    360
 C276     EQU    0
 C277     EQU    0
 C300     EQU    150
 C301     EQU    135
 C302     EQU    136
 C303     EQU    252
 C304     EQU    352
 C305     EQU    357
 C307     EQU    0
 C313     EQU    50 
 C314     EQU    0
 C315     EQU    417
 C316     EQU    104
 C317     EQU    110
  
 ZERO     EQU    0           NO CODE STATUS 
  
  
 EMG      SPACE  4,10 
          ENTRY  EMG
          LDD    IR+3        LOAD MESSAGE CODE ORDINAL
          SHN    -6 
          STD    T7 
          LDD    IR+2        LOAD MESSAGE CODE TABLE ORDINAL
          SBN    4
          MJN    EMG2        IF ORDINAL WITHIN TABLE SET
 EMG1     LDC    ERRMSG      SET ERROR MESSAGE RETURN 
          UJN    EMG6        SET WRIT MESSAGE POINTER 
  
 EMG2     ADN    1
          MJN    EMG3        IF NOT *300* LEVEL MESSAGE 
          LDC    TEMG3L      CHECK ORDINAL
          SBD    T7 
          MJN    EMG1        IF ORDINAL NOT WITHIN BOUNDS 
          LDC    TEMG3       SET TABLE SET FWA
          UJN    EMG5        LOAD MESSAGE ADDRESS 
  
 EMG3     ADN    1
          MJN    EMG4        IF LESS THAN *200* LEVEL MESSAGE 
          LDC    TEMG2L 
          SBD    T7 
          MJN    EMG1        IF ORDINAL NOT WITHIN BOUNDS 
          LDC    TEMG2       SET TABLE SET FWA
          UJN    EMG5        LOAD MESSAGE ADDRESS 
  
 EMG4     LDC    TEMG1L 
          SBD    T7 
          MJN    EMG1        IF ORDINAL NOT WITHIN BOUNDS 
          LDC    TEMG1       SET TABLE SET FWA
 EMG5     STM    EMGA 
          LDM    *,T7        LOAD 
 EMGA     EQU    *-1
 EMG6     STM    EMGB        STORE MESSAGE ADDRESS
          ADN    1
          STD    T1          PRESET ZERO BYTE SEARCH
          LDN    ZERL        PRESET HEADER RETURN 
          CRD    CM 
          LDD    IR+2        SET MESSAGE CODE 
          SHN    6
          ADD    T7 
          STD    CM 
          AOD    CM+4 
          LDN    2
  
*         SET NUMBER OF LINES TO BE WRITTEN.
  
 EMG7     STD    T2          PRESET CM BYTE COUNT 
          AOD    CM+2        UPDATE CM WORD COUNT 
 EMG8     AOD    T1          INCREMENT MESSAGE BYTE POINTER 
          LDI    T1 
          ZJN    EMG10       IF MESSAGE TERMINATED
          LPN    77 
          NJN    EMG9        IF CHARACTER PRESENT 
          LDN    1R          INSERT SPACE 
          RAI    T1 
 EMG9     AOD    T2          INCREMENT CM WORD BYTE COUNT 
          SBN    5
          MJN    EMG8        IF NOT END OF CM WORD
          LDN    0
          UJN    EMG7        LOOP 
  
 EMG10    LDD    T2 
          SBN    4
          ZJN    EMG12       IF LAST BYTE OF CM WORD
 EMG11    LDC    2R          INSERT FIELD INTO NEXT CM BYTE 
          STI    T1 
          AOD    T1 
          AOD    T2          INCREMENT CM WORD BYTE POINTER 
          SBN    4
          MJN    EMG11       IF NOT LAST BYTE OF CM WORD
          LDN    0
          STI    T1 
 EMG12    LDD    CM+2        SET TOTAL CM WORD COUNT
          SBN    1
          STD    CM+1 
          LDD    IR+3        VALIDATE RETURN ADDRESS
          LPN    37 
          SHN    14 
          ADD    IR+4 
          ADD    CM+2 
          SHN    -6 
          SBD    FL 
          MJN    EMG13       IF ADDRESS VALID 
          LDN    /ERR/PAE    *PARAMETER ERROR.* 
          LJM    ERR         PROCESS ERROR
  
 EMG13    LDD    IR+3        SET USER RETURN ADDRESS
          LPN    77 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          ADN    1
          CWM    *,CM+2      SEND MESSAGE TO USER 
 EMGB     EQU    *-1
          SBD    CM+2        SEND MESSAGE HEADER
          SBN    1
          CWD    CM 
          LJM    SFPX        EXIT 
          TITLE  MESSAGE CODE TABLE.
**        MESSAGE CODE TABLE. 
* 
*                CONSISTS OF SET OF TABLES WHOSE POSITION CORRESPONDS 
*         TO A MESSAGE CODE NUMBER CONTAINED IN (IR+2 - IR+3). THE
*         ADDRESS CONTAINED IN EACH TABLE ENTRY CORRESPONDS TO THE
*         FWA OF THE MESSAGE ASSOCIATED WITH THE CALLING MESSAGE CODE.
          SPACE  4,10 
**        TABLE 1 (000 - 177 MESSAGE CODE)
  
  
 TEMG1    BSS    0
          LOC    0
  
          CON    ERRMSG 
          CON    TS1M1       KEY NOT FOUND
          CON    TS1M2       DUPLICATE KEY FOUND
          CON    TS1M3       FILE CONTENT NOT COMPATIBLE
          CON    TS1M4       OPEN FILE LIMIT
          CON    TS1M5       EXISTING FILE
          CON    TS1M6       FILE ILLEGALLY EXTENDED
          CON    TS1M7       EOI ENCOUNTERED
          CON    TS1M8       PUT, OR REPLACE ERROR
          CON    TS1M9       CHECKSUM ERROR-DATA
          CON    ERRMSG 
          CON    TS1M11      CHECKSUM ERROR-FSTT
          CON    TS1M12      INCOMPLETE FIT 
          CON    TS1M13      RECORD LENGTH ERROR
          CON    TS1M14      RECORD LENGTH ERROR
          CON    TS1M15      MINIMUM RECORD SIZE ERROR
          CON    TS1M16      KEY POSITION RANGE ERROR 
          CON    TS1M17      RELATIVE KEY POSITION RANGE ERROR
          CON    TS1M18      INCORRECT HASHING ROUTINE
          CON    TS1M19      FILE LIMIT REACHED 
          CON    TS1M20      NO READ PERMISSION 
          CON    TS1M21      NO MODIFY PERMISSION 
          CON    TS1M22      NO EXTEND PERMISSION 
          CON    TS1M23      ILLEGAL OVERFLOW BLOCK CREATION
          CON    TS1M24      UNKNOWN CLOSING FILE 
          CON    TS1M25      UNEQUAL NUMBER OF FILES/FITS 
          CON    TS1M26      FATAL I-O ERROR
          CON    TS1M27      TRIVAL ERROR LIMIT REACHED 
          CON    TS1M28      NOT ENOUGH BUFFER SPACE
          CON    TS1M29      UNSPECIFIED WSA
          CON    TS1M30      ILLEGAL GETN 
          CON    TS1M31      HASH KEY OUTSIDE HOME BLOCK
          CON    TS1M32      UNSEPCIFIED KEY ADDRESS
          CON    TS1M33      FILE NOT ON MASS STORAGE 
          CON    TS1M34      ILLEGAL GETN AFTER EOI 
          CON    TS1M35      ILLOGICAL SUCCESSIVE SEEKS 
          CON    TS1M36      ILLEGAL CHECKSUM 
          CON    TS1M37      ILLOGICAL KEY CHANGE 
          CON    TS1M38      EMPTY HOME BLOCK 
          CON    TS1M39      FILE ALREADY OPEN
          CON    TS1M40      MINIMUM RECORD SIZE ERROR
          CON    TS1M41      RMS READ PARITY ERROR
          CON    TS1M42      RMS WRITE PARITY ERROR 
          CON    TS1M43      RMS LIMIT EXCEEDED 
          CON    TS1M44      BLOCK SIZE TOO LARGE 
          CON    TS1M45      FILE NOT CLOSED AFTER UPDATE 
          CON    TS1M46      MRL/MAXRECSZ CONFLICT
  
          LOC    *O 
 TEMG1L   EQU    *-TEMG1     LENGTH OF TABLE
          SPACE  4,10 
**        TABLE 2 (200 - 277 MESSAGE CODE) (SIS MESSAGES) 
  
 TEMG2    BSS    0
          LOC    0
  
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS2M2       BOI ENCOUNTERED
          CON    TS2M3       ONLY PUT ALLOWED 
          CON    TS2M4       KEY NOT FOUND
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS2M10      ILLEGAL SEQUENTIAL PROCESSING
          CON    ERRMSG 
          CON    TS2M12      CHECKSUM ERROR-INDEX 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS2M17      RECORD SIZE NEGATIVE 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS2M26      PTREE OVERFLOW 
          CON    TS2M27      BAD FIT ADDRESS
          CON    TS2M28      INTERNAL ERROR 
          CON    ERRMSG 
          CON    TS2M30      ONLY REPLACE .EQ. SIZE RECORDS 
          CON    TS2M31      NO REWIND
          CON    ERRMSG 
          CON    TS2M33      CANNOT DELETE ACTUAL RECORDS 
          CON    TS2M34      CANNOT SKIP BACKWARDS
          CON    TS2M35      MAJOR KEY WITH SYMB KEY ONLY 
          CON    TS2M36      CHANGE KEY TYPE
          CON    TS2M37      CHANGE KEY SIZE
          CON    TS2M38      KEY TYPE INCORRECT 
          CON    TS2M39      NO KEY DEFINED 
          CON    TS2M40      KEY SIZE ILLEGAL 
          CON    TS2M41      MAJOR KEY SIZE ILLEGAL 
          CON    TS2M42      INVALID ACTUAL KEY 
          CON    TS2M43      COMP-1 KEY BAD BIAS
          CON    TS2M44      NEW KEY .LT. LAST KEY
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS2M47      CANNOT SPECIFY SETBLKI 
          CON    TS2M48      BAD BUFFER ADDRESS 
          CON    TS2M49      NOT AFTER OPEN 
          CON    TS2M50      ERROR IN CALLING LIST
          CON    ERRMSG 
          CON    TS2M52      WRONG NO. OF PARAMETERS
          CON    TS2M53      INCONSISTENT CALLING SPEC. 
          CON    TS2M54      CANNOT PUT IN SEQ. MODE
          CON    TS2M55      CANNOT DELETE IN SEQ. MODE 
          CON    TS2M56      CANNOT SEEK IN SEQ. MODE 
          CON    TS2M57      CANNOT GET IN SEQ. MODE
          CON    TS2M58      CANNOT SKIP BACKWORD IN SEQ. MODE
          CON    TS2M59      PARAMETER NNN OUT OF RANGE 
          CON    ERRMSG 
          CON    TS2M61      SISV1 PARAMETER ONE ERROR
          CON    TS2M62      DELETED LAST RECORD
          CON    TS2M63      EMPTY FILE OPENED
  
          LOC    *O 
 TEMG2L   EQU    *-TEMG2     TABLE LENGTH 
          SPACE  4,10 
**        TABLE 3 (300 - 377 MESSAGE CODES) 
  
  
 TEMG3    BSS    0
          LOC    0
  
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS3M4       FATAL I/O ERROR
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS3M7       SIS RECOVER ERROR
          CON    ERRMSG 
          CON    ERRMSG 
          CON    ERRMSG 
          CON    TS3M11      NONEXISTENT FILE 
          CON    TS3M12      DATA BLOCK/SIZE/FACTOR SET 
          CON    TS3M13      REPLACE LARGER RECORD IN SEQ. MODE 
          CON    TS3M14      ONLY PUT IN CREATE 
          CON    TS3M15      SISV1 FILE NOT OPEN
          CON    TS3M16      FILE SLOT EMPTY
          CON    TS3M17      FILE SLOT OCCUPPIED
          CON    TS3M18      INVALID ACTUAL KEY 
          CON    TS3M19      HEADER LENGTH ERROR
          CON    TS3M20      BLOCKING TOO LARGE 
          CON    TS3M21      MINN RECORD SIZE ERROR 
          CON    TS3M22      RECORD SIZE ERROR
          CON    TS3M23      POSITION ERROR 
          CON    TS3M24      PADDING PERCENTAGE ERROR 
          CON    TS3M25      FILE STORAGE LIMIT EXCEEDED
          CON    TS3M26      INTERNAL I/O ERROR 
          CON    TS3M27      ILLEGAL OPEN 
          CON    TS3M28      BLOCKING FACTOR ERROR
          CON    TS3M29      FILE LIMIT REACHED 
  
          LOC    *O 
 TEMG3L   EQU    *-TEMG3     TABLE SIZE 
          TITLE  MESSAGE AREA.
**        MESSAGE AREA. 
* 
*                ALL MESSAGES IN THIS AREA ARE IN SEQUENTIAL
*         ASCENDING ORDER BY TABLE AND POSITION.
          SPACE  4,10 
*         ILLEGAL MESSAGE CODE RETURN.
  
 ERRMSG   EMESS  FA,NK,12B,NC,RT,C012,( 
,ILLEGAL CALL TO DIAGNOSTIC ROUTINE)
  
  
*         TABLE 1 MESSAGES. 
  
  
 TS1M1    EMESS  TR,KY,01B,NC,RT,C001,( 
,KEY NOT FOUND - FILE POSITION ALTERED - REQUEST IGNORED) 
  
 TS1M2    EMESS  TR,KY,02B,NC,RT,C002,( 
,DUPLICATE KEY FOUND - FILE POSITION ALTERED - REQUEST IGNORED) 
  
 TS1M3    EMESS  FA,NK,03B,NC,RT,C003,( 
,FILE CONTENT NOT COMPATIBLE WITH FILE TYPE)
  
 TS1M4    EMESS  FA,NK,04B,NC,RT,C004,( 
,NUMBER OF FILES PERMITTED TO BE OPEN SIMULTANEOUSLY HAS BEEN EXCEEDED) 
  
 TS1M5    EMESS  FA,NK,05B,NC,RT,C005,( 
,FILE ALREADY EXISTS-CANNOT OPEN NEW) 
  
 TS1M6    EMESS  FA,NK,06B,NC,RT,C006,( 
,FILE ILLEGALLY EXTENDED-EOI MOVED) 
  
 TS1M7    EMESS  TR,NK,07B,CM,RT,C042,( 
,END OF INFORMATION ENCOUNTERED)
  
 TS1M8    EMESS  TR,KY,10B,NC,RT,C010,( 
,PUT,OR REPLACE WITH LARGER RECORD ILLEGAL BETWEEN GETN COMMANDS) 
  
 TS1M9    EMESS  FA,NK,11B,NC,RT,C011,( 
,CHECKSUM ERROR-DATA BLOCK) 
  
 TS1M11   EMESS  FA,NK,13B,NC,RT,C013,( 
,CHECKSUM ERROR-FSTT) 
  
 TS1M12   EMESS  FA,NK,14B,NC,RT,C014,( 
,FIT INCOMPLETE - CANNOT CREATE FILE) 
  
 TS1M13   EMESS  TR,NK,15B,NC,RT,C015,( 
,RECORD LENGTH OUTSIDE MIN-MAX RANGE - REQUEST IGNORED) 
  
 TS1M14   EMESS  FA,NK,16B,NC,RT,C016,( 
,RECORD SIZE EXCEEDS BLOCK SIZE)
  
 TS1M15   EMESS  FA,NK,17B,NC,RT,C017,( 
,MINIMUM RECORD SIZE EXCEEDS MAXIMUM) 
  
 TS1M16   EMESS  FA,NK,20B,NC,RT,C020,( 
,KEY POSITION OUT OF RANGE) 
  
 TS1M17   EMESS  FA,NK,21B,NC,RT,C021,( 
,RELATIVE KEY POSITION OUT OF RANGE)
  
 TS1M18   EMESS  FA,NK,22B,NC,RT,C022,( 
,INCORRECT HASHING ROUTINE) 
  
 TS1M19   EMESS  TR,KY,23B,NC,RT,C023,( 
,FILE LIMIT REACHED-RECORD NOT INSERTED)
  
 TS1M20   EMESS  FA,NK,24B,NC,RT,C024,( 
,NO READ PERMISSION)
  
 TS1M21   EMESS  FA,NK,25B,NC,RT,C025,( 
,NO MODIFY PERMISSION)
  
 TS1M22   EMESS  FA,NK,26B,NC,RT,C026,( 
,NO EXTEND PERMISSION)
  
 TS1M23   EMESS  TR,NK,27B,NC,RT,C027,( 
,NOT ALLOWED TO CREATE OVERFLOW BLOCKS) 
  
 TS1M24   EMESS  TR,NK,30B,NC,RT,C030,( 
,FILE TO BE CLOSED IS NOT KNOWN)
  
 TS1M25   EMESS  FA,NK,31B,NC,RT,C031,( 
,TOTAL OF OPEN FILES NOT EQUAL TO TOTAL OF FIT ADDRESSES) 
  
 TS1M26   EMESS  FA,NK,32B,NC,RT,C032,( 
,FATAL I-O ERROR) 
  
 TS1M27   EMESS  FA,NK,33B,NC,RT,C033,( 
,TRIVIAL ERROR LIMIT REACHED) 
  
 TS1M28   EMESS  FA,NK,34B,NC,RT,C034,( 
,NOT ENOUGH BUFFER SPACE) 
  
 TS1M29   EMESS  TR,NK,35B,NC,RT,C035,( 
,WORKING STORAGE ADDRESS NOT SPECIFIED-REQUEST IGNORED) 
  
 TS1M30   EMESS  TR,NK,36B,NC,RT,C036,( 
,GETN NOT ALLOWED DURING FILE CREATION - REQUEST IGNORED) 
  
 TS1M31   EMESS  FA,KY,37B,NC,RT,C037,( 
,HASHED KEY OUTSIDE HOME BLOCK AREA)
  
 TS1M32   EMESS  TR,NK,40B,NC,RT,C040,( 
,KEY ADDRESS NOT SPECIFIED - REQUEST IGNORED) 
  
 TS1M33   EMESS  FA,NK,41B,NC,RT,C041,( 
,FILE NOT ON MASS STORAGE DEVICE) 
  
 TS1M34   EMESS  TR,NK,42B,NC,RT,C007,( 
,CANNOT GETN AFTER EOI ENCOUNTERED) 
  
 TS1M35   EMESS  TR,NK,43B,CM,RT,C043,( 
,ILLOGICAL SUCCESSIVE SEEK REQUESTS)
  
 TS1M36   EMESS  TR,NK,44B,CM,RT,C044,( 
,CANNOT CHECKSUM A FILE CREATED WITHOUT CHECKSUMS)
  
 TS1M37   EMESS  TR,NK,45B,CM,RT,C045,( 
,ILLOGICAL TO CHANGE THE KEY BEFORE SEEK FUNCTION COMPLETED)
  
 TS1M38   EMESS  TR,NK,46B,CM,RT,C046,( 
,HOME BLOCK EMPTY - HASHING ROUTINE NOT VERIFIED) 
  
 TS1M39   EMESS  FA,NK,47B,NC,RT,C047,( 
,FILE ALREADY OPEN) 
  
 TS1M40   EMESS  FA,NK,50B,NC,RT,C050,( 
,MINIMUM RECORD SIZE LESS THAN KEY LENGTH PLUS KEY POSITION)
  
 TS1M41   EMESS  FA,NK,51B,NC,RT,C051,( 
,RMS READ PARITY ERROR) 
  
 TS1M42   EMESS  FA,NK,52B,NC,RT,C052,( 
,RMS WRITE PARITY ERROR)
  
 TS1M43   EMESS  FA,NK,53B,NC,RT,C053,( 
,SYSTEM MASS STORAGE LIMIT EXCEEDED)
  
 TS1M44   EMESS  FA,NK,54B,CM,RT,C175,( 
,REQUESTED DATA OR INDEX BLOCK SIZE TOO LARGE)
  
 TS1M45   EMESS  TR,NK,55B,NC,NR,C055,( 
,FILE NOT CLOSED AFTER LAST UPDATE - FILE CONDITION QUESTIONABLE) 
  
 TS1M46   EMESS  TR,NK,56B,NC,NR,C176,( 
,MRL IN FIT LESS THAN MAXRECSZ IN FSTT, WSA MAY BE TOO SHORT) 
          SPACE  4,10 
*         TABLE 2 MESSAGES. 
  
  
 TS2M2    EMESS  TR,KY,02B,CM,NR,C202,( 
,BEGINNING OF INFORMATION ENCOUNTERED)
  
 TS2M3    EMESS  FA,KY,03B,NC,RT,C203,( 
,ONLY PUT ALLOWED DURING INITIAL CREATION)
  
 TS2M4    EMESS  TR,KY,04B,NC,RT,C204,( 
,KEY NOT FOUND-FILE POSITION ALTERED-REQUEST IGNORED) 
  
 TS2M10   EMESS  TR,KY,12B,NC,RT,C212,( 
,CANNOT PROCESS SEQUENTIALLY BEYOND FILE BOUNDRIES.)
  
 TS2M12   EMESS  FA,NK,14B,NC,RT,C214,( 
,CHECKSUM ERROR-INDEX BLOCK)
  
 TS2M17   EMESS  FA,NK,21B,NC,RT,C221,( 
,RECORD SIZE NEGATIVE)
  
 TS2M26   EMESS  FA,NK,32B,NC,RT,C232,( 
,HIERARCHY TABLE OVERFLOW)
  
 TS2M27   EMESS  FA,NK,33B,NC,RT,C233,( 
,BAD FIT ADDRESS) 
  
 TS2M28   EMESS  FA,NK,34B,NC,RT,C234,( 
,INTERNAL ERROR)
  
 TS2M30   EMESS  TR,KY,36B,NC,RT,C236,( 
,CAN ONLY REPLACE WITH EQUAL SIZE RECORDS IN ACTUAL KEY FILES)
  
 TS2M31   EMESS  TR,NK,37B,NC,NR,C237,( 
,CANNOT SPECIFY NO REWIND-FILE REWOUND) 
  
 TS2M33   EMESS  TR,KY,41B,NC,RT,C241,( 
,CANNOT DELETE ACTUAL KEY RECORDS)
  
 TS2M34   EMESS  TR,NK,42B,NC,RT,C242,( 
,CANNOT SKIP BACKWARD WITH ACTUAL KEYS) 
  
 TS2M35   EMESS  FA,KY,43B,NC,RT,C243,( 
,MAJOR KEY WITH SYMBOLIC KEYS ONLY) 
  
 TS2M36   EMESS  FA,KY,44B,NC,RT,C244,( 
,CHANGED KEY TYPE)
  
 TS2M37   EMESS  FA,KY,45B,NC,RT,C245,( 
,CHANGED KEY SIZE)
  
 TS2M38   EMESS  FA,KY,46B,NC,RT,C246,( 
,KEY TYPE INCORRECT)
  
 TS2M39   EMESS  FA,NK,47B,NC,RT,C247,( 
,NO KEY DEFINED)
  
 TS2M40   EMESS  FA,NK,50B,NC,RT,C250,( 
,KEY SIZE ILLEGAL)
  
 TS2M41   EMESS  FA,NK,51B,NC,RT,C251,( 
,MAJOR KEY SIZE ILLEGAL)
  
 TS2M42   EMESS  TR,KY,52B,NC,RT,C252,( 
,INVALID ACTUAL KEY-REQUEST IGNORED)
  
 TS2M43   EMESS  TR,KY,53B,NC,RT,C253,( 
,COMP-1 KEY HAS INCONSISTENT BIAS-REQUEST IGNORED)
  
 TS2M44   EMESS  TR,KY,54B,NC,RT,C254,( 
,NEW KEY LESS THAN PREVIOUS KEY IN INITIAL CREATION)
  
 TS2M47   EMESS  FA,NK,57B,NC,RT,C257,( 
,SISV1 CANNOT SPECIFY SETBLKI OR SETBLKD WITH OPENOLD)
  
 TS2M48   EMESS  FA,NK,60B,NC,RT,C260,( 
,SISV1 BAD BUFFER ADDRESS)
  
 TS2M49   EMESS  FA,NK,61B,NC,RT,C261,( 
,SISV1 MAY NOT CALL AFTER OPENING FILE) 
  
 TS2M50   EMESS  FA,NK,62B,NC,RT,C262,( 
,SISV1 ERROR IN CALLING LIST, PARAMETER NUMBER NNN) 
  
 TS2M52   EMESS  FA,NK,64B,NC,RT,C264,( 
,SISV1 WRONG NUMBER OF PARAMETERS IN CALLING LIST)
  
 TS2M53   EMESS  FA,NK,65B,NC,RT,C265,( 
,SISV1 INCONSISTENT COLLATING SPECIFICATIONS) 
  
 TS2M54   EMESS  FA,KY,66B,NC,RT,C266,( 
,SISV1 CANNOT PUT IN SEQUENTIAL MODE) 
  
 TS2M55   EMESS  FA,KY,67B,NC,RT,C267,( 
,SISV1 CANNOT DELETE IN SEQUENTIAL MODE)
  
 TS2M56   EMESS  TR,KY,70B,NC,RT,C270,( 
,SISV1 SEEK ILLOGICAL IN SEQUENTIAL MODE) 
  
 TS2M57   EMESS  TR,KY,71B,NC,NR,C271,( 
,SISV1 CANNOT GET IN SEQUENTIAL MODE GETN ASSUMED)
  
 TS2M58   EMESS  TR,NK,72B,NC,RT,C272,( 
,SISV1 CANNOT SKIP BACKWARD IN SEQUENTIAL MODE) 
  
 TS2M59   EMESS  FA,NK,73B,NC,RT,C273,( 
,SISV1 PARAMETER OUT OF RANGE, PARAMETER NUMBER NNN)
  
 TS2M61   EMESS  FA,NK,75B,NC,RT,C275,( 
,SISV1 ERROR IN PARAMETER ONE-FILE NOT GIVEN) 
  
 TS2M62   EMESS  TR,NK,76B,CM,NR,C276,( 
,DELETED LAST RECORD) 
  
 TS2M63   EMESS  TR,NK,77B,CM,NR,C277,( 
,EMPTY FILE OPENED) 
          SPACE  4,10 
*         TABLE 3 MESSAGES. 
  
  
 TS3M4    EMESS  FA,NK,04B,NC,NR,C304,( 
,INTERNAL IO ERROR) 
  
 TS3M7    EMESS  TR,NK,07B,CM,RT,C307,( 
,SIS ERROR RECOVERY)
  
 TS3M11   EMESS  FA,NK,13B,NC,RT,C313,( 
,FILE NONEXISTENT - CANNOT OPEN-OLD)
  
 TS3M12   EMESS  TR,NK,14B,CM,NR,C314,( 
,DATA BLOCK SIZE AND BLOCKING FACTOR BOTH SET)
  
 TS3M13   EMESS  TR,NK,15B,NC,RT,C315,( 
,CANNOT REPLACE LARGER RECORDS IN SEQUENTIAL MODE)
  
 TS3M14   EMESS  TR,NK,16B,NC,NR,C316,( 
,ONLY PUT ALLOWED IN CREATION MODE) 
  
 TS3M15   EMESS  FA,NK,17B,NC,RT,C317,( 
,SISV1 FILE NOT OPEN) 
  
 TS3M16   EMESS  TR,KY,20B,NC,RT,ZERO,( 
,SPECIFIED FILE SLOT IS EMPTY-REQUEST IGNORED)
  
 TS3M17   EMESS  TR,KY,21B,NC,RT,ZERO,( 
,SPECIFIED FILE SLOT IS OCCUPPIED-REQUEST IGNORED)
  
 TS3M18   EMESS  TR,KY,22B,NC,RT,ZERO,( 
,INVALID ACTUAL KEY-REQUEST IGNORED)
  
 TS3M19   EMESS  TR,NK,23B,NC,RT,ZERO,( 
,USER HEADER LENGTH INCONSISTENT WITH RECORD LENGTH-REQUEST IGNORED)
  
 TS3M20   EMESS  TR,NK,24B,NC,RT,ZERO,( 
,BLOCKING FACTOR TOO LARGE FOR KEY LENGTH)
  
 TS3M21   EMESS  TR,NK,25B,NC,RT,ZERO,( 
,MINIMUM RECORD SIZE MUST BE GREATER THAN ZERO) 
  
 TS3M22   EMESS  TR,NK,26B,NC,RT,ZERO,( 
,RECORD SIZE TOO LARGE FOR BLOCK SIZE)
  
 TS3M23   EMESS  TR,NK,27B,NC,RT,ZERO,( 
,CANNOT SEQUENTIALLY POSITION PAST FILE BOUNDS) 
  
 TS3M24   EMESS  TR,NK,30B,NC,RT,ZERO,( 
,PADDING PERCENTAGE OUT OF RANGE) 
  
 TS3M25   EMESS  TR,NK,31B,NC,RT,ZERO,( 
,FILE MASS STORAGE LIMIT EXCEEDED)
  
 TS3M26   EMESS  TR,NK,32B,NC,RT,ZERO,( 
,INTERNAL I-O ERROR)
  
 TS3M27   EMESS  TR,NK,33B,NC,RT,ZERO,( 
,ILLEGAL TO OPEN-OLD A NULL FILE) 
  
 TS3M28   EMESS  TR,NK,34B,NC,RT,ZERO,( 
,BLOCKING FACTOR TOO LARGE FOR BLOCK SIZE)
  
 TS3M29   EMESS  TR,NK,35B,NC,RT,ZERO,( 
,FILE LIMIT REACHED, LINEAR SEARCH FOR SPACE INITIATED) 
          SPACE  4,10 
          OVERFLOW OVL
          OVERLAY (PFE - EXTEND/ALTER FUNCTION.)
 PFE      SPACE  4,20 
***       PFE - EXTEND/ALTER FILE FUNCTION. 
* 
*                ALTERS THE REQUESTED FILE TO HAVE AN EOI RECORDED
*         AT THE CURRENT POSITION OF THE MASS STORAGE FILE. WORD
*         CONTAINED AT THE ADDRESS IN THE FUNCTION CALL IS  - 
* 
* 
*T, PARM  42/ LOGICAL FILE NAME,9/ RET,3/ O,4/ F,1/ ,1/C
* 
*         RET    IF THE *RC* AND *RT* PARAMETER DEFINED IN *O*, A 
*                RETURN CODE WILL BE AVAILABLE TO THE USER. THE 
*                FOLLOWING CODES WILL BE RETURNED - 
* 
*                000 - FUNCTION SUCCESSFUL
*                003 - UNKNOWN LFN
*                025 - FILE UNAVAILABLE 
* 
*         O      OPTIONS AVAILABLE ARE THE FOLLOWING -
*                BIT 6 - RETURN CODE TO USER IN *RET* 
* 
*         F      FUNCTION CODE FOR ALTER. BITS 2 - 5 = 0111.
* 
*         C      COMPLETION BIT. SET WHEN FUNCTION IS COMPLETE. 
* 
*         DAYFILE MESSAGES. 
* 
*         *SFP/PFE INCORRECT FUNCTION CODE.*
*                *PFE* WAS CALLED WITH AN INCORRECT FUNCTION CODE.
* 
*         *SFP/PFE I/O SEQUENCE ERROR.* 
*                AN ACTION WAS REQUESTED ON A FILE THAT WAS 
*                ALREADY BUSY.
  
  
          ENTRY  PFE         ENTRY
          LDD    IR+3        LOAD PARAMETER WORD
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CRD    FN          PRESET FOR FILE SEARCH 
          CRD    CN 
          LDD    CN+4        CHECK ALTER/EXTEND FUNCTION CODE 
          LPN    33 
          LMN    30 
          ZJN    PFE1        IF ALTER/EXTEND FUNCTION CODE
          LDN    /ERR/IAF    * SFP/PFE INCORRECT FUNCTION CODE.*
          LJM    ERR         ERROR EXIT 
  
 PFE1     RJM    SAF         SEARCH FOR FILE
          NJN    PFE2        IF FILE FOUND
          LDN    3           SET *UNKNOWN FILE* RETURN CODE 
          LJM    PFE8        STORE PARAMETER WORD 
  
 PFE2     LDD    CN+4        CHECK FOR ALTER FUNCTION 
          SHN    21-2 
          MJN    PFE3        IF ALTER FUNCTION
          LJM    PFE7        NO-OP EXTEND FUNCION 
  
 PFE3     RJM    SFB         SET FILE BUSY
          ZJN    PFE4        IF FILE MADE BUSY
          LDN    /ERR/IOS    *SFP/PFE I/O SEQUENCE ERROR.*
          LJM    ERR
  
 PFE4     LDD    CM+3        CHECK FOR FILE UNAVAILABLE 
          LPN    35 
          ZJN    PFE6        IF FILE AVAILABLE
 PFE5     LDN    25          SET *UNAVAILABLE FILE* RETURN CODE 
          LJM    PFE8        STORE PARAMETER WORD 
  
 PFE6     LDD    FS          SET EQUIPMENT
          STD    T5 
          SFA    EST         CHECK IF MASS STORAGE
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    21-13
          PJN    PFE5        IF NOT MASS STORAGE
          LDD    FS+2 
          ZJN    PFE5        IF FILE NOT WRITTEN ON 
          LDD    FS+1        SET FIRST TRACK
          ZJN    PFE5        IF FIRST TRACK NOT ASSIGNED
          STD    T6 
          RJM    STI         SET TRACK INTERLOCK
          NJN    PFE5        IF OPERATOR DROP 
          LDD    FS+2        SET CURRENT POSITION 
          STD    T6 
          LDD    FS+3        SET CURRENT SECTOR 
          STD    T7 
          SETMS  IO 
          RJM    WEI         WRITE EOI SECTOR 
          MJP    PFE10       IF MASS STORAGE ERROR
          ENDMS 
          LDD    T5          SET EQUIPMENT
          STD    CM+1 
          LDD    T6          SET EOI TRACK
          LPC    3777 
          STD    CM+2 
          LDD    T7          SET EOI SECTOR 
          STD    CM+3 
          MONITOR DTKM       DROP TRACKS
          LDD    FS+4        UPDATE FST AND SET COMPLETE
          LPC    7460 
          LMC    303
          STD    FS+4 
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          RJM    CTI         CLEAR TRACK INTERLOCK
          NFA    FA,R        STORE FST ENTRY
          ADK    FSTL 
          CWD    FS 
 PFE7     LDN    0
 PFE8     STD    T1          RETURN STATUS
          LDD    CN+3        CLEAR OLD RETURN CODE
          SCN    77 
          STD    CN+3 
          LDD    CN+4 
          LPC    776
          LMN    1
          STD    CN+4 
          SHN    21-6 
          PJN    PFE9        IF NO RETURN REQUESTED 
          LDD    T1          SET RETURN CODE
          SHN    21-2 
          RAD    CN+3 
          SHN    -6 
          RAD    CN+4 
 PFE9     LDD    IR+3        RESTORE STATUS 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CWD    CN 
          LJM    SFPX        EXIT 
  
 PFE10    SHN    21-12
          MJN    PFE11       IF NON-RECOVERABLE MASS STORAGE ERROR
          LDM    MSD         CHECK FOR SUBSYSTEM
          SHN    21-13
          PJN    PFE11       IF SUBSYSTEM, RETURN ERROR 
          LDD    T5          EST ORDINAL OF DEVICE
          STD    IR+4 
          EXECUTE  1RJ       ROLL JOB 
*         LJM    PPR         DOES NOT RETURN
  
 PFE11    MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT 
  
  
*         COMMON DECKS. 
  
  
*CALL     COMPCTI 
*CALL     COMPSAF 
*CALL     COMPSFB 
*CALL     COMPSTI 
*CALL     COMPWEI 
          SPACE  4,10 
          OVERFLOW OVL
          OVERLAY (ACE - ADVANCE COMMAND.)
 ACE      SPACE  4,30 
***       ACE - ADVANCE COMMAND 
* 
*                READS/BACKSPACES NEXT/PREVIOUS COMMAND INTO
*         RA+70B - RA+77B WITH THE OPTION TO PLACE THE COMMAND
*         IN THE DAYFILE AND/OR TO CRACK AND STORE THE COMMAND
*         PARAMETERS IN *SCOPE 3.4* FORMAT INTO RA+2 - RA+53B.
*         IF A READ FUNCTION IS ISSUED AND THE POINTER IS AT THE END
*         OF THE COMMAND RECORD, AN EOR STATUS (BIT 4 SET IN THE
*         FUNCTION CODE) AND RA+70B - RA+77B CLEARED. IF A BACKSPACE
*         FUNCTION IS ISSUED AND THE POINTER IS AT THE BEGINNING OF 
*         THE COMMAND RECORD, THE POINTER IS NOT CHANGED AND AN 
*         EOR STATUS IS RETURNED. WHEN FUNCTION IS COMPLETE, THE
*         COMPLETION BIT (BIT 0) IS SET AND RETURNED TO THE USER. 
* 
*         CALL. 
* 
*T        24/ *ACEP*,9/ ,3/ F,6/ ,18/ FUNC ADDRESS
* 
*                *F* = X1 - CRACK PARAMETERS IN *SCOPE 3.4* FORMAT
*                    = 1X - ISSUE COMMAND TO DAYFILE
* 
*                *FUNC ADDRESS* = CM WORD CONTAINING FUNCTION TO BE 
*                                 PERFORMED.
* 
*T FUNC   48/ ,12/ FUNCTION 
* 
*                           = 0010 - READ NEXT COMMAND AND
*                                    ADVANCE COMMAND POINTER. 
*                           = 0040 - BACKSPACE TO PREVIOUS COMMAND
* 
*         EXIT   COMPLETION BIT SET IN *FUNCTION*.
* 
*         DAYFILE MESSAGES. 
* 
*         *SFP/ACE INCORRECT FUNCTION CODE.*
*                THE FUNCTION CODE AT *FUNC ADDRESS IS UNDEFINED. 
  
  
          ENTRY  ACE         ENTRY
          LDD    IR+3        LOAD FUNCTION CODE 
          LPN    37 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CRM    ACEC,ON     (ACEC+4) = FUNCTION CODE 
          LDD    CP 
          ADN    CSPW 
          CRD    SP          (SP - SP+4) = COMMAND POINTER
          ADN    CSSW-CSPW
          CRD    CN          (CN - CN+4) = COMMAND FILE STATUS
          LDM    ACEC+4      CHECK FUNCTION CODE
          LMN    10 
          ZJN    ACE1        IF *READ* FUNCTION 
          LMN    40&10
          ZJN    ACE4        IF BACKSPACE FUNCTION
          LDN    /ERR/IAF    * SFP/ACE INCORRECT FUNCTION CODE.*
          LJM    ERR         ERROR EXIT 
  
*         READ FUNCTION.
  
 ACE1     LDD    SP+3        CHECK COMMAND BUFFER 
          LMD    SP+4 
          NJN    ACE3        IF NOT EMPTY 
          LDD    SP+1        SEE IF AT *EOR*
          SHN    21-13
          PJN    ACE3        IF NOT AT EOR
 ACE2     LDN    20 
          RAM    ACEC+4 
 ACE3     LJM    ACE13       COMPLETE FUNCTION
  
*         BACKSPACE FUNCTION. 
  
 ACE4     LDD    SP+3 
          LMC    CSBN 
          ZJN    ACE5        IF BEGINNING OF BUFFER 
          LJM    ACE9        BACKSPACE WITHIN BUFFER
  
 ACE5     LDD    CN+1 
          LMD    CN+2 
          NJN    ACE6        IF CURRENT TRACK NOT FIRST 
          LDD    CN+3 
          SBN    FSMS+2 
          MJN    ACE2        IF COMMAND BUFFER EMPTY
 ACE6     LDD    SP+1 
          LPC    3777        CLEAR EOR FLAG 
          STM    ACEB 
          SOD    SP+2        DECREMENT COMMAND COUNT
          PJN    ACE7        IF NO UNDERFLOW
          AOD    SP+2 
          SOM    ACEB 
          MJN    ACE2        IF HIGH ORDER UNDERFLOW
          LDD    SP+2 
 ACE7     STM    ACEB+1      SAVE PREVIOUS COMMAND COUNT
          LDN    0           CLEAR COMMAND COUNTER
          STD    SP+1 
          STD    SP+2 
          LDC    CSBN 
          STD    SP+3 
          STD    SP+4 
          LDD    CN+1        REWIND COMMAND FILE
          STD    CN+2        FIRST = CURRENT TRACK
          LDN    FSMS 
          STD    CN+3 
          LDD    CP          UPDATE *CSPW* AND *CSPW* + 1 
          ADN    CSPW 
          CWD    SP          COMMAND POINTER WORD 
          ADN    CSSW-CSPW
          CWD    CN          COMMAND FILE STATUS
 ACE8     RJM    RCS         READ COMMAND 
          PJN    ACE8.2      IF NO MASS STORAGE ERROR 
          LDM    RDCT        CHECK FOR NON-RECOVERABLE ERROR
          SHN    21-12
          MJN    ACE8.1      IF NON-RECOVERABLE MASS STORAGE ERROR
          LDM    MSD         CHECK FOR SUBSYSTEM
          SHN    21-13
          PJN    ACE8.1      IF SUBSYSTEM, RETURN ERROR 
          LDD    T5          EST ORDINAL OF DEVICE
          STD    IR+4 
          EXECUTE  1RJ       ROLL JOB 
*         LJM    PPR         DOES NOT RETURN
  
 ACE8.1   MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT 
  
 ACE8.2   LDD    SP+1        SEE IF AT RIGHT COMMAND
          LPC    3777        CLEAR EOR FLAG 
          LMM    ACEB 
          NJN    ACE8        IF NOT AT RIGHT COMMAND
          LMD    SP+2 
          LMM    ACEB+1 
          NJN    ACE8        IF NOT AT RIGHT COMMAND
          UJN    ACE12       UPDATE COMMAND WORD
  
 ACE9     LDN    2           NUMBER OF COMMAND BOUNDARIES 
          STD    T1 
 ACE10    AOD    SP+3 
          LMC    CSBN 
          ZJN    ACE11       IF AT FIRST WORD IN BUFFER 
          NFA    SP+3,R 
          CRD    CM 
          LDD    CM+4 
          NJN    ACE10       IF NOT END OF COMMAND
          SOD    T1 
          NJN    ACE10       IF NOT SECOND COMMAND BOUNDARY 
          SOD    SP+3        PLACE COMMAND POINTER TO NEXT COMMAND
 ACE11    SOD    SP+2        DECREMENT COMMAND COUNTER
          PJN    ACE12       IF NO UNDERFLOW
          SOD    SP+1 
          AOD    SP+2 
 ACE12    LDD    CP          UPDATE COMMAND WORD
          ADN    CSPW 
          CWD    SP 
 ACE13    LDD    CP          LOAD ENTRY POINT WORD
          ADC    SEPW 
          CRD    CM 
          LDD    CM          CLEAR *ARG=* AND *SDM=* FLAGS
          LPC    7727 
          STD    CM 
          LDD    IR+2        CHECK OPTIONS
          SHN    21-1 
          MJN    ACE14       IF SEND DAYFILE
          LDN    10          SET *SDM=* FLAG
          RAD    CM 
 ACE14    LDD    IR+2 
          LPN    1           SET ARG= VALUE 
          SHN    5
          RAD    CM 
          AOM    ACEC+4      SET COMPLETION BIT 
          LDD    IR+3        RETURN FUNCTION CODE TO CALLER 
          LPN    37 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CWM    ACEC,ON
          LDM    ACEC+4 
          LPN    40 
          NJN    ACE15       IF BACKSPACE FUNCTION
          LDD    CP          RETURN ENTRY POINT WORD
          ADC    SEPW 
          CWD    CM 
          LDD    IR+1        SET CP NUMBER AND RECALL STATUS
          LPN    77 
          RAM    ACEA+1 
          LDD    IA          MAKE CALL TO *TCS* 
          CWM    ACEA,ON
          EXECUTE  TCS,=
          LJM    PPR         LOAD *TCS* 
  
 ACE15    LJM    SFPX        EXIT 
  
  
 ACEA     VFD    18/3LTCS,1/0,5/0,12/4,6/40,18/CCDR 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL,COMPRNS 
*CALL,COMPRCS 
          SPACE  4,10 
          USE    BUFFER 
 STMT     EQU    *           COMMAND BUFFER 
 ACEB     EQU    STMT+55     COMMAND COUNT
 ACEC     EQU    ACEB+2      FUNCTION CODE
  
          SPACE  4,10 
          OVERFLOW OVL
          OVERLAY (PRM - PERMISSION CHECKING FUNCTION.) 
 PRM      SPACE  4,30 
***       PRM - *SCOPE 3.4* PERMISSION CHECKING FUNCTION. 
* 
*                PRM WILL SCAN FOR AN FNT ENTRY WHOSE ADDRESS IS
*         CONTAINED IN THE CALL AND, IF FOUND, WILL MAP THE *NOS* 
*         FILE PERMISSION BITS INTO THE *SCOPE 3.4* PERMISSION BITS AND 
*         RETURN TO THE USER AS A STATUS. IF THE CALL ADDRESS IS OUT
*         OF RANGE OR THE REQUESTED FILE DOES NOT EXIST, NO DIAGNOSTIC
*         WILL BE ISSUED AND NO STATUS WILL BE RETURNED TO THE USER.
* 
*         CALL
* 
*T        24/ *PRM*,18/ ,18/ PARM ADDRESS 
* 
*                *PARM ADDRESS* = CM ADDRESS WHICH CONTAINS THE FILE
*                                 NAME TO SEARCH FOR. 
* 
*T PARM   42/  *LFN*,9/ CODE,8/ ,1/C
* 
*                *CODE* = A 5-BIT CODE RETURNED BY *PRM* IN BITS
*                          9 - 13. THE RIGHTMOST 4 BITS ARE THE 
*                          PERMISSION BITS.  THE BINARY CODES ARE 
* 
*         BITS 9 - 12.
* 
*                1 0 0 0   CONTROL PERMISSION 
*                0 1 0 0   MODIFY PERMISSION
*                0 0 1 0   EXTEND PERMISSION
*                0 0 0 1   READ PERMISSION
* 
*         BIT 13. 
* 
*                1         NON - PERMANENT FILE 
*                0         PERMANENT FILE 
* 
*                ALL BITS(9 - 13) ZERO IMPLIES FILE NOT FOUND.
* 
*                *C* = COMPLETION BIT. SET TO 1 WHEN FUNCTION IS
*                      COMPLETED. 
  
  
          ENTRY  PRM         ENTRY
          LDN    SSTL        CHECK LOGGING ENABLED
          CRD    CM 
          LDD    CM+3 
          SHN    21-4 
          MJN    PRM1        IF ANALYST LOGGING DISABLED
          LDC    =C$ **** USE *FILINFO* IN PLACE OF *PRM* CALL ****.$ 
          RJM    DFM
 PRM1     LDA    IR+3        READ FILE NAME 
          CRD    FN          SET FILE TO FIND 
          RJM    SAF         SEARCH FOR FILE
          ZJN    PRM8        IF FILE NOT FOUND
          LDD    FS+4        CHECK FOR DIRECT ACCESS FILE 
          SHN    -6 
          LMN    PMFT 
          ZJN    PRM2        IF DIRECT ACCESS 
          LDN    2           SET NON - PERMANENT FILE 
          RAD    FN+3 
 PRM2     LDD    FS+3        CHECK PERMISSIONS
          LPN    35 
          ZJN    PRM3        IF WRITE 
          LMN    30 
          ZJN    PRM4        IF MODIFY
          LMN    30&20
          ZJN    PRM5        IF APPEND
          LMN    20&10
          ZJN    PRM6        IF UPDATE
          LMN    10&5 
          ZJN    PRM7        IF EXECUTE 
          LCN    17-1        SET READ ONLY PERMISSION 
 PRM3     ADN    10          SET CONTROL PERMISSION 
 PRM4     ADN    4           SET MODIFY PERMISSION
 PRM5     ADN    3           SET EXTEND/READ PERMISSIONS
          UJN    PRM7        RETURN PERMISSION BITS 
  
 PRM6     ADN    5           SET READ/MODIFY PERMISSIONS
 PRM7     SHN    11          POSITION PERMISSION BITS 
          STD    FN+4 
          SHN    -14
          RAD    FN+3 
 PRM8     AOD    FN+4        SET COMPLETION BIT 
          LDA    IR+3        RETURN INFORMATION TO CALLER 
          CWD    FN 
          LJM    SFPX        EXIT 
  
  
*         COMMON DECKS. 
  
  
*CALL     COMPSAF 
          SPACE  4,10 
          OVERFLOW OVL
          OVERLAY (SRP - SPECIAL REQUEST PROCESSING.) 
 SRP      SPACE  4,30 
***       SRP - SPECIAL REQUEST PROCESSING. 
* 
*                SRP CONSISTS OF ROUTINES WHICH SET UP A SPECIAL
*         PROCESSING WORD IN THE CALLING CONTROL POINT AREA (SPCW)
*         FOR FOLLOW-UP PROCESSING BY *1AJ* AND A CP PROGRAM
*         ASSOCIATED WITH THE CALL. 
* 
*         FORMAT OF *SPCW* -
* 
*T SPCW   18/ ENTRY POINT, 6/ CODES, 18/ PARAMETER, 18/ PARM ADDR 
* 
*                ENTRY POINT = NAME OF ENTRY IN CP PROGRAM. 
*                CODES = CONTROL CODES FOR USE BY *1AJ* 
*                       1/A, 1/B, 1/C, 1/D, 2/0 
*                       A = REQUEST ACTIVE (1AJ USE ONLY) 
*                       B = CLEAR RA+1 BEFORE RELOAD IF NOT SET 
*                       C = REMAINDER OF WORD IS PARAMETER LIST NOT 
*                           ADDRESS OF PARAMETER LIST 
*                       D = DO NOT RESTART CPU (1AJ USE ONLY) 
*                PARAMETER = INPUT/OUTPUT PARAMETER 
*                       18/ PARAMETER ON INPUT
*                       12/ STATUS,6/ UNUSED ON OUTPUT
*                PARM ADDR   = PARAMETER ADDRESS PASSED IN CALL.
* 
*         EACH *SRP* ROUTINE WILL SET THE ROLLOUT FLAG IN THE CONTROL 
*         POINT AREA. 
* 
*         DAYFILE MESSAGES. 
* 
*         *SFP/SRP SPECIAL REQUEST PROCESSING ERROR.* 
*                A SPECIAL REQUEST WAS OUTSTANDING WHEN THE CURRENT 
*                SPECIAL REQUEST WAS ISSUED.
 CKP      SPACE  4,10 
**        CKP - CHECKPOINT REQUEST. 
* 
*         ENTRY  (IR - IR+4) = CALL.
* 
*         EXIT   SPCW WORD SET IN CONTROL POINT AREA FOR CP PROGRAM.
  
  
          ENTRY  CKP         ENTRY
          LDN    0           SELECT CLEAR RA+1 OPTION (CODES B) 
          UJN    DMP1        PROCESS *SPCW* WORD
 REQ      SPACE  4,10 
**        REQ - REQUEST EQUIPMENT ASSIGNMENT. 
* 
*         ENTRY  (IR - IR+4) = CALL.
* 
*         EXIT   SPCW WORD SET IN CONTROL POINT AREA FOR CP PROGRAM.
  
  
          ENTRY  REQ         ENTRY
          LDN    0           SELECT CLEAR RA+1 OPTION (CODES B) 
          UJN    DMP1 
 DEP      SPACE  4,10 
**        DEP - DUMP EXTENDED MEMORY FIELD LENGTH.
* 
*         ENTRY  (IR - IR+4) = CALL.
* 
*         EXIT   SPCW WORD SET IN CONTROL POINT FOR CP PROGRAM. 
  
  
          ENTRY  DEP         ENTRY
          LDN    0           SELECT CLEAR RA+1 OPTION (CODES B) 
          UJN    DMP1        PROCESS *SPCW* WORD
 DMP      SPACE  4,10 
**        DMP - DUMP CM FIELD LENGTH. 
*         DMB - DUMP CM/EXTENDED MEMORY FIELD LENGTH IN BINARY. 
*         DMM - DUMP MACHINE MEMORY.
* 
*         ENTRY  (IR - IR+4) = CALL.
*                ENTERED AT *DMP1* FROM *CKP*, *DEP* AND *RWQ*. 
* 
*         EXIT   SPCW WORD SET IN CONTROL POINT AREA FOR CP PROGRAM.
* 
*         USES   CM - CM+4, IR+1. 
* 
*         CALL   ISP. 
* 
*         MACROS MONITOR. 
  
  
          ENTRY  DMP         ENTRY
          LDN    10          SELECT PARAMETER LIST OPTION (CODES C) 
 DMP1     STD    CM 
          LDD    IR+1        CHECK AUTO RECALL
          LPN    40 
          NJN    DMP1.1      IF AUTO RECALL SPECIFIED 
          LJM    DMP2        PROCESS ERROR
  
 DMP1.1   BSS    0
          RJM    ISP         INITIALIZE SPCW
          LDD    CM 
          RAM    DMPA+1 
          LDD    CP          LOAD SPCW
          ADC    SPCW 
          CRD    CM 
          LDD    CM          CHECK FOR *SPCW* FREE
          NJN    DMP2        IF *SPCW* NOT FREE 
          LDD    CP          STORE SPECIAL REQUEST
          ADC    SPCW 
          CWM    DMPA,ON
          LDN    ZERL        CLEAR *ROCM* PARAMETERS
          CRD    CM 
          ERRNZ  ROSR        CODE ASSUMES *ROSR* = 0
          MONITOR ROCM
          LDD    IR+1        RESTORE SYSTEM REQUEST 
          SCN    77 
          LMN    20          SET AUTO RECALL
          STD    IR+1 
          LDD    RA          WRITE TO RA+1
          SHN    6
          ADN    1
          CWD    IR 
          LJM    SFPX        EXIT 
  
 DMP2     LDN    /ERR/SRE    *SFP/SRP SPECIAL REQUEST ERROR.* 
          LJM    ERR         ERROR EXIT 
  
  
 DMPA     VFD    18/0,6/0,12/0,6/0,18/0 
 ISP      SPACE  4,10 
**        ISP - INITIALIZE SPCW.
* 
*         EXIT   (DMPA - DMPA+1) = ((IA)) 
  
  
 ISP      SUBR               ENTRY/EXIT 
          LDD    IA          READ CALL
          CRM    DMPA,ON
          LDM    DMPA+1 
          SCN    77          CLEAR CODES
          STM    DMPA+1 
          UJN    ISPX        RETURN 
          SPACE    4,10 
          OVERFLOW OVL
          OVERLAY (ERP - ERROR PROCESSOR.)
  
  
          ERRNZ  3R".O"-3R2SG  *SLL* ASSUMES *2SG* IS ERROR PROCESSOR 
 ERP      SPACE  4,10 
***       ERP - ERROR PROCESSOR.
* 
*         ENTRY  (EI) = ERROR NUMBER. 
* 
*         EXIT   TO *PPR* IF CONTROL POINT ABORTED. 
*                TO *SFPX* IF NON=FATAL ERROR.
* 
*         CALLS  DFM, NFE, SNM, SPN.
* 
*         MACROS MONITOR. 
  
  
          ENTRY  ERP
          LDC    ERPT+1      SET MESSAGE ADDRESS
          RAD    EI 
          LDM    -1,EI
          ZJN    ERP1        IF NO SPECIAL PROCESSING 
          STM    ERPA 
          RJM    0           PREPROCESS ERROR 
 ERPA     EQU    *-1
  
 ERP1     LDD    EI 
          LMC    /ERR/PCE+ERPT+1
          ZJN    ERP3        IF PP-CALL ERROR 
 ERP2     LDI    EI          ISSUE MESSAGE TO DAYFILE 
          RJM    DFM
          MONITOR ABTM       ABORT CONTROL POINT
          LJM    PPR
  
 ERP3     LDD    CP 
          ADN    FLSW 
          CRD    T0 
          LDD    T0+2 
          ADD    T0+3 
          ZJN    ERP4        IF SYSTEM CONTROL POINT
          LDD    FL 
          ZJN    ERP2        IF NO FIELD LENGTH 
          LDM    SNMB 
          NJN    ERP2        IF REQUEST NOT FROM INPUT REGISTER 
          LDN    PCET 
          STD    CM+1 
          MONITOR CEFM       CHANGE ERROR FLAG
          LDD    RA          REWRITE SYSTEM REQUEST TO RA+1.
          SHN    6
          ADN    1
          CWD    IR 
          LJM    SFPX        DROP PP
  
 ERP4     LDC    SNMA        * XXX NOT IN PP LIB.*
          RJM    DFM
          LJM    SFPX        DROP PPU 
  
 ERPT     BSS    0
          QUAL   ERR
          LOC    0
  
 SCE      CON    0,=C* SFP CALL ERROR.* 
 PCE      CON    /".O"/SNM,/".O"/SNMA   * XXX NOT IN PP LIB.* 
*PCE      CON    0,0         * MONITOR CALL ERROR.* (ISSUED BY 1AJ) 
 IOC      CON    /".O"/SPN,=C* INCORRECT ORIGIN CODE.*
 PAE      CON    /".O"/SPN,=C* PARAMETER ERROR.*
 IAF      CON    /".O"/SPN,=C* INCORRECT FUNCTION CODE.*
 SRE      CON    /".O"/SPN,=C* SPECIAL REQUEST PROCESSING ERROR.* 
 NET      CON    /".O"/NFE,=C* ERROR TEXT NOT FOUND.* 
 NMS      CON    /".O"/NFE,=C* ERROR TEXT NOT ON MASS STORAGE.* 
 BET      CON    /".O"/NFE,=C* BAD ERROR TEXT.* 
 IMN      CON    /".O"/NFE,=C* INCORRECT MESSAGE NUMBER.* 
 IOS      CON    /".O"/SPN,=C* I/O SEQUENCE ERROR.* 
 IDC      CON    /".O"/SPN,=C* UNKNOWN DEVICE NAME/TYPE.* 
  
          LOC    *O 
          QUAL   *
  
  
 NFE      SPACE  4,10 
**        NFE - NON-FATAL ERROR PROCESSOR.
* 
*         NFE ISSUES THE SPECIFIED MESSAGE AND A SECOND MESSAGE WHICH 
*                IDENTIFIES THE ERROR TEXT AND MESSAGE NUMBER.
* 
*         ENTRY  (EI) = ADDRESS OF *ERPT* POINTER TO ERROR MESSAGE. 
*                (MN) = MESSAGE NUMBER. 
*                (ERRA - ERRA+3) = ERROR TEXT NAME. 
* 
*         EXIT   TO *SFPX*. 
* 
*         USES   T1.
* 
*         CALLS  ACS, ANS, DFM, SPN.
  
  
 NFE      CON    0           ENTRY
          RJM    SPN         SET PACKAGE NAME IN MESSAGE
          LDI    EI 
          LMC    CPON        ISSUE BASE MESSAGE 
          RJM    DFM
          LDI    EI 
          ADN    4           ADVANCE PAST * SFP/D00*
          STD    T1 
          LDN    0           TRUNCATE BASE MESSAGE
          STI    T1 
          LDC    =C* TEXT=* 
          RJM    ACS         ASSEMBLE CHARACTER STRING
          LDC    ERRA        ADDRESS OF TEXT DECK NAME
          RJM    ACS         ASSEMBLE TEXT DECK NAME
          LDC    =C*, MSG=* 
          RJM    ACS         ASSEMBLE CHARACTER STRING
          LDM    ERRB 
          RJM    ANS         ASSEMBLE MESSAGE NUMBER
          LDC    =C*B.* 
          RJM    ACS         TERMINATE MESSAGE
          LDI    EI 
          LMC    CPON        ISSUE SECOND MESSAGE 
          RJM    DFM
          LJM    SFPX        DROP PP
 SNM      SPACE  4,10 
**        SNM - SET NAME IN MESSAGE.
* 
*         ENTRY  (PN - PN+1) = PACKAGE NAME TO LOAD.
*                (IR - IR+1) = PROGRAM MAKING CALL. 
* 
*         EXIT   * XXX NOT IN PP LIB.* MESSAGE SET UP.
* 
*         USES   PN+1.
  
  
 SNM      SUBR               ENTRY/EXIT 
          LDD    PN+1        SET PACKAGE NAME 
          LPN    77 
          NJN    SNM1        IF NOT ZERO CHARACTER
          LDN    1R 
          RAD    PN+1 
 SNM1     LDD    PN+1 
          STM    SNMA+1 
          LDD    PN 
          LMC    1R *100
          STM    SNMA 
          LDD    IR+1 
          SCN    77 
          LMN    1R.
          STM    SNMB+6 
          SCN    77 
          SHN    6
          LMD    IR 
          STM    SNMB+5 
          SHN    6
          LMD    PN+1 
          SHN    6
          LMD    PN 
          NJN    SNM2        IF CALLED BY *YYY* 
          STM    SNMB 
 SNM2     LJM    SNMX        RETURN 
  
 SNMA     DATA   L* XXX NOT IN PP LIB. *
 SNMB     DATA   C*CALLED BY YYY.*
 SPN      SPACE  4,10 
**        SPN - SET PACKAGE NAME. 
* 
*         ENTRY  (EI) = ADDRESS OF *ERPT* POINTER TO ERROR MESSAGE. 
* 
*         USES   T1.
  
  
 SPN      SUBR               ENTRY/EXIT 
          LCN    4
          RAI    EI 
          STD    T1 
          LDC    2R S 
          STI    T1          ADD * SFP* TO MESSAGE
          LDC    2RFP 
          STM    1,T1 
          LDD    IR+1 
          SCN    77 
          SHN    6
          LMD    IR 
          SHN    6
          STM    3,T1        ADD PACKAGE NAME TO MESSAGE
          SHN    -14
          LMC    1R/*100
          STM    2,T1 
          UJN    SPNX        RETURN 
  
  
*         COMMON DECKS FOR ERROR PROCESSOR. 
  
  
*CALL     COMPACS 
*CALL     COMPANS 
          SPACE  4,10 
          OVERFLOW OVL
          OVERLAY (D00 - EXTRACT ERROR TEXT.) 
 D00      SPACE  4,30 
***       D00 - EXTRACT ERROR TEXT. 
* 
*         D00 IS A GOODIE THAT WILL EXTRACT MESSAGES FROM SPECIALLY 
*         CREATED SYSTEM TEXT DECKS TO AID IN ANALYZING ERROR 
*         SITUATIONS RESULTING FROM A PRODUCT SET. BY USING AN ERROR
*         NUMBER AND THE PROPER SYSTEM TEXT DECK, AN ERROR DIAGNOSTIC 
*         WILL BE TRANSMITTED TO THE DAYFILE AND/OR TO A SPECIFIED CM 
*         BUFFER. ALL SYSTEM TEXT DECKS TO BE USED MUST BE
*         MS RESIDENT.
* 
*         CALL. 
* 
*T        18/ *D00*,6/R,18/0,18/ ADDRES 
* 
*T,ADDRES 12/ A,12/ MSG NO.,12/ BUF SIZE,18/ BUF ADDR ,6/ 
*T        42/ TEXT DECK NAME,18/ INSERT CHARACTER 
* 
*         WHERE  A = 4000B - IF INSERTIONS TO MESSAGES. 
*                A = 2000B - IF DAYFILE MESSAGE TRANSFER. 
*                A = 1000B - IF CM BUFFER MESSAGE TRANSFER. 
* 
*         EXIT. 
* 
*T ADDRES 36/ ,12/ STATUS,12/ 1 
* 
*         WHERE  STATUS = 0 - IF TRANSMITTAL TO DAYFILE ONLY. 
* 
*                       = 7777B IF ERROR. 
*                       = CM WORDS WRITTEN IF CM BUFFER TRANSMITTAL.
* 
* 
*         DAYFILE MESSAGES. 
* 
* 
*         *SFP/D00 ERROR TEXT NOT FOUND.* 
*                THE SPECIFIED SYSTEMS TEXT COULD NOT BE FOUND. 
* 
*         *SFP/D00 ERROR TEXT NOT ON MASS STORAGE.* 
*                THE SPECIFIED SYSTEMS TEXT DOES NOT RESIDE ON
*                MASS STORAGE.
* 
*         *SFP/D00 BAD ERROR TEXT.* 
*                THE SPECIFIED SYSTEMS TEXT IS NOT IN CORRECT FORMAT. 
* 
*         *SFP/D00 INCORRECT MESSAGE NUMBER.* 
*                THE SPECIFIED MESSAGE NUMBER COULD NOT BE FOUND ON 
*                THE SYSTEMS TEXT.
* 
*         *SFP/D00 TEXT = XXXXXXX, MSG = NNNN.* 
*                IDENTIFIES THE SPECIFIED TEXT AND MESSAGE NUMBER 
*                CAUSING THE PREVIOUS DAYFILE MESSAGE.  ALWAYS
*                FOLLOWS ONE OF THE ABOVE DAYFILE MESSAGES. 
  
  
  
          EJECT 
*         DIRECT CELL ASSIGNMENTS.
  
  
 BA       EQU    20          PP BUFFER ADDRESS
 B1       EQU    21          TEMPORARY STORAGE
 B2       EQU    22          TEMPORARY STORAGE
 IA       EQU    23          INDEX ADVANCE
 BE       EQU    24          END OF PP BUFFER 
 IF       EQU    25          INSERTION FLAG 
 TD       EQU    26          TRANSMIT DAYFILE 
 TC       EQU    27          TRANSMIT CM BUFFER 
 AB       EQU    40 - 44     TEXT NAME
 ER       EQU    40          RECORD STATUS
 SC       EQU    41          SECTOR COUNT 
 WC       EQU    42          WORD COUNT 
 IC       EQU    44          INSETTION CHARACTER
 AD       EQU    45 - 46     CM BUFFER ADDRESS
 ST       EQU    47          EXIT STATUS
 P0       EQU    57          TEMPORARY LOCATION 
 MN       EQU    60          MESSAGE NUMBER 
 BF       EQU    61          CM BUFFER SIZE 
 P1       EQU    62          TEMPORARY LOCATION 
 IN       EQU    63 - 67     INSERTION MESSAGE
          EJECT 
*         D00 - MAIN PROCESSING.
  
 D001     LDC    TBUF        PROCESS FIRST SECTOR 
          RJM    FPB
          LDM    2,BA 
          LMC    7700 
          NJN    D002        IF NO PREFIX TABLE 
          AOM    3,BA 
          STD    T2 
          SHN    2
          ADD    T2 
          RAD    BA          ADVANCE INDEX
          LDD    WC 
          SBD    T2          ADJUST WORD COUNT
          STD    WC 
 D002     LDM    2,BA 
          ADM    3,BA 
          LMC    5101 
          ZJN    D004        IF SYSTEMS TEXT FORMAT 
 D003     LDN    /ERR/BET    *SFP/D00 BAD ERROR TEXT.*
          LJM    NFE         NON FATAL ERROR
  
 D004     STD    ST          CLEAR STATUS BYTE
          LDM    12,BA
          SHN    14 
          LMM    13,BA       SET LENGTH OF SYMBOL TABLE 
          SHN    -1 
          STD    P0 
          ZJN    D003        IF NO SYMBOL TABLE 
          LDN    25 
          RAD    BA          ADVANCE INDEX
          LCN    4
          RAD    WC 
          RJM    SST         SEARCH SYMBOL TABLE
          RJM    PMS         PROCESS MICRO SEARCH 
  
*         INSERT MESSAGE STUFF. 
  
          LDD    IF 
          NJN    D005        IF INSERTIONS TO BE PROCESSED
          STD    IC          CLEAR INSERTION CHARACTER
 D005     RJM    PIM         PROCESS D00 OPTIONS
  
*         SET EXIT STATUS.
  
 D006     RJM    SES
          LJM    SFPX        RETURN 
 PIM      SPACE  4,20 
**        PIM - PROCESS MESSAGE INSERTIONS. 
* 
*         ENTRY  (IC) = INSERTION CHARACTER.
*                (TC) = TRANSMIT TO CM BUFFER FLAG. 
*                (TD) = TRANSMIT TO DAYFILE FLAG. 
*                (BA) = LWA OF MESSAGE. 
*                (BF) = BUFFER SIZE.
*                (AD - AD+1) = FWA OF CM BUFFER.
*                (P1) = FWA OF MESSAGE. 
* 
*         EXIT   MESSAGE SENT TO DAYFILE AND MESSAGE BUFFER 
*                AS REQUIRED. 
*                (ST) = NUMBER OF CM WORDS RETURNED TO CM BUFFER. 
* 
*         USES   P0, P1, ST, T1, T4, T5, T6.
* 
*         CALLS  DFM, ICS.
* 
*         MACROS LDA. 
  
  
 PIM      SUBR               ENTRY/EXIT 
          LDN    1
          STD    P0          INITIALIZE INDEX TO PARAMETER AREA 
          LDC    MBUF 
          STD    T6          DEFINE CHARACTER BUFFER
          SOD    P1 
          LDM    -1,BA
          SCN    77          CLEAR END OF MESSAGE 
          STM    -1,BA
  
*         PROCESS MESSAGE INSERTIONS. 
  
 PIM1     AOD    P1          ADVANCE MESSAGE ADDRESS
          LDI    P1 
          SHN    -6          EXTRACT UPPER CHARACTER
          STI    T6 
          ZJN    PIM4        IF END OF MESSAGE
          LMD    IC 
          NJN    PIM2        IF NOT INSERTION CHARACTER 
          RJM    ICS
 PIM2     AOD    T6          ADVANCE BUFFER ADDRESS 
          SBD    P1 
          PJN    PIM4        IF MESSAGE OVERLAID
          LDI    P1 
          LPN    77          EXTRACT LOWER CHARACTER
          STI    T6 
          ZJN    PIM4        IF END OF MESSAGE
          LMD    IC 
          NJN    PIM3        IF NOT INSERTION CHARACTER 
          RJM    ICS
 PIM3     AOD    T6          ADVANCE BUFFER ADDRESS 
          SBD    P1 
          MJN    PIM1        IF NOT OVERLAYING MESSAGE
 PIM4     LDC    MBUF 
          STD    T4 
          STD    T5          SET START OF CHARACTER BUFFER
          STD    T1 
          LMD    T6          CHECK - END OF MESSAGE ON BYTE BOUNDARY
          LPN    1
          ZJN    PIM5        IF ON BYTE BOUNDARY
          AOD    T6 
          LDN    0           STORE ZERO ON BYTE BOUNDARY
          STI    T6 
  
*         PACK MESSAGE WITH INSERTIONS. 
  
 PIM5     LDI    T1 
          SHN    6           PACK MESSAGE WITH INSERTIONS 
          LMM    1,T1 
          STI    T5          STORE TWO CHARACTERS 
          AOD    T5 
          LDN    2
          RAD    T1          ADVANCE THRU CHARACTER BUFFER
          LMD    T6 
          NJN    PIM5        IF NOT END OF MESSAGE
  
*         SEND MESSAGE TO DAYFILE.
  
          LDD    TD 
          ZJN    PIM6        IF NO TRANSMISSION TO DAYFILE
          RJM    IDM         ISSUE DAYFILE MESSAGE
  
*         SEND MESSAGE TO CM BUFFER.
  
 PIM6     LDD    TC 
          NJN    PIM7        IF MESSAGE GOING TO CM BUFFER
          LJM    PIMX        RETURN 
  
 PIM7     LDM    -1,T5       CHECK LAST CHARACTER 
          LPN    77 
          NJN    PIM8        IF NOT ZERO
          LDN    1R 
          RAM    -1,T5       INSERT BLANK CHARACTER 
 PIM8     AOD    ST 
          LDN    5
          RAD    T4          FIND CM WORD COUNT OF MESSAGE
          SBD    T5 
          MJN    PIM8        IF NOT END OF MESSAGE
          STD    T1 
          NJN    PIM9        IF EOM NOT ON CM WORD BOUNDARY 
          AOD    ST          ADVANCE WORD COUNT 
          LDN    5
          STD    T1 
 PIM9     LDN    0           ZERO FILL END OF MESSAGE 
          STI    T5 
          AOD    T5 
          SOD    T1 
          NJN    PIM9        IF NOT ZERO FILLED 
          LDD    BF 
          SBD    ST 
          PJN    PIM10       IF MESSAGE LENGTH .LE. BUFFER SIZE 
          LDD    BF 
          STD    ST          SET MESSAGE LENGTH = BUFFER SIZE 
 PIM10    LDD    AD 
          SHN    14 
          LMD    AD+1        CHECK - VALID CM ADDRESS 
          ADD    ST 
          SHN    -6 
          SBD    FL 
          MJN    PIM11       IF END OF BUFFER WITHIN FL 
          LDN    /ERR/PAE 
          LJM    ERR         PROCESS   ERROR
  
 PIM11    LDA    AD 
          CWM    MBUF,ST     COPY MESSAGE TO CENTRAL
 PIMA     EQU    *-1
          LJM    PIMX        RETURN 
 NFE      SPACE  4,10 
**        NFE - NON-FATAL ERROR PROCESSOR.
* 
*         ENTRY  (A) = ERROR NUMBER.
* 
*         EXIT   (A) = ERROR NUMBER.
*                TO *ERR*.
* 
*         USES   EI, ST.
* 
*         CALLS  SES. 
  
  
 NFE      STD    EI 
          LCN    0
          STD    ST 
          RJM    SES
          LDD    EI 
          LJM    ERR         PROCESS ERROR
 SES      SPACE  4,10 
**        SES - SET EXIT STATUS.
* 
*         ENTRY  (ST) = STATUS. 
* 
*         EXIT   PARAMETER BLOCK SET COMPLETE.
* 
*         USES   CM - CM+4
* 
*         MACROS LDA. 
  
 SES      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CM 
          LDD    ST          SET STATUS 
          STD    CM+3 
          AOD    CM+4        SET REQUEST COMPLETE 
          LDA    IR+3 
          CWD    CM 
          UJN    SESX        RETURN 
 ICS      SPACE  4,10 
**        ICS - INSERT CHARACTER STRING.
* 
*         ENTRY  (P0) = INDEX FOR INSERTION TEXT. 
*                (P1) = MESSAGE ADDRESS.
*                (T6) = STRING BUFFER ADDRESS.
* 
*         EXIT   (P0) = INDEX FOR INSERTION TEXT. 
*                (P1) = MESSAGE ADDRESS.
*                (T6) = STRING BUFFER ADDRESS.
* 
*         USES   P0, T2, T6, IN - IN+4. 
  
  
 ICS3     SOD    T6          ADJUST STRING BUFFER INDEX 
  
 ICS      SUBR               ENTRY/EXIT 
  
 ICS1     AOD    P0          ADVANCE PARAMETER INDEX
          LDA    IR+3 
          ADD    P0 
          CRD    IN          READ WORD OF TEXT FOR INSERTION
          LDN    IN 
          STD    T2          SET ADDRESS OF FIRST BYTE
 ICS2     LDI    T2 
          SHN    -6          EXTRACT UPPER CHARACTER
          STI    T6 
          ZJN    ICS3        IF END OF INSERTION
          AOD    T6 
          SBD    P1 
          PJN    ICS3        IF MESSAGE BEING OVERLAID
          LDI    T2 
          LPN    77          EXTRACT LOWER CHARACTER
          STI    T6 
          ZJN    ICS3        IF END OF INSERTION
          AOD    T6 
          SBD    P1 
          PJN    ICS3        IF MESSAGE BEING OVERLAID
          AOD    T2 
          LMN    IN+5 
          NJN    ICS2        IF NOT END OF CM WORD
          UJN    ICS1        LOOP FOR MORE INSERTION TEXT 
 IDM      SPACE  4,10 
**        IDM - ISSUE DAYFILE MESSAGE.
* 
*         ENTRY  (T4) = FWA OF MESSAGE. 
*                (T5) = LWA+1 OF MESSAGE. 
* 
*         EXIT   ((T5)) = 0.
* 
*         USES   T1,T2,T6,T7. 
* 
*         CALLS  DFM. 
  
  
 IDM      SUBR               ENTRY/EXIT 
          LDD    T4          INITIALIZE NEXT FRAGMENT POINTER 
          STD    T6 
          LDD    T5          CALCULATE MESSAGE LENGTH 
          SBD    T4 
          STD    T7 
  
*         LOOP UNTIL ALL OF THE MESSAGE HAS BEEN ISSUED TO THE DAYFILE. 
*         THE MESSAGE IS ISSUED IN FRAGMENTS OF 50 CHARACTERS OR LESS.
  
 IDM1     LDD    T7          CALCULATE MINIMUM OF 50 OR REMAINDER 
          SBN    26D
          PJN    IDM2        IF MORE THAN 50 CHARACTERS REMAIN
          LDD    T7          SET NUMBER OF WORDS IN LAST FRAGMENT 
          STD    T1 
          LDN    0           CLEAR LENGTH FOR NO REMAINING FRAGMENT 
          STD    T7 
          UJN    IDM3        ISSUE LAST MESSAGE FRAGMENT
  
 IDM2     ADN    1           SET NEW LENGTH OF REMAINING FRAGMENT 
          STD    T7 
          LDN    25D         SET FOR A 50 CHARACTER FRAGMENT
          STD    T1 
  
*         SETUP THE NEXT MESSAGE TO BE ISSUED.
  
 IDM3     LDD    T1          CALCULATE ADDRESS OF VALUE TO SAVE/CLEAR 
          ADD    T6 
          STD    T2          FWA + NEXT LENGTH + COMBINED OLD LENGTH
          LDI    T2          GET VALUE TO BE SAVED
          STI    T5          SET AT LWA+1 OF MESSAGE
          LDN    0           SET FRAGMENT TERMINATOR
          STI    T2 
  
*         ISSUE NEXT MESSAGE. 
  
          LDD    T6          SET ADDRESS OF CURRENT FRAGMENT
          STM    IDMB 
          LDD    T1          ACCUMMULATE LENGTH OF FRAGMENTS
          RAD    T6 
 IDMA     LDC    **          (*NMSN* AFTER FIRST FRAGMENT)
 IDMB     EQU    *-1         (ADDRESS OF FRAGMENT)
          RJM    DFM         ISSUE NEXT MESSAGE 
  
*         PROCESS REMAINING FRAGMENTS AS NECESSARY. 
  
          LDD    T7          CHECK REMAINING LENGTH 
          NJN    IDM4        IF ANOTHER FRAGMENT TO PROCESS 
          LJM    IDMX        EXIT 
  
 IDM4     LDC    LDCI+NMSN/10000  SETUP FOR NEXT MESSAGE ISSUED 
          STM    IDMA 
          LDI    T5          RESTORE THE VALUE USED FOR TERMINATOR
          STI    T6 
          LJM    IDM1        PROCESS NEXT MESSAGE FRAGMENT
          SPACE  4,10 
 MBUF     EQU    *           MESSAGE BUFFER 
 SST      SPACE  4,10 
**        SST - SEARCH FOR SYMBOL TABLE.
* 
*         ENTRY  (P0) = LENGTH OF SYMBOL TABLE. 
*                (BA) = BUFFER ADDRESS. 
*                (MN) = MESSAGE NUMBER. 
*                (BE) = LWA OF BUFFER.
*                (WC) = WORD COUNT. 
* 
*         EXIT   (IN - IN+4) = MICRO NAME.
*                (P0) = LENGTH OF SYMBOLTABLE.
* 
*         CALLS  GNB. 
  
 SST3     SOD    BA 
          SBN    10 
          STM    SSTA 
          LDD    MA 
          CWM    *,ON        MOVE MICRO NAME TO DIRECT CELLS
 SSTA     EQU    *-1
          SBN    1
          CRD    IN 
  
 SST      SUBR               ENTRY/EXIT 
 SST1     LDI    BA          CHECK MESSAGE NUMBER 
          LMD    MN 
          ZJN    SST3        IF MESSAGE FOUND 
          SOD    P0 
          NJN    SST2        IF NOT END OF SYMBOL TABLE 
          LDN    /ERR/IMN    *SFP/D00 INCORRECT MESSAGE NUMBER.*
          LJM    NFE         PROCESS NON-FATAL ERROR
  
 SST2     LCN    2
          RAD    WC 
          LDN    10D
          RAD    BA          ADVANCE INDEX
          SBD    BE 
          MJN    SST1        IF STILL WITHIN BUFFER 
          ZJN    SST1        IF STILL WITHIN BUFFER 
          LDD    BA 
          SBN    9D 
          STD    P1 
          RJM    GNB         GET NEXT BLOCK 
          SOD    IA 
          LPN    3
          LMC    -0 
          RAD    WC          ADJUST WORD COUNT
          UJN    SST1        CONTINUE SEARCH
 PMS      SPACE  4,10 
**        PMS - PROCESS MICRO SEARCH. 
* 
*         ENTRY  (P0) = LENGTH OF SYMBOL TABLE. 
*                (WC) = WORD COUNT. 
*                (T4) = CHANNEL.
* 
*         EXIT   (P1) = FWA OF MESSAGE. 
* 
*         CALLS  CMP, FPB, GNB. 
  
 PMS      SUBR               ENTRY/EXIT 
          SOD    P0 
          SHN    1           LENGTH TO END OF SYMBOL TABLE
          STD    P0 
          SBD    WC 
          MJN    PMS1        IF MICRO TABLE WITHIN BUFFER 
          STD    P0 
          LDC    TBUF 
          RJM    FPB         LOAD PP BUFFER 
 PMS1     LDD    P0 
          SHN    2           SET INDEX TO START OF MICRO TABLE
          ADD    P0 
          ADN    2
          RAD    BA 
          LDD    WC          DECREMENT WORD COUNT 
          SBD    P0 
          STD    WC 
          LDM    4,BA        CHECK LENGTH OF MICRO TABLE
          NJN    PMS2        IF NO LENGTH 
          LDN    /ERR/BET    *SFP/D00 BAD ERROR TEXT.*
          LJM    NFE         PROCESS NON FATAL ERROR
  
 PMS2     LDD    BA 
          STD    P1          SET ADDRESS OF MICRO CONTROL WORD
 PMS3     LDN    5
          RAD    BA          LOCATE NEXT CONTROL WORD 
          SOD    WC 
          NJN    PMS4        IF NOT END OF BUFFER 
          RJM    GNB
 PMS4     LDI    BA 
          SHN    -6          CHECK FOR MICRO CONTROL WORD 
          LMN    20 
          NJN    PMS3        IF NOT CONTROL WORD
          LDI    BA 
          LPN    77 
          STD    T0 
          SHN    2
          ADD    T0          CHECK LENGTH OF ENTRY
          ADD    P1 
          LMD    BA 
          NJN    PMS3        IF NOT MICRO CONTROL WORD
          LDM    -1,BA
          LPN    77          CHECK WORD COUNT FOR LWA MESSAGE 
          SBN    10D
          PJN    PMS3        IF INCORRECT COUNT 
          RJM    CMP
          NJN    PMS2        IF NO MATCH ON MICRO NAME
          LDN    5
          RAD    P1          SET FWA OF MESSAGE 
          LJM    PMSX        RETURN 
 CMP      SPACE  4,10 
**        CMP - COMPARE MICRO NAME. 
* 
*         ENTRY  (IN - IN+4) = MICRO NAME.
*                ((BA)) = FWAOF NAME TO COMPARE.
* 
*         EXIT   (A) = 0, IF NAMES COMPARE. 
  
  
 CMP      SUBR               ENTRY/EXIT 
          LDD    IN+1 
          LMM    1,BA 
          NJN    CMPX        IF NO MATCH ON BYTE 1
          LDD    IN+2 
          LMM    2,BA 
          NJN    CMPX        IF NO MATCH ON BYTE 2
          LDD    IN+3 
          LMM    3,BA 
          NJN    CMPX        IF NO MATCH ON BYTE 3
          LDD    IN+4 
          LMM    4,BA        COMPARE BYTE 4 
          UJN    CMPX 
 GNT      SPACE  4,10 
**        GNT - GET NEXT BLOCK. 
* 
*         ENTRY  (T4) = CHANNEL.
*                (T5) = EQUIPMENT.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
* 
*         EXIT   BUFFER FILLED. 
* 
*         CALLS  FPB. 
  
  
 GNB      SUBR               ENTRY/EXIT 
          LDD    BA 
          ADC    10000
          SBD    BE          SET ADVANCE INTO NEXT BUFFER 
          STD    IA 
          LDC    TBUF        SET BUFFER ADDRESS 
          STD    BA 
          SOD    BE 
 GNB1     LDI    P1 
          STI    BA          MOVE UNCHECKED DATA TO START OF BUFFER 
          AOD    BA 
          AOD    P1 
          LMD    BE 
          NJN    GNB1        IF NOT END OF MOVE 
          LDI    P1 
          STD    B1 
          LDM    1,P1        SAVE BYTES OVERLAID BY LINKAGE 
          STD    B2 
          LDD    BA          READ NEXT BLOCK
          RJM    FPB
          LDC    TBUF 
          STD    P1          SET START OF BUFFER
          AOD    IA 
          RAD    BA          ADVANCE BUFFER INDEX 
          LJM    GNBX        RETURN 
 FPB      SPACE  4,20 
**        FPB - FILL PP BUFFER. 
* 
*         ENTRY  (A) = FWA OF BUFFER. 
*                (ER) = EOR STATUS. 
*                (T5) = EQUIPMENT.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
* 
*         EXIT   (BA) = FWA OF BUFFER.
*                TO *MSR* IF MASS STORAGE ERROR.
* 
*         CALLS  RNS. 
* 
*         MACROS ENDMS. 
  
  
 FPB      SUBR               ENTRY/EXIT 
          STD    T3 
          STD    BA          SET BUFFER ADDRESS 
          LDD    ER 
          ZJN    FPB2        IF EOR ON LAST READ
          LDN    0
          STD    WC          CLEAR WORD/SECTOR COUNT
          STD    SC 
          LDC    7775 
          SBD    BA          CALCULATE SPACE AVAILABLE
          SHN    -6 
          STD    T2 
 FPB1     AOD    SC          ADVANCE SECTOR COUNT 
          LCN    5
          RAD    T2 
          PJN    FPB1        IF NOT END OF BUFFER SPACE 
          SOD    SC 
          ZJN    FPB2        IF NOT ROOM FOR ONE SECTOR 
          LDD    T3          READ FIRST SECTOR OF BLOCK 
          RJM    RNS
          MJP    MSR         IF MASS STORAGE ERROR
          NJN    FPB4        IF NOT EOF 
 FPB2     ENDMS 
          LDN    /ERR/BET    *SFP/D00 BAD ERROR TEXT.*
          LJM    NFE         ISSUE ERROR MESSAGE
  
 FPB3     LDI    BE 
          STD    B2          SAVE BYTES OVERLAID BY LINKAGE 
          LDI    T3 
          STD    B1 
          LDD    T3          READ NEXT SECTOR 
          RJM    RNS
          MJP    MSR         IF MASS STORAGE ERROR
 FPB4     RAD    WC          INCREMENT WORD COUNT 
          LDD    B1 
          STI    T3          RESTORE BYTES OVERLAID BY LINKAGE
          LDD    B2 
          STM    1,T3 
          LDD    T1 
          SHN    2           SECTOR WORD COUNT * 5
          ADD    T1 
          ADD    T3 
          STD    T3 
          ADN    1
          STD    BE          SET END OF BUFFER
          LDD    T1 
          SHN    -6          SET RECORD STATUS
          STD    ER 
          ZJN    FPB5        IF SHORT SECTOR
          SOD    SC 
          NJN    FPB3        IF BUFFER SPACE FOR NEXT SECTOR
 FPB5     ENDMS 
          LJM    FPBX        RETURN 
  
  
*         COMMON DECKS
  
  
*CALL     COMPRNS 
  
 TBUF     EQU    *
  
*CALL     COMPCLD 
          TITLE  PRESET.
 PRS      SPACE  4,20 
**        PRS - PRESET ROUTINE. 
* 
*         EXIT   (IF) = INSERTION FLAG. 
*                (IC) = INSERTION CHARACTER.
*                (TD) = SEND MESSAGE TO DAYFILE FLAG. 
*                (TC) = SEND MESSAGE TO CM BUFFER.
*                (T4) = CHANNEL.
*                (T5) = EQUIPMENT.
*                (T6) = TRACK.
*                (T7) = SECTOR, 
*                (AD - AD+1) = CM BUFFER ADDRESS. 
*                (MN) = MESSAGE NUMBER. 
*                (BF) = BUFFER SIZE.
*                SYSTEM FILE ATTACHED.
*                MASS STORAGE DRIVER LOADED.
*                TO *MSR* IF MASS STORAGE ERROR.
* 
*         USES   AB - AB+4, AD - AD+1, FS - FS+4, P0 - P0+4, T4 - T7. 
* 
*         CALLS  CLD. 
* 
*         MACROS MONITOR. 
  
  
          ENTRY  D00
          LDN    ZERL        CLEAR FLAG CELLS 
          CRD    IF 
  
*         READ PARAMETER BLOCK
  
          LDA    IR+3 
          CRD    P0 
          ADN    1
          CRD    AB 
          CRM    ERRA,ON     SAVE ERROR TEXT DECK NAME
          LDM    ERRA+3      CLEAR ALL BUT TEXT DECK NAME 
          SCN    77 
          STM    ERRA+3 
          LDN    0
          STM    ERRA+4 
          LDD    MN          SAVE ERROR TEXT MESSAGE NUMBER 
          STM    ERRB 
          LDD    P0 
          SHN    -11
          SHN    11+6+1 
          STD    IF          SET INSERT FLAG
          SCN    1
          SHN    1
          STD    TD          SET DAYFILE FLAG 
          SCN    1
          SHN    1
          STD    TC          SET CM BUFFER FLAG 
          LDD    P1+1 
          SCN    77 
          SHN    6
          LMD    P1 
          SHN    6
          STD    AD+1        SET CM BUFFER ADDRESS
          SHN    -14
          LPN    37 
          STD    AD 
          RJM    CLD         SEARCH LIBRARY DIRECTORY 
          NJN    PRS1        IF ERROR TEXT FOUND
          LDN    /ERR/NET    *SFP/D00 ERROR TEXT NOT FOUND.*
          LJM    NFE         PROCESS NON FATAL ERROR
  
 PRS1     CRD    FS          READ DIRECTORY ENTRY 
          LDD    FS+1 
          LPC    6000 
          ZJN    PRS1.1      IF ON SYSTEM DEVICE
          SHN    21-14
          MJN    PRS1.0      IF ON ALTERNATE SYSTEM 
          LDN    /ERR/NMS    *SFP/D00 ERROR TEXT NOT ON MASS STORAGE.*
          LJM    NFE         PROCESS NON FATAL ERROR
  
 PRS1.0   LDD    FS+2        SET ALTERNATE EQUIPMENT
          LPC    777
          STD    T5 
          UJN    PRS3        RESUME PROCESSING
  
 PRS1.1   LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    T5 
 PRS2     AOD    T5 
          SFA    EST
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    -12
          LMN    3
          NJN    PRS2        IF NOT SYSTEM DEVICE 
 PRS3     LDD    FS+3 
          STD    T6          SET TRACK
          LDD    FS+4 
          STD    T7          SET SECTOR 
          SETMS  READSYS
          LJM    D001        ENTER MAIN ROUTINE 
          SPACE  4,10 
          OVERFLOW OVL
  
          OVERLAY (FIN - FILE INFORMATION REQUEST.) 
 FIN      SPACE  4,30 
***       FIN - FILE INFORMATION REQUEST. 
* 
*         FIN MAPS VALID NOS/BE *FIN* FUNCTIONS INTO VALID NOS *CPM*
*         OR *LFM* REQUESTS AND ISSUES THESE REQUESTS.
* 
*         CALL. 
* 
*T        24/ *FINP*, 6/0, 6/ FC, 6/0, 18/ ADDR 
* 
*                FC = FUNCTION CODE 
* 
*                ADDR = PARAMETER ADDRESS (IF NEEDED) 
* 
*         THE FOLLOWING MAPPING OCCURS -
* 
*         FC     CALL/FUNCTION     NORMAL NOS MACRO 
* 
*         01     LFM/32            FILINFO
*         02     LFM/21            ACCSF
*         03     LFM/22            ENCSF
*         04     CPM/74            GETJCI 
*         05     CPM/74            SETJCI 
* 
*         EXIT   LFM OR CPM REQUESTS ISSUED.
* 
*         DAYFILE MESSAGES. 
* 
*         *SFP/FIN INCORRECT FUNCTION CODE.*
*                THE SPECIFIED FUNCTION CODE IS UNDEFINED.
  
  
          ENTRY  FIN
          LDD    IR+2        VALIDATE FUNCTION CODE 
          LPN    77 
          ZJN    FIN1        IF NO FUNCTION CODE
          SBN    TFINL
          MJN    FIN2        IF LEGAL FUNCTION CODE 
 FIN1     LDN    /ERR/IAF    * SFP/FIN INCORRECT FUNCTION CODE.*
          LJM    ERR         PROCESS ERROR
  
 FIN2     LDM    TFIN,IR+2   SET FUNCTION CODE
          SHN    14 
          STD    IR+2 
          MJN    FIN3        IF *CPM* CALL
          EXECUTE LFM,* 
          UJN    FIN5        ISSUE *LFM* REQUEST
  
 FIN3     SHN    1           CHECK FOR SET FUNCTION 
          PJN    FIN4        IF GET 
          LDD    HN          SET *SETJCI* FUNCTION
          RAD    IR+3 
 FIN4     EXECUTE CPM,* 
 FIN5     SHN    14 
          STD    IR 
          SHN    -6 
          LMD    IR+1 
          SCN    77 
          LMD    IR+1 
          STD    IR+1 
          LDD    IA          STORE INPUT REGISTER 
          CWD    IR 
          LJM    PPR         EXIT TO PP RESIDENT
  
**        TFIN - TABLE OF FUNCTION CODE TRANSLATIONS. 
* 
*         INDEXED BY *FIN* FUNCTION CODE. 
* 
*T        6/ CODE, 6/ PP
* 
*                CODE = *CPM* OR *LFM* FUNCTION CODE. 
*                PP = 0 IF *LFM* CALL.
*                   = 40 IF *GETJCI*
*                   = 60 IF *SETJCI*
  
  
 TFIN     BSS    0
          LOC    0
          CON    0
          CON    32*100+0 
          CON    21*100+0 
          CON    22*100+0 
          CON    74*100+40
          CON    74*100+40+20 
 TFINL    EQU    *
          LOC    *O 
          SPACE  4,10 
          OVERFLOW OVL
  
  
          QUAL
          TTL    SFP - SCOPE FUNCTION PROCESSOR.
          SPACE  4,10 
          END 
