about summary refs log tree commit diff stats
path: root/chessboard-cursor.arc.t
blob: 80cd92e977cbb16205f67ad1032f929d837ec48e (plain) (blame)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(selective-load "mu.arc" section-level)

(reset)
(new-trace "read-move-legal")
(add-code:readfile "chessboard-cursor.mu")
(add-code
  '((function! main [
      (default-space:space-address <- new space:literal 30:literal/capacity)
      (1:channel-address/raw <- init-channel 3:literal)
      (r:integer/routine <- fork-helper read-move:fn nil:literal/globals nil:literal/limit)
      (c:character <- copy ((#\a literal)))
      (x:tagged-value <- save-type c:character)
      (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
      (c:character <- copy ((#\2 literal)))
      (x:tagged-value <- save-type c:character)
      (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
      (c:character <- copy ((#\- literal)))
      (x:tagged-value <- save-type c:character)
      (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
      (c:character <- copy ((#\a literal)))
      (x:tagged-value <- save-type c:character)
      (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
      (c:character <- copy ((#\4 literal)))
      (x:tagged-value <- save-type c:character)
      (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
      (sleep until-routine-done:literal r:integer/routine)
     ])))
;? (set dump-trace*)
(run 'main)
(if (~ran-to-completion 'main)
  (prn "F - chessboard accepts legal moves (<rank><file>-<rank><file>)"))

(reset)
(new-trace "read-move-quit")
(add-code:readfile "chessboard-cursor.mu")
(add-code
  '((function! main [
      (default-space:space-address <- new space:literal 30:literal/capacity)
      (1:channel-address/raw <- init-channel 3:literal)
      (r:integer/routine <- fork-helper read-move:fn nil:literal/globals nil:literal/limit)
      (c:character <- copy ((#\q literal)))
      (x:tagged-value <- save-type c:character)
      (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
      (sleep until-routine-done:literal r:integer/routine)
     ])))
(run 'main)
(if (~ran-to-completion 'main)
  (prn "F - chessboard quits on move starting with 'q'"))

(reset)