File: PP.TK of Tape: Sources/Multi8/multi8-1
(Source file text) 

/******* MULTI8 PTP DRIVER *******
/LAST EDIT 30-MAR-79, ES
/LAST CHANGE: IF THERE WAS NO POWER ON THE PUNCH, THIS WAS
/ENDLESSLY WAITING FOR AN INTERRUPT, EVEN WHEN THE POWER
/WAS SWITCHED ON LATER.  NOW THIS TASK WAITS TILL THE POWER
/IS ON.  ADDITIONALLY THIS TASK BECOMES A DUMMY DRIVER WHEN
/THE POWER IS SWITCHED OFF DURING PUNCHING...
/

PPCHAR,	"P^100+"P&3777
	200
PPCA,	0
PP,	SNA		/CLOSE ?
	 JMP PPCLOSE
	DCA PPCHAR	/SAVE POINTER TO REQUEST
	TAD I PPCHAR	/FETCH FIRST ARGUMENT
	SMA		/READ OR WRITE ?
	 JMP PPERR	/CAN'T READ FROM THE PUNCHER
	AND C3700	/GET LENGTH BITS
	CIA		/WORDCOUNT IS NEGATIVE
	DCA PPWC
	TAD I PPCHAR	/GET FIELDBITS, R/W TO LINK
	AND C70
	TAD C6201
	DCA PPCDF
	ISZ PPCHAR	/ADVANCE POINTER TO BUFFERADDRESS
	TAD I PPCHAR
	DCA PPCA	/BUFFER ADDRESS
	JMS MONITOR
	   RESERV RETURN CONTINUE
	DCA PPSLOT	/COMPLETION EVENT #
	JMS PPOUT	/DUMMY CALL, SET FLAG
	DCA PPRUND	/NOT ACTIVE YET
PPCDF,	CDF		/OVERLAID WITH CDF TO BUFFER FIELD
PPLOOP,	TAD I PPCA	/FETCH A WORD
	JMS PPOUT	/PUNCH THE FIRST PPCHAR
	TAD I PPCA
	ISZ PPCA
	AND C7400
	DCA PPCDF	/HOLD UPPER FOUR BITS
	TAD I PPCA	/SECOND WORD
	JMS PPOUT
	TAD I PPCA
	ISZ PPCA
	AND C7400
	CLL RTR
	RTR
	TAD PPCDF	/ADD IN HIGHORDER BITS
	RTR
	RTR
	JMS PPOUT
	ISZ PPWC
	 JMP PPLOOP
	JMS MONITOR
	   SIGNAL HALT
PPSLOT,	0

PPCLOSE,ACM1
	JMS MONITOR
	   RETURN CONTINUE
	JMS PPOUT	/OUTPUT 200 BLANKS
	ISZ PPCNT
	 JMP .-2
	JMS MONITOR
	   HALT CLEAR SWPOUT

PPERR,	TAD (-HRDERR-1
	JMS MONITOR
	   EXIT SWPOUT

PPOUT,	0
	DCA PPCHAR
PPW3,	TAD (-DGNTICK	/DON'T WAIT TOO LONG
			/WILL BE JMP I PPOUT IF 2ND TIMOUT
	JMS MONITOR
	   WAIT
	   PTP
	SZA CLA		/SEE IF TIMOUT
	JMP PPWAIT
	TAD PPCHAR	/NO TIMOUT
	PLS		/PUNCH
	CLA CLL IAC
	DCA PPRUND	/SET ACTIVE FLAG
	JMP I PPOUT

PPWAIT,	TAD PPRUND	/SEE IF PUNCHER ACTIVE
	SNA CLA
	JMP PPW2	/NO,TRY TO SET FLAG AND WAIT
	TAD PPINS	/YES, CAUSE DUMMY OUTPUT
	DCA PPW3
PPINS,	JMP I PPOUT	/RETURN

PPW2,	PLS		/TRY TO SET THE FLAG
	JMP PPW3	/WAIT AGAIN

PPCNT,	-200		/200 BLANKS FOR TRAILER
PPWC,	0
PPRUND,	0		/1 IF PUNCH ACTIVE

$