about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-04-16 22:19:53 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-04-16 22:19:53 -0700
commit13485a58eaaa64ab7d90b16a37442083da0a5d1a (patch)
treea00ae30e2244f1996273c802a35a21b51c700f6c
parent0d2686c751248d0abf8e5f9500aaa6b736666fc4 (diff)
downloadmu-13485a58eaaa64ab7d90b16a37442083da0a5d1a.tar.gz
2845
-rw-r--r--chessboard.mu25
1 files changed, 8 insertions, 17 deletions
diff --git a/chessboard.mu b/chessboard.mu
index 23d9bf28..fe709f40 100644
--- a/chessboard.mu
+++ b/chessboard.mu
@@ -241,25 +241,23 @@ def read-move stdin:address:shared:source:character, screen:address:shared:scree
   return-if error?, 0/dummy
   # construct the move object
   result:address:shared:move <- new move:type
-  x:address:number <- get-address *result, from-file:offset
-  *x <- copy from-file
-  x <- get-address *result, from-rank:offset
-  *x, quit?, error? <- read-rank stdin, screen
+  *result <- put *result, from-file:offset, from-file
+  from-rank:number, quit?, error? <- read-rank stdin, screen
   return-if quit?, 0/dummy
   return-if error?, 0/dummy
+  *result <- put *result, from-rank:offset, from-rank
   error? <- expect-from-channel stdin, 45/dash, screen
   return-if error?, 0/dummy, 0/quit
-  x <- get-address *result, to-file:offset
-  *x, quit?, error? <- read-file stdin, screen
+  to-file:number, quit?, error? <- read-file stdin, screen
   return-if quit?:boolean, 0/dummy
   return-if error?:boolean, 0/dummy
-  x:address:number <- get-address *result, to-rank:offset
-  *x, quit?, error? <- read-rank stdin, screen
+  *result <- put *result, to-file:offset, to-file
+  to-rank:number, quit?, error? <- read-rank stdin, screen
   return-if quit?, 0/dummy
   return-if error?, 0/dummy
+  *result <- put *result, to-rank:offset, to-file
   error? <- expect-from-channel stdin, 10/newline, screen
   return-if error?, 0/dummy, 0/quit
-  return result, quit?, error?
 ]
 
 # valid values for file: 0-7
@@ -546,14 +544,7 @@ scenario making-a-move [
   run [
     2:address:shared:array:address:shared:array:character/board <- initial-position
     3:address:shared:move <- new move:type
-    4:address:number <- get-address *3:address:shared:move, from-file:offset
-    *4:address:number <- copy 6/g
-    5:address:number <- get-address *3:address:shared:move, from-rank:offset
-    *5:address:number <- copy 1/'2'
-    6:address:number <- get-address *3:address:shared:move, to-file:offset
-    *6:address:number <- copy 6/g
-    7:address:number <- get-address *3:address:shared:move, to-rank:offset
-    *7:address:number <- copy 3/'4'
+    *3:address:shared:move <- merge 6/g, 1/'2', 6/g, 3/'4'
     2:address:shared:array:address:shared:array:character/board <- make-move 2:address:shared:array:address:shared:array:character/board, 3:address:shared:move
     screen:address:shared:screen <- print-board screen:address:shared:screen, 2:address:shared:array:address:shared:array:character/board
   ]