|
@@ -0,0 +1,32 @@
|
|
|
+.define _send, _receive, _sendrec
|
|
|
+.globl _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.
|
|
|
+
|
|
|
+_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
|
|
|
+
|