#ident "stand/arcs/ide/IP30/shell: $Revision: 1.1"
#
# This is an ide startup file.
#
# this script is executed when shell.ide is run.
# It is intended to be used by engineering.

report=4 # set verbose, but not debug
$stoponerr=1
hinv -v

echo ""
echo "Ide included scripts:"
echo "	ALL:	short_tests (XXX-XXX minutes)"
echo "		long_tests (XXX_XXX minutes)"
echo "	FRU's:	ip30   frontplane   memory"
echo "		pm (processor module) "
echo "		gfx   tmezz"
echo "	subsystems (ASIC's and others):"
echo "		heart   bridge   rad   scsi   pci"
echo "		cache   tlbtest   xbow"

# find out of we are MP
$mp = ismp
$slave = slavecpu

#
# memory, cache and tlb tests
#

#wrappers for low memory tests
ldram {
	$tmp = ldram_bkend -- -p --;
	return ($tmp);
}
lkh {
	$tmp = lkh_bkend -- -p --;
	return ($tmp);
}

ct {
	if ($mp) {
		$tmp = set_exists -s ct_cpu_set;
		if (! $tmp) {
			create_set -s ct_cpu_set;
		} 
		$tmp = ct_bkend -- -s ct_cpu_set -p -- 14 ;
	} 
	else {
		echo "ct error: cachethrasher requires 2 or more processors";
		$tmp = 1;
	}
	return $tmp;
}

memory {
# low dram tests (where ide resides)
	$tmp = ldram;
	if ($tmp) {
	        wait;
	}
	$tmp = lkh;
	if ($tmp) {
	        wait;
	}
# XXX high memory tests: add more tests?
# Kh test
	$tmp = memtest 1;
	if ($tmp) {
	        wait;
	}

# ecc tests 
	$tmp =ecctest;
	if ($tmp) {
		wait;
	}

}

cache {
	$tmp = dcache1
	if ($tmp)
	        wait;
	if ($mp) {
		$tmp = exec -v $slave -f dcache1
		if ($tmp)
			wait;
	}

	$tmp = icache1
	if ($tmp)
	        wait;
	if ($mp) {
		$tmp = exec -v $slave -f icache1
		if ($tmp)
			wait;
	}

	$tmp = icache2
	if ($tmp)
        	wait;
	if ($mp) {
		$tmp = exec -v $slave -f icache2
		if ($tmp)
			wait;
	}

	$tmp = scache1
	if ($tmp)
        	wait;
	if ($mp) {
		$tmp = exec -v $slave -f scache1
		if ($tmp)
			wait;
	}

	$tmp = scache2
	if ($tmp)
        	wait;
	if ($mp) {
		$tmp = exec -v $slave -f scache2
		if ($tmp)
			wait;
	}
}

tlbtest {
	$tmp = tlb;
	if ($tmp)
        	wait;
	if ($mp) {
		$tmp = exec -v $slave -f tlb
		if ($tmp)
        		wait;
	}
	$tmp = utlb;
	if ($tmp)
        	wait;
	if ($mp) {
		$tmp = exec -v $slave -f utlb
		if ($tmp)
        		wait;
	}
}

#
# ASIC's
#
heart {
	$tmp = hr_regs;
	if ($tmp) {
        	wait;
	}
	$tmp = hr_misc;
	if ($tmp) {
        	wait;
	}
	$tmp = hr_intr;
	if ($tmp) {
        	wait;
	}
	$tmp = hr_piowcr;
	if ($tmp) {
        	wait;
	}
	$tmp = hr_piuacc;
	if ($tmp) {
        	wait;
	}
}

xbow {
	$tmp = x_regs;
	if ($tmp) {
		wait;
	}
	$tmp = x_acc;
	if ($tmp) {
		wait;
	}
}

b_pci {
        $tmp = pci_sio -p 1 -t abc -b 50;
        if ($tmp) {
        	wait;
        }

        $tmp = pci_sio -p 1 -t abc -b 2000;
        if ($tmp) {
        	wait;
        }

        $tmp = pci_sio -p 1 -t abc -b 384000;
        if ($tmp) {
        	wait;
        }

        $tmp = pci_par;
        if ($tmp) {
        	wait;
        }
}

bridge {
	$tmp = br_regs;
	if ($tmp) {
        	wait;
	}
	$tmp = br_intr;
	if ($tmp) {
        	wait;
	}
	$tmp = br_err;
	if ($tmp) {
        	wait;
	}
	$tmp = br_ram;
	if ($tmp) {
        	wait;
	}
}

# I/O chip for serial, parallel
# anymore needed ? XXX
ioc3 {
	$tmp = ioc3_regs;
	if ($tmp) {
		wait;
	}
	$tmp = ioc3_sram;
	if ($tmp) {
		wait;
	}
	$tmp = rtc_regs;
	if ($tmp) {
		wait;
	}
	$tmp = duart_regs;
	if ($tmp) {
		wait;
	}
}

