diff options
Diffstat (limited to 'src/devices/bus/idpartner/gdp.cpp')
| -rw-r--r-- | src/devices/bus/idpartner/gdp.cpp | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/src/devices/bus/idpartner/gdp.cpp b/src/devices/bus/idpartner/gdp.cpp index 0b7f34dbf90..72e3fc7d931 100644 --- a/src/devices/bus/idpartner/gdp.cpp +++ b/src/devices/bus/idpartner/gdp.cpp @@ -19,63 +19,63 @@ namespace { class idpartner_gdp_device : - public device_t, - public bus::idpartner::device_exp_card_interface + public device_t, + public bus::idpartner::device_exp_card_interface { public: - // construction/destruction - idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + // construction/destruction + idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - // device_t implementation - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; + // device_t implementation + virtual void device_start() override; + virtual void device_reset() override; + virtual void device_add_mconfig(machine_config &config) override; + virtual const tiny_rom_entry *device_rom_region() const override; private: - void char_w(u8 data) { m_avdc->buffer_w(data); } - void attr_w(u8 data) { m_avdc->attr_buffer_w(data); } - void scroll_w(u8 data) { m_scroll = data; } - u8 common_r() { m_common ^= 0x10; return m_common; } - void porta_w(u8 data); - void portb_w(u8 data); + void char_w(u8 data) { m_avdc->buffer_w(data); } + void attr_w(u8 data) { m_avdc->attr_buffer_w(data); } + void scroll_w(u8 data) { m_scroll = data; } + u8 common_r() { m_common ^= 0x10; return m_common; } + void porta_w(u8 data); + void portb_w(u8 data); void vram_w(offs_t offset, u8 data); u8 vram_r(offs_t offset); - void msl_w(u8 data); - void gdc_map(address_map &map); - void int_w(int state) { m_bus->int_w(state); } - void nmi_w(int state) { m_bus->nmi_w(state); } - - SCN2674_DRAW_CHARACTER_MEMBER(draw_character); - TIMER_DEVICE_CALLBACK_MEMBER(scanline) { m_gdc->update_scanline(param); } - - void char_map(address_map &map); - void attr_map(address_map &map); - - required_device<ef9365_device> m_gdc; - memory_share_creator<u8> m_vram; - required_device<scn2674_device> m_avdc; - required_device<z80pio_device> m_pio; - required_device<palette_device> m_palette; - required_region_ptr<u8> m_p_chargen; - - u8 m_scroll; - u8 m_common; + void msl_w(u8 data); + void gdc_map(address_map &map); + void int_w(int state) { m_bus->int_w(state); } + void nmi_w(int state) { m_bus->nmi_w(state); } + + SCN2674_DRAW_CHARACTER_MEMBER(draw_character); + TIMER_DEVICE_CALLBACK_MEMBER(scanline) { m_gdc->update_scanline(param); } + + void char_map(address_map &map); + void attr_map(address_map &map); + + required_device<ef9365_device> m_gdc; + memory_share_creator<u8> m_vram; + required_device<scn2674_device> m_avdc; + required_device<z80pio_device> m_pio; + required_device<palette_device> m_palette; + required_region_ptr<u8> m_p_chargen; + + u8 m_scroll; + u8 m_common; }; idpartner_gdp_device::idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, IDPARTNER_GDP, tag, owner, clock) - , bus::idpartner::device_exp_card_interface(mconfig, *this) - , m_gdc(*this, "gdc") - , m_vram(*this, "vram", 0x20000, ENDIANNESS_LITTLE) - , m_avdc(*this, "avdc") - , m_pio(*this, "pio") - , m_palette(*this, "palette") - , m_p_chargen(*this, "chargen") - , m_scroll(0) - , m_common(0) + : device_t(mconfig, IDPARTNER_GDP, tag, owner, clock) + , bus::idpartner::device_exp_card_interface(mconfig, *this) + , m_gdc(*this, "gdc") + , m_vram(*this, "vram", 0x20000, ENDIANNESS_LITTLE) + , m_avdc(*this, "avdc") + , m_pio(*this, "pio") + , m_palette(*this, "palette") + , m_p_chargen(*this, "chargen") + , m_scroll(0) + , m_common(0) { } @@ -85,54 +85,54 @@ idpartner_gdp_device::idpartner_gdp_device(const machine_config &mconfig, const void idpartner_gdp_device::device_start() { - save_item(NAME(m_scroll)); + save_item(NAME(m_scroll)); } void idpartner_gdp_device::device_reset() { - m_bus->io().install_read_handler (0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_r))); // Thomson GDP EF9367 - m_bus->io().install_write_handler(0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_w))); // Thomson GDP EF9367 - m_bus->io().install_read_handler (0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::read_alt))); // PIO - Graphics - m_bus->io().install_write_handler(0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::write_alt))); // PIO - Graphics - m_bus->io().install_write_handler(0x34, 0x34, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::char_w))); // char reg - m_bus->io().install_write_handler(0x35, 0x35, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::attr_w))); // attr reg - m_bus->io().install_write_handler(0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::scroll_w))); // scroll reg/common input - m_bus->io().install_read_handler (0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::common_r))); // common input - m_bus->io().install_read_handler (0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::read))); // AVDC SCN2674 - m_bus->io().install_write_handler(0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::write))); // AVDC SCN2674 + m_bus->io().install_read_handler (0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_r))); // Thomson GDP EF9367 + m_bus->io().install_write_handler(0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_w))); // Thomson GDP EF9367 + m_bus->io().install_read_handler (0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::read_alt))); // PIO - Graphics + m_bus->io().install_write_handler(0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::write_alt))); // PIO - Graphics + m_bus->io().install_write_handler(0x34, 0x34, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::char_w))); // char reg + m_bus->io().install_write_handler(0x35, 0x35, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::attr_w))); // attr reg + m_bus->io().install_write_handler(0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::scroll_w))); // scroll reg/common input + m_bus->io().install_read_handler (0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::common_r))); // common input + m_bus->io().install_read_handler (0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::read))); // AVDC SCN2674 + m_bus->io().install_write_handler(0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::write))); // AVDC SCN2674 } void idpartner_gdp_device::porta_w(u8 data) { - //printf("porta_w:%02x\n",data); + //printf("porta_w:%02x\n",data); } void idpartner_gdp_device::portb_w(u8 data) { - //printf("portb_w:%02x\n",data); + //printf("portb_w:%02x\n",data); } void idpartner_gdp_device::msl_w(u8 data) { - //printf("msl_w:%02x\n",data); + //printf("msl_w:%02x\n",data); } void idpartner_gdp_device::vram_w(offs_t offset, u8 data) { - u16 addr = (m_scroll << 7) - offset; - m_vram[addr] = data; + u16 addr = (m_scroll << 7) - offset; + m_vram[addr] = data; } u8 idpartner_gdp_device::vram_r(offs_t offset) { - u16 addr = (m_scroll << 7) - offset; + u16 addr = (m_scroll << 7) - offset; return m_vram[addr]; } // 16 * 4164 DRAM void idpartner_gdp_device::gdc_map(address_map &map) { - map(0x0000, 0x1ffff).rw(FUNC(idpartner_gdp_device::vram_r), FUNC(idpartner_gdp_device::vram_w)); + map(0x0000, 0x1ffff).rw(FUNC(idpartner_gdp_device::vram_r), FUNC(idpartner_gdp_device::vram_w)); } @@ -140,15 +140,15 @@ void idpartner_gdp_device::gdc_map(address_map &map) void idpartner_gdp_device::char_map(address_map &map) { map(0x0000, 0x0fff).ram().share("charram"); - map(0x1000, 0x2fff).ram(); // TODO: Check in schematics + map(0x1000, 0x2fff).ram(); // TODO: Check in schematics } // 2 * 6116 SRAM for attributes void idpartner_gdp_device::attr_map(address_map &map) { map(0x0000, 0x0fff).ram().share("attrmap"); - map(0x1000, 0x2fff).ram(); // TODO: Check in schematics -} + map(0x1000, 0x2fff).ram(); // TODO: Check in schematics +} /* F4 Character Displayer */ static const gfx_layout gdp_charlayout = @@ -194,44 +194,44 @@ SCN2674_DRAW_CHARACTER_MEMBER( idpartner_gdp_device::draw_character ) void idpartner_gdp_device::device_add_mconfig(machine_config &config) { - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green())); - screen.set_screen_update(m_gdc, FUNC(ef9365_device::screen_update)); - screen.set_size(1024, 512); - screen.set_visarea(0, 1024-1, 0, 512-1); - screen.set_refresh_hz(50); - PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green())); + screen.set_screen_update(m_gdc, FUNC(ef9365_device::screen_update)); + screen.set_size(1024, 512); + screen.set_visarea(0, 1024-1, 0, 512-1); + screen.set_refresh_hz(50); + PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); - screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER, rgb_t::green())); - screen2.set_screen_update(m_avdc, FUNC(scn2674_device::screen_update)); - screen2.set_size(1024, 512); - screen2.set_visarea(0, 1024-1, 0, 512-1); - screen2.set_refresh_hz(50); + screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER, rgb_t::green())); + screen2.set_screen_update(m_avdc, FUNC(scn2674_device::screen_update)); + screen2.set_size(1024, 512); + screen2.set_visarea(0, 1024-1, 0, 512-1); + screen2.set_refresh_hz(50); - GFXDECODE(config, "gfxdecode", "palette", gfx_partner); + GFXDECODE(config, "gfxdecode", "palette", gfx_partner); - EF9365(config, m_gdc, XTAL(24'000'000) / 16); // EF9367 1.5 MHz - m_gdc->set_screen("screen"); - m_gdc->set_addrmap(0, &idpartner_gdp_device::gdc_map); - m_gdc->set_palette_tag("palette"); - m_gdc->set_nb_bitplanes(1); - m_gdc->set_display_mode(ef9365_device::DISPLAY_MODE_1024x512); - m_gdc->write_msl().set(FUNC(idpartner_gdp_device::msl_w)); + EF9365(config, m_gdc, XTAL(24'000'000) / 16); // EF9367 1.5 MHz + m_gdc->set_screen("screen"); + m_gdc->set_addrmap(0, &idpartner_gdp_device::gdc_map); + m_gdc->set_palette_tag("palette"); + m_gdc->set_nb_bitplanes(1); + m_gdc->set_display_mode(ef9365_device::DISPLAY_MODE_1024x512); + m_gdc->write_msl().set(FUNC(idpartner_gdp_device::msl_w)); - TIMER(config, "scanline").configure_scanline(FUNC(idpartner_gdp_device::scanline), "screen", 0, 1); + TIMER(config, "scanline").configure_scanline(FUNC(idpartner_gdp_device::scanline), "screen", 0, 1); - SCN2674(config, m_avdc, XTAL(24'000'000) / 16); // SCN2674B - m_avdc->set_screen("screen2"); - m_avdc->set_character_width(12); + SCN2674(config, m_avdc, XTAL(24'000'000) / 16); // SCN2674B + m_avdc->set_screen("screen2"); + m_avdc->set_character_width(12); m_avdc->set_addrmap(0, &idpartner_gdp_device::char_map); m_avdc->set_addrmap(1, &idpartner_gdp_device::attr_map); - m_avdc->set_display_callback(FUNC(idpartner_gdp_device::draw_character)); - //m_avdc->intr_callback().set(FUNC(idpartner_gdp_device::nmi_w)); + m_avdc->set_display_callback(FUNC(idpartner_gdp_device::draw_character)); + //m_avdc->intr_callback().set(FUNC(idpartner_gdp_device::nmi_w)); - Z80PIO(config, m_pio, XTAL(8'000'000) / 2); - m_pio->out_int_callback().set(FUNC(idpartner_gdp_device::int_w)); - m_pio->out_pa_callback().set(FUNC(idpartner_gdp_device::porta_w)); - m_pio->out_pb_callback().set(FUNC(idpartner_gdp_device::portb_w)); + Z80PIO(config, m_pio, XTAL(8'000'000) / 2); + m_pio->out_int_callback().set(FUNC(idpartner_gdp_device::int_w)); + m_pio->out_pa_callback().set(FUNC(idpartner_gdp_device::porta_w)); + m_pio->out_pb_callback().set(FUNC(idpartner_gdp_device::portb_w)); } } // anonymous namespace |
