just what we need - more rpcs
diff --git a/man/man3/drawfcall.3 b/man/man3/drawfcall.3
new file mode 100644
index 0000000..c22fe74
--- /dev/null
+++ b/man/man3/drawfcall.3
@@ -0,0 +1,53 @@
+.TH DRAWFCALL
+.SH NAME
+convM2W, convW2M, drawfcallfmt, readwsysmsg, sizeW2M \- window system protocol
+.SH SYNOPSIS
+.nf
+.PP
+.ft L
+#include <u.h>
+#include <libc.h>
+#include <draw.h>
+#include <mouse.h>
+#include <cursor.h>
+#include <drawfcall.h>
+.ft P
+.ta \w'\fLuint 'u
+.PP
+.B
+uint	convM2W(uchar *ap, uint nap, Wsysmsg *w)
+.PP
+.B
+uint	convW2M(Wsysmsg *w, uchar *ap, uint nap)
+.PP
+.B
+int	drawfcallfmt(Fmt*)
+.PP
+.B
+int	readwsysmsg(int fd, uchar *buf, uint nbuf)
+.PP
+.B
+uint	sizeW2M(Wsysmsg *w)
+.SH DESCRIPTION
+These routines are analogues of the routines described in 
+.IR fcall (3).
+They manipulate graphics device protocol messages
+rather than 9P protocol messages.
+The graphics device protocol is used for internal 
+communication between the
+.IR devdraw (1)
+graphics server
+and the
+.IR draw (3)
+library.
+A
+.B Wsysmsg
+is the C structure corresponding to a protocol message.
+.PP
+The protocol is intentionally undocumented and may change.
+.SH SOURCE
+.B \*9/src/libdraw/drawfcall.c
+.SH SEE ALSO
+.IR devdraw (1),
+.IR draw (3),
+.IR graphics (3)
diff --git a/man/man3/event.3 b/man/man3/event.3
index 1a36538..5991a17 100644
--- a/man/man3/event.3
+++ b/man/man3/event.3
@@ -382,8 +382,3 @@
 .IR plumb (3),
 .\" .IR cons (3),
 .IR draw (3)
-.SH BUGS
-.I Etimer
-and
-.I estart
-are unimplemented.
diff --git a/man/man3/memdraw.3 b/man/man3/memdraw.3
index ec299a2..3f6c483 100644
--- a/man/man3/memdraw.3
+++ b/man/man3/memdraw.3
@@ -433,7 +433,7 @@
 .I iprint
 prints to a serial line rather than the screen, for obvious reasons.
 .SH SOURCE
-.B \*9/src/libdraw
+.B \*9/src/libmemdraw
 .SH SEE ALSO
 .IR addpt (3),
 .IR color (3),
@@ -448,7 +448,3 @@
 .I Memimagestring
 is unusual in using a subfont rather than a font,
 and in having no parameter to align the source.
-.PP
-These functions are 
-archived into
-.IR libdraw .
diff --git a/man/man3/memlayer.3 b/man/man3/memlayer.3
index da1d025..a40efdc 100644
--- a/man/man3/memlayer.3
+++ b/man/man3/memlayer.3
@@ -296,14 +296,10 @@
 (see
 .IR image (7)).
 .SH SOURCE
-.B \*9/src/libdraw
+.B \*9/src/libmemlayer
 .SH SEE ALSO
 .IR graphics (3),
 .IR memdraw (3),
 .IR stringsize (3),
 .IR window (3),
 .IR draw (3)
-.SH BUGS
-These functions
-are archived into
-.IR libdraw .
diff --git a/man/man3/mux.3 b/man/man3/mux.3
index f83da56..caaf55f 100644
--- a/man/man3/mux.3
+++ b/man/man3/mux.3
@@ -16,6 +16,7 @@
 	int (*gettag)(Mux *mux, void *msg);
 	int (*send)(Mux *mux, void *msg);
 	void *(*recv)(Mux *mux);
+	void *(*nbrecv)(Mux *mux);
 	void *aux;
 
 	\&...   /* private fields follow */
@@ -30,6 +31,12 @@
 .PP
 .B
 void	muxprocs(Mux *mux);
+.PP
+.B
+Muxrpc*	muxrpcstart(Mux *mux, void *request);
+.PP
+.B
+void*	muxrpccanfinish(Muxrpc *rpc);
 .SH DESCRIPTION
 .I Libmux
 is a generic protocol multiplexor.
@@ -79,14 +86,19 @@
 .I settag\fR, \fPgettag
 Set or get the tag value in a message.
 .TP
-.I send\fR, \fPrecv
+.I send\fR, \fPrecv\fR, \fPnbrecv
 Send or receive protocol messages on the connection.
 .I Recv
 should block until a message is available and
 should return nil if the connection is closed.
+.I Nbrecv
+should not block; it returns nil if there is no
+message available to be read.
 .I Libmux
 will arrange that only one call to
 .I recv
+or
+.I nbrecv
 is active at a time.
 .TP
 .I aux
@@ -130,6 +142,28 @@
 blocks an entire proc
 and there are other threads in the calling proc
 that need to remain active.
+.PP
+.I Libmux
+also provides a non-blocking interface, useful for programs forced
+to use a
+.IR select (2)-based
+main loop.
+.I Muxrpcstart
+runs the first half of
+.IR muxrpc :
+it assigns a tag and sends the request,
+but does not wait for the reply.
+Instead it returns a pointer to a
+.B Muxrpc
+structure that represents the in-progress call.
+.I Muxrpccanfinish
+checks whether the given call
+can finish.
+If no mux procs have been started,
+.I muxrpccanfinish
+may call
+.I nbrecv
+to poll for newly arrived responses.
 .SH EXAMPLE
 See
 .B \*9/src/lib9pclient/fs.c