# audio chip XXX
rad {
	$tmp = rad_regs;
	if ($tmp) {
		wait;
	}
	$tmp = rad_dma;
	if ($tmp) {
		wait;
	}
	$tmp = rad_ram;
	if ($tmp) {
		wait;
	}
}

#
# boards
#

# CPU diagnostic (covers each processor)
pm {
	fpu
	if ($mp)
		exec -v $slave -f "fpu"
	cache
	tlbtest
}

# NOTE: the main logic board test *excludes* memory
#	so that we can use it and add shorter or longer
#	memory tests
ip30 {
	heart;
	bridge;

	scsi_test;

	b_pci;
	ioc3;
	rad;
}

frontplane {
	xbow;
}

# implement XXX
# use pcifailed flag 
pci {
	echo "pci diag not implemented yet"
}

#
# G F X
#
# GM10		SI
# GM10/TRAM	SI + texture
# GM20		SSI
# GM20/TRAM	MXI
#
# from IP30/ip30imp 10-31-96
# TO DO: XXX
#	the lines starting with #XXXX were commented out from IP30/ip30imp
#		as they called mfg-only code; the other commented out lines
#		were already commented out in ip30imp. I kept them in.
#	comment out all the verbosity
#	add emfail calls with appropriate fru numbers 
#		(see above under D_FRU_GFX_xxx)
#	remove the "# needed" used only to keep track of what really has
#		to be part of field
# 

delay {
	ide_delay -s 2;
}

# NOTE: in IP28, a non-script mg_reset was used
# needed
mg_reset_1 {
                mg_setboard ; ide_delay -s 2;
#               mg_setnumre4s -c 1 ; ide_delay -s 2;
                mg_hqfifoinit ; ide_delay -s 2;
#               mg_set_0ge ; ide_delay -s 2;
                echo "mg_dacreset in progress "
                mg_dacreset ; ide_delay -s 2;
                echo "mg_vc3init in progress "
                mg_vc3init -t 0x107 ; ide_delay -s 2;
		if ($repprdram_sync == 1) {
                	echo "mg_sync_repp in progress "
                	mg_sync_repp ; ide_delay -s 2;
                	echo "mg_sync_pprdram in progress "
                	mg_sync_pprdram ; ide_delay -s 2;
                	mg_rdram_ccsearch ; ide_delay -s 2 ;
			$repprdram_sync = 0;
		}
                echo "mg_xmapinit in progress "
                mg_xmapinit ; ide_delay -s 2 ;
                mg_initppregs ; ide_delay -s 2 ;
#XXXX		echo "mg_progcmap in progress "
#XXXX		mg_progcmap 0x0 ; ide_delay -s 2 ;
                mg_gammaprog 0x0 ; ide_delay -s 2 ;
                mg_xmapinit ; ide_delay -s 2 ;
		mg_tram_ctrl; ide_delay -s 2 ;
}

# needed
mg_rtfifo_loop {

	mg_setboard ; delay; mg_hqfifoinit

	report=2
	echo " ============  Data Format tests done through PIO ============="
	$status = mg_rtpio_loop -i 4 -o 0
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 4 -o 1
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 3 -o 2
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 2 -o 0
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 2 -o 1
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 1 -o 0
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 1 -o 1
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 0 -o 0
	if ($status == 1) { $failed = 1; return (-1); }
	$status = mg_rtpio_loop -i 0 -o 1
	if ($status == 1) { $failed = 1; return (-1); }

	mg_setboard  ; delay; mg_hqfifoinit

	$status = mg_rtdma_loop -p 2 ;
		if ($status == 1) { $failed = 1; return (-1); }
	return (0);
}

# needed
enabdisp {
	mg_pokexmap -r XMAP_DIB_CTRL0 -d 0x100
}

# needed
allsetup {
	$failed =0;
     	mg_gfxreset;
	delay;
	delay;
        mg_setboard; delay; mg_hqfifoinit
	delay;
	mg_set_0ge;
	delay;
	$status = mg_reset;
	if ($status) {
		$failed = 1;
		return (-1);
	}
	delay;
	delay;
	resetcons
	if (!mg_gfxconsole) {
		mg_sync_repp
        	mg_sync_pprdram
        	mg_xmapinit
		mg_rdram_ccsearch
        	mg_initppregs
		enabdisp	
		mg0_clear_color
	}
	$solid = mg_issolid;
}

# needed
mg_tram_rev_nobuff {
	mg_dma_tram -r -e 1 -p
	$foo = mg_setnumre4s -q
	if ($foo == 2) {
		mg_dma_tram -r -e 1 -p -n 1
	}
}

# needed
hq3test {
	echo "------	Executing Hq3 Test Suite 	------"
	$failed = 0;
	buffon;
	mg_setboard; delay; mg_hqfifoinit;
	delay;
	mg_hqfifoinit
	mg_set_0ge
	$testnum = "_1"
#        $status  	= 	mg_hq3_initcheck;
#        if ($status) {
#                $failed = 1;
#		echo "mg_hq3_initcheck";
#                return(-1);
#        }


	$testnum = "_02"
        $status  	= 	mg_hq3;
        if ($status) {
                $failed = 1;
                return(-1);
        }
	mg_setboard; delay; mg_hqfifoinit;
	delay;
	$testnum = "_03"
     	$status  	= 	mg_hq3_cp;
     	if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_04"
     	$status  	= 	mg_hq3_converter;
     	if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_05"
        $status  	= 	mg_hq3_cfifo;
        if ($status) {
                $failed = 1;
                return(-1);
        }

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

	echo "********	Hq3 Test Suite Execution Completed 	********"
	resetcons; buffoff
}



