~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to mess/src/mess/drivers/studio2.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Jordi Mallach, Emmanuel Kasper
  • Date: 2011-12-19 22:56:27 UTC
  • mfrom: (0.1.2)
  • Revision ID: package-import@ubuntu.com-20111219225627-ub5oga1oys4ogqzm
Tags: 0.144-1
[ Jordi Mallach ]
* Fix syntax errors in DEP5 copyright file (lintian).
* Use a versioned copyright Format specification field.
* Update Vcs-* URLs.
* Move transitional packages to the new metapackages section, and make
  them priority extra.
* Remove references to GNU/Linux and MESS sources from copyright.
* Add build variables for s390x.
* Use .xz tarballs as it cuts 4MB for the upstream sources.
* Add nplayers.ini as a patch. Update copyright file to add CC-BY-SA-3.0.

[ Emmanuel Kasper ]
* New upstream release. Closes: #651538.
* Add Free Desktop compliant png icons of various sizes taken from
  the hydroxygen iconset
* Mess is now built from a new source package, to avoid possible source
  incompatibilities between mame and the mess overlay.
* Mame-tools are not built from the mame source package anymore, but
  from the mess source package

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 
3
 
RCA Studio II
4
 
 
5
 
PCB Layout
6
 
----------
7
 
 
8
 
1809746-S1-E
9
 
 
10
 
|----------------------------------------------------------------------------------------------------------|
11
 
|                                  |----------------------------|                                          |
12
 
|                                  |----------------------------|                          CA555   7805    |
13
 
|      SPKR                                     CN1                                                        |
14
 
|                                                                                                          |
15
 
|                                                                                           |-----------|  |
16
 
|                                                                                           | Output    |  |
17
 
|   ROM.4  ROM.3  ROM.2  ROM.1  CDP1822  CDP1822  CDP1822  CDP1822                          |TV Module  |  |
18
 
|                                                                                           |           |  |
19
 
|                                                                 CDP1802  TA10171V1        |           |  |
20
 
|                                                                                           |           |  |
21
 
|                                                                                           |           |  |
22
 
|                                                                                           |           |  |
23
 
|                                                                                           |-----------|  |
24
 
|                                                                                                          |
25
 
|                       CD4042  CD4001  CD4515                                                             |
26
 
|                                                                                                          |
27
 
|      CN2                                                                                       CN3       |
28
 
|----------------------------------------------------------------------------------------------------------|
29
 
 
30
 
Notes:
31
 
      All IC's shown.
32
 
 
33
 
      CDP1802 - RCA CDP1802CE Microprocessor
34
 
      TA10171V1 - RCA TA10171V1 NTSC Video Display Controller (VDC) (= RCA CDP1861)
35
 
      CDP1822 - RCA CDP1822NCE 256 x4 RAM (= Mitsubishi M58721P)
36
 
      ROM.x   - RCA CDP1831CE 512 x8 MASKROM. All ROMs are marked 'PROGRAM COPYRIGHT (C) RCA CORP. 1977'
37
 
      CD4001  - 4001 Quad 2-Input NOR Buffered B Series Gate (4000-series CMOS TTL logic IC)
38
 
      CD4042  - 4042 Quad Clocked D Latch (4000-series CMOS TTL logic IC)
39
 
      CD4515  - 4515 4-Bit Latched/4-to-16 Line Decoders (4000-series CMOS TTL logic IC)
40
 
      CA555   - CA555CG General Purpose Single Bipolar Timer (= NE555)
41
 
      7805    - Voltage regulator, input 10V-35V, output +5V
42
 
      SPKR    - Loudspeaker, 8 ohms, 0.3 W
43
 
      CN1     - ROM cartridge connector, 2x22 pins, 0.154" spacing
44
 
      CN2     - Player A keypad connector, 1x12 pins
45
 
      CN3     - Player B keypad connector, 1x12 pins
46
 
*/
47
 
 
48
 
