Index: example/io/tty-echo.cfa
===================================================================
--- example/io/tty-echo.cfa	(revision 72f246d408ea0e0c68609259da00de101752be1d)
+++ example/io/tty-echo.cfa	(revision 72f246d408ea0e0c68609259da00de101752be1d)
@@ -0,0 +1,63 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2020 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// io.cfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Feb 18 20:31:00 2021
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#include <fstream.hfa>
+#include <iofwd.hfa>
+#include <time.hfa>
+#include <thread.hfa>
+
+thread EchoThread {};
+void main(EchoThread & this) {
+	char buffer[100];
+	for() {
+		int ret = cfa_read(0, buffer + 1, 97, 0);
+		if(ret < 0) {
+			serr | "Failed to read from fd 0";
+			exit(1);
+		}
+		if(ret == 0) return;
+		buffer[0]     = '\'';
+		buffer[ret]   = '\'';
+		buffer[ret+1] = '\n';
+		ret = cfa_write(1, buffer, ret + 2, 0);
+		if(ret < 0) {
+			serr | "Failed to write from fd 1 (ET)";
+			exit(1);
+		}
+	}
+}
+
+thread HeartBeatThread {};
+void main(HeartBeatThread & this) {
+	for() {
+		waitfor( ^?{} : this) {
+			return;
+		}
+		or else;
+		int ret = cfa_write(1, ".", 1, 0);
+		if(ret < 0) {
+			serr | "Failed to write from fd 1 (ET)";
+			exit(1);
+		}
+		sleep(5`s);
+	}
+}
+
+int main() {
+	HeartBeatThread hb;
+	{
+		EchoThread et;
+	}
+}
