FTN,L 
C     NAME:   AUTOR 
C     SOURCE: 92067-18456 
C     RELOC:  92067-16118 
C     PGMR:   G.A.A.
C             E.J.W.,750505 
C             D.L.S.,760622 
C             E.J.W.,771219 
C             G.L.M.,790318 
C 
C 
      PROGRAM AUTOR(2,1),92067-16118 REV.1903 790318
      DIMENSION ITM(3),ITMX(5),IPFM(26),IDY(2),IPLU(2),ILU(2) 
      EQUIVALENCE (ITM(1),REG),(ITM(2),IB)
      EQUIVALENCE (IPFM(10),IHR),(IPFM(12),IMIN),(IPFM(14),ISEC)
      EQUIVALENCE (IPFM(16),IMS),(IPFM(21),IDY),(IPFM(26),IYR)
      EQUIVALENCE (IPLU,LUPF),(LUT,ILU) 
C 
      DATA ILU /0,0/
      DATA IPLU /0,0/ 
C 
      DATA IPFM /2H P,2HOW,2HER,2H F,2HAI,2HLE,2HD ,2HAT,2H  ,2HXX, 
     C           2H: ,2HXX,2H: ,2HXX,2H. ,2HXX,2H0 ,2HON,2H D,2HAY, 
     C           2H X,2HXX,2H O,2HF ,2H19,2H70/ 
C 
C 
C 
C  NOTE: THE ENTRY POINT "XLUEX" IS PROVIDED FOR INTERNAL USE 
C        ONLY. HEWLETT-PACKARD RESERVES THE RIGHT TO REMOVE OR
C        MODIFY THE CALLING SEQUENCE OR PARAMETER MEANINGS. THE 
C        "XLUEX" CALLING SEQUENCE IS IDENTICAL TO "EXEC" EXCEPT 
C        IN THE CONTROL WORD DEFINITION.
C 
C        EXEC CONTROL WORD: ONE WORD PARAMETER DEFINING LOGICAL UNIT
C                           AND FUNCTION CODE.
C 
C        XLUEX CONTROL WORD: TWO WORD PARAMETER USED TO DEFINE: 
C 
C                            WORD 1>LOGICAL UNIT  (BITS 7-0)    
C                            WORD 2>FUNCTION CODE (BITS 10-6)   
C 
C              THE FUNCTION CODE FIELD IS IDENTICAL TO THE FUNCTION 
C              CODE FIELD DEFINED FOR STANDARD EXEC I/O REQUESTS. 
C 
C                                  DEFINE THE MAXIMUM LOGICAL UNIT NUMBER 
C 
      LUMAX=IGET(1653B) 
C 
C 
C                                  SCAN THE LU'S TO FIND THE LU FOR 
C                                  THE PFAIL DRIVER 
      DO 5 LUPF=1,LUMAX 
C                                  DO A STATUS CALL 
C 
           CALL XLUEX(100015B,LUPF,IEQT5,IEQT4) 
C 
C                                  IGNOR UNDEFINED,AND UNASSIGNED LU'S. 
           GO TO 5
C                                  IS DRIVER TYPE EQUAL TO 43?
C 
 600       IF (IAND(IEQT5,37400B)-21400B)5,15,5 
C 
C                                  YES, IS THE SELECT CODE=4? 
C 
  15            IF (IAND(IEQT4,77B)-4)5,20,5
C 
   5  CONTINUE
C                                  POWER FAIL LU NOT FOUND
C 
C   ISSUE  "POWER FAIL LU NOT FOUND.  TIME OF POWER FAIL UNKNOWN" 
C   TO SYSTEM CONSOLE.
C 
      CALL EXEC(2,1,
     C51HPOWER FAIL LU NOT FOUND. TIME OF POWER FAIL UNKNOWN,-51) 
C 
C                                  SET TO USE LU ZERO 
      LUPF=0
C                                  LU FOUND SET TO GET FAIL TIME
C                                  CALL THE PFAIL DVR TO GET FAIL TIME
   20 CALL XLUEX(1,LUPF,ITM,3)
C                                  CONVERT THE DOUBLE INTEGER TO: 
C                                  HR,MIN,SEC.TENS OF MS
      CALL TMVAL(ITM,ITMX)
