# This is an ide startup file.
report=4 # set verbose, but not debug
$stoponerr=1
hinv -v

menu {
    /* Display the version of the diagnostic */
echo "///////////////////////////////////////////////////////////////////////////"
    version;
echo ""
echo "             OPTION BOARD FUNCTIONAL TEST OPTIONS "
echo "             -------------------------------------"
echo "Command   Description"
echo ""
echo "mgv_all   Galileo 1.5 function tests"
echo "cosmo2_all   Cosmo2.0 function tests"
echo "vino      VINO function tests"
echo "camera    Indycam function tests"
echo ""
echo "gfxva     XL/XZ/Extreme diagnostics with automatic voltage change"
echo ""
echo "a2testva  A2 audio diagnostics with automatic voltage change"
echo ""
echo "kva       Galileo video board diagnostics with automatic voltage change"
echo "kvaloop   Loop Galileo board diagnostics 3 times with voltage change"
echo ""
echo "                     TECHNICIAN BENCH OPTIONS"
echo "                     ------------------------"
echo "gfx       XL/XZ/Extreme diagnostics with no voltage change"
echo "a2test    A2 audio diagnostics with no voltage change"
echo "kv        Galileo video board diagnostics with no voltage change"
echo "kvloop    Loop Galileo board diagnostics 3 times with no voltage change"
echo "mgv_menu  Galileo 1.5 menu"
echo "cosmo2_menu  Cosmo2.0 menu"
echo ""
echo "///////////////////////////////////////////////////////////////////////////"
}

unix {
	echo "<<<< About to to boot UNIX......>>>>"
	boot dksc(0,1,0)unix;
}

# Start of GR2 diagnostics 
# Initialize variables used by GR2.
$stride_failed=0 ;
$zb_failed=0 ;
$gr2_failed=0;
$chkbt457_failed=0;
$bp_failed=0;
$shramre3_failed=0;
$cpushram_failed=0;
$cpure3_failed=0;
$ctxsw_failed=0;
$vdma_failed=0;
$quad_failed=0;
$fourquad_failed=0;
$mon=0;

$test_xmap_failed = 0;
$test_xmap_clut_failed = 0;

gr2_vhwinit {
	gr2_videoclk 0x47
	if ($mon ==1 ) gr2_initclock 0x132;
	else gr2_initclock 0x107;
	fi
	gr2_wrconfig 0x0
	gr2_delay 3
	gr2_wrconfig 0x1
	gr2_vinitdac
}

gr2_initre {
	$a = gr2_getGR2ver;
	if ($a < 4) gr2_wrfifo 0 0;
	else if ($a == 4) gr2_wrfifo 0 1;
	else gr2_wrfifo 0 2;
}

gr2_initsys {
	gr2_reset
	gr2_vhwinit
	$mon = gr2_getMonType;
	if ($mon == 1) gr2_initvc1 4;
	else gr2_initvc1 20;
	fi
	gr2_xcol
	gr2_inithq
	gr2_load_ucode ge
	gr2_load_ucode hq
	gr2_unstall
	gr2_initre
}

clear {
	gr2_wrfifo 35 0
	gr2_wrfifo 6 0
}

gr2_quad {
	gr2_wrfifo 33 0
}

gr2_fourquad {
	gr2_wrfifo 34 0
}

test_xmap {
	gr2_initsys;
	$a=gr2_txmap;
	return $a;
}

test_xmap_clut {
	gr2_initsys;
	$a=gr2_txmap_clut;
	return $a;
}

gr2_vdma {
	gr2_initsys;
	$b=gr2_cachefdma 32 1;
	$b=$b+gr2_cachefdma 256 1;
	$b=$b+gr2_cachefdma 512 1;
	$b=$b+gr2_cachefdma 128 1;
	$b=$b+gr2_yzoomdma ;
	$b=$b+gr2_yzoomdma 32 32;
	$b=$b+gr2_yzoomdma 128 128;
	$b=$b+gr2_yzoomdma 256 256;
	$b=$b+gr2_stridedma;
	$b=$b+gr2_stridedma 32 32;
	$b=$b+gr2_stridedma 256 1;
	$b=$b+gr2_stridedma 512 0;

	return $b;
}

