#!/bin/bash
#set -x

clock=455000


testit ()
{
  local n=$1
  local real=$2
  local transient=$3
  local diskmode=$4
  local tape=/tmp/big.asc
  local demo=findbig.demo
  if [ $diskmode -eq 1 ]
  then
    echo "algol,_i_d<" >$tape
  else
    echo "algol,_i<" >$tape
  fi
  echo "n: $n" >>$tape
  echo "_b_e_g_i_n" >>$tape
  echo "_i_n_t_e_g_e_r i;" >>$tape
  echo -n "i:=" >>$tape
  for((i=1; i<=n; i++))
  do
    if [ $i -eq 1 ]
    then
      if [ $real -gt 0 ]
      then
        echo -n "1.0" >>$tape
      else
        echo -n "1" >>$tape
      fi
    else
      if [ $real -gt 1 ]
      then
        echo -n "+$i.0" >>$tape
      else
        echo -n "+$i" >>$tape
      fi
    fi
  done
  echo ";" >>$tape
  echo "writecr;" >>$tape
  echo "writeinteger(|<p|>,i)" >>$tape
  echo "_e_n_d;" >>$tape
  echo "t<" >>$tape
  echo "LOADPUNCH /tmp/bigout.flx" >$demo
  if [ $transient -eq 1 ]
  then
    echo "LOADREADER ../tapes/tapet1/pass1.flx" >>$demo
    echo "WAITINPUT" >>$demo
#   r
    echo "TYPE 41" >>$demo
    echo "WAITINPUT" >>$demo
#   ,
    echo "TYPE 27" >>$demo
    echo "WAITINPUT" >>$demo
#   a
    echo "TYPE 49" >>$demo
    echo "WAITINPUT" >>$demo
#   l
    echo "TYPE 35" >>$demo
    echo "WAITINPUT" >>$demo
#   g
    echo "TYPE 55" >>$demo
    echo "WAITINPUT" >>$demo
#   o
    echo "TYPE 38" >>$demo
    echo "WAITINPUT" >>$demo
#   l
    echo "TYPE 35" >>$demo
    echo "WAITINPUT" >>$demo
#   ,
    echo "TYPE 27" >>$demo
    echo "WAITINPUT" >>$demo
#   r
    echo "TYPE 41" >>$demo
    echo "WAITINPUT" >>$demo
#   ,
    echo "TYPE 27" >>$demo
    echo "WAITINPUT" >>$demo
#   _
    echo "TYPE 14" >>$demo
    echo "WAITINPUT" >>$demo
#   i
    echo "TYPE 57" >>$demo
    if [ $diskmode -eq 1 ]
    then
      echo "WAITINPUT" >>$demo
#     ,
      echo "TYPE 27" >>$demo
      echo "WAITINPUT" >>$demo
#     _
      echo "TYPE 14" >>$demo
      echo "WAITINPUT" >>$demo
#     d
      echo "TYPE 52" >>$demo
    fi
    echo "WAITINPUT" >>$demo
#   <
    echo "TYPE 17" >>$demo
    echo "WAITINPUT" >>$demo
    echo "LOADREADER /tmp/big.asc" >>$demo
#   space
    echo "TYPE 0" >>$demo
    echo "WAITINPUT" >>$demo
    echo "LOADREADER /tmp/passes.flx" >>$demo
#   space
    echo "TYPE 0" >>$demo
  else
    echo "LOADREADER $tape" >>$demo
    echo "WAITINPUT" >>$demo
#   r
    echo "TYPE 41" >>$demo
    echo "WAITINPUT" >>$demo
#   <
    echo "TYPE 17" >>$demo
  fi
  echo "WAITINPUT" >>$demo
  echo "FINISHPUNCH" >>$demo
  echo "QUIT" >>$demo
  ../GIER $demo
  flx2a </tmp/bigout.flx|fgrep -q ok
  result=$?
}

cp ../configs/big6ga4.gier default.gier
echo "Select3	00000030" >>default.gier
echo "kb1_visible	00000000" >>default.gier
echo "kb2_visible	00000000" >>default.gier
echo "debug	00000500" >>default.gier
testit 20000 0 0 0

