ASMB,R,L,C
      HED @CLCK - 91705-16113 * (C) HEWLETT PACKARD CO. 1976
      NAM @CLCK,1,3 91705-16113 REV.A 751230
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
******************************************************************
      SPC 1 
* @CLCK 
* SOURCE: 91705-18113 
* BINARY: 91705-16113 
* JIM HARTSELL
* DEC. 10, 1974 
* MODIFIED BY: C.C.H. (12-30-75) [DERIVED FROM: 91705-18013 REV.B]
* 
* CORE RESIDENT RTE-C SATELLITE PROGRAM SCHEDULED EVERY 
* 10 MILLISECONDS TO INCREMENT THE TIME VALUES FOR USER 
* PROGRAMS IN THE WAIT LIST. WHEN THE TIME VALUE GOES TO
* ZERO, THE PROGRAM IS RE-STARTED.
* 
      ENT @CLCK 
      EXT %LIST,%TIME,EXEC,$LIBR,$LIBX,$LINK,$WORK
* 
A     EQU 0 
B     EQU 1 
* 
* GET CURRENT SYSTEM TIME FOR PARMB TIME-TAGS.
* 
@CLCK JSB EXEC      ASK THE SYSTEM
      DEF *+3         TO PROVIDE
      DEF D11           THE CURRENT 
      DEF TIMBF           TIME-OF-DAY.
* 
      LDA TIMBF     GET THE 10'S OF MILLISECONDS VALUE. 
      ADA TIMBF+1   ADD SECONDS FOR LEAST TIME-COMPOSITE. 
      LDB TIMBF+2   GET THE MINUTES VALUE.
      ADB TIMBF+3   ADD HOURS FOR MOST TIME-COMPOSITE VALUE.
* 
      JSB $LIBR     GAIN ACCESS TO
      NOP             SYSTEM RESOURCES. 
      DST %TIME     SAVE RTE-II STYLE TIME VALUE IN <@QUE>. 
      JSB $LIBX     RESTORE THE 
      DEF *+1         SYSTEM'S
      DEF *+1           DEFENSES. 
* 
* BEGIN SCAN OF WAIT-LIST.
* 
      LDA %LIST 
      LDB A,I 
      STB TEMP      NEGATIVE # OF ENTRIES.
      INA 
      STA TEMP1     ADDR OF FIRST ENTRY.
* 
LOOP  LDA TEMP1,I   CHECK IF TIME VALUE 
      SZA,RSS       IS ZERO.
      JMP NEXT      YES-GO TO NEXT ENTRY. 
* 
* INCREMENT THE TIME VALUE AS EACH IN-USE ENTRY IS FOUND. 
* 
      JSB $LIBR 
      NOP 
      LDA TEMP1,I      CAN'T USE ISZ. 
      INA 
      SSA           STORE NEW TIME IF 
      JMP CLCK1      NEGATIVE OR ZERO.
      SZA,RSS 
CLCK1 STA TEMP1,I 
      JSB $LIBX 
      DEF *+1 
      DEF *+1 
* 
      SZA 
      JMP NEXT
* 
* TIME IS UP. CHECK IF PROGRAM STILL IN OP SUSPEND LIST.
* 
      LDA TEMP1 
      ADA B4
      LDA A,I       ID SEGMENT ADDRESS. 
      STA WORK
      ADA D15 
      LDA A,I       PROGRAM STATUS WORD.
      AND B17 
      CPA B6        IN OPERATOR SUSPEND LIST? 
      JMP SCHED     YES.
* 
* MOVE TO NEXT ENTRY IN WAIT-LIST.
* 
NEXT  LDA TEMP1 
      ADA B5
      STA TEMP1 
      ISZ TEMP
      JMP LOOP
* 
* EXIT WITH RECALL IF END OF LIST.
* 
      JSB EXEC       RECALL IN 10 MS. 
      DEF *+6 
      DEF D12 
      DEF B0
      DEF B1
      DEF B0
      DEF MD1 
* 
      JMP @CLCK 
* 
      SKP 
* RE-START A USER PROGRAM VIA RTE-C LINKAGE PROCESSOR.
* 
SCHED JSB $LIBR 
      NOP 
      LDB TEMP1     KILL PROG NAME IN 
      INB            WAIT-LIST ENTRY. 
      CLA 
      STA B,I 
      LDB $DWRK 
      SSB,RSS 
      JMP *+3 
      ELB,CLE,ERB 
      LDB B,I 
* 
      LDA WORK      SET UP SCHEDULER VARIABLES: 
      STA B,I        "WORK" 
      INB 
      STA B,I        "WLINK"
      INB 
      ADA B6
      STA B,I        "WPRIO"
* 
      ADA D9        SET STATUS WORD IN
      CLB,INB        ID SED = SCHEDULED.
      STB A,I 
* 
      JSB $LINK     CALL LINKAGE PROCESSOR: 
B6    OCT 6           REMOVE FROM OP SUSP LIST. 
B1    OCT 1           LINK INTO SCHEDULE LIST.
* 
      JSB $LIBX 
      DEF *+1 
      DEF NEXT
* 
* CONSTANTS AND WORKING STORAGE.
* 
B0    OCT 0 
B4    OCT 4 
B5    OCT 5 
B17   OCT 17
D9    DEC 9 
D11   DEC 11
D12   DEC 12
D15   EQU B17 
MD1   DEC -1
TEMP  NOP 
TEMP1 NOP 
WORK  NOP 
$DWRK DEF $WORK 
TIMBF BSS 5 
* 
SIZE  EQU * 
      END @CLCK 
                                                            