2015-01-14 03:25:03 +00:00
|
|
|
(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)
|
2015-01-14 06:03:57 +00:00
|
|
|
(r:integer/routine <- fork read-move:fn nil:literal/globals 200:literal/limit)
|
2015-01-14 03:25:03 +00:00
|
|
|
(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)
|
|
|
|
])))
|
2015-01-14 03:38:53 +00:00
|
|
|
;? (set dump-trace*)
|
2015-01-14 06:03:57 +00:00
|
|
|
;? (= dump-trace* (obj whitelist '("schedule")))
|
2015-01-14 03:25:03 +00:00
|
|
|
(run 'main)
|
2015-01-14 05:14:52 +00:00
|
|
|
(each routine completed-routines*
|
|
|
|
(awhen rep.routine!error
|
2015-01-14 06:03:57 +00:00
|
|
|
;? (prn " " r)
|
2015-01-14 05:14:52 +00:00
|
|
|
(prn "error - " it)))
|
2015-01-14 06:03:57 +00:00
|
|
|
(if (~ran-to-completion 'read-move)
|
2015-01-14 04:50:04 +00:00
|
|
|
(prn "F - chessboard accepts legal moves (<rank><file>-<rank><file>)"))
|
2015-01-14 06:03:57 +00:00
|
|
|
;? (quit)
|
2015-01-14 03:25:03 +00:00
|
|
|
|
|
|
|
(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)
|
2015-01-14 06:03:57 +00:00
|
|
|
(if (~ran-to-completion 'read-move)
|
2015-01-14 03:25:03 +00:00
|
|
|
(prn "F - chessboard quits on move starting with 'q'"))
|
|
|
|
|
|
|
|
(reset)
|