Previous 199869 Revisions Next

r22540 Thursday 25th April, 2013 at 11:36:15 UTC by Robbbert
(MESS) Ravens WIP - mostly working
[src/mess/drivers]ravens.c
[src/mess/layout]ravens.lay

trunk/src/mess/layout/ravens.lay
r22539r22540
22<mamelayout version="2">
33   <element name="digit" defstate="0">
44      <led7seg>
5         <color red="0.75" green="0.0" blue="0.0" />
5         <color red="1.0" green="0.0" blue="0.0" />
66      </led7seg>
77   </element>
88   <element name="background">
r22539r22540
1515   <view name="Default Layout">
1616      <!-- Black background -->
1717      <bezel element="background">
18         <bounds left="00" top="00" right="400" bottom="100" />
18         <bounds left="00" top="00" right="430" bottom="100" />
1919      </bezel>
2020
21      <!-- This is actually 8 rounds LEDs, but a digit will do for now -->
22      <bezel name="digit6" element="digit">
23         <bounds x="370" y="10" width="50" height="80" />
24      </bezel>
25
26      <!-- 6-digit display -->
2127      <bezel name="digit0" element="digit">
22         <bounds x="340" y="10" width="50" height="80" />
28         <bounds x="310" y="10" width="50" height="80" />
2329      </bezel>
2430      <bezel name="digit1" element="digit">
25         <bounds x="280" y="10" width="50" height="80" />
31         <bounds x="250" y="10" width="50" height="80" />
2632      </bezel>
2733      <bezel name="digit2" element="digit">
2834         <bounds x="190" y="10" width="50" height="80" />
trunk/src/mess/drivers/ravens.c
r22539r22540
1010        2013-04-23 Skeleton driver.
1111
1212
13No instructions, no schematics - it's all guesswork.
14
15
1316Version 0.9
1417-----------
1518Hardware:
r22539r22540
2326
2427There is a cassette interface..
2528
29The buttons are labelled CMD, RUN, GOTO, RST, F, MON, PC, NXT but at
30this time not all buttons are identified.
31
32What is known:
33- Press NXT to read memory. Press NXT again to read the next address.
34- Press PC and it says PCxxxx
35- Press CMD, it says CND=, you can choose one of these:
36-- A displays value of a register. Press A again to see more registers.
37-- B sets a breakpoint
38-- C clears a breakpoint
39-- D dumps blocks to tape
40-- E examine tape file
41-- F fetch (load) from tape
42
2643ToDo:
27- Everything
44- Fix display of 8 round leds
45- Cassette
2846
2947Version V2.0
3048------------
r22539r22540
3250The pushbuttons and LEDs appear to have been done away with.
3351
3452Commands (must be in uppercase):
35A    ?
36B    ?
37C    ?
53A    Examine memory; press C to alter memory
54B    Set breakpoint?
55C    View breakpoint?
3856D    Dump to screen
3957E    Execute
4058I    ?
r22539r22540
4260R    ?
4361V    ?
4462
63ToDo:
64- Cassette
65
4566****************************************************************************/
4667
4768#include "emu.h"
4869#include "cpu/s2650/s2650.h"
49//#include "sound/speaker.h"
5070#include "machine/terminal.h"
5171#include "ravens.lh"
5272
r22539r22540
5676public:
5777   ravens_state(const machine_config &mconfig, device_type type, const char *tag)
5878      : driver_device(mconfig, type, tag),
59   m_maincpu(*this, "maincpu")
60//   , m_speaker(*this, "speaker")
61   , m_terminal(*this, TERMINAL_TAG)
79      m_maincpu(*this, "maincpu"),
80      m_terminal(*this, TERMINAL_TAG)
6281   { }
6382
6483   DECLARE_READ8_MEMBER(port07_r);
6584   DECLARE_READ8_MEMBER(port17_r);
85   DECLARE_WRITE8_MEMBER(port1b_w);
86   DECLARE_WRITE8_MEMBER(port1c_w);
87   DECLARE_WRITE8_MEMBER(display_w);
6688   DECLARE_WRITE8_MEMBER(leds_w);
6789   DECLARE_WRITE8_MEMBER(kbd_put);
68//   UINT8 m_last_key;
90   DECLARE_MACHINE_RESET(ravens2);
91   UINT8 m_term_char;
6992   UINT8 m_term_data;
70//   bool m_speaker_state;
7193   required_device<cpu_device> m_maincpu;
72//   required_device<speaker_sound_device> m_speaker;
7394   optional_device<generic_terminal_device> m_terminal;
7495};
7596
76WRITE8_MEMBER( ravens_state::leds_w )
97WRITE8_MEMBER( ravens_state::display_w )
7798{
7899   output_set_digit_value(offset, data);
79100}
80101
81//WRITE8_MEMBER( ravens_state::port06_w )
82//{
83//   m_speaker_state ^=1;
84//   speaker_level_w(m_speaker, m_speaker_state);
85//}
102WRITE8_MEMBER( ravens_state::leds_w )
103{
104   output_set_digit_value(6, data);
105}
86106
87107READ8_MEMBER( ravens_state::port07_r )
88108{
r22539r22540
93113
94114READ8_MEMBER( ravens_state::port17_r )
95115{
96   UINT8 keyin, i, data = 0x80;
116   UINT8 keyin, i;
97117
98118   keyin = ioport("X0")->read();
99119   if (keyin != 0xff)
100120      for (i = 0; i < 8; i++)
101121         if BIT(~keyin, i)
102            return i;
122            return i | 0x80;
103123
104124   keyin = ioport("X1")->read();
105125   if (keyin != 0xff)
106126      for (i = 0; i < 8; i++)
107127         if BIT(~keyin, i)
108            return i | 8;
128            return i | 0x88;
109129
110130   keyin = ioport("X2")->read();
131   if (!BIT(keyin, 0))
132      machine().firstcpu->reset();
111133   if (keyin != 0xff)
112134      for (i = 0; i < 8; i++)
113135         if BIT(~keyin, i)
114            return i<<4;
136            return (i<<4) | 0x80;
115137
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;
138   return 0;
139}
121140
122//   if (data == m_last_key)
123//      data &= 0x7f;
124//   else
125//      m_last_key = data;
141WRITE8_MEMBER( ravens_state::port1b_w )
142{
143   if (BIT(data, 7))
144      return;
145   else
146   if ((data == 0x08 && m_term_char == 0x20))
147      data = 0x0c; // FormFeed
148   else
149   if ((data == 0x0a && m_term_char == 0x20))
150      data = 0x0a; // LineFeed
151   else
152   if ((data == 0x01 && m_term_char == 0xc2))
153      data = 0x0d; // CarriageReturn
154   else
155      data = m_term_char;
126156
127   return data;
157   m_terminal->write(space, 0, data);
128158}
129159
160WRITE8_MEMBER( ravens_state::port1c_w )
161{
162   m_term_char = data;
163}
164
165MACHINE_RESET_MEMBER( ravens_state, ravens2 )
166{
167   m_term_data = 0x80;
168   output_set_digit_value(6, 0);
169}
170
171
130172static ADDRESS_MAP_START( ravens_mem, AS_PROGRAM, 8, ravens_state )
131173   ADDRESS_MAP_UNMAP_HIGH
132174   AM_RANGE( 0x0000, 0x07ff) AM_ROM
r22539r22540
135177
136178static ADDRESS_MAP_START( ravens_io, AS_IO, 8, ravens_state )
137179   ADDRESS_MAP_UNMAP_HIGH
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)
180   AM_RANGE(0x09, 0x09) AM_WRITE(leds_w) // LED output port
181   AM_RANGE(0x10, 0x15) AM_WRITE(display_w) // 6-led display
140182   AM_RANGE(0x17, 0x17) AM_READ(port17_r) // pushbuttons
141183   //AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
142184   AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
r22539r22540
144186
145187static ADDRESS_MAP_START( ravens2_io, AS_IO, 8, ravens_state )
146188   ADDRESS_MAP_UNMAP_HIGH
147   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)
189   AM_RANGE(0x07, 0x07) AM_READ(port07_r)
190   AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w)
191   AM_RANGE(0x1c, 0x1c) AM_WRITE(port1c_w)
150192   //AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(ravens_cass_in,ravens_cass_out)
151193   AM_RANGE(0x102, 0x103) AM_NOP // stops error log filling up while using debug
152194ADDRESS_MAP_END
r22539r22540
174216   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
175217
176218   PORT_START("X2")
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')
219   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RST") PORT_CODE(KEYCODE_F3)
220   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NXT") PORT_CODE(KEYCODE_UP) PORT_CHAR('^')
221   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RUN") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
222   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PC")  PORT_CODE(KEYCODE_P) PORT_CHAR('P')
223   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("???") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
224   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("???") PORT_CODE(KEYCODE_U) PORT_CHAR('U')
225   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CMD") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
226   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("???") PORT_CODE(KEYCODE_O) PORT_CHAR('O')
184227INPUT_PORTS_END
185228
186229WRITE8_MEMBER( ravens_state::kbd_put )
187230{
231   if (data > 0x60) data -= 0x20; // fold to uppercase
188232   m_term_data = data;
189233}
190234
r22539r22540
201245
202246   /* video hardware */
203247   MCFG_DEFAULT_LAYOUT(layout_ravens)
204
205   /* sound hardware */
206//   MCFG_SPEAKER_STANDARD_MONO("mono")
207//   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
208//   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
209248MACHINE_CONFIG_END
210249
211250static MACHINE_CONFIG_START( ravens2, ravens_state )
r22539r22540
213252   MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown
214253   MCFG_CPU_PROGRAM_MAP(ravens_mem)
215254   MCFG_CPU_IO_MAP(ravens2_io)
255   MCFG_MACHINE_RESET_OVERRIDE(ravens_state, ravens2)
216256
217257   /* video hardware */
218258   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)
224259MACHINE_CONFIG_END
225260
226261/* ROM definition */
r22539r22540
237272/* Driver */
238273
239274/*    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 )
275COMP( 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 )
276COMP( 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