# GE11 test scripts 

gioslot_2GE {
	$tmp = mg_setboard 0; delay; mg_hqfifoinit;
	if ($tmp) {
		echo "Mgras Gfx init to GIO Slot 0 "
		mg_setboard 0 2; delay; mg_hqfifoinit ;
	}
	else {
		$tmp = mg_setboard 1; delay; mg_hqfifoinit ;
		if ($tmp) {
			echo "Found boards in slot 1"
			mg_setboard 1 2; delay; mg_hqfifoinit ;
	        }
		else {
			echo "No boards found in slot 0 or slot 1"
		}
	}
}

# needed
dactest {
	echo "------	Executing DAC   Test Suite 	------"
	$testnum = "_06"
        $status 	=	mg_dacreset;
        if ($status) {
                $failed = 1;
                return(-1);
        }


	$testnum = "_07"
        $status 	=	mg_dacmodereg;
        if ($status) {
                $failed = 1;
                return(-1);
        }


	$testnum = "_08"
        $status 	=	mg_dacreset;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_09"
        $status 	=	mg_dacaddrreg;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_10"
        $status 	=	mg_dacreset;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_11"
        $status 	=	mg_clrpaletteaddrUniq;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_12"
        $status 	=	mg_dacreset;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_13"
        $status 	=	mg_clrpalettewalkbit;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_14"
        $status 	=	mg_dacreset;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_15"
        $status 	=	mg_clrpalettepatrn;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_16"
        $status 	=	mg_dacreset;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	echo "********	DAC Test Suite Execution Completed 	********"
}

# needed
vc3test {
	echo "------	Executing VC3   Test Suite 	------"
	$testnum = "_17"
        $status 	=	mg_vc3reset;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_18"
        $status 	=	mg_vc3internalreg;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_19"
        $status 	=	mg_vc3addrsbus;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_20"
        $status 	=	mg_vc3databus;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_21"
        $status 	=	mg_vc3addrsuniq;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_22"
        $status 	=	mg_vc3patrn;
        if ($status) {
                $failed = 1;
                return(-1);
        }


	echo "********	VC3 Test Suite Execution Completed 	********"
}

# needed
cmaptest {
	echo "------	Executing CMAP   Test Suite 	------"
	$testnum = "_23"
        $status 	=	mg_vc3init -t 0x107;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#XXXX	mg_clrcmpcnt;
	$testnum = "_24"
        $status 	=	mg_cmaprev;
#XXXX	mg_dispcmapcnt;
        if (!$status) {
                $failed = 1;
		return (-1);
        }


#XXXX	mg_clrcmpcnt;
	$testnum = "_25"
        $status 	=	mg_cmapdatabus 0;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#XXXX	mg_clrcmpcnt;
	$testnum = "_26"
        $status 	=	mg_cmapaddrsbus 0;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#XXXX	mg_clrcmpcnt; report=4;
	$testnum = "_27"
        $status 	=	mg_cmappatrn 0;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#XXXX	mg_clrcmpcnt;
	$testnum = "_28"
        $status 	=	mg_cmapaddrsuniq 0;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }


#XXXX	mg_clrcmpcnt;
	$testnum = "_29"
        $status 	=	mg_cmapdatabus 1;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }


#XXXX	mg_clrcmpcnt;
	$testnum = "_30"
        $status 	=	mg_cmapaddrsbus 1;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#XXXX	mg_clrcmpcnt; report=4;
	$testnum = "_31"
        $status 	=	mg_cmappatrn 1;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#XXXX	mg_clrcmpcnt;
	$testnum = "_32"
        $status 	=	mg_cmapaddrsuniq 1;
#XXXX	mg_dispcmapcnt;
        if ($status) {
                $failed = 1;
		return (-1);
        }

#	$testnum = "_33"
#        $status 	=	mg_cmapuniqtest;
#        if ($status) {
#                $failed = 1;
#		return (-1);
#        }


	echo "********	CMAP Test Suite Execution Completed 	********"
}

# needed
mg_dcbdma_tests {
    $failed =0;
    mg_setboard; delay; mg_hqfifoinit;
    buffon;
	mg_dcbdma 1;
	delay ; delay ; delay;

		echo " DAC Tests in DCBDMA mode "
        $status     =   dactest;
        if ($failed) {
    			mg_dcbdma 0;
                return(-1);
        }

# delay ; delay ; delay;

		echo " VC3 Tests in DCBDMA mode "
        $status     =   vc3test;
        if ($failed) {
    			mg_dcbdma 0;
                return(-1);
        }
 	delay ; delay ; delay;

		echo " CMAP Tests in DCBDMA mode "
        $status     =   cmaptest;
        if ($failed) {
    			mg_dcbdma 0;
                return(-1);
        }
    			mg_dcbdma 0;
# 	delay ; delay ; delay;
        $status     =   mg_reset;
        if ($status) {
                $failed = 1;
                return(-1);
        }
    delay;

}

