#!/bin/ksh -p

IFS=''

SPACES="__________" ;: ten "spaces"
SPACES="$SPACES$SPACES" ;: 20
SPACES="$SPACES$SPACES" ;: 40
SPACES="$SPACES$SPACES" ;: 80
SPACES="$SPACES$SPACES" ;: 160

printmid(){
  print "$@" | awk '{FS=""}{print substr($1, '$2', '$3')}'
}

space(){
  printmid "$SPACES" 1 $1 | sed "s/_/ /g"
}

printlen(){
  expr "$*" : ".*"
} 

ESC=$(echo a | tr a "\033")
UP=${ESC}[A
DOWN=${ESC}[B
RIGHT=${ESC}[C
LEFT=${ESC}[D

if (( $# == 0 )) ; then
  Message="Korn Shell 83 scroller (c) 1997 CyrekSoft. Author: Carl R. White"
else
  Message=$*
fi

typeset -i lm pos

lm=$(printlen $Message)
if (( lm <= 80 )) ; then
  Message=$Message$(space $((81 - lm)) )
  lm=80
fi
Message=$Message$Message

set -A MessageArray _ $(echo $(space lm) | sed "s/./& /")

pos=1
while (( pos <= lm )) ; do
  MessageArray[$pos]=$(printmid "$Message" $pos 80)
  pos=$((pos + 1))
done

pos=1
while : ; do
  print ${MessageArray[$pos]}

  temp=1  
  while (( temp < 250 )) ; do temp=$((temp+1)) ; : ; done

  print $UP$UP$UP
  pos=$((pos + 1))
  if (( pos > lm )) ; then pos=1 ; fi
done
