Previous 15994 Revisions Next

r9804 Tuesday 21st December, 2010 at 15:10:13 UTC by Curt Coder
[BOB85] Fixed information and added cassette.
[src/mess/drivers]bob85.c

src/mess/drivers/bob85.c
r9803r9804
99
1010#include "emu.h"
1111#include "cpu/i8085/i8085.h"
12#include "devices/cassette.h"
1213#include "bob85.lh"
1314
1415
r9803r9804
2324};
2425
2526
26static ADDRESS_MAP_START(bob85_mem, ADDRESS_SPACE_PROGRAM, 8)
27   ADDRESS_MAP_UNMAP_HIGH
28   AM_RANGE( 0x0000, 0x02ff ) AM_ROM
29   AM_RANGE( 0x0300, 0x1fff ) AM_RAM
30ADDRESS_MAP_END
3127
32
3328static READ8_HANDLER(bob85_keyboard_r)
3429{
3530   bob85_state *state = space->machine->driver_data<bob85_state>();
r9803r9804
10095   output_set_digit_value(offset,BITSWAP8( data,3,2,1,0,7,6,5,4 ));
10196}
10297
103static ADDRESS_MAP_START( bob85_io , ADDRESS_SPACE_IO, 8)
98static ADDRESS_MAP_START( bob85_mem, ADDRESS_SPACE_PROGRAM, 8 )
10499   ADDRESS_MAP_UNMAP_HIGH
105   AM_RANGE ( 0x0A, 0x0A ) AM_READ(bob85_keyboard_r)
106   AM_RANGE ( 0x0A, 0x0F ) AM_WRITE(bob85_7seg_w)
100   AM_RANGE(0x0000, 0x02ff) AM_ROM
101   AM_RANGE(0x0600, 0x09ff) AM_RAM
107102ADDRESS_MAP_END
108103
104static ADDRESS_MAP_START( bob85_io, ADDRESS_SPACE_IO, 8 )
105   ADDRESS_MAP_UNMAP_HIGH
106   AM_RANGE(0x0a, 0x0a) AM_READ(bob85_keyboard_r)
107   AM_RANGE(0x0a, 0x0f) AM_WRITE(bob85_7seg_w)
108ADDRESS_MAP_END
109
109110/* Input ports */
110111static INPUT_PORTS_START( bob85 )
111112   PORT_START("LINE0")
112      PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
113      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
114      PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
115      PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
116      PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
117      PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
118      PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
119      PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
113   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
114   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
115   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
116   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
117   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
118   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
119   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
120   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
121
120122   PORT_START("LINE1")
121      PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
122      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
123      PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
124      PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
125      PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
126      PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
127      PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
128      PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
123   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
124   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
125   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
126   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
127   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
128   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
129   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
130   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
131
129132   PORT_START("LINE2")
130      PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("GO") PORT_CODE(KEYCODE_F1)
131      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SMEM") PORT_CODE(KEYCODE_F2)
132      PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("REC") PORT_CODE(KEYCODE_F3)
133      PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("VEK1") PORT_CODE(KEYCODE_F4)
134      PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("VEK2") PORT_CODE(KEYCODE_F5)
135      PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("NEXT") PORT_CODE(KEYCODE_F6)
136      PORT_BIT(0xC0, IP_ACTIVE_HIGH, IPT_UNUSED)
133   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("GO") PORT_CODE(KEYCODE_F1)
134   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SMEM") PORT_CODE(KEYCODE_F2)
135   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("REC") PORT_CODE(KEYCODE_F3)
136   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("VEK1") PORT_CODE(KEYCODE_F4)
137   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("VEK2") PORT_CODE(KEYCODE_F5)
138   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("NEXT") PORT_CODE(KEYCODE_F6)
139   PORT_BIT(0xC0, IP_ACTIVE_HIGH, IPT_UNUSED)
137140INPUT_PORTS_END
138141
139
140142static MACHINE_RESET(bob85)
141143{
142144}
143145
146static const cassette_config bob85_cassette_config =
147{
148   cassette_default_formats,
149   NULL,
150   (cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED),
151   NULL
152};
153
154static WRITE_LINE_DEVICE_HANDLER( sod_w )
155{
156   cassette_output(device, state ? +1.0 : -1.0);
157}
158
159static READ_LINE_DEVICE_HANDLER( sid_r )
160{
161   return cassette_input(device) > 0.0;
162}
163
164static I8085_CONFIG( cpu_config )
165{
166   DEVCB_NULL,            /* STATUS changed callback */
167   DEVCB_NULL,            /* INTE changed callback */
168   DEVCB_DEVICE_LINE("cassette", sid_r),   /* SID changed callback (I8085A only) */
169   DEVCB_DEVICE_LINE("cassette", sod_w)   /* SOD changed callback (I8085A only) */
170};
171
144172static MACHINE_CONFIG_START( bob85, bob85_state )
145173    /* basic machine hardware */
146    MDRV_CPU_ADD("maincpu",I8085A, 2000000)
174    MDRV_CPU_ADD("maincpu", I8085A, XTAL_5MHz)
147175    MDRV_CPU_PROGRAM_MAP(bob85_mem)
148176    MDRV_CPU_IO_MAP(bob85_io)
177   MDRV_CPU_CONFIG(cpu_config)
149178
150179    MDRV_MACHINE_RESET(bob85)
151180
152181    /* video hardware */
153182   MDRV_DEFAULT_LAYOUT(layout_bob85)
183
184   // devices
185   MDRV_CASSETTE_ADD("cassette", bob85_cassette_config)
154186MACHINE_CONFIG_END
155187
156188/* ROM definition */
157189ROM_START( bob85 )
158   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
159   ROM_LOAD( "bob85.rom", 0x0000, 0x0300, CRC(adde33a8) SHA1(00f26dd0c52005e7705e6cc9cb11a20e572682c6))
190   ROM_REGION( 0x600, "maincpu", ROMREGION_ERASEFF )
191   ROM_LOAD( "bob85.rom", 0x0000, 0x0300, BAD_DUMP CRC(adde33a8) SHA1(00f26dd0c52005e7705e6cc9cb11a20e572682c6) ) // should be 6 separate 74S287's (256x4)
160192ROM_END
161193
162194/* Driver */
163195
164196/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT COMPANY   FULLNAME       FLAGS */
165COMP( 19??, bob85,  0,       0,    bob85,   bob85,    0,      "<unknown>",   "BOB85",      GAME_NOT_WORKING | GAME_NO_SOUND)
197COMP( 1984, bob85,  0,       0,    bob85,   bob85,    0,      "Josef Kratochvil",   "BOB-85",      GAME_NOT_WORKING | GAME_NO_SOUND)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team