	.TITLE	BOOTIO - BOOTSTRAP FILEREAD IO MODULE
	.IDENT	/X0100/

;++
; FACILITY:	SYSTEM BOOTSTRAPPING
;
; ABSTRACT:
;
;	THIS MODULE PERFORMS LOGICAL BLOCK I/O FOR FILEREAD
;
; ENVIRONMENT:	KERNEL MODE, UNMAPPED, IPL=31
;
; AUTHOR: RICHARD I. HUSTVEDT	, CREATION DATE: 14-APR-78
;
; MODIFIED BY:
;
;  , VERSION  ,
; 01	- 
;--

;
; INCLUDE FILES:
;
	$RPBDEF				; DEFINE RESTART PARAMETER BLOCK
	.PAGE
	.PSECT	BOOTIO

	.SBTTL	RDWRTLBN - READ/WRITE LOGICAL BLOCK NUMBER
;++
; FUNCTIONAL DESCRIPTION:
;
;	THIS ROUTINE READS/WRITES A DATA BLOCK FROM/TO THE SPECIFIED 
; LOGICAL BLOCK NUMBER OF THE VOLUME ASSIGNED TO THE SPECIFIED CHANNEL
;
; CALLING SEQUENCE:
;
;	CALLG	ARGLIST,FIL$RDWRITLBN
;
; INPUT PARAMETERS:
;
;	CHAN(AP)	=		;CHANNEL ASSIGNED TO THE VOLUME TO READ
;	LBN(AP)		=		;LOGICAL BLOCK NUMBER TO READ
;	BUFADR(AP)	=		;ADDRESS OF BUFFER TO READ INTO
;	IOFUNC(AP)	=		;I/O FUNCTION CODE
;
; IMPLICIT INPUTS:
;
;	NONE
;
; OUTPUT PARAMETERS:
;
;	R0 = SYSTEM STATUS CODE
;
; IMPLICIT OUTPUTS:
;
;	NONE
;
; COMPLETION CODES:
;
;	NONE
;
; SIDE EFFECTS:
;
;	NONE
;
; EQUATED SYMBOLS:
;
;    OFFSETS FROM AP
;
	CHAN		=	4	;CHANNEL TO WHICH VOLUME IS ASSIGNED
	LBN		=	8	;LOGICAL BLOCK NUMBER
	BUFADR		=	12	;BUFFER ADDRESS TO READ INTO
	IOFUNC		=	16	;FUNCTION CODE FOR THE QIO
;
;--

FIL$RDWRTLBN::
	.WORD	0
	PUSHL	CHAN(AP)		; ADDRESS OF RPB
	MOVL	(SP),R0			; GET ADDRESS OF RPB
	MOVL	RPB$L_IOVEC(R0),R0	; GET POINTER TO I/O ROUTINE VECTOR
	PUSHL	#0			; SET MODE TO PHYSICAL ADDRESS
	PUSHL	IOFUNC(AP)		; SET FUNCTION
	PUSHL	LBN(AP)			; LOGICAL BLOCK NUMBER
	ROTL	#9,#1,-(SP)		; SET SIZE TO 512 BYTES
	PUSHAL	@BUFADR(AP)		; SET BUFFER ADDRESS
	CALLS	#6,@(R0)[R0]		; CALL BOOTSTRAP DRIVER
	RET
 
	.END
