summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/cpu/tms57002/tmsinstr.lst
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/cpu/tms57002/tmsinstr.lst')
-rw-r--r--trunk/src/emu/cpu/tms57002/tmsinstr.lst535
1 files changed, 535 insertions, 0 deletions
diff --git a/trunk/src/emu/cpu/tms57002/tmsinstr.lst b/trunk/src/emu/cpu/tms57002/tmsinstr.lst
new file mode 100644
index 00000000000..6c1583f1e4e
--- /dev/null
+++ b/trunk/src/emu/cpu/tms57002/tmsinstr.lst
@@ -0,0 +1,535 @@
+abs 1 01 1 n
+ abs
+ s->aacc = %a;
+ if(((INT32)s->aacc) < 0) {
+ s->aacc = - s->aacc;
+ if(((INT32)s->aacc) < 0)
+ s->st1 |= ST1_AOV;
+ }
+
+add 1 03 1 y
+ add %d,a
+ %wa((INT64)(INT32)%d + (INT64)(INT32)%a);
+
+add 1 04 1 y
+ add %c,a
+ %wa((INT64)(INT32)%c + (INT64)(INT32)%a);
+
+add 1 05 1 y
+ add %d,m
+ %sfai(d, %d);
+ %wa((INT64)(INT32)d + (%mo >> 16));
+
+add 1 06 1 y
+ add %c,m
+ %wa((INT64)(INT32)%c + (%mo >> 16));
+
+add 1 07 1 y
+ add %d,%c
+ %wa((INT64)(INT32)%d + (INT64)(INT32)%c);
+
+adds 1 08 1 y
+ adds %d
+
+amac 1 2d 2 y
+ amac %d,%c,a
+
+ampy 1 2c 2 y
+ ampy %d,%c,a
+
+and 1 14 1 n
+ and %d,a
+ %sfai(d, %d);
+ s->aacc &= d;
+
+and 1 15 1 n
+ and %c,a
+ s->aacc &= %c;
+
+and 1 16 1 n
+ and %d,%c
+ %sfai(d, %d);
+ s->aacc = %c & d;
+
+b 3 48 3 n b
+ b %i
+ %b(%i);
+
+bgz 3 50 3 n cb
+ bgz %i
+ if(((INT32)s->aacc) > 0) {
+ %b(%i);
+ }
+
+bioz 3 70 3 n cb
+ bioz %i
+
+blz 3 58 3 n cb
+ blz %i
+ if(((INT32)s->aacc) < 0) {
+ %b(%i);
+ }
+
+bnz 3 60 3 n cb
+ bnz %i
+ if(s->aacc) {
+ %b(%i);
+ }
+
+bv 3 78 3 n cb
+ bv %i
+ if(s->st1 & ST1_AOV) {
+ s->st1 &= ~ST1_AOV;
+ %b(%i);
+ }
+
+cmpl 1 13 1 n
+ cmpl
+
+dimh 2a 14 1 n
+ dimh si0_l
+
+dimh 2a 15 1 n
+ dimh si0_r
+
+dimh 2a 16 1 n
+ dimh si1_l
+
+dimh 2a 17 1 n
+ dimh si1_r
+
+diml 2a 18 1 n
+ diml si0_l
+
+diml 2a 19 1 n
+ diml si0_r
+
+diml 2a 1a 1 n
+ diml si1_l
+
+diml 2a 1b 1 n
+ diml si1_r
+
+dis 2a 10 1 n
+ dis si0_l,%d
+ %wd(s->si[0]);
+
+dis 2a 11 1 n
+ dis si0_r,%d
+ %wd(s->si[1]);
+
+dis 2a 12 1 n
+ dis si1_l,%d
+ %wd(s->si[2]);
+
+dis 2a 13 1 n
+ dis si1_r,%d
+ %wd(s->si[3]);
+
+domh 2a 20 1 n
+ domh so0_l
+ s->so[0] = (%mo >> 24) & 0xffffff;
+
+domh 2a 21 1 n
+ domh so0_r
+ s->so[1] = (%mo >> 24) & 0xffffff;
+
+domh 2a 22 1 n
+ domh so1_l
+ s->so[2] = (%mo >> 24) & 0xffffff;
+
+domh 2a 23 1 n
+ domh so1_r
+ s->so[3] = (%mo >> 24) & 0xffffff;
+
+doml 2a 24 1 n
+ doml so0_l
+
+doml 2a 25 1 n
+ doml so0_r
+
+doml 2a 26 1 n
+ doml so1_l
+
+doml 2a 27 1 n
+ doml so1_r
+
+dos 2b 1c 1 n
+ dos so0_l,%d
+
+dos 2b 1d 1 n
+ dos so0_r,%d
+
+dos 2b 1e 1 n
+ dos so1_l,%d
+
+dos 2b 1f 1 n
+ dos so1_r,%d
+
+idle 3 08 1 n i
+ idle
+ s->sti |= S_IDLE;
+
+incd 2a 42 1 y
+ incd
+
+lacc 1 12 1 n
+ lacc %c
+ s->aacc = %c;
+
+lacd 1 11 1 n
+ lacd %d
+ %sfai(d, %d);
+ s->aacc = d;
+
+lbrk 3 28 1 n
+ lbrk %i
+
+lcaa 2a 08 1 y
+ lcaa
+ s->ca = %a >> 24;
+
+lcac 3 40 1 n
+ lcac %i
+ if(((INT32)s->aacc) >= 0)
+ s->ca = %i;
+
+lcak 3 18 1 n
+ lcak %i
+ s->ca = %i;
+
+ldpk 2a 44 1 n f
+ ldpk 0
+ s->st1 &= ~ST1_DBP;
+
+ldpk 2a 45 1 n f
+ ldpk 1
+ s->st1 |= ST1_DBP;
+
+ld0t 2b 0c 1 y
+ ld0t %d
+
+lira 2a 09 1 y
+ lira
+ s->id = %a >> 24;
+
+lirk 3 20 1 n
+ lirk %i
+ s->id = %i;
+
+lmhc 1 33 1 n
+ lmhc %c
+ s->macc = ((INT64)(INT32)%c) << 16;
+
+lmhd 1 31 1 n
+ lmhd %d
+ s->macc = ((INT64)(INT32)%d) << 16;
+
+lmld 1 32 1 n
+ lmld %d
+ s->macc = (s->macc & ~0xffffffULL) | %d24;
+
+lpc 2b 31 1 n
+ lpc %c
+ if(s->sti & S_HOST)
+ break;
+ c = %c;
+ s->host[0] = c >> 24;
+ s->host[1] = c >> 16;
+ s->host[2] = c >> 8;
+ s->host[3] = c;
+ s->hidx = 0;
+ s->sti |= S_HOST;
+
+lpd 2b 30 1 n
+ lpd %d
+
+mac 1 24 1 y
+ mac %d,%c
+ d = %d24;
+ if(d & 0x00800000)
+ d |= 0xff000000;
+ s->creg = c = %c;
+ r = (INT64)(INT32)c * (INT64)(INT32)d;
+ s->macc = %ml + (r >> 7);
+
+mac 1 25 1 y
+ mac a,%d
+
+mac 1 26 1 y
+ mac %c,a
+ s->creg = c = %c;
+ r = (INT64)(INT32)c * (INT64)(INT32)%a;
+ s->macc = %ml + (r >> 15);
+
+macs 1 2e 1 y
+ macs %c,a
+ s->creg = c = %c;
+ r = (INT64)(INT32)c * (INT64)(INT32)%a;
+ s->macc = %ml + (r >> 14);
+
+macu 1 29 1 y
+ macu %d,%c
+ d = %d24; // d is 24bits unsigned
+ s->creg = c = %c;
+ r = (INT64)(INT32)c * (INT64)d;
+ s->macc = %ml + (r >> 7);
+
+macu 1 2a 1 y
+ macu a,%d
+ d = %d24; // d is 24bits unsigned
+ s->creg = c = %a;
+ r = (INT64)(INT32)c * (INT64)d;
+ s->macc = %ml + (r >> 7);
+
+mpy 1 21 1 y
+ mpy %d,%c
+ d = %d24;
+ if(d & 0x00800000)
+ d |= 0xff000000;
+ s->creg = c = %c;
+ r = (INT64)(INT32)c * (INT64)(INT32)d;
+ s->macc = r >> 7;
+
+mpy 1 22 1 y
+ mpy %c,a
+ s->creg = c = %c;
+ r = (INT64)(INT32)c * (INT64)(INT32)%a;
+ s->macc = r >> 15;
+
+mpy 1 23 1 y
+ mpy creg,%d
+
+mpyu 1 28 1 y
+ mpyu %d,%c
+ s->creg = c = %c;
+ d = %d24; // d is 24bits unsigned
+ r = (INT64)(INT32)c * (INT64)d;
+ s->macc = r >> 7;
+
+neg 1 02 1 n
+ neg
+
+or 1 17 1 n
+ or %d,a
+ %sfai(d, %d);
+ s->aacc |= d;
+
+or 1 18 1 n
+ or %c,a
+ s->aacc |= %c;
+
+or 1 19 1 n
+ or %d,%c
+ %sfai(d, %d);
+ s->aacc = %c | d;
+
+raov 2a 38 1 n
+ raov
+
+rde 1 39 1 n
+ rde %c
+ if(s->sti & (S_READ|S_WRITE))
+ break;
+ s->xoa = %c;
+ tms57002_xm_init(s);
+ s->sti |= S_READ;
+
+ref 2a 0e 1 n
+ ref
+ /* nothing to do */
+
+rmom 2a 40 1 n f
+ rmom
+ s->st1 &= ~ST1_MOVM;
+
+rmov 2a 3a 1 n
+ rmov
+ s->st1 &= ~ST1_MOV;
+
+rnd 2a 68 1 n f
+ rnd 48
+ s->st1 = (s->st1 & ~ST1_RND) | (0 << ST1_RND_SHIFT);
+
+rnd 2a 69 1 n f
+ rnd 32
+ s->st1 = (s->st1 & ~ST1_RND) | (1 << ST1_RND_SHIFT);
+
+rnd 2a 6a 1 n f
+ rnd 24
+ s->st1 = (s->st1 & ~ST1_RND) | (2 << ST1_RND_SHIFT);
+
+rnd 2a 6b 1 n f
+ rnd 20
+ s->st1 = (s->st1 & ~ST1_RND) | (3 << ST1_RND_SHIFT);
+
+rnd 2a 6c 1 n f
+ rnd 16
+ s->st1 = (s->st1 & ~ST1_RND) | (4 << ST1_RND_SHIFT);
+
+rnd 2a 6d 1 n f
+ rnd <5>
+ s->st1 = (s->st1 & ~ST1_RND) | (5 << ST1_RND_SHIFT);
+
+rnd 2a 6e 1 n f
+ rnd <6>
+ s->st1 = (s->st1 & ~ST1_RND) | (6 << ST1_RND_SHIFT);
+
+rnd 2a 6f 1 n f
+ rnd <7>
+ s->st1 = (s->st1 & ~ST1_RND) | (7 << ST1_RND_SHIFT);
+
+rptk 3 10 1 n
+ rptk %i
+ s->rptc_next = %i;
+
+sacc 2a 01 1 y
+ sacc %c
+ %wc(%a);
+
+sacd 2a 02 1 y
+ sacd %d
+ %wd(%a >> 8);
+
+scrm 2a 48 1 n f
+ scrm 32
+ s->st1 = (s->st1 & ~ST1_CRM) | (0 << ST1_CRM_SHIFT);
+
+scrm 2a 49 1 n f
+ scrm 16h
+ s->st1 = (s->st1 & ~ST1_CRM) | (1 << ST1_CRM_SHIFT);
+
+scrm 2a 4a 1 n f
+ scrm 16l
+ s->st1 = (s->st1 & ~ST1_CRM) | (2 << ST1_CRM_SHIFT);
+
+scrm 2a 4b 1 n f
+ scrm <3>
+ s->st1 = (s->st1 & ~ST1_CRM) | (3 << ST1_CRM_SHIFT);
+
+sfai 2b 54 1 n f
+ sfai 0
+ s->st1 &= ~ST1_SFAI;
+
+sfai 2b 55 1 n f
+ sfai -1
+ s->st1 |= ST1_SFAI;
+
+sfao 2a 50 1 n f
+ sfao 0
+ s->st1 &= ~ST1_SFAO;
+
+sfao 2a 51 1 n f
+ sfao 7
+ s->st1 |= ST1_SFAI;
+
+sfma 2b 58 1 n f
+ sfma 0
+ s->st1 = (s->st1 & ~ST1_SFMA) | (0 << ST1_SFMA_SHIFT);
+
+sfma 2b 59 1 n f
+ sfma 2
+ s->st1 = (s->st1 & ~ST1_SFMA) | (1 << ST1_SFMA_SHIFT);
+
+sfma 2b 5a 1 n f
+ sfma 4
+ s->st1 = (s->st1 & ~ST1_SFMA) | (2 << ST1_SFMA_SHIFT);
+
+sfma 2b 5b 1 n f
+ sfma -16
+ s->st1 = (s->st1 & ~ST1_SFMA) | (3 << ST1_SFMA_SHIFT);
+
+sfml 1 34 1 y
+ sfml
+ s->macc = (s->macc & 0x8000000000000ULL) | ((s->macc << 1) & 0x7ffffffffffffULL);
+
+sfmo 2a 60 1 n f
+ sfmo 0
+ s->st1 = (s->st1 & ~ST1_SFMO) | (0 << ST1_SFMO_SHIFT);
+
+sfmo 2a 61 1 n f
+ sfmo 2
+ s->st1 = (s->st1 & ~ST1_SFMO) | (1 << ST1_SFMO_SHIFT);
+
+sfmo 2a 62 1 n f
+ sfmo 4
+ s->st1 = (s->st1 & ~ST1_SFMO) | (2 << ST1_SFMO_SHIFT);
+
+sfmo 2a 63 1 n f
+ sfmo -8
+ s->st1 = (s->st1 & ~ST1_SFMO) | (3 << ST1_SFMO_SHIFT);
+
+sfmr 1 35 1 y
+ sfmr
+
+slmh 2a 06 1 y
+ slmh %d
+ %wd((%mv >> 24) & 0xffff00);
+
+slml 2a 07 1 y
+ slml %d
+ %wd((%mv >> 8) & 0xffffff);
+
+smhc 2a 05 1 y
+ smhc %c
+ %wc(%mo >> 16);
+
+smhd 2a 03 1 y
+ smhd %d
+ %wd((%mo >> 24) & 0xffffff);
+
+smld 2a 04 1 y
+ smld %d
+
+smom 2a 41 1 n f
+ smom
+ s->st1 |= ST1_MOVM;
+
+srbd 2a 0f 1 y
+ srbd %d
+ %wd(s->xrd);
+
+std1 2a 0d 1 y
+ std1 %d
+
+sub 1 09 1 y
+ sub %d,a
+ %wa((INT64)(INT32)%d - (INT64)(INT32)%a);
+
+sub 1 0a 1 y
+ sub %c,a
+ %wa((INT64)(INT32)%c - (INT64)(INT32)%a);
+
+sub 1 0b 1 y
+ sub %d,m
+
+sub 1 0c 1 y
+ sub %c,m
+
+sub 1 0d 1 y
+ sub %d,%c
+ %wa((INT64)(INT32)%d - (INT64)(INT32)%c);
+
+wre 1 38 1 n
+ wre %d,%c
+ if(s->sti & (S_READ|S_WRITE))
+ break;
+ s->xwr = %d24;
+ s->xoa = %c;
+ tms57002_xm_init(s);
+ s->sti |= S_WRITE;
+
+xor 1 1a 1 n
+ xor %d,a
+
+xor 1 1b 1 n
+ xor %c,a
+
+xor 1 1c 1 n
+ xor %d,%c
+
+zacc 1 10 1 n
+ zacc
+
+zmac 1 30 1 n
+ zmac