1
1
/***************************************************************************
2
2
3
- Homelab driver by Miodrag Milanovic
3
+ Homelab driver by Miodrag Milanovic
4
4
5
- 31/08/2008 Preliminary driver.
5
+ 31/08/2008 Preliminary driver.
6
6
7
7
8
- ToDO:
9
- - Devices, speaker
10
- - Keyboard and cursor on homelab3 & up
11
- - Cursor on homelab2
12
- - Can't press same key twice in a row on homelab2
13
- - Brailab4 doesn't seem to do anything
8
+ ToDO:
9
+ - Devices, speaker
10
+ - Keyboard and cursor on homelab3 & up
11
+ - Cursor on homelab2
12
+ - Can't press same key twice in a row on homelab2
13
+ - Brailab4 doesn't seem to do anything
14
+
15
+ Note: the speed of the homelab3 is largely controlled by the time taken
16
+ to draw a screen.
14
17
15
18
****************************************************************************/
16
19
17
20
#include "emu.h"
18
21
#include "cpu/z80/z80.h"
22
+ #include "sound/speaker.h"
23
+
19
24
20
25
//#define MACHINE_RESET_MEMBER(name) void name::machine_reset()
21
26
//#define MACHINE_START_MEMBER(name) void name::machine_start()
@@ -26,21 +31,21 @@ class homelab_state : public driver_device
26
31
public :
27
32
homelab_state (const machine_config & mconfig , device_type type , const char * tag )
28
33
: driver_device (mconfig , type , tag ),
29
- m_maincpu (* this , "maincpu" )//,
30
- //m_speaker(*this, SPEAKER_TAG)
31
- ,
32
- m_p_videoram (* this , "p_videoram" ){ }
34
+ m_maincpu (* this , "maincpu" ),
35
+ m_speaker (* this , SPEAKER_TAG ),
36
+ m_p_videoram (* this , "videoram" ){ }
33
37
34
- required_device < cpu_device > m_maincpu ;
35
- //required_device<device_t> m_speaker;
36
- DECLARE_READ8_MEMBER ( e802_r );
37
38
DECLARE_READ8_MEMBER ( key_r );
38
39
DECLARE_WRITE8_MEMBER ( key_w );
39
- required_shared_ptr < const UINT8 > m_p_videoram ;
40
+ DECLARE_WRITE8_MEMBER ( io_w ) ;
40
41
const UINT8 * m_p_chargen ;
41
42
//virtual void machine_reset();
42
43
//virtual void machine_start();
43
44
virtual void video_start ();
45
+ required_device < cpu_device > m_maincpu ;
46
+ optional_device < device_t > m_speaker ;
47
+ required_shared_ptr < const UINT8 > m_p_videoram ;
48
+ private :
44
49
};
45
50
46
51
@@ -66,14 +71,13 @@ READ8_MEMBER( homelab_state::key_r ) // offset 27F-2FE
66
71
return data ;
67
72
}
68
73
69
- READ8_MEMBER ( homelab_state ::e802_r ) // unknown
74
+ WRITE8_MEMBER ( homelab_state ::io_w )
70
75
{
71
- return machine (). rand () & 1 ;
76
+ speaker_level_w ( m_speaker , BIT ( offset , 7 ) ) ;
72
77
}
73
78
74
79
75
80
76
-
77
81
/* Address maps */
78
82
static ADDRESS_MAP_START (homelab2_mem , AS_PROGRAM , 8 , homelab_state )
79
83
AM_RANGE ( 0x0000 , 0x07ff ) AM_ROM // ROM 1
@@ -85,18 +89,41 @@ static ADDRESS_MAP_START(homelab2_mem, AS_PROGRAM, 8, homelab_state)
85
89
AM_RANGE ( 0x3000 , 0x37ff ) AM_ROM // Empty
86
90
AM_RANGE ( 0x3800 , 0x3fff ) AM_READWRITE (key_r ,key_w )
87
91
AM_RANGE ( 0x4000 , 0x7fff ) AM_RAM
88
- AM_RANGE ( 0xc000 , 0xc3ff ) AM_RAM AM_SHARE ("p_videoram ") AM_MIRROR (0x3c00 ) // Video RAM 1K
92
+ AM_RANGE ( 0xc000 , 0xc3ff ) AM_RAM AM_SHARE ("videoram ") AM_MIRROR (0x3c00 ) // Video RAM 1K
89
93
ADDRESS_MAP_END
90
94
91
95
static ADDRESS_MAP_START (homelab3_mem , AS_PROGRAM , 8 , homelab_state )
92
96
AM_RANGE ( 0x0000 , 0x3fff ) AM_ROM
93
97
AM_RANGE ( 0x4000 , 0x7fff ) AM_RAM
94
- AM_RANGE ( 0xe802 , 0xe802 ) AM_READ (e802_r )
98
+ AM_RANGE ( 0xe800 , 0xe800 ) AM_READ_PORT ("X00 ")
99
+ AM_RANGE ( 0xe801 , 0xe801 ) AM_READ_PORT ("X01 ")
100
+ AM_RANGE ( 0xe802 , 0xe802 ) AM_READ_PORT ("X02 ")
101
+ AM_RANGE ( 0xe803 , 0xe803 ) AM_READ_PORT ("X03 ")
102
+ AM_RANGE ( 0xe804 , 0xe804 ) AM_READ_PORT ("X04 ")
103
+ AM_RANGE ( 0xe805 , 0xe805 ) AM_READ_PORT ("X05 ")
104
+ AM_RANGE ( 0xe806 , 0xe806 ) AM_READ_PORT ("X06 ")
105
+ AM_RANGE ( 0xe807 , 0xe807 ) AM_READ_PORT ("X07 ")
106
+ AM_RANGE ( 0xe808 , 0xe808 ) AM_READ_PORT ("X08 ")
107
+ AM_RANGE ( 0xe809 , 0xe809 ) AM_READ_PORT ("X09 ")
108
+ AM_RANGE ( 0xe80a , 0xe80a ) AM_READ_PORT ("X0A ")
109
+ AM_RANGE ( 0xe80b , 0xe80b ) AM_READ_PORT ("X0B ")
110
+ AM_RANGE ( 0xe80c , 0xe80c ) AM_READ_PORT ("X0C ")
111
+ AM_RANGE ( 0xe80d , 0xe80d ) AM_READ_PORT ("X0D ")
112
+ AM_RANGE ( 0xe80e , 0xe80e ) AM_READ_PORT ("X0E ")
113
+ AM_RANGE ( 0xe80f , 0xe80f ) AM_READ_PORT ("X0F ")
114
+ AM_RANGE ( 0xe810 , 0xe810 ) AM_READ_PORT ("X10 ")
115
+ AM_RANGE ( 0xe811 , 0xe811 ) AM_READ_PORT ("X11 ")
116
+ AM_RANGE ( 0xe812 , 0xe812 ) AM_READ_PORT ("X12 ")
117
+ AM_RANGE ( 0xe813 , 0xe813 ) AM_READ_PORT ("X13 ")
95
118
AM_RANGE ( 0xe880 , 0xe880 ) AM_READNOP // reads this then throws result away
96
- //AM_RANGE( 0xe000, 0xefff ) AM_RAM // Keyboard
97
- AM_RANGE ( 0xf000 , 0xf7ff ) AM_RAM AM_SHARE ("p_videoram ") AM_MIRROR (0x0800 ) // Video RAM 2K
119
+ AM_RANGE ( 0xf000 , 0xf7ff ) AM_RAM AM_SHARE ("videoram ") AM_MIRROR (0x0800 ) // Video RAM 2K
98
120
ADDRESS_MAP_END
99
121
122
+ static ADDRESS_MAP_START (homelab3_io , AS_IO , 8 , homelab_state )
123
+ AM_RANGE ( 0x0000 , 0xffff ) AM_WRITE (io_w )
124
+ ADDRESS_MAP_END
125
+
126
+
100
127
/* Input ports */
101
128
static INPUT_PORTS_START ( homelab )
102
129
PORT_START ("LINE0 ")
@@ -175,6 +202,147 @@ static INPUT_PORTS_START( homelab )
175
202
PORT_BIT (0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_RALT ) PORT_CODE (KEYCODE_LALT ) PORT_CHAR ('_' )
176
203
INPUT_PORTS_END
177
204
205
+ static INPUT_PORTS_START ( homelab3 )
206
+ PORT_START ("X00 ")
207
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Down ") PORT_CODE (KEYCODE_DOWN )
208
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Up ") PORT_CODE (KEYCODE_UP )
209
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Right ") PORT_CODE (KEYCODE_RIGHT )
210
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Left ") PORT_CODE (KEYCODE_LEFT )
211
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
212
+
213
+ PORT_START ("X01 ")
214
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Space ") PORT_CODE (KEYCODE_SPACE ) PORT_CHAR (' ' )
215
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Enter ") PORT_CODE (KEYCODE_ENTER ) PORT_CHAR (13 )
216
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // A
217
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // D
218
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
219
+
220
+ PORT_START ("X02 ")
221
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_CUSTOM ) PORT_VBLANK ("screen ")
222
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Left Shift ") PORT_CODE (KEYCODE_LSHIFT )
223
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Right Shift ") PORT_CODE (KEYCODE_RSHIFT )
224
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Shift Lock ") PORT_CODE (KEYCODE_CAPSLOCK )
225
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
226
+
227
+ PORT_START ("X03 ")
228
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // nothing
229
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_NAME ("Graphic ") PORT_CODE (KEYCODE_RCONTROL )
230
+ PORT_BIT (0xfc , IP_ACTIVE_LOW , IPT_UNUSED )
231
+
232
+ PORT_START ("X04 ")
233
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_0 ) PORT_CHAR ('0' )
234
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_1 ) PORT_CHAR ('1' ) PORT_CHAR ('!' )
235
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_2 ) PORT_CHAR ('2' ) PORT_CHAR ('"' )
236
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_3 ) PORT_CHAR ('3' ) PORT_CHAR ('#' )
237
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
238
+
239
+ PORT_START ("X05 ")
240
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_4 ) PORT_CHAR ('4' ) PORT_CHAR ('$' )
241
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_5 ) PORT_CHAR ('5' ) PORT_CHAR ('%' )
242
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_6 ) PORT_CHAR ('6' ) PORT_CHAR ('&' )
243
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_7 ) PORT_CHAR ('7' ) PORT_CHAR ('\'' )
244
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
245
+
246
+ PORT_START ("X06 ")
247
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_8 ) PORT_CHAR ('8' ) PORT_CHAR ('(' )
248
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_9 ) PORT_CHAR ('9' ) PORT_CHAR (')' )
249
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_EQUALS ) PORT_CHAR (':' ) PORT_CHAR ('*' )
250
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_COLON ) PORT_CHAR (';' ) PORT_CHAR ('+' )
251
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
252
+
253
+ PORT_START ("X07 ")
254
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_COMMA ) PORT_CHAR (',' ) PORT_CHAR ('<' )
255
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_MINUS ) PORT_CHAR ('=' ) PORT_CHAR ('-' )
256
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_STOP ) PORT_CHAR ('.' ) PORT_CHAR ('>' )
257
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_SLASH ) PORT_CHAR ('?' ) PORT_CHAR ('/' )
258
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
259
+
260
+ PORT_START ("X08 ")
261
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_TILDE ) PORT_CHAR ('@' )
262
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_A ) PORT_CHAR ('A' )
263
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_F1 )
264
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_B ) PORT_CHAR ('B' )
265
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
266
+
267
+ PORT_START ("X09 ")
268
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_C ) PORT_CHAR ('C' )
269
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_D ) PORT_CHAR ('D' )
270
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_E ) PORT_CHAR ('E' )
271
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_F2 )
272
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
273
+
274
+ PORT_START ("X0A ")
275
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_F ) PORT_CHAR ('F' )
276
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_G ) PORT_CHAR ('G' )
277
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_H ) PORT_CHAR ('H' )
278
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_I ) PORT_CHAR ('I' )
279
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
280
+
281
+ PORT_START ("X0B ")
282
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_J ) PORT_CHAR ('J' )
283
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_K ) PORT_CHAR ('K' )
284
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_L ) PORT_CHAR ('L' )
285
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_M ) PORT_CHAR ('M' )
286
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
287
+
288
+ PORT_START ("X0C ")
289
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_N ) PORT_CHAR ('N' )
290
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_O ) PORT_CHAR ('O' )
291
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_F3 )
292
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_F4 )
293
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
294
+
295
+ PORT_START ("X0D ")
296
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_P ) PORT_CHAR ('P' )
297
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_Q ) PORT_CHAR ('Q' )
298
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_R ) PORT_CHAR ('R' )
299
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_S ) PORT_CHAR ('S' )
300
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
301
+
302
+ PORT_START ("X0E ")
303
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_T ) PORT_CHAR ('T' )
304
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_U ) PORT_CHAR ('U' )
305
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_F5 )
306
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_V ) PORT_CHAR ('V' )
307
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
308
+
309
+ PORT_START ("X0F ")
310
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_W ) PORT_CHAR ('W' )
311
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_X ) PORT_CHAR ('X' )
312
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_Y ) PORT_CHAR ('Y' )
313
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) PORT_CODE (KEYCODE_Z ) PORT_CHAR ('Z' )
314
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
315
+
316
+ PORT_START ("X10 ")
317
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // a`
318
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // a
319
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // b
320
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // c
321
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
322
+
323
+ PORT_START ("X11 ")
324
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // d
325
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // e
326
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // f
327
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // g
328
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
329
+
330
+ PORT_START ("X12 ")
331
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // h
332
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // i
333
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // j
334
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // k
335
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
336
+
337
+ PORT_START ("X13 ")
338
+ PORT_BIT (0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // l
339
+ PORT_BIT (0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // m
340
+ PORT_BIT (0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // n
341
+ PORT_BIT (0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD ) // o
342
+ PORT_BIT (0xf0 , IP_ACTIVE_LOW , IPT_UNUSED )
343
+ INPUT_PORTS_END
344
+
345
+
178
346
VIDEO_START_MEMBER ( homelab_state )
179
347
{
180
348
m_p_chargen = memregion ("chargen" )-> base ();
@@ -273,10 +441,11 @@ static MACHINE_CONFIG_START( homelab, homelab_state )
273
441
/* basic machine hardware */
274
442
MCFG_CPU_ADD ("maincpu ", Z80 , 3000000 )
275
443
MCFG_CPU_PROGRAM_MAP (homelab2_mem )
276
- MCFG_SCREEN_ADD ("screen ", RASTER )
277
- MCFG_SCREEN_REFRESH_RATE (50 )
278
444
279
445
/* video hardware */
446
+ MCFG_SCREEN_ADD ("screen ", RASTER )
447
+ MCFG_SCREEN_REFRESH_RATE (50 )
448
+ MCFG_SCREEN_VBLANK_TIME (ATTOSECONDS_IN_USEC (2500 ))
280
449
MCFG_SCREEN_SIZE (40 * 8 , 25 * 8 )
281
450
MCFG_SCREEN_VISIBLE_AREA (0 , 40 * 8 - 1 , 0 , 25 * 8 - 1 )
282
451
MCFG_SCREEN_UPDATE_STATIC ( homelab )
@@ -289,11 +458,17 @@ static MACHINE_CONFIG_DERIVED( homelab3, homelab )
289
458
/* basic machine hardware */
290
459
MCFG_CPU_MODIFY ("maincpu ")
291
460
MCFG_CPU_PROGRAM_MAP (homelab3_mem )
461
+ MCFG_CPU_IO_MAP (homelab3_io )
292
462
293
463
MCFG_SCREEN_MODIFY ("screen ")
294
464
MCFG_SCREEN_SIZE (64 * 8 , 32 * 8 )
295
465
MCFG_SCREEN_VISIBLE_AREA (0 , 64 * 8 - 1 , 0 , 32 * 8 - 1 )
296
466
MCFG_SCREEN_UPDATE_STATIC ( homelab3 )
467
+
468
+ /* sound hardware */
469
+ MCFG_SPEAKER_STANDARD_MONO ("mono ")
470
+ MCFG_SOUND_ADD (SPEAKER_TAG , SPEAKER_SOUND , 0 )
471
+ MCFG_SOUND_ROUTE (ALL_OUTPUTS , "mono ", 0.50 )
297
472
MACHINE_CONFIG_END
298
473
299
474
/* ROM definition */
@@ -341,8 +516,8 @@ ROM_END
341
516
342
517
/* Driver */
343
518
344
- /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
345
- COMP ( 1982 , homelab2 , 0 , 0 , homelab , homelab , homelab , "Jozsef and Endre Lukacs ", "Homelab 2 / Aircomp 16 ", GAME_NOT_WORKING | GAME_NO_SOUND )
346
- COMP ( 1983 , homelab3 , homelab2 ,0 , homelab3 , homelab , homelab , "Jozsef and Endre Lukacs ", "Homelab 3 ", GAME_NOT_WORKING | GAME_NO_SOUND )
347
- COMP ( 1984 , homelab4 , homelab2 ,0 , homelab3 , homelab , homelab , "Jozsef and Endre Lukacs ", "Homelab 4 ", GAME_NOT_WORKING | GAME_NO_SOUND )
348
- COMP ( 1984 , brailab4 , homelab2 ,0 , homelab3 , homelab , homelab , "Jozsef and Endre Lukacs ", "Brailab 4 ", GAME_NOT_WORKING | GAME_NO_SOUND )
519
+ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
520
+ COMP ( 1982 , homelab2 , 0 , 0 , homelab , homelab , homelab , "Jozsef and Endre Lukacs ", "Homelab 2 / Aircomp 16 ", GAME_NOT_WORKING | GAME_NO_SOUND )
521
+ COMP ( 1983 , homelab3 , homelab2 , 0 , homelab3 , homelab3 , homelab , "Jozsef and Endre Lukacs ", "Homelab 3 ", GAME_NOT_WORKING | GAME_NO_SOUND )
522
+ COMP ( 1984 , homelab4 , homelab2 , 0 , homelab3 , homelab3 , homelab , "Jozsef and Endre Lukacs ", "Homelab 4 ", GAME_NOT_WORKING | GAME_NO_SOUND )
523
+ COMP ( 1984 , brailab4 , homelab2 , 0 , homelab3 , homelab3 , homelab , "Jozsef and Endre Lukacs ", "Brailab 4 ", GAME_NOT_WORKING | GAME_NO_SOUND )
0 commit comments