# 'uas' configuration file for QSIC SD uengine
#
# The contents consist of a number of lines containing tokens; the order
# of the lines, and the tokens that each contains, are fixed.
#
# Tokens are separated by white space (either space or tab - extra white
# space is ignored); blank lines are ignored, and comment lines _start_ with
# a '#', ';', or '/'.
#
# Numeric items are either octal (leading "0"), decimal or hexadecimal
# (with a leading "0x"; uppercase A-F only).

# The first line _must_ contain the uword width, and uROM size

24 256

# The second line _must_ contain the format strings used for printing addresses,
# uinsts, and literals

0%03o 0x%06x 0x%02x

# Next comes a block of lines containing the field definitions: it starts with
# a line containing the number of field definitions, then the definitions,
# one field per line, and finally a line with only a '.' to mark the end of
# the table. (The number, and terminator, are there as cross-checks.)
#
# Each field definition line contains: the field name (a string), the
# default value for that field (a string; 'none' if none), the location of
# the start bit for the field, the number of bits in the field, and two
# control tokens (strings, here, using names defined in uas.c) which are
# used in dis-assembling uinsts when producing a ucode listing.
#
# The first control token says what form the field takes (a bit string,
# an ordinal, or a literal); the second control token says how the
# literal field is used (if it is used with this field). 'none' is an
# acceptable value for the second control token, but not the first.
# The literal use token also indicates whether all values for this field
# use the literal, or only some; a leading 'v' in the token indicates
# the latter.
#
# The start bits for each field are given, as well as the field width, as
# a cross-check - it does make a little work if a field is inserted in the
# middle of the uword, but it was felt that this price was worth paying
# for the benefit of being able to do a consistency check.

10

ureset	none	23	1	bit	none
ucrc7	none	22	1	bit	none
ucrc16	none	21	1	bit	none
uset	none	20	1	bit	bits
uclr	none	19	1	bit	bits
usete	none	18	1	bit	imm
jcond	next	14	4	ord	lbl
rxdest	rnone	12	2	ord	vimm
txsrc	tnone	8	4	ord	vimm
literal	none	0	8	lit	none

.

# Finally, a block of lines containing the field value definitions: like
# the previous section, it starts with a line containing the number of
# value definitions, then the definitions themselves, one per line, and
# finally a line with only a '.' to mark the end of the table.
#
# Each value definition line contains: the value name (a string), the
# field that value belongs to (another string), the numeric value of
# that value (relative to the field - 'uas' will convert it to the
# correct value to go in the uword), and one control token (a string,
# here) used in dis-assembling uinsts.
#
# That token says if the literal field is used for this value (if it is
# used with some, but not all, values of that field). 'yes' and 'no' are
# the acceptable values for this token.

41

reset	ureset	1	no
crc7	ucrc7	1	no
crc16	ucrc16	1	no
set	uset	1	no
clr	uclr	1	no
sete	usete	1	no

next	jcond	0	no
jmp	jcond	1	no
nocard	jcond	2	no
timer	jcond	3	no
eq	jcond	4	no
neq	jcond	5	no
byte	jcond	6	no
read	jcond	7	no
write	jcond	8	no
vers1	jcond	9	no
block	jcond	10	no
crcerr	jcond	11	no
wrerr	jcond	12	no

rnone	rxdest	0	no
cmp	rxdest	1	yes
rlow	rxdest	2	no
rhigh	rxdest	3	no

tnone	txsrc	0	no
imm	txsrc	1	yes
tlow	txsrc	2	no
thigh	txsrc	3	no
tcrc7	txsrc	4	no
tcrc16l	txsrc	5	no
tcrc16h	txsrc	6	no
addr0	txsrc	7	no
addr1	txsrc	8	no
addr2	txsrc	9	no
addr3	txsrc	10	no

hispd	literal	0200	no
hicap	literal	0100	no
vers2	literal	040	no
time	literal	020	no
rdy	literal	010	no
csel	literal	04	no
nop	literal	0	no

.