.sect .text; .sect .rom; .sect .data; .sect .bss
.sect .text
.define __send, __receive, __sendrec

! See ../h/com.h for C definitions
SEND = 1
RECEIVE = 2
BOTH = 3
SYSVEC = 32

!*========================================================================*
!                           _send and _receive                            *
!*========================================================================*
! _send(), _receive(), _sendrec() all save bp, but destroy ax, bx, and cx.
.extern __send, __receive, __sendrec
__send:	mov cx,SEND		! _send(dest, ptr)
	jmp L0

__receive:
	mov cx,RECEIVE		! _receive(src, ptr)
	jmp L0

__sendrec:
	mov cx,BOTH		! _sendrec(srcdest, ptr)
	jmp L0

  L0:	push bp			! save bp
	mov bp,sp		! can't index off sp
	mov ax,4(bp)		! ax = dest-src
	mov bx,6(bp)		! bx = message pointer
	int SYSVEC		! trap to the kernel
	pop bp			! restore bp
	ret			! return