# needed
bkend {
	$failed =0;
	mg_setboard; delay; mg_hqfifoinit;
	buffon;
	echo "------	Executing Back End   Test Suite 	------"
        $status 	=	dactest;
        if ($failed) {
                return(-1);
        }

        $status 	=	vc3test;
        if ($failed) {
		$vc3fail = 1;
                return(-1);
        }

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

        $status 	=	mg_reset; 
        if ($status) {
                $failed = 1;
                return(-1);
        }
	delay;

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

   	$status     =   mg_reset;
        if ($status) {
                $failed = 1;
                return(-1);
        }
	delay;

	$testnum = "_34"
        $status 	=	mg_xmapdcbreg 0;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$testnum = "_35"
        $status 	=	mg_xmapdcbreg 1;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	$tmp = mg_setnumre4s -q
	if ($tmp == 2) {
		$testnum = "_36"
		$status         =       mg_xmapdcbreg 2;
        	if ($status) {
                	$failed = 1;
                	return(-1);
        	}
		$testnum = "_37"
		$status         =       mg_xmapdcbreg 3;
        	if ($status) {
                	$failed = 1;
                	return(-1);
        	}
	}
		

	$testnum = "_38"
        $status 	=	mg_reset; 
        if ($status) {
                $failed = 1;
                return(-1);
        }
	delay;

#XXX #	$testnum = "_39"
#XXX #	mg_stoptiming;
#XXX #	$status		=	mg_vc3init -t 0x107
#XXX #	if ($status) {
#XXX #		$failed = 1;
#XXX #		return(-1);
#XXX #	}
     	$testnum = "_40"
     	mg_starttiming;
     	$status 	=	mg_crcwalk;
     	if ($status) {
     		$failed = 1;
     		return(-1);
     	}
#XXX #	$testnum = "_41"
#XXX #	$status 	=	mg_reset; 
#XXX #	if ($status) {
#XXX #		$failed = 1;
#XXX #		return(-1);
#XXX #	}
#XXX #
#XXX #	$testnum = "_42"
#XXX #	mg_stoptiming;
#XXX #	$status		=	mg_vc3init -t 0x130
#XXX #	if ($status) {
#XXX #		$failed = 1;
#XXX #		return(-1);
#XXX #	}
#XXX #	$testnum = "_43"
#XXX #	mg_starttiming;
#XXX #	$status 	=	mg_crcwalk;
#XXX #	if ($status) {
#XXX #		$failed = 1;
#XXX #		return(-1);
#XXX #	}
#XXX #	$testnum = "_44"
#XXX #	$status 	=	mg_reset; 
#XXX #	if ($status) {
#XXX #		$failed = 1;
#XXX #		return(-1);
#XXX #	}
#XXX #
 	echo "Testing 1280_1024_76 timing"
 	$testnum = "_45"
 	$status		=	mg_vc3init -t 0x139
 	if ($status) {
 		$failed = 1;
 		return(-1);
 	}
 	$testnum = "_46"
 	$status 	=	mg_crcwalk;
 	if ($status) {
 		$failed = 1;
 		return(-1);
 	}
 	$testnum = "_47"
 	$status 	=	mg_reset; 
 	if ($status) {
 		$failed = 1;
 		return(-1);
 	}
 
#XXX 	if ($solid) {	
#XXX 		$testnum = "_48"
#XXX 		echo "Testing 1600x1200 solid timing"
#XXX 		mg_stoptiming;
#XXX 		$status	=	mg_vc3init -t 0x156
#XXX 		if ($status) {
#XXX 			$failed = 1;
#XXX 			return(-1);
#XXX 		}
#XXX 		$testnum = "_49"
#XXX 		mg_starttiming;
#XXX 		$status	=	mg_crcwalk;
#XXX 	        if ($status) {
#XXX 			$failed = 1;
#XXX 			return(-1);
#XXX 		}
#XXX 	} else {
 		$testnum = "_50"
 		echo "Testing 1600x1200 timing"
 		mg_stoptiming;
 		$status	=	mg_vc3init -t 0x159
 		if ($status) {
 			$failed = 1;
 			return(-1);
 		}
 		$testnum = "_51"
 		mg_starttiming;
 		$status	=	mg_crcwalk;
 		if ($status) {
 			$failed = 1;
 			return(-1);
 		}
#XXX 	}
#XXX 
#XXX 	$testnum = "_52"
#XXX 
#XXX 	delay;
#XXX 	echo "Executing mg_vc3cursorposition test..."
#XXX 	$status = mg_reset;
#XXX 	if ($status) {
#XXX 		$failed = 1;
#XXX 		return (-1);
#XXX 	}
#XXX 	delay;
#XXX 	mg_xmapinit;
#XXX 	delay;
#XXX 	repeat 3 {
#XXX 		delay
#XXX 	}
#XXX 
#XXX 	$testnum = "_53"
#XXX 	$status 	=	mg_vc3cursorposition;
#XXX 	if ($status) {
#XXX                 $failed = 1;
#XXX 		resetcons; buffoff;
#XXX                 return(-1);
#XXX 	}
#XXX 	
#XXX 
#XXX 	resetcons; buffoff;
	echo "********	Back End Test Suite Execution Completed 	********"

}