/*
49
 
 
50
 
Toshiba Visicom Console (RCA Studio II clone)
51
 
Toshiba, 1978
52
 
 
53
 
PCB Layout                                            Many resistors/caps
54
 
----------                                7.5VDC    / transistors in this area
55
 
                                           \/   /---|-----/
56
 
|------------------------------------------||---|-------|   |-----|C|------|
57
 
|D235  POT       TC4011     CART_SLOT           |       |   | TV Modulator |
58
 
|HEATSINK                                       |       |   |              |
59
 
|           TC4515          TC4049 TC4011 74LS08|       |   | SW (VHF Ch1) |
60
 
|DIODES(x20)                       74LS74 74LS73|       |   |    (VHF Ch2) |
61
 
|-----------|                                 3.579545MHz   |              |
62
 
            |        CDP1802                    |  POT  |   |--------------|
63
 
            |TMM331                             |       |
64
 
            |               CDP1861   TC5012 TC5012     |
65
 
            |                     TC4021 TC4021 |       |
66
 
            |                          TC5012   \-----/ |
67
 
            |          2111      2111   2111   74LS74   |
68
 
            |TC4042    2111      2111   2111   TC4011   |
69
 
            |-------------------------------------------|
70
 
Notes: (all chips shown above)
71
 
      CDP1802 - RCA CDP1802 CPU (DIP40), clock 1.7897725MHz [3.579545/2]
72
 
      CDP1861 - RCA CDP1861 Video Controller (DIP24)
73
 
                VSync - 60.4533Hz   \ (measured on pin 6)
74
 
                HSync - 15.8387kHz  /
75
 
                Clock - 223.721562kHz [3.579545/16] (measured on pin 1)
76
 
      2111    - NEC D2111AL-4 256 bytes x4 SRAM (DIP18, x6). Total 1.5k
77
 
      C       - Composite Video Output to TV from TV Modulator
78
 
      TMM331  - Toshiba TMM331AP 2k x8 MASKROM (DIP24)
79
 
                Pinout (preliminary):
80
 
                           TMM331
81
 
                        |----\/----|
82
 
                     A7 |1       24| VCC
83
 
                     A8 |2       23| D0
84
 
                     A9 |3       22| D1
85
 
                    A10 |4       21| D2
86
 
                     A0 |5       20| D3
87
 
                     A1 |6       19| D4
88
 
                     A2 |7       18| D5
89
 
                     A3 |8       17| D6
90
 
                     A4 |9       16| D7
91
 
                     A5 |10      15| CE (LOW)
92
 
                     A6 |11      14| ? (unknown, leave NC?)
93
 
                    GND |12      13| OE (LOW)
94
 
                        |----------|
95
 
 
96
 
*/
97
 
 
98
 
/*
99
 
 
100
 
Mustang 9016 Telespiel Computer
101
 
 
102
 
PCB Layout
103
 
----------
104
 
 
105
 
|----------------------------------------------------------------------------------------------------------|
106
 
|7805                              |----------------------------|                          CD4069  MC14001 |
107
 
|                                  |----------------------------|                                          |
108
 
|                                               CN1                                                        |
109
 
|                                                                                                          |
110
 
|       ROM.IC13  ROM.IC14      CDP1822  CDP1822 CDP1822 CDP1822                            |-----------|  |
111
 
|                                                                                           | Output    |  |
112
 
|                                                                                           |TV Module? |  |
113
 
| ROM.IC12                                                        CDP1802  CDP1864          |           |  |
114
 
|                 CDP1822                                                                   |           |  |
115
 
|                          CD4019 CDP1858 CD4081 CD4069                                     |           |  |
116
 
|                                                                                           |           |  |
117
 
|                                                        CD4515                             |           |  |
118
 
|                                                                          1.750MHz         |-----------|  |
119
 
|                                                                                              4.3236MHz   |
120
 
|                                                                                                          |
121
 
|                                                                                                          |
122
 
|                                                                                                          |
123
 
|----------------------------------------------------------------------------------------------------------|
124
 
 
125
 
Notes:
126
 
      All IC's shown.
127
 
 
128
 
      CDP1802 - RCA CDP1802CE Microprocessor
129
 
      CDP1864 - RCA CDP1864CE PAL Video Display Controller (VDC)
130
 
      CDP1822 - RCA CDP1822NCE 256 x4 RAM (= Mitsubishi M58721P)
131
 
      ROM.ICx - RCA CDP1833 1k x8 MASKROM. All ROMs are marked 'PROGRAM COPYRIGHT (C) RCA CORP. 1978'
132
 
      CD4019  - 4019 Quad AND-OR Select Gate (4000-series CMOS TTL logic IC)
133
 
      CDP1858 - RCA CDP1858E Latch/Decoder - 4-bit
134
 
      CD4081  - 4081 Quad 2-Input AND Buffered B Series Gate (4000-series CMOS TTL logic IC)
135
 
      CD4069  - 4069 Hex Buffer, Inverter (4000-series CMOS TTL logic IC)
136
 
      CD4515  - 4515 4-Bit Latched/4-to-16 Line Decoders (4000-series CMOS TTL logic IC)
137
 
      7805    - Voltage regulator, input 10V-35V, output +5V
138
 
      CN1     - ROM cartridge connector, 2x22 pins, 0.154" spacing
139
 
*/
140
 
 
141
 
