;COPYRIGHT GENERAL SCIENTIFIC CORPORATION ;ROCKVILLE, MD. ; ;THIS SOFTWARE MAY BE FREELY DISTRIBUTED BY DECUS FOR NON-COMMERCIAL PURPOSES ;SUBJECT TO GSC COPYRIGHT AND DECUS REGULATIONS. ; .TITLE TIME1 /SYSLIB (MODIFIED) .IDENT /V04.00/ .SBTTL TIME1 - FORTRAN CALLABLE SUBROUTINE .MCALL .PRINT ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; COPYRIGHT (c) 1979, 1980 BY DIGITAL EQUIPMENT CORPORATION ; ; TIME CONVERSION SUBROUTINE FOR SYSLIB ; ; CALCULATES THE TWO-WORD INTEGER TIME BETWEEN THE CURRENT TIME ; AND A SPECIFIED TIME-OF-DAY. USED BY CALL UNTIL(...) AND CALL ; SCHED(...) TO CALCULATE THE APPROPRIATE TIME INTERVAL. ; ; INPUTS: ; USES THE NEXT FOUR ARGUMENTS FROM THE ARGUMENT LIST, ; AS IHRS, IMIN, ISEC, ITCK. ; ; OUTPUTS: ; (R2,R3) = TIME INTERVAL DESIRED ; ; DESTROYS: R0,R1,R2,R3,R4 ; UPDATES R5 BEYOND NEXT FOUR ARGUMENTS ; ; CALLING SEQUENCE: JSR PC,TIMDIF ; ; MAS .GLOBL $TIME$,$GVAL ;SOME SYSLIB ROUTINES TIMDIF::JSR PC,$TIME$ ;SET (R0,R1) = DESIRED TIME-OF-DAY MOV R0,R2 ;COPY IT INTO (R2,R3) MOV R1,R3 CMP -(SP),-(SP) ;ALLOCATE SPACE FOR CURRENT TIME-OF-DAY MOV SP,R0 MOV R0,-(SP) ;MACHINE-INDEPENDENCE MOV #21*400,-(SP) ;SET .GTIM CODE MOV SP,R0 ;R0 -> ARG BLOCK EMT 375 ;.GTIM CMP (SP)+,(SP)+ ;DISCARD ARG BLOCK MOV (SP)+,R0 ;(R0,R1) = CURRENT TIME MOV (SP)+,R1 SUB R1,R3 ;HANDLE LOW ORDER BITS SBC R2 ;DOUBLE WORD MAGIC SUB R0,R2 ;CALCULATE INTERVAL -- HIGH ORDER BPL 1$ ;IF IT ISN'T REALLY TOMORROW ; ; ; If we get here, then the time requested has already ; passed and so we set the flag and compute the absolute ; magnitude of the difference for the calling program. ; ; MOV #-1,@(R5) ;IT IS FOR TOMORROW .PRINT #MAN COM R3 ;ONES COMPLEMENT COM R2 ;ONES COMPLEMENT ADD #1,R3 ;COMPUTE THE TWOS COMPLEMENT ADC R2 ;ADD IN THE CARRY RETURN 1$: CLR @(R5) ;CLEAR FLAG WORD .PRINT #TODAY RETURN MAN: .ASCIZ /TOMORROW/ TODAY: .ASCIZ /TODAY/ .END