diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-01-02 00:55:38 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-01-02 00:56:16 -0800 |
commit | e605597d378ecf2e59e042535eb089986bcf9ebd (patch) | |
tree | f6399dcb53bc87bfde835a2374397dece156a113 /chessboard-rawterm.mu | |
parent | ce3518f362743d7a004f952358864748eecf8c0d (diff) | |
download | mu-e605597d378ecf2e59e042535eb089986bcf9ebd.tar.gz |
479
Diffstat (limited to 'chessboard-rawterm.mu')
-rw-r--r-- | chessboard-rawterm.mu | 90 |
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) ]) |