ASMB
   HED .               ***  T M S   T I M E R  ***
      NAM $TTMS,7 92903-16100 REV.1913  781215
  SPC 3 
**********************************************************************
*                                                                    *
*     NAME:   $TTMS     TMS TIMER                                    *
*     SOURCE: &$TTMS    92903-18108                                  *
*     BINARY: %$TTMS    ----NONE---    PART OF  %TMSLB  92903-16100  *
*                                                                    *
*     PGMR:   FRANCOIS GAULLIER                                      *
*                                                                    *
**********************************************************************
      SPC 2 
*     **************************************************************
*     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
*     * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
*     * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
*     * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
*     **************************************************************
  SPC 3 
      EXT RMPAR,EXEC,PNAME
      ENT $TTMS 
      SUP 
A     EQU 0 
B     EQU 1 
  SPC 3 
*     THIS PROGRAM IS A PART OF THE TERMINAL MONITOR SOFTWARE (TMS),
*     IT IS USED BY TMS TO PROVIDE A TIMER. WHEN TMSYS NEEDS A TIME 
*     INTERVAL, IT PUT THAT PROGRAM IN THE TIME LIST FOR THE PERIOD OF
*     TIME, AND WHEN 'TTMS' IS SCHEDULE FROM THE TIME LIST, IT RETURN 
*     A MAIL BOX TO 'TMSYS' TO SIGNAL THAT THE TIME IS PASSED.
  SPC 4 
LU    NOP 
ECLAS OCT 0         EXTERNAL CLASS I O WORD 
ABTCD DEC 17        ABORT CODE
TIMCD DEC 19        TMS TIMER CODE
MES   ASC 13, /XXXXX: ILLEGAL SCHEDULE
      ASC 5,REQUEST ! 
.MES1 DEF MES+1 
IP    BSS 5 
IB    BSS 8 
IBLEN DEC -16 
* 
SCODE EQU IB
STKPT EQU IB+7
  SPC 2 
$TTMS JSB RMPAR     RETREIVE PRG PARAMETERS 
      DEF *+2 
      DEF IP
* 
      LDA IP        INIT LU WITH PARAM 1
      STA LU
* 
      CMA,INA       IF(LU<3 OR LU>63) LU=1
      ADA D3
      CMA 
      LDB LU
      CMB,INB 
      ADB D63 
      IOR B 
      LDB D1        GET DEFAULT LU
      SSA           OK ?
      STB LU        NO, SET DEFAULT LU
   SPC 1
      JSB EXEC      GET STRING REQUEST
      DEF *+5 
      DEF D14       STRING RQ 
      DEF D1        GET 
      DEF IB        BUFFER
      DEF IBLEN     BUFFER LENGTH 
      SZA           GET OK ?
      JMP TTM70     NO, CHECK IF FROM TIME LIST 
      LDA SCODE     YES, CHECK REQUEST CODE 
      SZA,RSS       INITIALIZATION ?
      JMP TTM50     YES, GO INIT
      CPA ABTCD     IS IT ABORT ? 
      JMP TTM60     YES, TERMINATE PROGRAM
      JMP TTM90     IF NOT REPORT ERROR 
  SKP 
*                   TMSYS INITIALISE THIS PROGRAM:
*                   SAVE LOCALLY THE CLASS I/O WORD, AND
*                   TERMINATE WITH 'SAVE SUSP. POINT' OPTION. 
* 
TTM50 LDA STKPT     RECALL STKPT
      CPA =B100001  IS IT OK ?
      RSS           YES CONTINUE
      JMP TTM90     NO, REPORT ERROR
      LDA ECLAS     VERIFY THAT THE CLASS IS NOT
      SZA           ALREADY DEFINED 
      JMP TTM80     THE CLASS WAS DEFINED ! ERROR 
      LDA IP+1      RECALL 2ND PARAM
      STA ECLAS     TO INIT THE CLASS I/O WORD
      JMP TTM95     AND TERMINATE 'SAVE SUS. PT' IF OK
  SPC 2 
*                   TMSYS STOP THE APPLICATION: 
*                   TERMINATE THIS PROGRAM WITHOUT ANY OPTION.
* 
TTM60 LDA IP+1      TMSYS REQUEST TO STOP APPL., CHECK
      CPA ECLAS     IF CLASS STILL OK ? 
      JMP TTM99     YES, TERMINATE WITH NO OPTION 
      JMP TTM90     NO,REPORT ERROR 
  SPC 3 
*                   SHEDULE WITHOUT STRING PASSING: 
*                   MUST BE FROM THE TIME LIST !
* 
TTM70 LDA ECLAS     CHECK THE CLASS WORD
      SZA,RSS       CLASS WORD DEFINED ?
      JMP TTM99     NO, TERMINATE THE PROGRAM FOR EVER
      LDA IP+1      YES, CHECK IF FROM
      CPA DM2       TIME LIST ? 
      RSS           YES, CONTINUE 
      JMP TTM90     NO, REPORT ERROR
  SPC 1 
      JSB EXEC      SEND INFO TO TMSYS
      DEF *+8 
      DEF NAB20     WRITE/READ NO ABORT 
      DEF D0
      DEF IP
      DEF D1        BUFFER LEN
      DEF D0
      DEF TIMCD 
      DEF ECLAS     CLASS WORD
      JMP TTM80     ERROR RETURN !! 
  SPC 1 
TTM75 JSB EXEC      TERMINATE PROGRAM 
      DEF *+6       WITH 'SAVE SUSPENSION POINT' OPTION 
      DEF D6
      DEF D0
      DEF D1
      DEF D0
      DEF DM2 
   SPC 1
********************************************************************* 
  SPC 1 
      JMP $TTMS     RESTART FORM BEGINING 
   HED  ERROR PROCESSING
TTM80 CLA           RESET THE CLASS I/O WORD
      STA ECLAS 
* 
TTM90 LDA .MES1     REPORT ERROR
      STA T.001 
      JSB PNAME 
      DEF *+2 
T.001 DEF T.001,I 
      LDA MES+3     MERGE THE ":" 
      IOR A:
      STA MES+3 
      JSB EXEC      PRINT ERROR MESSAGE 
      DEF *+5 
      DEF D2
      DEF LU
      DEF MES 
      DEF D18 
* 
TTM95 LDA ECLAS     TERMINATE PROGRAM WITH CURRENT OPTION 
      SZA           CALL I/O WORD DEFINED ? 
      JMP TTM75     YES, TERMINATE 'SAVE SUSP. PT.' 
  SPC 1 
TTM99 CLA           RESET THE CLASS I/O WORD
      STA ECLAS     IN CASE OF PROGRAM BEING CORE RESIDENT
      JSB EXEC
      DEF *+2 
      DEF D6
  SPC 2 
A:    OCT 72        ":" 
NAB20 OCT 100024
* 
DM2   DEC -2
D0    DEC 0 
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D6    DEC 6 
D14   DEC 14
D18   DEC 18
D63   DEC 63
      END 
                                                                                                                                                                                                                                    