From b96af395b9af2ff9df94b3e82213171f30827c8d Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 5 May 2015 21:17:24 -0700 Subject: 1276 - make C++ version the default I've tried to update the Readme, but there are at least a couple of issues. --- arc/buffered-stdin.mu | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 arc/buffered-stdin.mu (limited to 'arc/buffered-stdin.mu') diff --git a/arc/buffered-stdin.mu b/arc/buffered-stdin.mu new file mode 100644 index 00000000..9a7bc7ae --- /dev/null +++ b/arc/buffered-stdin.mu @@ -0,0 +1,28 @@ +; reads lines, prints them back when you hit 'enter' +; dies if you wait a while, because so far we never free memory +(function main [ + (default-space:space-address <- new space:literal 30:literal) + (cursor-mode) ;? 1 + ; hook up stdin + (stdin:channel-address <- init-channel 1:literal) + (fork-helper send-keys-to-stdin:fn nil:literal/globals nil:literal/limit nil:literal/keyboard stdin:channel-address) + ; buffer stdin + (buffered-stdin:channel-address <- init-channel 1:literal) + (fork-helper buffer-lines:fn nil:literal/globals nil:literal/limit stdin:channel-address buffered-stdin:channel-address) + { begin + ; now read characters from the buffer until 'enter' is typed + (s:string-address <- new "? ") + (print-string nil:literal/terminal s:string-address) + { begin + (x:tagged-value buffered-stdin:channel-address/deref <- read buffered-stdin:channel-address) + (c:character <- maybe-coerce x:tagged-value character:literal) +;? ($print (("AAA " literal))) ;? 1 +;? ($print c:character) ;? 1 +;? ($print (("\n" literal))) ;? 1 + (print-character nil:literal/terminal c:character) + (line-done?:boolean <- equal c:character ((#\newline literal))) + (loop-unless line-done?:boolean) + } + (loop) + } +]) -- cgit 1.4.1-2-gfad0