diff options
-rw-r--r-- | src/mess/drivers/concept.c | 25 | ||||
-rw-r--r-- | src/mess/includes/concept.h | 6 | ||||
-rw-r--r-- | src/mess/machine/concept.c | 24 | ||||
-rw-r--r-- | src/mess/machine/concept_exp.c | 4 | ||||
-rw-r--r-- | src/mess/machine/concept_exp.h | 4 |
5 files changed, 34 insertions, 29 deletions
diff --git a/src/mess/drivers/concept.c b/src/mess/drivers/concept.c index 9a1a5044e63..7e714dc44b9 100644 --- a/src/mess/drivers/concept.c +++ b/src/mess/drivers/concept.c @@ -31,7 +31,6 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "includes/concept.h" -#include "machine/mm58274c.h" static ADDRESS_MAP_START(concept_memmap, AS_PROGRAM, 16, concept_state ) AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION("maincpu", 0x010000) /* boot ROM mirror */ @@ -250,19 +249,23 @@ ROM_START( concept ) ROM_REGION16_BE(0x100000,"maincpu",0) /* 68k rom and ram */ // concept boot ROM + ROM_SYSTEM_BIOS(0, "lvl8", "Level 8" ) // v0? + ROMX_LOAD("bootl08h", 0x010000, 0x1000, CRC(ee479f51) SHA1(b20ba18564672196076e46507020c6d69a640a2f), ROM_BIOS(1) | ROM_SKIP(1)) + ROMX_LOAD("bootl08l", 0x010001, 0x1000, CRC(acaefd07) SHA1(de0c7eaacaf4c0652aa45e523cebce2b2993c437), ROM_BIOS(1) | ROM_SKIP(1)) + + ROM_SYSTEM_BIOS(1, "lvl7", "Level 7" ) // v0? v1? + ROMX_LOAD("cc07h", 0x010000, 0x1000, CRC(455abac8) SHA1(b12e1580220242d34eafed1b486cebd89e823c8b), ROM_BIOS(2) | ROM_SKIP(1)) + ROMX_LOAD("cc07l", 0x010001, 0x1000, CRC(107a3830) SHA1(0ea12ef13b0d11fcd83b306b3a1bb8014ba910c0), ROM_BIOS(2) | ROM_SKIP(1)) + + ROM_SYSTEM_BIOS(2, "lvl6", "Level 6" ) // v0? + ROMX_LOAD("cc06h", 0x010000, 0x1000, CRC(66b6b259) SHA1(1199a38ef3e94f695e8da6a7c80c6432da3cb80c), ROM_BIOS(3) | ROM_SKIP(1)) + ROMX_LOAD("cc06l", 0x010001, 0x1000, CRC(600940d3) SHA1(c3278bf23b3b1c35ea1e3da48a05e877862a8345), ROM_BIOS(3) | ROM_SKIP(1)) + #if 0 - // version 0 level 6 release - ROM_LOAD16_BYTE("bootl06h", 0x010000, 0x1000, CRC(66b6b259)) - ROM_LOAD16_BYTE("bootl06l", 0x010001, 0x1000, CRC(600940d3)) -#elif 0 // version 1 lvl 7 release - ROM_LOAD16_BYTE("bootl17h", 0x010000, 0x1000, CRC(6dd9718f)) + ROM_LOAD16_BYTE("bootl17h", 0x010000, 0x1000, CRC(6dd9718f)) // where does this come from? ROM_LOAD16_BYTE("bootl17l", 0x010001, 0x1000, CRC(107a3830)) -#elif 1 - // version 0 lvl 8 release - ROM_LOAD16_BYTE("bootl08h", 0x010000, 0x1000, CRC(ee479f51) SHA1(b20ba18564672196076e46507020c6d69a640a2f)) - ROM_LOAD16_BYTE("bootl08l", 0x010001, 0x1000, CRC(acaefd07) SHA1(de0c7eaacaf4c0652aa45e523cebce2b2993c437)) -#else +#elif 0 // version $F lvl 8 (development version found on a floppy disk along with // the source code) ROM_LOAD16_WORD("cc.prm", 0x010000, 0x2000, CRC(b5a87dab) SHA1(0da59af6cfeeb38672f71731527beac323d9c3d6)) diff --git a/src/mess/includes/concept.h b/src/mess/includes/concept.h index 56fad0de62f..d4a0171b3c1 100644 --- a/src/mess/includes/concept.h +++ b/src/mess/includes/concept.h @@ -13,6 +13,7 @@ #include "machine/6522via.h" #include "machine/mos6551.h" +#include "machine/mm58274c.h" /* mm58274 seems to be compatible with mm58174 */ #include "machine/concept_exp.h" #define ACIA_0_TAG "acia0" @@ -41,12 +42,13 @@ public: required_device<mos6551_device> m_acia1; required_shared_ptr<UINT16> m_videoram; + device_t *m_mm58274; concept_exp_port_device *m_exp[4]; ioport_port *m_key[6]; UINT8 m_pending_interrupts; - char m_clock_enable; - char m_clock_address; + bool m_clock_enable; + UINT8 m_clock_address; UINT8 m_KeyQueue[KeyQueueSize]; int m_KeyQueueHead; int m_KeyQueueLen; diff --git a/src/mess/machine/concept.c b/src/mess/machine/concept.c index b1b0a12939c..8b3161307a4 100644 --- a/src/mess/machine/concept.c +++ b/src/mess/machine/concept.c @@ -6,7 +6,6 @@ #include "emu.h" #include "includes/concept.h" -#include "machine/mm58274c.h" /* mm58274 seems to be compatible with mm58174 */ #include "cpu/m68000/m68000.h" @@ -54,11 +53,13 @@ void concept_state::machine_start() m_pending_interrupts = 0; /* initialize clock interface */ - m_clock_enable = 0/*1*/; + m_clock_enable = FALSE /*TRUE*/; /* clear keyboard interface state */ m_KeyQueueHead = m_KeyQueueLen = 0; memset(m_KeyStateSave, 0, sizeof(m_KeyStateSave)); + + m_mm58274 = machine().device("mm58274c"); m_exp[0] = machine().device<concept_exp_port_device>("exp1"); m_exp[1] = machine().device<concept_exp_port_device>("exp2"); @@ -71,6 +72,14 @@ void concept_state::machine_start() sprintf(str, "KEY%i", i); m_key[i] = ioport(str); } + + save_item(NAME(m_pending_interrupts)); + save_item(NAME(m_clock_enable)); + save_item(NAME(m_clock_address)); + save_item(NAME(m_KeyQueue)); + save_item(NAME(m_KeyQueueHead)); + save_item(NAME(m_KeyQueueLen)); + save_item(NAME(m_KeyStateSave)); } @@ -115,7 +124,7 @@ void concept_state::concept_set_interrupt(int level, int state) m_maincpu->set_input_line_and_vector(M68K_IRQ_1, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); } -inline void concept_state::post_in_KeyQueue(int keycode) +inline void concept_state::post_in_KeyQueue(int keycode) { m_KeyQueue[(m_KeyQueueHead+m_KeyQueueLen) % KeyQueueSize] = keycode; m_KeyQueueLen++; @@ -127,11 +136,10 @@ void concept_state::poll_keyboard() UINT32 key_transitions; int i, j; int keycode; - static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5" }; for(i = 0; (i < /*4*/3) && (m_KeyQueueLen <= (KeyQueueSize-MaxKeyMessageLen)); i++) { - keystate = ioport(keynames[2*i])->read() | (ioport(keynames[2*i + 1])->read() << 16); + keystate = m_key[2 * i]->read() | (m_key[2 * i + 1]->read() << 16); key_transitions = keystate ^ m_KeyStateSave[i]; if(key_transitions) { @@ -272,7 +280,7 @@ READ16_MEMBER(concept_state::concept_io_r) /* calendar R/W */ VLOG(("concept_io_r: Calendar read at address 0x03%4.4x\n", offset << 1)); if (!m_clock_enable) - return mm58274c_r(machine().device("mm58274c"), space, m_clock_address); + return mm58274c_r(m_mm58274, space, m_clock_address); break; case 7: @@ -397,7 +405,7 @@ WRITE16_MEMBER(concept_state::concept_io_w) /* calendar R/W */ LOG(("concept_io_w: Calendar written to at address 0x03%4.4x, data: 0x%4.4x\n", offset << 1, data)); if (!m_clock_enable) - mm58274c_w(machine().device("mm58274c"), space, m_clock_address, data & 0xf); + mm58274c_w(m_mm58274, space, m_clock_address, data & 0xf); break; case 7: @@ -430,7 +438,7 @@ WRITE16_MEMBER(concept_state::concept_io_w) /* NCALM clock calendar address and strobe register */ if (m_clock_enable != ((data & 0x10) != 0)) { - m_clock_enable = (data & 0x10) != 0; + m_clock_enable = ((data & 0x10) != 0); if (! m_clock_enable) /* latch address when enable goes low */ m_clock_address = data & 0x0f; diff --git a/src/mess/machine/concept_exp.c b/src/mess/machine/concept_exp.c index e763d42de81..6bf67ed233d 100644 --- a/src/mess/machine/concept_exp.c +++ b/src/mess/machine/concept_exp.c @@ -48,10 +48,6 @@ concept_exp_port_device::concept_exp_port_device(const machine_config &mconfig, void concept_exp_port_device::device_start() { m_card = dynamic_cast<concept_exp_card_device *>(get_card_device()); - - // resolve callbacks -// m_write_trxc.resolve_safe(); -// m_write_keydown.resolve_safe(); } diff --git a/src/mess/machine/concept_exp.h b/src/mess/machine/concept_exp.h index 514dc4b354a..4c8e22d20e2 100644 --- a/src/mess/machine/concept_exp.h +++ b/src/mess/machine/concept_exp.h @@ -32,10 +32,6 @@ protected: extern const device_type CONCEPT_EXP_PORT; -// supported devices -//SLOT_INTERFACE_EXTERN( abc_keyboard_devices ); - - //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** |