about summary refs log tree commit diff stats
path: root/subx/examples/ex1
Commit message (Expand)AuthorAgeFilesLines
* 4661Kartik Agaram2018-10-041-0/+0
* 4529 - move examples to a sub-directoryKartik Agaram2018-09-011-0/+0
ik K. Agaram <vc@akkartik.com> 2015-01-12 10:38:56 -0800 544 - text modes now called 'retro' & 'cursor'' href='/akkartik/mu/commit/stdin.mu?h=hlt&id=a1f2f613305cf0da4c1e73c40c1281766ee45a08'>a1f2f613 ^
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)
  }
])