New machines marked as NOT_WORKING

----------------------------------
WY-100 [Al Kossow]
Z-29 [Al Kossow]
This commit is contained in:
AJR 2018-08-21 22:59:39 -04:00
parent 9b49217ed4
commit 154276d260
8 changed files with 274 additions and 5 deletions

View File

@ -3582,6 +3582,7 @@ files {
createMESSProjects(_target, _subtarget, "zenith")
files {
MAME_DIR .. "src/mame/drivers/z100.cpp",
MAME_DIR .. "src/mame/drivers/z29.cpp",
}
createMESSProjects(_target, _subtarget, "zpa")
@ -3802,6 +3803,7 @@ files {
MAME_DIR .. "src/mame/drivers/vp415.cpp",
MAME_DIR .. "src/mame/drivers/vsmilepro.cpp",
MAME_DIR .. "src/mame/drivers/wicat.cpp",
MAME_DIR .. "src/mame/drivers/wy100.cpp",
MAME_DIR .. "src/mame/drivers/wyse.cpp",
MAME_DIR .. "src/mame/drivers/xor100.cpp",
MAME_DIR .. "src/mame/includes/xor100.h",

View File

@ -2,7 +2,8 @@
// copyright-holders:Curt Coder
/**********************************************************************
Intel 8275 Programmable CRT Controller emulation
Intel 8275 Programmable CRT Controller
Intel 8276 Small Systems CRT Controller
**********************************************************************/
@ -40,7 +41,7 @@ static const int DMA_BURST_SPACING[] = { 0, 7, 15, 23, 31, 39, 47, 55 };
((m_param[REG_SCN1] & 0x7f) + 1)
#define VRTC_ROW_COUNT \
((m_param[REG_SCN2] >> 5) + 1)
((m_param[REG_SCN2] >> 6) + 1)
#define CHARACTER_ROWS_PER_FRAME \
((m_param[REG_SCN2] & 0x3f) + 1)
@ -83,8 +84,9 @@ const int i8275_device::character_attribute[3][16] =
// DEVICE DEFINITIONS
//**************************************************************************
// device type definition
// device type definitions
DEFINE_DEVICE_TYPE(I8275, i8275_device, "i8275", "Intel 8275 CRTC")
DEFINE_DEVICE_TYPE(I8276, i8276_device, "i8276", "Intel 8276 CRTC")
@ -96,8 +98,8 @@ DEFINE_DEVICE_TYPE(I8275, i8275_device, "i8275", "Intel 8275 CRTC")
// i8275_device - constructor
//-------------------------------------------------
i8275_device::i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, I8275, tag, owner, clock),
i8275_device::i8275_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_video_interface(mconfig, *this),
m_write_irq(*this),
m_write_drq(*this),
@ -128,6 +130,16 @@ i8275_device::i8275_device(const machine_config &mconfig, const char *tag, devic
memset(m_param, 0x00, sizeof(m_param));
}
i8275_device::i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
i8275_device(mconfig, I8275, tag, owner, clock)
{
}
i8276_device::i8276_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
i8275_device(mconfig, I8276, tag, owner, clock)
{
}
//-------------------------------------------------
// device_start - device-specific startup

View File

@ -102,6 +102,8 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
i8275_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@ -235,8 +237,16 @@ protected:
emu_timer *m_scanline_timer;
};
class i8276_device : public i8275_device
{
public:
// construction/destruction
i8276_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
DECLARE_DEVICE_TYPE(I8275, i8275_device)
DECLARE_DEVICE_TYPE(I8276, i8276_device)
#endif // MAME_VIDEO_I8275_H

View File

@ -140,6 +140,7 @@ const double XTAL::known_xtals[] = {
9'877'680, /* 9.87768_MHz_XTAL Microterm 420 */
9'987'000, /* 9.987_MHz_XTAL Crazy Balloon */
10'000'000, /* 10_MHz_XTAL - */
10'137'600, /* 10.1376_MHz_XTAL Wyse WY-100 */
10'245'000, /* 10.245_MHz_XTAL PES Speech box */
10'380'000, /* 10.38_MHz_XTAL Fairlight Q219 Lightpen/Graphics Card */
10'500'000, /* 10.5_MHz_XTAL Agat-7 */
@ -193,6 +194,7 @@ const double XTAL::known_xtals[] = {
14'318'181, /* 14.318181_MHz_XTAL Extremely common, used on 100's of PCBs (4x NTSC subcarrier) */
14'705'882, /* 14.705882_MHz_XTAL Aleck64 */
14'745'600, /* 14.7456_MHz_XTAL Namco System 12 & System Super 22/23 for JVS */
14'784'000, /* 14.784_MHz_XTAL Zenith Z-29 */
14'916'000, /* 14.916_MHz_XTAL ADDS Viewpoint 122 */
14'976'000, /* 14.976_MHz_XTAL CIT-101 80-column display clock */
15'000'000, /* 15_MHz_XTAL Sinclair QL, Amusco Poker */
@ -226,6 +228,7 @@ const double XTAL::known_xtals[] = {
17'971'200, /* 17.9712_MHz_XTAL - */
18'000'000, /* 18_MHz_XTAL S.A.R, Ikari Warriors 3 */
18'432'000, /* 18.432_MHz_XTAL Extremely common, used on 100's of PCBs (48000 * 384) */
18'480'000, /* 18.48_MHz_XTAL Wyse WY-100 video */
18'575'000, /* 18.575_MHz_XTAL Visual 102, Visual 220 */
18'720'000, /* 18.72_MHz_XTAL Nokia MikroMikko 1 */
18'869'600, /* 18.8696_MHz_XTAL Memorex 2178 */

112
src/mame/drivers/wy100.cpp Normal file
View File

@ -0,0 +1,112 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/*******************************************************************************
Skeleton driver for Wyse WY-100 video terminal.
The WY-100 was Wyse Technology's first product. An unusual feature of
this terminal's keyboard is three banks of user-accessible DIP switches.
*******************************************************************************/
#include "emu.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/bankdev.h"
#include "video/i8275.h"
#include "screen.h"
class wy100_state : public driver_device
{
public:
wy100_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_bankdev(*this, "bankdev")
, m_crtc(*this, "crtc%u", 1U)
, m_chargen(*this, "chargen")
{
}
void wy100(machine_config &config);
private:
DECLARE_WRITE8_MEMBER(crtc_w);
DECLARE_WRITE8_MEMBER(p2_w);
void prg_map(address_map &map);
void io_map(address_map &map);
void bank_map(address_map &map);
required_device<mcs48_cpu_device> m_maincpu;
required_device<address_map_bank_device> m_bankdev;
required_device_array<i8276_device, 2> m_crtc;
required_region_ptr<u8> m_chargen;
};
WRITE8_MEMBER(wy100_state::crtc_w)
{
m_crtc[0]->write(space, offset >> 8, data);
m_crtc[1]->write(space, offset >> 8, data);
}
WRITE8_MEMBER(wy100_state::p2_w)
{
m_bankdev->set_bank(data & 0x1f);
}
void wy100_state::prg_map(address_map &map)
{
map(0x000, 0xfff).rom().region("maincpu", 0);
}
void wy100_state::io_map(address_map &map)
{
map(0x00, 0xff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
}
void wy100_state::bank_map(address_map &map)
{
map(0x0000, 0x01ff).w(FUNC(wy100_state::crtc_w));
map(0x0c00, 0x1fff).ram();
}
static INPUT_PORTS_START(wy100)
INPUT_PORTS_END
void wy100_state::wy100(machine_config &config)
{
I8039(config, m_maincpu, 10.1376_MHz_XTAL); // INS8039N-11
m_maincpu->set_addrmap(AS_PROGRAM, &wy100_state::prg_map);
m_maincpu->set_addrmap(AS_IO, &wy100_state::io_map);
m_maincpu->p2_out_cb().set(FUNC(wy100_state::p2_w));
ADDRESS_MAP_BANK(config, m_bankdev);
m_bankdev->set_addrmap(0, &wy100_state::bank_map);
m_bankdev->set_data_width(8);
m_bankdev->set_addr_width(13);
m_bankdev->set_stride(0x100);
//SCN2651(config, "pci", 10.1376_MHz_XTAL / 2); // INS2651N
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(18.48_MHz_XTAL, 1000, 0, 800, 308, 0, 286);
screen.set_screen_update("crtc1", FUNC(i8276_device::screen_update));
I8276(config, m_crtc[0], 18.48_MHz_XTAL / 10).set_character_width(10);
I8276(config, m_crtc[1], 18.48_MHz_XTAL / 10).set_character_width(10);
}
ROM_START(wy100)
ROM_REGION(0x1000, "maincpu", 0)
ROM_LOAD("wy100_00401f.bin", 0x0000, 0x1000, CRC(1f71de8f) SHA1(2bd9f712aba8b44823ce0b3e111da7b472a1ab38))
ROM_REGION(0x0800, "chargen", 0)
ROM_LOAD("wy100_23-002-01c.bin", 0x0000, 0x0800, CRC(93c31537) SHA1(085e5ad110a76bee83e819a718a7d4cbfb8e07e7))
ROM_END
COMP(1981, wy100, 0, 0, wy100, wy100, wy100_state, empty_init, "Wyse Technology", "WY-100", MACHINE_IS_SKELETON)

122
src/mame/drivers/z29.cpp Normal file
View File

@ -0,0 +1,122 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/***************************************************************************
Skeleton driver for Zenith Z-29 (alias Heathkit H-29) video terminal.
****************************************************************************/
#include "emu.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/x2212.h"
#include "video/i8275.h"
#include "screen.h"
class z29_state : public driver_device
{
public:
z29_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_crtc(*this, "crtc%u", 1U)
, m_nvram(*this, "nvram")
, m_charmem(*this, "charmem")
, m_attrmem(*this, "attrmem")
, m_chargen(*this, "chargen")
{
}
void z29(machine_config &config);
private:
u8 dummy_psen_r();
DECLARE_WRITE8_MEMBER(crtc_w);
DECLARE_WRITE8_MEMBER(latch_12k_w);
void prg_map(address_map &map);
void ext_map(address_map &map);
required_device<mcs51_cpu_device> m_maincpu;
required_device_array<i8276_device, 2> m_crtc;
required_device<x2210_device> m_nvram;
required_shared_ptr<u8> m_charmem;
required_shared_ptr<u8> m_attrmem;
required_region_ptr<u8> m_chargen;
};
u8 z29_state::dummy_psen_r()
{
return 0x24;
}
WRITE8_MEMBER(z29_state::crtc_w)
{
m_crtc[0]->write(space, offset, data);
m_crtc[1]->write(space, offset, data);
}
WRITE8_MEMBER(z29_state::latch_12k_w)
{
m_nvram->store(!BIT(data, 0));
m_nvram->recall(!BIT(data, 3));
}
void z29_state::prg_map(address_map &map)
{
map(0x0000, 0x1fff).rom().region("maincpu", 0);
map(0x2000, 0xffff).r(FUNC(z29_state::dummy_psen_r));
}
void z29_state::ext_map(address_map &map)
{
map(0x2000, 0x2001).mirror(0xffe).r("crtc1", FUNC(i8276_device::read)).w(FUNC(z29_state::crtc_w));
map(0x3000, 0x3000).mirror(0xfff).w(FUNC(z29_state::latch_12k_w));
map(0x4000, 0x47ff).mirror(0x800).ram().share("attrmem");
map(0x5000, 0x57ff).mirror(0x800).ram().share("charmem");
map(0x7000, 0x703f).mirror(0xfc0).rw("nvram", FUNC(x2210_device::read), FUNC(x2210_device::write));
}
static INPUT_PORTS_START(z29)
INPUT_PORTS_END
void z29_state::z29(machine_config &config)
{
I8031(config, m_maincpu, 14.784_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &z29_state::prg_map);
m_maincpu->set_addrmap(AS_IO, &z29_state::ext_map);
m_maincpu->port_in_cb<1>().set_constant(0xfd); // hack around keyboard not working
X2210(config, m_nvram);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(14.784_MHz_XTAL, 880, 0, 640, 280, 0, 250);
screen.set_screen_update("crtc1", FUNC(i8276_device::screen_update));
I8276(config, m_crtc[0], 14.784_MHz_XTAL / 8).set_character_width(8);
m_crtc[0]->drq_wr_callback().set_inputline(m_maincpu, MCS51_INT0_LINE);
m_crtc[0]->irq_wr_callback().set_inputline(m_maincpu, MCS51_INT1_LINE);
I8276(config, m_crtc[1], 14.784_MHz_XTAL / 8).set_character_width(8);
I8021(config, "kbdmcu", 3.579545_MHz_XTAL).set_disable();
}
ROM_START(z29)
ROM_REGION(0x2000, "maincpu", 0)
ROM_LOAD("u440.bin", 0x0000, 0x1000, CRC(169b9517) SHA1(c18b6a193655a64808e9ae8765d3e54d13e6669e))
ROM_LOAD("u407.bin", 0x1000, 0x1000, CRC(b5aae8e6) SHA1(692e521a85d7e07647c66a660faa2041d1bfd785))
ROM_REGION(0x1000, "chargen", 0)
ROM_LOAD("u429.bin", 0x0000, 0x1000, CRC(5e3bc5bf) SHA1(18d73e3d74a9768bee8b063ea45891f955558ae7))
ROM_REGION(0x800, "kbdmcu", 0)
ROM_LOAD("444-100.bin", 0x000, 0x800, NO_DUMP)
ROM_END
COMP(1983, z29, 0, 0, z29, z29, z29_state, empty_init, "Zenith Data Systems", "Z-29", MACHINE_IS_SKELETON)

View File

@ -39299,6 +39299,9 @@ wwfsstaru7 // TA-0024 (c) 1989 (US, newer)
wwfsstaru6 // TA-0024 (c) 1989 (US)
wwfsstaru4 // TA-0024 (c) 1989 (US)
@source:wy100.cpp
wy100 // WY-100
@source:wyse.cpp
wy50 // WY-50
wy55 // WY-55
@ -39467,6 +39470,9 @@ z1013k69 //
z1013k76 //
z1013s60 //
@source:z29.cpp
z29 //
@source:z80dev.cpp
z80dev //

View File

@ -808,6 +808,7 @@ vtech_unk2.cpp
wangpc.cpp
wicat.cpp
wswan.cpp
wy100.cpp
wyse.cpp
x07.cpp
x1.cpp
@ -820,6 +821,7 @@ xor100.cpp
ymmu100.cpp
z100.cpp
z1013.cpp
z29.cpp
z80dev.cpp
z80ne.cpp
z88.cpp