<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
<channel>
  <title>Linux Format forums</title>
  <link>http://www.linuxformat.com/forums/index.php</link>
  <description>Help, discussion, magazine feedback and more</description>
  <language>english</language>
  <copyright>(c) Copyright Thu Jun 20, 2013 3:46 am by Linux Format forums</copyright>
  <managingEditor>webmaster@linuxformat.com</managingEditor>
  <webMaster>webmaster@linuxformat.com</webMaster>
  <pubDate>Thu Jun 20, 2013 3:46 am</pubDate>
  <lastBuildDate>Thu Jun 20, 2013 3:46 am</lastBuildDate>
  <docs>http://backend.userland.com/rss</docs>
  <generator>phpBB2 RSS Syndication Mod by Lucas</generator>
  <ttl>1</ttl>

  <image>
    <title>Linux Format forums</title>
    <url></url>
    <link>http://www.linuxformat.com/forums/</link>
    <description>Help, discussion, magazine feedback and more</description>
  </image>

                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=111125#111125</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Thu May 02, 2013 7:32 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Found 2 bugs and 1 programming error, yup there are bugs... ;oO&lt;br /&gt;
The bugs are esoteric but the error is stupidity on my part... ;oD&lt;br /&gt;
&lt;br /&gt;
I suspect none have been found by yourselves who are trying this out however...&lt;br /&gt;
&lt;br /&gt;
Removed the bash RANDOM call and used /dev/urandom instead. It is _infinitely_ quicker for the DEMO capture mode...&lt;br /&gt;
&lt;br /&gt;
The first of the _internal_sync_ routines done.&lt;br /&gt;
Help file updated, etc, etc...&lt;br /&gt;
&lt;br /&gt;
From Command mode:-&lt;br /&gt;
&lt;br /&gt;
TRIG&amp;lt;CR&amp;gt;&lt;br /&gt;
SYNCEQ&amp;lt;CR&amp;gt;&lt;br /&gt;
Caps shift u or caps shift d to decide a sync point from 15 to 240. Then &amp;lt;CR&amp;gt;...&lt;br /&gt;
This starts the display from the value set.&lt;br /&gt;
Do all this again and the trace will start from another point with the value chosen...&lt;br /&gt;
If the value is not found then the trace runs from the start of the waveform.raw file at the FASTEST timebase speed...&lt;br /&gt;
&lt;br /&gt;
Working on negative going SYNCLT and positive going SYNCGT ATM...&lt;br /&gt;
&lt;br /&gt;
The code has now had extensive testing on an ACER Aspire One netbook using PCLinuxOS 2009 in DEMO and DSP modes also...&lt;br /&gt;
&lt;br /&gt;
Before running delete your existing /default/full/path/to/AudioScope.config file so that the&lt;br /&gt;
changes can take place correctly... Also manually change the zero_offset value to give a centre straight line with 0 input voltage. It is now -2 on my Macbook Pro machine...&lt;br /&gt;
&lt;br /&gt;
(Also uploaded to &lt;a href=&quot;http://www.unix.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.unix.com/&lt;/a&gt; )&lt;br /&gt;
&lt;br /&gt;
Feedback would be welcome, TIA...&lt;br /&gt;
&lt;br /&gt;
Enjoy...&lt;br /&gt;
&lt;br /&gt;
Bazza...&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
#&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
# Many thanks also go to the guys who have helped with this on http&amp;#58;//www.linuxformat.com for all your input too...&lt;br /&gt;
#&lt;br /&gt;
# Tested in SOX mode on this Macbook Pro 13 inch, OSX 10.7.5 with the SOX sinewave generator enabled.&lt;br /&gt;
# Tested in /dev/dsp mode on an aging HP notebook running Debian 6.0.x with the /dev/dsp sinewave generator enabled.&lt;br /&gt;
# Tested on both in DEMO mode.&lt;br /&gt;
#&lt;br /&gt;
# Added the first simple circuit at the end of this script.&lt;br /&gt;
#&lt;br /&gt;
# NOTE TO SELF&amp;#58;- Remove &amp;quot;/tmp&amp;quot; and replace with &amp;quot;~&amp;quot; when ready, AND, &amp;quot;/tmp&amp;quot; is automatically cleared on this machine per reboot.&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR SOund eXchance USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR /dev/dsp USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments to use it.&lt;br /&gt;
# It assumes that you have /dev/dsp _installed_. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cat /tmp/sinewave.raw &amp;gt; /dev/dsp\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Variables in use.&lt;br /&gt;
ifs_str=$IFS&lt;br /&gt;
version=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.68_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
setup=&amp;quot; Please wait while the very first scan and configuration file is generated. &amp;quot;&lt;br /&gt;
# Default first time run capture mode, 0 = DEMO.&lt;br /&gt;
demo=0&lt;br /&gt;
# Draw proceedure mode, 0 = OFF&lt;br /&gt;
drawline=0&lt;br /&gt;
# Pseudo-continuous data file saving.&lt;br /&gt;
savefile=&amp;quot;0000000000&amp;quot;&lt;br /&gt;
save_string=&amp;quot;OFF&amp;quot;&lt;br /&gt;
# &amp;quot;hold&amp;quot; and &amp;quot;status&amp;quot; will always be reset to &amp;quot;1&amp;quot; on program exit.&lt;br /&gt;
hold=1&lt;br /&gt;
status=1&lt;br /&gt;
# &amp;quot;count&amp;quot;, &amp;quot;number&amp;quot; and &amp;quot;char&amp;quot; are reusable variables...&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;?&amp;quot;&lt;br /&gt;
# Vertical components...&lt;br /&gt;
# vert_one and vert_two are the vertical plotting points for the draw&amp;#40;&amp;#41; function...&lt;br /&gt;
vert_one=2&lt;br /&gt;
vert_two=2&lt;br /&gt;
vert=12&lt;br /&gt;
vert_shift=2&lt;br /&gt;
vshift=&amp;quot;?&amp;quot;&lt;br /&gt;
vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
vert_draw=9&lt;br /&gt;
# Display setup...&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
# Keyboard components...&lt;br /&gt;
kbinput=&amp;quot;?&amp;quot;&lt;br /&gt;
tbinput=1&lt;br /&gt;
# &amp;quot;str_len&amp;quot; is a reusable variable IF required...&lt;br /&gt;
str_len=1&lt;br /&gt;
# &amp;quot;grab&amp;quot; is used for internal pseudo-synchronisation...&lt;br /&gt;
grab=0&lt;br /&gt;
# &amp;quot;zero_offset&amp;quot; can only be manually changed in the AudioScope.config file, OR, here...&lt;br /&gt;
zero_offset=-2&lt;br /&gt;
# Horizontal components...&lt;br /&gt;
horiz=9&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=1&lt;br /&gt;
# Timebase variable components...&lt;br /&gt;
subscript=0&lt;br /&gt;
# &amp;quot;scan_start&amp;quot; is from 0 to &amp;#40; length of file - 64 &amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# &amp;quot;scan_jump&amp;quot; is from 1 to &amp;#40; &amp;#40; &amp;#40; scan_end - scan_start &amp;#41; / 64&amp;#41; + 1 &amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# &amp;quot;scan_end&amp;quot; is at least 64 bytes in from the absolute file end...&lt;br /&gt;
scan_end=47935&lt;br /&gt;
# Synchronisation variavles...&lt;br /&gt;
# synchronise switches the syncchroisation ON or OFF...&lt;br /&gt;
synchronise=&amp;quot;OFF&amp;quot;&lt;br /&gt;
# sync_point is any value between 15 and 240 of the REAL grab&amp;#40;s&amp;#41;...&lt;br /&gt;
sync_point=128&lt;br /&gt;
sync_input=&amp;quot;?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Add the program tilte to the Terminal title bar...&lt;br /&gt;
# This may NOT work in every Terminal so just comment it out if it doesn't.&lt;br /&gt;
printf &amp;quot;\x1B&amp;#93;0;Shell AudioScope.\x07&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Generate a config file and temporarily store inside /tmp&lt;br /&gt;
if &amp;#91; -f /tmp/AudioScope.config &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;. /tmp/AudioScope.config&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
fi&lt;br /&gt;
user_config&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=$demo\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;drawline=$drawline\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=$zero_offset\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=$scanloops\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=$scan_start\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=$scan_jump\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=$scan_end\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;vert_shift=$vert_shift\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$setup'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;save_string='$save_string'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|$setup|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set the colours for plotting.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Pick which method to capture, &amp;#40;and store&amp;#41;, the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 48000 bytes of random data.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use &amp;quot;sleep&amp;quot; to simulate a 1 second burst.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;/dev/urandom is now used instead of RANDOM as it is MUCH faster.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/urandom of=/tmp/waveform.raw bs=48000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 unsigned-integer bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Now tested on PCLinuxOS 2009 and Debian 6.0.x.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the unsigned-integer data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a small offset to give a straight line with zero input allowing for mid-point sound card bit error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $vert + $zero_offset &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 255 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Pseudo-vertical shift of + or - 1 vertical division maximum.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + $vert_shift &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the plot is NOT out of bounds after moving the shift position.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 17 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=17&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Generate a smple space delimited 64 sample array.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;$vert_array$vert &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This function connects up the plotted points.&lt;br /&gt;
# Defaults to OFF on the very first time run.&lt;br /&gt;
draw&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=&amp;quot; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;number=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_one=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_two=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_draw=&amp;#40; $vert_array &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..71&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Obtain the two vertical components.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_two=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now subtract them and obtain an absolute value - ALWAYS 0 to positive...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $vert_two - $vert_one &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#123;number#-&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This decision section _is_ needed.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP. Do nothing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This section does the drawing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one - 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_two -gt $vert_one &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -lt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one + 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 3 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Drawing the scan...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 4 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Synchroniastion set to $sync_point$synchronise...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 5 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;CAUTION, AUTO-SAVING FACILITY ENABLED!!!&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=$version&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$setup&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scan=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Rerun scans captured or stored.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Run scans in captured mode only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Swtich off capture mode and rerun one storage shot only, this disables the DRAW command.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Use DRAW to re-enable again. This is deliberate for slow machines...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Quit the program.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Display the _online_ HELP file in default terminal colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable DEMO pseudo-capture mode, default, but with 10 sweeps...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable /dev/dsp capture mode, if your Linux flavour does NOT have it, install oss-compat from the distro's repository.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# This is the mode used to test on Debian 6.0.x and now PCLinuxOS 2009...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=7935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Eable SOX capture mode, this code is designed around this application on a Macbook Pro 13 inch OSX 10.7.5...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The next three commands set the timebase scans; 1, 10 or 100 before COMMAND mode is re-enabled and can be used.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;VER&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=254&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ Horizontal components. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ User timebase section. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Written longhand for kids to understand.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TBVAR&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure capture mode is turned off.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase starting point. From 0 to $scan_end&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the timebase values are set to default before changing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan start point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_start&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$scan_end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use exactly the same method as above to determine the jump interval.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now set the jump interval, this is the scan speed...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase user speed. From 1 to $&amp;#91; &amp;#40; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#41; &amp;#93;&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan jump value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_jump&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse number for upper limit...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -ge $number &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$number&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;4fScan start at offset $scan_start, with a jump rate of $scan_jump.&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** User timebase section end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********* Calibrated timebase section. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;FASTEST&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;1mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 1mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;10mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 10mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;100mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 100mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Calibrated timebase end. ************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Vertical components. **************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ******** Pseudo-vertical shift control. *********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SHIFT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Vertical shift&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN&amp;#58;- &amp;quot; -n 1 -s vshift&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the shift psoition is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -ge 6 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -le -2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=-2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Vertical shift is $&amp;#91; &amp;#40; 2 - $vert_shift &amp;#41; &amp;#93; from the mid-point position...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ****** Pseudo-vertical shift control end. *******&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** Connect all plotted points. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DRAW&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=3&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Connected plots done. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# **** PSEUDO synchronisation and ptriggering. ****&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TRIG&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot; and OFF&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=128&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$&amp;#91; &amp;#40; $scan_start + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set trigger type, &amp;lt;CR&amp;gt; to disable&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCEQ&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot;, ON and fixed&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;trigger&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for subscript in $&amp;#40; seq $scan_start $scan_end &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $grab -eq $sync_point &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$subscript&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCGT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot;, ON and positive going&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;trigger&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP... Place holder only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCLT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot;, ON and negative going&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;trigger&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP... Place holder only...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;EXT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Remember Corona688's code from the early stages of this thread...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot;, EXTERNAL and waiting&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP... Place holder only,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ** PSEUDO synchronisation and triggering end. ***&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Auto-saving facility. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SAVEON&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=5&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;save_string=&amp;quot;ON&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SAVEOFF&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;save_string=&amp;quot;OFF&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Auto-saving facility end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Help clears the screen to the startup defaults and prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ................................................. Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ......................... Reruns the scan&amp;#40;s&amp;#41;, always with real captures.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................... Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; ................................................ This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ........................................ Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; .......... Switch capture to default DEMO mode and 10 continuous scans.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ...................... Switch capture to Linux /dev/dsp mode and 1 scan.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; ....... Switch capture to multi-platform SOund eXchange mode and 1 scan.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ......................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ........................................ Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ............. Sets the number of scans to 100, &amp;#40;not very practical&amp;#41;.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;VER&amp;lt;CR&amp;gt; .................. Displays the version number inside the status window.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TBVAR&amp;lt;CR&amp;gt; ............ Set up uncalibrated user timebase offset and jump points.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommands&amp;#58; ............................. Follow the on screen prompts.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;FASTEST&amp;lt;CR&amp;gt; .................. Set all modes to the fastest possible scan speed.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;1mS&amp;lt;CR&amp;gt; .......................................... Set scanning rate to 1mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;10mS&amp;lt;CR&amp;gt; ........................................ Set scanning rate to 10mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;100mS&amp;lt;CR&amp;gt; ...................................... Set scanning rate to 100mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SHIFT&amp;lt;CR&amp;gt; ............ Set the vertical position from -4 to +4 to the mid-point.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommands&amp;#58; ............ Press U or D then &amp;lt;CR&amp;gt; when value is obtained.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DRAW&amp;lt;CR&amp;gt; .......... Connect up each vertical plot to give a fully lined display.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TRIG&amp;lt;CR&amp;gt; ........... Sets the synchronisation methods for storage mode retraces.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCEQ ........ Set the internal SYNC to a fixed value only.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCGT ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCLT ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; EXT ............................................ Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SAVEON&amp;lt;CR&amp;gt; .................... Auto-saves EVERY scan with a numerical filename.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SAVEOFF&amp;lt;CR&amp;gt; ....................................... Disables auto-save facility.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;Manual here&amp;#58; &amp;lt;&amp;nbsp; http&amp;#58;//wisecracker.host22.com/public/AudioScope_Manual.readme&amp;nbsp; &amp;gt;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the active part of the pseudo-synchroisation section.&lt;br /&gt;
trigger&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Sync point&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN&amp;#58;- &amp;quot; -n 1 -s sync_input&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$sync_input&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$sync_input&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=$&amp;#91; &amp;#40; $sync_point + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$sync_input&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=$&amp;#91; &amp;#40; $sync_point - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the synchronisation point is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $sync_point -ge 240 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=240&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $sync_point -le 15 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=15&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Synchronisation point set to $sync_point...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
setup=$version&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;hold&amp;quot; determines a new captured scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $drawline -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;draw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$save_string&amp;quot; == &amp;quot;ON&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;savefile=`date +%s`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cp /tmp/waveform.raw /tmp/$savefile&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Getout, autosave AudioScope.config, cleanup and quit...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Save the user configuration file.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Remove &amp;quot;Shell AudioScope&amp;quot; from the title bar.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#93;0;\x07&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Reset back to normal...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# The FIRST extremely simple construction part.&lt;br /&gt;
# Photos will be upload somewhere very soon...&lt;br /&gt;
# This is a simple I/O board for testing for the Macbook Pro 13 inch...&lt;br /&gt;
# It is just as easy to replace the 4 pole 3.5mm Jack Plug with 2 x 3.5mm Stereo Jack&lt;br /&gt;
# Plugs for machines with separate I/O sockets.&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Orange.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;White flylead.&lt;br /&gt;
# Tip -----&amp;gt;&amp;nbsp; O&amp;nbsp; &amp;lt;------------------------------------+---------O &amp;lt;----------+--------+&lt;br /&gt;
# Ring 1 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;-------------------------+-----------&amp;#41;--------O &amp;lt;- Blue.&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Ring 2 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;--------------+-----+-----&amp;#41;----------&amp;#41;--------O &amp;lt;- Yellow. |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# _Gnd_ ---&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;----+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; C1 | +&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O &amp;lt;- Green.&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+===+&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp;=====&amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp;--+--&amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P1 |&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; R1 /&amp;nbsp; &amp;nbsp; &amp;nbsp;| R2 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R3 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R4 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \ /&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~~~&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+---------+------&amp;#41;---+----------+---------+------------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Pseudo-Ground. -&amp;gt; __|__&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/////&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-----------------------------------------------+&lt;br /&gt;
# P1 ......... 3.5mm, 4 pole jack plug.&lt;br /&gt;
# R1 ......... 2K2, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R2, R3 ..... 33R, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R4 ......... 1M, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# C1 ......... 47uF, 16V electrolytic.&lt;br /&gt;
# 4 way terminal block.&lt;br /&gt;
# Stripboard, &amp;#40;Verobaord&amp;#41;, as required.&lt;br /&gt;
# Green, yellow, orange, blue and white wire as required.&lt;br /&gt;
# Small cable ties, optional.&lt;br /&gt;
# Stick on cable clip, optional.&lt;br /&gt;
# Crimp terminal, 1 off, optional.&lt;br /&gt;
# #########################################################&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=111125#111125</comments>
                                        <author>Bazza</author>
                                        <pubDate>Thu May 02, 2013 7:32 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=111125#111125</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110953#110953</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=63'&gt;guy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Sun Apr 14, 2013 5:58 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      &lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Bazza wrote:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;quote&quot;&gt;Writing manuals takes hours...&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;&lt;br /&gt;
Some of us do it for a living. &lt;img src=&quot;images/smiles/icon_razz.gif&quot; alt=&quot;Razz&quot; border=&quot;0&quot; /&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110953#110953</comments>
                                        <author>guy</author>
                                        <pubDate>Sun Apr 14, 2013 5:58 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110953#110953</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110945#110945</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Sun Apr 14, 2013 3:17 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      A few updates along with a pointer inside the builtin help file to a Manual:-&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://wisecracker.host22.com/public/AudioScope_Manual.readme&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://wisecracker.host22.com/public/AudioScope_Manual.readme&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This Manual includes the first construction stage.&lt;br /&gt;
It is NOT finished but fully enough for the present stage(s)...&lt;br /&gt;
&lt;br /&gt;
The pseudo trigger and sync modes should be ready by the week end...&lt;br /&gt;
&lt;br /&gt;
I HAVE found a bug, and will be cured for the next version...&lt;br /&gt;
I suspect no one who has tried this will find it however...&lt;br /&gt;
&lt;br /&gt;
Writing manuals takes hours...&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
#&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
# Many thanks also go to the guys who have helped with this on http&amp;#58;//www.linuxformat.com for all your input too...&lt;br /&gt;
#&lt;br /&gt;
# Tested in SOX mode on this Macbook Pro 13 inch, OSX 10.7.5 with the SOX sinewave generator enabled.&lt;br /&gt;
# Tested in /dev/dsp mode on an aging HP notebook running Debian 6.0.x with the /dev/dsp sinewave generator enabled.&lt;br /&gt;
# Tested on both in DEMO mode.&lt;br /&gt;
#&lt;br /&gt;
# Added the first simple circuit at the end of this script.&lt;br /&gt;
#&lt;br /&gt;
# NOTE TO SELF&amp;#58;- Remove &amp;quot;/tmp&amp;quot; and replace with &amp;quot;~&amp;quot; when ready, AND, &amp;quot;/tmp&amp;quot; is automatically cleared on this machine per reboot.&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR SOund eXchance USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR /dev/dsp USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments to use it.&lt;br /&gt;
# It assumes that you have /dev/dsp _installed_. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cat /tmp/sinewave.raw &amp;gt; /dev/dsp\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Variables in use.&lt;br /&gt;
ifs_str=$IFS&lt;br /&gt;
version=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.55_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
setup=&amp;quot; Please wait while the very first scan and configuration file is generated. &amp;quot;&lt;br /&gt;
demo=0&lt;br /&gt;
drawline=0&lt;br /&gt;
savefile=&amp;quot;0000000000&amp;quot;&lt;br /&gt;
save_string=&amp;quot;OFF&amp;quot;&lt;br /&gt;
# &amp;quot;hold&amp;quot; and &amp;quot;status&amp;quot; will always be reset to &amp;quot;1&amp;quot; on program exit.&lt;br /&gt;
hold=1&lt;br /&gt;
status=1&lt;br /&gt;
# &amp;quot;count&amp;quot;, &amp;quot;number&amp;quot; and &amp;quot;char&amp;quot; are reusable variables.&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;?&amp;quot;&lt;br /&gt;
# vert_one and vert_two are the vertical plotting points for the draw&amp;#40;&amp;#41; function...&lt;br /&gt;
vert_one=2&lt;br /&gt;
vert_two=2&lt;br /&gt;
vert=12&lt;br /&gt;
vert_shift=2&lt;br /&gt;
vshift=&amp;quot;?&amp;quot;&lt;br /&gt;
vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
vert_draw=9&lt;br /&gt;
horiz=9&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
kbinput=&amp;quot;?&amp;quot;&lt;br /&gt;
tbinput=1&lt;br /&gt;
str_len=1&lt;br /&gt;
# &amp;quot;grab&amp;quot; is for future usage and reserved.&lt;br /&gt;
grab=0&lt;br /&gt;
# &amp;quot;zero_offset&amp;quot; can only be manually changed in the AudioScope.config file, OR, here...&lt;br /&gt;
zero_offset=1&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=1&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# scan_start is from 0 to &amp;#40; length of file - 64 &amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40; &amp;#40; &amp;#40; scan_end - scan_start &amp;#41; / 64&amp;#41; + 1 &amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_end=1935&lt;br /&gt;
# Synchronisation variavles...&lt;br /&gt;
# synchronise switches the syncchroisation ON or OFF...&lt;br /&gt;
synchronise=&amp;quot;OFF&amp;quot;&lt;br /&gt;
# sync_point is any value between 0 and 255 of the REAL grab&amp;#40;s&amp;#41;...&lt;br /&gt;
sync_point=128&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Add the program tilte to the Terminal title bar...&lt;br /&gt;
# This may NOT work in every Terminal so just comment it out if it doesn't.&lt;br /&gt;
printf &amp;quot;\x1B&amp;#93;0;Shell AudioScope.\x07&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Generate a config file and temporarily store inside /tmp&lt;br /&gt;
if &amp;#91; -f /tmp/AudioScope.config &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;. /tmp/AudioScope.config&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
fi&lt;br /&gt;
user_config&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=$demo\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;drawline=$drawline\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=$zero_offset\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=$scanloops\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=$scan_start\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=$scan_jump\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=$scan_end\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;vert_shift=$vert_shift\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$setup'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;save_string='$save_string'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|$setup|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set the colours for plotting.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Pick which method to store the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data. This may be slow on some older machines...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 unsigned-integer bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the unsigned-integer data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# The real &amp;quot;vert&amp;quot; value stored into &amp;quot;grab&amp;quot; for future use.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=$vert&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a small offset to give a straight line with zero input allowing for mid-point sound card bit error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $vert + $zero_offset &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 255 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Pseudo-vertical shift of + or - 1 vertical division maximum.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + $vert_shift &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the plot is NOT out of bounds after moving the shift position.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 17 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=17&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Generate a smple space delimited 64 sample array.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;$vert_array$vert &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This function connects up the plotted points in non-capture mode ONLY.&lt;br /&gt;
draw&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=&amp;quot; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;number=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_one=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_two=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_draw=&amp;#40; $vert_array &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..71&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Obtain the two vertical components.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_two=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now subtract them and obtain an absolute value - ALWAYS 0 to positive...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $vert_two - $vert_one &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#123;number#-&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This decision section is needed.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP. Do nothing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This section does the drawing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one - 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_two -gt $vert_one &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -lt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one + 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# this is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 3 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Drawing the scan...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 4 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Synchroniastion enabled and set to $sync_point...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 5 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;CAUTION, AUTO-SAVING FACILITY ENABLED!!!&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=$version&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$setup&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
# This line is no longer used&amp;#58;- kbinput=`printf &amp;quot;$kbinput&amp;quot; | tr &amp;#91;&amp;#58;lower&amp;#58;&amp;#93; &amp;#91;&amp;#58;upper&amp;#58;&amp;#93;`&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scan=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Rerun scans captured or stored.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Run scans in captured mode only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Swtich off capture mode and rerun one storage shot only&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Quit the program.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Display the _online_ HELP file in default terminal colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable DEMO pseudo-capture mode, default.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=1935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable /dev/dsp capture mode, if your Linux flavour does NOT have it, install oss-compat from the distro's repository.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# This is the mode used to test on Debian 6.0.x...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=7935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Eable SOX capture mode, this code is designed around this application on a Macbook Pro 13 inch OSX 10.7.5...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The next three commands set the timebase scans; 1, 10 or 100 before COMMAND mode is re-enabled and can be used.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;VER&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=254&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ Horizontal components. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ User timebase section. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Written longhand for kids to understand.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TBVAR&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure capture mode is turned off.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase starting point. From 0 to $scan_end&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the timebase values are set to default before changing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan start point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_start&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$scan_end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use exactly the same method as above to determine the jump interval.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now set the jump interval, this is the scan speed...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase user speed. From 1 to $&amp;#91; &amp;#40; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#41; &amp;#93;&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan jump value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_jump&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse number for upper limit...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -ge $number &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$number&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;4fScan start at offset $scan_start, with a jump rate of $scan_jump.&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** User timebase section end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********* Calibrated timebase section. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;FASTEST&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;1mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 1mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;10mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 10mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;100mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 100mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=25&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Calibrated timebase end. ************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Vertical components. **************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ******** Pseudo-vertical shift control. *********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SHIFT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Vertical shift&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN &amp;quot; -n 1 -s vshift&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the shift psoition is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -ge 6 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -le -2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=-2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Vertical shift is $&amp;#91; &amp;#40; $vert_shift - 2 &amp;#41; &amp;#93; from the mid-point position...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ****** Pseudo-vertical shift control end. *******&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** Connect all plotted points. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DRAW&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=3&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Connected plots done. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# **** PSEUDO synchronisation and ptriggering. ****&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TRIG&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot;OFF&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=128&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set trigger range&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCEQ&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCGT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCLT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ** PSEUDO synchronisation and triggering end. ***&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Auto-saving facility. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SAVEON&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=5&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;save_string=&amp;quot;ON&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SAVEOFF&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;save_string=&amp;quot;OFF&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Auto-saving facility end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Help clears the screen to the startup defaults and prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ................................................. Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ......................... Reruns the scan&amp;#40;s&amp;#41;, always with real captures.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................... Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; ................................................ This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ........................................ Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; .......... Switch capture to default DEMO mode and 10 continuous scans.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ...................... Switch capture to Linux /dev/dsp mode and 1 scan.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; ....... Switch capture to multi-platform SOund eXchange mode and 1 scan.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ......................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ........................................ Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ............. Sets the number of scans to 100, &amp;#40;not very practical&amp;#41;.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;VER&amp;lt;CR&amp;gt; .................. Displays the version number inside the status window.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TBVAR&amp;lt;CR&amp;gt; ............ Set up uncalibrated user timebase offset and jump points.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommands&amp;#58; ............................. Follow the on screen prompts.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;FASTEST&amp;lt;CR&amp;gt; .................. Set all modes to the fastest possible scan speed.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;1mS&amp;lt;CR&amp;gt; ............ &amp;#40;Not available in DEMO mode.&amp;#41; Set scanning rate to 1mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;10mS&amp;lt;CR&amp;gt; ............. &amp;#40;Inaccurate in DEMO mode.&amp;#41; Set scanning rate to 10mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;100mS&amp;lt;CR&amp;gt; ...................................... Set scanning rate to 100mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SHIFT&amp;lt;CR&amp;gt; ............ Set the vertical position from -4 to +4 to the mid-point.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommands&amp;#58; ............ Press U or D then &amp;lt;CR&amp;gt; when value is obtained.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DRAW&amp;lt;CR&amp;gt; .......... Connect up each vertical plot to give a fully lined display.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TRIG&amp;lt;CR&amp;gt; ............. Sets the synchronisation point for storage mode retraces.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCEQ ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCGT ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCLT ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SAVEON&amp;lt;CR&amp;gt; .................... Auto-saves EVERY scan with a numerical filename.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SAVEOFF&amp;lt;CR&amp;gt; ....................................... Disables auto-save facility.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\nManual here&amp;#58;&amp;nbsp; &amp;lt; http&amp;#58;//wisecracker.host22.com/public/AudioScope_Manual.readme &amp;gt; \n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
setup=$version&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;hold&amp;quot; determines a new captured scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $drawline -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;draw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$save_string&amp;quot; == &amp;quot;ON&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;savefile=`date +%s`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cp /tmp/waveform.raw /tmp/$savefile&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Getout, autosave AudioScope.config, cleanup and quit...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Save the user configuration file.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Remove &amp;quot;Shell AudioScope&amp;quot; from the title bar.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#93;0;\x07&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Reset back to normal...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# The FIRST extremely simple construction part.&lt;br /&gt;
# Photos will be upload somewhere very soon...&lt;br /&gt;
# This is a simple I/O board for testing for the Macbook Pro 13 inch...&lt;br /&gt;
# It is just as easy to replace the 4 pole 3.5mm Jack Plug with 2 x 3.5mm Stereo Jack&lt;br /&gt;
# Plugs for machines with separate I/O sockets.&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Orange.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;White flylead.&lt;br /&gt;
# Tip -----&amp;gt;&amp;nbsp; O&amp;nbsp; &amp;lt;------------------------------------+---------O &amp;lt;----------+--------+&lt;br /&gt;
# Ring 1 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;-------------------------+-----------&amp;#41;--------O &amp;lt;- Blue.&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Ring 2 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;--------------+-----+-----&amp;#41;----------&amp;#41;--------O &amp;lt;- Yellow. |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# _Gnd_ ---&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;----+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; C1 | +&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O &amp;lt;- Green.&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+===+&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp;=====&amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp;--+--&amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P1 |&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; R1 /&amp;nbsp; &amp;nbsp; &amp;nbsp;| R2 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R3 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R4 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \ /&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~~~&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+---------+------&amp;#41;---+----------+---------+------------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Pseudo-Ground. -&amp;gt; __|__&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/////&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-----------------------------------------------+&lt;br /&gt;
# P1 ......... 3.5mm, 4 pole jack plug.&lt;br /&gt;
# R1 ......... 2K2, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R2, R3 ..... 33R, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R4 ......... 1M, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# C1 ......... 47uF, 16V electrolytic.&lt;br /&gt;
# 4 way terminal block.&lt;br /&gt;
# Stripboard, &amp;#40;Verobaord&amp;#41;, as required.&lt;br /&gt;
# Green, yellow, orange, blue and white wire as required.&lt;br /&gt;
# Small cable ties, optional.&lt;br /&gt;
# Stick on cable clip, optional.&lt;br /&gt;
# Crimp terminal, 1 off, optional.&lt;br /&gt;
# #########################################################&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110945#110945</comments>
                                        <author>Bazza</author>
                                        <pubDate>Sun Apr 14, 2013 3:17 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110945#110945</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110888#110888</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Mon Apr 08, 2013 7:07 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      This upload now has all the deliberate slowing down &amp;quot;sleep 1&amp;quot; lines removed and placed into the correct positions and a general cleanup.&lt;br /&gt;
&lt;br /&gt;
It is also here and has been voted 5 stars, I am gobsmacked:-&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.unix.com/shell-programming-scripting/212939-start-simple-audio-scope-shell-script.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.unix.com/shell-programming-scripting/212939-start-simple-audio-scope-shell-script.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The start of the internal synchronisation code is started and an auto-save facility added.&lt;br /&gt;
&lt;br /&gt;
This auto-save is _volatile_ so use with caution. By volatile I mean, when enabled it WILL save a copy of EVERY scan whether it is a capture or a replay.&lt;br /&gt;
&lt;br /&gt;
It is easy to code for capture only but I decided to do every scan because it is easier to delete files than try to get them back again. The filemanes are _numeric_ using EPOCH values and saved to /tmp ATM...&lt;br /&gt;
&lt;br /&gt;
The new commands are SAVEON, SAVEOFF, TIRG with unfinished subcommands of SYNCEQ, SYNCGT and SYNCLT. I am working on these in the evenings, UK local time and should be ready by the weekend.&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
#&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
# Many thanks also go to the guys who have helped with this on http&amp;#58;//www.linuxformat.com for all your input too...&lt;br /&gt;
#&lt;br /&gt;
# Tested in SOX mode on this Macbook Pro 13 inch, OSX 10.7.5 with the SOX sinewave generator enabled.&lt;br /&gt;
# Tested in /dev/dsp mode on an aging HP notebook running Debian 6.0.x with the /dev/dsp sinewave generator enabled.&lt;br /&gt;
# Tested on both in DEMO mode.&lt;br /&gt;
#&lt;br /&gt;
# Added the first simple circuit at the end of this script.&lt;br /&gt;
#&lt;br /&gt;
# NOTE TO SELF&amp;#58;- Remove &amp;quot;/tmp&amp;quot; and replace with &amp;quot;~&amp;quot; when ready, AND, &amp;quot;/tmp&amp;quot; is automatically cleared on this machine per reboot.&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR SOund eXchance USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR /dev/dsp USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments to use it.&lt;br /&gt;
# It assumes that you have /dev/dsp _installed_. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cat /tmp/sinewave.raw &amp;gt; /dev/dsp\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Variables in use.&lt;br /&gt;
ifs_str=$IFS&lt;br /&gt;
version=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.50_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
setup=&amp;quot; Please wait while the very first scan and configuration file is generated. &amp;quot;&lt;br /&gt;
demo=0&lt;br /&gt;
drawline=0&lt;br /&gt;
savefile=&amp;quot;0000000000&amp;quot;&lt;br /&gt;
save_string=&amp;quot;OFF&amp;quot;&lt;br /&gt;
# &amp;quot;hold&amp;quot; and &amp;quot;status&amp;quot; will always be reset to &amp;quot;1&amp;quot; on program exit.&lt;br /&gt;
hold=1&lt;br /&gt;
status=1&lt;br /&gt;
# &amp;quot;count&amp;quot;, &amp;quot;number&amp;quot; and &amp;quot;char&amp;quot; are reusable variables.&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;?&amp;quot;&lt;br /&gt;
# vert_one and vert_two are the vertical plotting points for the draw&amp;#40;&amp;#41; function...&lt;br /&gt;
vert_one=2&lt;br /&gt;
vert_two=2&lt;br /&gt;
vert=12&lt;br /&gt;
vert_shift=2&lt;br /&gt;
vshift=&amp;quot;?&amp;quot;&lt;br /&gt;
vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
vert_draw=9&lt;br /&gt;
horiz=9&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
kbinput=&amp;quot;?&amp;quot;&lt;br /&gt;
tbinput=1&lt;br /&gt;
str_len=1&lt;br /&gt;
# &amp;quot;grab&amp;quot; is for future usage and reserved.&lt;br /&gt;
grab=0&lt;br /&gt;
# &amp;quot;zero_offset&amp;quot; can only be manually changed in the AudioScope.config file, OR, here...&lt;br /&gt;
zero_offset=1&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=1&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# scan_start is from 0 to &amp;#40; length of file - 64 &amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40; &amp;#40; &amp;#40; scan_end - scan_start &amp;#41; / 64&amp;#41; + 1 &amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_end=1935&lt;br /&gt;
# Synchronisation variavles...&lt;br /&gt;
# synchronise switches the syncchroisation ON or OFF...&lt;br /&gt;
synchronise=&amp;quot;OFF&amp;quot;&lt;br /&gt;
# sync_point is any value between 0 and 255 of the REAL grab&amp;#40;s&amp;#41;...&lt;br /&gt;
sync_point=128&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Add the program tilte to the Terminal title bar...&lt;br /&gt;
# This may NOT work in every Terminal so just comment it out if it doesn't.&lt;br /&gt;
printf &amp;quot;\x1B&amp;#93;0;Shell AudioScope.\x07&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Generate a config file and temporarily store inside /tmp&lt;br /&gt;
if &amp;#91; -f /tmp/AudioScope.config &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;. /tmp/AudioScope.config&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
fi&lt;br /&gt;
user_config&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=$demo\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;drawline=$drawline\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=$zero_offset\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=$scanloops\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=$scan_start\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=$scan_jump\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=$scan_end\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;vert_shift=$vert_shift\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$setup'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;save_string='$save_string'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|$setup|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set the colours for plotting.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Pick which method to store the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data. This may be slow on some older machines...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 unsigned-integer bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the unsigned-integer data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# The real &amp;quot;vert&amp;quot; value stored into &amp;quot;grab&amp;quot; for future use.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=$vert&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a small offset to give a straight line with zero input allowing for mid-point sound card bit error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $vert + $zero_offset &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 255 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Pseudo-vertical shift of + or - 1 vertical division maximum.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + $vert_shift &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the plot is NOT out of bounds after moving the shift position.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 17 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=17&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Generate a smple space delimited 64 sample array.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;$vert_array$vert &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This function connects up the plotted points in non-capture mode ONLY.&lt;br /&gt;
draw&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=&amp;quot; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;number=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_one=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_two=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_draw=&amp;#40; $vert_array &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..71&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Obtain the two vertical components.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_two=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now subtract them and obtain an absolute value - ALWAYS 0 to positive...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $vert_two - $vert_one &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#123;number#-&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This decision section is needed.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP. Do nothing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This section does the drawing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one - 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_two -gt $vert_one &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -lt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one + 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# this is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 3 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Drawing the scan...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 4 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Synchroniastion enabled and set to $sync_point...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 5 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;CAUTION, AUTO-SAVING FACILITY ENABLED!!!&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=$version&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$setup&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
# This line is no longer used&amp;#58;- kbinput=`printf &amp;quot;$kbinput&amp;quot; | tr &amp;#91;&amp;#58;lower&amp;#58;&amp;#93; &amp;#91;&amp;#58;upper&amp;#58;&amp;#93;`&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scan=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Rerun scans captured or stored.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Run scans in captured mode only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Swtich off capture mode and rerun one storage shot only&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Quit the program.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Display the _online_ HELP file in default terminal colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable DEMO pseudo-capture mode, default.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=1935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable /dev/dsp capture mode, if your Linux flavour does NOT have it, install oss-compat from the distro's repository.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# This is the mode used to test on Debian 6.0.x...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=7935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Eable SOX capture mode, this code is designed around this application on a Macbook Pro 13 inch OSX 10.7.5...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The next three commands set the timebase scans; 1, 10 or 100 before COMMAND mode is re-enabled and can be used.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;VER&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=254&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ Horizontal components. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ User timebase section. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Written longhand for kids to understand.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TBVAR&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure capture mode is turned off.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase starting point. From 0 to $scan_end&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the timebase values are set to default before changing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan start point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_start&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$scan_end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use exactly the same method as above to determine the jump interval.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now set the jump interval, this is the scan speed...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase user speed. From 1 to $&amp;#91; &amp;#40; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#41; &amp;#93;&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan jump value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_jump&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse number for upper limit...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -ge $number &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$number&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;4fScan start at offset $scan_start, with a jump rate of $scan_jump.&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** User timebase section end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********* Calibrated timebase section. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;FASTEST&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;1mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 1mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;10mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 10mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;100mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 100mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=25&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Calibrated timebase end. ************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Vertical components. **************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ******** Pseudo-vertical shift control. *********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SHIFT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Vertical shift&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN &amp;quot; -n 1 -s vshift&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the shift psoition is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -ge 6 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -le -2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=-2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Vertical shift is $&amp;#91; &amp;#40; $vert_shift - 2 &amp;#41; &amp;#93; from the mid-point position...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ****** Pseudo-vertical shift control end. *******&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** Connect all plotted points. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DRAW&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=3&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Connected plots done. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# **** PSEUDO synchronisation and ptriggering. ****&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TRIG&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;synchronise=&amp;quot;OFF&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sync_point=128&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set trigger range&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCEQ&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCGT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SYNCLT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=4&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ** PSEUDO synchronisation and triggering end. ***&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Auto-saving facility. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SAVEON&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=5&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;save_string=&amp;quot;ON&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SAVEOFF&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;save_string=&amp;quot;OFF&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Auto-saving facility end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Help clears the screen to the startup defaults and prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ................................................. Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ......................... Reruns the scan&amp;#40;s&amp;#41;, always with real captures.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................... Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; ................................................ This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ........................................ Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; .......... Switch capture to default DEMO mode and 10 continuous scans.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ...................... Switch capture to Linux /dev/dsp mode and 1 scan.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; ....... Switch capture to multi-platform SOund eXchange mode and 1 scan.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ......................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ........................................ Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ............. Sets the number of scans to 100, &amp;#40;not very practical&amp;#41;.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;VER&amp;lt;CR&amp;gt; .................. Displays the version number inside the status window.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TBVAR&amp;lt;CR&amp;gt; ............ Set up uncalibrated user timebase offset and jump points.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommands&amp;#58; ............................. Follow the on screen prompts.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;FASTEST&amp;lt;CR&amp;gt; .................. Set all modes to the fastest possible scan speed.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;1mS&amp;lt;CR&amp;gt; ............ &amp;#40;Not available in DEMO mode.&amp;#41; Set scanning rate to 1mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;10mS&amp;lt;CR&amp;gt; ............. &amp;#40;Inaccurate in DEMO mode.&amp;#41; Set scanning rate to 10mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;100mS&amp;lt;CR&amp;gt; ...................................... Set scanning rate to 100mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SHIFT&amp;lt;CR&amp;gt; ............ Set the vertical position from -4 to +4 to the mid-point.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommands&amp;#58; ............ Press U or D then &amp;lt;CR&amp;gt; when value is obtained.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DRAW&amp;lt;CR&amp;gt; .......... Connect up each vertical plot to give a fully lined display.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TRIG&amp;lt;CR&amp;gt; ............. Sets the synchronisation point for storage mode retraces.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCEQ ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCGT ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SubCommand&amp;#58; SYNCLT ......................................... Unfinished.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SAVEON&amp;lt;CR&amp;gt; .................... Auto-saves EVERY scan with a numerical filename.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SAVEOFF&amp;lt;CR&amp;gt; ....................................... Disables auto-save facility.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
setup=$version&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;hold&amp;quot; determines a new captured scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $drawline -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;draw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$save_string&amp;quot; == &amp;quot;ON&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;savefile=`date +%s`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cp /tmp/waveform.raw /tmp/$savefile&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Getout, autosave AudioScope.config, cleanup and quit...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# The first extremely simple construction part.&lt;br /&gt;
# Photos will be upload somewhere very soon...&lt;br /&gt;
# This is a simple I/O board for testing for the Macbook Pro 13 inch...&lt;br /&gt;
# It is just as easy to replace the 4 pole 3.5mm Jack Plug with 2 x 3.5mm Stereo Jack&lt;br /&gt;
# Plugs for machines with separate I/O sockets.&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Orange.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;White flylead.&lt;br /&gt;
# Tip -----&amp;gt;&amp;nbsp; O&amp;nbsp; &amp;lt;------------------------------------+---------O &amp;lt;----------+--------+&lt;br /&gt;
# Ring 1 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;-------------------------+-----------&amp;#41;--------O &amp;lt;- Blue.&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Ring 2 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;--------------+-----+-----&amp;#41;----------&amp;#41;--------O &amp;lt;- Yellow. |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# _Gnd_ ---&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;----+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; C1 | +&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O &amp;lt;- Green.&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+===+&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp;=====&amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp;--+--&amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P1 |&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; R1 /&amp;nbsp; &amp;nbsp; &amp;nbsp;| R2 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R3 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R4 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \ /&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~~~&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+---------+------&amp;#41;---+----------+---------+------------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Pseudo-Ground. -&amp;gt; __|__&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/////&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-----------------------------------------------+&lt;br /&gt;
# P1 ......... 3.5mm, 4 pole jack plug.&lt;br /&gt;
# R1 ......... 2K2, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R2, R3 ..... 33R, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R4 ......... 1M, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# C1 ......... 47uF, 16V electrolytic.&lt;br /&gt;
# 4 way terminal block.&lt;br /&gt;
# Stripboard, &amp;#40;Verobaord&amp;#41;, as required.&lt;br /&gt;
# Green, yellow, orange, blue and white wire as required.&lt;br /&gt;
# #########################################################&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110888#110888</comments>
                                        <author>Bazza</author>
                                        <pubDate>Mon Apr 08, 2013 7:07 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110888#110888</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110873#110873</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Sun Apr 07, 2013 10:23 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      The DRAW command now works immediately after a REAL scan...&lt;br /&gt;
(On the first run it defaults to OFF for slow machines.)&lt;br /&gt;
It can be turned off using the HOLD command...&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://wisecracker.host22.com/public/cal_plot.jpg&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://wisecracker.host22.com/public/cal_plot.jpg&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://wisecracker.host22.com/public/cal_draw.jpg&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://wisecracker.host22.com/public/cal_draw.jpg&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The two images are the SOX sinewave generator auto-running from&lt;br /&gt;
the script with the earphone output connected to the mic input using the home&lt;br /&gt;
built hardware previously shown and the levels set using the output volume&lt;br /&gt;
and mic input controls.&lt;br /&gt;
&lt;br /&gt;
The TBVAR set at 3 in and 3 jump for easy viewing, equvalent to 500uS/DIV,&lt;br /&gt;
proving the horizontal calibration is correct, 2 divisions per cycle...&lt;br /&gt;
&lt;br /&gt;
Set to 1mS/DIV and you will see the calibrtaion is correct.&lt;br /&gt;
&lt;br /&gt;
EDIT: Just removed a copy and paste error by me. It does not affect the&lt;br /&gt;
program at all...&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
#&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
# Many thanks also go to the guys who have helped with this on http&amp;#58;//www.linuxformat.com for all your input too...&lt;br /&gt;
#&lt;br /&gt;
# Tested in SOX mode on this Macbook Pro 13 inch, OSX 10.7.5 with the SOX sinewave generator enabled.&lt;br /&gt;
# Tested in /dev/dsp mode on an aging HP notebook running Debian 6.0.x with the /dev/dsp sinewave generator enabled.&lt;br /&gt;
# Tested on both in DEMO mode.&lt;br /&gt;
#&lt;br /&gt;
# Added the first simple circuit at the end of this script.&lt;br /&gt;
#&lt;br /&gt;
# NOTE TO SELF&amp;#58;- Remove &amp;quot;/tmp&amp;quot; and replace with &amp;quot;~&amp;quot; when ready, AND, &amp;quot;/tmp&amp;quot; is automatically cleared on this machine per reboot.&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR SOund eXchance USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR /dev/dsp USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments to use it.&lt;br /&gt;
# It assumes that you have /dev/dsp _installed_. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cat /tmp/sinewave.raw &amp;gt; /dev/dsp\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Variables in use.&lt;br /&gt;
ifs_str=$IFS&lt;br /&gt;
version=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.38_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
setup=$version&lt;br /&gt;
demo=0&lt;br /&gt;
drawline=0&lt;br /&gt;
# &amp;quot;hold&amp;quot; and &amp;quot;status&amp;quot; will always be reset to &amp;quot;1&amp;quot; on program exit.&lt;br /&gt;
hold=1&lt;br /&gt;
status=1&lt;br /&gt;
# &amp;quot;count&amp;quot;, &amp;quot;number&amp;quot; and &amp;quot;char&amp;quot; are reusable variables.&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;?&amp;quot;&lt;br /&gt;
# vert_one and vert_two are the vertical plotting points for the draw&amp;#40;&amp;#41; function...&lt;br /&gt;
vert_one=2&lt;br /&gt;
vert_two=2&lt;br /&gt;
vert=12&lt;br /&gt;
vert_shift=2&lt;br /&gt;
vshift=&amp;quot;?&amp;quot;&lt;br /&gt;
vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
vert_draw=9&lt;br /&gt;
horiz=9&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
kbinput=&amp;quot;?&amp;quot;&lt;br /&gt;
tbinput=1&lt;br /&gt;
str_len=1&lt;br /&gt;
# &amp;quot;grab&amp;quot; is for future usage and reserved.&lt;br /&gt;
grab=0&lt;br /&gt;
# &amp;quot;zero_offset&amp;quot; can only be manually changed in the AudioScope.config file, OR, here...&lt;br /&gt;
zero_offset=1&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=1&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# scan_start is from 0 to &amp;#40; length of file - 64 &amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40; &amp;#40; &amp;#40; scan_end - scan_start &amp;#41; / 64&amp;#41; + 1 &amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_end=1935&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Add the program tilte to the Terminal title bar...&lt;br /&gt;
# This may NOT work in every Terminal so just comment it out if it doesn't.&lt;br /&gt;
printf &amp;quot;\x1B&amp;#93;0;Shell AudioScope.\x07&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Generate a config file and temporarily store inside /tmp&lt;br /&gt;
if &amp;#91; -f /tmp/AudioScope.config &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;. /tmp/AudioScope.config&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
fi&lt;br /&gt;
user_config&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=$demo\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;drawline=$drawline\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=$zero_offset\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=$scanloops\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=$scan_start\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=$scan_jump\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=$scan_end\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;vert_shift=$vert_shift\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$setup'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|$setup|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set the colours for plotting.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Pick which method to store the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data. This may be slow on some older machines...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 unsigned-integer bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the unsigned-integer data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# The real &amp;quot;vert&amp;quot; value stored into &amp;quot;grab&amp;quot; for future use.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=$vert&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a small offset to give a straight line with zero input allowing for mid-point sound card bit error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $vert + $zero_offset &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 255 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Pseudo-vertical shift of + or - 1 vertical division maximum.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + $vert_shift &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the plot is NOT out of bounds after moving the shift position.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 17 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=17&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Generate a smple space delimited 64 sample array.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;$vert_array$vert &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $drawline -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;draw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This function connects up the plotted points in non-capture mode ONLY.&lt;br /&gt;
draw&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=&amp;quot; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;number=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_one=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_two=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_draw=&amp;#40; $vert_array &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..71&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Obtain the two vertical components.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_two=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now subtract them and obtain an absolute value - ALWAYS 0 to positive...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $vert_two - $vert_one &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#123;number#-&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This decision section is needed.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP. Do nothing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This section does the drawing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one - 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_two -gt $vert_one &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -lt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one + 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# this is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 3 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Drawing the scan...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$version&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
# This line is no longer used&amp;#58;- kbinput=`printf &amp;quot;$kbinput&amp;quot; | tr &amp;#91;&amp;#58;lower&amp;#58;&amp;#93; &amp;#91;&amp;#58;upper&amp;#58;&amp;#93;`&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scan=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Rerun scans captured or stored.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Run scans in captured mode only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Swtich off capture mode and rerun one storage shot only&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Quit the program.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Display the _online_ HELP file in default terminal colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable DEMO pseudo-capture mode, default.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=1935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable /dev/dsp capture mode, if your Linux flavour does NOT have it, install oss-compat from the distro's repository.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# This is the mode used to test on Debian 6.0.x...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=7935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Eable SOX capture mode, this code is designed around this application on a Macbook Pro 13 inch OSX 10.7.5...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The next three commands set the timebase scans; 1, 10 or 100 before COMMAND mode is re-enabled and can be used.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;VER&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=254&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ Horizontal components. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ User timebase section. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Written longhand for kids to understand.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TBVAR&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure capture mode is turned off.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase starting point. From 0 to $scan_end&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the timebase values are set to default before changing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan start point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_start&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$scan_end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use exactly the same method as above to determine the jump interval.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now set the jump interval, this is the scan speed...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase user speed. From 1 to $&amp;#91; &amp;#40; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#41; &amp;#93;&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan jump value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_jump&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse number for upper limit...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -ge $number &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$number&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;4fScan start at offset $scan_start, with a jump rate of $scan_jump.&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** User timebase section end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********* Calibrated timebase section. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;FASTEST&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;1mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 1mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;10mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 10mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;100mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 100mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=25&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Calibrated timebase end. ************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Vertical components. **************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ******** Pseudo-vertical shift control. *********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SHIFT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Vertical shift&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN &amp;quot; -n 1 -s vshift&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the shift psoition is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -ge 6 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -le -2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=-2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Vertical shift is $&amp;#91; &amp;#40; $vert_shift - 2 &amp;#41; &amp;#93; from the mid-point position...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ****** Pseudo-vertical shift control end. *******&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** Connect all plotted points. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DRAW&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;drawline=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=3&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;draw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Connected plots done. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Help clears the screen to the startup defaults and prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ................................................. Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ......................... Reruns the scan&amp;#40;s&amp;#41;, always with real captures.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................... Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; ................................................ This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ........................................ Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; .................................. Switch capture to default DEMO mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ................................. Switch capture to Linux /dev/dsp mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; .................. Switch capture to multi-platform SOund eXchange mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ......................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ........................................ Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ................................... Sets the number of scans to 100.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;VER&amp;lt;CR&amp;gt; ................. Displays the version number inside the status windows.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TBVAR&amp;lt;CR&amp;gt; ............ Set up uncalibrated user timebase offset and jump points.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;FASTEST&amp;lt;CR&amp;gt; .................. Set all modes to the fastest possible scan speed.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;1mS&amp;lt;CR&amp;gt; ............ &amp;#40;Not available in DEMO mode.&amp;#41; Set scanning rate to 1mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;10mS&amp;lt;CR&amp;gt; ............. &amp;#40;Inaccurate in DEMO mode.&amp;#41; Set scanning rate to 10mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;100mS&amp;lt;CR&amp;gt; ...................................... Set scanning rate to 100mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SHIFT&amp;lt;CR&amp;gt; ............ Set the vertical position from -4 to +4 to the mid-point.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DRAW&amp;lt;CR&amp;gt; .......... Connect up each vertical plot to give a fully lined display.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;hold&amp;quot; determines a new captured scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Getout, autosave AudioScope.config, cleanup and quit...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;user_config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# The first extremely simple construction part.&lt;br /&gt;
# Photos will be upload somewhere very soon...&lt;br /&gt;
# This is a simple I/O board for testing for the Macbook Pro 13 inch...&lt;br /&gt;
# It is just as easy to replace the 4 pole 3.5mm Jack Plug with 2 x 3.5mm Stereo Jack&lt;br /&gt;
# Plugs for machines with separate I/O sockets.&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Orange.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;White flylead.&lt;br /&gt;
# Tip -----&amp;gt;&amp;nbsp; O&amp;nbsp; &amp;lt;------------------------------------+---------O &amp;lt;----------+--------+&lt;br /&gt;
# Ring 1 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;-------------------------+-----------&amp;#41;--------O &amp;lt;- Blue.&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Ring 2 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;--------------+-----+-----&amp;#41;----------&amp;#41;--------O &amp;lt;- Yellow. |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# _Gnd_ ---&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;----+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; C1 | +&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O &amp;lt;- Green.&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+===+&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp;=====&amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp;--+--&amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P1 |&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; R1 /&amp;nbsp; &amp;nbsp; &amp;nbsp;| R2 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R3 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R4 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \ /&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~~~&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+---------+------&amp;#41;---+----------+---------+------------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Pseudo-Ground. -&amp;gt; __|__&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/////&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-----------------------------------------------+&lt;br /&gt;
# P1 ......... 3.5mm, 4 pole jack plug.&lt;br /&gt;
# R1 ......... 2K2, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R2, R3 ..... 33R, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R4 ......... 1M, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# C1 ......... 47uF, 16V electrolytic.&lt;br /&gt;
# 4 way terminal block.&lt;br /&gt;
# Stripboard, &amp;#40;Verobaord&amp;#41;, as required.&lt;br /&gt;
# Green, yellow, orange, blue and white wire as required.&lt;br /&gt;
# #########################################################&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110873#110873</comments>
                                        <author>Bazza</author>
                                        <pubDate>Sun Apr 07, 2013 10:23 am</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110873#110873</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110823#110823</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Tue Apr 02, 2013 3:26 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi guy...&lt;br /&gt;
(Apologies for typos...)&lt;br /&gt;
&lt;br /&gt;
&amp;gt; That is one truly awesome shell script.&lt;br /&gt;
&lt;br /&gt;
Thank you sir, I take that as a compliment... ;o)&lt;br /&gt;
&lt;br /&gt;
&amp;gt; How about adding an FFT to display real-time frequency spectra?&lt;br /&gt;
&lt;br /&gt;
Ha ha, If I was clever enough I would... ;oD&lt;br /&gt;
&lt;br /&gt;
&amp;gt; More seriously, could it divide usefully into separate I/O, Control and Display scripts?&lt;br /&gt;
&lt;br /&gt;
Quite possibly, but remember EVERTHING including basic test circuits HAVE to be included inside the one script and these separate callable scripts would have to generated like the 1KHz signal generator(s).&lt;br /&gt;
&lt;br /&gt;
This could make the script hundreds of KB in size. I have no idea if there is a maximum limit of a script size in a bash terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; I'm thinking that might make it easier to add new input sources and display/output modes - and control functions too. For example your SOX and dsp inputs seem to share a lot of code; you could define an &amp;quot;abstracted&amp;quot; input interface between scripts, then have individual device driver scripts for each input type. No pressure.&lt;br /&gt;
&lt;br /&gt;
Gimme chance... ;oD  Nice idea(s), my biggest problem is detecting, getting and determining the DC component into a Macbook Pro which only has ONE audio input... I have worked out how the switch the input through the script from AC to DC but have yet to prove it. Remember ICs are NOT allowed, only FETs and Bipolars, and stripboard for PCBs - simple enough that each stage can be built by kids...&lt;br /&gt;
&lt;br /&gt;
Still working out how to get DC in on ONE input only...&lt;br /&gt;
&lt;br /&gt;
I have a simple method of relay switching AC to DC and back using the 1KHz generator but even with a chopper I have no means, AFAIK, whether the DC is +ve or -ve.&lt;br /&gt;
&lt;br /&gt;
This is the idea I have gotten, use a chopper to get the relative DC level, and on exactly the same multivib use a VFO section to detect whether the signal is +ve or -ve, a low freq being -ve and a high freq being +ve... FM and AM in 1 swoop... ;oD&lt;br /&gt;
&lt;br /&gt;
Remember I have only ONE input...&lt;br /&gt;
&lt;br /&gt;
The code should be easy...&lt;br /&gt;
&lt;br /&gt;
The mic-ear photos that pertain to the end of the script&amp;#058;-&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://wisecracker.host22.com/public/mic_ear1.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://wisecracker.host22.com/public/mic_ear2.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://wisecracker.host22.com/public/mic_ear3.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://wisecracker.host22.com/public/mic_ear4.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Bazza...</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110823#110823</comments>
                                        <author>Bazza</author>
                                        <pubDate>Tue Apr 02, 2013 3:26 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110823#110823</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110822#110822</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=63'&gt;guy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Tue Apr 02, 2013 1:42 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      That is one truly awesome shell script. &lt;img src=&quot;images/smiles/icon_cool.gif&quot; alt=&quot;Cool&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
