.TITLE VRCS Receive Data or Stop .IDENT "V42.2" .ENABL LC .PSECT C$CODE ;+ ; Index VRCS Receive Data or Stop ; ; Usage ; ; #include ; #define BUFWDS ??? /* number of words in buffer */ ; rad50 sentsk[2]; /* 2 word RAD50 task name */ ; word buffer[BUFWDS]; /* Received data packet */ ; word status; /* Returned DSW */ ; word bufwds; /* number of words in buffer */ ; ; bufwds = BUFWDS; ; status = vrcs(sentsk, buffer, bufwds); ; ; Notes ; ; The first 2 words of the 'buffer' will contain the sender ; task name. ; ; To receive data from any task, 'tsknam' must be ; a NULL pointer. ; ; [end] ;- ; Edits: ; V42.1 26-Sep-84 DLE Initial Edit ; V42.2 26-Sep-84 DLE replace two vrcs$s macro expansions ; with my own code to build dpb ; vrcs:: mov sp,r0 ;save arg frame pointer clr r2 ; a source of nothing mov r2,-(sp) ; TI mov 6(r0),-(sp) ; BL mov 4(r0),-(sp) ; BA mov 2(r0),r1 ; (r1) = [task name in rad50] beq 10$ ; branch if we don't care about task mov 2(r1),-(sp) ; TN mov @r1,-(sp) ; TN br 20$ ; 10$: ; we don't care about task name ; (r1) = 0 mov r1,-(sp) ; mov r1,-(sp) ; 20$: ; all of dpb on stack except d. code mov (pc)+,-(sp) ; mydic: .byte 139.,6. ; vrcs emt 377 ; DIR$ mov $dsw,r0 ;return DSW return .end