File PWRF.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/ 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	<PWRFFLD=10>
IFNDEF	PWRFLOC	<PWRFLOC=200>




	TASK=	PWRF
	CUR=	PWRFFLD
	INIWT=	0






IFNDEF	PWRCLR	<PWRCLR= EFWT!EORMWT>
IFNDEF	KL8A	<KL8A=0>

/ /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 <TAD (OSTTDV&77^400> OSTTDV&77^10+6006 /FIX UP OS8 (KL8A #1 ONLY) IFNZRO OSTTDV&100 <CLA> > /DITTO FOR OS/8 TTY IFNZRO KL8A < /REENABLE KL8A INTERRUPTS IFNDEF KL8ACT <KL8ACT= 7400> 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 <PAGE> /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=$=$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search