#!/usr/bin/perl
# Script: bb
# Version: 1.1
# Purpose: Decode user-entered pseudo-binary to readable integers.
##########################################################
## Specs provided by Bubba Brossett (brossett@usgs.gov) ##
## PERL written   by Barry Jackson  (btjackson@usgs.gov)##
##########################################################

$lookup{'@'} = 0;
$lookup{'A'} = 1;
$lookup{'B'} = 2;
$lookup{'C'} = 3;
$lookup{'D'} = 4;
$lookup{'E'} = 5;
$lookup{'F'} = 6;
$lookup{'G'} = 7;
$lookup{'H'} = 8;
$lookup{'I'} = 9;
$lookup{'J'} = 10;
$lookup{'K'} = 11;
$lookup{'L'} = 12;
$lookup{'M'} = 13;
$lookup{'N'} = 14;
$lookup{'O'} = 15;
$lookup{'P'} = 16;
$lookup{'Q'} = 17;
$lookup{'R'} = 18;
$lookup{'S'} = 19;
$lookup{'T'} = 20;
$lookup{'U'} = 21;
$lookup{'V'} = 22;
$lookup{'W'} = 23;
$lookup{'X'} = 24;
$lookup{'Y'} = 25;
$lookup{'Z'} = 26;
$lookup{'['} = 27;
$lookup{'\\'} = 28;
$lookup{']'} = 29;
$lookup{'^'} = 30;
$lookup{'_'} = 31;
$lookup{'`'} = 32;
$lookup{'a'} = 33;
$lookup{'b'} = 34;
$lookup{'c'} = 35;
$lookup{'d'} = 36;
$lookup{'e'} = 37;
$lookup{'f'} = 38;
$lookup{'g'} = 39;
$lookup{'h'} = 40;
$lookup{'i'} = 41;
$lookup{'j'} = 42;
$lookup{'k'} = 43;
$lookup{'l'} = 44;
$lookup{'m'} = 45;
$lookup{'n'} = 46;
$lookup{'o'} = 47;
$lookup{'p'} = 48;
$lookup{'q'} = 49;
$lookup{'r'} = 50;
$lookup{'s'} = 51;
$lookup{'t'} = 52;
$lookup{'u'} = 53;
$lookup{'v'} = 54;
$lookup{'w'} = 55;
$lookup{'x'} = 56;
$lookup{'y'} = 57;
$lookup{'z'} = 58;
$lookup{'{'} = 59;
$lookup{'|'} = 60;
$lookup{'}'} = 61;
$lookup{'~'} = 62;
$lookup{'?'} = 63;

$position = 0;
$whichone = 0;

print "Enter the psuedo binary code: ";
$word = <STDIN>;
chop $word;


for ($i=0; $i<length($word);$i++ )
   {

	$w	= $i % 3 ;
	$k	= substr($word,$i,1);
	$value	= $lookup{"$k"};
	$lookedup = "$lookedup" . $k;


	#print "$k = $value | AT = $w\n";

	if ($w == 0) { $return += $value * 4096;	}
	if ($w == 1) { $return += $value * 64;	}
	if ($w == 2) { $return += $value * 1;	}	


	if ($position == 2)
		{
		$whichone++;	

		if ($return >  131071) { $return = 131072 - $return; }

		print "Value $whichone for $lookedup = $return\n";
		$lookedup 	="";
		$position	=0;
		$return		=0;
		}
	else { $position++; }

   }