gr2 {

	# Too verbose with report=4
	report=3;

	$stride_failed=0 ;
	$zb_failed=0 ;
	$gr2_failed=0;
	$chkbt457_failed=0;
	$bp_failed=0;
	$shramre3_failed=0;
	$cpushram_failed=0;
	$cpure3_failed=0;
	$ctxsw_failed=0;
	$vdma_failed=0;
	$quad_failed=0;
	$fourquad_failed=0;

	$test_xmap_failed = 0;
	$test_xmap_clut_failed = 0;

	gr2_reset;
	buffon


# HQ2 internal register 19  must read 0xdeadbeef
	report = 2;
	gr2_rdhqint 19;
	report = 1;

# Test VC1 SRAM 
	gr2_vhwinit
	report =4 
	if (gr2_vc1_sram) {
		echo "VC1 SRAM test failded";
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test ram 0 at Ge7 at 0
	$tmp = gr2_tram 0;
	if ($tmp) {
		echo "GE7 at 0 RAM0 test failed"
		resetcons;
		buffoff;
		$err = 1;
        	wait;
	}
# Test ram 0 at Ge7 at 1
	$tmp = gr2_tram 1;
	if ($tmp) {
		echo "GE7 at 1 RAM0 test failed"
		resetcons;
		buffoff;
		$err = 1;
        	wait;
	}
# Test ram 0 at Ge7 at 2
       $tmp = gr2_tram 2;
       if ($tmp) {
		echo "GE7 at 2 RAM0 test failed"
		resetcons;
		buffoff;
		$err = 1;
        	wait;
	}
# Test ram 0 at Ge7 at 3
	$tmp = gr2_tram 3 ;
	if ($tmp) {
		echo "GE7 at 3 RAM0 test failed"
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test ram 0 at Ge7 at 4
	$tmp = gr2_tram 4 ;
	if ($tmp) {
		echo "GE7 at 4 RAM0 test failed"
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test ram 0 at Ge7 at 5
	$tmp = gr2_tram 5 ;
	if ($tmp) {
		echo "GE7 at 5 RAM0 test failed"
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test ram 0 at Ge7 at 6
	$tmp = gr2_tram 6 ;
	if ($tmp) {
		echo "GE7 at 6 RAM0 test failed"
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test ram 0 at Ge7 at 7
	$tmp = gr2_tram 7 ;
	if ($tmp) {
		echo "GE7 at 7 RAM0 test failed"
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test shram  
	$tmp = gr2_tram 8 ;
	if ($tmp) {
		echo "Share ram test failed "; 
		resetcons;
		buffoff;
        	wait;
		$err = 1;
	}
# Test Hq2uram
	$tmp = gr2_tram 9 ;
	if ($tmp) {
		echo "HQ2 uram test failed "; 
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
# Test ge7uram
	$tmp = gr2_tram 10;
	if ($tmp) {
		echo "GE7 uram test failed "; 
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
	gr2_initsys;
	clear;

# Test HQ2
	if(gr2_hq2test) {
		echo "HQ2 test failed "; 
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
# Test shareram using Ucode
	if (gr2_shram) {
		echo "Shram test failed"
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
# Test internal GE7 ram
	if (gr2_ram12) {
		echo "GE7 internal test failed"
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
# Test seedrom 
	if (gr2_seedrom) {
		echo "GE7 seedrom test failed"
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
# Test the squaroot rom
	if (gr2_sqrom) {
		echo "GE7 sqrom test failed"
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
	gr2_initsys ;

# Test Ge 7 bus
	if (gr2_gebus) {
		echo "GE7 bus test failed"
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}

# Test ge floating point unit
	if (gr2_gefloat) {
		echo "GE7 floating point test failed"
		resetcons;
		buffoff;
        	wait;
	    	$err = 1;
	}
	gr2_initsys;
	clear;

	if ( $err ) {
		echo "HQ & GE Tests failed\n";
		resetcons;
		buffoff;
		wait;
		$err=0
		$gr2_failed=1
	}
	else {
		resetcons;
		buffoff;
		echo "HQ & GE Tests passed\n"
	}
	buffon

# Test bt457 
	if (gr2_chkbt457) {
		resetcons;
		buffoff;
        	wait;
	    	$chkbt457_failed = 1;
	    	$err=1;
	}
# Test bitplane VM2
	gr2_initsys
	if (gr2_bp) {
	    $bp_failed = 1;
	    $err=1;
	    resetcons;
	    buffoff;
	    wait;
	}
# Test Shared ram and Re
	gr2_initsys
	$tmp = gr2_shramre3
	if ($tmp) {
		resetcons;
		buffoff;
        	wait;
	    	$shramre3_failed =1;
	    	$err=1;
	}
# Test DMA between host and GE7 shared ram
	gr2_initsys
	clear
	$tmp = gr2_cpushram
	if ($tmp) {
		resetcons;
		buffoff;
        	wait;
	    	$cpushram_failed =1;
	    	$err=1;
	}
# Test DMA between host and and RE3
	resetcons
	buffon
	gr2_initsys
	$tmp = gr2_cpure3
	if ($tmp) {
		resetcons;
		buffoff;
        	wait;
	    	$cpure3_failed =1;
	    	$err=1;
	}
# Test GE7 context switching
	if(gr2_ctxsw) {
		resetcons;
		buffoff;
        	wait;
	    	$ctxsw_failed =1;
	    	$err=1;
	}
	clear;
# Test quad drawing
	$tmp = gr2_quad
	if ($tmp) {
		resetcons;
		buffoff;
        	wait;
	    	$quad_failed =1;
	    	$err=1;
	}
	$tmp = gr2_fourquad
	if ($tmp) {
		resetcons;
		buffoff;
        	wait;
	    	$fourquad_failed = 1;
	    	$err=1;
	}
	clear;

	if ($chkbt457_failed) echo "Bt457 test failed";
	if ($bp_failed)  echo "bitplane test failed";
	if ($shramre3_failed) echo "shramre3 test failed"
	if ($cpushram_failed) echo "CPU shram test failed";
	if ($cpure3_failed) echo "cpure3 test failed ";
	if ($ctxsw_failed) echo "context switching test failed ";
	if ($vdma_failed) echo "vdma controller test failed ";
	if ($quad_failed) echo "quad test failed";
	if ($fourquad_failed) echo "fourquad test failed";

	if ($err)
	{
	    if (!$report) {
		emfail 2;
		wait;
		exit;
	    }	
	    echo "******  PRESS RETURN TO CONTINUE OR ^C TO EXIT ************"
	    $err=0
	    $gr2_failed=1
	    resetcons;
	    buffoff;
	    wait;
	}
	else {
		resetcons;
		buffoff;
		echo "BT457, Bit-Plane, DMA and QUADs Tests Passed.\n"
	}
	buffon

# Test stridedma between shram and re3
	gr2_initsys
	$tmp = gr2_stride
	if ($tmp)  {
	    $stride_failed =1 ;
	    $err=1;
	    resetcons;
	    buffoff;
	    wait;
	}
# Test Zbuffer
	gr2_initsys
	$tmp=gr2_zb
	if($tmp)  {
	    $zb_failed =1;
	    $err=1;
	    resetcons;
	    buffoff;
	    wait;
	}
	resetcons
	buffoff
	echo "************************* RESULTS ********************************"
	if ($stride_failed)  {
	    echo "stride test failed";
	    $gr2_failed = 1;
	    wait;
	}
	if ($zb_failed) { 
	    echo "Zbuffer test failed";
	    $gr2_failed = 1;
	    wait;
	}
	if (!$gr2_failed) echo "Stride DMA, and Z-Buffer Test Passed.\n"
# Test Xmap 
	buffon
	echo "testing XMAP"
	if (test_xmap) {
    	    $test_xmap_failed =1;
	    $err=1;
	    resetcons;
	    buffoff;
	    wait;
	}
# Test Xmap CLUT 
	if (test_xmap_clut) {
	    $test_xmap_clut_failed =1;
	    $err=1;
	    resetcons;
	    buffoff;
	    wait;
	}
	resetcons
	buffoff
	echo "************************* RESULTS ********************************"
	if ($test_xmap_failed) {
	    echo "test_xmap test failed";
	    $gr2_failed = 1;
	}
	if ($test_xmap_clut_failed) {
	    echo "test_xmap_clut test failed";
	    $gr2_failed = 1;
	}
	if (!$err) echo "XMAPs Test Passed.\n"


	if ($gr2_failed) {
		echo "ERROR: Failure detected on graphics board."
		wait;
	}
	else echo "graphics board tests passed"
	fi
	echo " *****************END OF THE TEST *****************"

	# Restore verbosity
	report=4
}

gr2_all {
        $tmp = gr2_setboard 0;
        if ($tmp) {
			
		echo "Testing gr3/gu1 in slot 0."
                gr2;
        	if ($gr2_failed) 
			echo "ERROR: Failure detected on gr3/gu1 in slot 0."
        }

        $tmp = gr2_setboard 1;
        if ($tmp) {
		echo "Testing gr3/gu1 in slot 1."
                gr2;
	        if ($gr2_failed) 
			echo "ERROR: Failure detected on gr3/gu1 in slot 1."
        }
}
# END OF GR2 SUPPORT

# START OF VINO DIAGNOSTICS
# THE FOLLOWING IS THE STARTUP SCRIPT FOR THE VINO DIAGNOSTICS.
#
# IN ORDER FOR THE SCRIPT TO RUN PROPERLY, THE FOLLOWING MUST BE DONE:
#       1. CONNECT A PAL VIDEO SOURCE TO A JACK
#       2. CONNECT A NTSC VIDEO SOURCE TO A JACK
#
vino {
$tmp = vino_regtest
if ($tmp && $stoponerr)
        wait;
$tmp = vino_7191_init
if ($tmp && $stoponerr)
        wait;

vino_inputs c

$tmp = vino_7191_status
if ($tmp && $stoponerr)
        wait;

vino_inputs s

$tmp = vino_7191_status

echo "# IN ORDER FOR THE VINO SCRIPT TO RUN PROPERLY, THE FOLLOWING MUST BE DONE:"
echo "#       1. CONNECT A PAL VIDEO SOURCE TO A JACK"
echo "#       2. CONNECT A NTSC VIDEO SOURCE TO A JACK"

$tmp = vino_dma1 -b -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma1 -a -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma3 -a -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma3 -b -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma4 -b -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma4 -a -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma5 -b -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma5 -a -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma6 -b -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma6 -a -p
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma7 -a -b -p
if ($tmp && $stoponerr)
        wait;

$tmp = vino_dma1 -a -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma1 -b -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma3 -a -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma3 -b -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma4 -b -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma4 -a -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma5 -b -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma5 -a -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma6 -b -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma6 -a -n
if ($tmp && $stoponerr)
        wait;
$tmp = vino_dma7 -a -b -n
if ($tmp && $stoponerr)
        wait;
}

camera {
$tmp = vino_camera_init
if ($tmp && $stoponerr)
        wait;
$tmp = vino_camera
if ($tmp && $stoponerr)
        wait;
}

# END OF VINO DIAGNOSTICS


# Initialize variables used by ng1.
$err=0
$ng1failed=0
$ng1_rex3_failed=0
$ng1_bt445_failed=0
$ng1_cmap_failed=0
$ng1_xmap9_failed=0
$ng1_vc2_failed=0
$ng1_vram_failed=0
$ng1_cid_failed=0
$ng1_dma_failed=0
$ng1_dma_result=-1

# Start of NG1 diagnostics 

ng1_script {
	$ng1failed=0;
	$err=0;
	buffon

# Test Rex3
	if(ng1_rexregs) {
		if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_rex3_failed = 1;
		$err=1;
	}
# Test bt445
	if(ng1_bt445test) {
		if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_bt445_failed =1;
		$err=1;
	}
# Test cmap
	if(ng1_cmaptest) {
		if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_cmap_failed = 1;
		$err=1;
	}
# Test Xmap9
	if(ng1_xmap9test) {
		if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_xmap9_failed = 1;
		$err=1;
	}
# Test VC2 
	if(ng1_vc2test) {
		if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_vc2_failed = 1;
		$err=1;
	}
# Test VRAM
	if(ng1_vram) {
		 if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_vram_failed = 1;
		$err=1;
	}
# Test CID
	if(ng1_cid) {
		if (!$report) {
			emfail 2;
			wait;
			exit;
		}
		$ng1_cid_failed = 1;
		$err=1;
	}
# Change Bus width to 64 & run DMA tests
        ng1_setvisual 0;
	ng1_color 0;
	ng1_block 0 0 105 105;
        ng1_buswidth 64;
        ng1_rwpacked 1;
        ng1_rwdouble 1;
        $ng1_dma_result=ng1_dmatest 0 0 100 100;
        if($ng1_dma_result == -1) {
                if (!$report) {
                        emfail 2;
                        wait;
                        exit;
                }
                $ng1_dma_failed = 1;
                $err=1;
        }
        ng1_buswidth 32;
	resetcons
	buffoff
	echo "************************* RESULTS ******************************"

	if($ng1_rex3_failed) {
		echo "Rex3 Register r/w tests failed.";
		$ng1failed = 1;
	}
	if($ng1_cmap_failed) {
		echo "Cmap r/w tests failed.";
		$ng1failed = 1;
	}
	if($ng1_xmap9_failed) {
		echo "Xmap9 r/w tests failed.";
		$ng1failed = 1;
	}
	if($ng1_vc2_failed) {
		echo "VC2 r/w tests failed.";
		$ng1failed = 1;
	}
	if($ng1_vram_failed) {
		echo "VRAM test failed.";
		$ng1failed = 1;
	}
	if($ng1_cid_failed) {
		echo "CID test failed.";
		$ng1failed = 1;
	}
	if($ng1_dma_failed) {
		echo "DMA tests failed.";
		$ng1failed = 1;
	}

	if (!$err) echo "REX3, CMAP, XMAP9, VC2, VRAM, CID & DMA Test Passed.\n"
	if ($ng1failed) echo "ERROR: Failure detected on NG1 graphics board."
	else echo "NG1 graphics board tests passed"
	fi
	echo " *****************END OF THE TEST *****************"
}

ng1 {
# test board 0 only (mostly for Indy)
	ng1_probe;
	$tmp = ng1_setboard 0;
	if ($tmp)
		ng1_script;
}

ng1_all {
        $tmp = ng1_setboard 0;
        if ($tmp) {
		echo "Testing gfx in slot 0."
                ng1_script;
        	if ($ng1failed) 
			echo "ERROR: Failure detected on gfx in slot 0."
        }

        $tmp = ng1_setboard 1;
        if ($tmp) {
		echo "Testing gfx in slot 1."
                ng1_script;
	        if ($ng1failed) 
			echo "ERROR: Failure detected on gfx in slot 1."
        }
}

# END OF NG1 SUPPORT

gfx {
    $express = gr2_probe;
    $newport=ng1_probe;

    if ($newport) {
	ng1_all;
    }
    if ($express) {
	gr2_all;
    }
    unix;
} 

gfxva {
    echo "Voltage changed to 4.75 V\n"
    chg_volt 0;
	ide_delay -s 15;
    $express = gr2_probe;
    $newport=ng1_probe;

    if ($newport) {
	ng1_all;
    }
    if ($express) {
	gr2_all;
    }
    echo "Voltage changed to 5.25 V\n"
    chg_volt 1;
	ide_delay -s 15;
    chg_volt 2;
	ide_delay -s 15;
    $express = gr2_probe;
    $newport=ng1_probe;

    if ($newport) {
	ng1_all;
    }
    if ($express) {
	gr2_all;
    }
    echo "Voltage changed to 5.0 V\n"
    chg_volt 1;
	ide_delay -s 15;
    unix
}

#Start of Galileo diagnostics
$mgras = 0
CheckSlot {
	$mgras = 0;
        $tmp = gr2_setboard 0;
        if ($tmp) {
		echo "GR2 Board Found in slot 0."
		return 0
        }

        $tmp = gr2_setboard 1;
        if ($tmp) {
		echo "GR2 Board Found in slot 1."
		return 0
        }

	$tmp = mg_setboard 0;
	if ($tmp) {
		echo "IMPACT Board Found in slot 0."
		$mgras = 1;
		return 0
	}

	if ($tmp) {
		$mgras = 1;
		echo "IMPACT Board Found in slot 1."
		return 0
	}

	$tmp = ng1_setboard 0;
	if ($tmp) {
		echo "NG1 Board Found in slot 0."
		return 0
	}

	$tmp = ng1_setboard 1;
	if ($tmp) {
		echo "NG1 Board Found in slot 1."
		return 0
	}

	$tmp = ng1_setboard 2;
	if ($tmp) {
		echo "NG1 Board Found in slot 2."
		return 0
	}
}

cc1test {
	CheckSlot;
	echo "CC1 Frame Buffer Test";
	if ($mgras)
		$status =mgv1_ev1_init ;
	else 
		$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "CC1 Memory Test";
	if ($mgras)
		$status = mgv1_cc1_mem;
	else
		$status = cc1_mem;
	if ($status)  {
		wait;
	}
	echo "CC1 (DMA MODE)Memory Test";
	if ($mgras)
		$status = mgv1_cc1_dma;
	else
		$status = cc1_dma;
	if ($status) {
		wait;
	}
}

ab1_red {
	CheckSlot;
	if ($mgras)
		$status =mgv1_ev1_init ;
	else
		$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "AB1 Red Channel Memory Test ";
	if ($mgras)
		$status = mgv1_ab1_rmem;
	else
		$status = ab1_rmem;
	if ($status) {
		wait;
	}
}

ab1_blue {
	CheckSlot;
	if ($mgras)
		$status =mgv1_ev1_init ;
	else
		$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "AB1 Blue Channel Memory Test ";
	if ($mgras)
		$status = ab1_bmem;
	else
		$status = ab1_bmem;
	if ($status) {
		wait;
	}
}

ab1_green {
	CheckSlot;
	if ($mgras)
		$status =mgv1_ev1_init ;
	else
		$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "AB1 Green Channel Memory Test ";
	if ($mgras)
		$status = mgv1_ab1_gmem;
	else
		$status = ab1_gmem;
	if ($status) {
		wait;
	}
}

ab1 {
	CheckSlot;
	if ($mgras)
		$status =mgv1_ev1_init ;
	else
		$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "AB1 Memory Test (Red, Green, Blue)";
	if ($mgras)
		status = mgv1_ab1_mem;
	else
		status = ab1_mem;
	if ($status)  {
		wait;
	}
}

kvtst {
	CheckSlot;
	if ($mgras) {
		$status =mgv1_ev1_init ;
	}
	else {
		$status =ev1_init ;
	}
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	if ($mgras) {
		echo "Test CC1 Display Control Bus";
        	$status = cc1_dcb;
        	if ($status)
                	wait;
        	echo "Test AB1 Display Control Bus";
        	$status = ab1_dcb;
        	if ($status)
                	wait;
        	echo "CC1 Memory Test";
        	cc1test;
        	echo "AB1 Memory Test (Red, Green, Blue)";
        	ab1;
	}
	else {
		echo "Test Display Control Bus";
		$status = ev1_dcb;
		if ($status) {
			wait;
		}
		echo "CC1 Memory Test";
		cc1test;
		echo "AB1 Memory Test (Red, Green, Blue)";
		ab1;
	}
}

kv {
	kvtst;
	unix;
}

kvatst {
	CheckSlot;
	if ($mgras) {
		echo "Voltage changed to 5.25 V\n"
        	chg_volt 1;
        	ide_delay -s 15;
        	chg_volt 2;
        	ide_delay -s 15;
		kvtst
	}
	else {
    	echo "Voltage changed to 4.75 V\n"
    	chg_volt 0;
	ide_delay -s 15;
	$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Not Found"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "Test Display Control Bus";
	$status = ev1_dcb;
	if ($status) {
		wait;
	}
	echo "CC1 Memory Test";
	cc1test;
	echo "AB1 Memory Test (Red, Green, Blue)";
	ab1;

    	echo "Voltage changed to 5.25 V\n"
	chg_volt 1;
	ide_delay -s 15;
    	chg_volt 2;
	ide_delay -s 15;
	$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	}
	echo "Galileo Board Initialized Properly"
	echo "Test Display Control Bus";
	$status = ev1_dcb;
	if ($status) {
		wait;
	}
	echo "CC1 Memory Test";
	cc1test;
	echo "AB1 Memory Test (Red, Green, Blue)";
	ab1;

    	echo "Voltage changed to 5.0 V\n"
    	chg_volt 1;
	ide_delay -s 15;
	$status =ev1_init ;
	if ($status)  {
		echo " Galileo Board Initialization FAILED"
		return ($status);
	} 
	echo "Galileo Board Initialized Properly"
	echo "Test Display Control Bus";
	$status = ev1_dcb;
	if ($status) {
		wait;
	}
	echo "CC1 Memory Test";
	cc1test;
	echo "AB1 Memory Test (Red, Green, Blue)";
	ab1;
	}

	unix;
}

kva {
	kvatst;
	unix;
}

kvloop {
	$loopcount = 1;
	$kvtstpass = 0;
	$kvtstfail = 0;
	while ( $loopcount < 4 ) {
		echo ""
		echo "----------------------------------------------------"
		echo "Starting kv test loop" $loopcount
		echo "----------------------------------------------------\n"
		if(kvtst) {
			$kvtstfail = $kvtstfail + 1;
			$failed = 1;
		}
		else {
			$kvtstpass = $kvtstpass + 1;
		}
		$loopcount = $loopcount + 1;
	}
	echo ""
	echo "----------------------------------------------------"
	echo "kv test: 	Pass =" $kvtstpass"	Fail =" $kvtstfail
	echo "----------------------------------------------------"
	echo ""
	echo ""
	unix;

}

kvaloop {
	$loopcount = 1;
	$kvtstpass = 0;
	$kvtstfail = 0;
	while ( $loopcount < 4 ) {
		echo ""
		echo "----------------------------------------------------"
		echo "Starting kva test loop" $loopcount
		echo "----------------------------------------------------\n"
		if(kvatst) {
			$kvtstfail = $kvtstfail + 1;
			$failed = 1;
		}
		else {
			$kvtstpass = $kvtstpass + 1;
		}
		$loopcount = $loopcount + 1;
	}
	echo ""
	echo "----------------------------------------------------"
	echo "kva test: 	Pass =" $kvtstpass"	Fail =" $kvtstfail
	echo "----------------------------------------------------"
	echo ""
	echo ""
       	if ($kvtstfail)  {
		echo "ERROR: Failure detected on Galileo video board."
		wait;
	}
	else {
		unix;
	}
}


#END of Galileo diagnostics

#START of Galileo1.5 diagnostics
mgv_menu {
echo ""
echo "=================== IMPACT VIDEO IDE COMMANDS ======================"
echo "mg_setboard(0)      mg_reset           mgv_init          mgv_galregl1"
echo "mgv_abdcb           mgv_abaddrbus      mgv_abdatabus     mgv_abpatrn"
echo "mgv_ccdcb           mgv_ccaddrbus      mgv_ccdatabus     mgv_ccpatrn"
echo "mgv_vgiregpatrn     mgv_vgiregwalk     mgv_vgiint        mgv_vgidma"
echo "mgv_voutl0          mgv_voutl1         mgv_vgivoutl0"
echo "mgv_extvin          mgv_vinl1"
echo "mgv_cctovgi         mgv_cctovgix       mgv_readcc        mgv_gpitrig"
echo "===================================================================="
echo "mgv_initall         mgv_aball          mgv_ccall"
echo "mgv_vgiregall       mgv_vgiintall      mgv_vgidmaall     mgv_vgiall"
echo "mgv_voutall         mgv_vinall         mgv_loopbackall"
echo "mgv_all"
echo "=================================================="
echo "*******  USE mgv_all to run all of them  *********"
echo "=================================================="
echo ""
}

mgv_initall {
	$failed = 0;
	echo ""
	buffon;
	mg_setboard 0;
	mg_reset;
	resetcons;
	buffoff;
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
}

mgv_aball {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test AB and DRAM"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_abdcb;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_abaddrbus -r -g -b -a
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_abdatabus -r -g -b -a
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_abpatrn -r -g -b -a
	if ($status) {
		$failed = 1;
		return($status);
	}

#	$status = mgv_abpatrnslow -r -g -b -a
	if ($status) {
		$failed = 1;
		return($status);
	}
}

mgv_ccall {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test CC and Frame Buffer"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_ccdcb;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_ccaddrbus 
	if ($status) {
		$failed = 1;
		return(1);
	}

	$status = mgv_ccdatabus
	if ($status) {
		$failed = 1;
		return($status);
	}
}

mgv_vgiregall {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test VGI registers"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiregpatrn
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiregwalk
	if ($status) {
		$failed = 1;
		return($status);
	}
}

mgv_vgiintall {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test VGI Interrupts"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiint -i 0x1;
	if ($status) {
		$failed = 1;
		return($status);
	}

#	$status = mgv_vgiint -i 0x2;
#	if ($status) {
#		$failed = 1;
#		return($status);
#	}

	$status = mgv_vgiint -i 0x4;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiint -i 0x8;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiint -i 0x10;
	if ($status) {
		$failed = 1;
		return($status);
	}

#	$status = mgv_vgiint -i 0x20;
#	if ($status) {
#		$failed = 1;
#		return($status);
#	}

	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiint -c 2 -i 0x1;
	if ($status) {
		$failed = 1;
		return($status);
	}

#	$status = mgv_vgiint -c 2 -i 0x2;
#	if ($status) {
#		$failed = 1;
#		return($status);
#	}

	$status = mgv_vgiint -c 2 -i 0x4;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiint -c 2 -i 0x8;
	if ($status) {
		$failed = 1;
		return($status);
	}

	$status = mgv_vgiint -c 2 -i 0x10;
	if ($status) {
		$failed = 1;
		return($status);
	}

#	$status = mgv_vgiint -c 2 -i 0x20;
#	if ($status) {
#		$failed = 1;
#		return($status);
#	}
}

mgv_vgidmaall {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test VGI DMA's"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -t 1 -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -v 1 -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -v 2 -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

#	$status = mgv_vgidma -o 1 -v 3 -z 50; 
#	if ($status) {
#		return($status);
#	}

	ide_delay -s 2;

	$status = mgv_vgidma -v 4 -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -t 1 -v 5 -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -t 1 -v 5 -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -t 1 -v 6 -y 0x40404040  -z 50; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_initall;
	if ($failed) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -t 1; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -v 1; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -v 2; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

#	$status = mgv_vgidma -c 2 -o 1 -v 3; 
#	if ($status) {
#		return($status);
#	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -v 4; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -t 1 -v 5; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -t 1 -v 5; 
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -s 2;

	$status = mgv_vgidma -c 2 -t 1 -v 6 -y 0x40404040 ; 
	if ($status) {
		$failed = 1;
		return($status);
	}

}

mgv_vgiall {
	$failed = 0;
	$status = mgv_vgiregall;
	if ($failed) {
		return($status);
	}
	$status = mgv_vgiintall;
	if ($failed) {
		$failed = 1;
		return($status);
	}
	$status = mgv_vgidmaall;
	if ($failed) {
		$failed = 1;
		return($status);
	}
}


mgv_voutall {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test Video Output"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	echo ""
	echo "******** Please select Channel A on the WFM 601i ********"
	echo "Press <Space> when ready"
	$status = mgv_waitforspace -s 86400
	echo ""
	echo "Confirm patterns on Channel 1 Video Monitor"
	$status = mgv_voutl0 1;
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -ms 10000 ;

	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	echo ""
	$status = mgv_vgivoutl0;
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -ms 10000 ;

	echo ""
	echo "******** Please select Channel B on the WFM 601i ********"
	echo "Press <Space> when ready"
	$status = mgv_waitforspace -s 86400
	echo ""
	echo "Confirm patterns on Channel 2 Video Monitor"
	$status = mgv_voutl0 2;
	if ($status) {
		$failed = 1;
		return($status);
	}

	ide_delay -ms 10000 ;

	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}

	echo ""
	$status = mgv_vgivoutl0 2;
	if ($status) {
		$failed = 1;
		return($status);
	}

}

mgv_vinall {
	$failed = 0;
	echo ""
	echo "=====Initialize & Test Video input"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	echo "Video Input Tests for Channel 1"
	$status = mgv_extvin;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	echo "Video Input Tests for Channel 2"
	$status = mgv_extvin 2;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	$status = mgv_vinl1;
	if ($status) {
		$failed = 1;
		return($status);
	}
}

mgv_loopbackall {
	$failed = 0;
	echo "=====Initialize & Test Loop Back"
	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	echo ""
	echo "******** Please select the Loop Back switch on the IDE switch box ********"
	echo "Press <Space> when ready"
	$status = mgv_waitforspace -s 86400
	if ($status) {
		echo ""
		echo "CC1 to VGI1 Loop Back Test Timed Out"
		echo ""
	} else {
		echo ""
		echo "CC1 to VGI1 Loop Back Test for Channel 1"
		echo ""
		$status = mgv_cctovgi 1;
		if ($status) {
			$failed = 1;
			return($status);
		}
	}

	$status = mgv_init;
	if ($status) {
		$failed = 1;
		return($status);
	}
	echo "CC1 to VGI1 Loop Back Test for Channel 2"
	$status = mgv_cctovgi 2;
	if ($status) {
		$failed = 1;
		return($status);
	}
}

mgv_csc_all	{
        mgv_initall;	
	echo "Verifying  whether the CSC/TMI optional board is present ..." 
	$failed = 0;
	$status = mgv_csc_probe ;
	if ($status)	{
		echo "CSC/TMI optional board is NOT present"
		return 0;
	}
	else {
		echo "Running CSC diagnostics ...."

		$status = mgv_csc_bus -b 0 -t 0 ;

		if ($status) {
			echo "CSC Address Bus test failed"
			$failed = 1;
			return ($status);
		}
		else {
			echo "CSC Address Bus test passed"
		}

		$status = mgv_csc_bus -b 1 -t 3 ;
		
		if ($status) {
			echo "CSC Data Bus test failed"
			$failed = 1;
			return($status);
		}
		else {
			echo "CSC Data Bus test passed"
		}

		$status = mgv_csc_outlut ;

		if ($status) {
			echo "CSC Output LUTS test failed"
			$failed = 1;
			return($status);
		}
		else {
			echo "CSC Output LUTS test passed"
		}

		$status = mgv_csc_coef ;

		if ($status) {
			echo "CSC Coefficient test failed"
			$failed = 1;
			return ($status);
		}
		else {
			echo "CSC Coefficient test passed"
		}

		return $status ;
	}
}

mgv_all {
	$status = 0;
	$failed = 0;
	echo ""
	echo "Impact Video IDE Test Suite"
	echo ""

############### Initialize & Test All Loop Back
	$status = mgv_loopbackall;
	if ($failed) {
		return(-1);
	}

############### Test GPI Trigger
	echo "GPI Trigger Polarity Test"
	echo "Please set the GPI trigger switch to the OFF position"
	echo "Press <Space> when ready"
	$status = mgv_waitforspace -s 86400
	if ($status) {
		echo ""
		echo "GPI Trigger Polarity Test Timed Out"
		echo ""
	} else {
		$status = mgv_gpitrig -p 0;
		if ($status) {
			return(-1);
		}
		$status = mgv_gpitrig -p 1;
		if ($status) {
			return(-1);
		}
        }

        echo; echo; echo;
        echo "Please select the TSG422 switch on the IDE switch box"
        echo "Press <Space> when ready"
        $status = mgv_waitforspace -s 86400
        if ($status) {
                 echo ""
                 echo "Test timed out after waiting an hour!"
                 return(-1)
        }

        echo; echo; echo;
############### Initialize & Test GALILEO 1.5 Register Access
	echo ""
	echo "=====Initialize & Test GALILEO 1.5 Register Access"
	$status = mgv_initall;
	if ($failed) {
		return($status);
	}
	$status = mgv_galregl1;
	if ($failed) {
		return($status);
	}

############### Initialize & Test CC and Frame Buffer
	$status = mgv_ccall;
	if ($failed) {
		return($status);
	}

############### Initialize & Test AB and DRAM
	$status = mgv_aball;
	if ($failed) {
		return($status);
	}

############### Initialize & Test VGI registers
	$status = mgv_vgiregall;
	if ($failed) {
		return($status);
	}

############### Initialize & Test VGI Interrupts
	$status = mgv_vgiintall;
	if ($failed) {
		return($status);
	}

############### Initialize & Test Video Output
	$status = mgv_voutall;
	if ($failed) {
		return($status);
	}

############### Initialize & Test Video input
#	$status = mgv_vinall;
#	if ($failed) {
#		return($status);
#	}

############### Initialize & Test VGI DMA's
	$status = mgv_vgidmaall;
	if ($failed) {
		return($status);
	}

############### Initialize & Test CSC
	$status = mgv_csc_all;
	if ($failed) {
		return($status);
	}

############### Initialize & Exit
	echo ""
	echo "=====Initialize & Exit"
	$status = mgv_init;
	if ($status) {
		return($status);
	}
	echo ""
	echo "Impact Video IDE Test Suite Completed"
	unix
}

#END of Galileo1.5 diagnostics

$status=0
$failed = 0;

menu
