blob: 24fb4bb994e32202f384e4996f9d05d76f5f2330 (
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
115
116
117
118
119
120
121
122
123
124
125
126
127
|
"#" "io_blockchar" store
@defun "io_pos_windowstart" { #puts: x y
origin_x origin_y
}
@defun "io_pos_windowend" { #puts: x y
ntiles_x padding_x 2 * + tile_sizex * origin_x +
ntiles_y padding_y 2 * + tile_sizey * origin_y +
}
@defun "io_pos_after" { #puts: x y
0
ntiles_y padding_y 2 * + tile_sizey * origin_y +
}
@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
pop
"+" 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
pop
#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
pop
#1000000 sleep
}
@defun "io_windowbox" {
io_pos_windowstart io_pos_windowend io_pos_windowstart diff2 2 2 diff2 io_box
}
@defun "io_square" { #args: x y
"y" store
"x" store
x y io_goto
#"+--+" print
#x y 1 + io_goto
#"| |" print
#x y 2 + io_goto
#"+--+" print
io_blockchar dup dup + + dup "\x1B[3D\x1B[B" swap + + print
}
@defun "io_pos_square" { #args: x y
swap
tile_sizex * padding_x + origin_x +
swap
tile_sizey * padding_y + origin_y +
}
@defun "io_gsquare" { #args: x y blockidx
"b_blockclrs" swapoutvar swap arridx swap "b_blockclrs" gstore
io_setcolour
io_pos_square io_square
io_resetcolour
}
@defun "io_setcolour" { #args: coloridx [0..7]
"\x1B[3" swap + "m" + print
}
@defun "io_resetcolour" {
"\x1B[0m" print
}
@defun "io_printheader" {
0 0 io_goto
"##### ##### ##### #### ### ####\n # # # # # # #\n # #### # #### # ###\n # # # # # # #\n # ##### # # # ### ####"
print
}
|