re4test {
	$failed =0;
	report = 3;
	echo "------	Executing RE4   Test Suite 	------"
	$testnum = "_54"
	$status 	=	mg_re_status_reg;
	if ($status) {
		$failed = 1; return(-1);
	}

	$testnum = "_55"
	$status 	=	mg_re_rdwr_regs;
	if ($status) {
		$failed = 1; return(-1);
	}

	$testnum = "_56"
	$status 	=	mg_re_internal_ram -t0;
	if ($status) {
		$failed = 1; return(-1);
	}

	$testnum = "_57"
	$status 	=	mg_re_internal_ram -t1;
	if ($status)  {
		$failed = 1; return(-1);
	}

	$testnum = "_58"
	$status 	=	mg_re_internal_ram -t2;
	if ($status) {
		$failed = 1; return(-1);
	}

	$testnum = "_59"
	$status 	=	mg_re_internal_ram -t3;
	if ($status) {
		$failed = 1; return(-1);
	}


	$testnum = "_60"
	$status 	=	mg_re_internal_ram -t4;
	if ($status) {
		$failed = 1; return(-1);
	}

	$testnum = "_61"
	$status 	=	mg_re_internal_ram -t5;
	if ($status) {
		$failed = 1; return(-1);
	}

	echo "********	RE4 Test Suite Execution Completed 	********"
	report = 4;
}

dmatest {
	$failed =0;
	echo "------	Executing DMA Test Suite 	------"
	$testnum = "_62"
        $status 	=	mg_host_hqdma;
        if ($status) {
                $failed = 1;
                return(-1);
        }


	$testnum = "_63"
        $status 	=	mg_host_hq_cp_dma;
	if ($status) {
		$failed = 1;
		return(-1);
	}

#        $status 	=	mg_ge_dma;
#	if ($status) {
#                $failed = 1;
#                return(-1);
#        }

#	DMA PIO Test
	$testnum = "_64"
	$status 	=	mg_dma_pp  -r1 -e1 -w1 -d1  -t  -m 0 0 -b 0x240 -y 16 -z 192
	if ($status) {
		$failed = 1;
		return(-1);
	}
	echo "********	DMA Test Suite Execution Completed 	********"
}

# allows colors to be correct for drawings
drawsetup {
	delay;
#	mg_gfxreset;
#	mg_set_0ge;
#	mg_reset;
	delay;
	delay;
	mg_xmapinit;
}

drawclose {
	delay;
#	resetcons;
	delay;
	delay;
}

tex_draw_test {
	$failed =0;
	echo "------	Executing tex_draw_test  Suite 	------"

	drawsetup;
	$testnum = "_65"
	$status		=	mg_notex_line
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_66"
	$status		=	mg_notex_poly
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_67"
	$status		=	mg_tex_poly 
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

#	delay;
#	$testnum = "_68"
#	$status		=	mg_tex_1d
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_69"
#	$status		=	mg_tex_3d
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_70"
#	$status		=	mg_tex_scistri
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_71"
#	$status		=	mg_tex_linegl
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_72"
#	$status		=	mg_tex_load
#	delay;
#	if ($status) {
#		$failed = 1;
#		return(-1);
#	}
#
#	delay;
#	$testnum = "_73"
#	$status		=	mg_tex_persp
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_74"
#	$status		=	mg_tex_mag 
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_75"
#	$status		=	mg_tex_detail
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
#	delay;
#	$testnum = "_76"
#	$status		=	mg_tex_bordertall
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
	delay;
	$testnum = "_77"
	$status		=	mg_tex_lut4d
	delay;
	if ($status) {
		$failed = 1;
		return(-1);
	}
#
#	delay;
#	$testnum = "_78"
#	$status		=	mg_tex_borderwide
#	delay;
#        if ($status) {
#                $failed = 1;
#                return(-1);
#        }
#
	delay;
	$testnum = "_79"
	$status		=	mg_tex_mddma
	delay
	if ($status) {
		$failed = 1;
		return(-1);
	}

	drawclose;

	echo "********	tex_draw_test Suite Execution Completed 	********"
}



