.TITLE C2SETB .IDENT /RICE01/ .ENABL LC ; ; CALL C2SETB(LUN,BEGCLIST,ENDCLIST,BEGOPT,ENDOPT) ; C2SETB:: MOV #^RETB,-(SP) ; Set up name for traceback MOV #^RC2S,R4 ; First half of name now JSR R4,NAM$ ; Traceback set up routine MOVB (R5),R3 ; Number of params TST (R5)+ CALL PARGET ; Next parameter BCS 11$ ; Bad params MOV #C2.BHQ,R4 ; C2 que header 1$: MOV (R4),R4 ; Another header? BNE 3$ ; Yes MOV #HEDMSG,R5 BR MESAG 3$: CMPB (R0),BH.QIO+Q.IOLU(R4) ; Does LUN match? BNE 1$ ; Not yet CLR R1 ; Will be mask CALL C2TST ; CLIST valid? BCS 5$ ; No MOV R0,BH.BEG(R4) ; Save begin clist address 5$: CALL C2TST ; CLIST valid? BCS 6$ ; No MOV R0,BH.END(R4) ; Save end clist address 6$: MOV BH.QIO+Q.IOPL+12(R4),R0 ; Crate mask from main clist BIS R0,R1 ; Set main bits also CMP R0,R1 ; Are begin,end CLIST proper BEQ 7$ ; Yes MOV #BUFMSG,R5 ; Message to type BR MESAG ; EXit with error 7$: CALL PARGET ; Next param BCS 10$ MOVB (R0),BH.BFG(R4) ; Begin flag 10$: CALL PARGET ; Next param BCS 11$ MOVB (R0),BH.EFG(R4) ; End flag 11$: RETURN C2TST: CALL PARGET ; Param exists ? BCS 2$ ; No CMP (R0),#104777 ; First word of CLIST correct ? BNE 3$ ; No TST 2(R0) ; Second word OK BNE 3$ ; No TST CL.BSZ(R0) ; Buffer required ? BNE 4$ ; YES, This is an error BIS CL.MSK(R0),R1 ; Composite bit mask CLC ; No errors 2$: RETURN 3$: MOV #CLSMSG,R5 BR MESAG 4$: MOV #BUFMSG,R5 MESAG: CALL MSG JMP BPARM PARGET: DEC R3 ; Param exists ? BLT 2$ ; No MOV (R5)+,R0 ; Parameter CMP R0,#-1 ; Exists BEQ 2$ ; No CLC ; Yes RETURN 2$: SEC RETURN HEDMSG: .WORD 1,HEDM CLSMSG: .WORD 1,CLSM ATTMSG: .WORD 1,ATTM BUFMSG: .WORD 1,BUFM HEDM: .ASCIZ \LUN not set up by C2/C1 set\ CLSM: .ASCIZ /Illegal format for CLIST/ ATTM: .ASCIZ \Illegal crates in CLIST\ BUFM: .ASCIZ \Buffer required for CLIST\ .END