.TITLE RDEVTS ; ; FORTRAN CALLABLE SUBROUTINE TO READ TASK EVENTS ; ; CALL RDEVTS(ISTAT,NTDB) ; ; ISTAT - STATUS ; ISTAT IS SET TO CONTAIN THE FLAGS BYTE FROM LOCATION ; T.EVNT CODED AS FOLLOWS: ; BIT 0 - IF.JS -- SUBTASK SUCCESSFULLY TERMINATED ; BIT 1 - IF.JA -- TASK ABORTED ; BIT 2 - IF.NL -- LOAD FAILURE ; BIT 3 - IF.SU -- SUBTASK SUSPENDED ITSELF ; BIT 4 - IF.CH -- TERMINATED AND CHAINED SUCCESSFULLY ; BIT 5 - IF.SD -- SUBTASK HAS SENT A MESSAGE ; ; NTDB - ORDINAL NUMBER OF SUBTASK ; .PSECT SUBTAS,RO,I,LCL,REL,CON ; RDEVTS:: MOVB (R5)+,R2 ;NUMBER OF ARGS BLE 100$ INC R5 MOV (R5)+,R1 ;ADDRESS OF ISTAT CMP #2,R2 ;TWO ARGS? BGT 20$ ;NO--USE DEFAULT MOV (R5)+,R3 ;NTDB ADDRESS BLE 20$ ;N.G.--DEFAULT MOV (R3),R3 ;NTDB CMP #MAXTD,R3 ;IN RANGE? BLT 20$ ;NO--DEFAULT SUB #1,R3 ASL R3 ;WORD OFFSET BR 21$ 20$: CLR R3 ;DEFAULT 21$: MOV TDB(R3),R3 RDEV$T R3 BCC 101$ JSR PC,ERRTS ;CALL ERROR ROUTINE IF NECESSARY RETURN 101$: MOVB T.EVNT(R3),R2 ;GET FLAGS BYTE CLR (R1) BITB #IF.JS,R2 BEQ 1$ ADD #1,(R1) 1$: BITB #IF.JA,R2 BEQ 2$ ADD #2,(R1) 2$: BITB #IF.NL,R2 BEQ 3$ ADD #4,(R1) 3$: BITB #IF.SU,R2 BEQ 4$ ADD #10,(R1) 4$: BITB #IF.CH,R2 BEQ 5$ ADD #20,(R1) 5$: BITB #IF.SD,R2 BEQ 99$ ADD #40,(R1) BR 99$ 99$: MOV #1,R0 ;SUCCESS INDICATOR RETURN 100$: MOV #-1,R0 ;INVALID ARGUMENTS RETURN .END