C                                  GET THE YEAR OFFSET FROM DAYS
      IB=ITM(3)/365 
C                                  ADD THE BASE YEAR TO GET ACTUAL YEAR 
C                                  AND CONVERT TO ASCII 
      CALL ICONV(IYR,IB+70) 
C                                  SUBTRACT THE YEARS TO GET DAYS AND 
C                                  CORRECT FOR DAY ZERO.
      ID=ITM(3)-IB*365+1
C                                  ISOLATE HUNDREDS AND CONVERT TO
C                                  ASCII
C 
      CALL ICONV(IDY,ID/100)
C 
C                                  FORCE HIGH BYTE TO A BLANK 
C 
      IDY=IAND(IDY,20777B)
C 
C                                  ISOLATE TENS AND ONES DIGITS AND 
C                                  CONVERT TO ASCII 
C 
      CALL ICONV(IDY(2),MOD(ID,100))
C 
C                                  CONVERT MILLISECONDS TO ASCII
C 
      CALL ICONV(IMS,ITMX)
C 
C                                  CONVERT SECONDS TO ASCII 
C 
      CALL ICONV(ISEC,ITMX(2))
C 
C                                  CONVERT MINUTES TO ASCII 
C 
      CALL ICONV(IMIN,ITMX(3))
C 
C                                  CONVERT HOURS TO ASCII 
C 
      CALL ICONV(IHR,ITMX(4)) 
C 
C                                  *****************************
C                                  THE FOLLOWING DO LOOP MAY BE 
C                                  MODIFIED IF DESIRED. 
C                                  IT SERVES TWO FUNCTIONS: 
C                                  1) BY SENDING A MESSAGE TO EACH TTY
C                                     THE DRIVER WILL RESET THE TTY 
C                                     INTERFACE TO REENABLE ANY 
C                                     TERMINALS (MUST ISSUE A STC). 
C                                  2) ANY USERS AT THE TERMINALS ARE
C                                     INFORMED THAT THE LAST LINE MAY 
C                                     NOT HAVE BEEN TRANSMITTED 
C                                     CORRECTLY.
C                                  *****************************
C 
C 
C 
C                                  SCAN FOR ALL THE TTY TYPE DEVICES
      DO 30 LUT=1,LUMAX 
C                                  DO STATUS CALL 
           CALL XLUEX(100015B,LUT,IEQT5,ISTA2,ISTA3)
C                                  IGNOR UNDEFINED,AND UNASSIGNED LU'S
           GO TO 30 
C                                  CHECK IF TYPE 0 DEVICE (I.E. A TTY)
    1      IF(IAND(IEQT5,37400B))25,2,25
C                                  CHECK IF TYPE 5 DEVICE 
 25        IEQT5=IEQT5-2400B
           IF(IAND(IEQT5,37400B))30,27,30 
C                                  IF TYPE 5 DEVICE, CHECK TO SEE IF
C                                  SUBCHANNEL 0(I.E. A CONSOLE) 
 27        IF(IAND(ISTA3,37B))30,2,30 
C                                  IF FIND A DEVICE, WRITE TIME ON IT.
    2           CALL XLUEX(2,LUT,IPFM,-52)
   30 CONTINUE
C                                  *****************************
C                                  USER POWER FAIL RECOVERY CODE
C                                  SHOULD BE ADDED HERE.
C                                  REMEMBER IF POWER FAILS
C                                  WHILE IN THIS CODE IT
C                                  MAY RUN FOR A FEW
C                                  SECONDS AFTER POWER IS 
C                                  RESTORED AND THEN BE ABANDONED 
C                                  AND RESTARTED FROM THE 
C                                  TOP. 
C                                  *****************************
C 
C                                  SECOND CALL ON PFAIL ROUTINE RESETS
C                                  TO SAVE TIME ON NEXT FALUTRE.
      CALL XLUEX(1,LUPF,ITM,3)
      STOP
      END 
      SUBROUTINE ICONV(LOC,IVAL)
      LOC=IVAL/10*256 
      LOC=IOR(IOR(LOC,30060B),MOD(IVAL,10)) 
      RETURN
      END 
      END$
                                                                                                                                                                                                                                                      