*DECK SYSCALL 
          IDENT  SYSCALL
          ENTRY  CLOCK
          ENTRY  CSET64 
          ENTRY  DATE 
          ENTRY  MHFLVL 
          ENTRY  RTSEC
          ENTRY  TIMDIF 
          ENTRY  TIMHMS 
          SST 
*CALL COMCMAC 
  
  
 CLOCK    SPACE  4,10 
**        CLOCK - CURRENT TIME. 
* 
*         THIS FUNCTION RETURNS THE CURRENT TIME ("HH.MM.SS  ").
* 
*         SYMPL DECLARATION:  XREF
*                               FUNC CLOCK C(10); 
*                             ITEM TIME C(10);
* 
*         SYMPL CALL:        TIME = CLOCK(I); 
* 
*         ENTRY  NONE.
* 
*         EXIT   X6 CONTAINS THE CURRENT TIME IN DISPLAY CODE:  
*                        54/9HHH.MM.SS., 6/1H 
* 
*         USES   A1/X1, X6. 
* 
*         CALLS  CLOCK. 
  
  
 CLOCK    SUBR
          CLOCK  RTIMEB 
          SA1    RTIMEB 
          LX1    6                 LEFT JUSTIFY 
          BX6    X1 
          EQ     CLOCKX 
 CSET64   SPACE  4,10 
**        CSET64 - CHECK IF 64-CHARACTER SET IN USE.
* 
*         THIS FUNCTION RETURNS TRUE OR FALSE (X6 = 1 OR 0) TO INDICATE 
*         WHETHER THE 64-CHARACTER SET IS BEING USED. (THIS IS A COPY 
*         OF BIT 59 IN RA.CSM/CSMR, SET BY THE SYSTEM.) 
* 
*         SYMPL DECLARATION:  XREF
*                               FUNC CSET64  B; 
* 
*         SYMPL CALL:        IF CSET64   # IF 64-CHARACTER SET #
*                            THEN ....
*         ENTRY  NONE.
* 
*         EXIT   X6 = 1 (TRUE, 64-CHARACTER SET)
*                   = 0 (FALSE, 63-CHARACTER SET) 
* 
*         USES   A1/X1, X6. 
  
  
 NOS      IFEQ   OS$NOS 
 RA.CSM   EQU    CSMR 
 NOS      ENDIF 
  
 CSET64   SUBR
          SA1    RA.CSM 
          MX6    1
          BX6    X6*X1
          LX6    1
          EQ     CSET64X
 DATE     SPACE  4,10 
**        DATE - CURRENT DATE.
* 
*         THIS FUNCTION RETURNS THE CURRENT DATE ("MM/DD/YY  ").
* 
*         SYMPL DECLARATION:  XREF
*                               FUNC DATE C(10);
* 
*         SYMPL CALL:        TODAY = DATE(I); 
* 
*         ENTRY  NONE.
* 
*         EXIT   X6 CONTAINS THE CURRENT DATE IN DISPLAY CODE:  
*                   48/8HMM/DD/YY, 12/2H
* 
*         USES   A1/X1, X6. 
* 
*         CALLS  DATE.
  
  
 DATE     SUBR
          DATE   RTIMEB 
          SA1    RTIMEB 
          MX6    -12
          LX1    6                 LEFT JUSTIFY 
          BX6    X6*X1
          SX1    2R 
          BX6    X6+X1             BLANK FILL 
          EQ     DATE 
 MHFLVL   SPACE  4,10 
**        MHFLVL - MHF LEVEL INDICATOR
* 
*         MHFLVL IS A SINGLE WORD CONTAINING DISPLAY-CODED VALUE
*         INDICATING THE MHF LEVEL - 60/10H"MODLEVEL" 
* 
*         SYMPL DEFINITION - XREF 
*                              ITEM MHFLVL C(10); 
*                            ITEM LVL C(10);
* 
*         SYMPL CALL - LVL = MHFLVL;
  
  
 MHFLVL   CON    10H"MODLEVEL"
