(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
This commit is contained in:
R. Belmont 2014-04-13 18:36:02 +00:00
parent ad0e62a58a
commit 8467b31586
5 changed files with 51 additions and 39 deletions

View File

@ -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)

View File

@ -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 )

View File

@ -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();
};

View File

@ -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);
}

View File

@ -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));