summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pocketc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pocketc.cpp')
-rw-r--r--src/mame/drivers/pocketc.cpp361
1 files changed, 167 insertions, 194 deletions
diff --git a/src/mame/drivers/pocketc.cpp b/src/mame/drivers/pocketc.cpp
index 060a5165af6..634a3ff7d4b 100644
--- a/src/mame/drivers/pocketc.cpp
+++ b/src/mame/drivers/pocketc.cpp
@@ -1,9 +1,9 @@
// license:GPL-2.0+
// copyright-holders:Peter Trauner
/******************************************************************************
- sharp pocket computers
- pc1401/pc1403
- PeT mess@utanet.at May 2000
+ Sharp pocket computers
+ PC1401/PC1403
+ PeT mess@utanet.at May 2000
******************************************************************************/
#include "emu.h"
@@ -13,17 +13,13 @@
#include "includes/pc1350.h"
#include "includes/pc1403.h"
-#include "cpu/sc61860/sc61860.h"
#include "machine/ram.h"
-#include "screen.h"
+/* PC1430 lacks peek/poke operations */
+/* PC1280?? */
-/* pc1430 no peek poke operations! */
-
-/* pc1280?? */
-
-/* pc126x
+/* PC126x
port
1 ?
2 +6v
@@ -37,7 +33,7 @@
10 ib5
11 ib4 */
-/* pc1350 other keyboard,
+/* PC1350 other keyboard,
f2 instead f0 at port
port
1 ?
@@ -53,20 +49,20 @@
11 ib4
*/
-/* similar computers
- pc1260/1261
- pc1402/1403
- pc1421 */
-/* pc140x
+/* Similar Computers:
+ - PC1260/1261
+ - PC1402/1403
+ - PC1421 */
+/* PC140x
a,b0..b5 keyboard matrix
b0 off key
c0 display on
c1 counter reset
c2 cpu halt
c3 computer off
- c4 beeper frequency (1 4kHz, 0 2kHz), or (c5=0) membran pos1/pos2
+ c4 beeper frequency (1 4kHz, 0 2kHz), or (c5=0) membrane pos1/pos2
c5 beeper on
- c6 beeper steuerung
+ c6 beeper control
port
1 ?
@@ -82,14 +78,13 @@
11 ?
*/
-/* special keys
- red c-ce and reset; warm boot, program NOT lost*/
+/* Special Leys Red C-CE and Reset; warm boot, program NOT lost */
void pc1401_state::pc1401_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x3800, 0x47ff).ram();
- map(0x6000, 0x67ff).rw(FUNC(pc1401_state::pc1401_lcd_read), FUNC(pc1401_state::pc1401_lcd_write)).mirror(0x1000);
+ map(0x6000, 0x67ff).rw(FUNC(pc1401_state::lcd_read), FUNC(pc1401_state::lcd_write)).mirror(0x1000);
map(0x8000, 0xffff).rom();
}
@@ -97,7 +92,7 @@ void pc1401_state::pc1402_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x2000, 0x47ff).ram();
- map(0x6000, 0x67ff).rw(FUNC(pc1401_state::pc1401_lcd_read), FUNC(pc1401_state::pc1401_lcd_write)).mirror(0x1000);
+ map(0x6000, 0x67ff).rw(FUNC(pc1401_state::lcd_read), FUNC(pc1401_state::lcd_write)).mirror(0x1000);
map(0x8000, 0xffff).rom();
}
@@ -106,7 +101,7 @@ void pc1251_state::pc1250_mem(address_map &map)
map(0x0000, 0x1fff).rom();
map(0x4000, 0x7fff).rom();
map(0xc000, 0xc7ff).ram(); // 2KB RAM
- map(0xf800, 0xf8ff).rw(FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
+ map(0xf800, 0xf8ff).rw(FUNC(pc1251_state::lcd_read), FUNC(pc1251_state::lcd_write));
}
void pc1251_state::pc1251_mem(address_map &map)
@@ -114,7 +109,7 @@ void pc1251_state::pc1251_mem(address_map &map)
map(0x0000, 0x1fff).rom();
map(0x4000, 0x7fff).rom();
map(0xb800, 0xc7ff).ram(); // 4KB RAM
- map(0xf800, 0xf8ff).rw(FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
+ map(0xf800, 0xf8ff).rw(FUNC(pc1251_state::lcd_read), FUNC(pc1251_state::lcd_write));
}
void pc1251_state::pc1255_mem(address_map &map)
@@ -122,14 +117,13 @@ void pc1251_state::pc1255_mem(address_map &map)
map(0x0000, 0x1fff).rom();
map(0x4000, 0x7fff).rom();
map(0xa000, 0xc7ff).ram(); // 10KB RAM
- map(0xf800, 0xf8ff).rw(FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
+ map(0xf800, 0xf8ff).rw(FUNC(pc1251_state::lcd_read), FUNC(pc1251_state::lcd_write));
}
void pc1251_state::pc1260_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
- map(0x2000, 0x20ff).rw(FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
- //map( 0x2800, 0x28ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
+ map(0x2000, 0x20ff).rw(FUNC(pc1251_state::lcd_read), FUNC(pc1251_state::lcd_write));
map(0x5800, 0x67ff).ram(); // 4KB RAM
map(0x8000, 0xffff).rom();
}
@@ -137,25 +131,23 @@ void pc1251_state::pc1260_mem(address_map &map)
void pc1251_state::pc1261_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
- map(0x2000, 0x20ff).rw(FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
- //map( 0x2800, 0x28ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
+ map(0x2000, 0x20ff).rw(FUNC(pc1251_state::lcd_read), FUNC(pc1251_state::lcd_write));
map(0x4000, 0x67ff).ram(); // 10KB RAM
map(0x8000, 0xffff).rom();
}
-
void pc1350_state::pc1350_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
- map(0x7000, 0x7eff).rw(FUNC(pc1350_state::pc1350_lcd_read), FUNC(pc1350_state::pc1350_lcd_write));
+ map(0x7000, 0x7eff).rw(FUNC(pc1350_state::lcd_read), FUNC(pc1350_state::lcd_write));
map(0x8000, 0xffff).rom();
}
void pc1403_state::pc1403_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
- map(0x3000, 0x30bf).rw(FUNC(pc1403_state::pc1403_lcd_read), FUNC(pc1403_state::pc1403_lcd_write));
- map(0x3800, 0x3fff).rw(FUNC(pc1403_state::pc1403_asic_read), FUNC(pc1403_state::pc1403_asic_write));
+ map(0x3000, 0x30bf).rw(FUNC(pc1403_state::lcd_read), FUNC(pc1403_state::lcd_write));
+ map(0x3800, 0x3fff).rw(FUNC(pc1403_state::asic_read), FUNC(pc1403_state::asic_write));
map(0x4000, 0x7fff).bankr("bank1");
map(0xe000, 0xffff).ram();
}
@@ -163,34 +155,33 @@ void pc1403_state::pc1403_mem(address_map &map)
void pc1403_state::pc1403h_mem(address_map &map)
{
map(0x0000, 0x1fff).rom();
- map(0x3000, 0x30bf).rw(FUNC(pc1403_state::pc1403_lcd_read), FUNC(pc1403_state::pc1403_lcd_write));
- map(0x3800, 0x3fff).rw(FUNC(pc1403_state::pc1403_asic_read), FUNC(pc1403_state::pc1403_asic_write));
+ map(0x3000, 0x30bf).rw(FUNC(pc1403_state::lcd_read), FUNC(pc1403_state::lcd_write));
+ map(0x3800, 0x3fff).rw(FUNC(pc1403_state::asic_read), FUNC(pc1403_state::asic_write));
map(0x4000, 0x7fff).bankr("bank1");
map(0x8000, 0xffff).ram();
}
-
#if 0
void pc1403_state::pc1421_readmem(address_map &map)
{
- map( 0x0000, 0x1fff).rom();
- map( 0x3800, 0x47ff).ram();
- map( 0x8000, 0xffff).rom();
+ map(0x0000, 0x1fff).rom();
+ map(0x3800, 0x47ff).ram();
+ map(0x8000, 0xffff).rom();
}
void pc1403_state::pc1421_writemem(address_map &map)
{
- map( 0x0000, 0x1fff).rom();
- map( 0x2000, 0x37ff).ram();
- map( 0x3800, 0x47ff).ram();
- map( 0x8000, 0xffff).rom();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x37ff).ram();
+ map(0x3800, 0x47ff).ram();
+ map(0x8000, 0xffff).rom();
}
#endif
/* 2008-05 FP: the following input ports are based on the way ports are read, but I would like
to have confirmation from technical docs before considering these correct.
- If they need to be changed, you must also update the clickable artwork.
+ If they need to be changed, you must also update the clickable artwork.
*/
static INPUT_PORTS_START( pc1401 )
@@ -724,161 +715,143 @@ static GFXDECODE_START( gfx_pc1251 )
GFXDECODE_ENTRY( "gfx1", 0x0000, pc1251_charlayout, 0, 8 )
GFXDECODE_END
-MACHINE_CONFIG_START(pocketc_state::pocketc)
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
+void pocketc_state::pocketc_base(machine_config &config)
+{
+ config.m_minimum_quantum = attotime::from_hz(60);
NVRAM(config, "cpu_nvram", nvram_device::DEFAULT_ALL_0);
NVRAM(config, "ram_nvram", nvram_device::DEFAULT_ALL_0);
- /*
- aim: show sharp with keyboard
- resolution depends on the dots of the lcd
- (lcd dot displayed as 2x3 pixel)
- it seems to have 3/4 ratio in the real pc1401 */
- /* video hardware */
- MCFG_SCREEN_ADD("screen", LCD)
- MCFG_SCREEN_REFRESH_RATE(20) /* very early and slow lcd */
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(594, 273)
- MCFG_SCREEN_VISIBLE_AREA(0, 594-1, 0, 273-1)
-// MCFG_SCREEN_SIZE(640, 273)
-// MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 273-1)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pc1401)
- MCFG_PALETTE_ADD("palette", 8*2)
- MCFG_PALETTE_INDIRECT_ENTRIES(6)
- MCFG_PALETTE_INIT_OWNER( pocketc_state, pocketc )
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1401_state::pc1401)
- pocketc(config);
- MCFG_DEVICE_ADD("maincpu", SC61860, 192000) /* 7.8336 MHz */
- MCFG_DEVICE_PROGRAM_MAP(pc1401_mem)
- MCFG_SC61860_READ_RESET_HANDLER(READLINE(*this, pc1401_state,pc1401_reset))
- MCFG_SC61860_READ_BRK_HANDLER(READLINE(*this, pc1401_state,pc1401_brk))
- MCFG_SC61860_READ_X_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_A_HANDLER(READ8(*this, pc1401_state,pc1401_ina))
- MCFG_SC61860_WRITE_A_HANDLER(WRITE8(*this, pc1401_state,pc1401_outa))
- MCFG_SC61860_READ_B_HANDLER(READ8(*this, pc1401_state,pc1401_inb))
- MCFG_SC61860_WRITE_B_HANDLER(WRITE8(*this, pc1401_state,pc1401_outb))
- MCFG_SC61860_WRITE_C_HANDLER(WRITE8(*this, pc1401_state,pc1401_outc))
-
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(pc1401_state, screen_update_pc1401)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1401_state::pc1402)
+ // TODO: Convert to an SVG
+ SCREEN(config, m_screen, SCREEN_TYPE_LCD);
+ m_screen->set_refresh_hz(20);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ m_screen->set_size(594, 273);
+ m_screen->set_visarea(0, 594-1, 0, 273-1);
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_pc1401);
+ PALETTE(config, m_palette, 8*2);
+ m_palette->set_indirect_entries(6);
+ m_palette->set_init(palette_init_delegate(FUNC(pocketc_state::palette_init_pocketc), this));
+}
+
+void pc1401_state::pc1401(machine_config &config)
+{
+ pocketc_base(config);
+ SC61860(config, m_maincpu, 192000); /* 7.8336 MHz */
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1401_state::pc1401_mem);
+ m_maincpu->reset_cb().set(FUNC(pc1401_state::reset_r));
+ m_maincpu->brk_cb().set(FUNC(pc1401_state::brk_r));
+ m_maincpu->x_cb().set_constant(0);
+ m_maincpu->in_a_cb().set(FUNC(pc1401_state::in_a_r));
+ m_maincpu->out_a_cb().set(FUNC(pc1401_state::out_a_w));
+ m_maincpu->in_b_cb().set(FUNC(pc1401_state::in_b_r));
+ m_maincpu->out_b_cb().set(FUNC(pc1401_state::out_b_w));
+ m_maincpu->out_c_cb().set(FUNC(pc1401_state::out_c_w));
+
+ m_screen->set_screen_update(FUNC(pc1401_state::screen_update));
+}
+
+void pc1401_state::pc1402(machine_config &config)
+{
pc1401(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP( pc1402_mem)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1251_state::pc1250)
- pocketc(config);
- MCFG_DEVICE_ADD("maincpu", SC61860, 192000) /* 7.8336 MHz */
- MCFG_DEVICE_PROGRAM_MAP( pc1250_mem)
- MCFG_SC61860_READ_RESET_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_BRK_HANDLER(READLINE(*this, pc1251_state,pc1251_brk))
- MCFG_SC61860_READ_X_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_A_HANDLER(READ8(*this, pc1251_state,pc1251_ina))
- MCFG_SC61860_WRITE_A_HANDLER(WRITE8(*this, pc1251_state,pc1251_outa))
- MCFG_SC61860_READ_B_HANDLER(READ8(*this, pc1251_state,pc1251_inb))
- MCFG_SC61860_WRITE_B_HANDLER(WRITE8(*this, pc1251_state,pc1251_outb))
- MCFG_SC61860_WRITE_C_HANDLER(WRITE8(*this, pc1251_state,pc1251_outc))
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1401_state::pc1402_mem);
+}
+
+void pc1251_state::pc1250(machine_config &config)
+{
+ pocketc_base(config);
+ SC61860(config, m_maincpu, 192000); /* 7.8336 MHz */
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1251_state::pc1250_mem);
+ m_maincpu->reset_cb().set_constant(0);
+ m_maincpu->brk_cb().set(FUNC(pc1251_state::brk_r));
+ m_maincpu->x_cb().set_constant(0);
+ m_maincpu->in_a_cb().set(FUNC(pc1251_state::in_a_r));
+ m_maincpu->out_a_cb().set(FUNC(pc1251_state::out_a_w));
+ m_maincpu->in_b_cb().set(FUNC(pc1251_state::in_b_r));
+ m_maincpu->out_b_cb().set(FUNC(pc1251_state::out_b_w));
+ m_maincpu->out_c_cb().set(FUNC(pc1251_state::out_c_w));
/* video hardware */
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_SIZE(608, 300)
- MCFG_SCREEN_VISIBLE_AREA(0, 608-1, 0, 300-1)
- MCFG_SCREEN_UPDATE_DRIVER(pc1251_state, screen_update_pc1251)
- MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pc1251)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1251_state::pc1251)
- pc1250(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP( pc1251_mem)
-MACHINE_CONFIG_END
+ m_screen->set_size(608, 300);
+ m_screen->set_visarea(0, 608-1, 0, 300-1);
+ m_screen->set_screen_update(FUNC(pc1251_state::screen_update));
+ m_gfxdecode->set_info(gfx_pc1251);
+}
-MACHINE_CONFIG_START(pc1251_state::pc1255)
+void pc1251_state::pc1251(machine_config &config)
+{
pc1250(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP( pc1255_mem)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1251_state::pc1251_mem);
+}
-MACHINE_CONFIG_START(pc1251_state::pc1260)
+void pc1251_state::pc1255(machine_config &config)
+{
pc1250(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP( pc1260_mem)
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1251_state::pc1255_mem);
+}
- MCFG_MACHINE_START_OVERRIDE(pc1251_state, pc1260 )
-MACHINE_CONFIG_END
+void pc1260_state::pc1260(machine_config &config)
+{
+ pc1250(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1260_state::pc1260_mem);
+}
-MACHINE_CONFIG_START(pc1251_state::pc1261)
+void pc1260_state::pc1261(machine_config &config)
+{
pc1260(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP( pc1261_mem)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1350_state::pc1350)
- pocketc(config);
- MCFG_DEVICE_ADD("maincpu", SC61860, 192000) /* 7.8336 MHz */
- MCFG_DEVICE_PROGRAM_MAP( pc1350_mem)
- MCFG_SC61860_READ_RESET_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_BRK_HANDLER(READLINE(*this, pc1350_state,pc1350_brk))
- MCFG_SC61860_READ_X_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_A_HANDLER(READ8(*this, pc1350_state,pc1350_ina))
- MCFG_SC61860_WRITE_A_HANDLER(WRITE8(*this, pc1350_state,pc1350_outa))
- MCFG_SC61860_READ_B_HANDLER(READ8(*this, pc1350_state,pc1350_inb))
- MCFG_SC61860_WRITE_B_HANDLER(WRITE8(*this, pc1350_state,pc1350_outb))
- MCFG_SC61860_WRITE_C_HANDLER(WRITE8(*this, pc1350_state,pc1350_outc))
-
- /*
- aim: show sharp with keyboard
- resolution depends on the dots of the lcd
- (lcd dot displayed as 2x2 pixel) */
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1260_state::pc1261_mem);
+}
+
+void pc1350_state::pc1350(machine_config &config)
+{
+ pocketc_base(config);
+ SC61860(config, m_maincpu, 192000); /* 7.8336 MHz */
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1350_state::pc1350_mem);
+ m_maincpu->reset_cb().set_constant(0);
+ m_maincpu->brk_cb().set(FUNC(pc1350_state::brk_r));
+ m_maincpu->x_cb().set_constant(0);
+ m_maincpu->in_a_cb().set(FUNC(pc1350_state::in_a_r));
+ m_maincpu->out_a_cb().set(FUNC(pc1350_state::out_a_w));
+ m_maincpu->in_b_cb().set(FUNC(pc1350_state::in_b_r));
+ m_maincpu->out_b_cb().set(FUNC(pc1350_state::out_b_w));
+ m_maincpu->out_c_cb().set(FUNC(pc1350_state::out_c_w));
+
/* video hardware */
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_SIZE(640, 252)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 252-1)
- MCFG_SCREEN_UPDATE_DRIVER(pc1350_state, screen_update_pc1350)
+ m_screen->set_size(640, 252);
+ m_screen->set_visarea(0, 640-1, 0, 252-1);
+ m_screen->set_screen_update(FUNC(pc1350_state::screen_update));
/* internal ram */
- RAM(config, RAM_TAG).set_default_size("4K").set_extra_options("12K,20K");
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1403_state::pc1403)
- pocketc(config);
- MCFG_DEVICE_ADD( "maincpu", SC61860, 256000 )
- MCFG_DEVICE_PROGRAM_MAP( pc1403_mem)
- MCFG_SC61860_READ_RESET_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_BRK_HANDLER(READLINE(*this, pc1403_state,pc1403_brk))
- MCFG_SC61860_READ_X_HANDLER(CONSTANT(0))
- MCFG_SC61860_READ_A_HANDLER(READ8(*this, pc1403_state,pc1403_ina))
- MCFG_SC61860_WRITE_A_HANDLER(WRITE8(*this, pc1403_state,pc1403_outa))
- MCFG_SC61860_READ_B_HANDLER(CONSTANT(0))
- MCFG_SC61860_WRITE_B_HANDLER(NOOP)
- MCFG_SC61860_WRITE_C_HANDLER(WRITE8(*this, pc1403_state,pc1403_outc))
-
- /*
- aim: show sharp with keyboard
- resolution depends on the dots of the lcd
- (lcd dot displayed as 2x2 pixel) */
+ RAM(config, m_ram).set_default_size("4K").set_extra_options("12K,20K");
+}
+
+void pc1403_state::pc1403(machine_config &config)
+{
+ pocketc_base(config);
+ SC61860(config, m_maincpu, 256000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1403_state::pc1403_mem);
+ m_maincpu->reset_cb().set_constant(0);
+ m_maincpu->brk_cb().set(FUNC(pc1403_state::brk_r));
+ m_maincpu->x_cb().set_constant(0);
+ m_maincpu->in_a_cb().set(FUNC(pc1403_state::in_a_r));
+ m_maincpu->out_a_cb().set(FUNC(pc1403_state::out_a_w));
+ m_maincpu->in_b_cb().set_constant(0);
+ m_maincpu->out_b_cb().set_nop();
+ m_maincpu->out_c_cb().set(FUNC(pc1403_state::out_c_w));
+
/* video hardware */
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_SIZE(848, 320)
- MCFG_SCREEN_VISIBLE_AREA(0, 848-1, 0, 320-1)
-// MCFG_SCREEN_SIZE(848, 361)
-// MCFG_SCREEN_VISIBLE_AREA(0, 848-1, 0, 361-1)
- MCFG_SCREEN_UPDATE_DRIVER(pc1403_state, screen_update_pc1403)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(pc1403_state::pc1403h)
+ m_screen->set_size(848, 320);
+ m_screen->set_visarea(0, 848-1, 0, 320-1);
+ m_screen->set_screen_update(FUNC(pc1403_state::screen_update));
+}
+
+void pc1403_state::pc1403h(machine_config &config)
+{
pc1403(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP( pc1403h_mem)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1403_state::pc1403h_mem);
+}
ROM_START(pc1401)
@@ -986,23 +959,23 @@ ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
// cpu sc61860
-COMP( 1982, pc1245, 0, 0, pc1250, pc1251, pc1251_state, init_pc1251, "Sharp", "Pocket Computer 1245", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-COMP( 1982, pc1250, 0, 0, pc1250, pc1251, pc1251_state, init_pc1251, "Sharp", "Pocket Computer 1250", MACHINE_NO_SOUND)
-COMP( 1982, pc1251, pc1250, 0, pc1251, pc1251, pc1251_state, init_pc1251, "Sharp", "Pocket Computer 1251", MACHINE_NO_SOUND)
-COMP( 1982, pc1255, pc1250, 0, pc1255, pc1251, pc1251_state, init_pc1251, "Sharp", "Pocket Computer 1255", MACHINE_NO_SOUND)
-COMP( 1983, trs80pc3, pc1250, 0, pc1251, pc1251, pc1251_state, init_pc1251, "Tandy Radio Shack", "TRS-80 Pocket Computer PC-3", MACHINE_NO_SOUND)
+COMP( 1982, pc1245, 0, 0, pc1250, pc1251, pc1251_state, empty_init, "Sharp", "Pocket Computer 1245", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1982, pc1250, 0, 0, pc1250, pc1251, pc1251_state, empty_init, "Sharp", "Pocket Computer 1250", MACHINE_NO_SOUND)
+COMP( 1982, pc1251, pc1250, 0, pc1251, pc1251, pc1251_state, empty_init, "Sharp", "Pocket Computer 1251", MACHINE_NO_SOUND)
+COMP( 1982, pc1255, pc1250, 0, pc1255, pc1251, pc1251_state, empty_init, "Sharp", "Pocket Computer 1255", MACHINE_NO_SOUND)
+COMP( 1983, trs80pc3, pc1250, 0, pc1251, pc1251, pc1251_state, empty_init, "Tandy Radio Shack", "TRS-80 Pocket Computer PC-3", MACHINE_NO_SOUND)
-COMP( 1982, pc1260, 0, 0, pc1260, pc1251, pc1251_state, init_pc1251, "Sharp", "Pocket Computer 1260", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-COMP( 1982, pc1261, pc1260, 0, pc1261, pc1251, pc1251_state, init_pc1251, "Sharp", "Pocket Computer 1261/1262", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1982, pc1260, 0, 0, pc1260, pc1251, pc1260_state, empty_init, "Sharp", "Pocket Computer 1260", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1982, pc1261, pc1260, 0, pc1261, pc1251, pc1260_state, empty_init, "Sharp", "Pocket Computer 1261/1262", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
// pc1261/pc1262
-COMP( 1984, pc1350, 0, 0, pc1350, pc1350, pc1350_state, empty_init, "Sharp", "Pocket Computer 1350", MACHINE_NO_SOUND )
-COMP( 198?, pc1450, 0, 0, pc1350, pc1350, pc1350_state, empty_init, "Sharp", "Pocket Computer 1450", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1984, pc1350, 0, 0, pc1350, pc1350, pc1350_state, empty_init, "Sharp", "Pocket Computer 1350", MACHINE_NO_SOUND )
+COMP( 198?, pc1450, 0, 0, pc1350, pc1350, pc1350_state, empty_init, "Sharp", "Pocket Computer 1450", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-COMP( 1983, pc1401, 0, 0, pc1401, pc1401, pc1401_state, init_pc1401, "Sharp", "Pocket Computer 1401", MACHINE_NO_SOUND)
-COMP( 1984, pc1402, pc1401, 0, pc1402, pc1401, pc1401_state, init_pc1401, "Sharp", "Pocket Computer 1402", MACHINE_NO_SOUND)
-COMP( 198?, pc1360, pc1401, 0, pc1401, pc1401, pc1401_state, init_pc1401, "Sharp", "Pocket Computer 1360", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1983, pc1401, 0, 0, pc1401, pc1401, pc1401_state, empty_init, "Sharp", "Pocket Computer 1401", MACHINE_NO_SOUND)
+COMP( 1984, pc1402, pc1401, 0, pc1402, pc1401, pc1401_state, empty_init, "Sharp", "Pocket Computer 1402", MACHINE_NO_SOUND)
+COMP( 198?, pc1360, pc1401, 0, pc1401, pc1401, pc1401_state, empty_init, "Sharp", "Pocket Computer 1360", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
// 72kb rom, 32kb ram, cpu? pc1360
-COMP( 1986, pc1403, 0, 0, pc1403, pc1403, pc1403_state, init_pc1403, "Sharp", "Pocket Computer 1403", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-COMP( 198?, pc1403h, pc1403, 0, pc1403h, pc1403, pc1403_state, init_pc1403, "Sharp", "Pocket Computer 1403H", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1986, pc1403, 0, 0, pc1403, pc1403, pc1403_state, empty_init, "Sharp", "Pocket Computer 1403", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 198?, pc1403h, pc1403, 0, pc1403h, pc1403, pc1403_state, empty_init, "Sharp", "Pocket Computer 1403H", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)