	.TITLE	NLDRIVER - NULL DEVICE DRIVER
	.IDENT	/01/
 
;
; COPYRIGHT (C) 1977
; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
;
; THIS SOFTWARE IS FURNISHED UNDER  A LICENSE FOR USE ONLY  ON  A
; SINGLE COMPUTER SYSTEM AND MAY BE  COPIED ONLY WITH  THE INCLU-
; SION OF  THE  ABOVE  COPYRIGHT NOTICE.  THIS SOFTWARE,  OR  ANY
; OTHER COPIES THEREOF, MAY NOT BE  PROVIDED  OR  OTHERWISE  MADE
; AVAILABLE TO ANY OTHER PERSON EXCEPT  FOR  USE  ON  SUCH SYSTEM
; AND TO  ONE WHO AGREES  TO  THESE LICENSE  TERMS.  TITLE TO AND
; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
;
; THE INFORMATION IN THIS SOFTWARE  IS  SUBJECT TO CHANGE WITHOUT
; NOTICE AND SHOULD NOT BE CONSTRUED  AS  A COMMITMENT BY DIGITAL
; EQUIPMENT CORPORATION.
;
; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
;
; D. N. CUTLER 8-AUG-77
;
; NULL DEVICE DRIVER
;
; MACRO LIBRARY CALLS
;
 
	$IODEF				;DEFINE I/O FUNCTION CODES
	$SSDEF				;DEFINE SYSTEM STATUS VALUES
 
;
; LOCAL DATA
;
; DRIVER DISPATCH TABLE
;
 
	.PSECT	WIONONPAGED
NL$DDT::				;ADDRESS OF DRIVER DISPATCH TABLE
	.LONG	0			;START I/O OPERATION
	.LONG	0			;UNSOLICITED INTERRUPT
	.LONG	FUNCTABLE		;FUNCTION DECISION TABLE ADDRESS
	.LONG	0			;CANCEL I/O ENTRY POINT
	.LONG	0			;ADDRESS OF REGISTER DUMP ROUTINE
	.LONG	0			;DIAGNOSTIC AND ERROR BUFFER SIZES
	.PAGE
	.SBTTL	NULL DEVICE FUNCTION DECISION TABLE
;+
; NULL DEVICE FUNCTION DECISION TABLE
;-
 
FUNCTABLE:				;FUNCTION DECISION TABLE
	FUNCTAB	,-			;LEGAL FUNCTIONS
		<READLBLK,-		;READ LOGICAL BLOCK
		 READVBLK,-		;READ VIRTUAL BLOCK
		 WRITELBLK,-		;WRITE LOGICAL BLOCK
		 WRITEVBLK>		;WRITE VIRTUAL BLOCK
	FUNCTAB	,-			;BUFFERED I/O FUNCTIONS
		<>			;NO BUFFERED I/O FUNCTIONS
	FUNCTAB	READ,-			;READ FUNCTIONS
		<READLBLK,-		;READ LOGICAL BLOCK
		 READVBLK>		;READ VIRTUAL BLOCK
	FUNCTAB	WRITE,-			;WRITE FUNCTIONS
		<WRITELBLK,-		;WRITE LOGICAL BLOCK
		 WRITEVBLK>		;WRITE VIRTUAL BLOCK
	.PAGE
	.SBTTL	NULL DEVICE FUNCTION DECISION TABLE ROUTINES
;+
; READ - READ FUNCTIONS
; WRITE - WRITE FUNCTIONS
;
; THE NULL DEVICE IS A SPECIAL DEVICE IN THAT ALL WRITES ARE DISCARDED AND ALL
; READS RETURN AN END OF FILE STATUS. THERE IS NO ACTUAL DRIVER, BUT RATHER ALL
; PROCESSING IS DONE BY FUNCTION DECISION TABLE ROUTINES.
;
; INPUTS:
;
;	R0 = SCRATCH.
;	R1 = SCRATCH.
;	R2 = SCRATCH.
;	R3 = ADDRESS OF I/O REQUEST PACKET.
;	R4 = CURRENT PROCESS PCB ADDRESS.
;	R5 = ASSIGNED DEVICE UCB ADDRESS.
;	R6 = ADDRESS OF CCB.
;	R7 = I/O FUNCTION CODE BIT NUMBER.
;	R8 = FUNCTION DECISION TABLE DISPATCH ADDRESS.
;	R9 = SCRATCH.
;	R10 = SCRATCH.
;	R11 = SCRATCH.
;	AP = ADDRESS OF FIRST FUNCTION DEPENDENT PARAMETER.
;
; OUTPUTS:
;
;	IF THE FUNCTION IS A READ, THEN SS$_ENDOFFILE IS RETURNED.
;
;	IF THE FUNCTION IS A WRITE, THEN SS$_NORMAL IS RETURNED.
;-
 
	.ENABL	LSB
	.PSECT	Y$EXEPAGED
READ:	MOVZWL	#SS$_ENDOFFILE,R0	;SET END OF FILE STATUS
	BRB	10$			;
WRITE:	MOVZWL	#SS$_NORMAL,R0		;SET NORMAL COMPLETION
10$:	JMP	EXE$FINISHIOC		;FINISH I/O OPERATION
	.DSABL	LSB
 
	.END
