summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/concept.c25
-rw-r--r--src/mess/includes/concept.h6
-rw-r--r--src/mess/machine/concept.c24
-rw-r--r--src/mess/machine/concept_exp.c4
-rw-r--r--src/mess/machine/concept_exp.h4
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
//**************************************************************************