/*
142
 
 
143
 
    RCA Studio II games list
144
 
 
145
 
    Title                           Series                  Dumped
146
 
    ----------------------------------------------------------------------------
147
 
    Bowling                         built-in                yes
148
 
    Doodles                         built-in                yes
149
 
    Freeway                         built-in                yes
150
 
    Math                            built-in                yes
151
 
    Patterns                        built-in                yes
152
 
    Gunfighter/Moonship Battle      TV Arcade               yes
153
 
    Space War                       TV Arcade I             yes
154
 
    Fun with Numbers                TV Arcade II            no, but Guru has one
155
 
    Tennis/Squash                   TV Arcade III           yes
156
 
    Baseball                        TV Arcade IV            yes
157
 
    Speedway/Tag                    TV Arcade               yes
158
 
    Blackjack                       TV Casino I             yes
159
 
    Bingo                           TV Casino               no
160
 
    Math and Social Studies         TV School House I       no, but Guru has one
161
 
    Math Fun                        TV School House II      yes
162
 
    Biorhythm                       TV Mystic               yes
163
 
 
164
 
 
165
 
    MPT-02 games list
166
 
 
167
 
    ID      Title                   Series                  Dumped
168
 
    ----------------------------------------------------------------------------
169
 
    MG-201  Bingo                                           no
170
 
    MG-202  Concentration Match                             no, but Guru has one
171
 
    MG-203  Star Wars                                       no, but Guru has one
172
 
    MG-204  Math Fun                School House II         no, but Guru has one
173
 
    MG-205  Pinball                                         no, but Guru has one
174
 
    MG-206  Biorythm                                        no
175
 
    MG-207  Tennis/Squash                                   no
176
 
    MG-208  Fun with Numbers                                no
177
 
    MG-209  Computer Quiz           School House I          no
178
 
    MG-210  Baseball                                        no
179
 
    MG-211  Speedway/Tag                                    no
180
 
    MG-212  Spacewar Intercept                              no
181
 
    MG-213  Gun Fight/Moon Ship                             no
182
 
 
183
 
*/
184
 
 
185
 
/*
186
 
 
187
 
    TODO:
188
 
 
189
 
    - disable ic13/14 when cartridge plugged in
190
 
    - mpt02 clones' colors
191
 
    - visicom colors
192
 
    - NE555 discrete sound
193
 
 
194
 
*/
195
 
 
196
 
#include "includes/studio2.h"
197
 
 
198
 
/* Read/Write Handlers */
199
 
 
200
 
WRITE8_MEMBER( studio2_state::keylatch_w )
201
 
{
202
 
        m_keylatch = data & 0x0f;
203
 
}
204
 
 
205
 
READ8_MEMBER( studio2_state::dispon_r )
206
 
{
207
 
        m_vdc->disp_on_w(1);
208
 
        m_vdc->disp_on_w(0);
209
 
 
210
 
        return 0xff;
211
 
}
212
 
 
213
 
WRITE8_MEMBER( studio2_state::dispon_w )
214
 
{
215
 
        m_vdc->disp_on_w(1);
216
 
        m_vdc->disp_on_w(0);
217
 
}
218
 
 
219
 
