diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
commit | 2a4088119cf41175457414dfa59bd4064b8f0562 (patch) | |
tree | 64fe184e399f9870ebd481a90eec34d51e5dff68 /archive/0.vm.arc/stdin.mu | |
parent | 23fd294d85959c6b476bcdc35ed6ad508cc99b8f (diff) | |
download | mu-2a4088119cf41175457414dfa59bd4064b8f0562.tar.gz |
5852
Diffstat (limited to 'archive/0.vm.arc/stdin.mu')
-rw-r--r-- | archive/0.vm.arc/stdin.mu | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/archive/0.vm.arc/stdin.mu b/archive/0.vm.arc/stdin.mu new file mode 100644 index 00000000..87598667 --- /dev/null +++ b/archive/0.vm.arc/stdin.mu @@ -0,0 +1,27 @@ +; reads and prints keys until you hit 'q' +; no need to hit 'enter', and 'enter' has no special meaning +; 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) + ; hook up stdin + (stdin:channel-address <- init-channel 1:literal) +;? ($print (("main: stdin is " literal))) +;? ($print stdin:channel-address) +;? ($print (("\n" literal))) + (fork-helper send-keys-to-stdin:fn nil:literal/globals nil:literal/limit nil:literal/keyboard stdin:channel-address) + ; now read characters from stdin until a 'q' is typed + ($print (("? " literal))) + { begin + (x:tagged-value stdin:channel-address/deref <- read stdin:channel-address) + (c:character <- maybe-coerce x:tagged-value character:literal) +;? ($print (("main: stdin is " literal))) +;? ($print stdin:channel-address) +;? ($print (("\n" literal))) +;? ($print (("check: " literal))) +;? ($print c:character) + (done?:boolean <- equal c:character ((#\q literal))) + (break-if done?:boolean) + (loop) + } +]) |