Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - sprout.c11
There is 1 other file named sprout.c11 in the archive. Click here to see a list.
 REP 34/1	;11C1
		SPOEDT==2541			;EDIT LEVEL
 WIT
		SPOEDT==2542			;EDIT LEVEL
 INS 235/3	;11C2
	2542	SPROUT's SPFORM.INI processing doesn't let the operator know
		what's going on if the file's missing or no matching forms type,
		etc.
		SPR 10-35035 GCO 10145 10-Jan-85 /LWS

 REP 3/15	;11C3

 WIT
	;**;[2542] Change DEPBP /LWS
 REP 7/15	;11C4
		IBP	TEXTBP			;OK -- INCR POINTER
		DPB	S1,TEXTBP		;STORE BYTE
		$RETT				;AND RETURN
 WIT
		IDPB	S1,TEXTBP		;[2542] STORE BYTE
		$RETT				;AND RETURN

 REP 6/40	;11C5
		MOVE	S2,[POINT 7,J$XTBF(J)]	;GET POINTER TO WTOR BUFFER.
		MOVEM	S2,TEXTBP		;AND SAVE IT FOR DEPBP.
		MOVEI	S2,TXT$LN*5		;GET MAXIMUM BYTE COUNT
		MOVEM	S2,TEXTBC
 WIT
	;**;[2542] Change code after FORMS+3L. /LWS
		PUSHJ	P,SETTBF		;[2542] SETUP TEXT BUFFER OPR RESPONSE
 REP 17/40	;11C6
		SKIPE	S1			;NO NEED TO CHANGE FORMS.
		$TEXT	(DEPBP,<Please load forms type '^W/J$FORM(J)/'>)
 WIT
		JUMPE	S1,FORM.1		;[2542] NO NEED TO CHANGE FORMS.
	FORM.0:	HRRZ	S1,STREAM		;[2542] GET STREAM NUMBER
		$WTOR	(<Please load forms type '^W/J$FORM(J)/'>,<^I/FRMMSG/>,@JOBOBA(S1),JOBWAC(S1)) ;[2542]
		$DSCHD	(PSF%OR)		;[2542] WAIT FOR RESPONSE
		TXNE	S,ABORT			;[2542] ABORTED?
		$RETT				;[2542] YES, JUST RETURN
		MOVEI	S1,FRMANS		;[2542] GET POINTER TO ANSWER TABLE
		PUSHJ	P,GETANS		;[2542] GET DISPATCH ADDRESS
		JUMPT	(S1)			;[2542] DISPATCH IF OK
		PUSHJ	P,SETTBF		;[2542] CLEAR BUFFER FOR OPR RESPONSE
		JRST	FORM.0			;[2542] INVALID ANSWER, ASK AGAIN.
 REP 26/40	;11C7
		MOVE	S1,TEXTBP		;GET THE WTOR BYTE POINTER.
		CAMN	S1,[POINT 7,J$XTBF(J)]	;IS THERE A MESSAGE FOR THE OPERATOR ??
		$RETT				;NO,,RETURN.
		$TEXT	(DEPBP,<Type 'RESPOND ^7/[.CHLAB]/number^7/[.CHRAB]/ PROCEED' when ready^0>)
		HRRZ	S1,STREAM		;GET STREAM NUMBER
		$WTOR  (,<^T/J$XTBF(J)/>,@JOBOBA(S1),JOBWAC(S1)) ;SEND THE WTOR.
		$DSCHD	(PSF%OR)		;WAIT FOR OPERATOR RESPONSE.
		$RETT				;RETURN...
	FRMINI:	$SAVE	<T1,T2,T3,T4>		;PRESERVE TEMPORARIES
 WIT
		MOVEI   S1,J$XERR(J)		;[2542] GET POINTER TO ERROR TEXT
		HRLI	S1,(POINT 7,0)		;[2542] MAKE INTO BYTE POINTER
		CAMN	S1,TEXTBP		;[2542] ANY TEXT?
		$RETT				;[2542] NO, RETURN
	FORM.3:	HRRZ	S1,STREAM		;[2542] GET STREAM NUMBER
		$WTOR  (<^T/J$XERR(J)/>,<^I/FERMSG/>,@JOBOBA(S1),JOBWAC(S1)) ;[2542] SEND THE WTOR.
		$DSCHD	(PSF%OR)		;WAIT FOR OPERATOR RESPONSE.
		TXNE	S,ABORT			;[2542] ABORTED?
		$RETT				;RETURN...
		MOVEI	S1,FERANS		;[2542] NO, GET ADDRESS OF CHOICE BLOCK
		PUSHJ	P,GETANS		;[2542] LOOK FOR MATCH
		JUMPT	(S1)			;[2542] DISPATCH
		PUSHJ	P,SETTBF		;[2542] SET BUFFER AGAIN
		JRST	FORM.3			;[2542] ASK AGAIN

	FORM.4:	TXO	S,RQB!ABORT		;[2542] REQUEUE THE JOB
		MOVE	S1,J$FPFM(J)		;[2542] GET PREVIOUS FORMS TYPE
		MOVEM	S1,J$FORM(J)		;[2542] RESTORE IT
		HRRZ	S1,STREAM		;[2542] GET STREAM
		$WTOJ	(<Requeuing job>,^R/.EQJBB(J)/,@JOBOBA(S1)) ;[2542] SEND THE WTOR.
		$RETF				;[2542] RETURN

	;[2542] ERROR MESSAGES TO OPR AND RESPONSE CHOICE BLOCKS

	FRMMSG:	ITEXT (<^R/.EQJBB(J)/^T/@FRMTXT/>) ;[2542]

	FRMTXT:	[ASCIZ/
	Type 'RESPOND <number> PROCEED' to continue when ready/] ;[2542]

	FRMANS:	$STAB				;[2542]
		 KEYTAB	(FORM.1,PROCEED)	;[2542]
		$ETAB				;[2542]

	FERMSG:	ITEXT (<^R/.EQJBB(J)/^T/@FERTXT/>) ;[2542]

	FERTXT:	[ASCIZ/
	Type 'RESPOND <number> REQUEUE' to requeue the job
	Type 'RESPOND <number> PROCEED' to continue anyway/] ;[2542]

	FERANS:	$STAB				;[2542]
		 KEYTAB	(.RETT,PROCEED)		;[2542]
		 KEYTAB	(FORM.4,REQUEUE)	;[2542]
		$ETAB				;[2542]

	;**;[2542] Add GETANS routine and WTOR text
	;GETANS - Compare operator responses to WTOR's with what's expected.
	;
	;	Call:	S1 = Address of response choice block
	; 	Returns	TRUE	S1 = Dispatch address from response choice block
	;		FALSE	No match

	GETANS:	HRROI	S2,J$XTBF(J)		;[2542] POINT TO ANSWER
		$CALL	S%TBLK			;[2542] LOOKUP THE ANSWER
		TXNE	S2,TL%NOM+TL%AMB	;[2542] FIND IT OK?
		 $RETF				;[2542] NOPE..TRY AGAIN
		PUSHJ	P,SETTBF		;[2542] RESET TEXT BUFFER
		HRRZ	S1,(S1)			;[2542] GET THE ADDRESS
		$RETT				;[2542] RETURN IT

	FRMINI:	$SAVE	<T1,T2,T3,T4>		;PRESERVE TEMPORARIES
		PUSHJ	P,SETEBF		;[2542] GO SET UP ERROR TEXT BUFFER
 REP 36/41	;11C8
		JUMPF	.RETF			;RETURN IF FILE NOT FOUND
 WIT
		JUMPF	FILERR			;[2542] GO SET ERROR TEXT IF PROBLEMS
 REP 40/41	;11C9
		JUMPF	FRMIEX			;EXIT ON EOF
 WIT
		JUMPF	FRMI3A			;[2542] EXIT ON EOF
 REP 45/41	;11C10
		JUMPF	FRMIEX			;EXIT ON EOF
		JRST	FRMI.1			;DO NEXT LINE

	FRMI.3:	$CALL	FH$SIX			;GET THE FORMS NAME
		JUMPF	FRMIEX			;EOF!!
 WIT
		JUMPT	FRMI.1			;[2542] DO NEXT LINE
		PJRST	FRMI3A			;[2542] COMPLAIN

	FRMI.3:	$CALL	FH$SIX			;GET THE FORMS NAME
		JUMPF	FRMI3A			;[2542] EOF!!
 REP 53/41	;11C11
		JRST	FRMI.2			;NO -- END LINE
 WIT
		$CALL	FH$EOL			;[2542] END THE LINE
		JUMPT	FRMI.1			;[2542] LOOK FOR FORMS ON NEW LINE
	FRMI3A:	GETLIM	T2,.EQLIM(J),FORM	;[2542] GET FORMS TYPE AGAIN
		$TEXT	(DEPBP,<Forms ^W/T2/ not found in SPFORM.INI for ^W/J$LDEV(J)/^0>) ;[2542]
		PJRST	FRMIEX			;[2542] CLOSE FILE AND RETURN
 REP 62/41	;11C12
		JUMPF	FRMIEX			;EOF
		JRST	FRMI.4			;AND LOOP
 WIT
		JUMPT	FRMI.4			;[2542] AND LOOP
		PJRST	FRMERR			;[2542] BAD FILE FORMAT
 REP 76/41	;11C13
		$WTOJ	(SPFORM.INI Error,<bad format>,@JOBOBA(S1)) ;TELL OPR
 WIT
		$TEXT	(DEPBP,<SPFORM.INI format error^0>) ;[2542] TELL OPR
 INS 81/41	;11C14

	FILERR:	$TEXT	(DEPBP,<SPFORM.INI problems, ^E/S1/^0>) ;[2542] SET TEXT
		$RETF				;[2542] RETURN
 REP 8/42	;11C15
		CAIN	T2,'REM'		;DOES IT SAY "REMOTE"?
		SKIPL	J$LREM(J)		;YES, ARE WE REMOTE
		  SKIPA				;NO!!!
		JRST	FRMSWI			;YES!!
 WIT
		CAIE	T2,'REM'		;[2542] DOES IT SAY "REMOTE"?
		  SKIPA				;[2542] NO
		SKIPL	J$LREM(J)		;[2542] YES, ARE WE REMOTE
 REP 21/42	;11C16
		JUMPF	FRMIEX			;EOF, RETURN
		JUMPE	T1,FRMERR		;BAD FORMAT
		JRST	FRMI.7			;AND LOOP AROUND
 WIT
		JUMPF	FRMI.9			;[2542] EOF, COMPLAIN
		SKIPE	T1			;[2542] NOT ANOTHER LOCATOR
		JRST	FRMI.7			;AND LOOP AROUND

	FRMI.9:	GETLIM	T2,.EQLIM(J),FORM	;[2542] GET FORMS TYPE AGAIN
		$TEXT	(DEPBP,<No 'locators' in SPFORM.INI match ^W/J$LDEV(J)/, forms ^W/T2/^0>) ;[2542]
		PJRST	FRMIEX			;[2542] CLOSE FILE AND RETURN
 SUM 157642