/* Memory Maps */
220
 
 
221
 
static ADDRESS_MAP_START( studio2_map, AS_PROGRAM, 8, studio2_state )
222
 
        ADDRESS_MAP_UNMAP_HIGH
223
 
        AM_RANGE(0x0000, 0x07ff) AM_ROM
224
 
        AM_RANGE(0x0800, 0x09ff) AM_MIRROR(0xf400) AM_RAM
225
 
ADDRESS_MAP_END
226
 
 
227
 
static ADDRESS_MAP_START( studio2_io_map, AS_IO, 8, studio2_state )
228
 
        ADDRESS_MAP_UNMAP_HIGH
229
 
        AM_RANGE(0x01, 0x01) AM_READ(dispon_r)
230
 
        AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
231
 
ADDRESS_MAP_END
232
 
 
233
 
static ADDRESS_MAP_START( visicom_map, AS_PROGRAM, 8, visicom_state )
234
 
        AM_RANGE(0x0000, 0x07ff) AM_ROM
235
 
        AM_RANGE(0x1000, 0x10ff) AM_RAM
236
 
        AM_RANGE(0x1100, 0x11ff) AM_RAM AM_BASE(m_color_ram)
237
 
        AM_RANGE(0x1300, 0x13ff) AM_RAM AM_BASE(m_color_ram1)
238
 
ADDRESS_MAP_END
239
 
 
240
 
static ADDRESS_MAP_START( visicom_io_map, AS_IO, 8, visicom_state )
241
 
        AM_RANGE(0x01, 0x01) AM_WRITE_BASE(studio2_state, dispon_w)
242
 
        AM_RANGE(0x02, 0x02) AM_WRITE_BASE(studio2_state, keylatch_w)
243
 
ADDRESS_MAP_END
244
 
 
245
 
static ADDRESS_MAP_START( mpt02_map, AS_PROGRAM, 8, mpt02_state )
246
 
        AM_RANGE(0x0000, 0x07ff) AM_ROM
247
 
        AM_RANGE(0x0800, 0x09ff) AM_RAM
248
 
        AM_RANGE(0x0b00, 0x0b3f) AM_RAM AM_BASE(m_color_ram)
249
 
        AM_RANGE(0x0c00, 0x0fff) AM_ROM
250
 
ADDRESS_MAP_END
251
 
 
252
 
static ADDRESS_MAP_START( mpt02_io_map, AS_IO, 8, mpt02_state )
253
 
        AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w)
254
 
        AM_RANGE(0x02, 0x02) AM_WRITE_BASE(studio2_state, keylatch_w)
255
 
        AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispoff_r, tone_latch_w)
256
 
ADDRESS_MAP_END
257
 
 
258
 
/* Input Ports */
259
 
 
260
 
static INPUT_CHANGED( reset_w )
261
 
{
262
 
        studio2_state *state = field.machine().driver_data<studio2_state>();
263
 
 
264
 
        if (oldval && !newval)
265
 
        {
266
 
                state->machine_reset();
267
 
        }
268
 
}
269
 
 
270
 
static INPUT_PORTS_START( studio2 )
271
 
        PORT_START("A")
272
 
        PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 0") PORT_CODE(KEYCODE_LALT)
273
 
        PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 1") PORT_CODE(KEYCODE_Q)
274
 
        PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 2") PORT_CODE(KEYCODE_W)
275
 
        PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 3") PORT_CODE(KEYCODE_E)
276
 
        PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 4") PORT_CODE(KEYCODE_A)
277
 
        PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 5") PORT_CODE(KEYCODE_S)
278
 
        PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 6") PORT_CODE(KEYCODE_D)
279
 
        PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 7") PORT_CODE(KEYCODE_Z)
280
 
        PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 8") PORT_CODE(KEYCODE_X)
281
 
        PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("A 9") PORT_CODE(KEYCODE_C)
282
 
 
283
 
        PORT_START("B")
284
 
        PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 0") PORT_CODE(KEYCODE_0_PAD)
285
 
        PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 1") PORT_CODE(KEYCODE_7_PAD)
286
 
        PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 2") PORT_CODE(KEYCODE_8_PAD)