How about adding an FFT to display real-time frequency spectra? &lt;img src=&quot;images/smiles/icon_razz.gif&quot; alt=&quot;Razz&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
More seriously, could it divide usefully into separate I/O, Control and Display scripts? I'm thinking that might make it easier to add new input sources and display/output modes - and control functions too. For example your SOX and dsp inputs seem to share a lot of code; you could define an &amp;quot;abstracted&amp;quot; input interface between scripts, then have individual device driver scripts for each input type. No pressure. &lt;img src=&quot;images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110822#110822</comments>
                                        <author>guy</author>
                                        <pubDate>Tue Apr 02, 2013 1:42 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110822#110822</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110818#110818</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Mon Apr 01, 2013 9:51 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      The command DRAW facility is now finished. The attached image is a whistle into the Macbook Pro microphone with the Timebase TBVAR command set to tart 10 bytes in with a jump of 3 bytes.&lt;br /&gt;
&lt;br /&gt;
I.E. the TB set to 10 along and the same as 500uS/DIV...&lt;br /&gt;
&lt;br /&gt;
The next upload will be sorting out the Pseudo-sync/Trigger and may take a while as I am in the middle of a simple vertical calibrator using the sinewave generator at the start of the script.&lt;br /&gt;
&lt;br /&gt;
This is now functional and entirely in very basic shell concepts...&lt;br /&gt;
&lt;br /&gt;
Enjoy...&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://wisecracker.host22.com/public/Scope_Trace3.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
#&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
# Many thanks also go to the guys who have helped with this on http&amp;#58;//www.linuxformat.com for all your input too...&lt;br /&gt;
#&lt;br /&gt;
# Tested in SOX mode on this Macbook Pro 13 inch, OSX 10.7.5 with the SOX sinewave generator enabled.&lt;br /&gt;
# Tested in /dev/dsp mode on an aging HP notebook running Debian 6.0.x with the /dev/dsp sinewave generator enabled.&lt;br /&gt;
# Tested on both in DEMO mode.&lt;br /&gt;
#&lt;br /&gt;
# Added the first simple circuit at the end of this script.&lt;br /&gt;
#&lt;br /&gt;
# NOTE TO SELF&amp;#58;- Remove &amp;quot;/tmp&amp;quot; and replace with &amp;quot;~&amp;quot; when ready, AND, &amp;quot;/tmp&amp;quot; is automatically cleared on this machine per reboot.&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR SOund eXchance USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR /dev/dsp USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments to use it.&lt;br /&gt;
# It assumes that you have /dev/dsp _installed_. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cat /tmp/sinewave.raw &amp;gt; /dev/dsp\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Variables in use.&lt;br /&gt;
ifs_str=$IFS&lt;br /&gt;
version=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.36_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
setup=$version&lt;br /&gt;
demo=0&lt;br /&gt;
# &amp;quot;hold&amp;quot; and &amp;quot;status&amp;quot; will always be reset to &amp;quot;1&amp;quot; on program exit.&lt;br /&gt;
hold=1&lt;br /&gt;
status=1&lt;br /&gt;
# &amp;quot;count&amp;quot;, &amp;quot;number&amp;quot; and &amp;quot;char&amp;quot; are reusable variables.&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;?&amp;quot;&lt;br /&gt;
# vert_one and vert_two are the vertical plotting points for the draw&amp;#40;&amp;#41; function...&lt;br /&gt;
vert_one=2&lt;br /&gt;
vert_two=2&lt;br /&gt;
vert=12&lt;br /&gt;
vert_shift=2&lt;br /&gt;
vshift=&amp;quot;?&amp;quot;&lt;br /&gt;
vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
vert_draw=9&lt;br /&gt;
horiz=9&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
kbinput=&amp;quot;?&amp;quot;&lt;br /&gt;
tbinput=1&lt;br /&gt;
str_len=1&lt;br /&gt;
# &amp;quot;grab&amp;quot; is for future usage and reserved.&lt;br /&gt;
grab=0&lt;br /&gt;
# &amp;quot;zero_offset&amp;quot; can only be manually changed in the AudioScope.config file, OR, here...&lt;br /&gt;
zero_offset=1&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=1&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# scan_start is from 0 to &amp;#40; length of file - 64 &amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40; &amp;#40; &amp;#40; scan_end - scan_start &amp;#41; / 64&amp;#41; + 1 &amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_end=1935&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Add the program tilte to the Terminal title bar...&lt;br /&gt;
# This may NOT work in every Terminal so just comment it out if it doesn't.&lt;br /&gt;
printf &amp;quot;\x1B&amp;#93;0;Shell AudioScope.\x07&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Generate a config file and temporarily store inside /tmp&lt;br /&gt;
if &amp;#91; -f /tmp/AudioScope.config &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;. /tmp/AudioScope.config&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=0\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=0\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=0\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=1935\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;vert_shift=2\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$version'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|$setup|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set the colours for plotting.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Pick which method to store the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data. This may be slow on some older machines...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 unsigned-integer bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the unsigned-integer data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# The real &amp;quot;vert&amp;quot; value stored into &amp;quot;grab&amp;quot; for future use.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=$vert&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a small offset to give a straight line with zero input allowing for mid-point sound card bit error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $vert + $zero_offset &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 255 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Pseudo-vertical shift of + or - 1 vertical division maximum.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + $vert_shift &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the plot is NOT out of bounds after moving the shift position.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 17 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=17&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Generate a smple space delimited 64 sample array.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_array=&amp;quot;$vert_array$vert &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This function connects up the plotted points in non-capture mode ONLY.&lt;br /&gt;
draw&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=&amp;quot; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;number=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_one=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_two=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert_draw=&amp;#40; $vert_array &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..71&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Obtain the two vertical components.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_two=$&amp;#123;vert_draw&amp;#91; $subscript &amp;#93;&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now subtract them and obtain an absolute value - ALWAYS 0 to positive...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $vert_two - $vert_one &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#123;number#-&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This decision section is needed.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#58; # NOP. Do nothing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This section does the drawing...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -gt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one - 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_two -gt $vert_one &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; &amp;#40; $vert_one + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#91; $vert_one -lt $vert_two &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert_one&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_one=$&amp;#91; $vert_one + 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 3 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Drawing the scan, please wait...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$version&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#58; # NOP&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# this is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 3 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Drawing the scan...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$version&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
# This line is no longer used&amp;#58;- kbinput=`printf &amp;quot;$kbinput&amp;quot; | tr &amp;#91;&amp;#58;lower&amp;#58;&amp;#93; &amp;#91;&amp;#58;upper&amp;#58;&amp;#93;`&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;IFS=$ifs_str&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scan=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Rerun scans captured or stored.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Run scans in captured mode only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Swtich off capture mode and rerun one storage shot only&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Quit the program.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Display the _online_ HELP file in default terminal colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable DEMO pseudo-capture mode, default.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=1935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable /dev/dsp capture mode, if your Linux flavour does NOT have it, install oss-compat from the distro's repository.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# This is the mode used to test on Debian 6.0.x...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=7935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Eable SOX capture mode, this code is designed around this application on a Macbook Pro 13 inch OSX 10.7.5...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The next three commands set the timebase scans; 1, 10 or 100 before COMMAND mode is re-enabled and can be used.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;VER&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=254&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ Horizontal components. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ User timebase section. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Written longhand for kids to understand.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TBVAR&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure capture mode is turned off.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase starting point. From 0 to $scan_end&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the timebase values are set to default before changing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan start point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_start&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$scan_end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use exactly the same method as above to determine the jump interval.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now set the jump interval, this is the scan speed...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase user speed. From 1 to $&amp;#91; &amp;#40; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#41; &amp;#93;&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;str_len=$&amp;#91; &amp;#40; $str_len - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $str_len &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan jump value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_jump&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse number for upper limit...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -ge $number &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$number&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;4fScan start at offset $scan_start, with a jump rate of $scan_jump.&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** User timebase section end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********* Calibrated timebase section. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;FASTEST&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;1mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 1mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;10mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 10mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;100mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 100mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=25&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Calibrated timebase end. ************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Vertical components. **************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ******** Pseudo-vertical shift control. *********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SHIFT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Vertical shift&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN &amp;quot; -n 1 -s vshift&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the shift psoition is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -ge 6 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -le -2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=-2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Vertical shift is $&amp;#91; &amp;#40; $vert_shift - 2 &amp;#41; &amp;#93; from the mid-point position...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ****** Pseudo-vertical shift control end. *******&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** Connect all plotted points. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DRAW&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=3&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;draw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Connected plots done. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Help clears the screen to the startup defaults and prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ................................................. Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ......................... Reruns the scan&amp;#40;s&amp;#41;, always with real captures.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................... Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; ................................................ This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ........................................ Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; .................................. Switch capture to default DEMO mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ................................. Switch capture to Linux /dev/dsp mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; .................. Switch capture to multi-platform SOund eXchange mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ......................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ........................................ Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ................................... Sets the number of scans to 100.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;VER&amp;lt;CR&amp;gt; ................. Displays the version number inside the status windows.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TBVAR&amp;lt;CR&amp;gt; ............ Set up uncalibrated user timebase offset and jump points.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;FASTEST&amp;lt;CR&amp;gt; .................. Set all modes to the fastest possible scan speed.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;1mS&amp;lt;CR&amp;gt; ............ &amp;#40;Not available in DEMO mode.&amp;#41; Set scanning rate to 1mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;10mS&amp;lt;CR&amp;gt; ............. &amp;#40;Inaccurate in DEMO mode.&amp;#41; Set scanning rate to 10mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;100mS&amp;lt;CR&amp;gt; ...................................... Set scanning rate to 100mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SHIFT&amp;lt;CR&amp;gt; ............ Set the vertical position from -4 to +4 to the mid-point.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DRAW&amp;lt;CR&amp;gt; .......... Connect up each vertical plot to give a fully lined display.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;hold&amp;quot; determines a new captured scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Getout, autosave AudioScope.config, cleanup and quit...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=$demo\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=$zero_offset\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=$scanloops\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=$scan_start\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=$scan_jump\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=$scan_end\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;vert_shift=$vert_shift\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$setup'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# The first extremely simple construction part.&lt;br /&gt;
# Photos will be upload somewhere very soon...&lt;br /&gt;
# This is a simple I/O board for testing for the Macbook Pro 13 inch...&lt;br /&gt;
# It is just as easy to replace the 4 pole 3.5mm Jack Plug with 2 x 3.5mm Stereo Jack&lt;br /&gt;
# Plugs for machines with separate I/O sockets.&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Orange.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;White flylead.&lt;br /&gt;
# Tip -----&amp;gt;&amp;nbsp; O&amp;nbsp; &amp;lt;------------------------------------+---------O &amp;lt;----------+--------+&lt;br /&gt;
# Ring 1 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;-------------------------+-----------&amp;#41;--------O &amp;lt;- Blue.&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Ring 2 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;--------------+-----+-----&amp;#41;----------&amp;#41;--------O &amp;lt;- Yellow. |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# _Gnd_ ---&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;----+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; C1 | +&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O &amp;lt;- Green.&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+===+&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp;=====&amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp;--+--&amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P1 |&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; R1 /&amp;nbsp; &amp;nbsp; &amp;nbsp;| R2 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R3 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R4 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \ /&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~~~&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+---------+------&amp;#41;---+----------+---------+------------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Pseudo-Ground. -&amp;gt; __|__&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/////&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-----------------------------------------------+&lt;br /&gt;
# P1 ......... 3.5mm, 4 pole jack plug.&lt;br /&gt;
# R1 ......... 2K2, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R2, R3 ..... 33R, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R4 ......... 1M, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# C1 ......... 47uF, 16V electrolytic.&lt;br /&gt;
# 4 way terminal block.&lt;br /&gt;
# Stripboard, &amp;#40;Verobaord&amp;#41;, as required.&lt;br /&gt;
# Green, yellow, orange, blue and white wire as required.&lt;br /&gt;
# #########################################################&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110818#110818</comments>
                                        <author>Bazza</author>
                                        <pubDate>Mon Apr 01, 2013 9:51 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110818#110818</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110766#110766</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Wed Mar 27, 2013 10:46 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      This is getting to be a serious tool now guys...&lt;br /&gt;
