change to use new thread library
diff --git a/src/cmd/samterm/io.c b/src/cmd/samterm/io.c
index 32cd413..e26d100 100644
--- a/src/cmd/samterm/io.c
+++ b/src/cmd/samterm/io.c
@@ -96,13 +96,6 @@
 	ulong type;
 
 again:
-
-	alts[RPlumb].c = plumbc;
-	alts[RPlumb].v = &i;
-	alts[RPlumb].op = CHANRCV;
-	if((block & (1<<RPlumb)) || plumbc == nil)
-		alts[RPlumb].op = CHANNOP;
-
 	alts[RHost].c = hostc;
 	alts[RHost].v = &i;
 	alts[RHost].op = CHANRCV;
@@ -121,12 +114,25 @@
 	if(block & (1<<RMouse))
 		alts[RMouse].op = CHANNOP;
 
+	alts[RPlumb].c = plumbc;
+	alts[RPlumb].v = &i;
+	alts[RPlumb].op = CHANRCV;
+	if((block & (1<<RPlumb)) || plumbc == nil)
+		alts[RPlumb].op = CHANNOP;
+
 	alts[RResize].c = mousectl->resizec;
 	alts[RResize].v = nil;
 	alts[RResize].op = CHANRCV;
 	if(block & (1<<RResize))
 		alts[RResize].op = CHANNOP;
 
+if(0) print("waitforio %c%c%c%c%c\n",
+	"h-"[alts[RHost].op == CHANNOP],
+	"k-"[alts[RKeyboard].op == CHANNOP],
+	"m-"[alts[RMouse].op == CHANNOP],
+	"p-"[alts[RPlumb].op == CHANNOP],
+	"R-"[alts[RResize].op == CHANNOP]);
+
 	alts[NRes].op = CHANEND;
 
 	if(got & ~block)
@@ -135,6 +141,7 @@
 	type = alt(alts);
 	switch(type){
 	case RHost:
+		if(0) print("hostalt recv %d %d\n", i, hostbuf[i].n);
 		hostp = hostbuf[i].data;
 		hoststop = hostbuf[i].data + hostbuf[i].n;
 		block = 0;
diff --git a/src/cmd/samterm/mesg.c b/src/cmd/samterm/mesg.c
index 2052843..ea47a1c 100644
--- a/src/cmd/samterm/mesg.c
+++ b/src/cmd/samterm/mesg.c
@@ -38,7 +38,9 @@
 	static int i = 0;
 	static int errs = 0;
 
-	while((c=rcvchar()) != -1)
+if(0) print("rcv in\n");
+	while((c=rcvchar()) != -1){
+if(0) print(".");
 		switch(state){
 		case 0:
 			h.type = c;
@@ -79,6 +81,10 @@
 			}
 			break;
 		}
+if(0) print(":");
+	}
+
+if(0) print("rcv out\n");
 }
 
 Text *
diff --git a/src/cmd/samterm/plan9.c b/src/cmd/samterm/plan9.c
index 4d58c60..b685258 100644
--- a/src/cmd/samterm/plan9.c
+++ b/src/cmd/samterm/plan9.c
@@ -112,11 +112,11 @@
 	c = arg[0];
 	fd = (int)arg[1];
 
-	threadfdnoblock(fd);
 	i = 0;
 	for(;;){
 		i = 1-i;	/* toggle */
-		n = threadread(fd, plumbbuf[i].data, sizeof plumbbuf[i].data);
+		n = read(fd, plumbbuf[i].data, sizeof plumbbuf[i].data);
+if(0) fprint(2, "ext %d\n", n);
 		if(n <= 0){
 			fprint(2, "samterm: extern read error: %r\n");
 			threadexits("extern");	/* not a fatal error */
@@ -177,9 +177,10 @@
 	}
 
 	plumbc = chancreate(sizeof(int), 0);
+	chansetname(plumbc, "plumbc");
 	arg[0] = plumbc;
 	arg[1] = (void*)fd;
-	threadcreate(extproc, arg, STACK);
+	proccreate(extproc, arg, STACK);
 	atexit(removeextern);
 }
 
@@ -255,6 +256,7 @@
 	if(fid == nil)
 		return -1;
 	plumbc = chancreate(sizeof(int), 0);
+	chansetname(plumbc, "plumbc");
 	if(plumbc == nil){
 		fsclose(fid);
 		return -1;
@@ -272,16 +274,17 @@
 	c = arg;
 
 	i = 0;
-	threadfdnoblock(hostfd[0]);
 	for(;;){
 		i = 1-i;	/* toggle */
-		n = threadread(hostfd[0], hostbuf[i].data, sizeof hostbuf[i].data);
+		n = read(hostfd[0], hostbuf[i].data, sizeof hostbuf[i].data);
+if(0) fprint(2, "hostproc %d\n", n);
 		if(n <= 0){
 			fprint(2, "samterm: host read error: %r\n");
 			threadexitsall("host");
 		}
 		hostbuf[i].n = n;
 		which = i;
+if(0) fprint(2, "hostproc send %d\n", which);
 		send(c, &which);
 	}
 }
@@ -290,5 +293,6 @@
 hoststart(void)
 {
 	hostc = chancreate(sizeof(int), 0);
-	threadcreate(hostproc, hostc, STACK);
+	chansetname(hostc, "hostc");
+	proccreate(hostproc, hostc, STACK);
 }