mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +03:00
New machines marked as NOT_WORKING
---------------------------------- MicroVAX I [microvax2.org] MicroVAX II [microvax2.org] MicroVAX 3400 [microvax2.org] MicroVAX 3500 [microvax2.org]
This commit is contained in:
parent
3029c6c69a
commit
b8de24c775
@ -3746,6 +3746,13 @@ end
|
||||
--@src/devices/cpu/vax/vax.h,CPUS["VAX"] = true
|
||||
--------------------------------------------------
|
||||
|
||||
if CPUS["VAX"] then
|
||||
files {
|
||||
MAME_DIR .. "src/devices/cpu/vax/vax.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/vax/vax.h",
|
||||
}
|
||||
end
|
||||
|
||||
if opt_tool(CPUS, "VAX") then
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vax/vaxdasm.cpp")
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vax/vaxdasm.h")
|
||||
|
100
src/devices/cpu/vax/vax.cpp
Normal file
100
src/devices/cpu/vax/vax.cpp
Normal file
@ -0,0 +1,100 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/***************************************************************************
|
||||
|
||||
DEC VAX CPUs
|
||||
|
||||
Currently these devices are just stubs with no actual execution core.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "vax.h"
|
||||
#include "vaxdasm.h"
|
||||
|
||||
// device type definitions
|
||||
DEFINE_DEVICE_TYPE(KD32A, kd32a_device, "kd32a", "DEC KD32-A MicroVAX I CPU")
|
||||
DEFINE_DEVICE_TYPE(DC333, dc333_device, "dc333", "DEC DC333 MicroVAX II CPU")
|
||||
DEFINE_DEVICE_TYPE(DC341, dc341_device, "dc341", "DEC DC341 CVAX CPU")
|
||||
|
||||
|
||||
vax_cpu_device::vax_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int addrwidth)
|
||||
: cpu_device(mconfig, type, tag, owner, clock)
|
||||
, m_program_config("program", ENDIANNESS_LITTLE, 32, addrwidth, 0, 32, 9)
|
||||
, m_psl(0)
|
||||
, m_icount(0)
|
||||
{
|
||||
}
|
||||
|
||||
kd32a_device::kd32a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: vax_cpu_device(mconfig, KD32A, tag, owner, clock, 30)
|
||||
{
|
||||
}
|
||||
|
||||
dc333_device::dc333_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: vax_cpu_device(mconfig, DC333, tag, owner, clock, 32)
|
||||
{
|
||||
}
|
||||
|
||||
dc341_device::dc341_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: vax_cpu_device(mconfig, DC341, tag, owner, clock, 32)
|
||||
{
|
||||
}
|
||||
|
||||
std::unique_ptr<util::disasm_interface> vax_cpu_device::create_disassembler()
|
||||
{
|
||||
return std::make_unique<vax_disassembler>();
|
||||
}
|
||||
|
||||
device_memory_interface::space_config_vector vax_cpu_device::memory_space_config() const
|
||||
{
|
||||
return space_config_vector {
|
||||
std::make_pair(AS_PROGRAM, &m_program_config),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void vax_cpu_device::device_start()
|
||||
{
|
||||
address_space &space = this->space(AS_PROGRAM);
|
||||
space.specific(m_program_space);
|
||||
space.cache(m_cache);
|
||||
|
||||
std::fill_n(&m_gpr[0], 16, 0);
|
||||
|
||||
set_icountptr(m_icount);
|
||||
|
||||
state_add(STATE_GENPC, "GENPC", m_gpr[15]).noshow();
|
||||
state_add(STATE_GENPCBASE, "CURPC", m_gpr[15]).noshow();
|
||||
for (int i = 0; i < 12; i++)
|
||||
state_add(VAX_R0 + i, util::string_format("R%d", i).c_str(), m_gpr[i]);
|
||||
state_add(VAX_AP, "AP", m_gpr[12]);
|
||||
state_add(VAX_FP, "FP", m_gpr[13]);
|
||||
state_add(VAX_SP, "SP", m_gpr[14]);
|
||||
state_add(VAX_PC, "PC", m_gpr[15]);
|
||||
state_add(VAX_PSL, "PSL", m_psl);
|
||||
|
||||
save_item(NAME(m_gpr));
|
||||
save_item(NAME(m_psl));
|
||||
}
|
||||
|
||||
void vax_cpu_device::device_reset()
|
||||
{
|
||||
m_gpr[15] = 0;
|
||||
m_psl = 0x041f0000;
|
||||
}
|
||||
|
||||
void dc341_device::device_reset()
|
||||
{
|
||||
vax_cpu_device::device_reset();
|
||||
|
||||
m_gpr[15] = 0x20040000; // 0x20060000 in run mode
|
||||
}
|
||||
|
||||
|
||||
void vax_cpu_device::execute_run()
|
||||
{
|
||||
debugger_instruction_hook(m_gpr[15]);
|
||||
|
||||
m_icount = 0;
|
||||
}
|
82
src/devices/cpu/vax/vax.h
Normal file
82
src/devices/cpu/vax/vax.h
Normal file
@ -0,0 +1,82 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
|
||||
#ifndef MAME_CPU_VAX_VAX_H
|
||||
#define MAME_CPU_VAX_VAX_H
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
class vax_cpu_device : public cpu_device
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
VAX_R0, VAX_R1, VAX_R2, VAX_R3,
|
||||
VAX_R4, VAX_R5, VAX_R6, VAX_R7,
|
||||
VAX_R8, VAX_R9, VAX_R10, VAX_R11,
|
||||
VAX_AP, VAX_FP, VAX_SP, VAX_PC,
|
||||
VAX_PSL
|
||||
};
|
||||
|
||||
protected:
|
||||
// construction/destruction
|
||||
vax_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int addrwidth);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override ATTR_COLD;
|
||||
virtual void device_reset() override ATTR_COLD;
|
||||
|
||||
// device_disasm_interface overrides
|
||||
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||
|
||||
// device_execute_interface overrides
|
||||
virtual void execute_run() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual space_config_vector memory_space_config() const override;
|
||||
|
||||
// address space
|
||||
address_space_config m_program_config;
|
||||
memory_access<32, 2, 0, ENDIANNESS_LITTLE>::specific m_program_space;
|
||||
memory_access<32, 2, 0, ENDIANNESS_LITTLE>::cache m_cache;
|
||||
|
||||
// internal state
|
||||
u32 m_gpr[16];
|
||||
u32 m_psl;
|
||||
|
||||
// execution sequencing
|
||||
s32 m_icount;
|
||||
};
|
||||
|
||||
class kd32a_device : public vax_cpu_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
kd32a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
};
|
||||
|
||||
class dc333_device : public vax_cpu_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
dc333_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
};
|
||||
|
||||
class dc341_device : public vax_cpu_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
dc341_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_reset() override ATTR_COLD;
|
||||
};
|
||||
|
||||
|
||||
// device type declarations
|
||||
DECLARE_DEVICE_TYPE(KD32A, kd32a_device)
|
||||
DECLARE_DEVICE_TYPE(DC333, dc333_device)
|
||||
DECLARE_DEVICE_TYPE(DC341, dc341_device)
|
||||
|
||||
#endif // MAME_CPU_VAX_VAX_H
|
88
src/mame/dec/uvax1.cpp
Normal file
88
src/mame/dec/uvax1.cpp
Normal file
@ -0,0 +1,88 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/*******************************************************************************
|
||||
|
||||
Skeleton driver for DEC MicroVAX I ("Seahorse").
|
||||
|
||||
The MicroVAX I processor occupies two interconnected PCBs: the M7135 data
|
||||
path module (DAP) and the M7136 memory controller (MCT). The LSI data path
|
||||
chip, developed by DEC in conjunction with Silicon Compilers, Inc., is not
|
||||
really a single-chip VAX CPU, since it relies on a PROM microcode store and
|
||||
numerous PLDs and support logic ICs. Though the memory controller module
|
||||
contains TLB/cache SRAMs and a few register files, main memory is provided
|
||||
separately on the 16-bit Q22 bus in the form of MSV11-P modules.
|
||||
|
||||
There were two versions of the processor: one supporting only F_floating
|
||||
and D_floating types, the other supporting only F_floating and G_floating.
|
||||
|
||||
Q-bus I/O options used in the MicroVAX I include DLVJ1, DZV11, DEQNA and
|
||||
RQDX1.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
//#include "bus/qbus/qbus.h"
|
||||
#include "cpu/vax/vax.h"
|
||||
#include "machine/scn_pci.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class uvax1_state : public driver_device
|
||||
{
|
||||
public:
|
||||
uvax1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
{
|
||||
}
|
||||
|
||||
void uvax1(machine_config &config) ATTR_COLD;
|
||||
|
||||
private:
|
||||
void mem_map(address_map &map) ATTR_COLD;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
void uvax1_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x00001fff).rom().region("bootrom", 0);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START(uvax1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void uvax1_state::uvax1(machine_config &config)
|
||||
{
|
||||
KD32A(config, m_maincpu, 64_MHz_XTAL / 16); // cycle time is 250 ns
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &uvax1_state::mem_map);
|
||||
|
||||
SCN2661C(config, "conuart", 5.0688_MHz_XTAL);
|
||||
}
|
||||
|
||||
ROM_START(uvax1)
|
||||
ROM_REGION32_LE(0x2000, "bootrom", 0)
|
||||
ROM_LOAD("m7135_microvax_i_e78_2764.bin", 0x0000, 0x2000, CRC(8c6f01f0) SHA1(c3effa180faa7767b267b047d724871592466788))
|
||||
|
||||
ROM_REGION64_LE(0x10000, "dap_proms", ROMREGION_ERASE00) // MB7144H or equivalent
|
||||
ROM_LOAD64_BYTE("dap0.bin", 0x0000, 0x2000, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("dap1.bin", 0x0001, 0x2000, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("dap2.bin", 0x0002, 0x2000, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("dap3.bin", 0x0003, 0x2000, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("dap4.bin", 0x0004, 0x2000, NO_DUMP)
|
||||
|
||||
ROM_REGION64_LE(0x2000, "mct_proms", 0) // Am27S35DC
|
||||
ROM_LOAD64_BYTE("mct0.bin", 0x0000, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct1.bin", 0x0001, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct2.bin", 0x0002, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct3.bin", 0x0003, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct4.bin", 0x0004, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct5.bin", 0x0005, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct6.bin", 0x0006, 0x0400, NO_DUMP)
|
||||
ROM_LOAD64_BYTE("mct7.bin", 0x0007, 0x0400, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
COMP(1984, uvax1, 0, 0, uvax1, uvax1, uvax1_state, empty_init, "Digital Equipment Corporation", "MicroVAX I", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
|
65
src/mame/dec/uvax2.cpp
Normal file
65
src/mame/dec/uvax2.cpp
Normal file
@ -0,0 +1,65 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/*******************************************************************************
|
||||
|
||||
Skeleton driver for DEC MicroVAX II ("Mayflower").
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
//#include "bus/qbus/qbus.h"
|
||||
#include "cpu/vax/vax.h"
|
||||
//#include "machine/dc319.h"
|
||||
#include "machine/mc146818.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class uvax2_state : public driver_device
|
||||
{
|
||||
public:
|
||||
uvax2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
{
|
||||
}
|
||||
|
||||
void uvax2(machine_config &config) ATTR_COLD;
|
||||
|
||||
private:
|
||||
void mem_map(address_map &map) ATTR_COLD;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
void uvax2_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x0000ffff).rom().region("bootrom", 0);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START(uvax2)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void uvax2_state::uvax2(machine_config &config)
|
||||
{
|
||||
DC333(config, m_maincpu, 40_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &uvax2_state::mem_map);
|
||||
|
||||
//DC319(config, "dlart", 614.4_MHz_XTAL);
|
||||
|
||||
MC146818(config, "toyclock", 32.768_kHz_XTAL);
|
||||
}
|
||||
|
||||
ROM_START(uvax2)
|
||||
ROM_REGION32_LE(0x10000, "bootrom", 0)
|
||||
ROM_SYSTEM_BIOS(0, "ef", "Rev. EF") // Rev. AF is identical?
|
||||
ROMX_LOAD("m7606_a1_rev_ef_lm8725_110e6_am27256.bin", 0x0000, 0x8000, CRC(b44e8cab) SHA1(8b74031231248241109b78baa4819659533e1312), ROM_SKIP(1) | ROM_BIOS(0))
|
||||
ROMX_LOAD("m7606_a1_rev_ef_lm8729_111e6_am27256.bin", 0x0001, 0x8000, CRC(44ebb04d) SHA1(031c271ead78cae4c3dfc1125b0ab515843e1911), ROM_SKIP(1) | ROM_BIOS(0))
|
||||
ROM_SYSTEM_BIOS(1, "ah", "Rev. AH")
|
||||
ROMX_LOAD("m7606_ah_062_110e6_d27256.bin", 0x0000, 0x8000, CRC(653646fa) SHA1(1f900fe5e998d0f8ed4ae63557f1e63c839991c0), ROM_SKIP(1) | ROM_BIOS(1))
|
||||
ROMX_LOAD("m7606_ah_062_111e6_d27256.bin", 0x0001, 0x8000, CRC(725dc43e) SHA1(630a908f7d630a33099ae9c3c3c08df478de941c), ROM_SKIP(1) | ROM_BIOS(1))
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
COMP(1984, uvax2, 0, 0, uvax2, uvax2, uvax2_state, empty_init, "Digital Equipment Corporation", "MicroVAX II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
|
66
src/mame/dec/uvax3.cpp
Normal file
66
src/mame/dec/uvax3.cpp
Normal file
@ -0,0 +1,66 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/*******************************************************************************
|
||||
|
||||
Skeleton driver for DEC third-generation MicroVAX models ("Mayfair").
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
//#include "bus/dssi/dssi.h"
|
||||
//#include "bus/qbus/qbus.h"
|
||||
#include "cpu/vax/vax.h"
|
||||
//#include "machine/am79c90.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class uvax3_state : public driver_device
|
||||
{
|
||||
public:
|
||||
uvax3_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
{
|
||||
}
|
||||
|
||||
void mv3400(machine_config &config) ATTR_COLD;
|
||||
|
||||
private:
|
||||
void mem_map(address_map &map) ATTR_COLD;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
void uvax3_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x20040000, 0x2005ffff).mirror(0x20000).rom().region("firmware", 0);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START(mv3400)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void uvax3_state::mv3400(machine_config &config)
|
||||
{
|
||||
DC341(config, m_maincpu, 40_MHz_XTAL / 2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &uvax3_state::mem_map);
|
||||
|
||||
//AM7990(config, "lance", ?);
|
||||
}
|
||||
|
||||
ROM_START(mv3400)
|
||||
ROM_REGION32_LE(0x20000, "firmware", 0)
|
||||
ROM_LOAD16_BYTE("m7624_dec88_lm8914_152e7_d27512.bin", 0x00000, 0x10000, CRC(eb61f8d0) SHA1(17d56f59120881df2b6522097998b4a9e4bac77e))
|
||||
ROM_LOAD16_BYTE("m7624_dec88_lm8914_153e7_d27512.bin", 0x00001, 0x10000, CRC(6727bff2) SHA1(4f566e82a8fa8490056d62b3e44c070ba5ab1754))
|
||||
ROM_END
|
||||
|
||||
ROM_START(mv3500)
|
||||
ROM_REGION32_LE(0x20000, "firmware", 0)
|
||||
ROM_LOAD16_BYTE("ka650-a-v5.3-vmb2.7_192e7.bin", 0x00000, 0x10000, CRC(a3ec59a6) SHA1(6d0121d7e232c841484a328340c828a4f0fdf903))
|
||||
ROM_LOAD16_BYTE("ka650-a-v5.3-vmb2.7_193e7.bin", 0x00001, 0x10000, CRC(873ee8bd) SHA1(b0abfebda60e9394e1045644634a8845b5573d04))
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
COMP(1988, mv3400, 0, 0, mv3400, mv3400, uvax3_state, empty_init, "Digital Equipment Corporation", "MicroVAX 3400", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
|
||||
COMP(1988, mv3500, 0, 0, mv3400, mv3400, uvax3_state, empty_init, "Digital Equipment Corporation", "MicroVAX 3500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
|
@ -17488,6 +17488,16 @@ rainbow
|
||||
rainbow100a
|
||||
rainbow190
|
||||
|
||||
@source:dec/uvax1.cpp
|
||||
uvax1
|
||||
|
||||
@source:dec/uvax2.cpp
|
||||
uvax2
|
||||
|
||||
@source:dec/uvax3.cpp
|
||||
mv3400
|
||||
mv3500
|
||||
|
||||
@source:dec/vax11.cpp
|
||||
vax785
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user