&lt;br /&gt;
For the time being everything is saved and loaded to the /tmp drawer...&lt;br /&gt;
&lt;br /&gt;
READ THE CODE for more information...&lt;br /&gt;
&lt;br /&gt;
It has auto-save and load of a user config now and pseudo vertical shift. It has commented out means of generating a test audio sinewave at 1KHz...&lt;br /&gt;
&lt;br /&gt;
The SOX version will need a change of absolute address for it to work. Presently working on SYNC/TRIGGER methods and drawing the plots together... Then the really hard bit starts...&lt;br /&gt;
&lt;br /&gt;
Remember, that this is being _built_ on a Macbook Pro 13 inch with only ONE mic input...&lt;br /&gt;
&lt;br /&gt;
I might add that this site is probably the best, and, least draconian that I am a member of. Well done ADMINs and Moderators you are doing a good job...&lt;br /&gt;
&lt;br /&gt;
Enjoy...&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
#&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
# Many thanks also go to the guys who have helped with this on http&amp;#58;//www.linuxformat.com for all your input too...&lt;br /&gt;
#&lt;br /&gt;
# Tested in SOX mode on this Macbook Pro 13 inch, OSX 10.7.5 with the SOX sinewave generator enabled.&lt;br /&gt;
# Tested in /dev/dsp mode on an aging HP notebook running Debian 6.0.x with the /dev/dsp sinewave generator enabled.&lt;br /&gt;
# Tested on both in DEMO mode.&lt;br /&gt;
#&lt;br /&gt;
# Added the first simple circuit at the end of this script.&lt;br /&gt;
#&lt;br /&gt;
# NOTE TO SELF&amp;#58;- Remove &amp;quot;/tmp&amp;quot; and replace with &amp;quot;~&amp;quot; when ready, AND, &amp;quot;/tmp&amp;quot; is automatically cleared on this machine per reboot.&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR SOund eXchance USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# FOR /dev/dsp USERS ONLY!!!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TESTED!!!&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments to use it.&lt;br /&gt;
# It assumes that you have /dev/dsp _installed_. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 744 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..8191&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cat /tmp/sinewave.raw &amp;gt; /dev/dsp\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1KHz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Variables in use.&lt;br /&gt;
version=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.33_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
setup=$version&lt;br /&gt;
demo=0&lt;br /&gt;
# &amp;quot;hold&amp;quot; and &amp;quot;status&amp;quot; will always be reset to &amp;quot;1&amp;quot; on program exit.&lt;br /&gt;
hold=1&lt;br /&gt;
status=1&lt;br /&gt;
# &amp;quot;count&amp;quot;, &amp;quot;number&amp;quot; and &amp;quot;char&amp;quot; are reusable variables.&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;?&amp;quot;&lt;br /&gt;
vert=12&lt;br /&gt;
vert_shift=2&lt;br /&gt;
vshift=&amp;quot;?&amp;quot;&lt;br /&gt;
horiz=9&lt;br /&gt;
kbinput=&amp;quot;?&amp;quot;&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
kbinput=&amp;quot;RUN&amp;quot;&lt;br /&gt;
tbinput=1&lt;br /&gt;
strlen=1&lt;br /&gt;
# &amp;quot;grab&amp;quot; is for future usage and reserved.&lt;br /&gt;
grab=0&lt;br /&gt;
# &amp;quot;zero_offset&amp;quot; can only be manually changed in the AudioScope.config file, OR, here...&lt;br /&gt;
zero_offset=1&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=1&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# scan_start is from 0 to &amp;#40; length of file - 64 &amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40; &amp;#40; &amp;#40; scan_end - scan_start &amp;#41; / 64&amp;#41; + 1 &amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_end=1935&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Generate a config file and temporarily store inside /tmp&lt;br /&gt;
if &amp;#91; -f /tmp/AudioScope.config &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;. /tmp/AudioScope.config&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=0\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=0\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=0\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=1935\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$version'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|$setup|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set colours for plot.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Pick which method to store the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data. This may be slow on some older machines...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 unsigned-integer bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the unsigned-integer data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# The real &amp;quot;vert&amp;quot; value stored into &amp;quot;grab&amp;quot; for future use.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;grab=$vert&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a small offset to give a straight line with zero input allowing for mid-point sound card bit error.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $vert + $zero_offset &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 255 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Pseudo-vertical shift of + or - 1 vertical division maximum.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + $vert_shift &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the plot is NOT out of bounds after moving the shift position.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -le 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert -ge 17 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=17&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# this is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;3f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 254 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f$version&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set end of plot to COMMAND window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
# This line is no longer used&amp;#58;- kbinput=`printf &amp;quot;$kbinput&amp;quot; | tr &amp;#91;&amp;#58;lower&amp;#58;&amp;#93; &amp;#91;&amp;#58;upper&amp;#58;&amp;#93;`&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scan=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Rerun scans captured or stored.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Run scans in captured mode only.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Swtich off capture mode and rerun one storage shot only&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Quit the program.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Display the _online_ HELP file in default terminal colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable DEMO pseudo-capture mode, default.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=1935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Enable /dev/dsp capture mode, if your Linux flavour does NOT have it, install oss-compat from the distro's repository.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# This is the mode used to test on Debian 6.0.x...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=7935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Eable SOX capture mode, this code is designed around this application on a Macbook Pro 13 inch OSX 10.7.5...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_end=47935&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The next three commands set the timebase scans; 1, 10 or 100 before COMMAND mode is re-enabled and can be used.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;VER&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=254&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ Horizontal components. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************ User timebase section. *************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Written longhand for kids to understand.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TBVAR&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure capture mode is turned off.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase starting point. From 0 to $scan_end&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the timebase values are set to default before changing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strlen=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strlen=$&amp;#91; &amp;#40; $strlen - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $strlen &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan start point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_start&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -le 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_start -ge $scan_end &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=$scan_end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Use exactly the same method as above to determine the jump interval.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now set the jump interval, this is the scan speed...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Set timebase user speed. From 1 to $&amp;#91; &amp;#40; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#41; &amp;#93;&amp;lt;CR&amp;gt; &amp;quot; -e tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Eliminate any keyboard error longhand...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a NULL string does NOT exist.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$tbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Find the length of the inputted string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strlen=`printf &amp;quot;$&amp;#123;#tbinput&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Set the string to the correct last position for the _subscript_ point.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strlen=$&amp;#91; &amp;#40; $strlen - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now check for continuous numerical charaters ONLY.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in $&amp;#40; seq 0 $strlen &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse variable _number_ to obtain each character per loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;$&amp;#123;tbinput&amp;#58;$count&amp;#58;1&amp;#125;&amp;quot;`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now convert the character to a decimal number.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=`printf &amp;quot;%d&amp;quot; \'$number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IF ANY ASCII character exists that is not numerical then reset the scan jump value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -le 47 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $number -ge 58 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;tbinput=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# If all is OK pass the &amp;quot;tbinput&amp;quot; value into the &amp;quot;scan_jump&amp;quot; variable.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$tbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Do a final check that the number is not out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -le 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Reuse number for upper limit...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; &amp;#40; &amp;#40; $scan_end - $scan_start &amp;#41; / 64 &amp;#41; + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $scan_jump -ge $number &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=$number&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;22;4fScan start at offset $scan_start, with a jump rate of $scan_jump.&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********** User timebase section end. ***********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ********* Calibrated timebase section. **********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;FASTEST&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; Uncalibrated horizontal scan, vertical and storage modes, AC coupled only. &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;1mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 1mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;10mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 10mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=60&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;100mS&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setup=&amp;quot; 100mS/DIV, uncalibrated vertical and storage modes, AC coupled only.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=25&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scan_jump=600&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# *********** Calibrated timebase end. ************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;#&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ************* Vertical components. **************&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ******** Pseudo-vertical shift control. *********&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SHIFT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while true&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# RUN&amp;lt;CR&amp;gt; will re-enable it if required.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This input method is something akin to BASIC's INKEY$...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;read -p &amp;quot;Vertical shift&amp;#58;- U for up 1, D for down 1, &amp;lt;CR&amp;gt; to RETURN &amp;quot; -n 1 -s vshift&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\x1B&amp;#91;0;37;40m\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;U&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$vshift&amp;quot; == &amp;quot;D&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=$&amp;#91; &amp;#40; $vert_shift - 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure the shift psoition is NOT out of bounds.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -ge 6 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=6&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $vert_shift -le -2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert_shift=-2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;23;3f Vertical shift is $&amp;#91; &amp;#40; $vert_shift - 2 &amp;#41; &amp;#93; from the mid-point position...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# ****** Pseudo-vertical shift control end. *******&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Help clears the screen to the startup defaults and prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ................................................. Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ......................... Reruns the scan&amp;#40;s&amp;#41;, always with real captures.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................... Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; ................................................ This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ........................................ Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; .................................. Switch capture to default DEMO mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ................................. Switch capture to Linux /dev/dsp mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; .................. Switch capture to multi-platform SOund eXchange mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ......................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ........................................ Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ................................... Sets the number of scans to 100.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;VER&amp;lt;CR&amp;gt; ................. Displays the version number inside the status windows.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TBVAR&amp;lt;CR&amp;gt; ............ Set up uncalibrated user timebase offset and jump points.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;FASTEST&amp;lt;CR&amp;gt; .................. Set all modes to the fastest possible scan speed.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;1mS&amp;lt;CR&amp;gt; ............ &amp;#40;Not available in DEMO mode.&amp;#41; Set scanning rate to 1mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;10mS&amp;lt;CR&amp;gt; ............. &amp;#40;Inaccurate in DEMO mode.&amp;#41; Set scanning rate to 10mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;100mS&amp;lt;CR&amp;gt; ...................................... Set scanning rate to 100mS/DIV.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SHIFT&amp;lt;CR&amp;gt; ............ Set the vertical position from -4 to +4 to the mid-point.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;quot;hold&amp;quot; determines a new captured scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# Getout, autosave AudioScope.config, cleanup and quit...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 644 /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;demo=$demo\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;hold=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;status=1\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;zero_offset=$zero_offset\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scanloops=$scanloops\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_start=$scan_start\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_jump=$scan_jump\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;scan_end=$scan_end\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;setup='$setup'\n&amp;quot; &amp;gt;&amp;gt; /tmp/AudioScope.config&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# #########################################################&lt;br /&gt;
# The first extremely simple construction part.&lt;br /&gt;
# Photos will be upload somewhere very soon...&lt;br /&gt;
# This is a simple I/O board for testing for the Macbook Pro 13 inch...&lt;br /&gt;
# It is just as easy to replace the 4 pole 3.5mm Jack Plug with 2 x 3.5mm Stereo Jack&lt;br /&gt;
# Plugs for machines with separate I/O sockets.&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Orange.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;White flylead.&lt;br /&gt;
# Tip -----&amp;gt;&amp;nbsp; O&amp;nbsp; &amp;lt;------------------------------------+---------O &amp;lt;----------+--------+&lt;br /&gt;
# Ring 1 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;-------------------------+-----------&amp;#41;--------O &amp;lt;- Blue.&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Ring 2 --&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;--------------+-----+-----&amp;#41;----------&amp;#41;--------O &amp;lt;- Yellow. |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# _Gnd_ ---&amp;gt;&amp;nbsp; H&amp;nbsp; &amp;lt;----+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; C1 | +&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O &amp;lt;- Green.&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+===+&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp;=====&amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp;--+--&amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P1 |&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; R1 /&amp;nbsp; &amp;nbsp; &amp;nbsp;| R2 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R3 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R4 /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \ /&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~~~&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+---------+------&amp;#41;---+----------+---------+------------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;
# Pseudo-Ground. -&amp;gt; __|__&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;br /&gt;
#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/////&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-----------------------------------------------+&lt;br /&gt;
# P1 ......... 3.5mm, 4 pole jack plug.&lt;br /&gt;
# R1 ......... 2K2, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R2, R3 ..... 33R, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# R4 ......... 1M, 1/8W, 5% tolerence resistor.&lt;br /&gt;
# C1 ......... 47uF, 16V electrolytic.&lt;br /&gt;
# 4 way terminal block.&lt;br /&gt;
# Stripboard, &amp;#40;Verobaord&amp;#41;, as required.&lt;br /&gt;
# Green, yellow, orange, blue and white wire as required.&lt;br /&gt;
# #########################################################&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;&lt;br /&gt;
[/code]</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110766#110766</comments>
                                        <author>Bazza</author>
                                        <pubDate>Wed Mar 27, 2013 10:46 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110766#110766</guid>
                                      </item>
                                      <item>
                                        <title>Shell script AudioScope latest update...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110681#110681</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Sat Mar 16, 2013 12:36 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi guys and gals...&lt;br /&gt;
