*COMDECK  COMCSYS 
 COMCSYS  CTEXT  PROCESS SYSTEM REQUEST.
  
  
***              COMCSYS  CONTAINS ROUTINES FOR PROCESSING CERTAIN
*         SYSTEM REQUESTS.
* 
* 
*         G. R. MANSFIELD.   70/09/12.
  
  
          SYSCOM             DEFINE INTERFACE SYMBOLS 
          IF     -DEF,QUAL$,1 
          QUAL   COMCSYS
          BASE   D
          CODE   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    X6-X1       SWAP REGISTERS 
          BX1    X6-X1
          BX6    X6-X1
          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.
* 
*         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   *
*         CODE   *
 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
