Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - filio.c11
There is 1 other file named filio.c11 in the archive. Click here to see a list.
 REP 23/12	;11C1
		SE1ENT
		PUSHJ	P,UPDA		;GET DA RESOURCE
 WIT
		PUSHJ	P,UPDA		;GET DA RESOURCE
		SE1ENT
 REP 20/28	;11C2
		DSKOFF		;CANT ALLOW DISK INTERRUPTS WHILE FIDDLING
 WIT
		MOVSI	T1,U2PNRM##	;CAN'T EXCHANGE NON-REMOVABLE MEDIA
		TDNN	T1,UNIDS2##(P1)	;...
		TDNE	T1,UNIDS2##(U)	;...
		JRST	UPOPJ##		;GIVE ERROR
	IFN FTDUAL,<
		SKIPL	UNI2ND##(P1)	;DON'T ALLOW EXCHANGE OF ALTERNATE PORT
		SKIPGE	UNI2ND##(U)	;...
		JRST	UPOPJ##		;GIVE ERROR
	>; END IFN FTDUAL
		DSKOFF			;CANT ALLOW DISK INTERRUPTS WHILE FIDDLING
 REP 24/28	;11C3
		JRST	XCHUN2		;NO, CANT EXCHANGE
		CAIGE	T1,OWCOD##	;2ND UNIT IDLE OR IN OPR WAIT?
		JUMPN	T1,XCHUN2	;CANT EXCHANGE IF NOT
		MOVEI	T1,O2COD##	;IF UNITS ARENT IN OPR WAK
 WIT
		JRST	UPOPJ##		;NO, CANT EXCHANGE
		CAIGE	T1,OWCOD##	;2ND UNIT IDLE OR IN OPR WAIT?
		JUMPN	T1,UPOPJ##	;CANT EXCHANGE IF NOT
		MOVEI	T1,O2COD##	;IF UNITS ARENT IN OPR WAIT
 REP 1/29	;11C4
	IFN FTDUAL,<
 WIT
		MOVEI	T1,UNIHCT##(U)	;MAKE THE ERROR STATE
		MOVEI	T2,UNIHCT##(P1)	; STAY WITH THE DRIVE
		HRLI	T1,-3		; EXCHANGE UNIHCT,SCT,MCT
	XCHUN1:	MOVE	T3,(T1)
		EXCH	T3,(T2)
		MOVEM	T3,(T1)
		ADDI	T2,1
		AOBJN	T1,XCHUN1
	IFN FTDUAL,<
		MOVE	T1,UNISER##(U)	;CHANGE UNIT SERIAL NUMBERS
		EXCH	T1,UNISER##(P1)	;...
		MOVEM	T1,UNISER##(U)	;...
 REP 10/29	;11C5
		MOVE	T3,UNISTR##(U)	;SWITCH UNISTR'S
		SKIPE	T2
		HRRM	T3,UNISTR##(T2)
		MOVE	T3,UNISTR##(P1)
		SKIPE	T1
		HRRM	T3,UNISTR##(T1)
	>

		MOVEI	T1,UNIHCT##(U)	;MAKE THE ERROR STATE
		MOVEI	T2,UNIHCT##(P1)	; STAY WITH THE DRIVE
		HRLI	T1,-3		; EXCHANGE UNIHCT,SCT,MCT
	XCHUN1:	MOVE	T3,(T1)
		EXCH	T3,(T2)
		MOVEM	T3,(T1)
		ADDI	T2,1
		AOBJN	T1,XCHUN1
 WIT
		SKIPE	T2,UNI2ND##(U)	;IF SECOND UNIT NOW DUAL-PORTED,
		PUSHJ	P,CPYUD		; COPY NECESSARY DATA TO SECOND PORT
		EXCH	P1,U		;POINT AT FIRST UNIT
		SKIPE	T2,UNI2ND##(U)	;IF FIRST UNIT NOW DUAL-PORTED,
		PUSHJ	P,CPYUD		; COPY NECESSARY DATA TO SECOND PORT
		EXCH	P1,U		;AS YOU WERE
	>; END IFN FTDUAL
 INS 22/46	;11C6
		TLNE	F,ENTRB+LOOKB	;FILE OPEN?
		JRST	SETIMP##	;YES, GIVE HIM AN ERROR
 REP 16/211	;11C7
		JUMPL	T1,CPOPJ##		;DEVDMP IS FUNNY DURING FORMATTING
 WIT
		JUMPL	T1,CPOPJ##		;DEVDMP IS FUNNY DURING FORMATING
 SUM 18407