&lt;br /&gt;
It is now beginning to take shape...&lt;br /&gt;
&lt;br /&gt;
There is now the start of the program's command line stuff...&lt;br /&gt;
&lt;br /&gt;
Commented out is the shell script problem _cured_ for my needs.&lt;br /&gt;
&lt;br /&gt;
IF this part is uncommented and run then a sinewave test signal runs in parallel with the scope and injecting this to the input of the scope and also setting the input and output levels you can see it working...&lt;br /&gt;
&lt;br /&gt;
Next job is a, (within limits), calibrated timebase...&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScope.sh&lt;br /&gt;
# At this point I will include and say thank you to &amp;quot;Corona688&amp;quot;, a member of http&amp;#58;//www.unix.com for his input...&lt;br /&gt;
&lt;br /&gt;
# The lines below, from &amp;quot;&amp;gt;&amp;quot; to &amp;quot;xterm&amp;quot;, will generate a new shell script and execute it in a new xterm terminal...&lt;br /&gt;
# Just EDIT out the comments and then EDIT the line pointing to the correct &amp;lt;/full/path/to/sox/play&amp;gt; to use it.&lt;br /&gt;
# It assumes that you have SoX installed. When this script is run it generates a 1KHz sinewave in a separate window&lt;br /&gt;
# that lasts for 8 seconds. Just press ENTER when this window is active and it will repeat again. To quit this script&lt;br /&gt;
# and close the window just press Ctrl-C. This generator will be needed for the calibration of some timebase ranges. &lt;br /&gt;
#&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#chmod 777 /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '#!/bin/bash\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'data=&amp;quot;\\\\x80\\\\x26\\\\x00\\\\x26\\\\x7F\\\\xD9\\\\xFF\\\\xD9&amp;quot;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'for waveform in &amp;#123;0..4095&amp;#125;\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;quot;$data&amp;quot; &amp;gt;&amp;gt; /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'while true\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'do\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /full/path/to/sox/play -b 8 -r 8000 -e unsigned-integer /tmp/sinewave.raw\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf '&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; read -p &amp;quot;Press ENTER to rerun OR Ctrl-C to quit&amp;#58;- &amp;quot; -e kbinput\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#printf 'done\n' &amp;gt;&amp;gt; /tmp/1KHz-Test.sh&lt;br /&gt;
#sleep 1&lt;br /&gt;
#xterm -e /tmp/1khz-Test.sh &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# Change demo value of 0 to 1 to access /dev/dsp for &amp;quot;storage&amp;quot; AudioScope facility, OR, 2 to use SoX...&lt;br /&gt;
demo=0&lt;br /&gt;
hold=1&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;&amp;quot;&lt;br /&gt;
vert=12&lt;br /&gt;
horiz=9&lt;br /&gt;
kbinput=&amp;quot;&amp;quot;&lt;br /&gt;
status=1&lt;br /&gt;
graticule=&amp;quot;Public Domain, 2013, B.Walker, G0LCU.&amp;quot;&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=10&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# IMPORTANT!!! There is NO error checking yet so be careful with your choice of values...&lt;br /&gt;
# scan_start is from 0 to &amp;#40;length of file - 64&amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40;length of file / 64&amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_finish=$&amp;#91; &amp;#40; $scan_jump * 64 &amp;#41; &amp;#93;&lt;br /&gt;
&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;-&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| Stopped...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.16_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set colours for plot.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Pick which method to store the waveform on the fly.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 766 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + 2 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# this is the information line _parser_...&lt;br /&gt;
statusline&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;22;3f\x1B&amp;#91;0;37;40m&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \x1B&amp;#91;22;4f&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Stopped...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running $scan of $scanloops scans...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $status -eq 2 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;Running in single shot storage mode...&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Cursor pointer...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;20;14f&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# All keyboard commands appear here when the scanning stops; there will be lots of them to make subtle changes...&lt;br /&gt;
# NOTE&amp;#58;- Uppercase ASCII text ONLY. This eliminates any numerical typos that can occur. It also means anything&lt;br /&gt;
# within reason that is typed which is wrong wil be ignored and not cause an error report...&lt;br /&gt;
kbcommands&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to &amp;#40;re&amp;#41;run, HELP or QUIT&amp;lt;CR&amp;gt; &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;RUN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HOLD&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;QUIT&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=255&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HELP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;commandhelp&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DEMO&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;DSP&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;SOX&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;demo=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;ONE&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;TEN&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=10&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; &amp;quot;$kbinput&amp;quot; == &amp;quot;HUNDRED&amp;quot; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=100&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Help clears the screen to the startup defaults prints command line help...&lt;br /&gt;
commandhelp&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;hold=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;CURRENT COMMANDS AVAILABLE&amp;#58;-\n\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;&amp;lt;CR&amp;gt; ............................................... Reruns the scan&amp;#40;s&amp;#41; again.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;RUN&amp;lt;CR&amp;gt; ........................... Reruns the scan&amp;#40;s&amp;#41; always with real grabs.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;QUIT&amp;lt;CR&amp;gt; .................................................. Quits the program.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HELP&amp;lt;CR&amp;gt; .............................................. This help as required.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HOLD&amp;lt;CR&amp;gt; ...................................... Switch to pseudo-storage mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DEMO&amp;lt;CR&amp;gt; ................................ Switch capture to default DEMO mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;DSP&amp;lt;CR&amp;gt; ............................... Switch capture to Linux /dev/dsp mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;SOX&amp;lt;CR&amp;gt; ................ Switch capture to multi-platform SOund eXchange mode.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;ONE&amp;lt;CR&amp;gt; ....................................... Sets the number of scans to 1.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;TEN&amp;lt;CR&amp;gt; ...................................... Sets the number of scans to 10.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;HUNDRED&amp;lt;CR&amp;gt; ................................. Sets the number of scans to 100.\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;read -p &amp;quot;Press &amp;lt;CR&amp;gt; to continue&amp;#58;- &amp;quot; -e kbinput&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
statusline&lt;br /&gt;
&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanloops=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# hold determines a new scan or retrace of an existing scan...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $hold -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Temporarily set the cursor outside of the plotting window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;20;14f\x1B&amp;#91;0;37;40m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;statusline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;kbcommands&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Getout and cleanup...&lt;br /&gt;
if &amp;#91; $status -eq 255 &amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;reset&lt;br /&gt;
fi&lt;br /&gt;
printf &amp;quot;\nProgram terminated...\n\nTerminal reset back to startup defaults...\n\n&amp;quot;&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110681#110681</comments>
                                        <author>Bazza</author>
                                        <pubDate>Sat Mar 16, 2013 12:36 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110681#110681</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110664#110664</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Wed Mar 13, 2013 9:55 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      This is a new updated version of the AudioScope with limited scans which can be from single shot storage to pseudo-continuous.&lt;br /&gt;