# needed
repp_test {
	$failed =0;
	echo "------	Executing RE-PP Test Suite 	------"
	allsetup;
if ($failed) {
		return(-1);
	}
# XX resetcons; buffoff; buffon
# XX delay; delay; delay;
#XXXX	mg_vc3clearcursor;
	delay; delay; delay;
	drawsetup;
	delay;
	$testnum = "_80"
	echo " mg_z_tri in progress ..."
	$status		=	mg_z_tri 
	delay;
       if ($status) {
                $failed = 1;
                return(-1);
        }

	echo " mg_lines in progress ..."
	delay; delay; delay;
	$testnum = "_81"
	$status		=	mg_lines 
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_82"
	echo " mg_points in progress ..."
	$status		=	mg_points 
	delay;
       if ($status) {
                $failed = 1;
                return(-1);
        }

	echo " mg_stip_tri in progress ..."
	delay;
	$testnum = "_83"
	$status		=	mg_stip_tri  
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_84"
	echo " mg_xblock in progress ..."
	$status		=	mg_xblock 
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_85"
	echo " mg_chars in progress ..."
	$status		=	mg_chars 
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_86"
	echo " mg_logicop in progress ..."
	$status		=	mg_logicop 
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_87"
	echo " mg_dither in progress ..."
	$status		=	mg_dither 
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	$testnum = "_88"
	echo " mg_color_tri in progress ..."
	$status		=	mg_color_tri  
	delay;
        if ($status) {
                $failed = 1;
                return(-1);
        }

	delay;
	setenv TEST_NAME_IN_OVEN 	_98
# not in yet
#XXXX	$status = alphablend_test;
	delay;
        if ($failed) {
                return(-1);
        }

 	delay;
 	$testnum = "_97"
# not in yet
#XXXX 	$status = scene_test;
 	delay;
         if ($failed) {
                 return(-1);
         }
 
# 	led 1
 	delay
 	drawclose;

	echo "********	RE/PP Test Suite Execution Completed 	********"
}

rdram_mem_quick {
        $failed =0;
        report = 3;
        echo "------    Executing FRAME BUFFER QUICK Test Suite      ------"

        drawsetup
        if (mg_gfxconsole)
                $testnum = "_89"
        $status         =       mg_dma_pp -r0 -e0 -w0 -d0 -b 0x240 -p0 -x 0 -y 4 -z 12 -m 0 0
        if ($status) {
                $failed = 1;
                return (-1);
        }

}

rdram_mem {
	$failed =0;
	report = 4;
        echo "------    Executing FRAME BUFFER  Test Suite      ------"
#       Z Buffer Test

	drawsetup
	if (mg_gfxconsole)
	$testnum = "_89"
        $status         =       mg_dma_pp  -r0 -e0 -w0 -d0 -b 0x0 -p3 -x 0x0
        if ($status) {
                $failed = 1;
		return (-1);
        }

#       Color Buffer Test
	if (mg_gfxconsole)
	$testnum = "_90"
        $status         =       mg_dma_pp  -r0 -e0 -w0 -d0  -b 0x240 -p3 -x 0x0
        if ($status) {
                $failed = 1;
		return (-1);
        }

#	Overlay Buffer Test
	if (mg_gfxconsole)
	$testnum = "_91"
        $status         =       mg_dma_pp  -r0 -e0 -w0 -d0  -b 0x1c0 -p3 -x 0x0
        if ($status) {
                $failed = 1;
		return (-1);
        }

 	$tmp = mg_setnumre4s -q
 	if ($tmp == 2) {
# 		Display Buffer-CD Test
 		if (mg_gfxconsole)
 	$testnum = "_92"
         	$status = mg_dma_pp  -r0 -e0 -w0 -d0  -b 0x320 -p3 -x 0x0
         	if ($status) {
                 	$failed = 1;
 			return (-1);
         	}
#		ACC36 or AUX 0 Buffer
		if (mg_gfxconsole)
	$testnum = "_93"
        	$status = mg_dma_pp  -r0 -e0 -w0 -d0  -b 0x0e0 -p3 -x 0x0
        	if ($status) {
                	$failed = 1;
			return (-1);
       	}
	}
		

        echo "********  FRAME BUFFER  Test Suite Execution Completed    ********"
	report = 4;
}


# needed
tram_mem {
	$failed =0;
	mg0_clear_color; ide_delay -s 2 ;
	delay;
        echo "------    Executing TRAM Memory Test Suite        ------"
	delay
	mg_tram_rev_nobuff
	delay;
	$testnum = "_94"
        $status         =       mg_dma_tram -m 3 -e 0
        if ($status) {
                $failed = 1;
		return (-1);
        }
	delay
	$foo = mg_setnumre4s -q
	delay
	if ($foo == 2) {
	$testnum = "_95"
        	$status         =       mg_dma_tram -m 3 -e 0 -n 1
        	if ($status) {
                	$failed = 1;
			return (-1);
        	}
	}
}

# needed
re4flextest {
	buffon;
	$failed =0;
	if ($solid) {
        	echo "------    HQ <---> RSS Bus Test ------"
	} else {
        	echo "------    High Density Flex (HQ<->RE) Connectivity Test ------"
	}
	$testnum = "_96"
	$status		=		mg_hq3 4
        if ($status) {
                $failed = 1;
		return (-1);
        }
	resetcons; buffoff;
}


