.TITLE	ACCBITMAP - Make BITMAP.SYS file on a disk accessible

	$FIBDEF					;include FIB definitions

	.PSECT	$LOCAL,PIC,NOEXE,LONG    	;data area

FIBD:	.LONG	FIB$K_LENGTH			;FIB descriptor, FIB length
	.LONG	FIBL				;Address of FIB block
FIBL:	.BLKB	FIB$K_LENGTH			;FIB block

; *** NMBL:	$NAM					;Name block

; *** Choose one of the versions of logical name prefix below ***

DD:	.LONG	<devn-10$>+4			;Device descriptor
	.LONG	10$				;Address of device name
10$: ;						Define symbol for descriptor
; ***	.ascii	/_/;				Ref actual device
	.ascii	/$255$/;			Ref cluster device
devn:	.ASCII	/DUA0/				;Device name

ICN:	.BLKW	1				;Storage for channel number

ISB:	.BLKL	2				;Storage for I/O status block

; *** FABL:	$FAB	FNA=FN,FNS=18,NAM=NMBL		;FAB block
; *** FN:	.ASCII	/[000000]BITMAP.SYS/		;Storage for filename

.=fibl+fib$W_FID
	.WORD	2,2,0;				File-ID of BITMAP.SYS

	.PSECT	$CODE,PIC,SHR,NOWRT,LONG	;executable section
	.ENTRY	accbitmap,0			;entry mask, regs for MOVC3

	MOVL	@4(AP),devn			;move address of id to R0

; ***	$OPEN	FAB=FABL			;establishes info in FAB block
; ***	BLBc	R0,20$;				exit if error
; ***	MOVW	NMBL+NAM$W_FID,FIBL+FIB$W_FID	;index position
; ***	MOVW	NMBL+NAM$W_FID+2,-		;re-use count
; ***		FIBL+FIB$W_FID+2
; ***	MOVW	NMBL+NAM$W_FID+4,-		;volume set number
; ***		FIBL+FIB$W_FID+4
; ***	$CLOSE	FAB=FABL			;close file
; ***	BLBC	R0,20$				;goto 20$ if close fails

	$ASSIGN_S	DEVNAM=DD,CHAN=ICN	;get I/O channel number
	BLBC	R0,20$				;goto 20$ if assign fails
	MOVZWL	ICN,@8(AP)			;store chan num in its address
	$QIOW_S	CHAN=ICN,FUNC=#io$_access+io$m_access,-
		IOSB=ISB,P1=FIBD;		;access the file on the chan
	BLBC	R0,20$				;goto 20$ if access fails
	MOVZWL	ISB,R0				;move final status to R0

20$:	RET					;ret, final status in R0

	.END;					ACCBITMAP
