changeset 20:50a456168c25

Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
author Mike Pavone <pavone@retrodev.com>
date Sat, 14 Jul 2012 12:33:01 -0700
parents 7f2aba75c449
children be6d1cf7b7d7
files Makefile src/lifter.tp src/sim.tp
diffstat 3 files changed, 33 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sat Jul 14 12:09:06 2012 -0700
+++ b/Makefile	Sat Jul 14 12:33:01 2012 -0700
@@ -12,8 +12,13 @@
 	gcc -ggdb -I$(TPDIR) -o $@ $< $(TPDIR)/runtime/object.c 
 
 $(OBJDIR)/%.tp.c : $(SRCDIR)/%.tp
-	d8 $(TPC) -- -basedir $(TPDIR)/ $< > $@
+	d8 $(TPC) -- -basedir $(TPDIR)/ -i src $< > $@
 
 clean :
-	rm -f $(OBJS)
-	rm -f $(BINS)
+	rm -f $(OBJS) $(BINS)
+	
+cleansim :
+	rm -f bin/sim build/sim.tp.c
+	
+cleanlift :
+	rm -f bin/lifter build/lifter.tp.c
--- a/src/lifter.tp	Sat Jul 14 12:09:06 2012 -0700
+++ b/src/lifter.tp	Sat Jul 14 12:33:01 2012 -0700
@@ -1,5 +1,21 @@
 #{
+	true <- #{
+	  if:else <- :self trueblock :elseblock {
+		trueblock:
+	  }
+	}
+
+	false <- #{
+	  if:else <- :self trueblock :elseblock {
+		elseblock:
+	  }
+	}
+	
 	main <- {
-		0
+		text <- sim readFd: 0
+		playfield <- (sim state) fromStr: text
+		os write: 2 text
+		os write: 2 "width: " . (string: (playfield width)) . "\n"
+		os write: 2 "height: " . (string: (playfield height)) . "\n"
 	}
 }
--- a/src/sim.tp	Sat Jul 14 12:09:06 2012 -0700
+++ b/src/sim.tp	Sat Jul 14 12:33:01 2012 -0700
@@ -170,8 +170,7 @@
 		}
 	}
 	
-	readFile <- :path {
-		fd <- os open: path (os O_RDONLY)
+	readFd <- :fd {
 		if: fd < 0 { "" } else: {
 			cur <- ""
 			part <- ""
@@ -181,11 +180,17 @@
 			} do: {
 				cur <- cur . part
 			}
-			os close: fd
 			cur
 		}
 	}
 	
+	readFile <- :path {
+		fd <- os open: path (os O_RDONLY)
+		out <- readFd: fd
+		os close: fd
+		out
+	}
+	
 	getMove <- {
 		os read: 0 1
 	}