mirror of
https://github.com/holub/mame
synced 2025-06-27 22:54:42 +03:00
Merge remote-tracking branch 'origin/master' into netlist_dev
This commit is contained in:
commit
48e5f590bf
@ -165,6 +165,7 @@ links {
|
||||
|
||||
includedirs {
|
||||
MAME_DIR .. "src/osd",
|
||||
MAME_DIR .. "src/devices",
|
||||
MAME_DIR .. "src/emu",
|
||||
MAME_DIR .. "src/lib/util",
|
||||
MAME_DIR .. "3rdparty",
|
||||
|
@ -24,8 +24,6 @@
|
||||
|
||||
#define SPARCV8 (0)
|
||||
|
||||
CPU_DISASSEMBLE( sparc );
|
||||
|
||||
const device_type MB86901 = &device_creator<mb86901_device>;
|
||||
|
||||
const int mb86901_device::WINDOW_COUNT = 7;
|
||||
@ -552,7 +550,7 @@ bool mb86901_device::execute_group2(UINT32 op)
|
||||
{
|
||||
UINT32 result = arg1 - arg2;
|
||||
TEST_ICC_NZ(result);
|
||||
if ((arg1 & 0x80000000) == (arg2 & 0x80000000) && (arg2 & 0x80000000) != (result & 0x80000000))
|
||||
if ((arg1 & 0x80000000) != (arg2 & 0x80000000) && (arg2 & 0x80000000) != (result & 0x80000000))
|
||||
SET_ICC_V_FLAG;
|
||||
if (result > arg1)
|
||||
SET_ICC_C_FLAG;
|
||||
@ -614,10 +612,10 @@ bool mb86901_device::execute_group2(UINT32 op)
|
||||
case 28: // subxcc
|
||||
{
|
||||
UINT32 c = (ICC_C_SET ? 1 : 0);
|
||||
UINT32 argt = arg2 - c;
|
||||
UINT32 argt = arg2 + c;
|
||||
UINT32 result = arg1 - argt;
|
||||
TEST_ICC_NZ(result);
|
||||
if (((arg1 & 0x80000000) == (argt & 0x80000000) && (arg1 & 0x80000000) != (result & 0x80000000)) || (c != 0 && arg2 == 0x80000000))
|
||||
if (((arg1 & 0x80000000) != (argt & 0x80000000) && (arg1 & 0x80000000) != (result & 0x80000000)) || (c != 0 && arg2 == 0x80000000))
|
||||
SET_ICC_V_FLAG;
|
||||
if (result > arg1 || (result == arg1 && arg2 != 0))
|
||||
SET_ICC_C_FLAG;
|
||||
@ -1113,7 +1111,7 @@ void mb86901_device::execute_group3(UINT32 op)
|
||||
write_word(m_data_asi, ADDRESS, RDREG);
|
||||
if (MAE || HOLD_BUS)
|
||||
break;
|
||||
write_word(m_data_asi, ADDRESS, REG(RD+1));
|
||||
write_word(m_data_asi, ADDRESS+4, REG(RD+1));
|
||||
break;
|
||||
case 9: // ldsb
|
||||
{
|
||||
|
@ -40,6 +40,10 @@
|
||||
#define SPARC_INT15 31
|
||||
#define SPARC_TRAP_INSTRUCTION 128
|
||||
|
||||
// TODO: when there are more SPARC CPUs, move setter to a base class
|
||||
#define MCFG_SPARC_ADD_ASI_DESC(desc) \
|
||||
mb86901_device::add_asi_desc(*device, desc);
|
||||
|
||||
class mb86901_device : public cpu_device
|
||||
{
|
||||
public:
|
||||
@ -76,7 +80,11 @@ public:
|
||||
void hold_bus() { m_hold_bus = true; }
|
||||
void release_bus() { m_hold_bus = false; }
|
||||
|
||||
template<typename T> static void add_asi_desc(device_t &device, const T &desc) { return downcast<mb86901_device &>(device).add_asi_desc(desc); }
|
||||
|
||||
protected:
|
||||
template<typename T> void add_asi_desc(const T &desc) { m_dasm.add_asi_desc(desc); }
|
||||
|
||||
bool invoke_queued_traps();
|
||||
bool check_main_traps(UINT32 op, bool privileged, UINT32 alignment, UINT8 registeralign, bool noimmediate);
|
||||
|
||||
|
@ -8,12 +8,14 @@
|
||||
#include "sparcdasm.h"
|
||||
#include "sparcdefs.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdio>
|
||||
|
||||
|
||||
namespace {
|
||||
const sparc_disassembler DASM_V7(7);
|
||||
const sparc_disassembler DASM_V8(8);
|
||||
const sparc_disassembler DASM_V9(9);
|
||||
INT32 get_disp16(UINT32 op) { return DISP19; }
|
||||
INT32 get_disp19(UINT32 op) { return DISP19; }
|
||||
INT32 get_disp22(UINT32 op) { return DISP19; }
|
||||
}
|
||||
|
||||
const char * const sparc_disassembler::REG_NAMES[32] = {
|
||||
@ -33,7 +35,7 @@ const sparc_disassembler::branch_desc sparc_disassembler::EMPTY_BRANCH_DESC = {
|
||||
};
|
||||
|
||||
const sparc_disassembler::branch_desc sparc_disassembler::BPCC_DESC = {
|
||||
[](UINT32 op) { return DISP19; }, 6, true, true,
|
||||
&get_disp19, 6, true, true,
|
||||
{ "%icc", nullptr, "%xcc", nullptr },
|
||||
{
|
||||
"bn", "be", "ble", "bl", "bleu", "bcs", "bneg", "bvs",
|
||||
@ -42,7 +44,7 @@ const sparc_disassembler::branch_desc sparc_disassembler::BPCC_DESC = {
|
||||
};
|
||||
|
||||
const sparc_disassembler::branch_desc sparc_disassembler::BICC_DESC = {
|
||||
[](UINT32 op) { return DISP22; }, 6, false, false,
|
||||
&get_disp22, 6, false, false,
|
||||
{ nullptr, nullptr, nullptr, nullptr },
|
||||
{
|
||||
"bn", "be", "ble", "bl", "bleu", "bcs", "bneg", "bvs",
|
||||
@ -51,7 +53,7 @@ const sparc_disassembler::branch_desc sparc_disassembler::BICC_DESC = {
|
||||
};
|
||||
|
||||
const sparc_disassembler::branch_desc sparc_disassembler::BPR_DESC = {
|
||||
[](UINT32 op) { return DISP16; }, 5, true, false,
|
||||
&get_disp16, 5, true, false,
|
||||
{ nullptr, nullptr, nullptr, nullptr },
|
||||
{
|
||||
nullptr, "brz", "brlez", "brlz", nullptr, "brnz", "brgz", "brgez",
|
||||
@ -60,7 +62,7 @@ const sparc_disassembler::branch_desc sparc_disassembler::BPR_DESC = {
|
||||
};
|
||||
|
||||
const sparc_disassembler::branch_desc sparc_disassembler::FBPFCC_DESC = {
|
||||
[](UINT32 op) { return DISP19; }, 6, true, true,
|
||||
&get_disp19, 6, true, true,
|
||||
{ "%fcc0", "%fcc1", "%fcc2", "%fcc3" },
|
||||
{
|
||||
"fbn", "fbne", "fblg", "fbul", "fbl", "fbug", "fbg", "fbu",
|
||||
@ -69,7 +71,7 @@ const sparc_disassembler::branch_desc sparc_disassembler::FBPFCC_DESC = {
|
||||
};
|
||||
|
||||
const sparc_disassembler::branch_desc sparc_disassembler::FBFCC_DESC = {
|
||||
[](UINT32 op) { return DISP22; }, 6, false, false,
|
||||
&get_disp22, 6, false, false,
|
||||
{ nullptr, nullptr, nullptr, nullptr },
|
||||
{
|
||||
"fbn", "fbne", "fblg", "fbul", "fbl", "fbug", "fbg", "fbu",
|
||||
@ -78,7 +80,7 @@ const sparc_disassembler::branch_desc sparc_disassembler::FBFCC_DESC = {
|
||||
};
|
||||
|
||||
const sparc_disassembler::branch_desc sparc_disassembler::CBCCC_DESC = {
|
||||
[](UINT32 op) { return DISP22; }, 6, false, false,
|
||||
&get_disp22, 6, false, false,
|
||||
{ nullptr, nullptr, nullptr, nullptr },
|
||||
{
|
||||
"cbn", "cb123", "cb12", "cb13", "cb1", "cb23", "cb2", "cb3",
|
||||
@ -86,45 +88,40 @@ const sparc_disassembler::branch_desc sparc_disassembler::CBCCC_DESC = {
|
||||
}
|
||||
};
|
||||
|
||||
const sparc_disassembler::int_op_desc_map::value_type sparc_disassembler::SIMPLE_INT_OP_DESC[] = {
|
||||
{ 0x00, { 7, false, "add" } },
|
||||
{ 0x01, { 7, true, "and" } },
|
||||
{ 0x02, { 7, true, "or" } },
|
||||
{ 0x03, { 7, true, "xor" } },
|
||||
{ 0x04, { 7, false, "sub" } },
|
||||
{ 0x05, { 7, true, "andn" } },
|
||||
{ 0x06, { 7, true, "orn" } },
|
||||
{ 0x07, { 7, true, "xnor" } },
|
||||
{ 0x08, { 7, false, "addx" } },
|
||||
{ 0x09, { 9, false, "mulx" } },
|
||||
{ 0x0a, { 8, false, "umul" } },
|
||||
{ 0x0b, { 8, false, "smul" } },
|
||||
{ 0x0c, { 7, false, "subx" } },
|
||||
{ 0x0d, { 9, false, "udivx" } },
|
||||
{ 0x0e, { 8, false, "udiv" } },
|
||||
{ 0x0f, { 8, false, "sdiv" } },
|
||||
{ 0x10, { 8, false, "addcc" } },
|
||||
{ 0x11, { 8, true, "andcc" } },
|
||||
{ 0x12, { 7, true, "orcc" } },
|
||||
{ 0x13, { 7, true, "xorcc" } },
|
||||
{ 0x14, { 7, false, "subcc" } },
|
||||
{ 0x15, { 7, true, "andncc" } },
|
||||
{ 0x16, { 7, true, "orncc" } },
|
||||
{ 0x17, { 7, true, "xnorcc" } },
|
||||
{ 0x18, { 7, false, "addxcc" } },
|
||||
{ 0x1a, { 8, false, "umulcc" } },
|
||||
{ 0x1b, { 8, false, "smulcc" } },
|
||||
{ 0x1c, { 7, false, "subxcc" } },
|
||||
{ 0x1e, { 8, false, "udivcc" } },
|
||||
{ 0x1f, { 8, false, "sdivcc" } },
|
||||
{ 0x20, { 7, false, "taddcc" } },
|
||||
{ 0x21, { 7, false, "tsubcc" } },
|
||||
{ 0x22, { 7, false, "taddcctv" } },
|
||||
{ 0x23, { 7, false, "tsubcctv" } },
|
||||
{ 0x24, { 7, false, "mulscc" } },
|
||||
{ 0x2d, { 9, false, "sdivx" } },
|
||||
{ 0x3c, { 7, false, "save" } },
|
||||
{ 0x3d, { 7, false, "restore" } }
|
||||
const sparc_disassembler::int_op_desc_map::value_type sparc_disassembler::V7_INT_OP_DESC[] = {
|
||||
{ 0x00, { false, "add" } }, { 0x10, { false, "addcc" } },
|
||||
{ 0x01, { true, "and" } }, { 0x11, { true, "andcc" } },
|
||||
{ 0x02, { true, "or" } }, { 0x12, { true, "orcc" } },
|
||||
{ 0x03, { true, "xor" } }, { 0x13, { true, "xorcc" } },
|
||||
{ 0x04, { false, "sub" } }, { 0x14, { false, "subcc" } },
|
||||
{ 0x05, { true, "andn" } }, { 0x15, { true, "andncc" } },
|
||||
{ 0x06, { true, "orn" } }, { 0x16, { true, "orncc" } },
|
||||
{ 0x07, { true, "xnor" } }, { 0x17, { true, "xnorcc" } },
|
||||
{ 0x08, { false, "addx" } }, { 0x18, { false, "addxcc" } },
|
||||
{ 0x0c, { false, "subx" } }, { 0x1c, { false, "subxcc" } },
|
||||
|
||||
{ 0x20, { false, "taddcc" } },
|
||||
{ 0x21, { false, "tsubcc" } },
|
||||
{ 0x22, { false, "taddcctv" } },
|
||||
{ 0x23, { false, "tsubcctv" } },
|
||||
{ 0x24, { false, "mulscc" } },
|
||||
|
||||
{ 0x3c, { false, "save" } },
|
||||
{ 0x3d, { false, "restore" } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::int_op_desc_map::value_type sparc_disassembler::V8_INT_OP_DESC[] = {
|
||||
{ 0x0a, { false, "umul" } }, { 0x1a, { false, "umulcc" } },
|
||||
{ 0x0b, { false, "smul" } }, { 0x1b, { false, "smulcc" } },
|
||||
{ 0x0e, { false, "udiv" } }, { 0x1e, { false, "udivcc" } },
|
||||
{ 0x0f, { false, "sdiv" } }, { 0x1f, { false, "sdivcc" } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::int_op_desc_map::value_type sparc_disassembler::V9_INT_OP_DESC[] = {
|
||||
{ 0x09, { false, "mulx" } },
|
||||
{ 0x0d, { false, "udivx" } },
|
||||
|
||||
{ 0x2d, { false, "sdivx" } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::state_reg_desc_map::value_type sparc_disassembler::V9_STATE_REG_DESC[] = {
|
||||
@ -286,8 +283,7 @@ const sparc_disassembler::asi_desc_map::value_type sparc_disassembler::V9_ASI_DE
|
||||
{ 0x8b, { "#ASI_SNF_L", nullptr } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::prftch_desc_map::value_type sparc_disassembler::V9_PRFTCH_DESC[] =
|
||||
{
|
||||
const sparc_disassembler::prftch_desc_map::value_type sparc_disassembler::V9_PRFTCH_DESC[] = {
|
||||
{ 0x00, { "#n_reads" } },
|
||||
{ 0x01, { "#one_read" } },
|
||||
{ 0x02, { "#n_writes" } },
|
||||
@ -295,12 +291,154 @@ const sparc_disassembler::prftch_desc_map::value_type sparc_disassembler::V9_PRF
|
||||
{ 0x04, { "#page" } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::vis_op_desc_map::value_type sparc_disassembler::VIS1_OP_DESC[] = {
|
||||
{ 0x000, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge8" } },
|
||||
{ 0x002, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge8l" } },
|
||||
{ 0x004, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge16" } },
|
||||
{ 0x006, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge16l" } },
|
||||
{ 0x008, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge32" } },
|
||||
{ 0x00a, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge32l" } },
|
||||
|
||||
{ 0x010, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "array8" } },
|
||||
{ 0x012, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "array16" } },
|
||||
{ 0x014, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "array32" } },
|
||||
{ 0x018, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, true, "alignaddr" } },
|
||||
{ 0x01a, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, true, "alignaddrl" } },
|
||||
|
||||
{ 0x020, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmple16" } },
|
||||
{ 0x022, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmpne16" } },
|
||||
{ 0x024, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmple32" } },
|
||||
{ 0x026, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmpne32" } },
|
||||
{ 0x028, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmpgt16" } },
|
||||
{ 0x02a, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmpeq16" } },
|
||||
{ 0x02c, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmpgt32" } },
|
||||
{ 0x02e, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::I, false, "fcmpeq32" } },
|
||||
|
||||
{ 0x031, { vis_op_desc::Fs, vis_op_desc::Fd, vis_op_desc::Fd, false, "fmul8x16" } },
|
||||
{ 0x033, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fd, false, "fmul8x16au" } },
|
||||
{ 0x035, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fd, false, "fmul8x16al" } },
|
||||
{ 0x036, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fmul8sux16" } },
|
||||
{ 0x037, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fmul8ulx16" } },
|
||||
{ 0x038, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fd, false, "fmuld8sux16" } },
|
||||
{ 0x039, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fd, false, "fmuld8ulx16" } },
|
||||
{ 0x03a, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fpack32" } },
|
||||
{ 0x03b, { vis_op_desc::X, vis_op_desc::Fd, vis_op_desc::Fs, false, "fpack16" } },
|
||||
{ 0x03d, { vis_op_desc::X, vis_op_desc::Fd, vis_op_desc::Fs, false, "fpackfix" } },
|
||||
{ 0x03e, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "pdist" } },
|
||||
|
||||
{ 0x048, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "faligndata" } },
|
||||
{ 0x04b, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fd, false, "fpmerge" } },
|
||||
{ 0x04d, { vis_op_desc::X, vis_op_desc::Fs, vis_op_desc::Fd, false, "fexpand" } },
|
||||
|
||||
{ 0x050, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fpadd16" } },
|
||||
{ 0x051, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fpadd16s" } },
|
||||
{ 0x052, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fpadd32" } },
|
||||
{ 0x053, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fpadd32s" } },
|
||||
{ 0x054, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fpsub16" } },
|
||||
{ 0x055, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fpsub16s" } },
|
||||
{ 0x056, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fpsub32" } },
|
||||
{ 0x057, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fpsub32s" } },
|
||||
|
||||
{ 0x060, { vis_op_desc::X, vis_op_desc::X, vis_op_desc::Fd, false, "fzero" } },
|
||||
{ 0x061, { vis_op_desc::X, vis_op_desc::X, vis_op_desc::Fs, false, "fzeros" } },
|
||||
{ 0x062, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fnor" } },
|
||||
{ 0x063, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fnors" } },
|
||||
{ 0x064, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fandnot2" } },
|
||||
{ 0x065, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fandnot2s" } },
|
||||
{ 0x066, { vis_op_desc::X, vis_op_desc::Fd, vis_op_desc::Fd, false, "fnot2" } },
|
||||
{ 0x067, { vis_op_desc::X, vis_op_desc::Fs, vis_op_desc::Fs, false, "fnot2s" } },
|
||||
{ 0x068, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fandnot1" } },
|
||||
{ 0x069, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fandnot1s" } },
|
||||
{ 0x06a, { vis_op_desc::Fd, vis_op_desc::X, vis_op_desc::Fd, false, "fnot1" } },
|
||||
{ 0x06b, { vis_op_desc::Fs, vis_op_desc::X, vis_op_desc::Fs, false, "fnot1s" } },
|
||||
{ 0x06c, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fxor" } },
|
||||
{ 0x06d, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fxors" } },
|
||||
{ 0x06e, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fnand" } },
|
||||
{ 0x06f, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fnands" } },
|
||||
|
||||
{ 0x070, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fand" } },
|
||||
{ 0x071, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fands" } },
|
||||
{ 0x072, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fxnor" } },
|
||||
{ 0x073, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fxnors" } },
|
||||
{ 0x074, { vis_op_desc::Fd, vis_op_desc::X, vis_op_desc::Fd, false, "fsrc1" } },
|
||||
{ 0x075, { vis_op_desc::Fs, vis_op_desc::X, vis_op_desc::Fs, false, "fsrc1s" } },
|
||||
{ 0x076, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fornot2" } },
|
||||
{ 0x077, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fornot2s" } },
|
||||
{ 0x078, { vis_op_desc::X, vis_op_desc::Fd, vis_op_desc::Fd, false, "fsrc2" } },
|
||||
{ 0x079, { vis_op_desc::X, vis_op_desc::Fs, vis_op_desc::Fs, false, "fsrc2s" } },
|
||||
{ 0x07a, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "fornot1" } },
|
||||
{ 0x07b, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fornot1s" } },
|
||||
{ 0x07c, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "for" } },
|
||||
{ 0x07d, { vis_op_desc::Fs, vis_op_desc::Fs, vis_op_desc::Fs, false, "fors" } },
|
||||
{ 0x07e, { vis_op_desc::X, vis_op_desc::X, vis_op_desc::Fd, false, "fone" } },
|
||||
{ 0x07f, { vis_op_desc::X, vis_op_desc::X, vis_op_desc::Fs, false, "fones" } },
|
||||
|
||||
{ 0x080, { vis_op_desc::X, vis_op_desc::X, vis_op_desc::X, false, "shutdown" } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::state_reg_desc_map::value_type sparc_disassembler::VIS1_STATE_REG_DESC[] = {
|
||||
{ 19, { false, "%gsr", "%gsr" } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::asi_desc_map::value_type sparc_disassembler::VIS1_ASI_DESC[] = {
|
||||
{ 0x2c, { "#ASI_NUCLEUS_QUAD_LDD_L", nullptr } },
|
||||
{ 0x70, { "#ASI_BLK_AIUP", nullptr } },
|
||||
{ 0x71, { "#ASI_BLK_AIUS", nullptr } },
|
||||
{ 0x78, { "#ASI_BLK_AIUPL", nullptr } },
|
||||
{ 0x79, { "#ASI_BLK_AIUSL", nullptr } },
|
||||
{ 0xc0, { "#ASI_PST8_P", nullptr } },
|
||||
{ 0xc1, { "#ASI_PST8_S", nullptr } },
|
||||
{ 0xc2, { "#ASI_PST16_P", nullptr } },
|
||||
{ 0xc3, { "#ASI_PST16_S", nullptr } },
|
||||
{ 0xc4, { "#ASI_PST32_P", nullptr } },
|
||||
{ 0xc5, { "#ASI_PST32_S", nullptr } },
|
||||
{ 0xc8, { "#ASI_PST8_PL", nullptr } },
|
||||
{ 0xc9, { "#ASI_PST8_SL", nullptr } },
|
||||
{ 0xca, { "#ASI_PST16_PL", nullptr } },
|
||||
{ 0xcb, { "#ASI_PST16_SL", nullptr } },
|
||||
{ 0xcc, { "#ASI_PST32_PL", nullptr } },
|
||||
{ 0xcd, { "#ASI_PST32_SL", nullptr } },
|
||||
{ 0xd0, { "#ASI_FL8_P", nullptr } },
|
||||
{ 0xd1, { "#ASI_FL8_S", nullptr } },
|
||||
{ 0xd2, { "#ASI_FL16_P", nullptr } },
|
||||
{ 0xd3, { "#ASI_FL16_S", nullptr } },
|
||||
{ 0xd8, { "#ASI_FL8_PL", nullptr } },
|
||||
{ 0xd9, { "#ASI_FL8_SL", nullptr } },
|
||||
{ 0xda, { "#ASI_FL16_PL", nullptr } },
|
||||
{ 0xdb, { "#ASI_FL16_SL", nullptr } },
|
||||
{ 0xe0, { "#ASI_BLOCK_COMMIT_P", nullptr } },
|
||||
{ 0xe1, { "#ASI_BLOCK_COMMIT_S", nullptr } },
|
||||
{ 0xf0, { "#ASI_BLOCK_P", nullptr } },
|
||||
{ 0xf1, { "#ASI_BLOCK_S", nullptr } },
|
||||
{ 0xf8, { "#ASI_BLOCK_PL", nullptr } },
|
||||
{ 0xf9, { "#ASI_BLOCK_SL", nullptr } }
|
||||
};
|
||||
|
||||
const sparc_disassembler::vis_op_desc_map::value_type sparc_disassembler::VIS2_OP_DESC[] = {
|
||||
{ 0x001, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge8n" } },
|
||||
{ 0x003, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge8ln" } },
|
||||
{ 0x005, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge16n" } },
|
||||
{ 0x007, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge16ln" } },
|
||||
{ 0x009, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge32n" } },
|
||||
{ 0x00b, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, false, "edge32ln" } },
|
||||
|
||||
{ 0x019, { vis_op_desc::I, vis_op_desc::I, vis_op_desc::I, true, "bmask" } },
|
||||
|
||||
{ 0x04c, { vis_op_desc::Fd, vis_op_desc::Fd, vis_op_desc::Fd, false, "bshuffle" } }
|
||||
};
|
||||
|
||||
|
||||
inline UINT32 sparc_disassembler::freg(UINT32 val, bool shift) const
|
||||
{
|
||||
return (shift && (m_version >= 9)) ? ((val & 0x1e) | ((val << 5) & 0x20)) : val;
|
||||
}
|
||||
|
||||
template <typename T> inline void sparc_disassembler::add_int_op_desc(const T &desc)
|
||||
{
|
||||
for (const auto &it : desc)
|
||||
m_int_op_desc.insert(it);
|
||||
}
|
||||
|
||||
template <typename T> inline void sparc_disassembler::add_fpop1_desc(const T &desc)
|
||||
{
|
||||
for (const auto &it : desc)
|
||||
@ -319,6 +457,12 @@ template <typename T> inline void sparc_disassembler::add_ldst_desc(const T &des
|
||||
m_ldst_desc.insert(it);
|
||||
}
|
||||
|
||||
template <typename T> inline void sparc_disassembler::add_vis_op_desc(const T &desc)
|
||||
{
|
||||
for (const auto &it : desc)
|
||||
m_vis_op_desc.insert(it);
|
||||
}
|
||||
|
||||
inline void sparc_disassembler::pad_op_field(char *buf, char *&output) const
|
||||
{
|
||||
while ((output - buf) < m_op_field_width) *output++ = ' ';
|
||||
@ -346,22 +490,29 @@ sparc_disassembler::sparc_disassembler(unsigned version)
|
||||
FBFCC_DESC, // branch on floating-point condition codes
|
||||
(version == 8) ? CBCCC_DESC : EMPTY_BRANCH_DESC // branch on coprocessor condition codes, SPARCv8
|
||||
}
|
||||
, m_simple_int_op_desc(std::begin(SIMPLE_INT_OP_DESC), std::end(SIMPLE_INT_OP_DESC))
|
||||
, m_int_op_desc(std::begin(V7_INT_OP_DESC), std::end(V7_INT_OP_DESC))
|
||||
, m_state_reg_desc()
|
||||
, m_fpop1_desc(std::begin(V7_FPOP1_DESC), std::end(V7_FPOP1_DESC))
|
||||
, m_fpop2_desc(std::begin(V7_FPOP2_DESC), std::end(V7_FPOP2_DESC))
|
||||
, m_ldst_desc(std::begin(V7_LDST_DESC), std::end(V7_LDST_DESC))
|
||||
, m_asi_desc()
|
||||
, m_prftch_desc()
|
||||
, m_vis_op_desc()
|
||||
{
|
||||
if (m_version >= 8)
|
||||
{
|
||||
add_int_op_desc(V8_INT_OP_DESC);
|
||||
}
|
||||
|
||||
if (m_version >= 9)
|
||||
{
|
||||
m_op_field_width = 11;
|
||||
|
||||
m_simple_int_op_desc.find(0x08)->second.mnemonic = "addc";
|
||||
m_simple_int_op_desc.find(0x0c)->second.mnemonic = "subc";
|
||||
m_simple_int_op_desc.find(0x18)->second.mnemonic = "addccc";
|
||||
m_simple_int_op_desc.find(0x1c)->second.mnemonic = "subccc";
|
||||
m_int_op_desc.find(0x08)->second.mnemonic = "addc";
|
||||
m_int_op_desc.find(0x0c)->second.mnemonic = "subc";
|
||||
m_int_op_desc.find(0x18)->second.mnemonic = "addccc";
|
||||
m_int_op_desc.find(0x1c)->second.mnemonic = "subccc";
|
||||
add_int_op_desc(V9_INT_OP_DESC);
|
||||
|
||||
add_state_reg_desc(V9_STATE_REG_DESC),
|
||||
add_fpop1_desc(V9_FPOP1_DESC);
|
||||
@ -384,6 +535,22 @@ sparc_disassembler::sparc_disassembler(unsigned version)
|
||||
}
|
||||
|
||||
|
||||
void sparc_disassembler::enable_vis1()
|
||||
{
|
||||
m_op_field_width = std::max(m_op_field_width, 12);
|
||||
add_vis_op_desc(VIS1_OP_DESC);
|
||||
add_state_reg_desc(VIS1_STATE_REG_DESC);
|
||||
add_asi_desc(VIS1_ASI_DESC);
|
||||
}
|
||||
|
||||
|
||||
void sparc_disassembler::enable_vis2()
|
||||
{
|
||||
enable_vis1();
|
||||
add_vis_op_desc(VIS2_OP_DESC);
|
||||
}
|
||||
|
||||
|
||||
offs_t sparc_disassembler::dasm(char *buf, offs_t pc, UINT32 op) const
|
||||
{
|
||||
switch (OP)
|
||||
@ -405,7 +572,7 @@ offs_t sparc_disassembler::dasm(char *buf, offs_t pc, UINT32 op) const
|
||||
}
|
||||
return 4 | DASMFLAG_SUPPORTED;
|
||||
case 1:
|
||||
print(buf, "%-*s%%pc%c0x%08x ! %08x", m_op_field_width, "call", (DISP30 < 0) ? '-' : '+', std::abs(DISP30), pc + DISP30);
|
||||
print(buf, "%-*s%%pc%c0x%08x ! 0x%08x", m_op_field_width, "call", (DISP30 < 0) ? '-' : '+', std::abs(DISP30), pc + DISP30);
|
||||
return 4 | DASMFLAG_SUPPORTED;
|
||||
case 2:
|
||||
switch (OP3)
|
||||
@ -609,8 +776,7 @@ offs_t sparc_disassembler::dasm(char *buf, offs_t pc, UINT32 op) const
|
||||
case 0x35:
|
||||
return dasm_fpop2(buf, pc, op);
|
||||
case 0x36:
|
||||
// TODO: hooks for IMPDEP1/CPop1
|
||||
break;
|
||||
return dasm_impdep1(buf, pc, op);
|
||||
case 0x37:
|
||||
// TODO: hooks for IMPDEP2/CPop2
|
||||
break;
|
||||
@ -654,8 +820,8 @@ offs_t sparc_disassembler::dasm(char *buf, offs_t pc, UINT32 op) const
|
||||
break;
|
||||
}
|
||||
{
|
||||
const auto it(m_simple_int_op_desc.find(OP3));
|
||||
if ((it != m_simple_int_op_desc.end()) && (m_version >= it->second.min_version))
|
||||
const auto it(m_int_op_desc.find(OP3));
|
||||
if (it != m_int_op_desc.end())
|
||||
{
|
||||
if (!USEIMM)
|
||||
print(buf, "%-*s%s,%s,%s", m_op_field_width, it->second.mnemonic, REG_NAMES[RS1], REG_NAMES[RS2], REG_NAMES[RD]);
|
||||
@ -925,6 +1091,36 @@ offs_t sparc_disassembler::dasm_fpop2(char *buf, offs_t pc, UINT32 op) const
|
||||
}
|
||||
|
||||
|
||||
offs_t sparc_disassembler::dasm_impdep1(char *buf, offs_t pc, UINT32 op) const
|
||||
{
|
||||
const auto it(m_vis_op_desc.find(OPF));
|
||||
if (it != m_vis_op_desc.end())
|
||||
{
|
||||
print(buf, "%-*s", m_op_field_width, it->second.mnemonic);
|
||||
bool args(false);
|
||||
if (it->second.collapse && !RS1)
|
||||
{
|
||||
dasm_vis_arg(buf, args, it->second.rs2, RS2);
|
||||
}
|
||||
else if (it->second.collapse && !RS2)
|
||||
{
|
||||
dasm_vis_arg(buf, args, it->second.rs1, RS1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dasm_vis_arg(buf, args, it->second.rs1, RS1);
|
||||
dasm_vis_arg(buf, args, it->second.rs2, RS2);
|
||||
}
|
||||
dasm_vis_arg(buf, args, it->second.rd, RD);
|
||||
return 4 | DASMFLAG_SUPPORTED;
|
||||
}
|
||||
|
||||
// TODO: driver hook for other kinds of coprocessor?
|
||||
|
||||
return dasm_invalid(buf, pc, op);
|
||||
}
|
||||
|
||||
|
||||
offs_t sparc_disassembler::dasm_jmpl(char *buf, offs_t pc, UINT32 op) const
|
||||
{
|
||||
if (USEIMM && (RD == 0) && ((RS1 == 15) || (RS1 == 31)) && (SIMM13 == 8))
|
||||
@ -1156,20 +1352,20 @@ void sparc_disassembler::dasm_asi_comment(char *&output, UINT32 op) const
|
||||
}
|
||||
|
||||
|
||||
CPU_DISASSEMBLE( sparcv7 )
|
||||
void sparc_disassembler::dasm_vis_arg(char *&output, bool &args, vis_op_desc::arg fmt, UINT32 reg) const
|
||||
{
|
||||
UINT32 op = *reinterpret_cast<const UINT32 *>(oprom);
|
||||
return DASM_V7.dasm(buffer, pc, BIG_ENDIANIZE_INT32(op));
|
||||
}
|
||||
|
||||
CPU_DISASSEMBLE( sparcv8 )
|
||||
switch (fmt)
|
||||
{
|
||||
UINT32 op = *reinterpret_cast<const UINT32 *>(oprom);
|
||||
return DASM_V8.dasm(buffer, pc, BIG_ENDIANIZE_INT32(op));
|
||||
}
|
||||
|
||||
CPU_DISASSEMBLE( sparcv9 )
|
||||
{
|
||||
UINT32 op = *reinterpret_cast<const UINT32 *>(oprom);
|
||||
return DASM_V9.dasm(buffer, pc, BIG_ENDIANIZE_INT32(op));
|
||||
case vis_op_desc::X:
|
||||
break;
|
||||
case vis_op_desc::I:
|
||||
print(output, args ? ",%s" : "%s", REG_NAMES[reg]);
|
||||
args = true;
|
||||
break;
|
||||
case vis_op_desc::Fs:
|
||||
case vis_op_desc::Fd:
|
||||
print(output, args ? ",%%f%d" : "%%f%d", freg(reg, (fmt == vis_op_desc::Fd)));
|
||||
args = true;
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
@ -38,6 +38,9 @@ public:
|
||||
|
||||
sparc_disassembler(unsigned version);
|
||||
|
||||
void enable_vis1();
|
||||
void enable_vis2();
|
||||
|
||||
template <typename T> void add_state_reg_desc(const T &desc)
|
||||
{
|
||||
for (const auto &it : desc)
|
||||
@ -97,7 +100,6 @@ private:
|
||||
|
||||
struct int_op_desc
|
||||
{
|
||||
unsigned min_version;
|
||||
bool hex_imm;
|
||||
const char *mnemonic;
|
||||
};
|
||||
@ -132,6 +134,17 @@ private:
|
||||
};
|
||||
typedef std::map<UINT8, ldst_desc> ldst_desc_map;
|
||||
|
||||
struct vis_op_desc
|
||||
{
|
||||
enum arg { X, I, Fs, Fd };
|
||||
arg rs1 = X;
|
||||
arg rs2 = X;
|
||||
arg rd = X;
|
||||
bool collapse = false;
|
||||
const char *mnemonic = nullptr;
|
||||
};
|
||||
typedef std::map<UINT16, vis_op_desc> vis_op_desc_map;
|
||||
|
||||
offs_t dasm_invalid(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_branch(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_shift(char *buf, offs_t pc, UINT32 op, const char *mnemonic, const char *mnemonicx, const char *mnemonicx0) const;
|
||||
@ -141,6 +154,7 @@ private:
|
||||
offs_t dasm_move_reg_cond(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_fpop1(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_fpop2(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_impdep1(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_jmpl(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_return(char *buf, offs_t pc, UINT32 op) const;
|
||||
offs_t dasm_tcc(char *buf, offs_t pc, UINT32 op) const;
|
||||
@ -149,12 +163,15 @@ private:
|
||||
void dasm_address(char *&output, UINT32 op) const;
|
||||
void dasm_asi(char *&output, UINT32 op) const;
|
||||
void dasm_asi_comment(char *&output, UINT32 op) const;
|
||||
void dasm_vis_arg(char *&output, bool &args, vis_op_desc::arg fmt, UINT32 reg) const;
|
||||
|
||||
UINT32 freg(UINT32 val, bool shift) const;
|
||||
|
||||
template <typename T> void add_int_op_desc(const T &desc);
|
||||
template <typename T> void add_fpop1_desc(const T &desc);
|
||||
template <typename T> void add_fpop2_desc(const T &desc);
|
||||
template <typename T> void add_ldst_desc(const T &desc);
|
||||
template <typename T> void add_vis_op_desc(const T &desc);
|
||||
|
||||
void pad_op_field(char *buf, char *&output) const;
|
||||
ATTR_PRINTF(2, 3) static void print(char *&output, const char *fmt, ...);
|
||||
@ -167,7 +184,9 @@ private:
|
||||
static const branch_desc FBPFCC_DESC;
|
||||
static const branch_desc FBFCC_DESC;
|
||||
static const branch_desc CBCCC_DESC;
|
||||
static const int_op_desc_map::value_type SIMPLE_INT_OP_DESC[];
|
||||
static const int_op_desc_map::value_type V7_INT_OP_DESC[];
|
||||
static const int_op_desc_map::value_type V8_INT_OP_DESC[];
|
||||
static const int_op_desc_map::value_type V9_INT_OP_DESC[];
|
||||
static const state_reg_desc_map::value_type V9_STATE_REG_DESC[];
|
||||
static const char * const MOVCC_CC_NAMES[8];
|
||||
static const char * const MOVCC_COND_NAMES[32];
|
||||
@ -181,17 +200,22 @@ private:
|
||||
static const ldst_desc_map::value_type V9_LDST_DESC[];
|
||||
static const asi_desc_map::value_type V9_ASI_DESC[];
|
||||
static const prftch_desc_map::value_type V9_PRFTCH_DESC[];
|
||||
static const vis_op_desc_map::value_type VIS1_OP_DESC[];
|
||||
static const state_reg_desc_map::value_type VIS1_STATE_REG_DESC[];
|
||||
static const asi_desc_map::value_type VIS1_ASI_DESC[];
|
||||
static const vis_op_desc_map::value_type VIS2_OP_DESC[];
|
||||
|
||||
unsigned m_version;
|
||||
int m_op_field_width;
|
||||
branch_desc m_branch_desc[8];
|
||||
int_op_desc_map m_simple_int_op_desc;
|
||||
int_op_desc_map m_int_op_desc;
|
||||
state_reg_desc_map m_state_reg_desc;
|
||||
fpop1_desc_map m_fpop1_desc;
|
||||
fpop2_desc_map m_fpop2_desc;
|
||||
ldst_desc_map m_ldst_desc;
|
||||
asi_desc_map m_asi_desc;
|
||||
prftch_desc_map m_prftch_desc;
|
||||
vis_op_desc_map m_vis_op_desc;
|
||||
};
|
||||
|
||||
CPU_DISASSEMBLE( sparcv7 );
|
||||
|
@ -285,7 +285,7 @@ void t11_device::device_start()
|
||||
state_add( T11_R5, "R5", m_reg[5].w.l).formatstr("%04X");
|
||||
|
||||
state_add(STATE_GENPC, "curpc", m_reg[7].w.l).noshow();
|
||||
state_add(STATE_GENFLAGS, "GENFLAGS", m_psw.b.l).noshow();
|
||||
state_add(STATE_GENFLAGS, "GENFLAGS", m_psw.b.l).formatstr("%8s").noshow();
|
||||
state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc.w.l).noshow();
|
||||
|
||||
m_icountptr = &m_icount;
|
||||
|
@ -131,8 +131,6 @@ Table 3-2. TMS32025/26 Memory Blocks
|
||||
|
||||
#define P_IN(A) (m_io->read_word((A)<<1))
|
||||
#define P_OUT(A,V) (m_io->write_word(((A)<<1),(V)))
|
||||
#define S_IN(A) (m_io->read_word((A)<<1))
|
||||
#define S_OUT(A,V) (m_io->write_word(((A)<<1),(V)))
|
||||
|
||||
#define M_RDOP(A) ((m_pgmmap[(A) >> 7]) ? (m_pgmmap[(A) >> 7][(A) & 0x7f]) : m_direct->read_word((A)<<1))
|
||||
#define M_RDOP_ARG(A) ((m_pgmmap[(A) >> 7]) ? (m_pgmmap[(A) >> 7][(A) & 0x7f]) : m_direct->read_word((A)<<1))
|
||||
@ -212,7 +210,13 @@ tms32025_device::tms32025_device(const machine_config &mconfig, const char *tag,
|
||||
: cpu_device(mconfig, TMS32025, "TMS32025", tag, owner, clock, "tms32025", __FILE__)
|
||||
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16+1, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_bio_in(*this)
|
||||
, m_hold_in(*this)
|
||||
, m_hold_ack_out(*this)
|
||||
, m_xf_out(*this)
|
||||
, m_dr_in(*this)
|
||||
, m_dx_out(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -221,7 +225,13 @@ tms32025_device::tms32025_device(const machine_config &mconfig, device_type type
|
||||
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16+1, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_bio_in(*this)
|
||||
, m_hold_in(*this)
|
||||
, m_hold_ack_out(*this)
|
||||
, m_xf_out(*this)
|
||||
, m_dr_in(*this)
|
||||
, m_dx_out(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -674,7 +684,7 @@ void tms32025_device::bgz()
|
||||
}
|
||||
void tms32025_device::bioz()
|
||||
{
|
||||
if (S_IN(TMS32025_BIO) != CLEAR_LINE) SET_PC(M_RDOP_ARG(m_PC));
|
||||
if (m_bio_in() != CLEAR_LINE) SET_PC(M_RDOP_ARG(m_PC));
|
||||
else m_PC++ ;
|
||||
MODIFY_AR_ARP();
|
||||
}
|
||||
@ -1276,7 +1286,7 @@ void tms32025_device::rtxm() /** Serial port stuff */
|
||||
void tms32025_device::rxf()
|
||||
{
|
||||
CLR1(XF_FLAG);
|
||||
S_OUT(TMS32025_XF,CLEAR_LINE);
|
||||
m_xf_out(CLEAR_LINE);
|
||||
}
|
||||
void tms32025_device::sach()
|
||||
{
|
||||
@ -1485,7 +1495,7 @@ void tms32025_device::subt()
|
||||
void tms32025_device::sxf()
|
||||
{
|
||||
SET1(XF_FLAG);
|
||||
S_OUT(TMS32025_XF,ASSERT_LINE);
|
||||
m_xf_out(ASSERT_LINE);
|
||||
}
|
||||
void tms32025_device::tblr()
|
||||
{
|
||||
@ -1639,6 +1649,13 @@ void tms32025_device::device_start()
|
||||
m_data = &space(AS_DATA);
|
||||
m_io = &space(AS_IO);
|
||||
|
||||
m_bio_in.resolve_safe(0xffff);
|
||||
m_hold_in.resolve_safe(0xffff);
|
||||
m_hold_ack_out.resolve_safe();
|
||||
m_xf_out.resolve_safe();
|
||||
m_dr_in.resolve_safe(0xffff);
|
||||
m_dx_out.resolve_safe();
|
||||
|
||||
m_PREVPC = 0;
|
||||
m_PFC = 0;
|
||||
m_STR0 = 0;
|
||||
@ -1846,7 +1863,7 @@ void tms32025_device::device_reset()
|
||||
m_RPTC = 0; /* Reset repeat counter to 0 */
|
||||
m_IFR = 0; /* IRQ pending flags */
|
||||
|
||||
S_OUT(TMS32025_XF,ASSERT_LINE); /* XF flag is high. Must set the pin */
|
||||
m_xf_out(ASSERT_LINE); /* XF flag is high. Must set the pin */
|
||||
|
||||
/* Set the internal memory mapped registers */
|
||||
GREG = 0;
|
||||
@ -1941,7 +1958,7 @@ int tms32025_device::process_IRQs()
|
||||
}
|
||||
if ((m_IFR & 0x10) && (IMR & 0x10)) { /* Serial port receive IRQ (internal) */
|
||||
// logerror("TMS32025: Active RINT (Serial receive)\n");
|
||||
DRR = S_IN(TMS32025_DR);
|
||||
DRR = m_dr_in();
|
||||
SET_PC(0x001A);
|
||||
m_idle = 0;
|
||||
m_IFR &= (~0x10);
|
||||
@ -1950,7 +1967,7 @@ int tms32025_device::process_IRQs()
|
||||
}
|
||||
if ((m_IFR & 0x20) && (IMR & 0x20)) { /* Serial port transmit IRQ (internal) */
|
||||
// logerror("TMS32025: Active XINT (Serial transmit)\n");
|
||||
S_OUT(TMS32025_DX,DXR);
|
||||
m_dx_out(DXR);
|
||||
SET_PC(0x001C);
|
||||
m_idle = 0;
|
||||
m_IFR &= (~0x20);
|
||||
@ -2005,9 +2022,9 @@ again:
|
||||
void tms32025_device::execute_run()
|
||||
{
|
||||
/**** Respond to external hold signal */
|
||||
if (S_IN(TMS32025_HOLD) == ASSERT_LINE) {
|
||||
if (m_hold_in() == ASSERT_LINE) {
|
||||
if (m_hold == 0) {
|
||||
S_OUT(TMS32025_HOLDA,ASSERT_LINE); /* Hold-Ack (active low) */
|
||||
m_hold_ack_out(ASSERT_LINE); /* Hold-Ack (active low) */
|
||||
}
|
||||
m_hold = 1;
|
||||
if (HM) {
|
||||
@ -2021,7 +2038,7 @@ void tms32025_device::execute_run()
|
||||
}
|
||||
else {
|
||||
if (m_hold == 1) {
|
||||
S_OUT(TMS32025_HOLDA,CLEAR_LINE); /* Hold-Ack (active low) */
|
||||
m_hold_ack_out(CLEAR_LINE); /* Hold-Ack (active low) */
|
||||
process_timer(3);
|
||||
}
|
||||
m_hold = 0;
|
||||
|
@ -23,15 +23,23 @@
|
||||
#define __TMS32025_H__
|
||||
|
||||
|
||||
#define MCFG_TMS32025_BIO_IN_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */
|
||||
|
||||
#define MCFG_TMS32025_HOLD_IN_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_hold_in_cb(*device, DEVCB_##_devcb); /* HOLD input */
|
||||
|
||||
#define TMS32025_BIO 0x10000 /* BIO input */
|
||||
#define TMS32025_HOLD 0x10001 /* HOLD input */
|
||||
#define TMS32025_HOLDA 0x10001 /* HOLD Acknowledge output */
|
||||
#define TMS32025_XF 0x10002 /* XF output */
|
||||
#define TMS32025_DR 0x10003 /* Serial Data Receive input */
|
||||
#define TMS32025_DX 0x10003 /* Serial Data Transmit output */
|
||||
#define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_hold_ack_out_cb(*device, DEVCB_##_devcb); /* HOLD Acknowledge output */
|
||||
|
||||
#define MCFG_TMS32025_XF_OUT_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_xf_out_cb(*device, DEVCB_##_devcb); /* XF output */
|
||||
|
||||
#define MCFG_TMS32025_DR_IN_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_dr_in_cb(*device, DEVCB_##_devcb); /* Serial Data Receive input */
|
||||
|
||||
#define MCFG_TMS32025_DX_OUT_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_dx_out_cb(*device, DEVCB_##_devcb); /* Serial Data Transmit output */
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
@ -76,6 +84,14 @@ public:
|
||||
tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
|
||||
|
||||
// static configuration helpers
|
||||
template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_hold_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_in.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_hold_ack_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_ack_out.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_xf_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_xf_out.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
@ -119,6 +135,13 @@ private:
|
||||
static const tms32025_opcode s_opcode_CE_subset[256];
|
||||
static const tms32025_opcode s_opcode_Dx_subset[8];
|
||||
|
||||
devcb_read16 m_bio_in;
|
||||
devcb_read16 m_hold_in;
|
||||
devcb_write16 m_hold_ack_out;
|
||||
devcb_write16 m_xf_out;
|
||||
devcb_read16 m_dr_in;
|
||||
devcb_write16 m_dx_out;
|
||||
|
||||
|
||||
/******************** CPU Internal Registers *******************/
|
||||
UINT16 m_PREVPC; /* previous program counter */
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
ti990_10_device::ti990_10_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: cpu_device(mconfig, TI990_10, "TI990/10 CPU", tag, owner, clock, "ti990_10_cpu", __FILE__),
|
||||
m_program_config("program", ENDIANNESS_BIG, 16, 16),
|
||||
m_program_config("program", ENDIANNESS_BIG, 16, 21),
|
||||
m_io_config("cru", ENDIANNESS_BIG, 8, 12),
|
||||
m_prgspace(nullptr),
|
||||
m_cru(nullptr)
|
||||
|
@ -221,10 +221,10 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
|
||||
if (machine().input().code_pressed(KEYCODE_RIGHT) && texel_width < 512) { texel_width <<= 1; while (machine().input().code_pressed(KEYCODE_RIGHT)) ; }
|
||||
|
||||
if (yoffs < 0) yoffs = 0;
|
||||
if (0)
|
||||
if (1)
|
||||
base = waveram0_ptr_from_expanded_addr(yoffs << 16);
|
||||
else
|
||||
base = (void *)&m_frameColor[yoffs<<9];
|
||||
base = (void *)&m_frameColor[yoffs << 6];
|
||||
|
||||
int xoffs = screen.visible_area().min_x;
|
||||
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
|
||||
@ -232,7 +232,7 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
|
||||
UINT32 *dest = &bitmap.pix32(y);
|
||||
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
|
||||
{
|
||||
if (0) {
|
||||
if (1) {
|
||||
UINT8 tex = get_texel_8bit((UINT64 *)base, y, x, texel_width);
|
||||
dest[x] = (tex << 16) | (tex << 8) | tex;
|
||||
}
|
||||
@ -241,7 +241,7 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
|
||||
}
|
||||
}
|
||||
}
|
||||
popmessage("offs = %06X base = %08X", yoffs, yoffs<<9);
|
||||
popmessage("offs = %06X base = %08X", yoffs, yoffs<<16);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -776,7 +776,7 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
|
||||
return FALSE;
|
||||
if (log_fifo)
|
||||
{
|
||||
log_fifo_command(data, numwords, " -- unknown control + hack clear screen\n");
|
||||
log_fifo_command(data, numwords, " -- unknown control + happens after clear screen\n");
|
||||
logerror("\t\tvector %8.2f %8.2f %8.5f\n",
|
||||
(double) convert_float(data[1]),
|
||||
(double) convert_float(data[2]),
|
||||
@ -816,7 +816,7 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
|
||||
case 0x25:
|
||||
if (log_fifo)
|
||||
log_fifo_command(data, numwords, "\n");
|
||||
//zeus_quad_size = 10;
|
||||
zeus_quad_size = 14;
|
||||
break;
|
||||
|
||||
/* 0x31: sync pipeline? (thegrid) */
|
||||
@ -864,7 +864,7 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
|
||||
UINT32 databuffer[32];
|
||||
int databufcount = 0;
|
||||
int model_done = FALSE;
|
||||
UINT32 texoffs = 0;
|
||||
UINT32 texdata = 0;
|
||||
int quadsize = zeus_quad_size;
|
||||
|
||||
if (logit)
|
||||
@ -914,9 +914,9 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
|
||||
case 0x22: /* crusnexo */
|
||||
if (((databuffer[0] >> 16) & 0xff) == 0x9b)
|
||||
{
|
||||
texoffs = databuffer[1];
|
||||
texdata = databuffer[1];
|
||||
if (logit)
|
||||
logerror("texture offset\n");
|
||||
logerror("texdata\n");
|
||||
}
|
||||
else if (logit)
|
||||
logerror("unknown offset\n");
|
||||
@ -936,12 +936,14 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
|
||||
break;
|
||||
|
||||
case 0x2d: // atlantis
|
||||
texoffs = databuffer[1];
|
||||
poly->zeus2_draw_quad(&databuffer[1], texoffs, logit);
|
||||
texdata = databuffer[1];
|
||||
databuffer[1] = m_renderRegs[0x6];
|
||||
//poly->zeus2_draw_quad(&databuffer[1], texoffs, logit);
|
||||
poly->zeus2_draw_quad(databuffer, texdata, logit);
|
||||
break;
|
||||
|
||||
case 0x38: /* crusnexo/thegrid */
|
||||
poly->zeus2_draw_quad(databuffer, texoffs, logit);
|
||||
poly->zeus2_draw_quad(databuffer, texdata, logit);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -965,7 +967,7 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
|
||||
/*************************************
|
||||
* Draw a quad
|
||||
*************************************/
|
||||
void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, int logit)
|
||||
void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texdata, int logit)
|
||||
{
|
||||
z2_poly_vertex clipvert[8];
|
||||
z2_poly_vertex vert[4];
|
||||
@ -976,20 +978,20 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
|
||||
int i;
|
||||
// INT16 normal[3];
|
||||
// INT32 rotnormal[3];
|
||||
int texmode = texoffs & 0xffff;
|
||||
int texmode = texdata & 0xffff;
|
||||
|
||||
if (logit)
|
||||
m_state->logerror("quad\n");
|
||||
|
||||
if (machine().input().code_pressed(KEYCODE_Q) && (texoffs & 0xffff) == 0x119) return;
|
||||
if (machine().input().code_pressed(KEYCODE_E) && (texoffs & 0xffff) == 0x01d) return;
|
||||
if (machine().input().code_pressed(KEYCODE_R) && (texoffs & 0xffff) == 0x11d) return;
|
||||
if (machine().input().code_pressed(KEYCODE_T) && (texoffs & 0xffff) == 0x05d) return;
|
||||
if (machine().input().code_pressed(KEYCODE_Y) && (texoffs & 0xffff) == 0x0dd) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_U) && (texoffs & 0xffff) == 0x119) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_I) && (texoffs & 0xffff) == 0x119) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_O) && (texoffs & 0xffff) == 0x119) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_L) && (texoffs & 0x100)) return;
|
||||
if (machine().input().code_pressed(KEYCODE_Q) && (texdata & 0xffff) == 0x119) return;
|
||||
if (machine().input().code_pressed(KEYCODE_E) && (texdata & 0xffff) == 0x01d) return;
|
||||
if (machine().input().code_pressed(KEYCODE_R) && (texdata & 0xffff) == 0x11d) return;
|
||||
if (machine().input().code_pressed(KEYCODE_T) && (texdata & 0xffff) == 0x05d) return;
|
||||
if (machine().input().code_pressed(KEYCODE_Y) && (texdata & 0xffff) == 0x0dd) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_U) && (texdata & 0xffff) == 0x119) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_I) && (texdata & 0xffff) == 0x119) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_O) && (texdata & 0xffff) == 0x119) return;
|
||||
//if (machine().input().code_pressed(KEYCODE_L) && (texdata & 0x100)) return;
|
||||
|
||||
/*
|
||||
0 38800000
|
||||
@ -1092,7 +1094,7 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
|
||||
vert[i].y = x * m_state->zeus_matrix[1][0] + y * m_state->zeus_matrix[1][1] + z * m_state->zeus_matrix[1][2] + m_state->zeus_point[1];
|
||||
vert[i].p[0] = x * m_state->zeus_matrix[2][0] + y * m_state->zeus_matrix[2][1] + z * m_state->zeus_matrix[2][2] + m_state->zeus_point[2];
|
||||
vert[i].p[0] += m_state->zbase;
|
||||
vert[i].p[2] += texoffs >> 16;
|
||||
vert[i].p[2] += texdata >> 16;
|
||||
vert[i].p[1] *= 256.0f;
|
||||
vert[i].p[2] *= 256.0f;
|
||||
|
||||
@ -1138,17 +1140,21 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
|
||||
zeus2_poly_extra_data& extra = this->object_data_alloc();
|
||||
switch (texmode)
|
||||
{
|
||||
//case 0x18e: // atlantis
|
||||
// extra.texwidth = 512;
|
||||
// break;
|
||||
|
||||
case 0x01d: /* crusnexo: RHS of score bar */
|
||||
case 0x05d: /* crusnexo: background, road */
|
||||
case 0x0dd: /* crusnexo: license plate letters */
|
||||
case 0x11d: /* crusnexo: LHS of score bar */
|
||||
case 0x14d: // atlantis
|
||||
case 0x18e: // atlantis
|
||||
case 0x15d: /* crusnexo */
|
||||
case 0x85d: /* crusnexo */
|
||||
case 0x95d: /* crusnexo */
|
||||
case 0xc1d: /* crusnexo */
|
||||
case 0xc5d: /* crusnexo */
|
||||
case 0x18e: // atlantis
|
||||
extra.texwidth = 256;
|
||||
break;
|
||||
|
||||
@ -1176,10 +1182,10 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
|
||||
default:
|
||||
{
|
||||
static UINT8 hits[0x10000];
|
||||
if (!hits[(texoffs & 0xffff)])
|
||||
if (!hits[(texdata & 0xffff)])
|
||||
{
|
||||
hits[(texoffs & 0xffff)] = 1;
|
||||
printf("format = %04X\n", (texoffs & 0xffff));
|
||||
hits[(texdata & 0xffff)] = 1;
|
||||
printf("texMode = %04X\n", (texdata & 0xffff));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ public:
|
||||
|
||||
void render_poly_8bit(INT32 scanline, const extent_t& extent, const zeus2_poly_extra_data& object, int threadid);
|
||||
|
||||
void zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, int logit);
|
||||
void zeus2_draw_quad(const UINT32 *databuffer, UINT32 texdata, int logit);
|
||||
|
||||
private:
|
||||
zeus2_device* m_state;
|
||||
|
@ -1629,6 +1629,17 @@ int lua_engine::lua_ui_input::l_ui_input_find_mouse(lua_State *L)
|
||||
return 4;
|
||||
}
|
||||
|
||||
int lua_engine::lua_render_target::l_render_view_bounds(lua_State *L)
|
||||
{
|
||||
render_target *target = luabridge::Stack<render_target *>::get(L, 1);
|
||||
const render_bounds &bounds = target->current_view()->bounds();
|
||||
lua_pushnumber(L, bounds.x0);
|
||||
lua_pushnumber(L, bounds.x1);
|
||||
lua_pushnumber(L, bounds.y0);
|
||||
lua_pushnumber(L, bounds.y1);
|
||||
return 4;
|
||||
}
|
||||
|
||||
void *lua_engine::checkparam(lua_State *L, int idx, const char *tname)
|
||||
{
|
||||
const char *name;
|
||||
@ -2391,7 +2402,10 @@ void lua_engine::initialize()
|
||||
.deriveClass <ui_input_manager, lua_ui_input> ("input")
|
||||
.addFunction ("pressed", &ui_input_manager::pressed)
|
||||
.endClass()
|
||||
.beginClass <render_target> ("target")
|
||||
.beginClass <lua_render_target> ("lua_target")
|
||||
.addCFunction ("view_bounds", &lua_render_target::l_render_view_bounds)
|
||||
.endClass()
|
||||
.deriveClass <render_target, lua_render_target> ("target")
|
||||
.addFunction ("width", &render_target::width)
|
||||
.addFunction ("height", &render_target::height)
|
||||
.addFunction ("pixel_aspect", &render_target::pixel_aspect)
|
||||
|
@ -213,6 +213,10 @@ private:
|
||||
int l_ui_input_find_mouse(lua_State *L);
|
||||
};
|
||||
|
||||
struct lua_render_target {
|
||||
int l_render_view_bounds(lua_State *L);
|
||||
};
|
||||
|
||||
struct lua_emu_file {
|
||||
lua_emu_file(const char *searchpath, UINT32 openflags) :
|
||||
path(searchpath),
|
||||
|
@ -61,7 +61,7 @@ WRITE8_MEMBER(comquest_state::comquest_write)
|
||||
|
||||
static ADDRESS_MAP_START( comquest_mem , AS_PROGRAM, 8, comquest_state )
|
||||
// { 0x0000, 0x7fff, SMH_BANK(1) },
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x0000, 0xfff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( comquest )
|
||||
|
@ -681,9 +681,6 @@ static ADDRESS_MAP_START( coolpool_dsp_io_map, AS_IO, 16, coolpool_state )
|
||||
AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r)
|
||||
AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x07, 0x07) AM_READ_PORT("IN1")
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(dsp_bio_line_r)
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_line_r)
|
||||
// AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_HOLDA_signal_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -837,6 +834,9 @@ static MACHINE_CONFIG_START( coolpool, coolpool_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32026,XTAL_40MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(coolpool_dsp_pgm_map)
|
||||
MCFG_CPU_IO_MAP(coolpool_dsp_io_map)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(coolpool_state, dsp_bio_line_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(coolpool_state, dsp_hold_line_r))
|
||||
// MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(coolpool_state, dsp_HOLDA_signal_w))
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,coolpool)
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
@ -1077,7 +1077,7 @@ ROM_START( hxhdci2k )
|
||||
ROM_SYSTEM_BIOS( 0, "FW10005", "HDCI REV 1.0 RHDXSCI 1.00.05" ) /* 19 AUG 2008 */
|
||||
ROM_LOAD16_WORD_SWAP( "28f320j3d.bin", 0x000000, 0x400000, BAD_DUMP CRC(63d98942) SHA1(c5b8d701677a3edc25f203854f44953b19c9158d) )
|
||||
|
||||
ROM_REGION16_BE( 0x2000, "eeprom", 0 )
|
||||
ROM_REGION( 0x2000, "eeprom", 0 )
|
||||
ROM_LOAD( "24lc64.bin", 0x0000, 0x2000, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
|
@ -569,7 +569,7 @@ ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( ddragonba_sub_portmap, AS_IO, 8, ddragon_state )
|
||||
AM_RANGE(0x0000, 0xffff) AM_WRITE(ddragonba_port_w)
|
||||
AM_RANGE(0x0000, 0x01ff) AM_WRITE(ddragonba_port_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
@ -1088,7 +1088,7 @@ ROM_START( hedpanic ) /* Story line & game instructions in English */
|
||||
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
|
||||
ROM_LOAD( "esd4.su10", 0x000000, 0x020000, CRC(3c11c590) SHA1(cb33845c3dc0501fff8055c2d66f412881089df1) ) /* AT27010 mask rom */
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 )
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 )
|
||||
ROM_LOAD( "hedpanic.nv", 0x0000, 0x0080, CRC(e91f4038) SHA1(f492de71170900f87912a272ab4f4a3a37ba31fe) )
|
||||
ROM_END
|
||||
|
||||
@ -1115,7 +1115,7 @@ ROM_START( hedpanicf ) /* Story line in Japanese, game instructions in English *
|
||||
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
|
||||
ROM_LOAD( "esd4.su10", 0x000000, 0x020000, CRC(3c11c590) SHA1(cb33845c3dc0501fff8055c2d66f412881089df1) ) /* AT27010 mask rom */
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 )
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 )
|
||||
ROM_LOAD( "hedpanic.nv", 0x0000, 0x0080, CRC(e91f4038) SHA1(f492de71170900f87912a272ab4f4a3a37ba31fe) )
|
||||
ROM_END
|
||||
|
||||
@ -1142,7 +1142,7 @@ ROM_START( hedpanico ) /* Story line & game instructions in English, copyright y
|
||||
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
|
||||
ROM_LOAD( "esd4.rom", 0x000000, 0x020000, CRC(d7ca6806) SHA1(8ad668bfb5b7561cc0f3e36dfc3c936b136a4274) ) /* SU10 */
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 )
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 )
|
||||
ROM_LOAD( "hedpanic.nv", 0x0000, 0x0080, CRC(e91f4038) SHA1(f492de71170900f87912a272ab4f4a3a37ba31fe) )
|
||||
ROM_END
|
||||
|
||||
|
@ -516,7 +516,7 @@ ROM_START(fireball)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD("euroball-89-07-13-c026.bin", 0x0000, 0x2000, CRC(cab3fc1c) SHA1(bcf0d17e26f2d9f5e20bda258728c989ea138702))
|
||||
|
||||
ROM_REGION( 0x20, "eeprom", 0 ) // default eeprom must have some specific value at 0x03 at least
|
||||
ROM_REGION16_BE( 0x20, "eeprom", 0 ) // default eeprom must have some specific value at 0x03 at least
|
||||
ROM_LOAD( "fireball.nv", 0x0000, 0x020, CRC(1d0f5f0f) SHA1(8e68fcd8782f39ed3b1df6162db9be83cb3335e4) ) //default setting
|
||||
ROM_END
|
||||
|
||||
|
@ -702,7 +702,7 @@ ROM_START( fortecar )
|
||||
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
|
||||
ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, BAD_DUMP CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
|
||||
|
||||
ROM_REGION( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
|
||||
ROM_REGION16_BE( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
|
||||
ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, BAD_DUMP CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
|
||||
|
||||
ROM_REGION( 0x200, "proms", 0 )
|
||||
@ -721,7 +721,7 @@ ROM_START( fortecrd )
|
||||
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
|
||||
ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
|
||||
|
||||
ROM_REGION( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
|
||||
ROM_REGION16_BE( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
|
||||
ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
|
||||
|
||||
ROM_REGION( 0x0200, "proms", 0 )
|
||||
|
@ -1447,7 +1447,7 @@ ROM_START(sscope2)
|
||||
ROM_REGION(0x8, "lan_serial_id", 0) /* LAN Board DS2401 */
|
||||
ROM_LOAD( "ds2401.8b", 0x000000, 0x000008, BAD_DUMP CRC(bae36d0b) SHA1(4dd5915888d5718356b40bbe897f2470e410176a) ) // hand built
|
||||
|
||||
ROM_REGION(0x80, "lan_eeprom", 0) /* LAN Board AT93C46 */
|
||||
ROM_REGION16_BE(0x80, "lan_eeprom", 0) /* LAN Board AT93C46 */
|
||||
ROM_LOAD( "at93c46.16g", 0x000000, 0x000080, BAD_DUMP CRC(cc63c213) SHA1(fb20e56fb73a887dc7b6db49efd1f8a18b959152) ) // hand built
|
||||
ROM_END
|
||||
|
||||
|
@ -59,7 +59,7 @@ private:
|
||||
|
||||
static ADDRESS_MAP_START(ibm3153_mem, AS_PROGRAM, 8, ibm3153_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000,0x3ffff) AM_ROM AM_REGION("user1", 0)
|
||||
AM_RANGE(0x00000,0x0ffff) AM_ROM AM_REGION("user1", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(ibm3153_io, AS_IO, 8, ibm3153_state)
|
||||
|
@ -468,31 +468,17 @@ static ADDRESS_MAP_START( indigo_map, AS_PROGRAM, 32, indigo_state )
|
||||
AM_RANGE( 0x18000000, 0x187fffff ) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc_r, hpc_w )
|
||||
AM_RANGE( 0x1fbd9000, 0x1fbd903f ) AM_READWRITE(int_r, int_w )
|
||||
AM_RANGE( 0x80000000, 0x801fffff ) AM_RAM AM_SHARE("share10")
|
||||
AM_RANGE( 0x88000000, 0x88ffffff ) AM_RAM AM_SHARE("share5")
|
||||
AM_RANGE( 0xa0000000, 0xa01fffff ) AM_RAM AM_SHARE("share10")
|
||||
AM_RANGE( 0xa8000000, 0xa8ffffff ) AM_RAM AM_SHARE("share5")
|
||||
AM_RANGE( 0xa9000000, 0xa97fffff ) AM_RAM AM_SHARE("share6")
|
||||
AM_RANGE( 0xaa000000, 0xaa7fffff ) AM_RAM AM_SHARE("share7")
|
||||
AM_RANGE( 0xac000000, 0xac7fffff ) AM_RAM AM_SHARE("share8")
|
||||
AM_RANGE( 0xb0000000, 0xb07fffff ) AM_RAM AM_SHARE("share9")
|
||||
AM_RANGE( 0xb8000000, 0xb87fffff ) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE( 0xbfb80000, 0xbfb8ffff ) AM_READWRITE(hpc_r, hpc_w )
|
||||
AM_RANGE( 0xbfbd9000, 0xbfbd903f ) AM_READWRITE(int_r, int_w )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( indigo3k_map, AS_PROGRAM, 32, indigo_state )
|
||||
AM_IMPORT_FROM( indigo_map )
|
||||
AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
|
||||
AM_RANGE( 0xbfc00000, 0xbfc3ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( indigo4k_map, AS_PROGRAM, 32, indigo_state )
|
||||
AM_IMPORT_FROM( indigo_map )
|
||||
AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
|
||||
AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
|
||||
AM_RANGE( 0xbfa00000, 0xbfa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
|
||||
AM_RANGE( 0xbfc00000, 0xbfc7ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
WRITE_LINE_MEMBER(indigo_state::scsi_irq)
|
||||
|
@ -1262,7 +1262,7 @@ ROM_START( jclub2o )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) // z80 core (used for sound?)
|
||||
ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) )
|
||||
|
||||
ROM_REGION( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
|
||||
ROM_REGION16_BE( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
|
||||
ROM_LOAD( "eeprom-jclub2o.bin", 0x0000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) ) //jclub2ob ones
|
||||
ROM_END
|
||||
|
||||
@ -1283,7 +1283,7 @@ ROM_START( jclub2ob )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) // z80 core (used for sound?)
|
||||
ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) )
|
||||
|
||||
ROM_REGION( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
|
||||
ROM_REGION16_BE( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
|
||||
ROM_LOAD( "eeprom-jclub2o.bin", 0x0000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) )
|
||||
ROM_END
|
||||
|
||||
|
@ -566,7 +566,7 @@ READ8_MEMBER(jubilee_state::mux_port_r)
|
||||
|
||||
static ADDRESS_MAP_START( jubileep_cru_map, AS_IO, 8, jubilee_state )
|
||||
AM_RANGE(0x00c8, 0x00c8) AM_READ(mux_port_r) /* multiplexed input port */
|
||||
AM_RANGE(0x0000, 0x0fff) AM_WRITE(unk_w)
|
||||
AM_RANGE(0x0000, 0x07ff) AM_WRITE(unk_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* I/O byte R/W
|
||||
|
@ -2002,7 +2002,7 @@ ROM_START( gokuparo )
|
||||
ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
|
||||
ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "gokuparo.nv", 0x0000, 0x080, CRC(15c0f2d9) SHA1(57c7462e3b1e15652ec5d682a1be3786926ddecd) )
|
||||
ROM_END
|
||||
|
||||
@ -2035,7 +2035,7 @@ ROM_START( fantjour )
|
||||
ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
|
||||
ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "fantjour.nv", 0x0000, 0x080, CRC(35b7d8e1) SHA1(5f0e3799ff9c63af3e55b040cc52b2a9e7a76168) )
|
||||
ROM_END
|
||||
|
||||
@ -2068,7 +2068,7 @@ ROM_START( fantjoura )
|
||||
ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
|
||||
ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "fantjoura.nv", 0x0000, 0x080, CRC(d13b1ec1) SHA1(0f4aedd0aa9682b0b68b9f7745946a3bc1e76714) )
|
||||
ROM_END
|
||||
|
||||
@ -2102,7 +2102,7 @@ ROM_START( salmndr2 )
|
||||
ROM_LOAD( "521-a12.9g", 0x000000, 2*1024*1024, CRC(66614d3b) SHA1(e1e5ebe546bced6ab74b0af500acf0f3308902a4) )
|
||||
ROM_LOAD( "521-a13.7g", 0x200000, 1*1024*1024, CRC(c3322475) SHA1(1774524ff031e0c4a7f3432810e968d37f9c6331) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "salmndr2.nv", 0x0000, 0x080, CRC(60cdea03) SHA1(6aa597d391b5d7db67e599ec54d98600983966fc) )
|
||||
ROM_END
|
||||
|
||||
@ -2136,7 +2136,7 @@ ROM_START( salmndr2a )
|
||||
ROM_LOAD( "521-a12.9g", 0x000000, 2*1024*1024, CRC(66614d3b) SHA1(e1e5ebe546bced6ab74b0af500acf0f3308902a4) )
|
||||
ROM_LOAD( "521-a13.7g", 0x200000, 1*1024*1024, CRC(c3322475) SHA1(1774524ff031e0c4a7f3432810e968d37f9c6331) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "salmndr2a.nv", 0x0000, 0x080, CRC(3a98a8f9) SHA1(08c2d164620a4d8ad902d502acea8ad621931198) )
|
||||
ROM_END
|
||||
|
||||
@ -2169,7 +2169,7 @@ ROM_START( tbyahhoo )
|
||||
ROM_LOAD( "424a17.9g", 0x000000, 2*1024*1024, CRC(e9dd9692) SHA1(c289019c8d1dd71b3cec26479c39b649de804707) )
|
||||
ROM_LOAD( "424a18.7g", 0x200000, 2*1024*1024, CRC(0f0d9f3a) SHA1(57f6b113b80f06964b7e672ad517c1654c5569c5) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "tbyahhoo.nv", 0x0000, 0x080, CRC(1e6fa2f8) SHA1(fceb6617a4e02babfc1678bae9f6a131c1d759f5) )
|
||||
ROM_END
|
||||
|
||||
@ -2434,7 +2434,7 @@ ROM_START( tokkae )
|
||||
ROM_LOAD( "615a22.9g", 0x000000, 2*1024*1024, CRC(ea7e47dd) SHA1(5bf5bad9427b083757c400eaf58c63a6267c1caf) )
|
||||
ROM_LOAD( "615a23.7g", 0x200000, 2*1024*1024, CRC(22d71f36) SHA1(3f24bb4cd8e1d693b42219e05960ad0c756b08cb) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "tokkae.nv", 0x0000, 0x080, CRC(5a6f8da6) SHA1(f68c67c98e99669904e23d5eac7e13a9c57bc394) )
|
||||
ROM_END
|
||||
|
||||
@ -2469,7 +2469,7 @@ ROM_START( tkmmpzdm )
|
||||
ROM_LOAD( "515a13.9g", 0x000000, 2*1024*1024, CRC(4b066b00) SHA1(874dd49847b10e6d9c39decb81557534baa36d79) )
|
||||
ROM_LOAD( "515a14.7g", 0x200000, 2*1024*1024, CRC(128cc944) SHA1(b0cd2ec1b9a2ac936d57b6d6c2a70f9c13dc97a5) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "tkmmpzdm.nv", 0x0000, 0x080, CRC(850ab8c4) SHA1(fea5ceb3f2cea61fb19bdb1b8f1496d1c06bfff1) )
|
||||
ROM_END
|
||||
|
||||
@ -2592,7 +2592,7 @@ ROM_START( crzcross )
|
||||
ROM_LOAD( "315a17.9g", 0x000000, 2*1024*1024, CRC(ea763d61) SHA1(2a7dcb2a2a23c9fea62fb82ffc18949bf15b9f6f) )
|
||||
ROM_LOAD( "315a18.7g", 0x200000, 2*1024*1024, CRC(6e416cee) SHA1(145a766ad2fa2b692692053dd36e0caf51d67a56) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
|
||||
ROM_LOAD( "crzcross.nv", 0x0000, 0x080, CRC(446f178c) SHA1(84b02192c26459c1b798f07b96768e1013b57666) )
|
||||
ROM_END
|
||||
|
||||
@ -2625,7 +2625,7 @@ ROM_START( puzldama )
|
||||
ROM_LOAD( "315a17.9g", 0x000000, 2*1024*1024, CRC(ea763d61) SHA1(2a7dcb2a2a23c9fea62fb82ffc18949bf15b9f6f) )
|
||||
ROM_LOAD( "315a18.7g", 0x200000, 2*1024*1024, CRC(6e416cee) SHA1(145a766ad2fa2b692692053dd36e0caf51d67a56) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
|
||||
ROM_LOAD( "puzldama.nv", 0x0000, 0x080, CRC(bda98b84) SHA1(f4b03130bdc2a5bc6f0fc9ca21603109d82703b4) )
|
||||
ROM_END
|
||||
|
||||
@ -2665,7 +2665,7 @@ ROM_START( dragoonj )
|
||||
ROM_REGION( 0x200000, "shared", 0 )
|
||||
ROM_LOAD( "417a17.9g", 0x000000, 2*1024*1024, CRC(88d47dfd) SHA1(b5d6dd7ee9ac0c427dc3e714a97945c954260913) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "dragoonj.nv", 0x0000, 0x080, CRC(cbe16082) SHA1(da48893f3584ae2e034c73d4338b220107a884da) )
|
||||
ROM_END
|
||||
|
||||
@ -2705,7 +2705,7 @@ ROM_START( dragoona )
|
||||
ROM_REGION( 0x200000, "shared", 0 )
|
||||
ROM_LOAD( "417a17.9g", 0x000000, 2*1024*1024, CRC(88d47dfd) SHA1(b5d6dd7ee9ac0c427dc3e714a97945c954260913) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "dragoona.nv", 0x0000, 0x080, CRC(7980ad2b) SHA1(dccaab02d23edbd81ae13441fbac0dbd7112c258) )
|
||||
ROM_END
|
||||
|
||||
@ -2764,7 +2764,7 @@ ROM_START( soccerss )
|
||||
ROM_REGION( 0x400000, "shared", 0 )
|
||||
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "soccerss.nv", 0x0000, 0x080, CRC(f222dae4) SHA1(fede48a4e1fe91cf2b17ff3f3996bca4816fc283) )
|
||||
ROM_END
|
||||
|
||||
@ -2823,7 +2823,7 @@ ROM_START( soccerssu )
|
||||
ROM_REGION( 0x400000, "shared", 0 )
|
||||
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "soccerssu.nv", 0x0000, 0x080, CRC(812f6878) SHA1(fc4975211720a7eb413bceda8109231cb1c00834) )
|
||||
ROM_END
|
||||
|
||||
@ -2870,7 +2870,7 @@ ROM_START( soccerssj )
|
||||
ROM_REGION( 0x400000, "shared", 0 )
|
||||
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "soccerssj.nv", 0x0000, 0x080, CRC(7440255e) SHA1(af379b5b1f765f9050f18fbd41c5031c5ad4918b) )
|
||||
ROM_END
|
||||
|
||||
@ -2917,7 +2917,7 @@ ROM_START( soccerssja )
|
||||
ROM_REGION( 0x400000, "shared", 0 )
|
||||
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "soccerssja.nv", 0x0000, 0x080, CRC(60dba700) SHA1(087b086b29748727b41fdd4c154ff9b4bef42959) )
|
||||
ROM_END
|
||||
|
||||
@ -2964,7 +2964,7 @@ ROM_START( soccerssa )
|
||||
ROM_REGION( 0x400000, "shared", 0 )
|
||||
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "soccerssa.nv", 0x0000, 0x080, CRC(e3a3f3d5) SHA1(374cf5bbcc459c56ebbba5068406f6d767bcb608) )
|
||||
ROM_END
|
||||
|
||||
@ -3320,7 +3320,7 @@ ROM_START( le2 )
|
||||
ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
|
||||
ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
|
||||
ROM_LOAD( "le2.nv", 0x0000, 0x080, CRC(fec3bc2e) SHA1(64040364d7db12f54e5c11f28a28e030bcf9a0f7) )
|
||||
ROM_END
|
||||
|
||||
@ -3358,7 +3358,7 @@ ROM_START( le2u )
|
||||
ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
|
||||
ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
|
||||
ROM_LOAD( "le2u.nv", 0x0000, 0x080, CRC(d46b3878) SHA1(81bf4331547ce977eaa185f7281625fb695f6deb) )
|
||||
ROM_END
|
||||
|
||||
@ -3397,7 +3397,7 @@ ROM_START( le2j )
|
||||
ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
|
||||
ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
|
||||
ROM_LOAD( "le2j.nv", 0x0000, 0x080, CRC(f6790425) SHA1(f233f3c09c4cdbd1c6e5204fc6554a4826b44c59) )
|
||||
ROM_END
|
||||
|
||||
@ -3448,7 +3448,7 @@ ROM_START( racinfrc )
|
||||
ROM_LOAD( "250a18.12y", 0x200000, 2*1024*1024, CRC(8014a2eb) SHA1(d82f0a7d559340ae05a78ecc8bb69bb35b9c0658) )
|
||||
|
||||
// note, it seems impossible to calibrate the controls (again!), this has nothing to do with the default eeprom!
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "racinfrc.nv", 0x0000, 0x080, CRC(dc88c693) SHA1(a7967f390db043570803c79edf984a3e6bdbd172) )
|
||||
ROM_END
|
||||
|
||||
@ -3500,7 +3500,7 @@ ROM_START( racinfrcu )
|
||||
ROM_LOAD( "250a18.12y", 0x200000, 2*1024*1024, CRC(8014a2eb) SHA1(d82f0a7d559340ae05a78ecc8bb69bb35b9c0658) )
|
||||
|
||||
// note, it seems impossible to calibrate the controls (again!), this has nothing to do with the default eeprom!
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "racinfrcu.nv", 0x0000, 0x080, CRC(369e1a84) SHA1(bfed0145d89550b1a1661f3ccc612505053063f8) )
|
||||
ROM_END
|
||||
|
||||
@ -3586,7 +3586,7 @@ ROM_START( opengolf )
|
||||
ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
|
||||
ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "opengolf.nv", 0x0000, 0x080, CRC(d49bf7c3) SHA1(294c772a2f562c01e7c4d15068ba4e80e9522f9f) )
|
||||
ROM_END
|
||||
|
||||
@ -3641,7 +3641,7 @@ ROM_START( opengolf2 )
|
||||
ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
|
||||
ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "opengolf2.nv", 0x0000, 0x080, CRC(c09fc0e6) SHA1(32807752344763613440bee46da24d605e62eace) )
|
||||
ROM_END
|
||||
|
||||
@ -3695,7 +3695,7 @@ ROM_START( ggreats2 )
|
||||
ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
|
||||
ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
|
||||
ROM_LOAD( "ggreats2.nv", 0x0000, 0x080, CRC(4db10b5c) SHA1(29e3a59e4101349ace33d49b5fe59f0c785979b3) )
|
||||
ROM_END
|
||||
|
||||
|
@ -341,7 +341,7 @@ ROM_START( enchlamp )
|
||||
ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "enl5r211.fmu.bin", 0x0000, 0x1800000, CRC(592c3c7f) SHA1(119b3c6223d656981c399c399d7edccfdbb50dc7) )
|
||||
|
||||
ROM_REGION32_BE( 0x100, "eeprom", 0 )
|
||||
ROM_REGION16_BE( 0x100, "eeprom", 0 )
|
||||
ROM_LOAD( "93c56.u98", 0x00, 0x100, CRC(b2521a6a) SHA1(f44711545bee7e9c772a3dc23b79f0ea8059ec50) ) // empty eeprom with Konami header
|
||||
ROM_END
|
||||
|
||||
@ -471,7 +471,7 @@ ROM_START( konzero )
|
||||
|
||||
ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
|
||||
|
||||
ROM_REGION32_BE( 0x100, "eeprom", 0 )
|
||||
ROM_REGION16_BE( 0x100, "eeprom", 0 )
|
||||
ROM_LOAD( "93c56.u98", 0x00, 0x100, CRC(b2521a6a) SHA1(f44711545bee7e9c772a3dc23b79f0ea8059ec50) ) // empty eeprom with Konami header
|
||||
ROM_END
|
||||
|
||||
|
@ -780,13 +780,6 @@ static ADDRESS_MAP_START( dsp_map_data, AS_DATA, 16, mlanding_state )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("dot_ram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( dsp_map_io, AS_IO, 16, mlanding_state )
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Audio CPU memory handlers
|
||||
@ -945,7 +938,8 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32025, 32000000) // ?
|
||||
MCFG_CPU_PROGRAM_MAP(dsp_map_prog)
|
||||
MCFG_CPU_DATA_MAP(dsp_map_data)
|
||||
MCFG_CPU_IO_MAP(dsp_map_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(mlanding_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
|
||||
MCFG_DEVICE_ADD("ctc", Z80CTC, 4000000)
|
||||
MCFG_Z80CTC_ZC0_CB(WRITELINE(mlanding_state, z80ctc_to0))
|
||||
|
@ -993,9 +993,6 @@ static ADDRESS_MAP_START( master_dsp_io, AS_IO, 16, namcos21_state )
|
||||
AM_RANGE(0x0b,0x0b) AM_READWRITE(dsp_portb_r,dsp_portb_w)
|
||||
AM_RANGE(0x0c,0x0c) AM_WRITE(dsp_portc_w)
|
||||
AM_RANGE(0x0f,0x0f) AM_READ(dsp_portf_r)
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_w )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/************************************************************************************/
|
||||
@ -1111,9 +1108,6 @@ static ADDRESS_MAP_START( slave_dsp_io, AS_IO, 16, namcos21_state )
|
||||
AM_RANGE(0x02,0x02) AM_READ(slave_port2_r)
|
||||
AM_RANGE(0x03,0x03) AM_READWRITE(slave_port3_r,slave_port3_w)
|
||||
AM_RANGE(0x0f,0x0f) AM_READ(slave_portf_r)
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(slave_XF_output_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/************************************************************************************/
|
||||
@ -1424,21 +1418,8 @@ static ADDRESS_MAP_START( winrun_dsp_io, AS_IO, 16, namcos21_state )
|
||||
AM_RANGE(0x0a,0x0a) AM_WRITE(winrun_dsp_render_w)
|
||||
AM_RANGE(0x0b,0x0b) AM_WRITENOP
|
||||
AM_RANGE(0x0c,0x0c) AM_WRITE(winrun_dsp_complete_w)
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(winrun_poly_reset_r )
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITENOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
READ16_MEMBER(namcos21_state::winrun_gpucomram_r)
|
||||
{
|
||||
return m_winrun_gpucomram[offset];
|
||||
}
|
||||
WRITE16_MEMBER(namcos21_state::winrun_gpucomram_w)
|
||||
{
|
||||
COMBINE_DATA( &m_winrun_gpucomram[offset] );
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(namcos21_state::winrun_dspbios_w)
|
||||
{
|
||||
COMBINE_DATA( &m_winrun_dspbios[offset] );
|
||||
@ -1491,7 +1472,7 @@ static ADDRESS_MAP_START( am_master_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
|
||||
AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
|
||||
AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
|
||||
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
|
||||
@ -1503,7 +1484,7 @@ static ADDRESS_MAP_START( am_slave_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x13ffff) AM_RAM
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
|
||||
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
|
||||
@ -1516,7 +1497,7 @@ static ADDRESS_MAP_START( am_gpu_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */
|
||||
AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos21_68k_gpu_C148_r,namcos21_68k_gpu_C148_w)
|
||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("winrun_comram")
|
||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x410000, 0x41ffff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
|
||||
AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gdata", 0)
|
||||
@ -1667,11 +1648,17 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(master_dsp_data)
|
||||
MCFG_CPU_IO_MAP(master_dsp_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos21_state, dsp_xf_w))
|
||||
|
||||
MCFG_CPU_ADD("dspslave", TMS32025,24000000*4) /* 24 MHz?; overclocked */
|
||||
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(slave_dsp_data)
|
||||
MCFG_CPU_IO_MAP(slave_dsp_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos21_state, slave_XF_output_w))
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(12000))
|
||||
|
||||
@ -1729,6 +1716,10 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(winrun_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(winrun_dsp_data)
|
||||
MCFG_CPU_IO_MAP(winrun_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos21_state, winrun_poly_reset_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(NOOP)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
||||
|
||||
@ -1786,6 +1777,10 @@ static MACHINE_CONFIG_START( winrun, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(winrun_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(winrun_dsp_data)
|
||||
MCFG_CPU_IO_MAP(winrun_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos21_state, winrun_poly_reset_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(NOOP)
|
||||
|
||||
MCFG_CPU_ADD("gpu", M68000,12288000) /* graphics coprocessor */
|
||||
MCFG_CPU_PROGRAM_MAP(am_gpu_winrun)
|
||||
|
@ -162,7 +162,7 @@
|
||||
*the video board as these are known to run hot and commonly fail, especially now the system is many years old.
|
||||
*
|
||||
*CPU PCB - There are four known revisions of this PCB. Three of them have an extra connector for an
|
||||
* auxillary PCB. One of the others doesn't have that connector but is are otherwise identical.
|
||||
* auxiliary PCB. One of the others doesn't have that connector but is are otherwise identical.
|
||||
* All PCBs can be swapped to any game and it will work. However, ALL required IC's must be swapped.
|
||||
* This includes Program ROM PCB, socketed Keycus IC, socketed DATA ROM and socketed WAVE ROM(s).
|
||||
* On most games the EEPROM will re-init itself on bootup. On the others, the EEPROM can re-init itself
|
||||
@ -242,7 +242,7 @@
|
||||
*Notes:
|
||||
* J6 : Custom Namco connector for plug-in program ROM PCB
|
||||
* J11 : Custom Namco connector for optional plug-in WAVE ROM PCB (holds some SOP44 MASKROMs)
|
||||
* JC410 : Custom Namco connector for Optional plug-in Auxillary PCB (e.g. Gun Control PCB used in Time Crisis
|
||||
* JC410 : Custom Namco connector for Optional plug-in Auxiliary PCB (e.g. Gun Control PCB used in Time Crisis
|
||||
* etc)
|
||||
* The connector is populated only on the 2nd revision CPU (B) PCB 8646962600 (8646972600)
|
||||
* and 3rd Revision CPU (B) PCB 8646962600 (8646972601)
|
||||
@ -963,7 +963,7 @@
|
||||
* C407 : Namco custom C407 (QFP64) NOTE! On Revision A & B, this position is populated by an
|
||||
* Altera EPM7064 PLCC84 FPGA labelled 'SS22V1B'
|
||||
* The Altera chip runs very hot and fails quite often.
|
||||
* Even if a heaksink is added to the chip it still fails.
|
||||
* Even if a heatsink is added to the chip it still fails.
|
||||
* The failure of this chip is the primary cause of
|
||||
* video faults on Namco Super System 22 PCBs.
|
||||
* (Second reason for video faults is generally attributed
|
||||
@ -2562,11 +2562,6 @@ static ADDRESS_MAP_START( master_dsp_io, AS_IO, 16, namcos22_state )
|
||||
AM_RANGE(0xd, 0xd) AM_WRITE(namcos22_dspram16_bank_w)
|
||||
AM_RANGE(0xe, 0xe) AM_WRITE(dsp_led_w)
|
||||
AM_RANGE(0xf, 0xf) AM_READ(dsp_upload_status_r) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_hold_ack_w)
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_output_w)
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(pdp_status_r)
|
||||
AM_RANGE(TMS32025_DR, TMS32025_DR) AM_READ(master_serial_io_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -2651,12 +2646,6 @@ static ADDRESS_MAP_START( slave_dsp_io, AS_IO, 16, namcos22_state )
|
||||
AM_RANGE(0xb, 0xb) AM_READWRITE(dsp_slave_portb_r, dsp_slave_portb_w)
|
||||
|
||||
AM_RANGE(0xc, 0xc) AM_WRITE(dsp_slave_portc_w)
|
||||
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_hold_ack_w)
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_output_w)
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(dsp_bioz_r)
|
||||
AM_RANGE(TMS32025_DX, TMS32025_DX) AM_WRITE(slave_serial_io_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -3751,12 +3740,22 @@ static MACHINE_CONFIG_START( namcos22, namcos22_state )
|
||||
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(master_dsp_data)
|
||||
MCFG_CPU_IO_MAP(master_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, pdp_status_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DR_IN_CB(READ16(namcos22_state, master_serial_io_r))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("master_st", namcos22_state, dsp_master_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("slave", TMS32025,SS22_MASTER_CLOCK) /* ? */
|
||||
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(slave_dsp_data)
|
||||
MCFG_CPU_IO_MAP(slave_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, dsp_bioz_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DX_OUT_CB(WRITE16(namcos22_state, slave_serial_io_w))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_st", namcos22_state, dsp_slave_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("mcu", NAMCO_C74, SS22_MASTER_CLOCK/3) // C74 on the CPU board has no periodic interrupts, it runs entirely off Timer A0
|
||||
@ -3801,12 +3800,22 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
|
||||
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(master_dsp_data)
|
||||
MCFG_CPU_IO_MAP(master_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, pdp_status_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DR_IN_CB(READ16(namcos22_state, master_serial_io_r))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("master_st", namcos22_state, dsp_master_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("slave", TMS32025,SS22_MASTER_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(slave_dsp_data)
|
||||
MCFG_CPU_IO_MAP(slave_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, dsp_bioz_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DX_OUT_CB(WRITE16(namcos22_state, slave_serial_io_w))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_st", namcos22_state, dsp_slave_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("mcu", M37710S4, SS22_MASTER_CLOCK/3)
|
||||
|
@ -170,7 +170,7 @@ static ADDRESS_MAP_START( pandoras_sound_map, AS_PROGRAM, 8, pandoras_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pandoras_i8039_map, AS_PROGRAM, 8, pandoras_state )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_ROM
|
||||
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pandoras_i8039_io_map, AS_IO, 8, pandoras_state )
|
||||
|
@ -67,7 +67,6 @@ UINT32 sealy_state::screen_update_sealy(screen_device &screen, bitmap_rgb32 &bit
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( sealy_map, AS_PROGRAM, 16, sealy_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x3ffff)
|
||||
AM_RANGE(0x00000, 0x3ffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -262,10 +262,9 @@ static ADDRESS_MAP_START( speglsht_mem, AS_PROGRAM, 32, speglsht_state )
|
||||
AM_RANGE(0x01b00000, 0x01b07fff) AM_RAM //cleared ... video related ?
|
||||
AM_RANGE(0x01c00000, 0x01dfffff) AM_ROM AM_REGION("user2", 0)
|
||||
AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE(shared_r, shared_w)
|
||||
AM_RANGE(0x0fc00000, 0x0fdfffff) AM_ROM AM_MIRROR(0x10000000) AM_REGION("user1", 0)
|
||||
AM_RANGE(0x1eff0000, 0x1eff001f) AM_RAM
|
||||
AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear)
|
||||
AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0)
|
||||
AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("user1", 0) // mirror for interrupts
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( speglsht )
|
||||
|
@ -377,11 +377,10 @@ static ADDRESS_MAP_START( srmp5_mem, AS_PROGRAM, 32, srmp5_state )
|
||||
AM_RANGE(0x0a180000, 0x0a180003) AM_READNOP // write 0x00000400
|
||||
AM_RANGE(0x0a180000, 0x0a18011f) AM_READWRITE(srmp5_vidregs_r, srmp5_vidregs_w)
|
||||
AM_RANGE(0x0a200000, 0x0a3fffff) AM_READWRITE(tileram_r, tileram_w)
|
||||
AM_RANGE(0x0fc00000, 0x0fdfffff) AM_MIRROR(0x10000000) AM_ROM AM_REGION("sub", 0)
|
||||
|
||||
AM_RANGE(0x1eff0000, 0x1eff001f) AM_WRITEONLY
|
||||
AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear)
|
||||
AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("sub", 0)
|
||||
AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("sub", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( st0016_mem, AS_PROGRAM, 8, srmp5_state )
|
||||
|
@ -32,8 +32,7 @@ protected:
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( sumt_map, AS_PROGRAM, 8, sumt8035_state )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_ROM
|
||||
AM_RANGE(0x2000, 0x23ff) AM_RAM//poss wrong
|
||||
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
@ -382,20 +382,13 @@
|
||||
21/11/2011 Skeleton driver.
|
||||
20/06/2016 Much less skeletony.
|
||||
|
||||
4/60 memory test notes:
|
||||
4/60 ROM notes:
|
||||
|
||||
ffe809fc: call to print "Sizing Memory" to the UART
|
||||
ffe80a04: set o0 to 0xf0000000, a valid PTE that points to absolute zero in main RAM
|
||||
ffe80a08: call to set that PTE in the page table (routine also reads back the written value and verifies that the unused bits are all 0)
|
||||
ffe80a0c: stash g0, the current memory base testing, to o2, which the CALL above uses as the virtual address to set the PTE for
|
||||
ffe80a10: set o0 to 0xf0000400, a valid PTE that points to the 4 MB mark (0x400000) in main RAM
|
||||
ffe80a14: call to set that PTE in the page table
|
||||
ffe80a18: set o2 to 0x00001000, so virtual address 0x1000 now points to physical 0x400000
|
||||
ffe80a1c: set i7 to 0x01000000, which indicates the memory size is 64MB if everything passes
|
||||
ffe80a20: store i7 at g0, which is currently 0
|
||||
ffe80a24: SRL i7 by 2, now 0x00400000, so if the next store fails on a bus error memory size is 4 MB
|
||||
ffe80a28: store the new i7 at o2, which is 0x400000
|
||||
ffe80a2c: store succeeded! load [g0] to i7, ta-da, 64 MB RAM sized
|
||||
ffe80a70: call to "Setting up RAM for monitor" that goes wrong
|
||||
ffe80210: testing memory
|
||||
ffe80274: loop that goes wobbly and fails
|
||||
ffe80dc4: switch off boot mode, MMU maps ROM to copy in RAM from here on
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
@ -429,6 +422,42 @@
|
||||
#define PM_ACCESSED (0x02000000) // accessed flag
|
||||
#define PM_MODIFIED (0x01000000) // modified flag
|
||||
|
||||
namespace
|
||||
{
|
||||
const sparc_disassembler::asi_desc_map::value_type sun4_asi_desc[] = {
|
||||
{ 0x10, { nullptr, "Flush I-Cache (Segment)" } },
|
||||
{ 0x11, { nullptr, "Flush I-Cache (Page)" } },
|
||||
{ 0x02, { nullptr, "System Space" } }, { 0x12, { nullptr, "Flush I-Cache (Context)" } },
|
||||
{ 0x03, { nullptr, "Segment Map" } }, { 0x13, { nullptr, "Flush I-Cache (User)" } },
|
||||
{ 0x04, { nullptr, "Page Map" } }, { 0x14, { nullptr, "Flush D-Cache (Segment)" } },
|
||||
{ 0x05, { nullptr, "Block Copy" } }, { 0x15, { nullptr, "Flush D-Cache (Page)" } },
|
||||
{ 0x06, { nullptr, "Region Map" } }, { 0x16, { nullptr, "Flush D-Cache (Context)" } },
|
||||
{ 0x07, { nullptr, "Flush Cache (Region)" } }, { 0x17, { nullptr, "Flush D-Cache (User)" } },
|
||||
{ 0x08, { nullptr, "User Instruction" } },
|
||||
{ 0x09, { nullptr, "Supervisor Instruction" } },
|
||||
{ 0x0a, { nullptr, "User Data" } },
|
||||
{ 0x0b, { nullptr, "Supervisor Data" } }, { 0x1b, { nullptr, "Flush I-Cache (Region)" } },
|
||||
{ 0x0c, { nullptr, "Flush Cache (Segment)" } },
|
||||
{ 0x0d, { nullptr, "Flush Cache (Page)" } },
|
||||
{ 0x0e, { nullptr, "Flush Cache (Context)" } },
|
||||
{ 0x0f, { nullptr, "Flush Cache (User)" } }, { 0x1f, { nullptr, "Flush D-Cache (Region)" } }
|
||||
};
|
||||
/* TODO: make SPARCstation-1 a different machine type so it can load its own ASI descriptions - it's a subset of Sun4
|
||||
const sparc_disassembler::asi_desc_map::value_type sun4c_asi_desc[] = {
|
||||
{ 0x02, { nullptr, "System Space" } },
|
||||
{ 0x03, { nullptr, "Segment Map" } },
|
||||
{ 0x04, { nullptr, "Page Map" } },
|
||||
{ 0x08, { nullptr, "User Instruction" } },
|
||||
{ 0x09, { nullptr, "Supervisor Instruction" } },
|
||||
{ 0x0a, { nullptr, "User Data" } },
|
||||
{ 0x0b, { nullptr, "Supervisor Data" } },
|
||||
{ 0x0c, { nullptr, "Flush Cache (Segment)" } },
|
||||
{ 0x0d, { nullptr, "Flush Cache (Page)" } },
|
||||
{ 0x0e, { nullptr, "Flush Cache (Context)" } }
|
||||
};
|
||||
*/
|
||||
}
|
||||
|
||||
class sun4_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -465,7 +494,8 @@ protected:
|
||||
required_memory_region m_rom;
|
||||
UINT32 *m_rom_ptr;
|
||||
UINT32 m_context;
|
||||
UINT32 m_system_enable;
|
||||
UINT8 m_system_enable;
|
||||
UINT32 m_buserror[4];
|
||||
|
||||
private:
|
||||
UINT32 *m_ram_ptr;
|
||||
@ -496,9 +526,10 @@ READ32_MEMBER( sun4_state::sun4_mmu_r )
|
||||
return m_context<<24;
|
||||
|
||||
case 4: // system enable reg
|
||||
return m_system_enable;
|
||||
return m_system_enable<<24;
|
||||
|
||||
case 6: // bus error register
|
||||
printf("sun4: read buserror, PC=%x (mask %08x)\n", m_maincpu->pc(), mem_mask);
|
||||
return 0;
|
||||
|
||||
case 8: // (d-)cache tags
|
||||
@ -551,7 +582,7 @@ READ32_MEMBER( sun4_state::sun4_mmu_r )
|
||||
UINT32 tmp = (m_pagemap[entry] & 0xffff) << 10;
|
||||
tmp |= (offset & 0x3ff);
|
||||
|
||||
//printf("sun4: translated vaddr %08x to phys %08x type %d, PTE %08x, PC=%x\n", offset<<2, tmp<<2, (m_pagemap[entry]>>26) & 3, m_pagemap[entry], m_maincpu->pc());
|
||||
//printf("sun4: read translated vaddr %08x to phys %08x type %d, PTE %08x, PC=%x\n", offset<<2, tmp<<2, (m_pagemap[entry]>>26) & 3, m_pagemap[entry], m_maincpu->pc());
|
||||
|
||||
switch ((m_pagemap[entry] >> 26) & 3)
|
||||
{
|
||||
@ -574,7 +605,11 @@ READ32_MEMBER( sun4_state::sun4_mmu_r )
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("sun4: INVALID PTE accessed! PC=%x\n", m_maincpu->pc());
|
||||
printf("sun4: INVALID PTE entry %d %08x accessed! vaddr=%x PC=%x\n", entry, m_pagemap[entry], offset <<2, m_maincpu->pc());
|
||||
//m_maincpu->trap(SPARC_DATA_ACCESS_EXCEPTION);
|
||||
//m_buserror[0] = 0x88; // read, invalid PTE
|
||||
//m_buserror[1] = offset<<2;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -603,11 +638,11 @@ WRITE32_MEMBER( sun4_state::sun4_mmu_w )
|
||||
{
|
||||
case 3: // context reg
|
||||
printf("%08x to context, mask %08x\n", data, mem_mask);
|
||||
m_context = (UINT8)data<<24;
|
||||
m_context = data>>24;
|
||||
return;
|
||||
|
||||
case 4: // system enable reg
|
||||
m_system_enable = (UINT8)data;
|
||||
m_system_enable = data>>24;
|
||||
return;
|
||||
|
||||
case 8: // cache tags
|
||||
@ -667,7 +702,7 @@ WRITE32_MEMBER( sun4_state::sun4_mmu_w )
|
||||
UINT32 tmp = (m_pagemap[entry] & 0xffff) << 10;
|
||||
tmp |= (offset & 0x3ff);
|
||||
|
||||
//printf("sun4: translated vaddr %08x to phys %08x type %d, PTE %08x, PC=%x\n", offset<<2, tmp<<2, (m_pagemap[entry]>>26) & 3, m_pagemap[entry], m_maincpu->pc());
|
||||
//printf("sun4: write translated vaddr %08x to phys %08x type %d, PTE %08x, PC=%x\n", offset<<2, tmp<<2, (m_pagemap[entry]>>26) & 3, m_pagemap[entry], m_maincpu->pc());
|
||||
|
||||
switch ((m_pagemap[entry] >> 26) & 3)
|
||||
{
|
||||
@ -686,7 +721,11 @@ WRITE32_MEMBER( sun4_state::sun4_mmu_w )
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("sun4: INVALID PTE accessed! PC=%x\n", m_maincpu->pc());
|
||||
printf("sun4: INVALID PTE entry %d %08x accessed! vaddr=%x PC=%x\n", entry, m_pagemap[entry], offset <<2, m_maincpu->pc());
|
||||
//m_maincpu->trap(SPARC_DATA_ACCESS_EXCEPTION);
|
||||
//m_buserror[0] = 0x8; // invalid PTE
|
||||
//m_buserror[1] = offset<<2;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -720,10 +759,9 @@ void sun4_state::machine_start()
|
||||
|
||||
READ32_MEMBER( sun4_state::ram_r )
|
||||
{
|
||||
if (offset < m_ram_size_words) return m_ram_ptr[offset];
|
||||
//printf("ram_r: @ %08x (mask %08x)\n", offset<<2, mem_mask);
|
||||
|
||||
//printf("ram_r: DAEing on access to %08x\n", offset<<2);
|
||||
m_maincpu->trap(SPARC_DATA_ACCESS_EXCEPTION);
|
||||
if (offset < m_ram_size_words) return m_ram_ptr[offset];
|
||||
|
||||
return 0xffffffff;
|
||||
}
|
||||
@ -783,14 +821,13 @@ WRITE32_MEMBER( sun4_state::ram_w )
|
||||
}
|
||||
#endif
|
||||
|
||||
//printf("ram_w: %08x to %08x (mask %08x)\n", data, offset<<2, mem_mask);
|
||||
|
||||
if (offset < m_ram_size_words)
|
||||
{
|
||||
COMBINE_DATA(&m_ram_ptr[offset]);
|
||||
return;
|
||||
}
|
||||
|
||||
printf("ram_w: DAEing on access to %08x\n", offset<<2);
|
||||
m_maincpu->trap(SPARC_DATA_ACCESS_EXCEPTION);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START(type0space_map, AS_PROGRAM, 32, sun4_state)
|
||||
@ -822,9 +859,10 @@ static MACHINE_CONFIG_START( sun4, sun4_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", MB86901, 16670000)
|
||||
MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, sun4_mem)
|
||||
MCFG_SPARC_ADD_ASI_DESC(sun4_asi_desc)
|
||||
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("4M")
|
||||
MCFG_RAM_DEFAULT_SIZE("16M")
|
||||
MCFG_RAM_DEFAULT_VALUE(0x00)
|
||||
|
||||
MCFG_M48T02_ADD(TIMEKEEPER_TAG)
|
||||
|
@ -5290,9 +5290,9 @@ DRIVER_INIT_MEMBER(system1_state,nobb)
|
||||
DRIVER_INIT_CALL(bank44);
|
||||
|
||||
iospace.install_read_handler(0x1c, 0x1c, read8_delegate(FUNC(system1_state::nobb_inport1c_r),this));
|
||||
iospace.install_read_handler(0x22, 0x22, read8_delegate(FUNC(system1_state::nobb_inport22_r),this));
|
||||
iospace.install_read_handler(0x23, 0x23, read8_delegate(FUNC(system1_state::nobb_inport23_r),this));
|
||||
iospace.install_write_handler(0x24, 0x24, write8_delegate(FUNC(system1_state::nobb_outport24_w),this));
|
||||
iospace.install_read_handler(0x02, 0x02, read8_delegate(FUNC(system1_state::nobb_inport22_r),this));
|
||||
iospace.install_read_handler(0x03, 0x03, read8_delegate(FUNC(system1_state::nobb_inport23_r),this));
|
||||
iospace.install_write_handler(0x04, 0x04, write8_delegate(FUNC(system1_state::nobb_outport24_w),this));
|
||||
}
|
||||
|
||||
|
||||
|
@ -153,7 +153,7 @@ DIPs
|
||||
----
|
||||
|
||||
They're now correct (including locations) according to the
|
||||
manuals. Nevertherless, ainferno manual states that the coinage
|
||||
manuals. Nevertheless, ainferno manual states that the coinage
|
||||
DIPs are the same as topland, which is clearly wrong if you try
|
||||
them ("SWB:7,8" do not set Coin B to multiple credits for each
|
||||
coin!)
|
||||
@ -536,11 +536,6 @@ static ADDRESS_MAP_START( DSP_map_data, AS_DATA, 16, taitoair_state )
|
||||
AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram_r, dspram_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( DSP_map_io, AS_IO, 16, taitoair_state )
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_HOLD_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_HOLDA_signal_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/************************************************************
|
||||
INPUT PORTS & DIPS
|
||||
@ -726,7 +721,8 @@ static MACHINE_CONFIG_START( airsys, taitoair_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32025, XTAL_36MHz) // Unverified
|
||||
MCFG_CPU_PROGRAM_MAP(DSP_map_program)
|
||||
MCFG_CPU_DATA_MAP(DSP_map_data)
|
||||
MCFG_CPU_IO_MAP(DSP_map_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(taitoair_state, dsp_HOLD_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(taitoair_state, dsp_HOLDA_signal_w))
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
|
@ -569,7 +569,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( ti89 )
|
||||
ROM_REGION( 0x200000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_BE( 0x200000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS( 0, "v100", "V 1.00 - HW1" )
|
||||
ROMX_LOAD( "ti89v100.rom", 0x000000, 0x200000, CRC(264b34ad) SHA1(c87586a7e9b6d49fbe908fbb6f3c0038f3498573), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS( 1, "v100a", "V 1.00 [a] - HW1" )
|
||||
@ -605,7 +605,7 @@ ROM_START( ti89 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ti92 )
|
||||
ROM_REGION( 0x200000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_BE( 0x200000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS( 0, "v111", "V 1.11" )
|
||||
ROMX_LOAD( "ti92v111.rom", 0x000000, 0x100000, CRC(67878d52) SHA1(c0fdf162961922a76f286c93fd9b861ce20f23a3), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS( 1, "v13e", "V 1.3 [e]" )
|
||||
@ -624,7 +624,7 @@ ROM_START( ti92 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ti92p )
|
||||
ROM_REGION( 0x200000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_BE( 0x200000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS( 0, "v100", "V 1.00 - HW1" )
|
||||
ROMX_LOAD( "ti92pv100.rom", 0x0000, 0x200000, CRC(c651a586) SHA1(fbbf7e053e70eefe517f9aae40c072036bc614ea), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS( 1, "v101", "V 1.01 - HW1" )
|
||||
@ -650,7 +650,7 @@ ROM_START( ti92p )
|
||||
ROM_END
|
||||
|
||||
ROM_START( v200 )
|
||||
ROM_REGION( 0x400000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_BE( 0x400000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS( 0, "v209", "V 2.09" )
|
||||
ROMX_LOAD( "voyage200v209.rom", 0x0000, 0x400000, CRC(f805c7a6) SHA1(818b919058ba3bd7d15604f11fff6740010d07fc), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS( 1, "v310", "V 3.10" )
|
||||
@ -658,7 +658,7 @@ ROM_START( v200 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ti89t )
|
||||
ROM_REGION( 0x400000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_BE( 0x400000, "flash", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS( 0, "v300", "V 3.00" )
|
||||
ROMX_LOAD( "ti89tv300.rom", 0x0000, 0x400000, CRC(55eb4f5a) SHA1(4f919d7752caf2559a79883ec8711a9701d19513), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS( 1, "v310", "V 3.10" )
|
||||
|
@ -728,7 +728,7 @@ ADDRESS_MAP_END
|
||||
*/
|
||||
static ADDRESS_MAP_START(vk100_io, AS_IO, 8, vk100_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7f) // guess, probably correct
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff) // guess, probably correct
|
||||
AM_RANGE(0x00, 0x00) AM_MIRROR(0xBE) AM_DEVWRITE("crtc", mc6845_device, address_w)
|
||||
AM_RANGE(0x01, 0x01) AM_MIRROR(0xBE) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
|
||||
// Comments are from page 118 (5-14) of http://web.archive.org/web/20091015205827/http://www.computer.museum.uq.edu.au/pdf/EK-VK100-TM-001%20VK100%20Technical%20Manual.pdf
|
||||
|
@ -179,7 +179,7 @@ WRITE8_MEMBER(vt240_state::i8085_comm_w)
|
||||
break;
|
||||
case 2:
|
||||
m_i8085->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_t11 = 0;
|
||||
m_t11 = 1;
|
||||
m_i8085->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
|
||||
break;
|
||||
}
|
||||
@ -232,7 +232,7 @@ READ8_MEMBER(vt240_state::char_buf_r)
|
||||
|
||||
WRITE8_MEMBER(vt240_state::char_buf_w)
|
||||
{
|
||||
m_char_buf[m_char_idx++] = ~data;
|
||||
m_char_buf[m_char_idx++] = BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
|
||||
m_char_idx &= 0xf;
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ WRITE8_MEMBER(vt240_state::vram_w)
|
||||
{
|
||||
offset = ((offset & 0x30000) >> 1) | (offset & 0x7fff);
|
||||
if(BIT(m_reg1, 2))
|
||||
data = m_video_ram[offset];
|
||||
data = m_video_ram[offset & 0xffff];
|
||||
else if(BIT(m_reg0, 4))
|
||||
{
|
||||
data = m_char_buf[m_char_idx++];
|
||||
@ -264,13 +264,13 @@ WRITE8_MEMBER(vt240_state::vram_w)
|
||||
offset = BIT(offset, 16) | (offset & 0xfffe);
|
||||
}
|
||||
if(!BIT(m_reg0, 3))
|
||||
data = (data & ~m_mask) | (m_video_ram[offset] & m_mask);
|
||||
data = (data & ~m_mask) | (m_video_ram[offset & 0xffff] & m_mask);
|
||||
m_video_ram[offset & 0xffff] = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::mask_w)
|
||||
{
|
||||
m_mask = data;
|
||||
m_mask = BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::nvr_store_w)
|
||||
@ -351,12 +351,14 @@ void vt240_state::machine_reset()
|
||||
m_nvram->recall(ASSERT_LINE);
|
||||
m_nvram->recall(CLEAR_LINE);
|
||||
m_mem_map_sel = 0;
|
||||
m_t11 = 1;
|
||||
m_i8085_rdy = 1;
|
||||
}
|
||||
|
||||
static const gfx_layout vt240_chars_8x10 =
|
||||
{
|
||||
8,10,
|
||||
RGN_FRAC(1,1),
|
||||
0x240,
|
||||
1,
|
||||
{ 0 },
|
||||
{ STEP8(0,1) },
|
||||
@ -365,7 +367,7 @@ static const gfx_layout vt240_chars_8x10 =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( vt240 )
|
||||
GFXDECODE_ENTRY( "charcpu", 0x338*10-2, vt240_chars_8x10, 0, 8 )
|
||||
GFXDECODE_ENTRY( "charcpu", 0x338*10-3, vt240_chars_8x10, 0, 8 )
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_CONFIG_START( vt240, vt240_state )
|
||||
|
@ -47,7 +47,6 @@ public:
|
||||
: namcos2_shared_state(mconfig, type, tag),
|
||||
m_winrun_dspbios(*this,"winrun_dspbios"),
|
||||
m_winrun_polydata(*this,"winrun_polydata"),
|
||||
m_winrun_gpucomram(*this,"winrun_comram"),
|
||||
m_dspram16(*this,"dspram16"),
|
||||
m_mpDualPortRAM(*this,"mpdualportram"),
|
||||
m_master_dsp_code(*this,"master_dsp_code"),
|
||||
@ -57,7 +56,6 @@ public:
|
||||
|
||||
optional_shared_ptr<UINT16> m_winrun_dspbios;
|
||||
optional_shared_ptr<UINT16> m_winrun_polydata;
|
||||
optional_shared_ptr<UINT16> m_winrun_gpucomram;
|
||||
optional_shared_ptr<UINT16> m_dspram16;
|
||||
required_shared_ptr<UINT8> m_mpDualPortRAM;
|
||||
optional_shared_ptr<UINT16> m_master_dsp_code;
|
||||
@ -146,8 +144,6 @@ public:
|
||||
DECLARE_READ16_MEMBER(winrun_dsp_pointrom_data_r);
|
||||
DECLARE_WRITE16_MEMBER(winrun_dsp_complete_w);
|
||||
DECLARE_READ16_MEMBER(winrun_table_r);
|
||||
DECLARE_READ16_MEMBER(winrun_gpucomram_r);
|
||||
DECLARE_WRITE16_MEMBER(winrun_gpucomram_w);
|
||||
DECLARE_WRITE16_MEMBER(winrun_dspbios_w);
|
||||
DECLARE_READ16_MEMBER(winrun_68k_dspcomram_r);
|
||||
DECLARE_WRITE16_MEMBER(winrun_68k_dspcomram_w);
|
||||
|
@ -23,8 +23,25 @@
|
||||
return nil
|
||||
end
|
||||
last_state = true
|
||||
x = ((x / target:width()) * 95) - 15
|
||||
y = ((y / target:height()) * 82.5) - 2.5
|
||||
local h = target:height()
|
||||
local w = target:width()
|
||||
local x0, x1, y0, y1 = target:view_bounds()
|
||||
local vw = (x1 - x0)
|
||||
local vh = (y1 - y0)
|
||||
if machine:options().entries.keepaspect:value() then
|
||||
if (vh / h) < (vw / w) then
|
||||
local oh = h
|
||||
h = w * (vh / vw)
|
||||
y = y - ((oh - h) / 2)
|
||||
else
|
||||
local ow = w
|
||||
w = h * (vw / vh)
|
||||
x = x - ((ow - w) / 2)
|
||||
end
|
||||
end
|
||||
|
||||
x = ((x / w) * vw) + x0
|
||||
y = ((y / h) * vh) + y0
|
||||
return x, y
|
||||
end
|
||||
|
||||
|
@ -155,16 +155,16 @@ void mac_state::mac_install_memory(offs_t memory_begin, offs_t memory_end,
|
||||
offs_t memory_mirror;
|
||||
|
||||
memory_size = MIN(memory_size, (memory_end + 1 - memory_begin));
|
||||
memory_mirror = (memory_end - memory_begin) ^ (memory_size - 1);
|
||||
memory_mirror = (memory_end - memory_begin) & ~(memory_size - 1);
|
||||
|
||||
if (!is_rom)
|
||||
{
|
||||
space.install_readwrite_bank(memory_begin, memory_end, memory_mirror, bank);
|
||||
space.install_readwrite_bank(memory_begin, memory_end & ~memory_mirror, memory_mirror, bank);
|
||||
}
|
||||
else
|
||||
{
|
||||
space.unmap_write(memory_begin, memory_end);
|
||||
space.install_read_bank(memory_begin, memory_end, memory_mirror, bank);
|
||||
space.install_read_bank(memory_begin, memory_end & ~memory_mirror, memory_mirror, bank);
|
||||
}
|
||||
|
||||
membank(bank)->set_base(memory_data);
|
||||
@ -471,7 +471,7 @@ void mac_state::set_memory_overlay(int overlay)
|
||||
else
|
||||
{
|
||||
size_t rom_mirror = 0xfffffff ^ (memregion("bootrom")->bytes() - 1);
|
||||
m_maincpu->space(AS_PROGRAM).install_read_bank(0x40000000, 0x4fffffff, rom_mirror, "bankR");
|
||||
m_maincpu->space(AS_PROGRAM).install_read_bank(0x40000000, 0x4fffffff & ~rom_mirror, rom_mirror, "bankR");
|
||||
membank("bankR")->set_base((void *)memregion("bootrom")->base());
|
||||
}
|
||||
}
|
||||
|
@ -188,11 +188,8 @@ static MACHINE_CONFIG_FRAGMENT( abc1600_mover )
|
||||
MCFG_DEFAULT_LAYOUT(layout_abc1600)
|
||||
|
||||
MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::green)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
|
||||
MCFG_SCREEN_UPDATE_DRIVER(abc1600_mover_device, screen_update)
|
||||
MCFG_SCREEN_SIZE(958, 1067)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 958-1, 0, 1067-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_64MHz, 0x3e0, 0, 0x300, 0x433, 0, 0x400)
|
||||
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
|
||||
|
@ -302,10 +302,7 @@ MACHINE_CONFIG_FRAGMENT( abc800m_video )
|
||||
|
||||
MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t(0xff, 0xff, 0x00))
|
||||
MCFG_SCREEN_UPDATE_DRIVER(abc800m_state, screen_update)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_SIZE(768, 312)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0,768-1, 0, 312-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz, 0x300, 0, 0x1e0, 0x13a, 0, 0xf0)
|
||||
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -210,11 +210,7 @@ MACHINE_CONFIG_FRAGMENT( abc802_video )
|
||||
|
||||
MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::amber)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(abc802_state, screen_update)
|
||||
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_SIZE(768, 312)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0,768-1, 0, 312-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz, 0x300, 0, 0x1e0, 0x13a, 0, 0xf0)
|
||||
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -497,10 +497,7 @@ MACHINE_CONFIG_FRAGMENT( abc806_video )
|
||||
|
||||
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(abc806_state, screen_update)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_SIZE(768, 312)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 768-1, 0, 312-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz, 0x300, 0, 0x1e0, 0x13a, 0, 0xfa)
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8)
|
||||
MCFG_PALETTE_INIT_OWNER(abc806_state, abc806)
|
||||
|
@ -39,6 +39,7 @@ public:
|
||||
this->m_machine = &machine;
|
||||
this->width = 300;
|
||||
this->height = 300;
|
||||
this->console_prev.clear();
|
||||
|
||||
/* specials */
|
||||
switch (type)
|
||||
@ -78,6 +79,7 @@ public:
|
||||
int src_sel;
|
||||
char console_input[512];
|
||||
std::vector<std::string> console_history;
|
||||
std::string console_prev;
|
||||
};
|
||||
|
||||
class debug_imgui : public osd_module, public debug_module
|
||||
@ -465,7 +467,12 @@ void debug_imgui::handle_console(running_machine* machine)
|
||||
m_running = true;
|
||||
if(strcmp(view_main_console->console_input,"next") == 0)
|
||||
m_running = true;
|
||||
// don't bother adding to history if the current command matches the previous one
|
||||
if(view_main_console->console_prev != view_main_console->console_input)
|
||||
{
|
||||
view_main_console->console_history.push_back(std::string(view_main_console->console_input));
|
||||
view_main_console->console_prev = view_main_console->console_input;
|
||||
}
|
||||
history_pos = view_main_console->console_history.size();
|
||||
strcpy(view_main_console->console_input,"");
|
||||
view_main_console->exec_cmd = false;
|
||||
|
@ -9,6 +9,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/sparc/sparcdasm.h"
|
||||
#include <ctype.h>
|
||||
|
||||
enum display_type
|
||||
@ -206,6 +207,25 @@ CPU_DISASSEMBLE( z8 );
|
||||
CPU_DISASSEMBLE( z80 );
|
||||
CPU_DISASSEMBLE( z8000 );
|
||||
|
||||
static sparc_disassembler sparcv7_dasm(7);
|
||||
static sparc_disassembler sparcv8_dasm(8);
|
||||
static sparc_disassembler sparcv9_dasm(9);
|
||||
static sparc_disassembler sparcv9vis1_dasm(9);
|
||||
static sparc_disassembler sparcv9vis2_dasm(9);
|
||||
struct sparc_helper_c
|
||||
{
|
||||
sparc_helper_c()
|
||||
{
|
||||
sparcv9vis1_dasm.enable_vis1();
|
||||
sparcv9vis2_dasm.enable_vis2();
|
||||
}
|
||||
} sparc_helper;
|
||||
CPU_DISASSEMBLE( sparcv7 ) { return sparcv7_dasm.dasm(buffer, pc, BIG_ENDIANIZE_INT32(*reinterpret_cast<const UINT32 *>(oprom))); }
|
||||
CPU_DISASSEMBLE( sparcv8 ) { return sparcv8_dasm.dasm(buffer, pc, BIG_ENDIANIZE_INT32(*reinterpret_cast<const UINT32 *>(oprom))); }
|
||||
CPU_DISASSEMBLE( sparcv9 ) { return sparcv9_dasm.dasm(buffer, pc, BIG_ENDIANIZE_INT32(*reinterpret_cast<const UINT32 *>(oprom))); }
|
||||
CPU_DISASSEMBLE( sparcv9vis1 ) { return sparcv9vis1_dasm.dasm(buffer, pc, BIG_ENDIANIZE_INT32(*reinterpret_cast<const UINT32 *>(oprom))); }
|
||||
CPU_DISASSEMBLE( sparcv9vis2 ) { return sparcv9vis2_dasm.dasm(buffer, pc, BIG_ENDIANIZE_INT32(*reinterpret_cast<const UINT32 *>(oprom))); }
|
||||
|
||||
|
||||
static const dasm_table_entry dasm_table[] =
|
||||
{
|
||||
@ -319,6 +339,11 @@ static const dasm_table_entry dasm_table[] =
|
||||
{ "sm510", _8bit, 0, CPU_DISASSEMBLE_NAME(sm510) },
|
||||
{ "sm511", _8bit, 0, CPU_DISASSEMBLE_NAME(sm511) },
|
||||
{ "sm8500", _8bit, 0, CPU_DISASSEMBLE_NAME(sm8500) },
|
||||
{ "sparcv7", _32be, 0, CPU_DISASSEMBLE_NAME(sparcv7) },
|
||||
{ "sparcv8", _32be, 0, CPU_DISASSEMBLE_NAME(sparcv8) },
|
||||
{ "sparcv9", _32be, 0, CPU_DISASSEMBLE_NAME(sparcv9) },
|
||||
{ "sparcv9vis1",_32be, 0, CPU_DISASSEMBLE_NAME(sparcv9vis1) },
|
||||
{ "sparcv9vis2",_32be, 0, CPU_DISASSEMBLE_NAME(sparcv9vis2) },
|
||||
{ "spc700", _8bit, 0, CPU_DISASSEMBLE_NAME(spc700) },
|
||||
{ "ssem", _32le, 0, CPU_DISASSEMBLE_NAME(ssem) },
|
||||
{ "ssp1601", _16be, -1, CPU_DISASSEMBLE_NAME(ssp1601) },
|
||||
@ -485,15 +510,15 @@ usage:
|
||||
printf(" [-skip <n>] [-count <n>]\n");
|
||||
printf("\n");
|
||||
printf("Supported architectures:");
|
||||
numrows = (ARRAY_LENGTH(dasm_table) + 6) / 7;
|
||||
for (curarch = 0; curarch < numrows * 7; curarch++)
|
||||
numrows = (ARRAY_LENGTH(dasm_table) + 5) / 6;
|
||||
for (curarch = 0; curarch < numrows * 6; curarch++)
|
||||
{
|
||||
int row = curarch / 7;
|
||||
int col = curarch % 7;
|
||||
int row = curarch / 6;
|
||||
int col = curarch % 6;
|
||||
int index = col * numrows + row;
|
||||
if (col == 0)
|
||||
printf("\n ");
|
||||
printf("%-11s", (index < ARRAY_LENGTH(dasm_table)) ? dasm_table[index].name : "");
|
||||
printf("%-12s", (index < ARRAY_LENGTH(dasm_table)) ? dasm_table[index].name : "");
|
||||
}
|
||||
printf("\n");
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user