From 2647f8431d6bd757c3e3455739d44690f029123e Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 18 Jan 2015 01:20:55 -0800 Subject: 586 Dump yet another trying-to-be-polymorphic function. --- chessboard-cursor.arc.t | 15 ++++++++++----- chessboard-cursor.mu | 36 +++++++++++++----------------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/chessboard-cursor.arc.t b/chessboard-cursor.arc.t index 9c8c4ece..f2571a50 100644 --- a/chessboard-cursor.arc.t +++ b/chessboard-cursor.arc.t @@ -7,7 +7,8 @@ '((function! main [ (default-space:space-address <- new space:literal 30:literal/capacity) (1:channel-address/raw <- init-channel 1:literal) - (r:integer/routine <- fork read-move:fn nil:literal/globals 2000:literal/limit) + (dummy:terminal-address <- init-fake-terminal 20:literal 10:literal) + (r:integer/routine <- fork read-move:fn nil:literal/globals 2000:literal/limit dummy:terminal-address) (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) @@ -43,7 +44,8 @@ '((function! main [ (default-space:space-address <- new space:literal 30:literal/capacity) (1:channel-address/raw <- init-channel 1:literal) - (r:integer/routine <- fork-helper read-move:fn nil:literal/globals 2000:literal/limit) + (dummy:terminal-address <- init-fake-terminal 20:literal 10:literal) + (r:integer/routine <- fork-helper read-move:fn nil:literal/globals 2000:literal/limit dummy:terminal-address) (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) @@ -69,7 +71,8 @@ '((function! main [ (default-space:space-address <- new space:literal 30:literal/capacity) (1:channel-address/raw <- init-channel 1:literal) - (r:integer/routine <- fork-helper read-move:fn nil:literal/globals nil:literal/limit) + (dummy:terminal-address <- init-fake-terminal 20:literal 10:literal) + (r:integer/routine <- fork-helper read-move:fn nil:literal/globals nil:literal/limit dummy:terminal-address) (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) @@ -86,7 +89,8 @@ '((function! main [ (default-space:space-address <- new space:literal 30:literal/capacity) (1:channel-address/raw <- init-channel 1:literal) - (r:integer/routine <- fork-helper read-file:fn nil:literal/globals nil:literal/limit) + (dummy:terminal-address <- init-fake-terminal 20:literal 10:literal) + (r:integer/routine <- fork-helper read-file:fn nil:literal/globals nil:literal/limit dummy:terminal-address) (c:character <- copy ((#\i literal))) (x:tagged-value <- save-type c:character) (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value) @@ -108,7 +112,8 @@ '((function! main [ (default-space:space-address <- new space:literal 30:literal/capacity) (1:channel-address/raw <- init-channel 1:literal) - (r:integer/routine <- fork-helper read-rank:fn nil:literal/globals nil:literal/limit) + (dummy:terminal-address <- init-fake-terminal 20:literal 10:literal) + (r:integer/routine <- fork-helper read-rank:fn nil:literal/globals nil:literal/limit dummy:terminal-address) (c:character <- copy ((#\9 literal))) (x:tagged-value <- save-type c:character) (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value) diff --git a/chessboard-cursor.mu b/chessboard-cursor.mu index a1b555d4..d64231af 100644 --- a/chessboard-cursor.mu +++ b/chessboard-cursor.mu @@ -93,31 +93,18 @@ (address move-address (move)) -; todo: assumes stdout is always at raw address 2 -(function print [ - (default-space:space-address <- new space:literal 30:literal) - { begin - ; stdout not initialized? skip all prints. - (break-if 2:channel-address/raw) - (reply) - } - ; base case prints characters - (c:character <- next-input) - (x:tagged-value <- save-type c:character) - (2:channel-address/raw/deref <- write 2:channel-address/raw x:tagged-value) -]) - (function read-move [ (default-space:space-address <- new space:literal 30:literal) - (from-file:integer <- read-file) + (screen:terminal-address <- next-input) + (from-file:integer <- read-file screen:terminal-address) { begin (break-if from-file:integer) (reply nil:literal) } - (from-rank:integer <- read-rank) - (expect-stdin ((#\- literal))) - (to-file:integer <- read-file) - (to-rank:integer <- read-rank) + (from-rank:integer <- read-rank screen:terminal-address) + (expect-stdin screen:terminal-address ((#\- literal))) + (to-file:integer <- read-file screen:terminal-address) + (to-rank:integer <- read-rank screen:terminal-address) ; construct the move object (result:move-address <- new move:literal) (f:integer-integer-pair-address <- get-address result:move-address/deref from:offset) @@ -136,11 +123,12 @@ ; todo: assumes stdin is always at raw address 1 (function read-file [ (default-space:space-address <- new space:literal 30:literal) + (screen:terminal-address <- next-input) (x:tagged-value 1:channel-address/raw/deref <- read 1:channel-address/raw) (a:character <- copy ((#\a literal))) (file-base:integer <- character-to-integer a:character) (c:character <- maybe-coerce x:tagged-value character:literal) - (print c:character) + (print-character screen:terminal-address c:character) { begin (quit:boolean <- equal c:character ((#\q literal))) (break-unless quit:boolean) @@ -158,9 +146,10 @@ (function read-rank [ (default-space:space-address <- new space:literal 30:literal) + (screen:terminal-address <- next-input) (x:tagged-value 1:channel-address/raw/deref <- read 1:channel-address/raw) (c:character <- maybe-coerce x:tagged-value character:literal) - (print c:character) + (print-character screen:terminal-address c:character) { begin (quit:boolean <- equal c:character ((#\q literal))) (break-unless quit:boolean) @@ -180,10 +169,11 @@ (function expect-stdin [ (default-space:space-address <- new space:literal 30:literal) + (screen:terminal-address <- next-input) ; slurp hyphen (x:tagged-value 1:channel-address/raw/deref <- read 1:channel-address/raw) (c:character <- maybe-coerce x:tagged-value character:literal) - (print c:character) + (print-character screen:terminal-address c:character) (expected:character <- next-input) (match?:boolean <- equal c:character expected:character) (assert match?:boolean (("expected character not found" literal))) @@ -240,7 +230,7 @@ (print-primitive-to-host (("Hit 'q' to exit." literal))) (cursor-to-next-line nil:literal/terminal) (print-primitive-to-host (("move: " literal))) - (m:move-address <- read-move) + (m:move-address <- read-move nil:literal/terminal) (break-unless m:move-address) (b:board-address <- make-move b:board-address m:move-address) (loop) -- cgit 1.4.1-2-gfad0