mirror of
https://github.com/holub/mame
synced 2025-05-21 05:08:54 +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.
|
||||
|
||||
|
||||
Version 0.9
|
||||
-----------
|
||||
Hardware:
|
||||
0000-07FF ROM "MON1"
|
||||
0800-1FFF RAM (3x HM6116)
|
||||
@ -23,11 +26,28 @@ There is a cassette interface..
|
||||
ToDo:
|
||||
- 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 "cpu/s2650/s2650.h"
|
||||
//#include "sound/speaker.h"
|
||||
#include "machine/terminal.h"
|
||||
#include "ravens.lh"
|
||||
|
||||
|
||||
@ -38,50 +58,71 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu")
|
||||
// , m_speaker(*this, "speaker")
|
||||
, m_terminal(*this, TERMINAL_TAG)
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(port07_r);
|
||||
DECLARE_WRITE8_MEMBER(port00_w);
|
||||
DECLARE_WRITE8_MEMBER(port06_w);
|
||||
UINT8 m_last_key;
|
||||
bool m_speaker_state;
|
||||
DECLARE_READ8_MEMBER(port17_r);
|
||||
DECLARE_WRITE8_MEMBER(leds_w);
|
||||
DECLARE_WRITE8_MEMBER(kbd_put);
|
||||
// UINT8 m_last_key;
|
||||
UINT8 m_term_data;
|
||||
// bool m_speaker_state;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
// 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);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( ravens_state::port06_w )
|
||||
{
|
||||
//WRITE8_MEMBER( ravens_state::port06_w )
|
||||
//{
|
||||
// m_speaker_state ^=1;
|
||||
// speaker_level_w(m_speaker, m_speaker_state);
|
||||
}
|
||||
//}
|
||||
|
||||
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();
|
||||
if (keyin != 0xff)
|
||||
for (i = 0; i < 8; i++)
|
||||
if BIT(~keyin, i)
|
||||
data = i | 0xc0;
|
||||
return i;
|
||||
|
||||
keyin = ioport("X1")->read();
|
||||
if (keyin != 0xff)
|
||||
for (i = 0; i < 8; i++)
|
||||
if BIT(~keyin, i)
|
||||
data = i | 0xc8;
|
||||
return i | 8;
|
||||
|
||||
if (data == m_last_key)
|
||||
data &= 0x7f;
|
||||
else
|
||||
m_last_key = data;
|
||||
keyin = ioport("X2")->read();
|
||||
if (keyin != 0xff)
|
||||
for (i = 0; i < 8; i++)
|
||||
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;
|
||||
}
|
||||
@ -94,9 +135,18 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ravens_io, AS_IO, 8, ravens_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00, 0x03) AM_WRITE(port00_w) // 4-led display
|
||||
AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // speaker (NOT a keyclick)
|
||||
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(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(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(0x102, 0x103) AM_NOP // stops error log filling up while using debug
|
||||
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_START("X2")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, 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( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NXT") PORT_CODE(KEYCODE_UP) 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
|
||||
|
||||
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 )
|
||||
/* 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_IO_MAP(ravens_io)
|
||||
|
||||
@ -144,16 +208,34 @@ static MACHINE_CONFIG_START( ravens, ravens_state )
|
||||
// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||
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_START( ravens )
|
||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||
ROM_SYSTEM_BIOS(0, "v2.0", "V2.0")
|
||||
ROMX_LOAD( "mon_v2.0.bin", 0x0000, 0x0800, CRC(bcd47c58) SHA1(f261a3f128fbedbf59a8b5480758fff4d7f76de1), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS(1, "v0.9", "V0.9")
|
||||
ROMX_LOAD( "mon_v0.9.bin", 0x0000, 0x0800, CRC(785eb1ad) SHA1(c316b8ac32ab6aa37746af37b9f81a23367fedd8), ROM_BIOS(2))
|
||||
ROM_LOAD( "mon_v0.9.bin", 0x0000, 0x0800, CRC(785eb1ad) SHA1(c316b8ac32ab6aa37746af37b9f81a23367fedd8))
|
||||
ROM_END
|
||||
|
||||
ROM_START( ravens2 )
|
||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||
ROM_LOAD( "mon_v2.0.bin", 0x0000, 0x0800, CRC(bcd47c58) SHA1(f261a3f128fbedbf59a8b5480758fff4d7f76de1))
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT 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 )
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
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
|
||||
besta88
|
||||
ravens
|
||||
ravens2
|
||||
|
Loading…
Reference in New Issue
Block a user