summaryrefslogtreecommitdiff
path: root/tetris/io.prn
diff options
context:
space:
mode:
Diffstat (limited to 'tetris/io.prn')
-rw-r--r--tetris/io.prn105
1 files changed, 105 insertions, 0 deletions
diff --git a/tetris/io.prn b/tetris/io.prn
new file mode 100644
index 0000000..7b2c704
--- /dev/null
+++ b/tetris/io.prn
@@ -0,0 +1,105 @@
+2 "padding_x" store
+2 "padding_y" store
+10 "ntiles_x" store
+12 "ntiles_y" store
+3 "tile_sizex" store
+2 "tile_sizey" store
+
+@defun "io_pos_windowstart" { #puts: x y
+ 0 0
+}
+
+@defun "io_pos_windowend" { #puts: x y
+ ntiles_x tile_sizex * padding_x 2 * + 1 -
+ ntiles_y tile_sizey * padding_y 2 * +
+}
+
+@defun "io_pos_after" { #puts: x y
+ 0
+ ntiles_y tile_sizey * padding_y 2 * + 1 +
+}
+
+@defun "io_clearscreen" {
+ "\x1B[2J\x1B[H" print
+}
+
+@defun "io_goto" { #args: x y
+ "y" store
+ "x" store
+ #"going to (" x + "," + y + ")" + print
+ "\x1B[" y 1 + + ";" + x 1 + + "H" + print
+}
+
+@defun "io_box" { #args: x y w h; w/h are the distances from edge to edge
+ #stackdump
+ #1000000 sleep
+ "h" store
+ "w" store
+ "y" store
+ "x" store
+
+ x y io_goto
+ "+" print
+ 0
+ dup w < while
+ "-" print
+ 1 +
+ dup w < end
+ "+" print
+ #1000000 sleep
+
+ #"x = " print x print
+ #"y = " print y print
+
+ x y h + io_goto
+ "+" print
+ 0
+ dup w < while
+ "-" print
+ 1 +
+ dup w < end
+ "+" print
+ #1000000 sleep
+
+ #"x = " print x print
+ #"y = " print y print
+
+ x y 1 + io_goto
+ 0
+ dup h 1 - < while
+ "|\x1B[D\x1B[B" print #bar, left, down
+ 1 +
+ dup h 1 - < end
+ #1000000 sleep
+
+ x w + 1 + y 1 + io_goto
+ 0
+ dup h 1 - < while
+ "|\x1B[D\x1B[B" print #bar, left, down
+ 1 +
+ dup h 1 - < end
+ #1000000 sleep
+}
+
+@defun "io_windowbox" {
+ io_pos_windowstart io_pos_windowend io_pos_windowstart diff2 io_box
+}
+
+@defun "io_square" { #args: x y (equivalent to x y 3 2 io_box)
+ "y" store
+ "x" store
+ x y io_goto
+ "+--+" print
+ x y 1 + io_goto
+ "| |" print
+ x y 2 + io_goto
+ "+--+" print
+}
+
+@defun "io_gsquare" { #args: x y
+ swap
+ tile_sizex * padding_x +
+ swap
+ tile_sizey * padding_y +
+ io_square
+}