mirror of
https://github.com/holub/mame
synced 2025-10-07 09:25:34 +03:00
scn2674/scn2672: Remove MCFG macros (nw)
This commit is contained in:
parent
80adcb6f16
commit
4a4898a6b2
@ -6,27 +6,8 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#define MCFG_SCN2672_INTR_CALLBACK(_intr) \
|
||||
downcast<scn2672_device &>(*device).set_intr_callback(DEVCB_##_intr);
|
||||
|
||||
#define MCFG_SCN2672_CHARACTER_WIDTH(_value) \
|
||||
downcast<scn2672_device &>(*device).set_character_width(_value);
|
||||
|
||||
#define MCFG_SCN2672_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
|
||||
downcast<scn2672_device &>(*device).set_display_callback(scn2672_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this));
|
||||
|
||||
#define SCN2672_DRAW_CHARACTER_MEMBER(_name) void _name(bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)
|
||||
|
||||
|
||||
#define MCFG_SCN2674_INTR_CALLBACK(_intr) \
|
||||
downcast<scn2674_device &>(*device).set_intr_callback(DEVCB_##_intr);
|
||||
|
||||
#define MCFG_SCN2674_CHARACTER_WIDTH(_value) \
|
||||
downcast<scn2674_device &>(*device).set_character_width(_value);
|
||||
|
||||
#define MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
|
||||
downcast<scn2674_device &>(*device).set_display_callback(scn2674_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this));
|
||||
|
||||
#define SCN2674_DRAW_CHARACTER_MEMBER(_name) void _name(bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)
|
||||
|
||||
|
||||
@ -40,9 +21,22 @@ public:
|
||||
typedef device_delegate<void (bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)> draw_character_delegate;
|
||||
|
||||
// static configuration
|
||||
template <class Object> devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward<Object>(cb)); }
|
||||
auto intr_callback() { return m_intr_cb.bind(); }
|
||||
void set_character_width(int value) { m_hpixels_per_column = value; }
|
||||
template <typename Object> void set_display_callback(Object &&cb) { m_display_cb = std::forward<Object>(cb); }
|
||||
template <class FunctionClass>
|
||||
void set_display_callback(void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint16_t, bool, bool, bool, bool, bool), const char *name)
|
||||
{
|
||||
set_display_callback(draw_character_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
template <class FunctionClass>
|
||||
void set_display_callback(const char *devname, void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint16_t, bool, bool, bool, bool, bool), const char *name)
|
||||
{
|
||||
set_display_callback(draw_character_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
void set_display_callback(draw_character_delegate callback)
|
||||
{
|
||||
m_display_cb = callback;
|
||||
}
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
|
@ -58,24 +58,25 @@ static INPUT_PORTS_START(ampex210p)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(ampex210_state::ampex210p)
|
||||
MCFG_DEVICE_ADD("maincpu", Z80, 4'000'000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||
MCFG_DEVICE_IO_MAP(io_map)
|
||||
void ampex210_state::ampex210p(machine_config &config)
|
||||
{
|
||||
Z80(config, m_maincpu, 4'000'000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ex210_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &ex210_state::io_map);
|
||||
|
||||
mos6551_device &acia(MOS6551(config, "acia", 1'843'200));
|
||||
acia.irq_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
|
||||
|
||||
MCFG_DEVICE_ADD("pvtc", SCN2672, 2'178'000)
|
||||
MCFG_SCN2672_INTR_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
|
||||
MCFG_SCN2672_CHARACTER_WIDTH(10)
|
||||
MCFG_SCN2672_DRAW_CHARACTER_CALLBACK_OWNER(ampex210_state, draw_character)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2672_device &pvtc(SCN2672(config, "pvtc", 2'178'000));
|
||||
pvtc.intr_callback().set_inputline("maincpu", INPUT_LINE_NMI);
|
||||
pvtc.set_character_width(10);
|
||||
pvtc.set_display_callback(FUNC(ampex210_state::draw_character));
|
||||
pvtc.set_screen("screen");
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(21'780'000, 1000, 0, 800, 363, 0, 300) // clock guessed
|
||||
MCFG_SCREEN_UPDATE_DEVICE("pvtc", scn2672_device, screen_update)
|
||||
MACHINE_CONFIG_END
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(21'780'000, 1000, 0, 800, 363, 0, 300); // clock guessed
|
||||
screen.set_screen_update("pvtc", FUNC(scn2672_device::screen_update));
|
||||
}
|
||||
|
||||
|
||||
ROM_START(ampex210p) // Z80 (+6551,MC2672,3515260-01, 3 xtals, speaker) // 8k ram // amber
|
||||
|
@ -42,7 +42,7 @@ private:
|
||||
void keyboard_map(address_map &map);
|
||||
void kbd_io_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<i8085a_cpu_device> m_maincpu;
|
||||
required_device<screen_device> m_screen;
|
||||
//required_region_ptr<u8> m_p_chargen;
|
||||
};
|
||||
@ -106,35 +106,36 @@ static INPUT_PORTS_START( cit220p )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(cit220_state::cit220p)
|
||||
MCFG_DEVICE_ADD("maincpu", I8085A, 6000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||
MCFG_DEVICE_IO_MAP(io_map)
|
||||
MCFG_I8085A_SOD(WRITELINE(*this, cit220_state, sod_w))
|
||||
void cit220_state::cit220p(machine_config &config)
|
||||
{
|
||||
I8085A(config, m_maincpu, 6000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &cit220_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &cit220_state::io_map);
|
||||
m_maincpu->out_sod_func().set(FUNC(cit220_state::sod_w));
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(24553200, 1580, 0, 1320, 259, 0, 240) // dot clock guessed
|
||||
MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(24553200, 1580, 0, 1320, 259, 0, 240); // dot clock guessed
|
||||
m_screen->set_screen_update("avdc", FUNC(scn2674_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("avdc", SCN2674, 24553200 / 10)
|
||||
MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", I8085_RST65_LINE))
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(10)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(cit220_state, draw_character)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, char_map)
|
||||
MCFG_DEVICE_ADDRESS_MAP(1, attr_map)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2674_device &avdc(SCN2674(config, "avdc", 24553200 / 10));
|
||||
avdc.intr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
|
||||
avdc.set_character_width(10);
|
||||
avdc.set_display_callback(FUNC(cit220_state::draw_character));
|
||||
avdc.set_addrmap(0, &cit220_state::char_map);
|
||||
avdc.set_addrmap(1, &cit220_state::attr_map);
|
||||
avdc.set_screen(m_screen);
|
||||
|
||||
scn2681_device &duart(SCN2681(config, "duart", 3686400));
|
||||
duart.irq_cb().set_inputline("maincpu", I8085_RST55_LINE);
|
||||
duart.outport_cb().set("usart", FUNC(i8251_device::write_txc)).bit(3); // 9600 baud?
|
||||
duart.outport_cb().append("usart", FUNC(i8251_device::write_rxc)).bit(3);
|
||||
|
||||
MCFG_DEVICE_ADD("usart", I8251, 3000000)
|
||||
I8251(config, "usart", 3000000);
|
||||
|
||||
MCFG_DEVICE_ADD("kbdmcu", I8035, 4608000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(keyboard_map)
|
||||
MCFG_DEVICE_IO_MAP(kbd_io_map)
|
||||
MACHINE_CONFIG_END
|
||||
mcs48_cpu_device &kbdmcu(I8035(config, "kbdmcu", 4608000));
|
||||
kbdmcu.set_addrmap(AS_PROGRAM, &cit220_state::keyboard_map);
|
||||
kbdmcu.set_addrmap(AS_IO, &cit220_state::kbd_io_map);
|
||||
}
|
||||
|
||||
|
||||
ROM_START( cit220p )
|
||||
|
@ -94,40 +94,42 @@ void microterm_state::mt5510_io_map(address_map &map)
|
||||
static INPUT_PORTS_START( microterm )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_CONFIG_START(microterm_state::mt420)
|
||||
MCFG_DEVICE_ADD("maincpu", Z80, 4'000'000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mt420_mem_map)
|
||||
MCFG_DEVICE_IO_MAP(mt420_io_map)
|
||||
void microterm_state::mt420(machine_config &config)
|
||||
{
|
||||
Z80(config, m_maincpu, 4'000'000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, µterm_state::mt420_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, µterm_state::mt420_io_map);
|
||||
|
||||
scn2681_device &duart(SCN2681(config, "duart", XTAL(3'686'400))); // MC2681
|
||||
scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL)); // MC2681
|
||||
duart.irq_cb().set_inputline(m_maincpu, 0);
|
||||
duart.outport_cb().set("eeprom", FUNC(eeprom_serial_93cxx_device::di_write)).bit(5);
|
||||
duart.outport_cb().append("eeprom", FUNC(eeprom_serial_93cxx_device::cs_write)).bit(4);
|
||||
duart.outport_cb().append("eeprom", FUNC(eeprom_serial_93cxx_device::clk_write)).bit(3);
|
||||
|
||||
MC2661(config, "aci", XTAL(3'686'400)); // SCN2641
|
||||
MC2661(config, "aci", 3.6864_MHz_XTAL); // SCN2641
|
||||
|
||||
EEPROM_93C46_16BIT(config, "eeprom").do_callback().set("duart", FUNC(scn2681_device::ip6_w));
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL(9'877'680), 612, 0, 480, 269, 0, 250)
|
||||
//MCFG_SCREEN_RAW_PARAMS(XTAL(15'300'720), 948, 0, 792, 269, 0, 250)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(9.87768_MHz_XTAL, 612, 0, 480, 269, 0, 250);
|
||||
//screen.set_raw(15.30072_MHz_XTAL, 948, 0, 792, 269, 0, 250);
|
||||
screen.set_screen_update("avdc", FUNC(scn2674_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("avdc", SCN2674, XTAL(9'877'680) / 6)
|
||||
//MCFG_DEVICE_CLOCK(XTAL(15'300'720) / 6)
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(6)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(microterm_state, draw_character)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, mt420_vram_map)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
MACHINE_CONFIG_END
|
||||
scn2674_device &avdc(SCN2674(config, "avdc", 9.87768_MHz_XTAL / 6));
|
||||
//avdc.set_clock(15.30072_MHz_XTAL / 6);
|
||||
avdc.set_character_width(6);
|
||||
avdc.set_display_callback(FUNC(microterm_state::draw_character));
|
||||
avdc.set_addrmap(0, µterm_state::mt420_vram_map);
|
||||
avdc.set_screen("screen");
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(microterm_state::mt5510)
|
||||
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(6'000'000))
|
||||
MCFG_DEVICE_PROGRAM_MAP(mt5510_mem_map)
|
||||
MCFG_DEVICE_IO_MAP(mt5510_io_map)
|
||||
void microterm_state::mt5510(machine_config &config)
|
||||
{
|
||||
Z80(config, m_maincpu, 6_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, µterm_state::mt5510_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, µterm_state::mt5510_io_map);
|
||||
|
||||
scn2681_device &duart(SCN2681(config, "duart", XTAL(3'686'400)));
|
||||
scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL));
|
||||
duart.irq_cb().set_inputline(m_maincpu, 0);
|
||||
duart.outport_cb().set("eeprom1", FUNC(eeprom_serial_93cxx_device::di_write)).bit(6);
|
||||
duart.outport_cb().append("eeprom2", FUNC(eeprom_serial_93cxx_device::di_write)).bit(5);
|
||||
@ -140,10 +142,10 @@ MACHINE_CONFIG_START(microterm_state::mt5510)
|
||||
|
||||
EEPROM_93C46_16BIT(config, "eeprom2").do_callback().set("duart", FUNC(scn2681_device::ip5_w));
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL(45'830'400) / 2, 1120, 0, 960, 341, 0, 300) // wild guess at resolution
|
||||
MCFG_SCREEN_UPDATE_DRIVER(microterm_state, mt5510_update)
|
||||
MACHINE_CONFIG_END
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(45.8304_MHz_XTAL / 2, 1120, 0, 960, 341, 0, 300); // wild guess at resolution
|
||||
screen.set_screen_update(FUNC(microterm_state::mt5510_update));
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************************************************
|
||||
|
@ -1295,11 +1295,11 @@ MACHINE_CONFIG_START(mpu4vid_state::mpu4_vid)
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
|
||||
|
||||
MCFG_DEVICE_ADD("scn2674_vid", SCN2674, 0)
|
||||
MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("video", M68K_IRQ_3))
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(8)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(mpu4vid_state, display_pixels)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, mpu4_vram)
|
||||
SCN2674(config, m_scn2674, 0);
|
||||
m_scn2674->intr_callback().set_inputline("video", M68K_IRQ_3);
|
||||
m_scn2674->set_character_width(8);
|
||||
m_scn2674->set_display_callback(FUNC(mpu4vid_state::display_pixels));
|
||||
m_scn2674->set_addrmap(0, &mpu4vid_state::mpu4_vram);
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("video", M68000, VIDEO_MASTER_CLOCK )
|
||||
|
@ -1008,12 +1008,12 @@ MACHINE_CONFIG_START(octopus_state::octopus)
|
||||
// MCFG_SCREEN_PALETTE("palette")
|
||||
// MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", SCN2674, 0) // character clock can be selectable, either 16MHz or 17.6MHz
|
||||
MCFG_SCN2674_INTR_CALLBACK(WRITELINE("pic_slave", pic8259_device, ir0_w))
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(8)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(octopus_state, display_pixels)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, octopus_vram)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
SCN2674(config, m_crtc, 0); // character clock can be selectable, either 16MHz or 17.6MHz
|
||||
m_crtc->intr_callback().set("pic_slave", FUNC(pic8259_device::ir0_w));
|
||||
m_crtc->set_character_width(8);
|
||||
m_crtc->set_display_callback(FUNC(octopus_state::display_pixels));
|
||||
m_crtc->set_addrmap(0, &octopus_state::octopus_vram);
|
||||
m_crtc->set_screen("screen");
|
||||
|
||||
ADDRESS_MAP_BANK(config, "z80_bank").set_map(&octopus_state::octopus_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x10000);
|
||||
|
||||
|
@ -118,15 +118,15 @@ MACHINE_CONFIG_START(qvt201_state::qvt201)
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // TC5516APL-2 or uPD446C-2 + battery
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(48.654_MHz_XTAL / 3, 102 * 10, 0, 80 * 10, 265, 0, 250)
|
||||
//MCFG_SCREEN_RAW_PARAMS(48.654_MHz_XTAL / 2, 170 * 9, 0, 132 * 9, 265, 0, 250)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2672_device, screen_update)
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(48.654_MHz_XTAL / 3, 102 * 10, 0, 80 * 10, 265, 0, 250);
|
||||
//screen.set_raw(48.654_MHz_XTAL / 2, 170 * 9, 0, 132 * 9, 265, 0, 250);
|
||||
screen.set_screen_update("crtc", FUNC(scn2672_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", SCN2672, 48.654_MHz_XTAL / 30)
|
||||
MCFG_SCN2672_CHARACTER_WIDTH(10) // 9 in 132-column mode
|
||||
MCFG_SCN2672_INTR_CALLBACK(WRITELINE("mainint", input_merger_device, in_w<0>))
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2672_device &crtc(SCN2672(config, "crtc", 48.654_MHz_XTAL / 30));
|
||||
crtc.set_character_width(10); // 9 in 132-column mode
|
||||
crtc.intr_callback().set("mainint", FUNC(input_merger_device::in_w<0>));
|
||||
crtc.set_screen("screen");
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -86,27 +86,30 @@ void tr175_state::ramdac_map(address_map &map)
|
||||
static INPUT_PORTS_START( tr175 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_CONFIG_START(tr175_state::tr175)
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 12'000'000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||
void tr175_state::tr175(machine_config &config)
|
||||
{
|
||||
M68000(config, m_maincpu, 12'000'000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tr175_state::mem_map);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL(28'322'000), 900, 0, 720, 449, 0, 416) // guess
|
||||
MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(28.322_MHz_XTAL, 900, 0, 720, 449, 0, 416); // guess
|
||||
screen.set_screen_update("avdc", FUNC(scn2674_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("avdc", SCN2674, XTAL(28'322'000) / 18) // guess
|
||||
MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(18) // guess
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(tr175_state, draw_character)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, vram_map)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2674_device &avdc(SCN2674(config, "avdc", 28.322_MHz_XTAL / 18)); // guess
|
||||
avdc.intr_callback().set_inputline("maincpu", M68K_IRQ_2);
|
||||
avdc.set_character_width(18); // guess
|
||||
avdc.set_display_callback(FUNC(tr175_state::draw_character));
|
||||
avdc.set_addrmap(0, &tr175_state::vram_map);
|
||||
avdc.set_screen("screen");
|
||||
|
||||
MCFG_DEVICE_ADD("duart", SCN2681, XTAL(11'059'200) / 3) // is this the right clock?
|
||||
MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_1))
|
||||
scn2681_device &duart(SCN2681(config, "duart", 11.0592_MHz_XTAL / 3)); // is this the right clock?
|
||||
duart.irq_cb().set_inputline("maincpu", M68K_IRQ_1);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 0x100)
|
||||
MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
|
||||
MACHINE_CONFIG_END
|
||||
PALETTE(config, "palette", 0x100);
|
||||
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0));
|
||||
ramdac.set_addrmap(0, &tr175_state::ramdac_map);
|
||||
ramdac.set_palette("palette");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -82,29 +82,29 @@ void tv955_state::mem_map(address_map &map)
|
||||
static INPUT_PORTS_START( tv955 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_CONFIG_START(tv955_state::tv955)
|
||||
MCFG_DEVICE_ADD("maincpu", M65C02, 19.3396_MHz_XTAL / 9)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||
void tv955_state::tv955(machine_config &config)
|
||||
{
|
||||
M65C02(config, m_maincpu, 19.3396_MHz_XTAL / 9);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tv955_state::mem_map);
|
||||
|
||||
MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
|
||||
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", m6502_device::IRQ_LINE))
|
||||
INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, m6502_device::IRQ_LINE);
|
||||
|
||||
MCFG_DEVICE_ADD("keyboard", I8049, 5.7143_MHz_XTAL)
|
||||
I8049(config, "keyboard", 5.7143_MHz_XTAL);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // HM6116LP-4 + 3.2V battery
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(19.3396_MHz_XTAL, 846, 0, 720, 381, 0, 364)
|
||||
//MCFG_SCREEN_RAW_PARAMS(31.684_MHz_XTAL, 1386, 0, 1188, 381, 0, 364)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2674_device, screen_update)
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(19.3396_MHz_XTAL, 846, 0, 720, 381, 0, 364);
|
||||
//screen.set_raw(31.684_MHz_XTAL, 1386, 0, 1188, 381, 0, 364);
|
||||
screen.set_screen_update("crtc", FUNC(scn2674_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", SCN2674, 19.3396_MHz_XTAL / 9)
|
||||
SCN2674(config, m_crtc, 19.3396_MHz_XTAL / 9);
|
||||
// Character clock is 31.684_MHz_XTAL / 9 in 132-column mode
|
||||
// Character cells are 9 pixels wide by 14 pixels high
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(9)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(tv955_state, draw_character)
|
||||
MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", m6502_device::NMI_LINE))
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
m_crtc->set_character_width(9);
|
||||
m_crtc->set_display_callback(FUNC(tv955_state::draw_character));
|
||||
m_crtc->intr_callback().set_inputline(m_maincpu, m6502_device::NMI_LINE);
|
||||
m_crtc->set_screen("screen");
|
||||
|
||||
MOS6551(config, m_hostuart, 0);
|
||||
m_hostuart->set_xtal(3.6864_MHz_XTAL);
|
||||
@ -117,7 +117,7 @@ MACHINE_CONFIG_START(tv955_state::tv955)
|
||||
mos6551_device &keybuart(MOS6551(config, "keybuart", 0));
|
||||
keybuart.set_xtal(3.6864_MHz_XTAL / 2);
|
||||
keybuart.irq_handler().set("mainirq", FUNC(input_merger_device::in_w<2>));
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
/**************************************************************************************************************
|
||||
|
||||
|
@ -70,30 +70,31 @@ void tv965_state::program_map(address_map &map)
|
||||
static INPUT_PORTS_START( tv965 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_CONFIG_START(tv965_state::tv965)
|
||||
MCFG_DEVICE_ADD("maincpu", G65816, 44.4528_MHz_XTAL / 10)
|
||||
MCFG_DEVICE_DATA_MAP(mem_map)
|
||||
MCFG_DEVICE_PROGRAM_MAP(program_map)
|
||||
void tv965_state::tv965(machine_config &config)
|
||||
{
|
||||
G65816(config, m_maincpu, 44.4528_MHz_XTAL / 10);
|
||||
m_maincpu->set_addrmap(AS_DATA, &tv965_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tv965_state::program_map);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // CXK5864BP-10L + battery
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(26.9892_MHz_XTAL, 1020, 0, 800, 441, 0, 416)
|
||||
//MCFG_SCREEN_RAW_PARAMS(44.4528_MHz_XTAL, 1680, 0, 1320, 441, 0, 416)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2672_device, screen_update)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(26.9892_MHz_XTAL, 1020, 0, 800, 441, 0, 416);
|
||||
//m_screen->set_raw(44.4528_MHz_XTAL, 1680, 0, 1320, 441, 0, 416);
|
||||
m_screen->set_screen_update("crtc", FUNC(scn2672_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", SCN2672, 26.9892_MHz_XTAL / 10)
|
||||
MCFG_SCN2672_CHARACTER_WIDTH(10)
|
||||
MCFG_SCN2672_DRAW_CHARACTER_CALLBACK_OWNER(tv965_state, draw_character)
|
||||
MCFG_SCN2672_INTR_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2672_device &crtc(SCN2672(config, "crtc", 26.9892_MHz_XTAL / 10));
|
||||
crtc.set_character_width(10);
|
||||
crtc.set_display_callback(FUNC(tv965_state::draw_character));
|
||||
crtc.intr_callback().set_inputline("maincpu", INPUT_LINE_NMI);
|
||||
crtc.set_screen("screen");
|
||||
|
||||
mos6551_device &acia1(MOS6551(config, "acia1", 0));
|
||||
acia1.set_xtal(3.6864_MHz_XTAL / 2); // divider not verified, possibly even programmable
|
||||
|
||||
mos6551_device &acia2(MOS6551(config, "acia2", 0));
|
||||
acia2.set_xtal(3.6864_MHz_XTAL / 2); // divider not verified, possibly even programmable
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
/**************************************************************************************************************
|
||||
|
||||
|
@ -107,17 +107,18 @@ void v550_state::machine_start()
|
||||
m_usart->write_cts(0);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(v550_state::v550)
|
||||
MCFG_DEVICE_ADD("maincpu", Z80, 34.846_MHz_XTAL / 16) // NEC D780C (2.177875 MHz verified)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||
MCFG_DEVICE_IO_MAP(io_map)
|
||||
void v550_state::v550(machine_config &config)
|
||||
{
|
||||
Z80(config, m_maincpu, 34.846_MHz_XTAL / 16); // NEC D780C (2.177875 MHz verified)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &v550_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &v550_state::io_map);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // NEC D444C-2 + battery
|
||||
|
||||
MCFG_DEVICE_ADD("gdc", UPD7220, 34.846_MHz_XTAL / 16) // NEC D7220D (2.177875 MHz verified)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
upd7220_device &gdc(UPD7220(config, "gdc", 34.846_MHz_XTAL / 16)); // NEC D7220D (2.177875 MHz verified)
|
||||
gdc.set_screen("screen");
|
||||
|
||||
MCFG_DEVICE_ADD("ppi", I8255, 0) // NEC D8255AC-5
|
||||
I8255(config, "ppi"); // NEC D8255AC-5
|
||||
|
||||
I8251(config, m_usart, 34.846_MHz_XTAL / 16); // NEC D8251AC
|
||||
m_usart->rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>));
|
||||
@ -137,21 +138,21 @@ MACHINE_CONFIG_START(v550_state::v550)
|
||||
brg2.fr_handler().set("usart", FUNC(i8251_device::write_txc));
|
||||
brg2.fr_handler().append("usart", FUNC(i8251_device::write_rxc));
|
||||
|
||||
MCFG_DEVICE_ADD("kbdmcu", I8035, 4'608'000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(kbd_map)
|
||||
mcs48_cpu_device &kbdmcu(I8035(config, "kbdmcu", 4'608'000));
|
||||
kbdmcu.set_addrmap(AS_PROGRAM, &v550_state::kbd_map);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(34.846_MHz_XTAL, 19 * 102, 0, 19 * 80, 295, 0, 272)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(v550_state, screen_update)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(34.846_MHz_XTAL, 19 * 102, 0, 19 * 80, 295, 0, 272);
|
||||
m_screen->set_screen_update(FUNC(v550_state::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("pvtc", SCN2672, 34.846_MHz_XTAL / 19)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, pvtc_char_map)
|
||||
MCFG_DEVICE_ADDRESS_MAP(1, pvtc_attr_map)
|
||||
MCFG_SCN2672_CHARACTER_WIDTH(19)
|
||||
MCFG_SCN2672_INTR_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2672_device &pvtc(SCN2672(config, "pvtc", 34.846_MHz_XTAL / 19));
|
||||
pvtc.set_addrmap(0, &v550_state::pvtc_char_map);
|
||||
pvtc.set_addrmap(1, &v550_state::pvtc_attr_map);
|
||||
pvtc.set_character_width(19);
|
||||
pvtc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
pvtc.set_screen("screen");
|
||||
// SCB2673 clock verified at 17.423 MHz
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
|
||||
ROM_START( v550 )
|
||||
|
@ -22,7 +22,8 @@ public:
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_screen(*this, "screen")
|
||||
, m_p_chargen(*this, "chargen")
|
||||
, m_avdc(*this, "avdc")
|
||||
, m_chargen(*this, "chargen")
|
||||
{ }
|
||||
|
||||
void vp122(machine_config &config);
|
||||
@ -39,7 +40,8 @@ private:
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<screen_device> m_screen;
|
||||
required_region_ptr<u8> m_p_chargen;
|
||||
required_device<scn2674_device> m_avdc;
|
||||
required_region_ptr<u8> m_chargen;
|
||||
};
|
||||
|
||||
|
||||
@ -87,25 +89,26 @@ void vp122_state::attr_map(address_map &map)
|
||||
static INPUT_PORTS_START( vp122 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_CONFIG_START(vp122_state::vp122)
|
||||
MCFG_DEVICE_ADD("maincpu", I8085A, 8_MHz_XTAL)
|
||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||
MCFG_DEVICE_IO_MAP(io_map)
|
||||
void vp122_state::vp122(machine_config &config)
|
||||
{
|
||||
I8085A(config, m_maincpu, 8_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &vp122_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &vp122_state::io_map);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // MK48Z02
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(14.916_MHz_XTAL, 960, 0, 800, 259, 0, 240)
|
||||
//MCFG_SCREEN_RAW_PARAMS(22.096_MHz_XTAL, 1422, 0, 1188, 259, 0, 240)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(14.916_MHz_XTAL, 960, 0, 800, 259, 0, 240);
|
||||
//m_screen->set_raw(22.096_MHz_XTAL, 1422, 0, 1188, 259, 0, 240);
|
||||
m_screen->set_screen_update("avdc", FUNC(scn2674_device::screen_update));
|
||||
|
||||
MCFG_DEVICE_ADD("avdc", SCN2674, 14.916_MHz_XTAL / 10)
|
||||
MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", I8085_RST65_LINE))
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(10) // 9 in 132-column modes
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(vp122_state, draw_character)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, char_map)
|
||||
MCFG_DEVICE_ADDRESS_MAP(1, attr_map)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
SCN2674(config, m_avdc, 14.916_MHz_XTAL / 10);
|
||||
m_avdc->intr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
|
||||
m_avdc->set_character_width(10); // 9 in 132-column modes
|
||||
m_avdc->set_display_callback(FUNC(vp122_state::draw_character));
|
||||
m_avdc->set_addrmap(0, &vp122_state::char_map);
|
||||
m_avdc->set_addrmap(1, &vp122_state::attr_map);
|
||||
m_avdc->set_screen("screen");
|
||||
|
||||
scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL));
|
||||
duart.irq_cb().set_inputline("maincpu", I8085_RST55_LINE);
|
||||
@ -113,11 +116,11 @@ MACHINE_CONFIG_START(vp122_state::vp122)
|
||||
duart.outport_cb().append("usart", FUNC(i8251_device::write_rxc)).bit(3);
|
||||
// OP7 = 0 for 80-column modes, 1 for 132-column modes
|
||||
|
||||
MCFG_DEVICE_ADD("usart", I8251, 8_MHz_XTAL / 2)
|
||||
I8251(config, "usart", 8_MHz_XTAL / 2);
|
||||
|
||||
MCFG_DEVICE_ADD("pit", PIT8253, 0)
|
||||
PIT8253(config, "pit", 0);
|
||||
// Input clocks are video-related and should differ for 80-column and 132-column modes
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
/**************************************************************************************************************
|
||||
|
||||
|
@ -115,10 +115,11 @@ MACHINE_CONFIG_START(pcd_video_device::device_add_mconfig)
|
||||
MCFG_PALETTE_ADD("palette", 3)
|
||||
MCFG_PALETTE_INIT_OWNER(pcdx_video_device, pcdx)
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", SCN2674, 0)
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(16)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcd_video_device, display_pixels)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
scn2674_device &crtc(SCN2674(config, "crtc", 0));
|
||||
crtc.set_character_width(16);
|
||||
crtc.set_display_callback(FUNC(pcd_video_device::display_pixels));
|
||||
crtc.set_screen("screen");
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("mouse_timer", pcd_video_device, mouse_timer, attotime::from_hz(15000)) // guess
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -158,12 +159,12 @@ MACHINE_CONFIG_START(pcx_video_device::device_add_mconfig)
|
||||
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", SCN2674, 0)
|
||||
MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("graphics", MCS51_INT0_LINE))
|
||||
MCFG_SCN2674_CHARACTER_WIDTH(16)
|
||||
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcx_video_device, display_pixels)
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, pcx_vram)
|
||||
scn2674_device &crtc(SCN2674(config, "crtc", 0));
|
||||
crtc.intr_callback().set_inputline("graphics", MCS51_INT0_LINE);
|
||||
crtc.set_character_width(16);
|
||||
crtc.set_display_callback(FUNC(pcx_video_device::display_pixels));
|
||||
crtc.set_screen("screen");
|
||||
crtc.set_addrmap(0, &pcx_video_device::pcx_vram);
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user