blob: 8c6a3202b844339d4dd58cabf9f878076295ea95 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
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
pop
"+" 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_pos_square" { #args: x y
swap
tile_sizex * padding_x +
swap
tile_sizey * padding_y +
}
@defun "io_gsquare" { #args: x y
io_pos_square io_square
}
@defun "io_setcolour" { #args: coloridx [0..7]
"\x1B[3" swap + "m" + print
}
|