"TASM TMS32010 Assembler."
/* This is the instruction set definition table 
/*   for the TMS32010 version of TASM.
/*      Thomas N. Anderson, Speech Technology Incorporated
/*
/*  See TASM manual for info on table structure.
/* 
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT MASK */
/*-------------------------------------------*/

/* Generate opcodes high byte first */
.MSFIRST
/* Don't use '*' as the wild card since it is used for indirect addressing */
/* In this table '@' is the wild card indicating where expression may appear*/
.ALTWILD
/* Use word addressing (not byte addressing)
.WORDADDRS
/* All shift/and stuff applies to opcodes, not args
.NOARGSHIFT

.REGSET *+      A0 1
.REGSET *-      90 1
.REGSET *       80 1

ABS  ""      7F88 2 NOP 1

ADD  !,@,@   0000 2 T1   1 8 0F00
ADD  !,@     0008 2 T1   1 8 0F00
ADD  !       0008 2 NOP  1
ADD  @,@     0000 2 TDMA 1 8 0F00
ADD  @       0000 2 T1   1 0 007F

ADDH !,@     6000 2 T1   1 0 01
ADDH !       6008 2 NOP  1
ADDH @       6000 2 T1   1 0 007F

ADDS !,@     6100 2 T1   1 0 01
ADDS !       6108 2 NOP  1
ADDS @       6100 2 T1   1 0 007F

AND  !,@     7900 2 T1   1 0 01
AND  !       7908 2 NOP  1
AND  @       7900 2 T1   1 0 7F

APAC ""      7F8F 2 NOP  1
B    @       F900 4 SWAP 1
BANZ @       F400 4 SWAP 1
BGEZ @       FD00 4 SWAP 1
BGZ  @       FC00 4 SWAP 1
BIOZ @       F600 4 SWAP 1
BLEZ @       FB00 4 SWAP 1
BLZ  @       FA00 4 SWAP 1
BNZ  @       FE00 4 SWAP 1
BV   @       F500 4 SWAP 1
BZ   @       FF00 4 SWAP 1
CALA ""      7F8C 2 NOP  1
CALL @       F800 4 SWAP 1
DINT ""      7F81 2 NOP  1

DMOV !,@     6900 2 T1   1 0 01
DMOV !       6908 2 NOP  1
DMOV @       6900 2 T1   1 0 007F

EINT ""      7F82 2 NOP  1

IN   !,@,@   4000 2 T1   1 8 0700
IN   !,@     4008 2 T1   1 8 0700
IN   @,@     4000 2 TDMA 1 8 0700

LAC  !,@,@   2000 2 T1   1 8 0F00
LAC  !,@     2008 2 T1   1 8 0F00
LAC  !       2008 2 NOP  1
LAC  @,@     2000 2 TDMA 1 8 0F00
LAC  @       2000 2 T1   1 0 007F

LACK @       7E00 2 T1   1 0 00FF

LAR  @,!,@   3800 2 TAR  1 0 0001
LAR  @,!     3808 2 TAR  1 0 0001
LAR  @,@     3800 2 TAR  1 0 007F

LARK @,@     7000 2 TAR  1 0 00FF
LARP @       6880 2 T1   1 0 0001

LDP  !,@     6F00 2 T1   1 0 01
LDP  !       6F08 2 NOP  1
LDP  @       6F00 2 T1   1 0 007F

LDPK @       6E00 2 T1   1 0 01

LST  !,@     7B00 2 T1   1 0 01
LST  !       7B08 2 NOP  1
LST  @       7B00 2 T1   1 0 007F

LT   !,@     6A00 2 T1   1 0 01
LT   !       6A08 2 NOP  1
LT   @       6A00 2 T1   1 0 007F

LTA  !,@     6C00 2 T1   1 0 01
LTA  !       6C08 2 NOP  1
LTA  @       6C00 2 T1   1 0 007F

LTD  !,@     6B00 2 T1   1 0 01
LTD  !       6B08 2 NOP  1
LTD  @       6B00 2 T1   1 0 007F

MAR  !,@     6800 2 T1   1 0 01
MAR  !       6808 2 NOP  1
MAR  @       6800 2 T1   1 0 007F

MPY  !,@     6D00 2 T1   1 0 01
MPY  !       6D08 2 NOP  1
MPY  @       6D00 2 T1   1 0 007F

MPYK @       8000 2 T1   1 0 1FFF

NOP  ""      7F80 2 NOP  1

OR   !,@     7A00 2 T1   1 0 01
OR   !       7A08 2 NOP  1
OR   @       7A00 2 T1   1 0 007F

OUT  !,@,@   4800 2 T1   1 8 0700
OUT  !,@     4808 2 T1   1 8 0700
OUT  @,@     4800 2 TDMA 1 8 0700

PAC  ""      7F8E 2 NOP  1
POP  ""      7F9D 2 NOP  1
PUSH ""      7F9C 2 NOP  1
RET  ""      7F8D 2 NOP  1
ROVM ""      7F8A 2 NOP  1

/* shift count for SACH can only be 0,1, or 4.  The mask allows  */
/*  0,1,4, or 5.  Let the user beware */
SACH !,@,@   5800 2 T1   1 8 0500
SACH !,@     5808 2 T1   1 8 0500
SACH !       5808 2 NOP  1
SACH @,@     5800 2 TDMA 1 8 0500
SACH @       5800 2 T1   1 0 007F

