Previous 199869 Revisions Next

r22535 Thursday 25th April, 2013 at 04:19:31 UTC by Robbbert
(MESS) ravens WIP
[src/mess]mess.lst
[src/mess/drivers]ravens.c

trunk/src/mess/mess.lst
r22534r22535
22092209dg680
22102210besta88
22112211ravens
2212ravens2
trunk/src/mess/drivers/ravens.c
r22534r22535
99
1010        2013-04-23 Skeleton driver.
1111
12
13Version 0.9
14-----------
1215Hardware:
1316        0000-07FF ROM "MON1"
1417        0800-1FFF RAM (3x HM6116)
r22534r22535
2326ToDo:
2427- Everything
2528
29Version V2.0
30------------
31This used a terminal interface with a few non-standard control codes.
32The pushbuttons and LEDs appear to have been done away with.
33
34Commands (must be in uppercase):
35A    ?
36B    ?
37C    ?
38D    Dump to screen
39E    Execute
40I    ?
41L    Load
42R    ?
43V    ?
44
2645****************************************************************************/
2746
2847#include "emu.h"
2948#include "cpu/s2650/s2650.h"
3049//#include "sound/speaker.h"
50#include "machine/terminal.h"
3151#include "ravens.lh"
3252
3353
r22534r22535
3858      : driver_device(mconfig, type, tag),
3959   m_maincpu(*this, "maincpu")
4060//   , m_speaker(*this, "speaker")
61   , m_terminal(*this, TERMINAL_TAG)
4162   { }
4263
4364   DECLARE_READ8_MEMBER(port07_r);
44   DECLARE_WRITE8_MEMBER(port00_w);
45   DECLARE_WRITE8_MEMBER(port06_w);
46   UINT8 m_last_key;
47   bool m_speaker_state;
65   DECLARE_READ8_MEMBER(port17_r);
66   DECLARE_WRITE8_MEMBER(leds_w);
67   DECLARE_WRITE8_MEMBER(kbd_put);
68//   UINT8 m_last_key;
69   UINT8 m_term_data;
70//   bool m_speaker_state;
4871   required_device<cpu_device> m_maincpu;
4972//   required_device<speaker_sound_device> m_speaker;
73   optional_device<generic_terminal_device> m_terminal;
5074};
5175
52WRITE8_MEMBER( ravens_state::port00_w )
76WRITE8_MEMBER( ravens_state::leds_w )
5377{
5478   output_set_digit_value(offset, data);
5579}
5680
57WRITE8_MEMBER( ravens_state::port06_w )
58{
81//WRITE8_MEMBER( ravens_state::port06_w )
82//{
5983//   m_speaker_state ^=1;
6084//   speaker_level_w(m_speaker, m_speaker_state);
61}
85//}
6286
6387READ8_MEMBER( ravens_state::port07_r )
6488{
65   UINT8 keyin, i, data = 0x40;
89   UINT8 ret = m_term_data;
90   m_term_data = 0x80;
91   return ret;
92}
6693
94READ8_MEMBER( ravens_state::port17_r )
95{
96   UINT8 keyin, i, data = 0x80;
97
6798   keyin = ioport("X0")->read();
6899   if (keyin != 0xff)
69100      for (i = 0; i < 8; i++)
70101         if BIT(~keyin, i)
71            data = i | 0xc0;
102            return i;
72103
73104   keyin = ioport("X1")->read();
74105   if (keyin != 0xff)
75106      for (i = 0; i < 8; i++)
76107         if BIT(~keyin, i)
77            data = i | 0xc8;
108            return i | 8;
78109
79   if (data == m_last_key)
80      data &= 0x7f;
81   else
82      m_last_key = data;
110   keyin = ioport("X2")->read();
111   if (keyin != 0xff)
112      for (i = 0; i < 8; i++)
113         if BIT(~keyin, i)
114            return i<<4;
83115
84   data |= ioport("X2")->read();
116   keyin = ioport("X3")->read();
117   if (keyin != 0xff)
118      for (i = 0; i < 8; i++)
119         if BIT(~keyin, i)
120            return (i | 8)<<4;
85121
122//   if (data == m_last_key)
123//      data &= 0x7f;
124//   else
125//      m_last_key = data;
126
86127   return data;
87128}
88129
r22534r22535
94135
95136static ADDRESS_MAP_START( ravens_io, AS_IO, 8, ravens_state )
96137   ADDRESS_MAP_UNMAP_HIGH
97   AM_RANGE(0x00, 0x03) AM_WRITE(port00_w) // 4-led display
98   AM_RANGE(0x06, 0x06) AM_WRITE(port06_w)  // speaker (NOT a keyclick)
138   AM_RANGE(0x10, 0x15) AM_WRITE(leds_w) // 6-led display
139//   AM_RANGE(0x06, 0x06) AM_WRITE(port06_w)  // speaker (NOT a keyclick)
140   AM_RANGE(0x17, 0x17) AM_READ(port17_r) // pushbuttons
141   //AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
142   AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
143ADDRESS_MAP_END
144
145static ADDRESS_MAP_START( ravens2_io, AS_IO, 8, ravens_state )
146   ADDRESS_MAP_UNMAP_HIGH
99147   AM_RANGE(0x07, 0x07) AM_READ(port07_r) // pushbuttons
148   AM_RANGE(0x1b, 0x1b) AM_WRITENOP // signals a character is being sent to terminal, we dont need
149   AM_RANGE(0x1c, 0x1c) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
100150   //AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
101151   AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
102152ADDRESS_MAP_END
r22534r22535
124174   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
125175
126176   PORT_START("X2")
127   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NXT") PORT_CODE(KEYCODE_UP) PORT_CHAR('^')
128   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ADR") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
177   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NXT") PORT_CODE(KEYCODE_UP) PORT_CHAR('^')
178   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ADR") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
179   PORT_BIT(0xCF, IP_ACTIVE_LOW, IPT_UNUSED)
180
181   PORT_START("X3")
182   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
183   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
129184INPUT_PORTS_END
130185
186WRITE8_MEMBER( ravens_state::kbd_put )
187{
188   m_term_data = data;
189}
131190
191static GENERIC_TERMINAL_INTERFACE( terminal_intf )
192{
193   DEVCB_DRIVER_MEMBER(ravens_state, kbd_put)
194};
195
132196static MACHINE_CONFIG_START( ravens, ravens_state )
133197   /* basic machine hardware */
134   MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz)
198   MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown
135199   MCFG_CPU_PROGRAM_MAP(ravens_mem)
136200   MCFG_CPU_IO_MAP(ravens_io)
137201
r22534r22535
144208//   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
145209MACHINE_CONFIG_END
146210
211static MACHINE_CONFIG_START( ravens2, ravens_state )
212   /* basic machine hardware */
213   MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown
214   MCFG_CPU_PROGRAM_MAP(ravens_mem)
215   MCFG_CPU_IO_MAP(ravens2_io)
216
217   /* video hardware */
218   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
219
220   /* sound hardware */
221//   MCFG_SPEAKER_STANDARD_MONO("mono")
222//   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
223//   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
224MACHINE_CONFIG_END
225
147226/* ROM definition */
148227ROM_START( ravens )
149228   ROM_REGION( 0x8000, "maincpu", 0 )
150   ROM_SYSTEM_BIOS(0, "v2.0", "V2.0")
151   ROMX_LOAD( "mon_v2.0.bin", 0x0000, 0x0800, CRC(bcd47c58) SHA1(f261a3f128fbedbf59a8b5480758fff4d7f76de1), ROM_BIOS(1))
152   ROM_SYSTEM_BIOS(1, "v0.9", "V0.9")
153   ROMX_LOAD( "mon_v0.9.bin", 0x0000, 0x0800, CRC(785eb1ad) SHA1(c316b8ac32ab6aa37746af37b9f81a23367fedd8), ROM_BIOS(2))
229   ROM_LOAD( "mon_v0.9.bin", 0x0000, 0x0800, CRC(785eb1ad) SHA1(c316b8ac32ab6aa37746af37b9f81a23367fedd8))
154230ROM_END
155231
232ROM_START( ravens2 )
233   ROM_REGION( 0x8000, "maincpu", 0 )
234   ROM_LOAD( "mon_v2.0.bin", 0x0000, 0x0800, CRC(bcd47c58) SHA1(f261a3f128fbedbf59a8b5480758fff4d7f76de1))
235ROM_END
236
156237/* Driver */
157238
158/*    YEAR  NAME     PARENT   COMPAT   MACHINE    INPUT     INIT     COMPANY    FULLNAME       FLAGS */
159COMP( 1979, ravens,  0,       0,       ravens,  ravens, driver_device, 0,     "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
239/*    YEAR  NAME     PARENT   COMPAT   MACHINE  INPUT   CLASS        INIT     COMPANY    FULLNAME       FLAGS */
240COMP( 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 )
241COMP( 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 )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team