Previous 199869 Revisions Next

r32020 Tuesday 9th September, 2014 at 12:54:05 UTC by David Haywood
e132xs: fix do xx= in debugger (nw)
[src/emu/cpu/e132xs]e132xs.c

trunk/src/emu/cpu/e132xs/e132xs.c
r32019r32020
3535
3636 Pierpaolo Prazzoli
3737 - Fixed LDxx.N/P/S opcodes not to increment the destination register when
38   it's the same as the source or "next source" one.
38   it's the same as the source or"next source" one.
3939
4040 Pierpaolo Prazzoli
4141 - Removed nested delays
r32019r32020
5959 - Added nested delays
6060
6161 Tomasz Slanina
62 - Added "undefined" C flag to shift left instructions
62 - Added"undefined" C flag to shift left instructions
6363
6464 Pierpaolo Prazzoli
6565 - Added interrupts-block for delay instructions
r32019r32020
177177    - Implemented a crude hack to set FL in the SR to 6, since according to the docs
178178      that's supposed to happen each time a trap occurs, apparently including when
179179      the processor starts up. The 3rd opcode executed in vamphalf checks to see if
180      the FL flag in SR 6, so it's apparently the "correct" behaviour despite the
180      the FL flag in SR 6, so it's apparently the"correct" behaviour despite the
181181      docs not saying anything on it. If FL is not 6, the branch falls through and
182182      encounters a CHK PC, L2, which at that point will always throw a range trap.
183183      The range trap vector contains 00000000 (CHK PC, PC), which according to the
184184      docs will always throw a range trap (which would effectively lock the system).
185185      This revealed a bug: CHK PC, PC apparently does not throw a range trap, which
186      needs to be fixed. Now that the "correct" behaviour is hacked in with the FL
186      needs to be fixed. Now that the"correct" behaviour is hacked in with the FL
187187      flags, it reveals yet another bug in that the branch is interpreted as being
188188      +0x8700. This means that the PC then wraps around to 000082B0, give or take
189189      a few bytes. While it does indeed branch to valid code, I highly doubt that
r32019r32020
211211
212212*********************************************************************/
213213
214#include "emu.h"
215#include "debugger.h"
216#include "e132xs.h"
214#include"emu.h"
215#include"debugger.h"
216#include"e132xs.h"
217217
218218#ifdef MAME_DEBUG
219219#define DEBUG_PRINTF(x) do { osd_printf_debug x; } while (0)
r32019r32020
308308//-------------------------------------------------
309309
310310e116t_device::e116t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
311   : hyperstone_device(mconfig, "E1-16T", tag, owner, clock, E116T, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map), "e116t", __FILE__)
311   : hyperstone_device(mconfig,"E1-16T", tag, owner, clock, E116T, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map),"e116t", __FILE__)
312312{
313313}
314314
r32019r32020
318318//-------------------------------------------------
319319
320320e116xt_device::e116xt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
321   : hyperstone_device(mconfig, "E1-16XT", tag, owner, clock, E116XT, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map), "e116xt", __FILE__)
321   : hyperstone_device(mconfig,"E1-16XT", tag, owner, clock, E116XT, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map),"e116xt", __FILE__)
322322{
323323}
324324
r32019r32020
328328//-------------------------------------------------
329329
330330e116xs_device::e116xs_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
331   : hyperstone_device(mconfig, "E1-16XS", tag, owner, clock, E116XS, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map), "e116xs", __FILE__)
331   : hyperstone_device(mconfig,"E1-16XS", tag, owner, clock, E116XS, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map),"e116xs", __FILE__)
332332{
333333}
334334
r32019r32020
338338//-------------------------------------------------
339339
340340e116xsr_device::e116xsr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
341   : hyperstone_device(mconfig, "E1-16XSR", tag, owner, clock, E116XT, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map), "e116xsr", __FILE__)
341   : hyperstone_device(mconfig,"E1-16XSR", tag, owner, clock, E116XT, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map),"e116xsr", __FILE__)
342342{
343343}
344344
r32019r32020
348348//-------------------------------------------------
349349
350350e132n_device::e132n_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
351   : hyperstone_device(mconfig, "E1-32N", tag, owner, clock, E132N, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map), "e132n", __FILE__)
351   : hyperstone_device(mconfig,"E1-32N", tag, owner, clock, E132N, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map),"e132n", __FILE__)
352352{
353353}
354354
r32019r32020
358358//-------------------------------------------------
359359
360360e132t_device::e132t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
361   : hyperstone_device(mconfig, "E1-32T", tag, owner, clock, E132T, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map), "e132t", __FILE__)
361   : hyperstone_device(mconfig,"E1-32T", tag, owner, clock, E132T, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map),"e132t", __FILE__)
362362{
363363}
364364
r32019r32020
368368//-------------------------------------------------
369369
370370e132xn_device::e132xn_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
371   : hyperstone_device(mconfig, "E1-32XN", tag, owner, clock, E132XN, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map), "e132xn", __FILE__)
371   : hyperstone_device(mconfig,"E1-32XN", tag, owner, clock, E132XN, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map),"e132xn", __FILE__)
372372{
373373}
374374
r32019r32020
378378//-------------------------------------------------
379379
380380e132xt_device::e132xt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
381   : hyperstone_device(mconfig, "E1-32XT", tag, owner, clock, E132XT, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map), "e132xt", __FILE__)
381   : hyperstone_device(mconfig,"E1-32XT", tag, owner, clock, E132XT, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map),"e132xt", __FILE__)
382382{
383383}
384384
r32019r32020
388388//-------------------------------------------------
389389
390390e132xs_device::e132xs_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
391   : hyperstone_device(mconfig, "E1-32XS", tag, owner, clock, E132XS, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map), "e132xs", __FILE__)
391   : hyperstone_device(mconfig,"E1-32XS", tag, owner, clock, E132XS, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map),"e132xs", __FILE__)
392392{
393393}
394394
r32019r32020
398398//-------------------------------------------------
399399
400400e132xsr_device::e132xsr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
401   : hyperstone_device(mconfig, "E1-32XSR", tag, owner, clock, E132XSR, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map), "e132xsr", __FILE__)
401   : hyperstone_device(mconfig,"E1-32XSR", tag, owner, clock, E132XSR, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map),"e132xsr", __FILE__)
402402{
403403}
404404
r32019r32020
408408//-------------------------------------------------
409409
410410gms30c2116_device::gms30c2116_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
411   : hyperstone_device(mconfig, "GMS30C2116", tag, owner, clock, GMS30C2116, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map), "gms30c2116", __FILE__)
411   : hyperstone_device(mconfig,"GMS30C2116", tag, owner, clock, GMS30C2116, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map),"gms30c2116", __FILE__)
412412{
413413}
414414
r32019r32020
418418//-------------------------------------------------
419419
420420gms30c2132_device::gms30c2132_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
421   : hyperstone_device(mconfig, "GMS30C2132", tag, owner, clock, GMS30C2132, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map), "gms30c2132", __FILE__)
421   : hyperstone_device(mconfig,"GMS30C2132", tag, owner, clock, GMS30C2132, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map),"gms30c2132", __FILE__)
422422{
423423}
424424
r32019r32020
428428//-------------------------------------------------
429429
430430gms30c2216_device::gms30c2216_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
431   : hyperstone_device(mconfig, "GMS30C2216", tag, owner, clock, GMS30C2216, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map), "gms30c2216", __FILE__)
431   : hyperstone_device(mconfig,"GMS30C2216", tag, owner, clock, GMS30C2216, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map),"gms30c2216", __FILE__)
432432{
433433}
434434
r32019r32020
438438//-------------------------------------------------
439439
440440gms30c2232_device::gms30c2232_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
441   : hyperstone_device(mconfig, "GMS30C2232", tag, owner, clock, GMS30C2232, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map), "gms30c2232", __FILE__)
441   : hyperstone_device(mconfig,"GMS30C2232", tag, owner, clock, GMS30C2232, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map),"gms30c2232", __FILE__)
442442{
443443}
444444
r32019r32020
459459   return addr;
460460}
461461
462/* Return the entry point for a determinated emulated code (the one for "extend" opcode is reserved) */
462/* Return the entry point for a determinated emulated code (the one for"extend" opcode is reserved) */
463463UINT32 hyperstone_device::get_emu_code_addr(UINT8 num) /* num is OP */
464464{
465465   UINT32 addr;
r32019r32020
15611561
15621562   // register our state for the debugger
15631563   astring tempstr;
1564   state_add(STATE_GENPC,     "GENPC",     m_global_regs[0]).noshow();
1565   state_add(STATE_GENFLAGS,  "GENFLAGS",  m_global_regs[1]).callimport().callexport().formatstr("%40s").noshow();
1566   state_add(E132XS_PC,       "PC  :%08X", m_global_regs[0]).mask(0xffffffff);
1567   state_add(E132XS_SR,       "SR  :%08X", m_global_regs[1]).mask(0xffffffff);
1568   state_add(E132XS_FER,      "FER :%08X", m_global_regs[2]).mask(0xffffffff);
1569   state_add(E132XS_G3,       "G3  :%08X", m_global_regs[3]).mask(0xffffffff);
1570   state_add(E132XS_G4,       "G4  :%08X", m_global_regs[4]).mask(0xffffffff);
1571   state_add(E132XS_G5,       "G5  :%08X", m_global_regs[5]).mask(0xffffffff);
1572   state_add(E132XS_G6,       "G6  :%08X", m_global_regs[6]).mask(0xffffffff);
1573   state_add(E132XS_G7,       "G7  :%08X", m_global_regs[7]).mask(0xffffffff);
1574   state_add(E132XS_G8,       "G8  :%08X", m_global_regs[8]).mask(0xffffffff);
1575   state_add(E132XS_G9,       "G9  :%08X", m_global_regs[9]).mask(0xffffffff);
1576   state_add(E132XS_G10,      "G10 :%08X", m_global_regs[10]).mask(0xffffffff);
1577   state_add(E132XS_G11,      "G11 :%08X", m_global_regs[11]).mask(0xffffffff);
1578   state_add(E132XS_G12,      "G12 :%08X", m_global_regs[12]).mask(0xffffffff);
1579   state_add(E132XS_G13,      "G13 :%08X", m_global_regs[13]).mask(0xffffffff);
1580   state_add(E132XS_G14,      "G14 :%08X", m_global_regs[14]).mask(0xffffffff);
1581   state_add(E132XS_G15,      "G15 :%08X", m_global_regs[15]).mask(0xffffffff);
1582   state_add(E132XS_G16,      "G16 :%08X", m_global_regs[16]).mask(0xffffffff);
1583   state_add(E132XS_G17,      "G17 :%08X", m_global_regs[17]).mask(0xffffffff);
1584   state_add(E132XS_SP,       "SP  :%08X", m_global_regs[18]).mask(0xffffffff);
1585   state_add(E132XS_UB,       "UB  :%08X", m_global_regs[19]).mask(0xffffffff);
1586   state_add(E132XS_BCR,      "BCR :%08X", m_global_regs[20]).mask(0xffffffff);
1587   state_add(E132XS_TPR,      "TPR :%08X", m_global_regs[21]).mask(0xffffffff);
1588   state_add(E132XS_TCR,      "TCR :%08X", m_global_regs[22]).mask(0xffffffff);
1589   state_add(E132XS_TR,       "TR  :%08X", m_global_regs[23]).mask(0xffffffff);
1590   state_add(E132XS_WCR,      "WCR :%08X", m_global_regs[24]).mask(0xffffffff);
1591   state_add(E132XS_ISR,      "ISR :%08X", m_global_regs[25]).mask(0xffffffff);
1592   state_add(E132XS_FCR,      "FCR :%08X", m_global_regs[26]).mask(0xffffffff);
1593   state_add(E132XS_MCR,      "MCR :%08X", m_global_regs[27]).mask(0xffffffff);
1594   state_add(E132XS_G28,      "G28 :%08X", m_global_regs[28]).mask(0xffffffff);
1595   state_add(E132XS_G29,      "G29 :%08X", m_global_regs[29]).mask(0xffffffff);
1596   state_add(E132XS_G30,      "G30 :%08X", m_global_regs[30]).mask(0xffffffff);
1597   state_add(E132XS_G31,      "G31 :%08X", m_global_regs[31]).mask(0xffffffff);
1598   state_add(E132XS_CL0,      "CL0 :%08X", m_local_regs[(0 + GET_FP) % 64]).mask(0xffffffff);
1599   state_add(E132XS_CL1,      "CL1 :%08X", m_local_regs[(1 + GET_FP) % 64]).mask(0xffffffff);
1600   state_add(E132XS_CL2,      "CL2 :%08X", m_local_regs[(2 + GET_FP) % 64]).mask(0xffffffff);
1601   state_add(E132XS_CL3,      "CL3 :%08X", m_local_regs[(3 + GET_FP) % 64]).mask(0xffffffff);
1602   state_add(E132XS_CL4,      "CL4 :%08X", m_local_regs[(4 + GET_FP) % 64]).mask(0xffffffff);
1603   state_add(E132XS_CL5,      "CL5 :%08X", m_local_regs[(5 + GET_FP) % 64]).mask(0xffffffff);
1604   state_add(E132XS_CL6,      "CL6 :%08X", m_local_regs[(6 + GET_FP) % 64]).mask(0xffffffff);
1605   state_add(E132XS_CL7,      "CL7 :%08X", m_local_regs[(7 + GET_FP) % 64]).mask(0xffffffff);
1606   state_add(E132XS_CL8,      "CL8 :%08X", m_local_regs[(8 + GET_FP) % 64]).mask(0xffffffff);
1607   state_add(E132XS_CL9,      "CL9 :%08X", m_local_regs[(9 + GET_FP) % 64]).mask(0xffffffff);
1608   state_add(E132XS_CL10,     "CL10:%08X", m_local_regs[(10 + GET_FP) % 64]).mask(0xffffffff);
1609   state_add(E132XS_CL11,     "CL11:%08X", m_local_regs[(11 + GET_FP) % 64]).mask(0xffffffff);
1610   state_add(E132XS_CL12,     "CL12:%08X", m_local_regs[(12 + GET_FP) % 64]).mask(0xffffffff);
1611   state_add(E132XS_CL13,     "CL13:%08X", m_local_regs[(13 + GET_FP) % 64]).mask(0xffffffff);
1612   state_add(E132XS_CL14,     "CL14:%08X", m_local_regs[(14 + GET_FP) % 64]).mask(0xffffffff);
1613   state_add(E132XS_CL15,     "CL15:%08X", m_local_regs[(15 + GET_FP) % 64]).mask(0xffffffff);
1614   state_add(E132XS_L0,       "L0  :%08X", m_local_regs[0]).mask(0xffffffff);
1615   state_add(E132XS_L1,       "L1  :%08X", m_local_regs[1]).mask(0xffffffff);
1616   state_add(E132XS_L2,       "L2  :%08X", m_local_regs[2]).mask(0xffffffff);
1617   state_add(E132XS_L3,       "L3  :%08X", m_local_regs[3]).mask(0xffffffff);
1618   state_add(E132XS_L4,       "L4  :%08X", m_local_regs[4]).mask(0xffffffff);
1619   state_add(E132XS_L5,       "L5  :%08X", m_local_regs[5]).mask(0xffffffff);
1620   state_add(E132XS_L6,       "L6  :%08X", m_local_regs[6]).mask(0xffffffff);
1621   state_add(E132XS_L7,       "L7  :%08X", m_local_regs[7]).mask(0xffffffff);
1622   state_add(E132XS_L8,       "L8  :%08X", m_local_regs[8]).mask(0xffffffff);
1623   state_add(E132XS_L9,       "L9  :%08X", m_local_regs[9]).mask(0xffffffff);
1624   state_add(E132XS_L10,      "L10 :%08X", m_local_regs[10]).mask(0xffffffff);
1625   state_add(E132XS_L11,      "L11 :%08X", m_local_regs[11]).mask(0xffffffff);
1626   state_add(E132XS_L12,      "L12 :%08X", m_local_regs[12]).mask(0xffffffff);
1627   state_add(E132XS_L13,      "L13 :%08X", m_local_regs[13]).mask(0xffffffff);
1628   state_add(E132XS_L14,      "L14 :%08X", m_local_regs[14]).mask(0xffffffff);
1629   state_add(E132XS_L15,      "L15 :%08X", m_local_regs[15]).mask(0xffffffff);
1630   state_add(E132XS_L16,      "L16 :%08X", m_local_regs[16]).mask(0xffffffff);
1631   state_add(E132XS_L17,      "L17 :%08X", m_local_regs[17]).mask(0xffffffff);
1632   state_add(E132XS_L18,      "L18 :%08X", m_local_regs[18]).mask(0xffffffff);
1633   state_add(E132XS_L19,      "L19 :%08X", m_local_regs[19]).mask(0xffffffff);
1634   state_add(E132XS_L20,      "L20 :%08X", m_local_regs[20]).mask(0xffffffff);
1635   state_add(E132XS_L21,      "L21 :%08X", m_local_regs[21]).mask(0xffffffff);
1636   state_add(E132XS_L22,      "L22 :%08X", m_local_regs[22]).mask(0xffffffff);
1637   state_add(E132XS_L23,      "L23 :%08X", m_local_regs[23]).mask(0xffffffff);
1638   state_add(E132XS_L24,      "L24 :%08X", m_local_regs[24]).mask(0xffffffff);
1639   state_add(E132XS_L25,      "L25 :%08X", m_local_regs[25]).mask(0xffffffff);
1640   state_add(E132XS_L26,      "L26 :%08X", m_local_regs[26]).mask(0xffffffff);
1641   state_add(E132XS_L27,      "L27 :%08X", m_local_regs[27]).mask(0xffffffff);
1642   state_add(E132XS_L28,      "L28 :%08X", m_local_regs[28]).mask(0xffffffff);
1643   state_add(E132XS_L29,      "L29 :%08X", m_local_regs[29]).mask(0xffffffff);
1644   state_add(E132XS_L30,      "L30 :%08X", m_local_regs[30]).mask(0xffffffff);
1645   state_add(E132XS_L31,      "L31 :%08X", m_local_regs[31]).mask(0xffffffff);
1646   state_add(E132XS_L32,      "L32 :%08X", m_local_regs[32]).mask(0xffffffff);
1647   state_add(E132XS_L33,      "L33 :%08X", m_local_regs[33]).mask(0xffffffff);
1648   state_add(E132XS_L34,      "L34 :%08X", m_local_regs[34]).mask(0xffffffff);
1649   state_add(E132XS_L35,      "L35 :%08X", m_local_regs[35]).mask(0xffffffff);
1650   state_add(E132XS_L36,      "L36 :%08X", m_local_regs[36]).mask(0xffffffff);
1651   state_add(E132XS_L37,      "L37 :%08X", m_local_regs[37]).mask(0xffffffff);
1652   state_add(E132XS_L38,      "L38 :%08X", m_local_regs[38]).mask(0xffffffff);
1653   state_add(E132XS_L39,      "L39 :%08X", m_local_regs[39]).mask(0xffffffff);
1654   state_add(E132XS_L40,      "L40 :%08X", m_local_regs[40]).mask(0xffffffff);
1655   state_add(E132XS_L41,      "L41 :%08X", m_local_regs[41]).mask(0xffffffff);
1656   state_add(E132XS_L42,      "L42 :%08X", m_local_regs[42]).mask(0xffffffff);
1657   state_add(E132XS_L43,      "L43 :%08X", m_local_regs[43]).mask(0xffffffff);
1658   state_add(E132XS_L44,      "L44 :%08X", m_local_regs[44]).mask(0xffffffff);
1659   state_add(E132XS_L45,      "L45 :%08X", m_local_regs[45]).mask(0xffffffff);
1660   state_add(E132XS_L46,      "L46 :%08X", m_local_regs[46]).mask(0xffffffff);
1661   state_add(E132XS_L47,      "L47 :%08X", m_local_regs[47]).mask(0xffffffff);
1662   state_add(E132XS_L48,      "L48 :%08X", m_local_regs[48]).mask(0xffffffff);
1663   state_add(E132XS_L49,      "L49 :%08X", m_local_regs[49]).mask(0xffffffff);
1664   state_add(E132XS_L50,      "L50 :%08X", m_local_regs[50]).mask(0xffffffff);
1665   state_add(E132XS_L51,      "L51 :%08X", m_local_regs[51]).mask(0xffffffff);
1666   state_add(E132XS_L52,      "L52 :%08X", m_local_regs[52]).mask(0xffffffff);
1667   state_add(E132XS_L53,      "L53 :%08X", m_local_regs[53]).mask(0xffffffff);
1668   state_add(E132XS_L54,      "L54 :%08X", m_local_regs[54]).mask(0xffffffff);
1669   state_add(E132XS_L55,      "L55 :%08X", m_local_regs[55]).mask(0xffffffff);
1670   state_add(E132XS_L56,      "L56 :%08X", m_local_regs[56]).mask(0xffffffff);
1671   state_add(E132XS_L57,      "L57 :%08X", m_local_regs[57]).mask(0xffffffff);
1672   state_add(E132XS_L58,      "L58 :%08X", m_local_regs[58]).mask(0xffffffff);
1673   state_add(E132XS_L59,      "L59 :%08X", m_local_regs[59]).mask(0xffffffff);
1674   state_add(E132XS_L60,      "L60 :%08X", m_local_regs[60]).mask(0xffffffff);
1675   state_add(E132XS_L61,      "L61 :%08X", m_local_regs[61]).mask(0xffffffff);
1676   state_add(E132XS_L62,      "L62 :%08X", m_local_regs[62]).mask(0xffffffff);
1677   state_add(E132XS_L63,      "L63 :%08X", m_local_regs[63]).mask(0xffffffff);
1564   state_add(STATE_GENPC,    "GENPC",     m_global_regs[0]).noshow();
1565   state_add(STATE_GENFLAGS, "GENFLAGS",  m_global_regs[1]).callimport().callexport().formatstr("%40s").noshow();
1566   state_add(E132XS_PC,      "PC", m_global_regs[0]).mask(0xffffffff);
1567   state_add(E132XS_SR,      "SR", m_global_regs[1]).mask(0xffffffff);
1568   state_add(E132XS_FER,     "FER", m_global_regs[2]).mask(0xffffffff);
1569   state_add(E132XS_G3,      "G3", m_global_regs[3]).mask(0xffffffff);
1570   state_add(E132XS_G4,      "G4", m_global_regs[4]).mask(0xffffffff);
1571   state_add(E132XS_G5,      "G5", m_global_regs[5]).mask(0xffffffff);
1572   state_add(E132XS_G6,      "G6", m_global_regs[6]).mask(0xffffffff);
1573   state_add(E132XS_G7,      "G7", m_global_regs[7]).mask(0xffffffff);
1574   state_add(E132XS_G8,      "G8", m_global_regs[8]).mask(0xffffffff);
1575   state_add(E132XS_G9,      "G9", m_global_regs[9]).mask(0xffffffff);
1576   state_add(E132XS_G10,     "G10", m_global_regs[10]).mask(0xffffffff);
1577   state_add(E132XS_G11,     "G11", m_global_regs[11]).mask(0xffffffff);
1578   state_add(E132XS_G12,     "G12", m_global_regs[12]).mask(0xffffffff);
1579   state_add(E132XS_G13,     "G13", m_global_regs[13]).mask(0xffffffff);
1580   state_add(E132XS_G14,     "G14", m_global_regs[14]).mask(0xffffffff);
1581   state_add(E132XS_G15,     "G15", m_global_regs[15]).mask(0xffffffff);
1582   state_add(E132XS_G16,     "G16", m_global_regs[16]).mask(0xffffffff);
1583   state_add(E132XS_G17,     "G17", m_global_regs[17]).mask(0xffffffff);
1584   state_add(E132XS_SP,      "SP", m_global_regs[18]).mask(0xffffffff);
1585   state_add(E132XS_UB,      "UB", m_global_regs[19]).mask(0xffffffff);
1586   state_add(E132XS_BCR,     "BCR", m_global_regs[20]).mask(0xffffffff);
1587   state_add(E132XS_TPR,     "TPR", m_global_regs[21]).mask(0xffffffff);
1588   state_add(E132XS_TCR,     "TCR", m_global_regs[22]).mask(0xffffffff);
1589   state_add(E132XS_TR,      "TR", m_global_regs[23]).mask(0xffffffff);
1590   state_add(E132XS_WCR,     "WCR", m_global_regs[24]).mask(0xffffffff);
1591   state_add(E132XS_ISR,     "ISR", m_global_regs[25]).mask(0xffffffff);
1592   state_add(E132XS_FCR,     "FCR", m_global_regs[26]).mask(0xffffffff);
1593   state_add(E132XS_MCR,     "MCR", m_global_regs[27]).mask(0xffffffff);
1594   state_add(E132XS_G28,     "G28", m_global_regs[28]).mask(0xffffffff);
1595   state_add(E132XS_G29,     "G29", m_global_regs[29]).mask(0xffffffff);
1596   state_add(E132XS_G30,     "G30", m_global_regs[30]).mask(0xffffffff);
1597   state_add(E132XS_G31,     "G31", m_global_regs[31]).mask(0xffffffff);
1598   state_add(E132XS_CL0,     "CL0", m_local_regs[(0 + GET_FP) % 64]).mask(0xffffffff);
1599   state_add(E132XS_CL1,     "CL1", m_local_regs[(1 + GET_FP) % 64]).mask(0xffffffff);
1600   state_add(E132XS_CL2,     "CL2", m_local_regs[(2 + GET_FP) % 64]).mask(0xffffffff);
1601   state_add(E132XS_CL3,     "CL3", m_local_regs[(3 + GET_FP) % 64]).mask(0xffffffff);
1602   state_add(E132XS_CL4,     "CL4", m_local_regs[(4 + GET_FP) % 64]).mask(0xffffffff);
1603   state_add(E132XS_CL5,     "CL5", m_local_regs[(5 + GET_FP) % 64]).mask(0xffffffff);
1604   state_add(E132XS_CL6,     "CL6", m_local_regs[(6 + GET_FP) % 64]).mask(0xffffffff);
1605   state_add(E132XS_CL7,     "CL7", m_local_regs[(7 + GET_FP) % 64]).mask(0xffffffff);
1606   state_add(E132XS_CL8,     "CL8", m_local_regs[(8 + GET_FP) % 64]).mask(0xffffffff);
1607   state_add(E132XS_CL9,     "CL9", m_local_regs[(9 + GET_FP) % 64]).mask(0xffffffff);
1608   state_add(E132XS_CL10,    "CL10", m_local_regs[(10 + GET_FP) % 64]).mask(0xffffffff);
1609   state_add(E132XS_CL11,    "CL11", m_local_regs[(11 + GET_FP) % 64]).mask(0xffffffff);
1610   state_add(E132XS_CL12,    "CL12", m_local_regs[(12 + GET_FP) % 64]).mask(0xffffffff);
1611   state_add(E132XS_CL13,    "CL13", m_local_regs[(13 + GET_FP) % 64]).mask(0xffffffff);
1612   state_add(E132XS_CL14,    "CL14", m_local_regs[(14 + GET_FP) % 64]).mask(0xffffffff);
1613   state_add(E132XS_CL15,    "CL15", m_local_regs[(15 + GET_FP) % 64]).mask(0xffffffff);
1614   state_add(E132XS_L0,      "L0", m_local_regs[0]).mask(0xffffffff);
1615   state_add(E132XS_L1,      "L1", m_local_regs[1]).mask(0xffffffff);
1616   state_add(E132XS_L2,      "L2", m_local_regs[2]).mask(0xffffffff);
1617   state_add(E132XS_L3,      "L3", m_local_regs[3]).mask(0xffffffff);
1618   state_add(E132XS_L4,      "L4", m_local_regs[4]).mask(0xffffffff);
1619   state_add(E132XS_L5,      "L5", m_local_regs[5]).mask(0xffffffff);
1620   state_add(E132XS_L6,      "L6", m_local_regs[6]).mask(0xffffffff);
1621   state_add(E132XS_L7,      "L7", m_local_regs[7]).mask(0xffffffff);
1622   state_add(E132XS_L8,      "L8", m_local_regs[8]).mask(0xffffffff);
1623   state_add(E132XS_L9,      "L9", m_local_regs[9]).mask(0xffffffff);
1624   state_add(E132XS_L10,     "L10", m_local_regs[10]).mask(0xffffffff);
1625   state_add(E132XS_L11,     "L11", m_local_regs[11]).mask(0xffffffff);
1626   state_add(E132XS_L12,     "L12", m_local_regs[12]).mask(0xffffffff);
1627   state_add(E132XS_L13,     "L13", m_local_regs[13]).mask(0xffffffff);
1628   state_add(E132XS_L14,     "L14", m_local_regs[14]).mask(0xffffffff);
1629   state_add(E132XS_L15,     "L15", m_local_regs[15]).mask(0xffffffff);
1630   state_add(E132XS_L16,     "L16", m_local_regs[16]).mask(0xffffffff);
1631   state_add(E132XS_L17,     "L17", m_local_regs[17]).mask(0xffffffff);
1632   state_add(E132XS_L18,     "L18", m_local_regs[18]).mask(0xffffffff);
1633   state_add(E132XS_L19,     "L19", m_local_regs[19]).mask(0xffffffff);
1634   state_add(E132XS_L20,     "L20", m_local_regs[20]).mask(0xffffffff);
1635   state_add(E132XS_L21,     "L21", m_local_regs[21]).mask(0xffffffff);
1636   state_add(E132XS_L22,     "L22", m_local_regs[22]).mask(0xffffffff);
1637   state_add(E132XS_L23,     "L23", m_local_regs[23]).mask(0xffffffff);
1638   state_add(E132XS_L24,     "L24", m_local_regs[24]).mask(0xffffffff);
1639   state_add(E132XS_L25,     "L25", m_local_regs[25]).mask(0xffffffff);
1640   state_add(E132XS_L26,     "L26", m_local_regs[26]).mask(0xffffffff);
1641   state_add(E132XS_L27,     "L27", m_local_regs[27]).mask(0xffffffff);
1642   state_add(E132XS_L28,     "L28", m_local_regs[28]).mask(0xffffffff);
1643   state_add(E132XS_L29,     "L29", m_local_regs[29]).mask(0xffffffff);
1644   state_add(E132XS_L30,     "L30", m_local_regs[30]).mask(0xffffffff);
1645   state_add(E132XS_L31,     "L31", m_local_regs[31]).mask(0xffffffff);
1646   state_add(E132XS_L32,     "L32", m_local_regs[32]).mask(0xffffffff);
1647   state_add(E132XS_L33,     "L33", m_local_regs[33]).mask(0xffffffff);
1648   state_add(E132XS_L34,     "L34", m_local_regs[34]).mask(0xffffffff);
1649   state_add(E132XS_L35,     "L35", m_local_regs[35]).mask(0xffffffff);
1650   state_add(E132XS_L36,     "L36", m_local_regs[36]).mask(0xffffffff);
1651   state_add(E132XS_L37,     "L37", m_local_regs[37]).mask(0xffffffff);
1652   state_add(E132XS_L38,     "L38", m_local_regs[38]).mask(0xffffffff);
1653   state_add(E132XS_L39,     "L39", m_local_regs[39]).mask(0xffffffff);
1654   state_add(E132XS_L40,     "L40", m_local_regs[40]).mask(0xffffffff);
1655   state_add(E132XS_L41,     "L41", m_local_regs[41]).mask(0xffffffff);
1656   state_add(E132XS_L42,     "L42", m_local_regs[42]).mask(0xffffffff);
1657   state_add(E132XS_L43,     "L43", m_local_regs[43]).mask(0xffffffff);
1658   state_add(E132XS_L44,     "L44", m_local_regs[44]).mask(0xffffffff);
1659   state_add(E132XS_L45,     "L45", m_local_regs[45]).mask(0xffffffff);
1660   state_add(E132XS_L46,     "L46", m_local_regs[46]).mask(0xffffffff);
1661   state_add(E132XS_L47,     "L47", m_local_regs[47]).mask(0xffffffff);
1662   state_add(E132XS_L48,     "L48", m_local_regs[48]).mask(0xffffffff);
1663   state_add(E132XS_L49,     "L49", m_local_regs[49]).mask(0xffffffff);
1664   state_add(E132XS_L50,     "L50", m_local_regs[50]).mask(0xffffffff);
1665   state_add(E132XS_L51,     "L51", m_local_regs[51]).mask(0xffffffff);
1666   state_add(E132XS_L52,     "L52", m_local_regs[52]).mask(0xffffffff);
1667   state_add(E132XS_L53,     "L53", m_local_regs[53]).mask(0xffffffff);
1668   state_add(E132XS_L54,     "L54", m_local_regs[54]).mask(0xffffffff);
1669   state_add(E132XS_L55,     "L55", m_local_regs[55]).mask(0xffffffff);
1670   state_add(E132XS_L56,     "L56", m_local_regs[56]).mask(0xffffffff);
1671   state_add(E132XS_L57,     "L57", m_local_regs[57]).mask(0xffffffff);
1672   state_add(E132XS_L58,     "L58", m_local_regs[58]).mask(0xffffffff);
1673   state_add(E132XS_L59,     "L59", m_local_regs[59]).mask(0xffffffff);
1674   state_add(E132XS_L60,     "L60", m_local_regs[60]).mask(0xffffffff);
1675   state_add(E132XS_L61,     "L61", m_local_regs[61]).mask(0xffffffff);
1676   state_add(E132XS_L62,     "L62", m_local_regs[62]).mask(0xffffffff);
1677   state_add(E132XS_L63,     "L63", m_local_regs[63]).mask(0xffffffff);
16781678
16791679   save_item(NAME(m_global_regs));
16801680   save_item(NAME(m_local_regs));
r32019r32020
42104210   {
42114211      // signed or unsigned multiplication, single word product
42124212      case EMUL:
4213      case 0x100: // used in "N" type cpu
4213      case 0x100: // used in"N" type cpu
42144214      {
42154215         UINT32 result;
42164216
r32019r32020
44374437   SET_SREGF(READ_W(DREG + 4));
44384438
44394439   // post increment the destination register if it's different from the source one
4440   // and from the "next source" one
4440   // and from the"next source" one
44414441   if(!(decode->src == decode->dst && S_BIT == LOCAL) &&   !SAME_SRCF_DST )
44424442   {
44434443      SET_DREG(DREG + 8);
r32019r32020
48614861}
48624862
48634863
4864#include "e132xsop.inc"
4864#include"e132xsop.inc"
48654865
48664866//**************************************************************************
48674867//  CORE EXECUTION LOOP

Previous 199869 Revisions Next


© 1997-2024 The MAME Team