.TITLE MNTDEV - MOUNT/DISMOUNT A DEVICE .IDENT /22JUN7/ ;14:55:00, LV ; .ENTRY MNTDEV - MOUNT/DISMOUNT A DEVICE ;+ ; M N T D E V / D M T D E V ; ; PURPOSE: THIS SUBROUTINE IS USED TO MOUNT OR DISMOUNT A DEVICE. ; IT HAS TWO ENTRY POINTS: ; MNTDEV IS USED TO MOUNT A DEVICE FROM A TASK ; DMTDEV IS USED TO DISMOUNT A DEVICE ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL MNTDEV(ARG1,ARG2,IER) ; CALL DMTDEV(ARG1,ARG2,IER) ; ; INPUT: ARG1 = 2 ASCII CHARACTERS OF DEVICE ; ARG2 = UNIT NUMBER ; IER = 0 ; ; METHOD: CONTROL IS RETURNED AFTER COMPLETION OF MCR FUNCTION. ; DEVICE IS MOUNTED WITH /CHA=[FOR,ATCH,DCF] ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: THERE IS NO CHECK FOR ITS SUCCESS. ; TASK MCRREQ MUST BE INSTALLED IN THE SYSTEM. ; THIS ROUTINE IS NOT USABLE UNDER RSX-11M. ;- ; REVISIONS: ; 31-MAR-76 MK CORRECT ARGUMENT PICKUP ; 02-JUN-77 LV UPDATED TO CONFORM TO STANDARDS ; ; .MCALL DIR$,SPND$S,VSDR$,VRCD$ MNTDEV:: MOV R0,-(SP) CLR R0 ;FLAG MOUNT ENTRY BR COM1 DMTDEV:: MOV R0,-(SP) MOV #2,R0 ;FLAG DISMOUNT ENTRY COM1: MOV R1,-(SP) JSR PC,GETARG ;GET ARGUMENTS BCS OUTER MOV REQ(R0),REQST+2 REQST: DIR$ #MOU ;REQUEST MCRREQ BCS ERR1 SPND$S ;WAIT FOR COMPLETION DIR$ #REC ;RECEIVE COMPLETION CODE BCS ERR2 TST CODE BPL OK ;BRANCH IF COMPLETION OK BR ERR3 OK: CLR @EROR OUT: MOV (SP)+,R1 MOV (SP)+,R0 RTS PC ; ERR1: MOV #1,R1 BR COM2 ERR2: MOV #2,R1 BR COM2 ERR3: MOV #3,R1 COM2: JSR PC,EROUT OUTER: MOV #1,@EROR BR OUT ; .PAGE ; GETARG: GET ARGUMENTS OF CALL ; ; GETARG SETS UP THE ARGUMENTS FROM THE CALLING PROGRAM, SUPPLYING ; DEFAULTS WHEN NECESSARY. IF THE FIRST ARGUMENT (DEVICE NAME) IS ; MISSING, IT RETURNS WITH C SET. R1 IS DESTROYED. ; GETARG: MOV #ER,EROR ; TSTB (R5) BEQ 4$ MOV 2(R5),R1 CMP R1,#-1 BEQ 4$ MOV (R1),DEVM MOV (R1),DEVD ; CMPB (R5),#1 BEQ 1$ CMP 4(R5),#-1 BEQ 1$ MOV @4(R5),R1 BR 2$ 1$: CLR R1 2$: ADD #60,R1 MOVB R1,UNITM MOVB R1,UNITD ; CMPB (R5),#3 BNE 5$ CMP 6(R5),#-1 BEQ 5$ MOV 6(R5),EROR ; 5$: CLC RTS PC 4$: SEC RTS PC EROR: .WORD ER ER: .WORD 0 .PAGE REQ: .WORD MOU,DMO ; MOU: VSDR$ MCRREQ,,,,,BUF,SIZE-BUF/2 BUF: .WORD 1 ;WAIT .RAD50 /MOU/ .WORD END-RF RF: .ASCII /MOU / DEVM: .ASCII /DV/ UNITM: .ASCII #0:/CHA=[FOR,ATCH,DCF]# .BYTE 33 ;ALTMODE END=. .EVEN SIZE=. DMO: VSDR$ MCRREQ,,,,,BUF2,SIZE2-BUF2/2 BUF2: .WORD 1 .RAD50 /DMO/ .WORD END2-RF2 RF2: .ASCII /DMO / DEVD: .ASCII /DV/ UNITD: .ASCII /0:/ .BYTE 33 END2=. .EVEN SIZE2=. REC: VRCD$ MCRREQ,CBUF,1 CBUF: .BLKW 3 CODE=CBUF+4 .END