about summary refs log tree commit diff stats
path: root/506math.mu
diff options
context:
space:
mode:
Diffstat (limited to '506math.mu')
0 files changed, 0 insertions, 0 deletions
2015-01-11 22:03:16 -0800 535 - reading keyboard input from a channel' href='/akkartik/mu/commit/stdin.mu?h=hlt&id=337a099d35e0db9693ee1a53095dc8c96b030baa'>337a099d ^
7d2c2d55 ^


83a43e63 ^
97dd2c65 ^
7d2c2d55 ^
337a099d ^
5b698455 ^
337a099d ^
7d2c2d55 ^




337a099d ^

337a099d ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)
  }
])