mirror of
https://github.com/holub/mame
synced 2025-06-04 03:46:29 +03:00
wyse.cpp: Descramble all remaining sets and move to separate drivers
This commit is contained in:
parent
1d866d3203
commit
d0cb917f3f
@ -3692,8 +3692,9 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/wy150.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/wy30p.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/wy50.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/wy55.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/wy60.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/wy85.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/wyse.cpp",
|
||||
MAME_DIR .. "src/mame/machine/wy50kb.cpp",
|
||||
MAME_DIR .. "src/mame/machine/wy50kb.h",
|
||||
}
|
||||
|
104
src/mame/drivers/wy55.cpp
Normal file
104
src/mame/drivers/wy55.cpp
Normal file
@ -0,0 +1,104 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/***********************************************************************************************************************************
|
||||
|
||||
Skeleton driver for Wyse WY-55 and related terminals.
|
||||
|
||||
The WY-55's custom video gate array is numbered 211019-05. The WY-185 is believed to run on similar hardware.
|
||||
|
||||
***********************************************************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/mcs51/mcs51.h"
|
||||
//#include "machine/ins8250.h"
|
||||
//#include "machine/nvram.h"
|
||||
#include "screen.h"
|
||||
|
||||
class wy55_state : public driver_device
|
||||
{
|
||||
public:
|
||||
wy55_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_screen(*this, "screen")
|
||||
{
|
||||
}
|
||||
|
||||
void wy55(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void driver_start() override;
|
||||
|
||||
private:
|
||||
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void prog_map(address_map &map);
|
||||
void ext_map(address_map &map);
|
||||
|
||||
required_device<mcs51_cpu_device> m_maincpu;
|
||||
required_device<screen_device> m_screen;
|
||||
};
|
||||
|
||||
|
||||
void wy55_state::machine_start()
|
||||
{
|
||||
}
|
||||
|
||||
u32 wy55_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void wy55_state::prog_map(address_map &map)
|
||||
{
|
||||
// TODO: banking (probably selected by a port pin)
|
||||
map(0x0000, 0xffff).rom().region("program", 0);
|
||||
}
|
||||
|
||||
void wy55_state::ext_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x1fff).ram();
|
||||
map(0x8000, 0x97ff).ram();
|
||||
//map(0xf028, 0xf037).rw("uart", FUNC(pc16552_device::read), FUNC(pc16552_device::write));
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START(wy55)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void wy55_state::wy55(machine_config &config)
|
||||
{
|
||||
I8032(config, m_maincpu, 14.7456_MHz_XTAL); // exact type and clock divider not verified
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &wy55_state::prog_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &wy55_state::ext_map);
|
||||
|
||||
//NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 8K SRAM + battery?
|
||||
|
||||
//PC16552D(config, "uart", 14.7456_MHz_XTAL / 2); // 16C452 (divider not verified)
|
||||
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(49.4235_MHz_XTAL, 1530, 0, 1200, 369, 0, 338);
|
||||
//m_screen->set_raw(49.4235_MHz_XTAL * 2 / 3, 1050, 0, 800, 523, 0, 338);
|
||||
m_screen->set_screen_update(FUNC(wy55_state::screen_update));
|
||||
}
|
||||
|
||||
|
||||
ROM_START(wy55)
|
||||
ROM_REGION(0x20000, "program", 0)
|
||||
ROM_LOAD("251352-12.bin", 0x0000, 0x20000, CRC(efe41862) SHA1(52ee76d636b166fa10a37356aef81011a9b079cc)) // v2.1
|
||||
ROM_END
|
||||
|
||||
void wy55_state::driver_start()
|
||||
{
|
||||
uint8_t *rom = memregion("program")->base();
|
||||
for (offs_t base = 0x00000; base < 0x20000; base += 0x4000)
|
||||
{
|
||||
std::vector<uint8_t> orig(&rom[base], &rom[base + 0x4000]);
|
||||
|
||||
for (offs_t offset = 0; offset < 0x4000; offset++)
|
||||
rom[base | offset] = bitswap<8>(orig[bitswap<14>(offset, 3, 8, 2, 0, 7, 4, 9, 10, 11, 12, 13, 5, 1, 6)], 3, 4, 5, 2, 6, 1, 7, 0);
|
||||
}
|
||||
}
|
||||
|
||||
COMP(1993, wy55, 0, 0, wy55, wy55, wy55_state, empty_init, "Wyse Technology", "WY-55 (v2.1)", MACHINE_IS_SKELETON)
|
121
src/mame/drivers/wy60.cpp
Normal file
121
src/mame/drivers/wy60.cpp
Normal file
@ -0,0 +1,121 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/***********************************************************************************************************************************
|
||||
|
||||
Skeleton driver for Wyse WY-60 terminal.
|
||||
|
||||
***********************************************************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/mcs51/mcs51.h"
|
||||
//#include "machine/i2cmem.h"
|
||||
#include "machine/mc2661.h"
|
||||
#include "screen.h"
|
||||
|
||||
class wy60_state : public driver_device
|
||||
{
|
||||
public:
|
||||
wy60_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_screen(*this, "screen")
|
||||
, m_sio(*this, "sio")
|
||||
{
|
||||
}
|
||||
|
||||
void wy60(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void driver_start() override;
|
||||
|
||||
private:
|
||||
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void prog_map(address_map &map);
|
||||
void ext_map(address_map &map);
|
||||
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<mc2661_device> m_sio;
|
||||
};
|
||||
|
||||
|
||||
void wy60_state::machine_start()
|
||||
{
|
||||
}
|
||||
|
||||
u32 wy60_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void wy60_state::prog_map(address_map &map)
|
||||
{
|
||||
// TODO: EA banking?
|
||||
map(0x0000, 0xffff).rom().region("wyseprog", 0);
|
||||
}
|
||||
|
||||
void wy60_state::ext_map(address_map &map)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START(wy60)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void wy60_state::wy60(machine_config &config)
|
||||
{
|
||||
i8051_device &maincpu(I8051(config, "maincpu", 11_MHz_XTAL)); // P8051AN-40196
|
||||
maincpu.set_addrmap(AS_PROGRAM, &wy60_state::prog_map);
|
||||
maincpu.set_addrmap(AS_IO, &wy60_state::ext_map);
|
||||
|
||||
//X2404(config, m_eeprom);
|
||||
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(26.58_MHz_XTAL, 1000, 0, 800, 443, 0, 416); // 26.580 kHz horizontal
|
||||
//m_screen->set_raw(39.71_MHz_XTAL, 1494, 0, 1188, 443, 0, 416);
|
||||
m_screen->set_screen_update(FUNC(wy60_state::screen_update));
|
||||
|
||||
MC2661(config, m_sio, 4.9152_MHz_XTAL); // SCN2661B
|
||||
}
|
||||
|
||||
// CPU: 8051(202008-03)
|
||||
// EPROM: 27512(193003-01)
|
||||
// Video: 211003-02/205001-02
|
||||
// RAM: 2064 (2064/2016/2016/2064)
|
||||
// NVRAM: X2404
|
||||
// UART: 2661
|
||||
// XTALs: 39.710, 26.580, 11.000, 4.9152
|
||||
|
||||
ROM_START(wy60)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("202008-03.bin", 0x0000, 0x1000, NO_DUMP)
|
||||
|
||||
ROM_REGION(0x10000, "wyseprog", 0)
|
||||
ROM_LOAD("193003-01.u9", 0x00000, 0x10000, CRC(26de0ea4) SHA1(91409f98a3990b514fbcb7de2eb45944bf5b95bc))
|
||||
ROM_END
|
||||
|
||||
ROM_START(wy60a)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("202008-03.bin", 0x0000, 0x1000, NO_DUMP)
|
||||
|
||||
ROM_REGION(0x10000, "wyseprog", 0)
|
||||
ROM_LOAD("wy-60_4k.u6", 0x00000, 0x10000, CRC(6daf2824) SHA1(23cd039ec7ae71b0742e8eebf75be8cd5992e3fd))
|
||||
ROM_END
|
||||
|
||||
void wy60_state::driver_start()
|
||||
{
|
||||
uint8_t *rom = memregion("wyseprog")->base();
|
||||
for (offs_t base = 0x00000; base < 0x10000; base += 0x2000)
|
||||
{
|
||||
std::vector<uint8_t> orig(&rom[base], &rom[base + 0x2000]);
|
||||
|
||||
for (offs_t offset = 0; offset < 0x2000; offset++)
|
||||
rom[base | offset] = bitswap<8>(orig[bitswap<13>(offset, 0, 6, 9, 4, 2, 1, 3, 5, 7, 8, 10, 11, 12)], 6, 0, 5, 1, 4, 2, 3, 7);
|
||||
}
|
||||
|
||||
// FIXME: remove once internal ROM is dumped
|
||||
std::copy_n(rom, 0x1000, memregion("maincpu")->base());
|
||||
}
|
||||
|
||||
COMP(1986, wy60, 0, 0, wy60, wy60, wy60_state, empty_init, "Wyse Technology", "WY-60 (set 1)", MACHINE_IS_SKELETON)
|
||||
COMP(1986, wy60a, wy60, 0, wy60, wy60, wy60_state, empty_init, "Wyse Technology", "WY-60 (set 2)", MACHINE_IS_SKELETON)
|
@ -1,70 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:
|
||||
/***********************************************************************************************************************************
|
||||
|
||||
2017-10-27 Skeleton
|
||||
|
||||
Wyse terminals.
|
||||
|
||||
WY-60: SC67336P, P8051AN-40196, SCN2661B, 7219-0629, 4.9152, 11.000, 39.710, 26.580, Beeper
|
||||
|
||||
CPU EPROM VIDEO RAM Row Buffer Font RAM NVRAM Serial Dot Clk CPU Clk Ser Clk
|
||||
WY-55 8032 (251352-12) 211019-05 8k (8kx2) battery 16C452 49.423 14.7456
|
||||
WY-60 8051(202008-03) 27512(193003-01) 211003-02/205001-02 2064 ( 2064/2016/2016/2064) X24C04 2661 39.710/26.580 11.000 4.9152
|
||||
|
||||
|
||||
************************************************************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/mcs51/mcs51.h"
|
||||
|
||||
class wyse_state : public driver_device
|
||||
{
|
||||
public:
|
||||
wyse_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
// , m_maincpu(*this, "maincpu")
|
||||
{ }
|
||||
|
||||
void wyse(machine_config &config);
|
||||
|
||||
private:
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
// required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
void wyse_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xffff).rom();
|
||||
}
|
||||
|
||||
void wyse_state::io_map(address_map &map)
|
||||
{
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( wyse )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void wyse_state::wyse(machine_config &config)
|
||||
{
|
||||
i8031_device &maincpu(I8031(config, "maincpu", 11'000'000));
|
||||
maincpu.set_addrmap(AS_PROGRAM, &wyse_state::mem_map);
|
||||
maincpu.set_addrmap(AS_IO, &wyse_state::io_map);
|
||||
}
|
||||
|
||||
ROM_START( wy55 )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD( "251352-12.bin", 0x0000, 0x20000, CRC(efe41862) SHA1(52ee76d636b166fa10a37356aef81011a9b079cc) ) // v2.1
|
||||
ROM_END
|
||||
|
||||
ROM_START( wy60 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "193003-01.u9", 0x0000, 0x10000, CRC(26de0ea4) SHA1(91409f98a3990b514fbcb7de2eb45944bf5b95bc) )
|
||||
ROM_REGION( 0x10000, "user1", 0 )
|
||||
ROM_LOAD( "wy-60_4k.u6", 0x0000, 0x10000, CRC(6daf2824) SHA1(23cd039ec7ae71b0742e8eebf75be8cd5992e3fd) )
|
||||
ROM_END
|
||||
|
||||
COMP( 1986, wy60, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-60", MACHINE_IS_SKELETON )
|
||||
COMP( 1993, wy55, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-55", MACHINE_IS_SKELETON )
|
@ -39847,13 +39847,16 @@ wy30p // WY-30+
|
||||
wy50 // WY-50
|
||||
wy75 // WY-75
|
||||
|
||||
@source:wy55.cpp
|
||||
wy55 // WY-55
|
||||
|
||||
@source:wy60.cpp
|
||||
wy60 // WY-60
|
||||
wy60a // WY-60
|
||||
|
||||
@source:wy85.cpp
|
||||
wy85 // WY-85
|
||||
|
||||
@source:wyse.cpp
|
||||
wy55 // WY-55
|
||||
wy60 // WY-60
|
||||
|
||||
@source:wyvernf0.cpp
|
||||
wyvernf0 // A39 (c) 1985 Taito Corporation (Japan)
|
||||
|
||||
|
@ -877,8 +877,9 @@ wy100.cpp
|
||||
wy150.cpp
|
||||
wy30p.cpp
|
||||
wy50.cpp
|
||||
wy55.cpp
|
||||
wy60.cpp
|
||||
wy85.cpp
|
||||
wyse.cpp
|
||||
x07.cpp
|
||||
x1.cpp
|
||||
x1twin.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user