.TITLE WTQIO .IDENT /21JAN7/ ;21-JAN-77 ; AUTHOR: NANCY SPENCER ; SYSTEM: RSX-11 ; DATE: JANUARY 1977 ; REVISION RECORD: ; 21-JAN-77 CHECK FOR OPTIONAL ARGUMENTS (N.S.) ; ; THIS SUBROUTINE PERFORMS A QUEUE I/O AND THEN A WAIT ; FOR THE SPECIFIED EVENT FLAG. ALL OTHER ACTIONS ; ARE THE SAME AS FOR BOTH QIO AND WAIT. ; IT IS PROVIDED FOR RSX-11M-D COMPATIBILITY UNTIL ; RSX-11M SUPPORTS THIS DIRECTIVE AND PROVIDES THE ; APPROPRIATE FORTRAN CALLABLE SUBROUTINE. ; ; CALLING SEQUENCE: CALL WTQIO(IFNC,ILUN,[IEFN],[IPRI],[ISTAT],[IPRM],[ISW]) ; ARGUMENT DESCRIPTIONS: ; IFNC INTEGER SPECIFYING THE DEVICE FUNCTION CODE ; ILUN INTEGER SPECIFYING DEVICE LOGICAL UNIT NUMBER ; IEFN INTEGER SPECIFYING EVENT FLAG NUMBER ; IPRI INTEGER SPECIFYING QIO REQUEST PRIORITY ; ISTAT 2-WORD INTEGER ARRAY TO RECEIVE DEVICE STATUS ; IPRM 6-WORD INTEGER ARRAY CONTAINING DEVICE ; DEPENDENT PARAMETERS TO BE PLACED IN PARAMETER ; WORDS 1-6 OF THE DPB ; ISW INTEGER VARIABLE TO RECEIVE DIRECTIVE STATUS ; .GLOBL WTQIO .MCALL DIR$,QIO$,WTSE$ WTQIO:: CMPB (R5),#2 ;ARE THERE AT LEAST 2 ARGS? BLT 200$ ;NO-RETURN MOV @2(R5),DPB+Q.IOFN ;PUT FUNCTION CODE IN DPB MOV @4(R5),DPB+Q.IOLU ;PUT LOGICAL UNIT # IN DPB ; THE REST OF THE ARGUMENTS ARE OPTIONAL, ; CHECK IF THEY EXIST BEFORE MOVING TO DPB CMPB (R5),#2 ;ARE THEREE ONLY 2 ARGS? BEQ 50$ ;YES CMP 6(R5),#-1 ;CHECK IF EVENT FLAG SPECIFIED BEQ 10$ ;NO MOVB @6(R5),DPB+Q.IOEF ;PUT EVENT FLAG IN DPB 10$: CMPB (R5),#3 ;ARE THERE ONLY 3 ARGS? BEQ 50$ ;YES CMP 10(R5),#-1 ;CHECK IF PRIORITY SPECIFIED BEQ 20$ ;NO MOVB @10(R5),DPB+Q.IOPR ;PUT PRIORITY IN DPB 20$: CMPB (R5),#4 ;ARE THERE ONLY 4 ARGS? BEQ 50$ ;YES CMP 12(R5),#-1 ;CHECK IF STATUS BLOCK SPECIFIED BEQ 30$ ;NO MOV 12(R5),DPB+Q.IOSB ;PUT ADDRESS OF I/O STATUS BLOCK IN DPB 30$: CMPB (R5),#5 ;ARE THERE ONLY 5 ARGS? BEQ 50$ ;YES CMP 14(R5),#-1 ;CHECK IF ADDRESS OF PARAMETER LIST SPECIFIED BEQ 50$ ;NO MOV 14(R5),R0 ;GET ADDRESS OF FIRST PARAMETER MOV #6,R1 ;6 PARAMETERS MOV #DPB+Q.IOPL,R2 ;GET ADDRESS OF PARAMETER BLOCK IN DPB 40$: MOV (R0)+,(R2)+ ;MOVE THE PARAMETER TO DPB SOB R1,40$ ;LOOP FOR ALL PARAMETERS 50$: DIR$ #DPB ;ISSUE THE WIO TST $DSW ;CHECK IF DIRECTIVE SUCCEEDED BMI 100$ ;NO ; QIO SUCCEEDED - WAS AN EVENT FLAG SPECIFIED CMPB (R5),#3 ;WERE THERE AT LEAST 3 ARGS? BLT 100$ ;NO CMP 6(R5),#-1 BEQ 100$ ;NO MOV @6(R5),WTDPB+W.TSEF ;PUT EVENT FLAG IN DPB DIR$ #WTDPB ;ISSUE THE WAIT FOR SINGLE EVENT FLAG ; RETURN DSW IF REQUESTED 100$: CMPB (R5),#7 ;WERE THERE 7 ARGUMENTS? BNE 200$ ;NO CMP 16(R5),#-1 ;DSW REQUESTED? BEQ 200$ ;NO MOV $DSW,@16(R5) ;RETURN DSW 200$: RTS PC ;RETURN ; DPB: QIO$ ,,,,,,<,,,,,> ;QIO DIRECTIVE WTDPB: WTSE$ 0 ;WAIT FOR SINGLE EVENT FLAG .END