&lt;br /&gt;
Beware when altering any values as there is NO error detection as yet.&lt;br /&gt;
&lt;br /&gt;
Now starting to create _functions_ as this becomes more mature...&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScopeDisplay.sh&lt;br /&gt;
&lt;br /&gt;
# Change demo value of 0 to 1 to access /dev/dsp for &amp;quot;storage&amp;quot; AudioScope facility, OR, -1 to use SoX...&lt;br /&gt;
demo=0&lt;br /&gt;
count=0&lt;br /&gt;
number=0&lt;br /&gt;
char=&amp;quot;&amp;quot;&lt;br /&gt;
vert=12&lt;br /&gt;
horiz=9&lt;br /&gt;
graticule=&amp;quot;&amp;quot;&lt;br /&gt;
# Scan retraces...&lt;br /&gt;
scan=1&lt;br /&gt;
scanloops=10&lt;br /&gt;
# Timebase variables...&lt;br /&gt;
subscript=0&lt;br /&gt;
# IMPORTANT!!! There is NO error checking yet so be careful with your choice of values...&lt;br /&gt;
# scan_start is from 0 to &amp;#40;length of file - 64&amp;#41;...&lt;br /&gt;
scan_start=0&lt;br /&gt;
# scan_jump is from 1 to &amp;#40;length of file / 64&amp;#41;...&lt;br /&gt;
scan_jump=1&lt;br /&gt;
# scan_finish is not used yet...&lt;br /&gt;
scan_finish=$&amp;#91; &amp;#40; $scan_jump * 64 &amp;#41; &amp;#93;&lt;br /&gt;
&lt;br /&gt;
# Screen display setup function.&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+---&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;---+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp;0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+ &amp;lt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+-----------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m| COMMAND&amp;#58;- Running in default DEMO mode...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+------------------------------&amp;#91;STATUS WINDOW&amp;#93;-------------------------------+\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.14_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|\x1B&amp;#91;0;37;44m \n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot; \x1B&amp;#91;0;37;40m+----------------------------------------------------------------------------+\x1B&amp;#91;0;37;44m &amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set colours for plot.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Pick which method to store the waveform.&lt;br /&gt;
waveform&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;chmod 766 /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Demo mode, generate 2000 bytes of random data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for count in &amp;#123;0..1999&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 &amp;#41; &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;char=`printf '\\\\x'&amp;quot;%02x&amp;quot; $number`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;$char&amp;quot; &amp;gt;&amp;gt; /tmp/waveform.raw&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Using the aging&amp;#40;/old&amp;#41; /dev/dsp device, mono, 8 bits per sample and 8KHz sampling rate, 8000 bytes of data...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This uses the oss-compat installation from your distro's repository...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# The main means of obtaining the data, using SoX, &amp;#40;Sound eXcahnge&amp;#41; from http&amp;#58;//sox.sourceforge.net ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq -1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Change the absolute address for your location of &amp;quot;sox&amp;quot;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 48000 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Plot the points inside the window...&lt;br /&gt;
plot&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=$scan_start&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;9..72&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + 2 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + $scan_jump &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
# Do an initial screen set up...&lt;br /&gt;
display&lt;br /&gt;
&lt;br /&gt;
# This is the main loop...&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for scan in $&amp;#40; seq 1 $scanloops &amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;waveform&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;plot&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Remember to do all the status reports using the line below as a separate _function_.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Temporarily set the cursor outside of the plotting window.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;20;46f\x1B&amp;#91;0;37;40m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
done&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110664#110664</comments>
                                        <author>Bazza</author>
                                        <pubDate>Wed Mar 13, 2013 9:55 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110664#110664</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110658#110658</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Tue Mar 12, 2013 1:29 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Thanks Guy...&lt;br /&gt;
