.TITLE EMSTR .MCALL DIR$,EMST$,RCVD$S,SETF$S BUF: .BLKW 15. EMIT: EMST$ ,-1 START: RCVD$S ,#BUF ;Get connect task name BCS START ; loop till received MOV BUF+0,EMIT+E.MSTN+0 ;Store for emit MOV BUF+2,EMIT+E.MSTN+2 ; ... SETF$S #34. ;Set we are started LOOP: DIR$ #EMIT ;Emit status BR LOOP ; and loop .END START .TITLE EXITR .MCALL EXIT$S START: EXIT$S ;Exit task .END START .TITLE RCVDA .MCALL RCVD$S,SRDA$S,SETF$S,WTSE$S,ASTX$S BUF: .BLKW 15. ;Message buffer START: SRDA$S #AST ;Specify AST SETF$S #34. ;Set we are started WTSE$S #1. ;Wait forever AST: RCVD$S ,#BUF ;Read message BCC AST ; loop till no more ASTX$S ;Exit AST .END START .TITLE RCVDE .MCALL RCVD$S,SETF$S,WTSE$S,CLEF$S BUF: .BLKW 15. ;Message buffer START: SETF$S #34. ;Set we are started LOOP: WTSE$S #33. ;Wait for send signal CLEF$S #33. ;Clear send flag 1000$: RCVD$S ,#BUF ;Read message BCC 1000$ ; loop till no more BR LOOP ;Loop for next message .END START .TITLE RCVDS .MCALL RCST$S,SETF$S BUF: .BLKW 15. ;Message buffer START: SETF$S #34. ;Set we are started LOOP: RCST$S ,#BUF ;Read message BR LOOP ;Loop for next message .END START .TITLE RCVDX .MCALL RCVX$S BUF: .BLKW 15. ;Message buffer START: RCVX$S ,#BUF ;Read message and exit BR START ;Loop for next message .END START .TITLE RREFR .MCALL ASTX$S,RREF$S,DTRG$S,SRRA$S,SETF$S,WTSE$S WDB: .BLKW 8. ;Window block RDB: .BLKW 8. ;Region block START: SRRA$S #AST ;Declare AST SETF$S #34. ;Set we are started LOOP: WTSE$S #1. ;Wait forever AST: RREF$S #WDB ;Read message BCS 9999$ ; If CS - no message MOV WDB+W.NRID,RDB+R.GID ;Copy region ID DTRG$S #RDB ;Detach region BR AST ; and try again 9999$: ASTX$S .END START .TITLE RRSTR .MCALL RRST$S,DTRG$S,SETF$S WDB: .BLKW 8. ;Window block RDB: .BLKW 8. ;Region block START: SETF$S #34. ;Set we are started LOOP: RRST$S #WDB ;Read message BCS LOOP ; If CS - no message MOV WDB+W.NRID,RDB+R.GID DTRG$S #RDB ;Detach region BR LOOP ; and try again .END START .TITLE SPNDR .MCALL SPND$S,SETF$S START: SETF$S #34. ;Set we are started LOOP: SPND$S ;Suspend ourselves BR LOOP ; and loop .END START .TITLE STOPR .MCALL STOP$S,SETF$S START: SETF$S #34. ;Set we are started LOOP: STOP$S ;Stop ourselves BR LOOP ; and loop .END START .TITLE VRCDA .MCALL VRCD$S,SRDA$S,SETF$S,WTSE$S,ASTX$S BUF: .BLKW 258. ;Message buffer START: SRDA$S #AST ;Specify AST SETF$S #34. ;Set we are started WTSE$S #1. ;Wait forever AST: VRCD$S ,#BUF,#256. ;Read message BCC AST ; loop till no more ASTX$S ;Exit AST .END START .TITLE VRCDE .MCALL VRCD$S,SETF$S,WTSE$S,CLEF$S BUF: .BLKW 258. ;Message buffer START: SETF$S #34. ;Set we are started LOOP: WTSE$S #33. ;Wait for send signal CLEF$S #33. ;Clear send flag 1000$: VRCD$S ,#BUF,#256. ;Read message BCC 1000$ ; loop till no more BR LOOP ;Loop for next message .END START .TITLE VRCDS .MCALL VRCS$S,SETF$S BUF: .BLKW 258. ;Message buffer START: SETF$S #34. ;Set we are started LOOP: VRCS$S ,#BUF,#256. ;Read message and stop BR LOOP ;Loop for next message .END START .TITLE VRCDX .MCALL VRCX$S BUF: .BLKW 258. ;Message buffer START: VRCX$S ,#BUF,#256. ;Read message and exit BR START ;Loop for next message .END START .TITLE WSIGR .MCALL WSIG$S,SETF$S START: SETF$S #34. ;Set we are started LOOP: WSIG$S ;Wait ourselves BR LOOP ; and loop .END START