From 8467b315869864e352ae6a26f4ad7cd2383778b7 Mon Sep 17 00:00:00 2001 From: "R. Belmont" Date: Sun, 13 Apr 2014 18:36:02 +0000 Subject: [PATCH] (MESS) Apple II updates: [R. Belmont] - Some minor cleanup to how post-IIe machines are handled - Fixed N/M keys on Platinum IIe and IIgs --- src/mess/drivers/apple2.c | 16 +++++++++----- src/mess/drivers/apple2gs.c | 6 ++--- src/mess/includes/apple2.h | 20 ++++++++++------- src/mess/machine/apple2.c | 44 +++++++++++++++++++------------------ src/mess/machine/apple2gs.c | 4 +++- 5 files changed, 51 insertions(+), 39 deletions(-) diff --git a/src/mess/drivers/apple2.c b/src/mess/drivers/apple2.c index d477a531934..2bab8b05c38 100644 --- a/src/mess/drivers/apple2.c +++ b/src/mess/drivers/apple2.c @@ -831,8 +831,8 @@ INPUT_PORTS_START( apple2ep ) PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c') PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v') PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b') - PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m') - PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n') + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m') PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') @@ -1016,7 +1016,7 @@ static MACHINE_CONFIG_START( apple2_common, apple2_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", apple2_state, apple2_interrupt, "screen", 0, 1) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_MACHINE_START_OVERRIDE(apple2_state, apple2 ) + MCFG_MACHINE_START_OVERRIDE(apple2_state, apple2e ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1141,7 +1141,7 @@ static MACHINE_CONFIG_DERIVED( tk2000, apple2_common ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mprof3, apple2e ) - MCFG_MACHINE_START_OVERRIDE(apple2_state,apple2) + MCFG_MACHINE_START_OVERRIDE(apple2_state,apple2c) MCFG_VIDEO_START_OVERRIDE(apple2_state,apple2c) /* internal ram */ @@ -1158,7 +1158,7 @@ static MACHINE_CONFIG_DERIVED( apple2ep, apple2e ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( apple2c, apple2ee ) - MCFG_MACHINE_START_OVERRIDE(apple2_state,apple2) + MCFG_MACHINE_START_OVERRIDE(apple2_state,apple2c) MCFG_VIDEO_START_OVERRIDE(apple2_state,apple2c) MCFG_A2BUS_SLOT_REMOVE("sl1") // IIc has no slots, of course :) @@ -1182,6 +1182,10 @@ static MACHINE_CONFIG_DERIVED( apple2c, apple2ee ) MCFG_RAM_EXTRA_OPTIONS("128K") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( apple2cp, apple2c ) + MCFG_MACHINE_START_OVERRIDE(apple2_state,apple2cp) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( apple2c_iwm, apple2c ) MCFG_A2BUS_SLOT_REMOVE("sl6") @@ -1644,7 +1648,7 @@ COMP( 1988, las128ex, apple2c, 0, laser128, apple2e, driver_device, COMP( 1985, apple2c0, apple2c, 0, apple2c_iwm, apple2e, driver_device, 0, "Apple Computer", "Apple //c (UniDisk 3.5)", GAME_SUPPORTS_SAVE ) COMP( 1986, apple2c3, apple2c, 0, apple2c_iwm, apple2e, driver_device, 0, "Apple Computer", "Apple //c (Original Memory Expansion)", GAME_SUPPORTS_SAVE ) COMP( 1986, apple2c4, apple2c, 0, apple2c_iwm, apple2e, driver_device, 0, "Apple Computer", "Apple //c (rev 4)", GAME_NOT_WORKING ) -COMP( 1988, apple2cp, apple2c, 0, apple2c_iwm, apple2e, driver_device, 0, "Apple Computer", "Apple //c Plus", GAME_SUPPORTS_SAVE ) +COMP( 1988, apple2cp, apple2c, 0, apple2cp, apple2e, driver_device, 0, "Apple Computer", "Apple //c Plus", GAME_SUPPORTS_SAVE ) COMP( 1984, ivelultr, apple2, 0, apple2p, apple2p, driver_device, 0, "Ivasim", "Ivel Ultra", GAME_SUPPORTS_SAVE ) COMP( 1983, agat7, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-7", GAME_NOT_WORKING) // disk controller ROM JSRs to $FCA8 which is a delay on apple II, illegal instruction crash here :( COMP( 1984, agat9, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-9", GAME_NOT_WORKING) diff --git a/src/mess/drivers/apple2gs.c b/src/mess/drivers/apple2gs.c index 8516c645094..171406ce2b5 100644 --- a/src/mess/drivers/apple2gs.c +++ b/src/mess/drivers/apple2gs.c @@ -582,9 +582,9 @@ ROM_START(apple2gsr0p) // 6/19/1986 Cortland prototype ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", GAME_SUPPORTS_SAVE ) -COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", GAME_NOT_WORKING ) -COMP( 1989, apple2gsr3lp, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 late prototype?)", GAME_NOT_WORKING ) +COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", GAME_SUPPORTS_SAVE ) +COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", GAME_NOT_WORKING ) +COMP( 1989, apple2gsr3lp, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 late prototype?)", GAME_NOT_WORKING ) COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM01)", GAME_SUPPORTS_SAVE ) COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00)", GAME_SUPPORTS_SAVE ) COMP( 1986, apple2gsr0p,apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", GAME_SUPPORTS_SAVE ) diff --git a/src/mess/includes/apple2.h b/src/mess/includes/apple2.h index e097ba260b9..2780ce0a392 100644 --- a/src/mess/includes/apple2.h +++ b/src/mess/includes/apple2.h @@ -68,7 +68,9 @@ enum machine_type_t { APPLE_II, // Apple II/II+ APPLE_IIE, // Apple IIe with aux slots - APPLE_IIEPLUS, // Apple IIc/IIgs/IIc+ with permanent aux memory + APPLE_IIGS, // Apple IIgs + APPLE_IIC, // Apple IIc + APPLE_IICPLUS, // Apple IIc+ TK2000, // Microdigital TK2000 LASER128, // Laser 128/128EX/128EX2 SPACE84, // "Space 84" with flipped text mode @@ -294,18 +296,19 @@ public: write8_delegate wd_inh_d000; read8_delegate rd_inh_e000; write8_delegate wd_inh_e000; - DECLARE_MACHINE_START(apple2); - DECLARE_MACHINE_START(apple2e); - DECLARE_VIDEO_START(apple2); - DECLARE_PALETTE_INIT(apple2); DECLARE_MACHINE_START(apple2orig); - DECLARE_VIDEO_START(apple2p); - DECLARE_VIDEO_START(apple2e); - DECLARE_VIDEO_START(apple2c); + DECLARE_MACHINE_START(apple2e); + DECLARE_MACHINE_START(apple2c); + DECLARE_MACHINE_START(apple2cp); DECLARE_MACHINE_START(tk2000); DECLARE_MACHINE_START(laser128); DECLARE_MACHINE_START(space84); DECLARE_MACHINE_START(laba2p); + DECLARE_VIDEO_START(apple2); + DECLARE_PALETTE_INIT(apple2); + DECLARE_VIDEO_START(apple2p); + DECLARE_VIDEO_START(apple2e); + DECLARE_VIDEO_START(apple2c); UINT32 screen_update_apple2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(apple2_interrupt); DECLARE_WRITE8_MEMBER(a2bus_irq_w); @@ -334,6 +337,7 @@ public: int apple2_fdc_has_525(); void apple2_iwm_setdiskreg(UINT8 data); void apple2_init_common(); + void apple2eplus_init_common(void *apple2cp_ce00_ram); INT8 apple2_slotram_r(address_space &space, int slotnum, int offset); int a2_no_ctrl_reset(); }; diff --git a/src/mess/machine/apple2.c b/src/mess/machine/apple2.c index 22e6db8fec0..760fb1b8dff 100644 --- a/src/mess/machine/apple2.c +++ b/src/mess/machine/apple2.c @@ -2125,23 +2125,12 @@ void apple2_state::apple2_init_common() apple2_refresh_delegates(); } -MACHINE_START_MEMBER(apple2_state,apple2) +void apple2_state::apple2eplus_init_common(void *apple2cp_ce00_ram) { apple2_memmap_config mem_cfg; - void *apple2cp_ce00_ram = NULL; m_flags_mask = 0; - /* there appears to be some hidden RAM that is swapped in on the Apple - * IIc plus; I have not found any official documentation but the BIOS - * clearly uses this area as writeable memory */ - if (!strcmp(machine().system().name, "apple2cp")) { - apple2cp_ce00_ram = auto_alloc_array(machine(), UINT8, 0x200); - memset(apple2cp_ce00_ram, 0, sizeof(UINT8) * 0x200); - } - - m_machinetype = APPLE_IIEPLUS; - apple2_init_common(); /* setup memory */ @@ -2152,20 +2141,33 @@ MACHINE_START_MEMBER(apple2_state,apple2) apple2_setup_memory(&mem_cfg); } -MACHINE_START_MEMBER(apple2_state,apple2e) +MACHINE_START_MEMBER(apple2_state,apple2c) { - apple2_memmap_config mem_cfg; - void *apple2cp_ce00_ram = NULL; + m_machinetype = APPLE_IIC; - m_flags_mask = 0; + apple2eplus_init_common((void *)NULL); +} + +MACHINE_START_MEMBER(apple2_state,apple2cp) +{ + void *apple2cp_ce00_ram; /* there appears to be some hidden RAM that is swapped in on the Apple * IIc plus; I have not found any official documentation but the BIOS * clearly uses this area as writeable memory */ - if (!strcmp(machine().system().name, "apple2cp")) { - apple2cp_ce00_ram = auto_alloc_array(machine(), UINT8, 0x200); - memset(apple2cp_ce00_ram, 0, sizeof(UINT8) * 0x200); - } + apple2cp_ce00_ram = auto_alloc_array(machine(), UINT8, 0x200); + memset(apple2cp_ce00_ram, 0, sizeof(UINT8) * 0x200); + + m_machinetype = APPLE_IICPLUS; + + apple2eplus_init_common(apple2cp_ce00_ram); +} + +MACHINE_START_MEMBER(apple2_state,apple2e) +{ + apple2_memmap_config mem_cfg; + + m_flags_mask = 0; m_machinetype = APPLE_IIE; @@ -2175,7 +2177,7 @@ MACHINE_START_MEMBER(apple2_state,apple2e) memset(&mem_cfg, 0, sizeof(mem_cfg)); mem_cfg.first_bank = 1; mem_cfg.memmap = apple2_memmap_entries; - mem_cfg.auxmem = (UINT8*)apple2cp_ce00_ram; + mem_cfg.auxmem = (UINT8*)NULL; apple2_setup_memory(&mem_cfg); } diff --git a/src/mess/machine/apple2gs.c b/src/mess/machine/apple2gs.c index 2b051dc4a65..e728eb0b5d3 100644 --- a/src/mess/machine/apple2gs.c +++ b/src/mess/machine/apple2gs.c @@ -1998,7 +1998,9 @@ MACHINE_RESET_MEMBER(apple2gs_state,apple2gs) MACHINE_START_MEMBER(apple2gs_state,apple2gscommon) { apple2gs_refresh_delegates(); - apple2_init_common(); + + m_machinetype = APPLE_IIGS; + apple2eplus_init_common(NULL); /* set up Apple IIgs vectoring */ g65816_set_read_vector_callback(m_maincpu, read8_delegate(FUNC(apple2gs_state::apple2gs_read_vector),this));