	.TITLE LATDIS
	.IDENT /041989/



;	Version:
;	File:[22,320]LATDIS.MAC
;	Author: Peter Stadick 
;	History: 
;
;	Last Edit: 19-APR-1989 09:57:27 
; 

.REM |

Procedure LATCON(LUN:Integer;
                 EFN:Event_Flag
		);EXTERNAL;

{*USER*
Pascal-3 procedure to dissconnect a session and detach the lun.
The lun must first be assigned and attached before you exicute the
routine.


This procedure will perform the following operation.
- exicute a IO.HNG
- exicute a IO.DET

LUN is the logical unit number to be assigned to the appropriate device.  

EFN is the event flag to be set when the I/O is completed. f0 may 
not be specified. 

Directive status is available in $DSW on return.

} 
|

;
; Assemble with PASMAC.MAC as prefix file.
;
; Thanks to Frank S. for the idea and the Pascal-1 version, which I 
; brazenly plagiarized. Same here - P. Stadick.
;
         .MCALL  QIOW$S

	PROC  LATDIS
	PARAM LUN, INTEGER
	PARAM EFN, SCALAR
	SAVE <R0, R1, R2, R3, R4, R5 >
	BEGIN
	MOV SP,R0			;PRESERVE SP

; HANG UP LUN
        MOV #IO.HNG,R1			;HANG UP FUNCTION CODE IN R1
	MOVB EFN(0),R2			;EFN PARAM IS A BYTE, MUST CLEAN IT UP
	BIC #^C^O377,R2			;MAKE IT AN UNSIGNED WORD
  	BNE 3$				
	MOV #IE.IEF, $DSW		;MUST SUPPLY EVENT FLAG
	BR XT				;BRANCH IF ERROR
3$:     QIOW$S  R1,LUN(0),R2,,,,<,,#0>
	TST $DSW
	BMI XT

; DETACH LUN
        MOV #IO.DET,R1			;DETACH FUNCTION CODE IN R1
	QIOW$S  R1,LUN(0),R2,,,,<,,#0>

XT:
	ENDPR
	.END
