summaryrefslogtreecommitdiffstats
path: root/cholerab/max_dirty_hack.sh
blob: 7183a760c6b7889a7335c05fe3084defaf1c0def (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
#!/bin/sh
stty -echo cbreak -ofdel
x_max=90
y_max=10
x_cur=1
y_cur=1
y=
t=1
outputfile=/tmp/cholerab_out
inputfile=/tmp/cholerab_in
echo -n "c"

while [ $t -lt $(( y_max+2 )) ];do
    echo -e "[$t;$(( x_max+1 ))Hx"
    t=$(( t+1 ))
done
t=1
while [ $t -lt $(( x_max+2 )) ];do
    echo -e "[$(( y_max+1 ));${t}Hx"
    t=$(( t+1 ))
done

echo -n "[$y_cur;${x_cur}H"
#Main Loop
while x="`dd bs=1 count=1 2>/dev/null`"; do
    y="$y$x"
    case "$y" in
        (*"")
            if [[ $y_cur -le 1 ]];then
                y_cur=$y_max
                echo -n "[$y_cur;${x_cur}H"
            else
                echo -n ""
                y_cur=$(( y_cur-1 ))
            fi
            y=
            ;;
        (*"")
            if [[ $y_cur -ge $y_max ]];then
                y_cur=1
                echo -n "[$y_cur;${x_cur}H"
            else
                echo -n ""
                y_cur=$(( y_cur+1 ))
            fi
            y=
            ;;
        (*"")
            if [[ $x_cur -ge $x_max ]];then
                x_cur=1
                echo -n "[$y_cur;${x_cur}H"
            else
                echo -n ""
                x_cur=$(( x_cur+1 ))
            fi
            y=
            ;;
        (*"")
            if [[ $x_cur -le 1 ]];then
                x_cur=$x_max
                echo -n "[$y_cur;${x_cur}H"
            else
                echo -n ""
                x_cur=$(( x_cur-1 ))
            fi
            y=
            ;;
        (*"")
            if [[ $x_cur -le 1 ]];then
                x_cur=$x_max
                echo -n "[$y_cur;${x_cur}H"
            else
                echo -n " "
                x_cur=$(( x_cur-1 ))
            fi
            y=
            ;;
        (|\[)
            :
            ;;
        (*)
            if [[ $x_cur -ge $x_max ]];then
                x_cur=1
                echo -n "[$y_cur;${x_cur}H"
            else
                echo -n "$x"
                echo "<0 $x $x_cur $y_cur>" >> $outputfile
                x_cur=$(( x_cur+1 ))
            fi
            y=
            ;;
    esac
    while [[ -s $inputfile ]]; do
        cat $inputfile | head -n 1 | sed 's,[<>],,g' | { read MODE CHAR XN YN ; echo -n "7[$YN;${XN}H$CHAR8"; }
        sed -i -e "1d" $inputfile
    done

    state=`echo -n "$x" | od -An -tx | tr -d "[$IFS]"`
    echo -n "7[1;$(( x_max+2 ))H$state8"
    echo -n "7[2;$(( x_max+2 ))H             8"
    echo -n "7[2;$(( x_max+2 ))H$x_cur:$y_cur8"
done