diff options
Diffstat (limited to 'src/mame/drivers/icatel.cpp')
-rw-r--r-- | src/mame/drivers/icatel.cpp | 292 |
1 files changed, 0 insertions, 292 deletions
diff --git a/src/mame/drivers/icatel.cpp b/src/mame/drivers/icatel.cpp deleted file mode 100644 index 980143a307e..00000000000 --- a/src/mame/drivers/icatel.cpp +++ /dev/null @@ -1,292 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders: Felipe Sanches -/*************************************************************************** - - icatel - Brazilian public payphone - manufactured by icatel http://www.icatel.com.br/ - - Partial schematics (drawn based on PCB inspection) available at: - https://github.com/garoa/Icatel/blob/master/doc/icatel.pdf - - Driver by Felipe Sanches <juca@members.fsf.org> - - Changelog: - - 2014 DEC 14 [Felipe Sanches]: - * Initial driver skeleton - -***************************************************************************/ - -#include "emu.h" - -#include "cpu/mcs51/mcs51.h" -#include "video/hd44780.h" -//#include "sound/speaker.h" - -#include "debugger.h" -#include "emupal.h" -#include "screen.h" - - -class icatel_state : public driver_device -{ -public: - icatel_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_lcdc(*this, "hd44780") - { } - - void icatel(machine_config &config); - - void init_icatel(); - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - -private: - DECLARE_READ8_MEMBER(magic_string); - - DECLARE_READ8_MEMBER(i80c31_p1_r); - DECLARE_READ8_MEMBER(i80c31_p3_r); - DECLARE_WRITE8_MEMBER(i80c31_p1_w); - DECLARE_WRITE8_MEMBER(i80c31_p3_w); - - DECLARE_READ8_MEMBER(cn8_extension_r); - DECLARE_WRITE8_MEMBER(cn8_extension_w); - - DECLARE_READ8_MEMBER(modem_r); - DECLARE_WRITE8_MEMBER(modem_w); - - DECLARE_READ8_MEMBER(ci8_r); - DECLARE_WRITE8_MEMBER(ci8_w); - - DECLARE_READ8_MEMBER(ci15_r); - DECLARE_WRITE8_MEMBER(ci15_w); - - DECLARE_READ8_MEMBER(ci16_r); - DECLARE_WRITE8_MEMBER(ci16_w); - - void icatel_palette(palette_device &palette) const; - - HD44780_PIXEL_UPDATE(icatel_pixel_update); - - void i80c31_data(address_map &map); - void i80c31_io(address_map &map); - void i80c31_prg(address_map &map); - - required_device<i80c31_device> m_maincpu; - required_device<hd44780_device> m_lcdc; -}; - -void icatel_state::i80c31_prg(address_map &map) -{ - map(0x0000, 0x7FFF).mirror(0x8000).rom(); -} - -void icatel_state::i80c31_io(address_map &map) -{ - map(0x0000, 0x3FFF).ram(); - map(0x8000, 0x8002).ram(); /* HACK! */ - map(0x8040, 0x8041).mirror(0x3F1E).w(m_lcdc, FUNC(hd44780_device::write)); // not sure yet. CI12 (73LS273) - map(0x8060, 0x8060).mirror(0x3F1F).rw(FUNC(icatel_state::ci8_r), FUNC(icatel_state::ci8_w)); - map(0x8080, 0x8080).mirror(0x3F1F).rw(FUNC(icatel_state::ci16_r), FUNC(icatel_state::ci16_w)); // card reader (?) - map(0x80C0, 0x80C0).mirror(0x3F1F).rw(FUNC(icatel_state::ci15_r), FUNC(icatel_state::ci15_w)); // 74LS244 (tristate buffer) - map(0xC000, 0xCFFF).rw(FUNC(icatel_state::cn8_extension_r), FUNC(icatel_state::cn8_extension_w)); - map(0xE000, 0xEFFF).rw(FUNC(icatel_state::modem_r), FUNC(icatel_state::modem_w)); -} - -void icatel_state::i80c31_data(address_map &map) -{ -// map(0x0056,0x005A).r(FUNC(icatel_state::magic_string)); /* This is a hack! */ -} - -void icatel_state::init_icatel() -{ -} - -void icatel_state::machine_start() -{ -} - -void icatel_state::machine_reset() -{ -} - -READ8_MEMBER(icatel_state::magic_string) -{ -// logerror("read: magic_string, offset=%04X\n", offset); - char mstr[] = "TP-OK"; - return mstr[offset%5]; -} - -READ8_MEMBER(icatel_state::i80c31_p1_r) -{ - return 0x7f; -} - -READ8_MEMBER(icatel_state::i80c31_p3_r) -{ - return 0xff; -} - -WRITE8_MEMBER(icatel_state::i80c31_p1_w) -{ -} - -WRITE8_MEMBER(icatel_state::i80c31_p3_w) -{ -} - -//---------------------------------------- - -READ8_MEMBER(icatel_state::cn8_extension_r) -{ - /* TODO: Implement-me! */ - logerror("read: cn8_extension\n"); - return 0; -} - -WRITE8_MEMBER(icatel_state::cn8_extension_w) -{ - /* TODO: Implement-me! */ - logerror("write: cn8_extension [%02x]\n", data); -} - -//---------------------------------------- - -READ8_MEMBER(icatel_state::modem_r) -{ - /* TODO: Implement-me! */ - logerror("read: modem\n"); - return 0; -} - -WRITE8_MEMBER(icatel_state::modem_w) -{ - /* TODO: Implement-me! */ - logerror("write: modem [%02x]\n", data); -} - -//---------------------------------------- - -READ8_MEMBER(icatel_state::ci8_r) -{ - /* TODO: Implement-me! */ - logerror("read: ci8\n"); - return 0; -} - -WRITE8_MEMBER(icatel_state::ci8_w) -{ - /* TODO: Implement-me! */ - logerror("write: ci8 [%02x]\n", data); -} - -//---------------------------------------- - -READ8_MEMBER(icatel_state::ci15_r) -{ - /* TODO: Implement-me! */ - //machine().debug_break(); - //logerror("read: ci15\n"); - return (1 << 3) | (1 << 0); -} - -WRITE8_MEMBER(icatel_state::ci15_w) -{ - /* TODO: Implement-me! */ - logerror("write: ci15 [%02x]\n", data); -} - -//---------------------------------------- - -READ8_MEMBER(icatel_state::ci16_r) -{ - /* TODO: Implement-me! */ - // seems to be the card reader. - logerror("read: ci16\n"); - return 0; -} - -WRITE8_MEMBER(icatel_state::ci16_w) -{ - /* TODO: Implement-me! */ - // seems to be the card reader. - logerror("write: ci16 [%02x]\n", data); -} - -//---------------------------------------- - -void icatel_state::icatel_palette(palette_device &palette) const -{ - palette.set_pen_color(0, rgb_t(138, 146, 148)); - palette.set_pen_color(1, rgb_t(92, 83, 88)); -} - -static const gfx_layout prot_charlayout = -{ - 5, 8, /* 5 x 8 characters */ - 256, /* 256 characters */ - 1, /* 1 bits per pixel */ - { 0 }, /* no bitplanes */ - { 3, 4, 5, 6, 7}, - { 0, 8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8}, - 8*8 /* 8 bytes */ -}; - -static GFXDECODE_START( gfx_icatel ) - GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, prot_charlayout, 0, 1 ) -GFXDECODE_END - -HD44780_PIXEL_UPDATE(icatel_state::icatel_pixel_update) -{ - if ( pos < 16 && line==0 ) - { - bitmap.pix16(y, pos*6 + x) = state; - } - - if ( pos >= 64 && pos < 80 && line==0 ) - { - bitmap.pix16(y+9,(pos-64)*6 + x) = state; - } -} - -void icatel_state::icatel(machine_config &config) -{ - /* basic machine hardware */ - I80C31(config, m_maincpu, XTAL(2'097'152)); - m_maincpu->set_addrmap(AS_PROGRAM, &icatel_state::i80c31_prg); - m_maincpu->set_addrmap(AS_DATA, &icatel_state::i80c31_data); - m_maincpu->set_addrmap(AS_IO, &icatel_state::i80c31_io); - m_maincpu->port_in_cb<1>().set(FUNC(icatel_state::i80c31_p1_r)); - m_maincpu->port_out_cb<1>().set(FUNC(icatel_state::i80c31_p1_w)); - m_maincpu->port_in_cb<3>().set(FUNC(icatel_state::i80c31_p3_r)); - m_maincpu->port_out_cb<3>().set(FUNC(icatel_state::i80c31_p3_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update)); - screen.set_size(6*16, 9*2); - screen.set_visarea(0, 6*16-1, 0, 9*2-1); - screen.set_palette("palette"); - - PALETTE(config, "palette", FUNC(icatel_state::icatel_palette), 2); - GFXDECODE(config, "gfxdecode", "palette", gfx_icatel); - - HD44780(config, m_lcdc, 0); - m_lcdc->set_lcd_size(2, 16); - m_lcdc->set_pixel_update_cb(FUNC(icatel_state::icatel_pixel_update)); -} - -ROM_START( icatel ) - ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "icatel_tpci_em._4_v16.05.ci14", 0x00000, 0x8000, CRC(d310586e) SHA1(21736ad5a06cf9695f8cc5ff2dc2d19b101504f5) ) -ROM_END - -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1995, icatel, 0, 0, icatel, 0, icatel_state, init_icatel, "Icatel", "TPCI (Brazilian public payphone)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) -/*The hardware was clearly manufactured in 1995. There's no evindence of the actual date of the firmware.*/ |