mirror of
https://github.com/holub/mame
synced 2025-05-22 13:48:55 +03:00
(MESS) ravens WIP
This commit is contained in:
parent
ac174df014
commit
913db8bbcb
@ -9,6 +9,9 @@ http://petersieg.bplaced.com/?2650_Computer:2650_Selbstbaucomputer
|
|||||||
|
|
||||||
2013-04-23 Skeleton driver.
|
2013-04-23 Skeleton driver.
|
||||||
|
|
||||||
|
|
||||||
|
Version 0.9
|
||||||
|
-----------
|
||||||
Hardware:
|
Hardware:
|
||||||
0000-07FF ROM "MON1"
|
0000-07FF ROM "MON1"
|
||||||
0800-1FFF RAM (3x HM6116)
|
0800-1FFF RAM (3x HM6116)
|
||||||
@ -23,11 +26,28 @@ There is a cassette interface..
|
|||||||
ToDo:
|
ToDo:
|
||||||
- Everything
|
- Everything
|
||||||
|
|
||||||
|
Version V2.0
|
||||||
|
------------
|
||||||
|
This used a terminal interface with a few non-standard control codes.
|
||||||
|
The pushbuttons and LEDs appear to have been done away with.
|
||||||
|
|
||||||
|
Commands (must be in uppercase):
|
||||||
|
A ?
|
||||||
|
B ?
|
||||||
|
C ?
|
||||||
|
D Dump to screen
|
||||||
|
E Execute
|
||||||
|
I ?
|
||||||
|
L Load
|
||||||
|
R ?
|
||||||
|
V ?
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/s2650/s2650.h"
|
#include "cpu/s2650/s2650.h"
|
||||||
//#include "sound/speaker.h"
|
//#include "sound/speaker.h"
|
||||||
|
#include "machine/terminal.h"
|
||||||
#include "ravens.lh"
|
#include "ravens.lh"
|
||||||
|
|
||||||
|
|
||||||
@ -38,50 +58,71 @@ public:
|
|||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu")
|
m_maincpu(*this, "maincpu")
|
||||||
// , m_speaker(*this, "speaker")
|
// , m_speaker(*this, "speaker")
|
||||||
|
, m_terminal(*this, TERMINAL_TAG)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(port07_r);
|
DECLARE_READ8_MEMBER(port07_r);
|
||||||
DECLARE_WRITE8_MEMBER(port00_w);
|
DECLARE_READ8_MEMBER(port17_r);
|
||||||
DECLARE_WRITE8_MEMBER(port06_w);
|
DECLARE_WRITE8_MEMBER(leds_w);
|
||||||
UINT8 m_last_key;
|
DECLARE_WRITE8_MEMBER(kbd_put);
|
||||||
bool m_speaker_state;
|
// UINT8 m_last_key;
|
||||||
|
UINT8 m_term_data;
|
||||||
|
// bool m_speaker_state;
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
// required_device<speaker_sound_device> m_speaker;
|
// required_device<speaker_sound_device> m_speaker;
|
||||||
|
optional_device<generic_terminal_device> m_terminal;
|
||||||
};
|
};
|
||||||
|
|
||||||
WRITE8_MEMBER( ravens_state::port00_w )
|
WRITE8_MEMBER( ravens_state::leds_w )
|
||||||
{
|
{
|
||||||
output_set_digit_value(offset, data);
|
output_set_digit_value(offset, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( ravens_state::port06_w )
|
//WRITE8_MEMBER( ravens_state::port06_w )
|
||||||
{
|
//{
|
||||||
// m_speaker_state ^=1;
|
// m_speaker_state ^=1;
|
||||||
// speaker_level_w(m_speaker, m_speaker_state);
|
// speaker_level_w(m_speaker, m_speaker_state);
|
||||||
}
|
//}
|
||||||
|
|
||||||
READ8_MEMBER( ravens_state::port07_r )
|
READ8_MEMBER( ravens_state::port07_r )
|
||||||
{
|
{
|
||||||
UINT8 keyin, i, data = 0x40;
|
UINT8 ret = m_term_data;
|
||||||
|
m_term_data = 0x80;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
READ8_MEMBER( ravens_state::port17_r )
|
||||||
|
{
|
||||||
|
UINT8 keyin, i, data = 0x80;
|
||||||
|
|
||||||
keyin = ioport("X0")->read();
|
keyin = ioport("X0")->read();
|
||||||
if (keyin != 0xff)
|
if (keyin != 0xff)
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
if BIT(~keyin, i)
|
if BIT(~keyin, i)
|
||||||
data = i | 0xc0;
|
return i;
|
||||||
|
|
||||||
keyin = ioport("X1")->read();
|
keyin = ioport("X1")->read();
|
||||||
if (keyin != 0xff)
|
if (keyin != 0xff)
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
if BIT(~keyin, i)
|
if BIT(~keyin, i)
|
||||||
data = i | 0xc8;
|
return i | 8;
|
||||||
|
|
||||||
if (data == m_last_key)
|
keyin = ioport("X2")->read();
|
||||||
data &= 0x7f;
|
if (keyin != 0xff)
|
||||||
else
|
for (i = 0; i < 8; i++)
|
||||||
m_last_key = data;
|
if BIT(~keyin, i)
|
||||||
|
return i<<4;
|
||||||
|
|
||||||
data |= ioport("X2")->read();
|
keyin = ioport("X3")->read();
|
||||||
|
if (keyin != 0xff)
|
||||||
|
for (i = 0; i < 8; i++)
|
||||||
|
if BIT(~keyin, i)
|
||||||
|
return (i | 8)<<4;
|
||||||
|
|
||||||
|
// if (data == m_last_key)
|
||||||
|
// data &= 0x7f;
|
||||||
|
// else
|
||||||
|
// m_last_key = data;
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@ -94,9 +135,18 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static ADDRESS_MAP_START( ravens_io, AS_IO, 8, ravens_state )
|
static ADDRESS_MAP_START( ravens_io, AS_IO, 8, ravens_state )
|
||||||
ADDRESS_MAP_UNMAP_HIGH
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE(0x00, 0x03) AM_WRITE(port00_w) // 4-led display
|
AM_RANGE(0x10, 0x15) AM_WRITE(leds_w) // 6-led display
|
||||||
AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // speaker (NOT a keyclick)
|
// AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // speaker (NOT a keyclick)
|
||||||
|
AM_RANGE(0x17, 0x17) AM_READ(port17_r) // pushbuttons
|
||||||
|
//AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
|
||||||
|
AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START( ravens2_io, AS_IO, 8, ravens_state )
|
||||||
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE(0x07, 0x07) AM_READ(port07_r) // pushbuttons
|
AM_RANGE(0x07, 0x07) AM_READ(port07_r) // pushbuttons
|
||||||
|
AM_RANGE(0x1b, 0x1b) AM_WRITENOP // signals a character is being sent to terminal, we dont need
|
||||||
|
AM_RANGE(0x1c, 0x1c) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
|
||||||
//AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
|
//AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
|
||||||
AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
|
AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -124,14 +174,28 @@ static INPUT_PORTS_START( ravens )
|
|||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
|
||||||
|
|
||||||
PORT_START("X2")
|
PORT_START("X2")
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NXT") PORT_CODE(KEYCODE_UP) PORT_CHAR('^')
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NXT") PORT_CODE(KEYCODE_UP) PORT_CHAR('^')
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ADR") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ADR") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
|
||||||
|
PORT_BIT(0xCF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("X3")
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
WRITE8_MEMBER( ravens_state::kbd_put )
|
||||||
|
{
|
||||||
|
m_term_data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
static GENERIC_TERMINAL_INTERFACE( terminal_intf )
|
||||||
|
{
|
||||||
|
DEVCB_DRIVER_MEMBER(ravens_state, kbd_put)
|
||||||
|
};
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ravens, ravens_state )
|
static MACHINE_CONFIG_START( ravens, ravens_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz)
|
MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown
|
||||||
MCFG_CPU_PROGRAM_MAP(ravens_mem)
|
MCFG_CPU_PROGRAM_MAP(ravens_mem)
|
||||||
MCFG_CPU_IO_MAP(ravens_io)
|
MCFG_CPU_IO_MAP(ravens_io)
|
||||||
|
|
||||||
@ -144,16 +208,34 @@ static MACHINE_CONFIG_START( ravens, ravens_state )
|
|||||||
// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_START( ravens2, ravens_state )
|
||||||
|
/* basic machine hardware */
|
||||||
|
MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown
|
||||||
|
MCFG_CPU_PROGRAM_MAP(ravens_mem)
|
||||||
|
MCFG_CPU_IO_MAP(ravens2_io)
|
||||||
|
|
||||||
|
/* video hardware */
|
||||||
|
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
|
||||||
|
|
||||||
|
/* sound hardware */
|
||||||
|
// MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
// MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||||
|
// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/* ROM definition */
|
/* ROM definition */
|
||||||
ROM_START( ravens )
|
ROM_START( ravens )
|
||||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_SYSTEM_BIOS(0, "v2.0", "V2.0")
|
ROM_LOAD( "mon_v0.9.bin", 0x0000, 0x0800, CRC(785eb1ad) SHA1(c316b8ac32ab6aa37746af37b9f81a23367fedd8))
|
||||||
ROMX_LOAD( "mon_v2.0.bin", 0x0000, 0x0800, CRC(bcd47c58) SHA1(f261a3f128fbedbf59a8b5480758fff4d7f76de1), ROM_BIOS(1))
|
ROM_END
|
||||||
ROM_SYSTEM_BIOS(1, "v0.9", "V0.9")
|
|
||||||
ROMX_LOAD( "mon_v0.9.bin", 0x0000, 0x0800, CRC(785eb1ad) SHA1(c316b8ac32ab6aa37746af37b9f81a23367fedd8), ROM_BIOS(2))
|
ROM_START( ravens2 )
|
||||||
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
|
ROM_LOAD( "mon_v2.0.bin", 0x0000, 0x0800, CRC(bcd47c58) SHA1(f261a3f128fbedbf59a8b5480758fff4d7f76de1))
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
/* Driver */
|
/* Driver */
|
||||||
|
|
||||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||||
COMP( 1979, ravens, 0, 0, ravens, ravens, driver_device, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
|
COMP( 1985, ravens, 0, 0, ravens, ravens, driver_device, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer V0.9", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
|
||||||
|
COMP( 1985, ravens2, ravens, 0, ravens2, ravens, driver_device, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer V2.0", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
|
||||||
|
@ -2209,3 +2209,4 @@ binbug
|
|||||||
dg680
|
dg680
|
||||||
besta88
|
besta88
|
||||||
ravens
|
ravens
|
||||||
|
ravens2
|
||||||
|
Loading…
Reference in New Issue
Block a user