.TITLE TRIGER- ENABLE/DISABLE/TRIGGER EVENT .IDENT /31MAY7/ ;15:00:00, EM ; .ENTRY TRIGER - ENABLE/DISABLE/TRIGGER EVENT ;+ ; T R I G E R ; ; PURPOSE: TO ENABLE, DISABLE AND TRIGGER A SPECIFIED ; EVENT IN LAMPF TRIGER MODULE. ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL TRIGER (LUN,NEVENT,IOP,IOST) ; ; INPUT: LUN (INTEGER) =LOGICAL UNIT ALREADY ASSIGNED TO CC3 ; NEVENT (INTEGER)=EVENT NUMBER ; IOP (INTEGER) =OPERATION CODE ; 4=ENABLE ; 2=TRIGGER ; 1=DISABLE ; IOST (INTEGER) =I/O STATUS RETURNED BY CC DRIVER ; ; METHOD: THE OPERATION CODES MAY BE COMBINED. THEY WILL ; BE PERFORMED IN THE ORDER ENABLE, TRIGGER, ; DISABLE. THIS SUBROUTINE USES EVENT FLAG 24 ; TO DETECT I/O COMPLETION. ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: ANY TASK LINKED TO THIS SUBROUTINE MUST ALSO BE ; LINKED TO QCOM1 SO THAT THIS ROUTINE CAN ; DETERMINE THE TRIGGER MODULE LOCATION. ;- ; REVISIONS: ; 08-JUN-76 SS WRITTEN ; 17-SEP-76 SS MAKE RSX-11M COMPATIBLE ; 26-JAN-77 NS CHANGE WTSE$C TO WTSE$ TO ENABLE ; FILE TO ASSEMBLE WITH PREFIX FILE ; WITHOUT GETTING SYMBOL TABLE OVERFLOW. ; (REASON WHY THIS HELPS UNKNOWN.) ; 31-MAY-77 EM UPDATED TO CONFORM TO STANDARDS ; ; MACRO CALLS ; .MCALL CMDBLK,PUSH,POP,RETURN .MCALL DIR$,QIO$,WTSE$ TRIGER::MOV R0,-(SP) MOV @2(R5),QIODPB+Q.IOLU ;SET LUN IN QIO DPB MOV QQC,R0 ;SET UP FCNA'S NEEDED ASH #5,R0 ;SHIFT CRATE NUMBER INTO POSITION ADD QQN,R0 ASH #4,R0 BIS #100000,R0 ;(R0)=F16-C-N-A0 MOV R0,TFCNA ;SET FCNA TO CAUSE TRIGGER ADD #2,R0 ;(R0)=F16-C-N-A2 MOV R0,EFCNA ;SET FCNA TO ENABLE EVENT INC R0 ;(R0)=F16-C-N-A3 MOV R0,DFCNA ;SET FCNA TO DISABLE EVENT MOV @4(R5),DATBUF ;FILL DATA BUFFER WITH EVENT NO. MOV @4(R5),DATBUF+2 MOV @4(R5),DATBUF+4 MOV #FCNBUF,R0 ;POINT TO FCNA LIST BIT #4,@6(R5) ;WANT AN ENABLE? BEQ 10$ ;BRANCH IF NOT MOV EFCNA,(R0)+ 10$: BIT #2,@6(R5) ;WANT A TRIGGER? BEQ 20$ ;BRANCH IF NOT MOV TFCNA,(R0)+ 20$: BIT #1,@6(R5) ;WANT A DISABLE? BEQ 30$ ;BRANCH IF NOT MOV DFCNA,(R0)+ 30$: CLR (R0)+ ;END THE FCNA LIST DIR$ #QIODPB ;DO THE QIO BCC 40$ ;BRANCH IF DIRECTIVE SUCCESSFULL HALT ;HANDLER MUST NOT BE RESIDENT- ; CAUSE A FAULT 40$: DIR$ #WTDPB ;WAIT FOR COMPLETE MOVB IOST,R0 ;GET STATUS, EXTEND SIGN MOV R0,@10(R5) ;RETURN STATUS TO CALLER MOV (SP)+,R0 RETURN ; COMMAND BLOCK TO EXECUTE TRIGGER MODULE OPERATIONS W16=3 CMDB: CMDBLK W16,DATBUF,3,FCNBUF,0 ;CHECK THIS ; DATA BUFFER DATBUF: .WORD 0,0,0 ; FCNA LIST FCNBUF: .WORD 0,0,0,0 ; DPB FOR QIO QIODPB: QIO$ IO.RLB,0,24.,,IOST,, ;DPB FOR WAIT SINGLE EVENT FLAG WTDPB: WTSE$ 24. ; IOST: 0,0 ;I/O STATUS DFCNA: 0 TFCNA: 0 EFCNA: 0 ; .END