/ POWER FAIL RECOVERY TASK FOR RTS/8 (V2B-B) 15-MAR-78 XLIST 1 /COPYRIGHT ALSO IS IN PARAM.PA / / / / / / / / / COPYRIGHT (C) 1974,1975,1976 BY / / DIGITAL EQUIPMENT CORPORATION / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE /WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A /COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. DIGITAL /EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ANY /ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO /THE PURCHASER UNDER A LICENSE FOR USE ON A SINGLE /COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION OF /DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING /BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT /THAT IS NOT SUPPLIED BY DIGITAL. / / / / / / / / / / XLIST 0 /LIST TASK CODE / / / / PPPP W W RRRR FFFFF / P P W W R R F / P P W W R R F / PPPP W W RRRR FFFF / P W W W R R F / P WW WW R R F / P W W R R F / / / VERS= 2 /THIS TASK IS EXECUTED WHEN POWER RETURNS AFTER A POWER /FAILURE. IT RESTORES THE CLOCK AND TELETYPE FLAGS ITSELF, /BUT DEPENDS ON OTHER RTS-8 HANDLERS TO PROVIDE A ROUTINE /WHICH, WHEN CALLED, RE-INITIALIZES THEIR DEVICES. / /EDIT HISTORY: / / (V2B) / 1) TOOK OUT SPECIAL CASE 'TLS' / / PWRF00 CORRESPONDED TO V2B RELEASE / PWRF01 SCR 6/77 ON PDP8A NEED A 6103 [01] / CLEAR AC LOW / PWRF02 SCR 11/77 PWRF01 WRONG; [02] / REMOVED FLOPPY CODE / /01-AUG-77: (LHN) [N1] / 1) 80 COLUNM LPT: CREF LISTING. / 2) PARAMETER FIELD AND ORIGIN. / 3) DEFINED THE PARAMETER "PWRCLR" WHICH SPECIFIES / THE WAIT BITS TO BE CLEARED ON POWER RECOVERY. / "PWRCLR" CAN BE ADDED TO THE PARAMETER FILE. / 4) TO USE THE FIRST WORD OF THE MESSAGE TABLE. / 5) CHANGED THE METHOD OF DETERMINING IF THE / MESSAGE TABLE WILL FIT IN THE TASK'S PAGE. /15-MAR-78: (LHN) [N2] / 1) ADDED TLS FOR TTDEV, CONDITIONALLY. IFNDEF PWRFFLD IFNDEF PWRFLOC TASK= PWRF CUR= PWRFFLD INIWT= 0 IFNDEF PWRCLR IFNDEF KL8A / /THE ACTION TO BE TAKEN ON POWER FAILURE IS DETERMINED BY /THE CONTENTS OF THE TABLE "PFLTBL", WHICH CONTAINS ONE WORD /PER TASK. A TASK MAY ALTER ITS WORD IN THIS TABLE BY /SENDING A MESSAGE TO THE POWER-FAIL TASK. THE FORMAT OF /THE MESSAGE IS: / / / /WORD 1 EVENT FLAG (RTS/8 PUTS TASK NUMBER IN / LOW BITS) /WORDS 2-3 RESERVED FOR RTS/8 /WORD 4 NEW TABLE ENTRY VALUE / / /IF THE TABLE ENTRY VALUE IS 0, NOTHING WILL BE DONE FOR THE /CORRESPONDING TASK. IF THE VALUE IS 7777, THE TASK'S EVENT /FLAG WAIT BIT WILL BE CLEARED. IF THE VALUE IS BETWEEN /0 AND 7777, IT IS CONSIDERED TO BE THE ADDRESS OF A /SUBROUTINE IN THE CALLING TASK'S FIELD TO WHICH THE TASK /WILL BE DERAILED WITH SOME OF ITS WAIT BITS CLEARED. THE /PARAMETER "PWRCLR" DETERMINES WHICH WAIT BITS WILL BE /CLEARED. /INITIALIZATION CODE FIELD CUR%10 *PWRFLOC START, STA PTR, CDF 0 CTR, TAD I MEFCDF /GET POINTER TO POWER-FAIL EVENT PWFLEF, DCA PWFLEF /FLAG WHICH IS ONE LOC BEFORE TAD (4000+TASK /POWER-UP ROUTINE DCA I PWFLEF /INITIALIZE IT TO "WAITING" PWFLLP, IOF /TESTING TWO THINGS - MUST HAVE IOF CDF 0 TAD I PWFLEF /HAS POWER GONE DOWN AND COME UP? SNA CLA JMP POWRUP /YES TAD I (TASK^2+MSGTBL SZA CLA /ANY MESSAGES FOR ME? JMP GETMSG /YES - GO READ MAIL CIF 0 CDF CUR /NOTHING TO DO - WAITM /WAIT FOR SOMETHING TO HAPPEN EORMWT JMP PWFLLP /ARISE, FAIR DAMSEL! GETMSG, CAL /CAL TURNS INTERRUPTS BACK ON RECEIVE /GET PENDING MESSAGE MADDR, 0 DCA .+1 MEFPTR, MSGCDF, HLT /SET DF TO MESSAGE FIELD TAD MSGCDF DCA MEFCDF /SAVE CDF FOR POST CAL AC7775 TAD MADDR DCA MEFPTR /POINT TO MESSAGE EVENT FLAG TAD I MEFPTR /WHICH CONTAINS SENDING TASK NUMBER AND (177 /IN LOW ORDER 7 BITS TAD (PFLTBL-1 DCA PTR TAD I MADDR /GET NEW TABLE ENTRY CDF CUR DCA I PTR /STORE IT TAD MEFPTR CAL POST /POST MESSAGE EVENT FLAG MEFCDF, 3 JMP PWFLLP /HERE ON POWER UP POWRUP, TAD (4000+TASK /[02] REMOVE [01] CODE. DCA I PWFLEF /RESET FLAG FOR NEXT POWER FAILURE CDF CUR /RESTORE CLOCK AND TELETYPE FLAGS AND INTERRUPT ENABLES IFDEF OS8 < IFNZRO OSTTDV&100 OSTTDV&77^10+6006 /FIX UP OS8 (KL8A #1 ONLY) IFNZRO OSTTDV&100 > /DITTO FOR OS/8 TTY IFNZRO KL8A < /REENABLE KL8A INTERRUPTS IFNDEF KL8ACT CIF 0 /KL8A SUPPORT IN FIELD 0 JMS I (KL8ACT+2 /CALL POWER FAIL ROUTINE > IFDEF TTDEV < TTDEV^10+6006 /[N2] FIRE UP CONSOLE TTY PRINTER > / IFDEF CLOCK < TICKS= HERTZ%SHERTZ IFZERO CLKTYP <6131> /ENABLE CLOCK INTERRUPTS / FOR DK8EA,C IFNZRO CLKTYP&1 < /COMMON DK8EP, KW12 INIT CODE TICKS= 1750%SHERTZ CLCSR= 4100 /1 KHZ, MODE 1 FOR KW12 IFZERO CLKTYP-3 < /SPECIFIC DK8EP INIT CODE CLZE= 6130 CLCSR= 5311 /1 KHZ, MODE 1 FOR DK8EP STA CLZE /ZERO COMMAND REGISTER ON DK8EP > CLLR= 6132 /CALLED CLDE ON DK8EP CLAB= 6133 TAD (CLCSR / 1 KHZ, MODE 1 CLLR /LOAD COMMAND REGISTER CLA /CLLR DOESN'T CLEAR AC TAD (-TICKS CLAB /SCALE DOWN CLOCK TO SOFTWARE RATE CLA /DOES NOT CLEAR AC > IFZERO CLKTYP-1 < /SPECIFIC KW12 INIT CODE CLEN= 6134 TAD (300 /FORCE CLOCK BUFFER INTO COUNTER CLEN /AND ENABLE KW12 INTERRUPTS CLA /THIS DOESN'T CLEAR AC EITHER > / IFZERO CLKTYP-2 < /PDP8/A INTERNAL CLOCK INIT CODE CLEN= 6135 CLA IAC CLEN /ENABLE PDP8/A CLOCK INTERRUPTS CLA > > /END OF CLOCK CONDITIONAL / CLA IAC /[02] REMOVE RX01 CONDITIONAL DCA CTR /RX8E INTERRUPT ENABLE LEFT AC = 1 ION /FINALLY, ENABLE INTERRUPTS AGAIN /PERFORM TASK-DEPENDENT ACTIONS PWRUPL, TAD CTR TAD (PFLTBL-1 /[N1] DCA PTR TAD I PTR /GET CONTROL WORD FOR THIS TASK SNA JMP PWRUPN /NOTHING TO DO CMA SNA JMP PWRUPE /JUST CLEAR EVENT FLAG WAIT CMA DCA DRLADR TAD CTR CAL /DERAIL THE TASK DERAIL /INTO THE SUBROUTINE OF ITS CHOICE DRLADR, 0 PWRUPE, TAD CTR CAL UNBARG PWRCLR /[N1] CLEAR USER DEFINED WAIT BITS. PWRUPN, TAD CTR TAD (-NTASKS SNA CLA /THROUGH? JMP PWFLLP /YES ISZ CTR JMP PWRUPL / /[N1] TEST IF THE MESSAGE TABLE WILL FIT ON THIS PAGE /[N1] /[N1] THIS TEST DEPENDS ON THE FACT THAT "(-NTASKS)" /[N1] IS THE LAST LITERAL DEFINED IN THE CODE ABOVE. / /**LHN 12/1/76 IFNZRO (-NTASKS)-.-NTASKS&4000 /WON'T FIT / PFLTBL, ZBLOCK NTASKS /MESSAGE TABLE /[N1] **LHN 12/1/76 IFDEF DTA < *PFLTBL-1+DTA -1 > IFDEF RK8E < *PFLTBL-1+RK8E -1 > IFDEF RK08 < *PFLTBL-1+RK08 -1 > IFDEF RF08 < *PFLTBL-1+RF08 -1 > IFDEF DF32 < *PFLTBL-1+DF32 -1 > IFDEF LPT < *PFLTBL-1+LPT -1 > PAGE $=$=LHN=$=$