&lt;br /&gt;
The next upload will have the grabbing part put into a &amp;quot;function&amp;quot;, (already done in fact), and then I will start on the timebase...&lt;br /&gt;
&lt;br /&gt;
I have also tested the simple Linux grabbing part on Debian and it works...</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110658#110658</comments>
                                        <author>Bazza</author>
                                        <pubDate>Tue Mar 12, 2013 1:29 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110658#110658</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110656#110656</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=63'&gt;guy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Mon Mar 11, 2013 9:10 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Much easier on the eyeballs.&lt;br /&gt;
&lt;br /&gt;
Unfortunately I have nothing that can give a real signal, and precious little understanding of the system resources, so am ducking out of the interesting bit.</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110656#110656</comments>
                                        <author>guy</author>
                                        <pubDate>Mon Mar 11, 2013 9:10 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110656#110656</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110655#110655</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Mon Mar 11, 2013 8:36 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi all...&lt;br /&gt;
&lt;br /&gt;
Well I was able to carry on with this little enterprise...&lt;br /&gt;
&lt;br /&gt;
A real sample can now be displayed using SoX and the internal microphone of a netbook, laptop, etc...&lt;br /&gt;
&lt;br /&gt;
There is a line using /dev/dsp in default 8000KHz sampling speed but I haven't tested it yet...&lt;br /&gt;
&lt;br /&gt;
You will have to change the &amp;quot;demo&amp;quot; variable from 0 to 1 for /dev/dsp or -1 for SoX. If you use SoX then change the pointer to the correct absolute address of your install...&lt;br /&gt;
&lt;br /&gt;
Colours changed and decided on going back to the default 80 x 24 Terminal size...&lt;br /&gt;
&lt;br /&gt;
Watch for wordwrapping, etc...&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# AudioScopeDisplay.sh&lt;br /&gt;
# &lt;br /&gt;
# This method can also be used for a simple kids level Analogue Data_logger/Transient_Recorder.&lt;br /&gt;
# Cannot use &amp;quot;setterm -cursor off&amp;quot; as Mac OSX 10.7.5 has not got &amp;quot;setterm&amp;quot;, thought of another way for the Macbook Pro. ;o&amp;#41;&lt;br /&gt;
&lt;br /&gt;
# Change demo value to 1 to access /dev/dsp for &amp;quot;storage&amp;quot; AudioScope facility...&lt;br /&gt;
demo=0&lt;br /&gt;
vert=12&lt;br /&gt;
horiz=5&lt;br /&gt;
subscript=0&lt;br /&gt;
&lt;br /&gt;
display&amp;#40;&amp;#41;&lt;br /&gt;
&amp;#123;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set foregound and background graticule colours and foreground and background other window colours.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;0;36;44m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;clear&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=&amp;quot;&amp;nbsp; &amp;nbsp;+-------+-------+-------+-------&amp;#91;\x1B&amp;#91;0;37;44mDISPLAY\x1B&amp;#91;0;36;44m&amp;#93;-------+-------+-------+--------+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;+-------+-------+-------+-------+-------+-------+-------+-------+--------+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;\x1B&amp;#91;0;37;40m&amp;nbsp; &amp;nbsp;+---------------------------&amp;#91;COMMAND&amp;nbsp; WINDOW&amp;#93;----------------------------+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;| COMMAND&amp;#58;- Press Ctrl-C to stop the scan...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;+----------------------------&amp;#91;STATUS WINDOW&amp;#93;-----------------------------+&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\$VER&amp;#58; AudioScope.sh_Version_0.00.12_PD_B.Walker_G0LCU.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;\n&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;graticule=$graticule&amp;quot;&amp;nbsp; &amp;nbsp;+------------------------------------------------------------------------+&amp;nbsp; &amp;nbsp;&amp;quot;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;$graticule&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set colours for plot.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;1;37;44m&amp;quot;&lt;br /&gt;
&amp;#125;&lt;br /&gt;
&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;display&lt;br /&gt;
&amp;nbsp; &amp;nbsp;horiz=5&lt;br /&gt;
&amp;nbsp; &amp;nbsp;vert=12&lt;br /&gt;
&amp;nbsp; &amp;nbsp;subscript=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dd if=/dev/dsp of=/tmp/waveform.raw bs=8000 count=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# scan_start=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# scan_jump=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# scan_finish=$&amp;#91; &amp;#40; $scan_jump * 64 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq -1 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/Users/barrywalker/Downloads/sox-14.4.0/sox -q -V0 -d -t raw -r 44100 -b 8 -c 1 -e unsigned-integer -&amp;gt; /tmp/waveform.raw trim 0 00&amp;#58;01&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for horiz in &amp;#123;5..76&amp;#125;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -eq 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Simulate an 8 bit grab and divide by 16 to give 4 bit depth. Add offset of 2 to allow for mssing the top graticule line...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; $RANDOM % &amp;#40; 256 / 16 &amp;#41; + 2 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#91; $demo -ne 0 &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;then&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=`hexdump -n1 -s$subscript -v -e '1/1 &amp;quot;%u&amp;quot;' /tmp/waveform.raw`&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; &amp;#40; $vert / 16 &amp;#41; + 2 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;subscript=$&amp;#91; &amp;#40; $subscript + 1 &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# IMPORTANT! The display must be inverted because of the way a terminal plots its characters...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;vert=$&amp;#91; &amp;#40; 19 - $vert &amp;#41; &amp;#93;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;&amp;quot;$vert&amp;quot;;&amp;quot;$horiz&amp;quot;f*&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf &amp;quot;\x1B&amp;#91;20;48f\x1B&amp;#91;0;37;40m&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sleep 1&lt;br /&gt;
done&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110655#110655</comments>
                                        <author>Bazza</author>
                                        <pubDate>Mon Mar 11, 2013 8:36 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110655#110655</guid>
                                      </item>
                                      <item>
                                        <title>Re: OK, now the start of the audio scope...</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=110103#110103</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Fri Jan 18, 2013 11:10 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi guy...&lt;br /&gt;
&lt;br /&gt;
The interpolation will come as linear. As this progresses then I might make the whole user definable - colours, type of plotting character etc...&lt;br /&gt;
&lt;br /&gt;
Hi jh...&lt;br /&gt;
&lt;br /&gt;
The colours will remain FTTb but I have taken note of both comments. As for the instantaneous effect that is because I removed the sleep 0.05 delay... This will be how it will be displayed in reality. I am looking at SoX for the grabbing tool as it supposedly is platform independent.&lt;br /&gt;
&lt;br /&gt;
Thanks to both for risking your machines.&lt;br /&gt;
&lt;br /&gt;
The next snippet will use /dev/dsp and demo mode defaulting to demo mode until you edit the file and rerun. I have to assume that your systems have it as a device...&lt;br /&gt;
&lt;br /&gt;
The limitation of /dev/dsp is 8KHz sampling speed, mono, 8 bit depth. This is where the binary transfer file uploaded recently will come into play... This will be the timebase... ;o)&lt;br /&gt;
&lt;br /&gt;
Again many thanks you guys...</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=110103#110103</comments>
                                        <author>Bazza</author>
                                        <pubDate>Fri Jan 18, 2013 11:10 pm</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=110103#110103</guid>
                                      </item></channel></rss>