/* The data book shows a shift field for SACL but states it must be 0.
/* The previous version of this table left the shift field out 
/* for simplicity, but here I have put it back for compatibility.
/* The AND mask is set to zero in this case so a error message 
/* will result from non-zero shifts.
SACL !,@,@   5000 2 T1   1 8 0000
SACL !,@     5008 2 T1   1 8 0000
SACL !       5008 2 NOP  1
SACL @,@     5000 2 TDMA 1 8 0000
SACL @       5000 2 T1   1 0 007F

SAR  @,!,@   3000 2 TAR  1 0 0001
SAR  @,!     3008 2 TAR  1 0 0001
SAR  @,@     3000 2 TAR  1 0 007F

SOVM ""      7F8B 2 NOP  1
SPAC ""      7F90 2 NOP  1

SST  !,@     7C00 2 T1   1 0 0001
SST  !       7C08 2 NOP  1
SST  @       7C00 2 T1   1 0 007F

SUB  !,@,@   1000 2 T1   1 8 0F00
SUB  !,@     1008 2 T1   1 8 0F00
SUB  !       1008 2 NOP  1
SUB  @,@     1000 2 TDMA 1 8 0F00
SUB  @       1000 2 T1   1 0 007F

SUBC !,@     6400 2 T1   1 0 01
SUBC !       6408 2 NOP  1
SUBC @       6400 2 T1   1 0 007F

SUBH !,@     6200 2 T1   1 0 01
SUBH !       6208 2 NOP  1
SUBH @       6200 2 T1   1 0 007F

SUBS !,@     6300 2 T1   1 0 01
SUBS !       6308 2 NOP  1
SUBS @       6300 2 T1   1 0 007F

TBLR !,@     6700 2 T1   1 0 01
TBLR !       6708 2 NOP  1
TBLR @       6700 2 T1   1 0 007F

TBLW !,@     7D00 2 T1   1 0 01
TBLW !       7D08 2 NOP  1
TBLW @       7D00 2 T1   1 0 007F

XOR  !,@     7800 2 T1   1 0 01
XOR  !       7808 2 NOP  1
XOR  @       7800 2 T1   1 0 007F

ZAC  ""      7F89 2 NOP  1

ZALH !,@     6500 2 T1   1 0 01
ZALH !       6508 2 NOP  1
ZALH @       6500 2 T1   1 0 007F

ZALS !,@     6600 2 T1   1 0 01
ZALS !       6608 2 NOP  1
ZALS @       6600 2 T1   1 0 007F