RTSEC     SPACE  4,10 
**        RTSEC - REAL-TIME SECONDS 
* 
*         ENTRY  X1 = ADDR OF PARAMETER WORD
* 
*         EXIT   PARAMETER WORD = 42/UNCHANGED, 18/SECONDS. 
* 
*         USES   A - 1, 5, 6. 
*                X - 1, 5, 6. 
* 
*         MACRO  RTIME
  
  
  
 RTSEC    SUBR
          SA5    X1                GET PARAMETER WORD 
          RTIME  RTIMEB            GET TIME 
          MX6    -18
          SA1    RTIMEB 
          BX5    X6*X5             CLEAR BITS 17-0
 NBE      IFEQ   OS$NOSBE 
          LX1    -12
 NBE      ELSE
          LX1    -36
 NBE      ENDIF 
          BX6    -X6*X1            MASK TIME
          BX6    X6+X5
          SA6    A5                UPDATE PARAMETER WORD
          EQ     RTSECX 
  
 RTIMEB   BSS    1                 SCRATCH CELL 
 TIMDIF   SPACE  4,10 
**        TIMDIF - TIME DIFFERENCE IN SECONDS.
* 
*         THIS FUNCTION RETURNS THE DIFFERENCE IN SECONDS BETWEEN 
*         TWO INTEGER VALUES EACH OF THE FORM HHMMSS. 
* 
*         SYMPL DECLARATION:  XREF
*                               FUNC TIMDIF I;
*                             ITEM SECS I;
* 
*         SYMPL CALL:        SECS = TIMDIF(TIMHMS1,TIMHMS2);
* 
*         ENTRY  A1/X1 = ADDRESS OF PARAMETER LIST
*                  TIMHMS1 - 42/, 6/HH, 6/MM, 6/SS. 
*                  TIMHMS2 - 42/, 6/HH, 6/MM, 6/SS. 
* 
*         EXIT   X6 CONTAINS THE ABSOLUTE DIFFERENCE IN SECONDS.
  
  
 TIMDIF   SUBR
          SB1    1
          SA2    A1+B1
          SA2    X2                VALUE2 
          RJ     CNVSEC 
          BX7    X6                SAVE VALUE2
          SA2    X1                VALUE1 
          RJ     CNVSEC 
          IX6    X6-X7
          PL     X6,TIMDIFX        IF VALUE1 GE VALUE2
          SX6    X6+24*3600        ADD 24 HOURS 
          EQ     TIMDIFX           RETURN 
  
 CNVSEC   SUBR
          SX4    60 
          MX0    -6                MASK 
          SB2    B1 
          BX6    -X0*X2 
          LX2    -6 
 CNVSEC1  MI     B2,CNVSECX 
          BX3     -X0*X2
          IX3    X3*X4
          LX2    -6 
          IX4    X4*X4
          SB2    B2-B1
          IX6    X6+X3
          EQ     CNVSEC1
 TIMHMS   SPACE  4,10 
**        TIMHMS - CURRENT TIME AS VALUE. 
* 
*         THIS PROCEDURE RETURNS THE CURRENT TIME AS A RIGHT-JUSTIFIED
*         18-BIT VALUE IN THE FORM HHMMSS.
* 
*         SYMPL DECLARATION:  XREF
*                               PROC TIMHMS;
*                             ITEM CURRTIM I; 
* 
*         SYMPL CALL:         TIMHMS(CURRTIM);
* 
*         ENTRY  X1 = ADDR OF PARAMETER WORD. 
* 
*         EXIT   PARAMETER WORD = 42/0, 6/HH, 6/MM, 6/SS. 
* 
*         USES   A - 1, 6.
*                B - 1, 2.
*                X - 0, 1, 2, 5, 6. 
* 
*         CALLS  CLOCK. 
  
  
  
 TIMHMS   SUBR
          SX6    X1                PARAMETER ADDR 
          SA6    PARADR 
  
          RJ     CLOCK             GET CURRENT TIME HH.MM.SS. 
  
          SX4    1R0
          SX2    10 
          SB1    1
          MX0    -6 
          SB2    B1+B1
          MX1    0
  
 TIMHMS1  LX6    6
          SB2    B2-B1
          BX5    -X0*X6 
          LX1    6
          IX5    X5-X4
          LX6    6
          IX5    X5*X2
          IX1    X1+X5
          BX5    -X0*X6 
          IX5    X5-X4
          LX6    6
          IX1    X1+X5
          GE     B2,B0,TIMHMS1     IF NOT DONE
          BX6    X1 
          SA1    PARADR 
          SA6    X1 
          EQ     TIMHMS            RETURN 
  
 PARADR   BSS    1                 PARAMETER ADDR 
  
          END 