287
 
        PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 3") PORT_CODE(KEYCODE_9_PAD)
288
 
        PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 4") PORT_CODE(KEYCODE_4_PAD)
289
 
        PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 5") PORT_CODE(KEYCODE_5_PAD)
290
 
        PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 6") PORT_CODE(KEYCODE_6_PAD)
291
 
        PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 7") PORT_CODE(KEYCODE_1_PAD)
292
 
        PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 8") PORT_CODE(KEYCODE_2_PAD)
293
 
        PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("B 9") PORT_CODE(KEYCODE_3_PAD)
294
 
 
295
 
        PORT_START("CLEAR")
296
 
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Clear") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CHANGED(reset_w, 0)
297
 
INPUT_PORTS_END
298
 
 
299
 
/* Video */
300
 
 
301
 
static CDP1861_INTERFACE( studio2_cdp1861_intf )
302
 
{
303
 
        CDP1802_TAG,
304
 
        SCREEN_TAG,
305
 
        DEVCB_CPU_INPUT_LINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT),
306
 
        DEVCB_CPU_INPUT_LINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT),
307
 
        DEVCB_CPU_INPUT_LINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1)
308
 
};
309
 
 
310
 
bool studio2_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
311
 
{
312
 
        m_vdc->update_screen(&bitmap, &cliprect);
313
 
 
314
 
        return 0;
315
 
}
316
 
 
317
 
static PALETTE_INIT( visicom )
318
 
{
319
 
    palette_set_color_rgb(machine, 0, 0x00, 0x80, 0x00);
320
 
    palette_set_color_rgb(machine, 1, 0x00, 0x00, 0xff);
321
 
    palette_set_color_rgb(machine, 2, 0x00, 0xff, 0x00);
322
 
    palette_set_color_rgb(machine, 3, 0xff, 0x00, 0x00);
323
 
}
324
 
 
325
 
READ_LINE_MEMBER( mpt02_state::rdata_r )
326
 
{
327
 
        return BIT(m_color, 0);
328
 
}
329
 
 
330
 
READ_LINE_MEMBER( mpt02_state::bdata_r )
331
 
{
332
 
        return BIT(m_color, 1);
333
 
}
334
 
 
335
 
READ_LINE_MEMBER( mpt02_state::gdata_r )
336
 
{
337
 
        return BIT(m_color, 2);
338
 
}
339
 
 
340
 
static CDP1864_INTERFACE( mpt02_cdp1864_intf )
341
 
{
342
 
        CDP1802_TAG,
343
 
        SCREEN_TAG,
344
 
        CDP1864_INTERLACED,
345
 
        DEVCB_DRIVER_LINE_MEMBER(mpt02_state, rdata_r),
346
 
        DEVCB_DRIVER_LINE_MEMBER(mpt02_state, bdata_r),
347
 
        DEVCB_DRIVER_LINE_MEMBER(mpt02_state, gdata_r),
348
 
        DEVCB_CPU_INPUT_LINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT),
349
 
        DEVCB_CPU_INPUT_LINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT),
350
 
        DEVCB_CPU_INPUT_LINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1),
351
 
        DEVCB_NULL,
352
 
        RES_K(2.2),     // unverified
353
 
        RES_K(1),       // unverified
354
 
        RES_K(5.1),     // unverified
355
 
        RES_K(4.7)      // unverified
356
 
};
357
 
 
358
 
bool mpt02_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
359
 
{
360
 
        m_cti->update_screen(&bitmap, &cliprect);
361
 
 
362
 
        return 0;
363
 
}
364
 
 
365
 
/* CDP1802 Configuration */
366
 
 
367
 
READ_LINE_MEMBER( studio2_state::clear_r )
368
 
{
369
 
        return BIT(input_port_read(machine(), "CLEAR"), 0);
370
 
}
371
 
 
372
 
READ_LINE_MEMBER( studio2_state::ef3_r )
373
 
{
374
 
        return BIT(input_port_read(machine(), "A"), m_keylatch);
375
 
}
376
 
 
377
 
READ_LINE_MEMBER( studio2_state::ef4_r )
378
 
