.TITLE ATTACH - ATTACH/DETACH UNIT TO/FROM A TASK .IDENT /14APR7/ ;11:45:00 LV ; .ENTRY ATTACH - ATTACH/DETACH UNIT TO/FROM A TASK ;+ ; A T T A C H / D E T A C H ; ; PURPOSE: ATTACH/DETACH UNIT TO/FROM A TASK ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL ATTACH(LUN[,IOSTAT]) ; CALL DETACH(LUN[,IOSTAT]) ; ; INPUT: LUN(INTEGER) = LOGICAL UNIT NUMBER ; ; OUTPUT: IOSTAT(INTEGER) = OPTIONAL VARIABLE RETURNED AS ; NEGATIVE IF OPERATION WAS NOT ; PERFORMED BY SYSTEM ; ; THESE SUBROUTINES USE EVENT FLAG 24. TO ; DETECT I/O COMPLETION. ; ; LANGUAGE: MACRO-11 ; ; REFERENCES: CHECK "EXECUTIVE REFERENCE MANUAL" FOR STANDARD ; ERROR CODES. ; ; ;- ; REVISIONS: ; 10-SEP-76 SS DO NOT WAIT FOR I/O COMPLETE IF QIO FAILS; ; DO NOT USE SPECIAL MACROS ; 14-APR-77 LV UPDATED TO CONFORM TO STANDARDS ; .MCALL WTSE$C,DIR$,QIO$,RETURN ; EF=24. ; EVENT FLAG FOR I/O ; ATTACH::MOV #IO.ATT,QIO+Q.IOFN ; SET UP ATTACH FUNCTION BR DOIT ; BRANCH TO COMMON CODE DETACH::MOV #IO.DET,QIO+Q.IOFN ; SET UP DETACH FUNCTION ; ; COMMON CODE FOR ATTACH/DETACH ; DOIT: MOV @2(R5),QIO+Q.IOLU ; TRANSFER LUN DIR$ #QIO ; ISSUE DIRECTIVE AND BCC 20$ MOV $DSW,IOST BR L1 20$: WTSE$C EF ; WAIT TILL FLAG IS SET L1: CMPB (R5),#2 ; TEST FOR 2 ARGS BLT $1 ; NO, RETURN CMP 4(R5),#-1 ; TEST FOR 2 ARGS IN CALL BEQ $1 ; NO, GO AROUND MOV R0,-(SP) ; SAVE R0 MOVB IOST,R0 ; EXTEND STATUS BYTE MOV R0,@4(R5) ; RETURN I/O STATUS MOV (SP)+,R0 ; RESTORE R0 $1: RETURN ; RETURN WHEN DONE QIO: QIO$ ,,EF,,IOST,,<0,0,0,0,0,0> IOST: .WORD 0,0 .END