.TITLE CRATT CL.MSK = 8. ; ; CALL CRATT(LUN,ISTAT,IC1,IC2,........ICN) ; ; LUN = LOGICAL UNIT # ; ISTAT = 1 WORD STATUS ; = 1 ATTACHMENT ACCEPTED ; = $DSW + 177400 DIRECTIVE REJECTED ; = IE.ERR ATTACHMENT REJECTED ; IC1...ICN = CRATE # TO ATTACH ALSO ; .MCALL QIOW$S SETUP: MOVB (R5),R0 ;GET NUMBER OF PARAM BLE 10$ ;BAD PARAM LIST DEC R0 ;ARE THERE AT LEAST 2 PARAM? BLE 10$ ;NO TST (R5)+ ;POINTS TO NEXT PARAM MOV @(R5)+,R1 ;LOGICAL UNIT # MOV (R5)+,R4 ;ADDRESS OF I/O STATUS BLOCK MOV #177600,(R4) ;BAD CLIST ERROR CLR R3 ;WILL BE ATTACHMENT MASK RETURN 10$: JMP BPARM ;EXIT WITH ERROR CRATT:: MOV #^RTT ,-(SP) MOV #^RCRA,R4 JSR R4,NAM$ ;SET UP TRACEBACK CALL SETUP 1$: DEC R0 ;MORE PARAMS LEFT? BLE ATTACH ;NO, ATTACH THE CRATES MOV #1,R2 ;BIT TO SHIFT ASH @(R5)+,R2 ;CRATE MASK BIT BIS R2,R3 ;MASK BR 1$ ATTACH: QIOW$S #IO.ATT,R1,#1,,#STAT,, ;ATTACH THE CRATE BCC 6$ ;QIO ACCEPTED MOVB $DSW,STAT ;GET DIRECTIVE STATUS MOVB #377,STAT+1 ;MARK IT 6$: MOV STAT,(R4) ;STATUS TO USER EXIT: RETURN STAT: .BLKW 2 ;WILL BE I/O STATUS ; ; CALL CAMATT(LUN,ISTAT,CLIST1,CLIST2,.......,CLISTN) ; ; LUN,ISTAT = SAME AS FOR CRATT ; CLIST = COMMAND LIST ADDRESS ; ALL CLISTS USED ON THIS CHAN SHOULD BE INCLUDED ; CAMATT:: MOV #^RATT,-(SP) MOV #^RCAM,R4 JSR R4,NAM$ ;SET UP TRACEBACK JSR PC,SETUP 1$: DEC R0 ;COUNTS NUMBER OF CLISTS BLE ATTACH MOV (R5)+,R2 ;GET CLIST CMP (R2),#104777 ;IS FIRST WORD OF CLIST OK? BNE EXIT ;NO TST 2(R2) ;SECON WORD OK? BNE EXIT ;NO BISB CL.MSK(R2),R3 ;ATTACHMENT MASK BR 1$ .END