{
379
 
        return BIT(input_port_read(machine(), "B"), m_keylatch);
380
 
}
381
 
 
382
 
WRITE_LINE_MEMBER( studio2_state::q_w )
383
 
{
384
 
        beep_set_state(m_speaker, state);
385
 
}
386
 
 
387
 
static COSMAC_INTERFACE( studio2_cosmac_intf )
388
 
{
389
 
        DEVCB_LINE_VCC,
390
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, clear_r),
391
 
        DEVCB_NULL,
392
 
        DEVCB_NULL,
393
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef3_r),
394
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef4_r),
395
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, q_w),
396
 
        DEVCB_NULL,
397
 
        DEVCB_DEVICE_MEMBER(CDP1861_TAG, cdp1861_device, dma_w),
398
 
        NULL,
399
 
        DEVCB_NULL,
400
 
        DEVCB_NULL
401
 
};
402
 
 
403
 
WRITE8_MEMBER( mpt02_state::dma_w )
404
 
{
405
 
        UINT8 addr = ((offset & 0xe0) >> 2) | (offset & 0x07);
406
 
 
407
 
        m_color = m_color_ram[addr];
408
 
 
409
 
        m_cti->con_w(0); // HACK
410
 
        m_cti->dma_w(space, offset, data);
411
 
}
412
 
 
413
 
static COSMAC_INTERFACE( mpt02_cosmac_intf )
414
 
{
415
 
        DEVCB_LINE_VCC,
416
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, clear_r),
417
 
        DEVCB_NULL,
418
 
        DEVCB_NULL,
419
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef3_r),
420
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef4_r),
421
 
        DEVCB_DRIVER_LINE_MEMBER(studio2_state, q_w),
422
 
        DEVCB_NULL,
423
 
        DEVCB_DRIVER_MEMBER(mpt02_state, dma_w),
424
 
        NULL,
425
 
        DEVCB_NULL,
426
 
        DEVCB_NULL
427
 
};
428
 
 
429
 
/* Machine Initialization */
430
 
 
431
 
void studio2_state::machine_start()
432
 
{
433
 
        // register for state saving
434
 
        save_item(NAME(m_keylatch));
435
 
}
436
 
 
437
 
void studio2_state::machine_reset()
438
 
{
439
 
        m_vdc->reset();
440
 
}
441
 
 
442
 
void mpt02_state::machine_reset()
443
 
{
444
 
        m_cti->reset();
445
 
}
446
 
 
447
 
DEVICE_IMAGE_LOAD( studio2_cart_load )
448
 
{
449
 
        if (image.software_entry() == NULL)
450
 
                return device_load_st2_cartslot_load(image);
451
 
        else
452
 
        {
453
 
                // WARNING: list code currently assume that cart mapping starts at 0x400.
454
 
                // the five dumps currently available work like this, but the .st2 format
455
 
                // allows for more freedom... how was the content of a real cart mapped?
456
 
                UINT8 *ptr = ((UINT8 *) image.device().machine().region(CDP1802_TAG)->base()) + 0x400;
457
 
                memcpy(ptr, image.get_software_region("rom"), image.get_software_region_length("rom"));
458
 
                return IMAGE_INIT_PASS;
459
 
        }
460
 
}
461
 
 
462
 
/* Machine Drivers */
463
 
 
464
 
static MACHINE_CONFIG_FRAGMENT( studio2_cartslot )
465
 
        MCFG_CARTSLOT_ADD("cart")
466
 
        MCFG_CARTSLOT_EXTENSION_LIST("st2,bin")
467
 
        MCFG_CARTSLOT_NOT_MANDATORY
468
 
        MCFG_CARTSLOT_LOAD(studio2_cart_load)
469
 
        MCFG_CARTSLOT_INTERFACE("studio2_cart")
470
 
 
471
 
        /* software lists */
472
 
        MCFG_SOFTWARE_LIST_ADD("cart_list","studio2")
473
 
MACHINE_CONFIG_END
474
 
 
475
 
static MACHINE_CONFIG_START( studio2, studio2_state )
476
 
        /* basic machine hardware */