mg_test_all {
	$failed = 0;
	mg_setboard; mg_hqfifoinit;
	report=4;
        repeat 3 {
		delay;
	}
	buffon
	$status = mg_reset;
	if ($status) {
		$failed = 1;
		return (-1);
	}
	$solid = mg_issolid;
#        if (mg_setboard) {
#		delay; mg_hqfifoinit;
#                $status = #XXXXmg_reset;
#		$solid = mg_issolid;
#                delay;
#                delay;
#                resetcons;
# 		if ($status) {
# 			$failed = 1;
# 			return (-1);
# 		}
#        } else {
#                allsetup;
#		if ($failed) {
#			echo "Initializing graphics failed"
#			return (-1)
#		}
#        }

	delay;
	delay;
	$status	=	hq3test;
	if ($failed) {
			echo "hq3test FAILED"
			echo "The GD Board may be BAD"
                	return($status);
	}

	mg_rtfifo_loop;
	if ($failed == 1)
		return (-1);
	report=4;


	$status		=	re4flextest;
	if ($failed) {
			echo "Flex Test FAILED"
			if ($solid == 0) {
				echo "The RA/RB Board may be BAD"
			} 
			resetcons; buffoff;
                	return($status);
	}
	
	
#XXX	resetcons;
#XXX	mg_setboard; delay; mg_hqfifoinit;
	$status = mg_reset;
	if ($status) {
		$failed = 1;
		return (-1);
	}
	delay;
	delay;
	resetcons;

#    report=2
#    $status = mg_dcbdma_tests;
#    if ($failed == 1) {
#        return (-1);
#    }
#   report=4

	$status		=	bkend;
	if ($failed) {
			echo "bkend FAILED" 
			if ($vc3fail) {
			   echo "The GD Board may be BAD"
			   $vc3fail = 0;
			} else {
			   echo "The RA Board may be BAD"
			}
			resetcons; buffoff;
                	return($status);
	}

#XXX	report=2
#XXX	$status = mg_dcbdma_tests;
#XXX	if ($failed == 1) {
#XXX		return (-1);
#XXX	}
#XXX	report=4

#	resetcons; 

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

	report=2
	$ge_no = mg_queryGE;
	if ($ge_no == 2) 					# 2 GE system
	{
 		echo "Testing 2GE system...."
 		$testnum = "_41"
#XXXX 		$status		=	tge_test;
	}
	if ($failed) {
		echo "tge_test FAILED"
		echo "The GD Board may be BAD"
		resetcons; buffoff;
               	return($status);
	}
	
	if ($ge_no == 1) 					# 1 ge system
	{
		echo "Testing 1GE system...."
		$testnum = "_44"
#XXXX		$status = ge0_test;
	}

	if ($failed) {
		echo "ge_test FAILED"
		echo "The GD Board may be BAD"
		resetcons; buffoff;
               	return($status);
	}
	
	repeat 4 delay;

	allsetup;
	if ($failed) {
		resetcons; buffoff;
		return(-1);
	}

        buffon

	report=4
	$status		=	re4test;
	if ($failed) {
			echo "re4test FAILED"
			echo "The RA/RB Board may be BAD"
			resetcons; buffoff;
                	return(-1);
	}
	$status		=	dmatest;
	if ($failed) {
			echo "dmatest FAILED"
			resetcons; buffoff;
                	return($status);
	}

	$status		=	rdram_mem_quick;
	if ($failed) {
		echo "RDRAM QUICK FAILED"
		resetcons; buffoff;
		return($status);
	}

	if ($quick == 0) {
		$status 	=	rdram_mem;
		if ($failed) {
			echo "RDRAM FAILED"
			echo "The RA/RB Board may be BAD"
			resetcons; buffoff;
                	return($status);
		}
	}

	delay; delay; delay; delay; delay;
	delay; delay; delay; delay; delay;

	$status		=	repp_test;
	if ($failed) {
			echo "repp_test FAILED"
			resetcons; buffoff;
                	return($status);
	}

	delay; delay; delay; delay; delay;
	delay; delay; delay; delay; delay;


#	allsetup;
#	if ($failed) {
#		resetcons; buffoff;
#		return(-1);
#	}
#	delay;
#        delay;
#	$status = mg_reset;
#	if ($status) {
#		$failed = 1;
#		return (-1);
#	}
#        delay;
	resetcons; buffoff;
	buffon;

# perform TRAM memory and TEXTURE draw tests for Max/High Only
#   if (($solid == 1) && ($tram == 0)) {
#XXXX	$status = mg_setnumtrams ;

#XXXX	if ($status == 0) {
#XXXX		echo "No Texture Subsystem for MG10"
#XXXX		echo "Tests for Texture Subsystem are skipped..."
#XXXX	} else {
#XXXX		if ($quick == 0) {
#XXXX			echo "Testing TRAM memory"
#XXXX        		repeat 3 {
#XXXX				delay;
#XXXX			}
#XXXX			$status		=	tram_mem;
#XXXX			if ($failed) {
#XXXX				echo "tram test FAILED"
#XXXX				echo "The RA/RB Board may be BAD"
#XXXX				resetcons; buffoff;
#XXXX                		return(-1);
#XXXX			}
#XXXX		}

#XXXX	$status = mg_rtdma2tram ;
#XXXX	if ($failed == 1) {
#XXXX		return (-1);
#XXXX	}

#XXXX		$testnum = "_96"
#XXXX		$status		=	tex_draw_test
#XXXX		if ($failed) {
#XXXX			echo "tex_draw_test FAILED"
#XXXX			echo "The RA/RB Board may be BAD"
#XXXX			resetcons; buffoff;
#XXXX                	return(-1);
#XXXX		}
#XXXX	}

	echo ""
	echo " All tests have passed"
	delay;
	delay;
#	$status = mg_reset;
#	if ($status) {
#		$failed = 1;
#		return (-1);
#	}
	resetcons; buffoff;
	report=4
}

