#!/usr/bin/ksh93 compound c=( compound tty=( integer max_x integer max_y ) compound data=( float -a vals float min=0 float max=0 ) ) (( c.tty.max_x=$(tput cols)-2 )) (( c.tty.max_y=$(tput lines)-2 )) integer i integer max_i=${c.tty.max_x} for ((i=0 ; i < max_i ; i++ )) ; do (( c.data.vals[i]=sin(i/5.) )) done for i in "${!c.data.vals[@]}" ; do (( c.data.min=fmin(c.data.vals[i], c.data.min) )) (( c.data.max=fmax(c.data.vals[i], c.data.max) )) done clear for ((i=0 ; i < max_i ; i++ )) ; do tput cup $(( int( (c.tty.max_y/2.)*((c.data.min*-1.0)+c.data.vals[i])) )) $i printf '.' done tput cup ${c.tty.max_y} ${c.tty.max_x} ; print #print -v c # EOF.