*COMDECK  COMPCOM 
 COMPCOM  TITLE  COMPCOM - COMPILER / ASSEMBLER COMMUNICATION AREA. 
  
**        COMPCOM - COMPILER / ASSEMBLER COMMUNICATION AREA.
* 
* 
*                COMPCOM  CONTAINS ALL INFORMATION PASSED BETWEEN 
*         COMPASS AND A COMPILER CALLING COMPASS AS A LEVEL (1,0) 
*         OVERLAY TO PROCESS COMPASS SOURCE SUBPROGRAMS OCCURRING 
*         BETWEEN COMPILER LANGUAGE  SUBPROGRAMS,  OR TO ASSEMBLE 
*         OBJECT PROGRAMS PRODUCED BY THE COMPILER IN THE FORM OF 
*         COMPASS SOURCE STATEMENTS.  COMPCOM IS A COMMON DECK IN 
*         THE  COMPASS  PROGRAM LIBRARY FILE,  AND IS ACCESSED BY 
*         COMPASS VIA AN UPDATE  *CALL  CARD AND BY COMPILERS VIA 
*         COMPASS  XTEXT  PSEUDO INSTRUCTIONS.
* 
* 
*         R. H. GOODELL.     71/05/21.
*         R. H. GOODELL.     75/10/23.     54-TABLE, BL, PD, PS, PW.
  
  
**        THE FOLLOWING MUST BE ESTABLISHED WHEN COMPCOM IS CALLED. 
* 
*         IN AN ABSOLUTE ASSEMBLY, THE LOCATION COUNTER MUST EQUAL
*         114B IF 54-TABLES ARE USED, ELSE 104B.  IN A RELOCATABLE
*         ASSEMBLY, THE LOCATION COUNTER MUST BE AT THE LOCATION
*         THAT WILL CORRESPOND TO 114B OR 104B AFTER RELOCATION BY
*         THE OVERLAY GENERATOR.
* 
*         THE FOLLOWING MACROS, MICROS, AND SYMBOLS MUST BE DEFINED.
* 
*         BUFL      MICRO    STANDARD CIO BUFFER SIZE.
* 
*         CP.ABORT  MICRO    DEFAULT CONTENT OF BIT 29 OF WORD           CPS150 
*                            CP.ABORT MAY BE *0* OR */*.                 CPS150 
* 
*         CP.BLF    MICRO    DEFAULT CONTENT OF WORD CP.BLF.
*                            MAY BE *0* OR *1S59*.
* 
*         CP.F=     MICRO    DEFAULT CONTENT OF WORD CP.BATCH.
*                            MAY BE *0*, *-1*, *-2*, ETC. 
* 
*         CP.LISTF  MICRO    DEFAULT CONTENT OF WORD CP.LISTF.
*                            MAY BE *0* OR *1*. 
* 
*         CP.PAGE   MICRO    DEFAULT CONTENT OF WORD CP.PAGE. 
*                            MAY BE *0* OR *1S59*.
* 
*         CP#RM     SYMBOL   0 = ASSEMBLE DIRECT *CIO* CALLS FOR I/O. 
*                            6 = ASSEMBLE 6RM USAGE FOR I/O.            S028  15
*                            7 = ASSEMBLE 7RM USAGE FOR I/O.            S028  16
* 
*         FET       MACRO    USED IF CP#RM = 0 TO DEFINE FET"S. 
*                            CALL -   LOCSYM  FET  LFN,BUF,SIZE 
* 
*         IBUF      SYMBOL   FWA OF SOURCE INPUT FILE CIO BUFFER. 
*                            NEED NOT BE PREVIOUSLY DEFINED.
* 
*         LISTRM    MICRO    CONTROLS LISTING OF I/O SUBROUTINES. 
*                            * * = LIST,  *-* = DO NOT LIST.
* 
*         MIN.FL    SYMBOL   MINIMUM SCM FIELD LENGTH REQUIRED. 
*                            INITIAL CONTENT OF WORD CP.MAXFL.
*                            NEED NOT BE PREVIOUSLY DEFINED.
* 
*         MODEL     MICRO    CYBER 70/ MODEL ON WHICH PROCESSOR IS USED.
*                            MAY BE *72*, *73*, *74*, *76*, OR *17X*. 
* 
*         OBUF      SYMBOL   FWA OF LISTING OUTPUT FILE CIO BUFFER. 
*                            NEED NOT BE PREVIOUSLY DEFINED.
* 
*         OBUFL     SYMBOL   LISTING OUTPUT FILE CIO BUFFER LENGTH. 
*                            NEED NOT BE PREVIOUSLY DEFINED.
* 
*         STOP      SYMBOL   ADDRESS FOR RETURN FROM COMPASS TO CALLING 
*                            COMPILER.  NEED NOT BE PREVIOUSLY DEFINED. 
  
  
  
****
  
  
  
**        REDEFINE "BUFL" = *0* IF APPROPRIATE. 
  
          IFEQ   CP#RM,7,1                                              S028  18
 BUFL     MICRO  1,, 0
  
  
  
**        SOURCE INPUT FILE BUFFER LENGTH.
  
 IBUFL    EQU    "BUFL" 
                                                                        S028  20
                                                                        S028  21
                                                                        S028  22
**        LIBRARY CONTAINING COMPASS OVERLAYS.                          S028  23
*         USED WHEN COMPASS (0,0) IS LOADED FROM LIBRARY *NUCLEUS*. 
                                                                        S028  24
 CP.OVLIB MICRO              SEARCH GLOBAL LIBRARY SET                  S028  25
  
  
  
**        NAME OF COMPASS (1,0) OVERLAY.
  
 CP.NAME  MICRO  1,, COMP3$ 
  
  
  
**        ORIGIN OF COMPASS (1,0) OVERLAY.
  
          IFEQ   CP#RM,0,1                                              S028  27
 CP.ORG   EQU    2777B
          IFEQ   CP#RM,6,1                                              S028  29
 CP.ORG   EQU    12777B                                                 S028  30
          IFEQ   CP#RM,7,1                                              S028  31
 CP.ORG   EQU    777B 
  
  
  
**        THE ABSOLUTE ADDRESS CP.BASE MUST EQUAL 114B IF 
*         54-TABLES ARE USED, ELSE 104B.
  
 CP.BASE  BSS    0           BASE ADDRESS OF COMMUNICATION REGION 
  
  
  
**        EXIT FROM COMPASS TO THE CALLING COMPILER.
  
 CP.STOP  EQ     =XSTOP 
  
  
  
**        ABORT FLAG.  SPECIFIES WHETHER PROCESSOR SHOULD ABORT JOB 
*         AFTER COMPILATION/ASSEMBLY ERRORS, OR WAIT UNTIL THE USER 
*         ATTEMPTS TO EXECUTE THE BAD PROGRAM.
*         0 = NO ABORT. 
*         1 = ABORT TO EXIT(S) CARD IF SOURCE PROGRAM ERRORS. 
  
 CP.ABORT EQU    *
 -        VFD    1/"CP.ABORT",11/0
  
  
  
**        COMPILER CALL FLAG.  INDICATES WHICH COMPILER CALLED COMPASS. 
*         THE VALUE OF THE COMPASS SPECIAL SYMBOL *F IS THE MAGNITUDE 
*         OF (CP.BATCH).  ASSIGNED VALUES ARE --
* 
*                    0       COMPASS. 
*                   -1       RUN 2.3. 
*                   -2       FTN4 AND FTN(TS).
*                   -3       FTN5.
* 
*         VALUES -4 TO -99 ARE RESERVED TO CDC. 
  
 CP.BATCH EQU    *
 -        VFD    *P/"CP.F=" 
  
  
  
**        BATCH ERROR COUNT.  FORMAT -- 
*                   VFD    1/D, 59/COUNT
*         D = 1 TO FORCE BINARY OUTPUT REGARDLESS OF ASSEMBLY ERRORS. 
  
 CP.ERRCT CON    0
  
  
  
**        LONG LISTING FLAG.
*         0 = NO LONG LISTING (ERROR LINES ONLY). 
*         1 = NORMAL LONG LISTING.
  
 CP.LISTF CON    "CP.LISTF" 
  
  
  
**        LISTING PAGE NUMBER PROPAGATION CONTROL.
*         IF BIT 59 IS SET - DO NOT PROPAGATE AND DO NOT CHANGE.
*         IF BIT 59 IS NOT SET - CURRENT PAGE NUMBER IS IN BITS 0-29. 
*         IF BIT 58 IS SET - LISTING FILE HAS BEEN WRITTEN TO (OPEN). 
  
 CP.PAGE  CON    "CP.PAGE"
  
  
  
**        ERROR LISTING PAGE NUMBER PROPAGATION CONTROL 
*         IF BIT 59 IS SET - DO NOT PROPAGATE AND DO NOT CHANGE.
*         IF BIT 59 IS NOT SET - CURRENT PAGE NUMBER IS IN BITS 0-29. 
*         IF BIT 58 IS SET - ERROR FILE HAS BEEN WRITTEN TO (OPEN). 
  
 CP.EPAG  CON    "CP.PAGE"
  
  
  
**        BIG (BURSTABLE) LISTING FLAG. 
*         0 = NO UNNECESSARY PAGE EJECTS. 
*         1S59 = PAGE EJECTS BETWEEN PORTIONS OF LISTING. 
  
 CP.BLF   CON    "CP.BLF" 
  
  
  
**        PRINT DENSITY (LINES PER INCH). 
*         PD = 3     (CP.PD) = 1LS+1S17 
*         PD = 4     (CP.PD) = 1LT+1S17 
*         PD = 6     (CP.PD) = 1LS
*         PD = 8     (CP.PD) = 1LT
*         OMITTED    (CP.PD) = 0
  
 CP.PD    CON    0
  
  
  
**        PAGE SIZE (LINES PER PAGE). 
  
 CP.PS    CON    0
  
  
  
**        PAGE WIDTH (CHARACTERS PER LINE). 
*         IF *PW* SPECIFIED, (CP.PW) = 30/REMAINDER, 30/QUOTIENT
*                            OF *PW* VALUE DIVIDED BY 10. 
*         OTHERWISE, ASSUME PW = 72 IF PRINT FILE IS A TERMINAL 
*                            OR PW = IP.PW IF IT IS NOT.
*         HOWEVER, (CP.PW) = 0 WHEN PW .GE. 126 IS SPECIFIED OR 
*                            ASSUMED. 
  
 CP.PW    CON    0
  
  
  
**        CYBER 70/ MODEL NUMBER ON WHICH PROCESSOR IS EXECUTING. 
  
 CP.CPU   CON    0L"MODEL"
  
  
  
**        STORAGE USED FOR CURRENT BATCH OF COMPILATIONS/ASSEMBLIES.
  
 CP.MAXFL CON    =XMIN.FL 
  
  
  
**        FILE NAME FOR *XTEXT* CARDS WITH BLANK LOCATION FIELD.
  
 CP.XNAME CON    0LOLDPL
  
  
  
**        SOURCE INPUT FILE FORMAT. 
*         0 = NORMAL INPUT. 
*         1 = MODIFY COMPRESSED COMPILE FILE (63 CHAR SET). 
*         2 = UPDATE COMPRESSED COMPILE FILE (64 CHAR SET). 
*         3 = MODIFY COMPRESSED COMPILE FILE (64 CHAR SET). 
*         1S59 = END OF INPUT SECTION.
  
 CP.IFORM CON    0
  
  
  
**        THIS SPACE FOR RENT (RESERVED TO USER). 
  
 CP.USER  CON    0
          CON    0
  
  
  
**        THIS SPACE FOR RENT (RESERVED TO CDC).
  
 CP.CDC   CON    0
          CON    0
  
  
  
**        FOUR WORDS PRECEDING SOURCE INPUT CARD AREA.
*         MAY BE USED AS BEGINNING OF PRINT LINE AREA.
  
 CP.LINE  DIS    4, 
  
  
  
**        SOURCE INPUT CARD AREA.  HOLDS NEXT CARD TO BE PROCESSED. 
*         (CP.CARD) = 0 AT END OF SECTION ON SOURCE INPUT FILE. 
  
 CP.CARD  DATA   H* CONTROL DATA PROPRIETARY PRODUCT.*
          DATA   H* COPYRIGHT CONTROL DATA CORP. 1971, 1972, 1973, 1974,
, 1975, 1976,, 1977, 1978, 1979, 1980, 1981, 1982.* 
          DIS    16-*+CP.CARD,
  
  
  
**        SYSTEM TEXT OVERLAY NAMES.
*         (CP.STEXT) = NUMBER OF SYSTEM TEXTS (UP TO 7).
*         SUBSEQUENT WORDS HAVE THE FOLLOWING FORMAT -- 
*                   VFD    42/NAME, 17/0, 1/G 
*         G = 0 FOR SYSTEM TEXT FROM A LIBRARY. 
*         G = 1 FOR SYSTEM TEXT FROM A NON-LIBRARY FILE.
*         NAME MAY BE NULL IF G = 1.
  
 CP.STEXT CON    0
          CON    0LSYSTEXT   DEFAULT SYSTEM TEXT
          BSSZ   6
  
  
  
**        SYSTEM TEXT LIBRARY/FILE NAMES. 
*         (CP.LIB) = 0 IF *S=0* SPECIFIED ON CONTROL CARD.
*                  = 1 OTHERWISE. 
*         SUBSEQUENT WORDS CONTAIN LIBRARY NAME OR NULL IF G = 0 IN 
*         CORRESPONDING WORD OF CP.STEXT, OR FILE NAME IF G = 1.
  
 CP.LIB   CON    1
          BSSZ   7
  
  
  
**        SCM FIELD LENGTHS, ACTUAL AND NOMINAL.
*         (CP.AFLS) = CURRENT ACTUAL FIELD LENGTH.
*         (CP.NFLS) = AMOUNT OF SPACE AVAILABLE TO COMPASS. 
*         IF THEY ARE NOT EQUAL, COMPASS DOES NOT DESTROY THE AREA
*         ABOVE NOMINAL FIELD LENGTH.  BEFORE RETURNING TO CALLING
*         COMPILER, COMPASS RESTORES THESE WORDS, AND THE ACTUAL
*         FIELD LENGTH, TO THE VALUES THEY HAD UPON ENTRY.
  
 CP.AFLS  CON    0
 CP.NFLS  CON    0
  
  
  
**        LCM FIELD LENGTHS, ACTUAL AND NOMINAL.
*         USAGE IS SIMILAR TO THE ABOVE TWO WORDS.
  
 CP.AFLL  CON    0
 CP.NFLL  CON    0
  
  
  
**        VALUE OF COMPASS BUILT-IN MICRO *MODLEVEL*. 
*         UP TO 9 CHARACTERS, LEFT JUSTIFIED WITH 00 FILL.
*         IF (CP.MODL) = 0, COMPASS USES "JDATE". 
  
 CP.MODL  CON    0
  
  
  
**        VALUE OF COMPASS BUILT-IN MICRO *PCOMMENT*. 
*         UP TO 30 CHARACTERS WITH BLANK FILL.
  
 CP.PCOM  DIS    3, 
  
  
****
  
  
 RM       IFNE   CP#RM,0
 FET      SPACE  4,8
**        FET - FILE ENVIRONMENT TABLE DEFINITION.
* 
* LOCSYM  FET    LFN,FIRST,LEN
*                (LFN) = FILENAME.
*                (FIRST) = FWA OF CIRCULAR BUFFER.
*                (LEN) = LENGTH OF CIRCULAR BUFFER. 
  
  
 FET      MACRO  LFN,FIRST,LEN
          CON    0L_LFN+1 
          CON    FIRST+3S18 
          CON    FIRST
          CON    FIRST
          CON    FIRST+LEN
          BSSZ   3
          ENDM
  
  
 RM       ENDIF 
 INPUT    SPACE  4
**        FET/FIT FOR SOURCE INPUT FILE.
  
  
 CP.IFET  FET    INPUT,IBUF,IBUFL 
          BSSZ   CP.IFET+8-*
  
 RM       IFNE   CP#RM,0
          IFEQ   CP#RM,6,1                                              S028  34
 CP.IFIT  FILE   LFN=INPUT,FO=SQ,BT=C,RT=Z,MRL=100,CM=YES,LT=UL,WSA=CP.C
,ARD,FET=CP.IFET,FWB=IBUF,BFS=IBUFL,ERL=1                               S028  36
          IFEQ   CP#RM,7,1                                              S028  37
 CP.IFIT  FILE   LFN=INPUT,FO=SQ,BT=,RT=W,MRL=5120,WSA=CP.CARD,OF=N,CF=N
,,PD=INPUT
          BSSZ   CP.IFIT+16-* 
 RM       ENDIF 
 OUTPUT   SPACE  4
**        FET/FIT FOR LISTING OUTPUT FILE.
  
  
 CP.OFET  FET    OUTPUT,OBUF,OBUFL
          BSSZ   CP.OFET+8-*
  
 RM       IFNE   CP#RM,0
          IFEQ   CP#RM,6,1                                              S028  39
 CP.OFIT  FILE   LFN=OUTPUT,FO=SQ,BT=C,RT=Z,MRL=137,CM=YES,LT=UL,FET=CP.
,OFET,FWB=OBUF,BFS=OBUFL,ERL=1                                          S028  41
          IFEQ   CP#RM,7,1                                              S028  42
 CP.OFIT  FILE   LFN=OUTPUT,FO=SQ,BT=,RT=W,MRL=137,OF=N,CF=N,PD=OUTPUT
          BSSZ   CP.OFIT+16-* 
 RM       ENDIF 
 ERRS     SPACE  4
**        FET/FIT FOR ERROR LISTING FILE
  
  
 CP.EFET  FET    OUTPUT,,EBUFL,5
          BSSZ   CP.EFET+8-*
  
 RM       IFNE   CP#RM,0
          IFEQ   CP#RM,6,1
 CP.EFIT  FILE   LFN=OUTPUT,FO=SQ,BT=C,RT=Z,MRL=137,CM=YES,LT=UL,FET=ERL
,,BFS=EBUFL,ERL=1 
          IFEQ   CP#RM,7,1
 CP.EFIT  FILE   LFN=OUTPUT,FO=SQ,BT=,RT=W,MRL=137,OF=N,CF=N,PD=OUTPUT
          BSSZ   CP.EFIT+16-* 
 RM       ENDIF 
 LGO      SPACE  4
**        FET/FIT FOR BINARY OUTPUT FILE. 
  
  
 CP.BFET  FET    LGO,OBUF,OBUFL 
          BSSZ   CP.BFET+8-*
  
 RM       IFNE   CP#RM,0
          IFEQ   CP#RM,6,1                                              S028  44
 CP.BFIT  FILE   LFN=LGO,FO=SQ,BT=C,RT=S,CM=NO,LT=UL,FET=CP.BFET,FWB=OBU
,F,BFS=OBUFL,ERL=1                                                      S028  46
          IFEQ   CP#RM,7,1                                              S028  47
 CP.BFIT  FILE   LFN=LGO,FO=SQ,BT=,RT=W,CM=NO,OF=N,CF=N,PD=OUTPUT 
          BSSZ   CP.BFIT+16-* 
 RM       ENDIF 
 JUMPS    SPACE  4
**        JUMP TABLE FOR LINKING TO RECORD MANAGER ROUTINES.
  
  
 RM       IFEQ   CP#RM,6                                                S028  49
  
 CHEK.RM  JP     /6RM/CHEK.RM                                           S028  51
 CLSF.RM  JP     /6RM/CLSF.RM                                           S028  52
 ENDF.SQ  JP     /6RM/ENDF.SQ                                           S028  53
 GET.RM   JP     /6RM/GET.RM                                            S028  54
 OPEN.RM  JP     /6RM/OPEN.RM                                           S028  55
 PUT.RM   JP     /6RM/PUT.RM                                            S028  56
 REW.RM   JP     /6RM/REW.RM                                            S028  57
 SKBL.RM  JP     /6RM/SKBL.RM                                           S028  58
 WEOR.SQ  JP     /6RM/WEOR.SQ                                           S028  59
  
 RM       ENDIF 
 LCOM     SPACE  4
**        END OF COMMUNICATION AREA.
  
  
          BSS    0                                                      S028  61
 CP.LCOM  EQU    *-CP.BASE   LENGTH OF COMMUNICATION REGION 
          USE    *           LEAVE COMMON BLOCK IF ANY
 SYSR     SPACE  4
**        SYSTEM COMMUNICATION ROUTINES.
  
  
          LIST   -F 
  
 RM       IFNE   CP#RM,7                                                S028  63
 COMCSYS  CTEXT  PROCESS SYSTEM REQUEST.
  
  
***              COMCSYS CONTAINS ROUTINES FOR PROCESSING CERTAIN 
*         SYSTEM REQUESTS.
* 
* 
*         G. R. MANSFIELD.   70/09/12.
*         R. H. GOODELL.     71/04/01.
  
  
          IF     -DEF,QUAL$,1 
          QUAL   COMCSYS
          BASE   D
 SYS      SPACE  4,11 
***       SYS - PROCESS SYSTEM REQUEST. 
* 
*         ENTRY  (X6) = SYSTEM REQUEST. 
* 
*         EXIT   REQUEST PROCESSED. 
* 
*         USES   A1, A6, X1.
* 
*         CALLS  NONE.
  
  
 SYSA     SA1    A1          WAIT (RA.MTR) CLEAR IF AUTO RECALL 
          LX1    59-40
          MI     X1,SYS1
  
 SYS1     EQ     SYS2        FIRST ENTRY
  
 SYS=     EQ     *+1S17      ENTRY/EXIT 
  
 +        SA1    RA.MTR      WAIT (RA.MTR) CLEAR
          NZ     X1,* 
          SA6    A1          ENTER REQUEST
          EQ     SYS1 
  
*         INITIAL ENTRY TO SET TYPE OF CALL.
  
 SYS2     SA1    RA.CEJ      TEST FOR CENTRAL EXCHANGE JUMP SUPPORT 
          MI     X1,SYS3
          SA1    SYSA        NO, USE WAIT LOOP
          EQ     SYS4 
 SYS3     SX1    0130B       YES, USE XJ INSTRUCTION
          LX1    48 
 SYS4     BX6    X1-X6       SWAP REGISTERS 
          BX1    X1-X6
          BX6    X1-X6
          SA6    SYS1        SET MONITOR CALL 
          BX6    X1          RESTORE (X6) 
          SA1    RA.MTR      RESET (A1) 
          RJ     SYSA        CLEAR STACK
 RCL      SPACE  4,12 
***       RCL - PLACE PROGRAM ON RECALL.
* 
*         ENTRY  NONE.
* 
*         EXIT   REQUEST PROCESSED. 
* 
*         USES   A1, X1, X6.
* 
*         CALLS  SYS=.
  
  
 RCL1     LX6    42          PROCESS REQUEST
          RJ     =XSYS= 
 +        SA1    RA.MTR      WAIT (RA.MTR) CLEAR
          NZ     X1,* 
  
 RCL=     EQ     *+1S17      ENTRY/EXIT 
  
          SA1    RA.MTR 
          NZ     X1,RCL=     RETURN IF (RA.MTR) NOT CLEAR 
          SX6    3RRCL       FORM RECALL REQUEST
          EQ     RCL1 
 WNB      SPACE  4,13 
***       WNB - WAIT NOT BUSY.
* 
*         WAIT FOR STATUS WORD BIT 0 TO BE SET. 
*         IF WORD IS INITIALLY 0, RETURN. 
* 
*         ENTRY  (X2) = ADDRESS OF STATUS WORD. 
* 
*         EXIT   RETURN WHEN BIT 0 OF STATUS WORD IS SET. 
* 
*         USES   A1, X1, X6.
* 
*         CALLS  SYS=.
  
  
 WNB2     LX1    40          SET AUTO RECALL FLAG 
          IX6    X6+X1
          RJ     =XSYS=      PROCESS REQUEST
  
 WNB=     EQ     *+1S17      ENTRY/EXIT 
  
          SX6    3RRCL       FORM RECALL REQUEST
          LX6    42 
          IX6    X6+X2
 WNB1     SA1    X6          CHECK STATUS WORD
          LX1    59 
          MI     X1,WNB=     RETURN IF COMPLETE BIT SET 
          ZR     X1,WNB=     RETURN IF BLANK STATUS 
          SA1    RA.MTR      WAIT (RA.MTR) CLEAR
          NZ     X1,WNB1
          SX1    1           CONTINUE RECALL
          EQ     WNB2 
 MSG      SPACE  4,15 
***       MSG - SEND MESSAGE. 
* 
*         ENTRY  (X1) = ADDRESS OF MESSAGE. 
*                (X6) = MESSAGE OPTION(S).
*                            BIT 16 = AUTO RECALL.
*                            BITS 11 - 0 = MESSAGE OPTION CODE. 
* 
*         EXIT   RETURN WHEN OPERATION COMPLETE.
* 
*         USES   A1, A6, X1, X6.
* 
*         CALLS  SYS=.
  
  
 MSG1     SX6    3RMSG*2     FORM MESSAGE REQUEST 
          BX6    X6+X1
          LX6    40-59
          RJ     =XSYS=      PROCESS REQUEST
  
 MSG=     EQ     *+1S17      ENTRY/EXIT 
  
          LX6    24          MERGE OPTION(S) AND ADDRESS
          BX1    X6+X1
          SX6    X1 
          LX1    59-40
          PL     X1,MSG1     IF NO AUTO RECALL
          LX1    40-59
          BX1    X1-X6       REMOVE MESSAGE ADDRESS 
          LX6    30 
          SA6    MSGA        STORE STATUS WORD
          SX6    A6 
          IX1    X1+X6       SET INDIRECT ADDRESS 
          LX1    59-40
          EQ     MSG1 
  
 MSGA     VFD    30/**,30/0  STATUS WORD FOR MESSAGE WITH AUTO RECALL 
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 SYS=     EQU    /COMCSYS/SYS=
 RCL=     EQU    /COMCSYS/RCL=
 WNB=     EQU    /COMCSYS/WNB=
 MSG=     EQU    /COMCSYS/MSG=
 QUAL$    ENDIF 
  
  
 COMCSYS  ENDX
  
 RM       ENDIF 
  
          LIST   *
 6RM      SPACE  4
**        RECORD MANAGER ROUTINES.
  
  
 RM       IFEQ   CP#RM,6                                                S028  65
  
 #PL6RM#  MICRO  1,9,*"#PLRM#"         *
  
          LIST   "LISTRM"X
  
 "#PLRM#" XTEXT  C6RMITXT 
 "#PLRM#" XTEXT  C6RMCIOR                                               S028  67
  
          QUAL   6RM
  
          SEL.RM FO=(SQ,WA),BT=(C,I),RT=(S,U,W,Z)                       S028  69
                                                                        S028  70
 "#PLRM#" XTEXT  C6RMMCTR                                               S028  71
 "#PLRM#" XTEXT  C6RMCHKR                                               S028  72
 "#PLRM#" XTEXT  C6RMCHWS                                               S028  73
 "#PLRM#" XTEXT  C6RMCLSR                                               S028  74
 "#PLRM#" XTEXT  C6RMCLSS                                               S028  75
 "#PLRM#" XTEXT  C6RMCLSW                                               S028  76
 "#PLRM#" XTEXT  C6RMENDS                                               S028  77
 "#PLRM#" XTEXT  C6RMERRM                                               S028  78
 "#PLRM#" XTEXT  C6RMGETR 
 "#PLRM#" XTEXT  C6RMGETS 
 "#PLRM#" XTEXT  C6RMBTRS    MUST FOLLOW C6RMGETS                       S028  80
 "#PLRM#" XTEXT  C6RMFSUS    MUST FOLLOW C6RMGETS                       S028  81
 "#PLRM#" XTEXT  C6RMWS      MUST FOLLOW C6RMGETS                       S028  82
 "#PLRM#" XTEXT  C6RMZS      MUST FOLLOW C6RMGETS                       S028  83
 "#PLRM#" XTEXT  C6RMGETW                                               S028  84
 "#PLRM#" XTEXT  C6RMMOVR                                               S028  85
 "#PLRM#" XTEXT  C6RMOPER                                               S028  86
 "#PLRM#" XTEXT  C6RMOPES                                               S028  87
 "#PLRM#" XTEXT  C6RMOPEW                                               S028  88
 "#PLRM#" XTEXT  C6RMOSUB                                               S028  89
 "#PLRM#" XTEXT  C6RMPDFR                                               S028  90
 "#PLRM#" XTEXT  C6RMPUTR 
 "#PLRM#" XTEXT  C6RMRLEQ    MUST PRECEDE C6RMPUTS                      S028  92
 "#PLRM#" XTEXT  C6RMPUTS                                               S028  93
 "#PLRM#" XTEXT  C6RMPUTW                                               S028  94
 "#PLRM#" XTEXT  C6RMREWR 
 "#PLRM#" XTEXT  C6RMREWS 
 "#PLRM#" XTEXT  C6RMSKBR 
 "#PLRM#" XTEXT  C6RMSKBS 
 "#PLRM#" XTEXT  C6RMWARS                                               S028  97
 "#PLRM#" XTEXT  C6RMWERS                                               S028  98
  
          QUAL
  
 A0B      EQU    /6RM/A0B                                               S028 100
 AMAC.SQ  EQU    /6RM/AMAC.SQ                                           S028 101
 CHWR.SQ  EQU    /6RM/CHWR.SQ                                           S028 102
 CLSV.SQ  JP     *+400000B                                              S028 103
 COMM.WA  EQU    /6RM/COMM.WA                                           S028 104
 DXIT.SQ  EQU    /6RM/DXIT.SQ                                           S028 105
 ERR.RM   EQU    /6RM/ERR.RM                                            S028 106
 FLSH.SQ  EQU    /6RM/FLSH.SQ                                           S028 107
 FLSH.WA  EQU    /6RM/FLSH.WA                                           S028 108
 GXIT.SQ  EQU    /6RM/GXIT.SQ                                           S028 109
 MCT.RM   EQU    /6RM/MCT.RM                                            S028 110
 MOVE.RM  EQU    /6RM/MOVE.RM                                           S028 111
 OPEX.SQ  JP     *+400000B                                              S028 112
 OSUB.RM  EQU    /6RM/OSUB.RM                                           S028 113
 PUT.SQ   EQU    /6RM/PUT.SQ                                            S028 114
 RLEQ.RM  EQU    /6RM/RLEQ.RM                                           S028 115
 RMU.SQ   EQU    /6RM/RMU.SQ                                            S028 116
 RMU0.SQ  EQU    /6RM/RMU0.SQ                                           S028 117
 RMU1.SQ  EQU    /6RM/RMU1.SQ                                           S028 118
 RSPT.SQ  EQU    /6RM/RSPT.SQ                                           S028 119
 SKGT.SQ  EQU    /6RM/SKGT.SQ                                           S028 120
 WAR.SQ   EQU    /6RM/WAR.SQ                                            S028 121
  
          LIST   *
  
 RM       ENDIF 
  
  
**        END OF COMPCOM. 
