ASMB,R,L,C,B
      HED ISA S61.1 EXEC AND BIT ROUTINES  09610-60025 REV. B 
* 
*  SOURCE TAPE - 09610-80025 REV. B 
*  RELOC. TAPE - 09610-60025 REV. B 
* 
* 
* 
      NAM EX.BT,7 09610-60025B 092275 
      ENT IEOR,ISHFT,START,TRNON,WAIT 
      EXT .ENTR,EXEC
      SUP 
      SPC 3 
OP1   NOP           1ST OPERAND 
OP2   NOP           2ND OPERAND 
IEOR  NOP 
      JSB .ENTR 
      DEF OP1 
      LDA OP1,I     FETCH 1ST NUMBER
      XOR OP2,I     PERFORM EXCLUSIVE OR
      JMP IEOR,I    RETURN
      SPC 3 
OP3   NOP           NUMBER TO BE SHIFTED
NUM   NOP           NUMBER OF SHIFTS
ISHFT NOP 
      JSB .ENTR     FETCH PARAMETER 
      DEF OP3         ADDRESSES 
      LDA OP3,I     FETCH 
      LDB NUM,I       PARAMETER VALUES
      SSB,RSS       IF POSITIVE 
      JMP LSHFT      GO TO LEFT SHIFT 
* 
* RIGHT SHIFT 
RSHFT CLE,ERA       SHIFT RIGHT ONE PLACE 
      INB,SZB       IF AT END 
      JMP RSHFT      CONTINUE, OTHERWISE
      JMP ISHFT,I     RETURN
* 
* LEFT SHIFT
LSHFT CMB,RSS       IF ZERO NO SHIFT
LSHF1 CLE,ELA       LEFT SHIFT ONE PLACE
      INB,SZB       IF NOT FINISHED 
      JMP LSHF1      CONTINUE, OTHERWISE
      JMP ISHFT,I   RETURN
      SKP 
NAM   NOP 
MULT  NOP 
RESL  NOP 
ERR   NOP 
START NOP 
      JSB .ENTR     FETCH PARAMETER 
      DEF NAM         ADDRESSES 
      CLA,INA       ASSUME NO 
      STA ERR,I       ERROR (ERR=1) 
      LDA MULT,I    FETCH TIME MULTIPLE 
      LDB RESL,I     AND RESOLUTION 
      JSB TIME      CONVERT TO RTE STANDARDS
      JMP IMMED     IF MULT<0 SCHED IMMEDIATE 
      JSB EXEC      SCHEDULE
      DEF *+6        PROGRAM
      DEF B1014       WITH
      DEF NAM,I        TO EXECUTE 
      DEF RESL          ONCE WITH 
      DEF ZERO           OFFSET 
      DEF MULT
      SPC 1 
      JSB BERR      BUMP ERROR FLAG IF ERROR
      JMP START,I 
      SPC 3 
IMMED JSB EXEC      SCHEDULE
      DEF *+3        PROGRAM
      DEF B1010      IMMEDIATELY
      DEF NAM,I 
      SPC 1 
      ISZ ERR,I     BUMP ERROR FLAG IF ERROR
      JMP START,I 
* 
* 
BERR  NOP 
      LDA 1         GET ERROR MESSAGE 
      AND C7        CONVERT TO OCTAL
      ADA ERR,I     ADD TO EXISTING VALUE 
      STA ERR,I 
      JMP BERR,I    AND EXIT
* 
* 
      SKP 
MULT1 NOP 
RESL1 NOP 
ERR1  NOP 
WAIT  NOP 
      JSB .ENTR     FETCH PARAMETER 
      DEF MULT1      ADDRESSES
      CLA,INA       ASSUME NO 
      STA ERR1,I     ERROR (ERR1=1) 
      LDA MULT1,I   FETCH MULTIPLE
      LDB RESL1,I    AND RESOLUTION 
      JSB TIME      CONVERT TO RTE STANDARDS
      JMP WAIT,I    NO WAIT SO RETURN 
      SPC 1 
      JSB EXEC      SUSPEND 
      DEF *+6        CALLING
      DEF B1014 
      DEF ZERO        PROGRAM 
      DEF RESL         FOR
      DEF ZERO          SPECIFIED 
      DEF MULT           TIME 
      SPC 1 
      RSS           SKIP IF ERROR 
      JMP WAIT,I
      LDA 1         CONVERT RTE ERROR TO ISA
      AND C7
      ADA ERR1,I
      STA ERR1,I
      JMP WAIT,I    AND EXIT
      SKP 
NAME  NOP 
ITIME NOP 
ERR2  NOP 
TRNON NOP 
      JSB .ENTR     FETCH CALLING 
      DEF NAME        ADDRESSES 
      CLA,INA       ASSUME NO 
      STA ERR2,I     ERROR (ERR2=1) 
      LDA ITIME,I   MOVE TIME OUT 
      STA HRS        OF ARRAY 
      ISZ ITIME       AND INTO
      DLD ITIME,I      LOCAL AREA 
      DST MIN 
      SPC 1 
      JSB EXEC      SCHEDULE
      DEF *+9        TO EXECUTE 
      DEF B1014       ONCE AT A 
      DEF NAME,I       SPECIFIED
      DEF .1            TIME
      DEF ZERO
      DEF HRS 
      DEF MIN 
      DEF SEC 
      DEF ZERO
      SPC 1 
      JSB BERR2     BUMP ERROR IF ERROR 
      JMP TRNON,I 
* 
* 
BERR2 NOP 
      LDA 1         GET ERROR MESSAGE 
      AND C7        CONVERT TO OCTAL
      ADA ERR2,I    ADD TO PRESENT VALUE
      STA ERR2,I
      JMP BERR2,I   RETURN
* 
C7    OCT 7 
* 
* 
      SKP 
TIME  NOP 
      CPB .1        RESOLUTION = MILLISECONDS?
      JMP MILLI     YES GO CONVERT
      SZB,RSS       RESL CODE = 0 
RESL. CLB,INB        SET TO ONE 
      STB RESL       AND SAVE 
      CMA,SSA,INA,SZA  COMPLEMENT MULTIPLE
      ISZ TIME      BUMP RETURN IF MULT>0 
      STA MULT
      JMP TIME,I
MILLI ADA .9        ROUND UP TO NEAREST 
      CLB            TEN MILLISECONDS 
      DIV .10         THEN CONVERT TO TENS
      JMP RESL. 
      SKP 
ZERO  NOP 
B1010 OCT 100012
B1014 OCT 100014
.9    DEC 9 
.1    DEC 1 
.10   DEC 10
HRS   EQU MULT1 
MIN   EQU RESL1 
SEC   EQU ERR1
      END 
