(MESS) ravens WIP

This commit is contained in:
Robbbert 2013-04-25 04:19:31 +00:00
parent ac174df014
commit 913db8bbcb
2 changed files with 110 additions and 27 deletions

View File

@ -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 )

View File

@ -2209,3 +2209,4 @@ binbug
dg680 dg680
besta88 besta88
ravens ravens
ravens2