#!/bin/sh

clock=455000


testit ()
{
  local first=$1
  local tape=/tmp/bad.asc
  local demo=findbad.demo
  echo "slip<" >$tape
  echo "vk969" >>$tape
  echo "hsf2" >>$tape
  echo "_e10" >>$tape
  echo "print,_c<" >>$tape
  flx2a <"../tapes/ga4/T1, L1 (26) 20.07.70.flx" | tac | sed '0,/_s/{//d;}' | tac | sed -e '/_i redefine/{ N; s/_s/e14='$first',e27=1/g }' >>$tape
  echo "_h" >>$tape
  echo "print,_b$((74176+first)),_p<" >>$tape
  echo "t<" >>$tape
  echo "LOADPUNCH /tmp/badout.flx" >$demo
  echo "LOADREADER $tape" >>$demo
  echo "WAITINPUT" >>$demo
#   r
  echo "TYPE 41" >>$demo
  echo "WAITINPUT" >>$demo
#   <
  echo "TYPE 17" >>$demo
  echo "WAITINPUT" >>$demo
#   r
  echo "TYPE 41" >>$demo
  echo "WAITINPUT" >>$demo
#   <
  echo "TYPE 17" >>$demo
  echo "WAITINPUT" >>$demo
  echo "FINISHPUNCH" >>$demo
  echo "QUIT" >>$demo
  ../GIER $demo
  flx2a </tmp/badout.flx|fgrep -q "mln  201         ,pt   213"
  result=$?
}

lo=0
hi=50
lastok=0
while [ $(expr $hi - $lo) -ne 1 ]
do
  mid=$(expr $lo + '(' $hi - $lo ')' / 2)
  echo $lo $mid $hi
  cp ../configs/big5.gier default.gier
#         select(16) goes to punch, too:
  echo "Select3	00000030" >>default.gier
  echo "kb1_visible	00000000" >>default.gier
  echo "kb2_visible	00000000" >>default.gier
#               00000800 execute
#               00000400 buffer
#               00000100 drum
#               00000001 core
  echo "debug	00000D01" >>default.gier
  testit $mid
  flx2a </tmp/badout.flx >bad$mid.asc
  mv gier.debug gier.debug.$mid
  fgrep Execute gier.debug.$mid >gier.debug.exec.$mid
  sed 's/clock.*$//g' <gier.debug.exec.$mid >gier.debug.noclock.$mid
  if [ $result -ne 0 ]
  then
    echo $mid ok
    lastok=$mid
    lo=$mid
  else
    echo $mid bad
    hi=$mid
  fi
done

