mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
*kaypro: added back save state support;
- fixed attributes off by one position; - removed anonymous timer
This commit is contained in:
parent
a9844643c4
commit
d6d18f9574
@ -212,6 +212,8 @@ void kaypro_state::kayproii(machine_config &config)
|
||||
m_screen->set_screen_update(FUNC(kaypro_state::screen_update_kayproii));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
TIMER(config, m_floppy_timer).configure_generic(FUNC(kaypro_state::floppy_timer));
|
||||
|
||||
GFXDECODE(config, "gfxdecode", m_palette, gfx_kayproii);
|
||||
PALETTE(config, m_palette, palette_device::MONOCHROME);
|
||||
|
||||
@ -300,6 +302,8 @@ void kaypro_state::kaypro484(machine_config &config)
|
||||
m_screen->set_visarea(0,80*8-1,0,25*16-1);
|
||||
m_screen->set_screen_update(FUNC(kaypro_state::screen_update_kaypro484));
|
||||
|
||||
TIMER(config, m_floppy_timer).configure_generic(FUNC(kaypro_state::floppy_timer));
|
||||
|
||||
GFXDECODE(config, "gfxdecode", m_palette, gfx_kaypro484);
|
||||
PALETTE(config, m_palette, FUNC(kaypro_state::kaypro_palette), 3);
|
||||
|
||||
@ -385,6 +389,7 @@ void kaypro_state::kaypro284(machine_config &config)
|
||||
config.device_remove("fdc:1");
|
||||
FLOPPY_CONNECTOR(config, "fdc:0", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "fdc:1", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats).enable_sound(true);
|
||||
SOFTWARE_LIST(config.replace(), "flop_list").set_original("kayproii");
|
||||
}
|
||||
|
||||
void kaypro_state::init_kaypro()
|
||||
@ -647,18 +652,18 @@ ROM_END
|
||||
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
|
||||
COMP( 1982, kayproii, 0, 0, kayproii, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro II - 2/83" , 0 )
|
||||
COMP( 1983, kayproiv, kayproii, 0, kayproiv, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro IV - 4/83" , 0 ) // model 81-004
|
||||
COMP( 1983, kaypro10, 0, 0, kaypro10, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 10 - 1983", 0 )
|
||||
COMP( 1983, kayproiip88, kayproii, 0, kayproii, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4 plus88 - 4/83" , MACHINE_NOT_WORKING ) // model 81-004 with an added 8088 daughterboard and rom
|
||||
COMP( 1984, kaypro484, 0, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4/84" , MACHINE_NOT_WORKING ) // model 81-015
|
||||
COMP( 1984, kaypro284, kaypro484, 0, kaypro284, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 2/84" , MACHINE_NOT_WORKING ) // model 81-015
|
||||
COMP( 1984, kaypro484p88, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4/84 plus88", MACHINE_NOT_WORKING ) // model 81-015 with an added 8088 daughterboard and rom
|
||||
COMP( 1984, kaypro1084, kaypro10, 0, kaypro10, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 10" , MACHINE_NOT_WORKING ) // model 81-005
|
||||
COMP( 1984, robie, 0, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro Robie" , MACHINE_NOT_WORKING )
|
||||
COMP( 1985, kaypro2x, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 2x" , MACHINE_NOT_WORKING ) // model 81-025
|
||||
COMP( 1985, kaypronew2, 0, 0, kaypronew2, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro New 2", MACHINE_NOT_WORKING )
|
||||
COMP( 1985, kaypro4x, robie, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4x" , MACHINE_NOT_WORKING )
|
||||
COMP( 1986, kaypro1, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 1", MACHINE_NOT_WORKING )
|
||||
COMP( 198?, omni2, kayproii, 0, omni2, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Omni II Logic Analyzer" , 0 )
|
||||
COMP( 198?, omni4, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Omni Logic Inc.", "Omni 4 Logic Analyzer" , MACHINE_NOT_WORKING )
|
||||
COMP( 1982, kayproii, 0, 0, kayproii, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro II - 2/83", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1983, kayproiv, kayproii, 0, kayproiv, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro IV - 4/83", MACHINE_SUPPORTS_SAVE ) // model 81-004
|
||||
COMP( 1983, kaypro10, 0, 0, kaypro10, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 10 - 1983", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1983, kayproiip88, kayproii, 0, kayproii, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4 plus88 - 4/83" , MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // model 81-004 with an added 8088 daughterboard and rom
|
||||
COMP( 1984, kaypro484, 0, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4/84", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // model 81-015
|
||||
COMP( 1984, kaypro284, kaypro484, 0, kaypro284, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 2/84", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // model 81-015
|
||||
COMP( 1984, kaypro484p88, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4/84 plus88", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // model 81-015 with an added 8088 daughterboard and rom
|
||||
COMP( 1984, kaypro1084, kaypro10, 0, kaypro10, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 10", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // model 81-005
|
||||
COMP( 1984, robie, 0, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro Robie", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1985, kaypro2x, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 2x", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // model 81-025
|
||||
COMP( 1985, kaypronew2, 0, 0, kaypronew2, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro New 2", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1985, kaypro4x, robie, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 4x", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1986, kaypro1, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Kaypro 1", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 198?, omni2, kayproii, 0, omni2, kaypro, kaypro_state, init_kaypro, "Non Linear Systems", "Omni II Logic Analyzer", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 198?, omni4, kaypro484, 0, kaypro484, kaypro, kaypro_state, init_kaypro, "Omni Logic Inc.", "Omni 4 Logic Analyzer", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -14,17 +14,13 @@
|
||||
#include "sound/beep.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/timer.h"
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
|
||||
class kaypro_state : public driver_device
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
TIMER_FLOPPY
|
||||
};
|
||||
|
||||
kaypro_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_palette(*this, "palette")
|
||||
@ -42,6 +38,7 @@ public:
|
||||
, m_bankr(*this, "bankr")
|
||||
, m_bankw(*this, "bankw")
|
||||
, m_bank3(*this, "bank3")
|
||||
, m_floppy_timer(*this, "floppy_timer")
|
||||
{}
|
||||
|
||||
void omni2(machine_config &config);
|
||||
@ -60,6 +57,7 @@ private:
|
||||
void kayproii_io(address_map &map);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(floppy_timer);
|
||||
u8 kaypro484_87_r();
|
||||
u8 kaypro484_system_port_r();
|
||||
u8 kaypro484_status_r();
|
||||
@ -85,7 +83,6 @@ private:
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb);
|
||||
|
||||
void mc6845_screen_configure();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
u8 m_mc6845_reg[32];
|
||||
u8 m_mc6845_ind;
|
||||
@ -115,6 +112,7 @@ private:
|
||||
required_memory_bank m_bankr;
|
||||
required_memory_bank m_bankw;
|
||||
required_memory_bank m_bank3;
|
||||
required_device<timer_device> m_floppy_timer;
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_KAYPRO_H
|
||||
|
@ -176,37 +176,31 @@ void kaypro_state::kaypro484_system_port_w(u8 data)
|
||||
|
||||
*************************************************************************************/
|
||||
|
||||
void kaypro_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kaypro_state::floppy_timer)
|
||||
{
|
||||
bool halt;
|
||||
switch (id)
|
||||
halt = (bool)m_maincpu->state_int(Z80_HALT);
|
||||
if (m_is_motor_off)
|
||||
{
|
||||
case TIMER_FLOPPY:
|
||||
halt = (bool)m_maincpu->state_int(Z80_HALT);
|
||||
if (m_is_motor_off)
|
||||
{
|
||||
timer_set(attotime::from_hz(10), TIMER_FLOPPY);
|
||||
break;
|
||||
}
|
||||
if ((halt) && (m_fdc_rq & 3) && (m_fdc_rq < 0x80))
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
|
||||
m_fdc_rq |= 0x80;
|
||||
}
|
||||
else
|
||||
if ((m_fdc_rq == 0x80) || ((!halt) && BIT(m_fdc_rq, 7)))
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
|
||||
m_fdc_rq &= 0x7f;
|
||||
}
|
||||
timer_set(attotime::from_hz(1e5), TIMER_FLOPPY);
|
||||
|
||||
break;
|
||||
default:
|
||||
throw emu_fatalerror("Unknown id in kaypro_state::device_timer");
|
||||
m_floppy_timer->adjust(attotime::from_hz(10));
|
||||
return;
|
||||
}
|
||||
|
||||
if ((halt) && (m_fdc_rq & 3) && (m_fdc_rq < 0x80))
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
|
||||
m_fdc_rq |= 0x80;
|
||||
}
|
||||
else
|
||||
if ((m_fdc_rq == 0x80) || ((!halt) && BIT(m_fdc_rq, 7)))
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
|
||||
m_fdc_rq &= 0x7f;
|
||||
}
|
||||
m_floppy_timer->adjust(attotime::from_hz(1e5));
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER( kaypro_state::fdc_intrq_w )
|
||||
{
|
||||
m_fdc_rq = (m_fdc_rq & 0x82) | state;
|
||||
@ -249,7 +243,7 @@ void kaypro_state::machine_reset()
|
||||
m_system_port = 0x80;
|
||||
m_fdc_rq = 0;
|
||||
m_maincpu->reset();
|
||||
timer_set(attotime::from_hz(1), TIMER_FLOPPY); /* kick-start the nmi timer */
|
||||
m_floppy_timer->adjust(attotime::from_hz(1)); /* kick-start the nmi timer */
|
||||
}
|
||||
|
||||
|
||||
|
@ -144,7 +144,7 @@ MC6845_UPDATE_ROW( kaypro_state::kaypro484_update_row )
|
||||
if (x == cursor_x) inv=0xff;
|
||||
u16 const mem = (ma + x) & 0x7ff;
|
||||
u8 const chr = m_vram[mem];
|
||||
u8 const attr = m_vram[mem | 0x800];
|
||||
u8 const attr = m_vram[(mem+1) | 0x800];
|
||||
|
||||
u8 fg, bg;
|
||||
if ((attr & 3) == 3)
|
||||
|
Loading…
Reference in New Issue
Block a user