about summary refs log tree commit diff stats
path: root/chessboard-rawterm.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-01-02 00:55:38 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-01-02 00:56:16 -0800
commite605597d378ecf2e59e042535eb089986bcf9ebd (patch)
treef6399dcb53bc87bfde835a2374397dece156a113 /chessboard-rawterm.mu
parentce3518f362743d7a004f952358864748eecf8c0d (diff)
downloadmu-e605597d378ecf2e59e042535eb089986bcf9ebd.tar.gz
479
Diffstat (limited to 'chessboard-rawterm.mu')
-rw-r--r--chessboard-rawterm.mu90
1 files changed, 44 insertions, 46 deletions
diff --git a/chessboard-rawterm.mu b/chessboard-rawterm.mu
index 1e969d69..4e923a89 100644
--- a/chessboard-rawterm.mu
+++ b/chessboard-rawterm.mu
@@ -101,7 +101,7 @@
   (rank-base:integer <- character-to-integer one:character)
 ;?   (rank-base:integer <- subtract rank-base:integer 1:literal)
   ; get from-file
-  (c:character <- copy ((#\a literal))) ;wait-for-key)
+  (c:character <- wait-for-key)
   (print-primitive c:character)
   (from-file:integer <- character-to-integer c:character)
   (from-file:integer <- subtract from-file:integer file-base:integer)
@@ -112,41 +112,41 @@
 ;?   (below-max:boolean <- lesser-or-equal from-file:integer 1:literal)
   (assert below-max:boolean (("from-file too high" literal)))
   ; get from-rank
-  (c:character <- copy ((#\1 literal))) ;wait-for-key)
+  (c:character <- wait-for-key)
   (print-primitive c:character)
   (from-rank:integer <- character-to-integer c:character)
   (from-rank:integer <- subtract from-rank:integer rank-base:integer)
-  ; assert(0 <= from-rank <= 7)
+  ; assert('1' <= from-rank <= '8')
   (above-min:boolean <- greater-or-equal from-rank:integer 0:literal)
   (assert above-min:boolean (("from-rank too low" literal)))
   (below-max:boolean <- lesser-or-equal from-rank:integer 7:literal)
 ;?   (below-max:boolean <- lesser-or-equal from-rank:integer 1:literal)
   (assert below-max:boolean (("from-rank too high" literal)))
-;?   ; slurp hyphen
-;?   (c:character <- wait-for-key)
-;?   (print-primitive c:character)
-;?   (hyphen?:boolean <- equal c:character ((#\- literal)))
-;?   (assert hyphen?:boolean (("expected hyphen" literal)))
-;?   ; get to-file
-;?   (c:character <- wait-for-key)
-;?   (print-primitive c:character)
-;?   (to-file:integer <- character-to-integer c:character)
-;?   (to-file:integer <- subtract to-file:integer file-base:integer)
-;?   ; assert('a' <= to-file <= 'h')
-;?   (above-min:boolean <- greater-or-equal to-file:integer 1:literal)
-;?   (assert above-min:boolean (("to-file too low" literal)))
-;?   (below-max:boolean <- lesser-or-equal to-file:integer 2:literal)
-;?   (assert below-max:boolean (("to-file too high" literal)))
-;?   ; get to-rank
-;?   (c:character <- wait-for-key)
-;?   (print-primitive c:character)
-;?   (to-rank:integer <- character-to-integer c:character)
-;?   (to-rank:integer <- subtract to-rank:integer rank-base:integer)
-;?   ; assert(1 <= to-rank <= 2)
-;?   (above-min:boolean <- greater-or-equal to-rank:integer 1:literal)
-;?   (assert above-min:boolean (("to-rank too low" literal)))
-;?   (below-max:boolean <- lesser-or-equal to-rank:integer 2:literal)
-;?   (assert below-max:boolean (("to-rank too high" literal)))
+  ; slurp hyphen
+  (c:character <- wait-for-key)
+  (print-primitive c:character)
+  (hyphen?:boolean <- equal c:character ((#\- literal)))
+  (assert hyphen?:boolean (("expected hyphen" literal)))
+  ; get to-file
+  (c:character <- wait-for-key)
+  (print-primitive c:character)
+  (to-file:integer <- character-to-integer c:character)
+  (to-file:integer <- subtract to-file:integer file-base:integer)
+  ; assert('a' <= to-file <= 'h')
+  (above-min:boolean <- greater-or-equal to-file:integer 0:literal)
+  (assert above-min:boolean (("to-file too low" literal)))
+  (below-max:boolean <- lesser-or-equal to-file:integer 7:literal)
+  (assert below-max:boolean (("to-file too high" literal)))
+  ; get to-rank
+  (c:character <- wait-for-key)
+  (print-primitive c:character)
+  (to-rank:integer <- character-to-integer c:character)
+  (to-rank:integer <- subtract to-rank:integer rank-base:integer)
+  ; assert('1' <= to-rank <= '8')
+  (above-min:boolean <- greater-or-equal to-rank:integer 0:literal)
+  (assert above-min:boolean (("to-rank too low" literal)))
+  (below-max:boolean <- lesser-or-equal to-rank:integer 7:literal)
+  (assert below-max:boolean (("to-rank too high" literal)))
   ; construct the move object
   (result:move-address <- new move:literal)
   (f:integer-integer-pair-address <- get-address result:move-address/deref from:offset)
@@ -154,11 +154,11 @@
   (dest:integer-address/deref <- copy from-file:integer)
   (dest:integer-address <- get-address f:integer-integer-pair-address/deref 1:offset)
   (dest:integer-address/deref <- copy from-rank:integer)
-;?   (t0:integer-integer-pair-address <- get-address result:move-address/deref to:offset)
-;?   (dest:integer-address <- get-address t0:integer-integer-pair-address/deref 0:offset)
-;?   (dest:integer-address/deref <- copy to-file:integer)
-;?   (dest:integer-address <- get-address t0:integer-integer-pair-address/deref 1:offset)
-;?   (dest:integer-address/deref <- copy to-rank:integer)
+  (t0:integer-integer-pair-address <- get-address result:move-address/deref to:offset)
+  (dest:integer-address <- get-address t0:integer-integer-pair-address/deref 0:offset)
+  (dest:integer-address/deref <- copy to-file:integer)
+  (dest:integer-address <- get-address t0:integer-integer-pair-address/deref 1:offset)
+  (dest:integer-address/deref <- copy to-rank:integer)
   (reply result:move-address)
 ])
 
@@ -176,16 +176,16 @@
 ;?   (print-primitive (("\n" literal)))
   (f:file-address <- index b:board-address/deref from-file:integer)
   (src:square-address <- index-address f:file-address/deref from-rank:integer)
-;?   (x:integer-integer-pair <- get m:move-address/deref to:offset)
-;?   (to-file:integer <- get x:integer-integer-pair 0:offset)
-;? ;?   (print-primitive to-file:integer)
-;? ;?   (print-primitive (("\n" literal)))
-;?   (to-rank:integer <- get x:integer-integer-pair 1:offset)
-;? ;?   (print-primitive to-rank:integer)
-;? ;?   (print-primitive (("\n" literal)))
-;?   (f:file-address <- index-address b:board-address/deref to-file:integer)
-;?   (dest:square-address <- index-address f:file-address/deref to-rank:integer)
-;?   (dest:square-address/deref <- copy src:square-address/deref)
+  (x:integer-integer-pair <- get m:move-address/deref to:offset)
+  (to-file:integer <- get x:integer-integer-pair 0:offset)
+;?   (print-primitive to-file:integer)
+;?   (print-primitive (("\n" literal)))
+  (to-rank:integer <- get x:integer-integer-pair 1:offset)
+;?   (print-primitive to-rank:integer)
+;?   (print-primitive (("\n" literal)))
+  (f:file-address <- index b:board-address/deref to-file:integer)
+  (dest:square-address <- index-address f:file-address/deref to-rank:integer)
+  (dest:square-address/deref <- copy src:square-address/deref)
   (src:square-address/deref <- copy _:literal)
   (reply b:board-address)
 ])
@@ -201,9 +201,7 @@
     (print-primitive (("? " literal)))
     (m:move-address <- read-move)
     (b:board-address <- make-move b:board-address m:move-address)
-;?     (loop)
-    (clear-screen)
-    (print-board b:board-address)
+    (loop)
   }
   (console-off)
 ])