#ident	"arcs/ide/builtins:  $Revision: 1.26 $"
#
#
# builtins - ide builtin functions
#
# First column is the symbol, ide command, or diagnostic name
#
# Second column is the entry's type:
#
#   + native ide supports two types of symbols:
#     INT:	integer constant
#     STR:	string
#
#   + and two types of commands, determined by the arglist format of the
#     invoked command:
#     SCMD:		ide commands whose args are 'sym_t *' argv format.
#     CMD:		ide commands whose args are 'char *' argv format
#
#   + ide supports physically-numbered processor 'sets' as part of its
#     MP enhancements; all of the set routines use 'char * argv' arglists,
#     and therefore are typed with the "_CMD" suffix.
#     SET_CMD:		ide 'set' commands (all use 'char *' argv format)
#
#   + the diagnostic routines may also choose arglists of either variety,
#     although the special execution facilities are available only to 
#     those using 'char *' format.
#     DIAG_CMD:		diagnostics with 'char *' argv format arguments.
#     DIAG_SCMD:	diagnostics with 'sym_t * argv format arguments
#
#   + Finally, routines provided to debug ide (and therefore are of little
#     interest to diagnostic writers or script-level users)
#     DEBUG_CMD:	internal commands for debugging ide (char * argv args)
#     DEBUG_SCMD:	internal commands for debugging ide (sym_t * argv args)
#
#
# Third column is the value of the symbol:
#   type INT:		value is the integer
#   type STR:		value is the quoted string
#   types SCMD, CMD, SET_CMD, DIAG_CMD, DIAG_SCMD, DEBUG_CMD, DEBUG_SCMD:
#			value is function name
#
# Fourth column (optional) is displayed by ide 'help' and 'usage' primitives.
# 
# Columns must be separated by exactly one TAB!
#
# string symbols used by IDE interpreter
PS1	STR	"## IDE(v*)-> "
PS2	STR	"more>> "
#
#
# integer symbols used by interpreter
#
#  Reportlevels: 0==NO_REPORT, 1==SUM, 2==ERR, 3==INFO, 4==VRB, 5==DBG
report	INT	0x2L	Indicates the message-verbosity level during bootup
slave_timeout	INT	3600L	Default timeout for slaves in seconds
#
#  The following binary symbols determine the default VALUES for 
#  the IDE execution environment.  Their names must not be changed
#  without also updating IDE .c files.  ENABLED == 1, DISABLED == 0.
error_logging	INT	1L	IDE logs errors detected by diagnostics
icached_exec	INT	0	Diags DON'T execute with instructions cached
quick_mode	INT	1L	Diags execute abbreviated tests
continue_on_err	INT	0	Diagnostic tests abort upon error
#
#  errlog, runcached, qmode, and c_on_error are the ide COMMANDS to query
#  or change the current setting of the errorlogging, icached execution, 
#  quickmode, and continue_on_err execution-environment variables.
errlog	CMD	do_errlog	errlog [ \"on\"|\"off\" ]	noproto
runcached	CMD	do_runcached	runcached [ \"on\"|\"off\" ]	noproto
qmode	CMD	do_qmode	qmode [ \"on\"|\"off\" ]	noproto
c_on_error	CMD	c_on_error	c_on_error [ \"on\"|\"off\" ]	noproto
xenv	CMD	do_em_all	xenv	noproto
#
clear_log	CMD	_doclearlog	clear all pass/fail info in IDE's diagnostic result log
dump_log	CMD	_dodumplog	display IDE's diagnostic result log
#
printregs	CMD	_do_printregs	printregs
#
# ide builtin routines
boot	CMD	boot	boot [-f FILE] [-n] [ARGS]
# dump command implemented ide_cmds.c
dump	CMD	_do_dump	dump [-(b|h|w)] [-(o|d|u|x|c|B)] ADDR1:ADDR2|ADDR#COUNT
echo	SCMD	_doprint	echo [\"STRING\"|VAL ...]
exit	SCMD	_doexit	exit [VAL]
fill	CMD	_do_fill	fill [-(b|h|w)] [-v VAL] ADDR1:ADDR2|ADDR#COUNT
g	CMD	get	g [-(b|h|w)] ADDRESS
help	CMD	_dohelp	type help for help usage
hinv	CMD	hinv	inventory	hinv [-v]
ls	CMD	ls	filelist	ls
p	CMD	put	put		p [-(b|h|w)] ADDRESS VALUE
printenv	CMD	printenv_cmd	printenv [ENV_VAR_LIST]
printf	SCMD	_doprintf	printf \"FORMAT\" [ARG1 ARG2...]
quit	SCMD	_doexit
# read	SCMD	_doread	read [VAR ...]
read	SCMD	_doread
setenv	CMD	setenv_cmd	setenv ENV_VAR STRING
source	CMD	_dosource	source SOURCE_PATH
spin	CMD	spin	spin [[-c COUNT] [-v VAL] [-(r|w)[+](b|h|w) ADDR]]*
unsetenv	CMD	unsetenv_cmd	unsetenv ENV_VAR
version	CMD	version	version	noproto
wait	CMD	wait	Wait for <CR> to continue (usage: wait [\"message\"])
symbols	CMD	_dosymbols	symbols [ -l | -k KEY | -t {cmds|udefs|diags|vars|globals|ints|strs|sets|setops|debug|all} ]
#
# delay script-execution for specified usecs, msecs, or seconds
ide_delay	CMD	_dodelay	ide_delay { -u USECS|-m MSECS|-s SECS }	noproto
#
#
#
# IDE supports cpu SETS for sequential execution of diagnostic routines
# across multiple cpus
#
# create_set, display_set, add_cpu, and del_cpu provide basic 
# set-manipulation support.
create_set	SET_CMD	create_set	create_set -s SET[,SET,...] [-(a|e|c COPYSET)]
copy_set	SET_CMD	copy_set	copy_set -s SRCSET,DESTSET1[,DESTSET2...]
display_set	SET_CMD	display_set	display_set -s SET[,SET,...]
add_cpu	SET_CMD	_add_cpu	add_cpu -s SET[,SET,...] -v VID1[,VID2,...]
del_cpu	SET_CMD	_del_cpu	del_cpu -s SET[,SET,...] -v VID1[,VID2,...]
#
#
# IDE provides 9 traditional set operations:
#
# union, difference, intersection: require three sets, first two are the
# source sets, the third is the destination for the operation's result.
set_union	SET_CMD	set_union	set_union -s SET,SET,RESULTSET
set_differ	SET_CMD	set_differ	set_differ -s SET,SET,RESULTSET
set_inter	SET_CMD	set_inter	set_inter -s SET,SET,RESULTSET

# set_equal, set_inequal, set_inclusion, cpu_in, set_empty, and set_exists
# return 1 (TRUE) or 0 (FALSE) if no syntax errors were detected
set_equal	SET_CMD	set_equality	set_equal -s SET,SET
set_inequal	SET_CMD	set_inequality	set_inequal -s SET,SET
# set_inclusion: is SUBSET a proper subset of SUPERSET
set_inclusion	SET_CMD	set_inclusion	set_inclusion -s SUBSET,SUPERSET
# cpu_in: is (virtually numbered) cpu VID a member of SET
cpu_in	SET_CMD	cpu_in	cpu_in -s SET -v VID
set_empty	SET_CMD	set_empty	set_empty -s SET
set_exists	SET_CMD	set_exists	set_exists -s SET
#
#
exec	CMD	do_exec	exec -f FN1[,FN2..] { [-v VID1[,VID2..]]|[-s SET1[,SET2..]] } [-a ARG0[,ARG1..]]
# 
# routines for debugging ide
test_symcmd	DEBUG_SCMD	test_symcmd	test_symcmd [ARG1,...] [...]
test_charcmd	DEBUG_CMD	test_charcmd	test_charcmd [ARG1,...] [...]
stat	DEBUG_SCMD	showmstats	showmstats	noproto
#
pro_set	DEBUG_SCMD	_dopro_set	pro_set SETSTRING
pro_setstr	DEBUG_SCMD	_dopro_setstr	pro_setstr SETNAME
# sync (temp hack): synchronizes global symbols with their runtime counterparts
gsync	DEBUG_CMD	_sync	sync
enable_fp	DEBUG_CMD	_enable_fp	enable_fp
msg_test	DEBUG_CMD	_do_msgtest	msgtest
fp_dump	DEBUG_CMD	_do_fp_dump	fp_dump
dump_pda	DEBUG_CMD	_do_dump_pda	dump_pda [VID]
dump_sym	DEBUG_CMD	_do_dumpsym	dumpsym SYMBOLNAME
dump_hashtab	DEBUG_CMD	_do_dumphtab
do_panic	DEBUG_CMD	_do_panic
reset	DEBUG_CMD	cpu_hardreset	noproto