477
 
        MCFG_CPU_ADD(CDP1802_TAG, COSMAC, 1760000) /* the real clock is derived from an oscillator circuit */
478
 
        MCFG_CPU_PROGRAM_MAP(studio2_map)
479
 
        MCFG_CPU_IO_MAP(studio2_io_map)
480
 
        MCFG_CPU_CONFIG(studio2_cosmac_intf)
481
 
 
482
 
    /* video hardware */
483
 
        MCFG_CDP1861_SCREEN_ADD(SCREEN_TAG, 1760000)
484
 
 
485
 
        MCFG_PALETTE_LENGTH(2)
486
 
        MCFG_PALETTE_INIT(black_and_white)
487
 
 
488
 
        MCFG_CDP1861_ADD(CDP1861_TAG, 1760000, studio2_cdp1861_intf)
489
 
 
490
 
        /* sound hardware */
491
 
        MCFG_SPEAKER_STANDARD_MONO("mono")
492
 
        MCFG_SOUND_ADD(BEEPER_TAG, BEEP, 0)
493
 
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
494
 
 
495
 
        MCFG_FRAGMENT_ADD( studio2_cartslot )
496
 
MACHINE_CONFIG_END
497
 
 
498
 
static MACHINE_CONFIG_START( visicom, visicom_state )
499
 
        /* basic machine hardware */
500
 
        MCFG_CPU_ADD(CDP1802_TAG, COSMAC, XTAL_3_579545MHz/2)
501
 
        MCFG_CPU_PROGRAM_MAP(visicom_map)
502
 
        MCFG_CPU_IO_MAP(visicom_io_map)
503
 
        MCFG_CPU_CONFIG(studio2_cosmac_intf)
504
 
 
505
 
    /* video hardware */
506
 
        MCFG_CDP1861_SCREEN_ADD(SCREEN_TAG, XTAL_3_579545MHz/2)
507
 
 
508
 
        MCFG_PALETTE_LENGTH(4)
509
 
        MCFG_PALETTE_INIT(visicom)
510
 
 
511
 
        MCFG_CDP1861_ADD(CDP1861_TAG, XTAL_3_579545MHz/2/8, studio2_cdp1861_intf)
512
 
 
513
 
        /* sound hardware */
514
 
        MCFG_SPEAKER_STANDARD_MONO("mono")
515
 
        MCFG_SOUND_ADD(BEEPER_TAG, BEEP, 0)
516
 
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
517
 
 
518
 
        MCFG_FRAGMENT_ADD( studio2_cartslot )
519
 
MACHINE_CONFIG_END
520
 
 
521
 
static MACHINE_CONFIG_START( mpt02, mpt02_state )
522
 
        /* basic machine hardware */
523
 
        MCFG_CPU_ADD(CDP1802_TAG, COSMAC, CDP1864_CLOCK)
524
 
        MCFG_CPU_PROGRAM_MAP(mpt02_map)
525
 
        MCFG_CPU_IO_MAP(mpt02_io_map)
526
 
        MCFG_CPU_CONFIG(mpt02_cosmac_intf)
527
 
 
528
 
    /* video hardware */
529
 
        MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, CDP1864_CLOCK)
530
 
 
531
 
        MCFG_PALETTE_LENGTH(8+8)
532
 
 
533
 
        /* sound hardware */
534
 
        MCFG_SPEAKER_STANDARD_MONO("mono")
535
 
        MCFG_SOUND_ADD(BEEPER_TAG, BEEP, 0)
536
 
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
537
 
 
538
 
        MCFG_CDP1864_ADD(CDP1864_TAG, CDP1864_CLOCK, mpt02_cdp1864_intf)
539
 
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
540
 
 
541
 
        MCFG_FRAGMENT_ADD( studio2_cartslot )
542
 
MACHINE_CONFIG_END
543
 
 
544
 
/* ROMs */
545
 
 
546
 
ROM_START( studio2 )
547
 
        ROM_REGION( 0x10000, CDP1802_TAG, 0 )
548
 
        ROM_LOAD( "84932.ic11", 0x0000, 0x0200, CRC(283b7e65) SHA1(4b6d21cde59712ecb5941ff63d8eb161420b0aac) )
