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$