# short/fast gfx for short_tests: put together from scratch
short_gfx {
	$failed = 0;
#	report=4;
        repeat 3 {
		delay;
	}
	buffon
	mg_reset;
	$solid = mg_issolid;

	delay;
	delay;
	# really testing HQ4
	$status	=	hq3test;
	if ($failed) {
			echo "hq3test (testing HQ4) FAILED"
			echo "The GD Board may be BAD"
                	return($status);
	}

	$status		=	re4flextest;
	if ($failed) {
			echo "Flex Test FAILED"
			if ($solid == 0) {
				echo "The RA/RB Board may be BAD"
			} 
			resetcons; buffoff;
                	return($status);
	}
	
	
	$status = mg_reset;
	if ($status) {
		$failed = 1;
		return (-1);
	}
	delay;
	delay;
	resetcons;

	$status		=	bkend;
	if ($failed) {
			echo "bkend FAILED" 
			if ($vc3fail) {
			   echo "The GD Board may be BAD"
			   $vc3fail = 0;
			} else {
			   echo "The RA Board may be BAD"
			}
			resetcons; buffoff;
                	return($status);
	}

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

	$status		=	re4test;
	if ($failed) {
			echo "re4test FAILED"
			echo "The RA/RB Board may be BAD"
			resetcons; buffoff;
                	return(-1);
	}
	$status		=	dmatest;
	if ($failed) {
			echo "dmatest FAILED"
			resetcons; buffoff;
                	return($status);
	}

	delay; delay; delay; delay; delay;

	$status		=	repp_test;
	if ($failed) {
			echo "repp_test FAILED"
			echo "The RA/RB Board may be BAD"
			resetcons; buffoff;
                	return($status);
	}

	delay; delay; delay; delay; delay;
	delay; delay; delay; delay; delay;

	resetcons; buffoff;
	buffon;

	echo ""
	echo " All tests have PASSED"
	delay;
	delay;

#	report = 0;
}
# end of short_gfx

mg_test_all_tram {
	$tram = 1;
#XXXX	mg_setnumtrams -c 4;
	mg_test_all
	$tram = 0;
}

# separate from mg_test_all: may need to be included XXX
mg_test_tram {
	allsetup;
	tram_mem;
	if ($failed) {
		echo "tram test FAILED"
		resetcons; buffoff;
		return(-1);
	}
	$status = tex_draw_test;
	if ($failed) {
		echo "tex_draw test FAILED"
		resetcons; buffoff;
		return(-1);
	}
}

# from IP28/field
gm_gfx {
	$impact_failed = 2;
	$failed = 0;
	echo "Testing graphics"
	mg_test_all;
       	if ($failed) {
		echo "ERROR: Failure detected on board"
		$impact_failed = 1;	
	}
	else
	{
		$impact_failed = 0;	
	}
	$solid = mg_issolid;
        if ($solid == 0) {
		echo "Testing TMEZZ card"
		mg_test_tram;
		if ($failed) echo "ERROR: Failure detected on TMEZZ board"
		else echo "TMEZZ board test PASSED"	
	}
}
# gfx includes gm10/20 and tmezz if applicable
gfx {
	$mardi_gras = mg_probe;
	if ($mardi_gras) {
		gm_gfx;
	}
}
tmezz {
	$solid = mg_issolid;
	if ($solid == 0) {
		mg_test_tram;
	}
}

#
# end of gfx
#

init_vars {
	# gfx
	$impact_failed = 2;
	$quick = 1;  # can be switched to 0 for more extensive and longer tests
	$repprdram_sync = 1;
	$tram = 0;
	$vc3fail = 0;
	$testnum = "";
	$solid = 0;
	$failed = 0;
}

# 
# all tests, dont use name "all" because it confuses help command
#
short_tests {
	init_vars;

# processor module
	pm;

# main logic board:
	ip30;

# some memory
# Kh test
	$tmp = memtest 1;
	if ($tmp) {
	        wait;
	}

# frontplane (also called backplane sometimes)
#  the frontplane is not included yet as the sable model for xbow is incomplete
	frontplane;
}

long_tests {
# short tests, including gfx
	short_tests;

# lots of memory
	memory;
}