549
 
        ROM_LOAD( "84933.ic12", 0x0200, 0x0200, CRC(a396b77c) SHA1(023517f67af61790e6916b6c4dbe2d9dc07ae3ff) )
550
 
        ROM_LOAD( "85456.ic13", 0x0400, 0x0200, CRC(d25cf97f) SHA1(d489f41f1125c76cc8ed9defa82a877ae014ef21) )
551
 
        ROM_LOAD( "85457.ic14", 0x0600, 0x0200, CRC(74aa724f) SHA1(085832f29e0d2a387c75463d66c54fb6c1e9e72c) )
552
 
ROM_END
553
 
 
554
 
ROM_START( visicom )
555
 
        ROM_REGION( 0x10000, CDP1802_TAG, 0 )
556
 
        ROM_LOAD( "visicom.q003", 0x0000, 0x0800, CRC(23d22074) SHA1(a0a8be23f70621a2bd8010b1134e8a0019075bf1) )
557
 
ROM_END
558
 
 
559
 
ROM_START( mpt02 )
560
 
        ROM_REGION( 0x10000, CDP1802_TAG, 0 )
561
 
        ROM_LOAD( "86676.ic13",  0x0000, 0x0400, CRC(a7d0dd3b) SHA1(e1881ab4d67a5d735dd2c8d7e924e41df6f2aeec) )
562
 
        ROM_LOAD( "86677b.ic14", 0x0400, 0x0400, CRC(82a2d29e) SHA1(37e02089d611db10bad070d89c8801de41521189) )
563
 
        ROM_LOAD( "87201.ic12",  0x0c00, 0x0400, CRC(8006a1e3) SHA1(b67612d98231485fce55d604915abd19b6d64eac) )
564
 
ROM_END
565
 
 
566
 
#define rom_mpt02h rom_mpt02
567
 
#define rom_mtc9016 rom_mpt02
568
 
#define rom_shmc1200 rom_mpt02
569
 
#define rom_cm1200 rom_mpt02
570
 
#define rom_apollo80 rom_mpt02
571
 
 
572
 
/* Driver Initialization */
573
 
 
574
 
static TIMER_CALLBACK( setup_beep )
575
 
{
576
 
        device_t *speaker = machine.device(BEEPER_TAG);
577
 
        beep_set_state(speaker, 0);
578
 
        beep_set_frequency(speaker, 300);
579
 
}
580
 
 
581
 
static DRIVER_INIT( studio2 )
582
 
{
583
 
        machine.scheduler().timer_set(attotime::zero, FUNC(setup_beep));
584
 
}
585
 
 
586
 
/* Game Drivers */
587
 
 
588
 
/*    YEAR  NAME        PARENT  COMPAT  MACHINE     INPUT       INIT        COMPANY   FULLNAME */
589
 
CONS( 1977,     studio2,        0,              0,              studio2,        studio2,        studio2,        "RCA",          "Studio II", GAME_SUPPORTS_SAVE )
590
 
CONS( 1978, visicom,    studio2,0,              visicom,        studio2,        studio2,        "Toshiba",      "Visicom COM-100 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
591
 
CONS( 1978,     mpt02,          studio2,0,              mpt02,          studio2,        studio2,        "Soundic",      "Victory MPT-02 Home TV Programmer (Austria)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
592
 
CONS( 1978,     mpt02h,         studio2,0,              mpt02,          studio2,        studio2,        "Hanimex",      "MPT-02 Jeu TV Programmable (France)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE)
593
 
CONS( 1978,     mtc9016,        studio2,0,              mpt02,          studio2,        studio2,        "Mustang",      "9016 Telespiel Computer (Germany)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
594
 
CONS( 1978, shmc1200,   studio2,0,              mpt02,          studio2,        studio2,        "Sheen",        "1200 Micro Computer (Australia)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
595
 
CONS( 1978, cm1200,             studio2,0,              mpt02,          studio2,        studio2,        "Conic",        "M-1200 (?)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
596
 
CONS( 1978, apollo80,   studio2,0,              mpt02,          studio2,        studio2,        "Academy",      "Apollo 80 (Germany)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )