src/mess/drivers/eti660.c
| r0 | r7017 | |
| 1 | #include "driver.h" |
| 2 | #include "includes/eti660.h" |
| 3 | #include "cpu/cdp1802/cdp1802.h" |
| 4 | #include "devices/cassette.h" |
| 5 | #include "devices/messram.h" |
| 6 | #include "machine/6821pia.h" |
| 7 | #include "machine/rescap.h" |
| 8 | #include "sound/cdp1864.h" |
| 9 | |
| 10 | /* Read/Write Handlers */ |
| 11 | |
| 12 | static WRITE8_HANDLER( eti660_colorram_w ) |
| 13 | { |
| 14 | } |
| 15 | |
| 16 | /* Memory Maps */ |
| 17 | |
| 18 | static ADDRESS_MAP_START( eti660_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 19 | AM_RANGE(0x0000, 0x03ff) AM_ROM |
| 20 | AM_RANGE(0x0400, 0x0fff) AM_RAM |
| 21 | ADDRESS_MAP_END |
| 22 | |
| 23 | static ADDRESS_MAP_START( eti660_io_map, ADDRESS_SPACE_IO, 8 ) |
| 24 | AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_dispon_r, cdp1864_step_bgcolor_w) |
| 25 | AM_RANGE(0x03, 0x03) AM_WRITE(eti660_colorram_w) |
| 26 | AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_dispoff_r, cdp1864_tone_latch_w) |
| 27 | ADDRESS_MAP_END |
| 28 | |
| 29 | /* Input Ports */ |
| 30 | |
| 31 | static INPUT_PORTS_START( eti660 ) |
| 32 | INPUT_PORTS_END |
| 33 | |
| 34 | /* Video */ |
| 35 | |
| 36 | static WRITE_LINE_DEVICE_HANDLER( eti660_efx_w ) |
| 37 | { |
| 38 | eti660_state *driver_state = device->machine->driver_data; |
| 39 | |
| 40 | driver_state->cdp1864_efx = state; |
| 41 | } |
| 42 | |
| 43 | static VIDEO_UPDATE( eti660 ) |
| 44 | { |
| 45 | eti660_state *state = screen->machine->driver_data; |
| 46 | |
| 47 | cdp1864_update(state->cdp1864, bitmap, cliprect); |
| 48 | |
| 49 | return 0; |
| 50 | } |
| 51 | |
| 52 | static CDP1864_INTERFACE( eti660_cdp1864_intf ) |
| 53 | { |
| 54 | CDP1802_TAG, |
| 55 | SCREEN_TAG, |
| 56 | CDP1864_INTERLACED, |
| 57 | DEVCB_LINE_VCC, |
| 58 | DEVCB_LINE_VCC, |
| 59 | DEVCB_LINE_VCC, |
| 60 | DEVCB_CPU_INPUT_LINE(CDP1802_TAG, CDP1802_INPUT_LINE_INT), |
| 61 | DEVCB_CPU_INPUT_LINE(CDP1802_TAG, CDP1802_INPUT_LINE_DMAOUT), |
| 62 | DEVCB_LINE(eti660_efx_w), |
| 63 | RES_K(2.2), /* R7 */ |
| 64 | RES_K(1), /* R5 */ |
| 65 | RES_K(4.7), /* R6 */ |
| 66 | RES_K(4.7) /* R4 */ |
| 67 | }; |
| 68 | |
| 69 | /* CDP1802 Interface */ |
| 70 | |
| 71 | static CDP1802_MODE_READ( eti660_mode_r ) |
| 72 | { |
| 73 | eti660_state *state = device->machine->driver_data; |
| 74 | |
| 75 | return state->cdp1802_mode; |
| 76 | } |
| 77 | |
| 78 | static CDP1802_EF_READ( eti660_ef_r ) |
| 79 | { |
| 80 | eti660_state *state = device->machine->driver_data; |
| 81 | |
| 82 | int ef = 0x0f; |
| 83 | |
| 84 | /* CDP1864 EFx */ |
| 85 | if (state->cdp1864_efx) ef -= EF1; |
| 86 | |
| 87 | /* tape input */ |
| 88 | if (cassette_input(state->cassette) < 0) ef -= EF2; |
| 89 | |
| 90 | return ef; |
| 91 | } |
| 92 | |
| 93 | static WRITE_LINE_DEVICE_HANDLER( eti660_q_w ) |
| 94 | { |
| 95 | eti660_state *driver_state = device->machine->driver_data; |
| 96 | |
| 97 | /* CDP1864 audio output enable */ |
| 98 | cdp1864_aoe_w(driver_state->cdp1864, state); |
| 99 | |
| 100 | /* PULSE led */ |
| 101 | set_led_status(device->machine, LED_PULSE, state); |
| 102 | |
| 103 | /* tape output */ |
| 104 | cassette_output(driver_state->cassette, state ? 1.0 : -1.0); |
| 105 | } |
| 106 | |
| 107 | static WRITE8_DEVICE_HANDLER( eti660_dma_w ) |
| 108 | { |
| 109 | eti660_state *state = device->machine->driver_data; |
| 110 | |
| 111 | state->color = state->color_ram[offset / 4]; |
| 112 | |
| 113 | cdp1864_con_w(state->cdp1864, 0); // HACK |
| 114 | cdp1864_dma_w(state->cdp1864, offset, data); |
| 115 | } |
| 116 | |
| 117 | static CDP1802_INTERFACE( eti660_config ) |
| 118 | { |
| 119 | eti660_mode_r, |
| 120 | eti660_ef_r, |
| 121 | NULL, |
| 122 | DEVCB_LINE(eti660_q_w), |
| 123 | DEVCB_NULL, |
| 124 | DEVCB_HANDLER(eti660_dma_w) |
| 125 | }; |
| 126 | |
| 127 | /* PIA6821 Interface */ |
| 128 | |
| 129 | static READ8_DEVICE_HANDLER( eti660_pia_a_r ) |
| 130 | { |
| 131 | /* |
| 132 | |
| 133 | bit description |
| 134 | |
| 135 | PA0 keyboard row 0 |
| 136 | PA1 keyboard row 1 |
| 137 | PA2 keyboard row 2 |
| 138 | PA3 keyboard row 3 |
| 139 | PA4 keyboard column 0 |
| 140 | PA5 keyboard column 1 |
| 141 | PA6 keyboard column 2 |
| 142 | PA7 keyboard column 3 |
| 143 | |
| 144 | */ |
| 145 | |
| 146 | // eti660_state *state = device->machine->driver_data; |
| 147 | |
| 148 | return 0xf0; |
| 149 | } |
| 150 | |
| 151 | static WRITE8_DEVICE_HANDLER( eti660_pia_a_w ) |
| 152 | { |
| 153 | /* |
| 154 | |
| 155 | bit description |
| 156 | |
| 157 | PA0 keyboard row 0 |
| 158 | PA1 keyboard row 1 |
| 159 | PA2 keyboard row 2 |
| 160 | PA3 keyboard row 3 |
| 161 | PA4 keyboard column 0 |
| 162 | PA5 keyboard column 1 |
| 163 | PA6 keyboard column 2 |
| 164 | PA7 keyboard column 3 |
| 165 | |
| 166 | */ |
| 167 | |
| 168 | eti660_state *state = device->machine->driver_data; |
| 169 | |
| 170 | state->keylatch = data & 0x0f; |
| 171 | } |
| 172 | |
| 173 | static const pia6821_interface bw12_pia_config = |
| 174 | { |
| 175 | DEVCB_HANDLER(eti660_pia_a_r), /* port A input */ |
| 176 | DEVCB_NULL, /* port B input */ |
| 177 | DEVCB_NULL, /* CA1 input */ |
| 178 | DEVCB_NULL, /* CB1 input */ |
| 179 | DEVCB_NULL, /* CA2 input */ |
| 180 | DEVCB_NULL, /* CB2 input */ |
| 181 | DEVCB_HANDLER(eti660_pia_a_w), /* port A output */ |
| 182 | DEVCB_NULL, /* port B output */ |
| 183 | DEVCB_NULL, /* CA2 output */ |
| 184 | DEVCB_NULL, /* CB2 output */ |
| 185 | DEVCB_NULL,DEVCB_NULL |
| 186 | // DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* IRQA output */ |
| 187 | // DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) /* IRQB output */ |
| 188 | }; |
| 189 | |
| 190 | /* Machine Initialization */ |
| 191 | |
| 192 | static MACHINE_START( eti660 ) |
| 193 | { |
| 194 | eti660_state *state = machine->driver_data; |
| 195 | |
| 196 | /* find devices */ |
| 197 | state->cdp1864 = devtag_get_device(machine, CDP1864_TAG); |
| 198 | state->cassette = devtag_get_device(machine, CASSETTE_TAG); |
| 199 | |
| 200 | /* register for state saving */ |
| 201 | state_save_register_global(machine, state->cdp1802_mode); |
| 202 | state_save_register_global(machine, state->cdp1864_efx); |
| 203 | } |
| 204 | |
| 205 | /* Machine Drivers */ |
| 206 | |
| 207 | static const cassette_config eti660_cassette_config = |
| 208 | { |
| 209 | cassette_default_formats, |
| 210 | NULL, |
| 211 | CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED |
| 212 | }; |
| 213 | |
| 214 | static MACHINE_DRIVER_START( eti660 ) |
| 215 | MDRV_DRIVER_DATA(eti660_state) |
| 216 | |
| 217 | /* basic machine hardware */ |
| 218 | MDRV_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_8_867238MHz/5) |
| 219 | MDRV_CPU_PROGRAM_MAP(eti660_map) |
| 220 | MDRV_CPU_IO_MAP(eti660_io_map) |
| 221 | MDRV_CPU_CONFIG(eti660_config) |
| 222 | |
| 223 | MDRV_MACHINE_START(eti660) |
| 224 | |
| 225 | /* video hardware */ |
| 226 | MDRV_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL_8_867238MHz/5) |
| 227 | |
| 228 | MDRV_PALETTE_LENGTH(8+8) |
| 229 | MDRV_VIDEO_UPDATE(eti660) |
| 230 | |
| 231 | /* sound hardware */ |
| 232 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 233 | MDRV_CDP1864_ADD(CDP1864_TAG, XTAL_8_867238MHz/5, eti660_cdp1864_intf) |
| 234 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 235 | |
| 236 | /* devices */ |
| 237 | // MDRV_PIA6821_ADD(MC6821_TAG, eti660_mc6821_intf) |
| 238 | MDRV_CASSETTE_ADD("cassette", eti660_cassette_config) |
| 239 | |
| 240 | /* internal ram */ |
| 241 | MDRV_RAM_ADD("messram") |
| 242 | MDRV_RAM_DEFAULT_SIZE("1K") |
| 243 | MDRV_RAM_EXTRA_OPTIONS("3K") |
| 244 | MACHINE_DRIVER_END |
| 245 | |
| 246 | /* ROMs */ |
| 247 | |
| 248 | ROM_START( eti660 ) |
| 249 | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 250 | ROM_LOAD( "eti660.bin", 0x0000, 0x0400, CRC(811dfa62) SHA1(c0c4951e02f873f15560bdc3f35cdf3f99653922) ) |
| 251 | ROM_END |
| 252 | |
| 253 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 254 | COMP( 1978, eti660, 0, 0, eti660, eti660, 0, "Electronics Today International", "ETI-660 (Australia)", GAME_NOT_WORKING ) |
src/mess/drivers/studio2.c
| r7016 | r7017 | |
| 186 | 186 | |
| 187 | 187 | TODO: |
| 188 | 188 | |
| 189 | - disable ic13/14 when cartridge plugged in |
| 189 | 190 | - studio2 cpu clock from schematics |
| 190 | 191 | - visicom alternate videoram @ 0x1300 ? |
| 191 | 192 | - mpt02/mustang cdp1864 colors |
| r7016 | r7017 | |
| 229 | 230 | /* Memory Maps */ |
| 230 | 231 | |
| 231 | 232 | static ADDRESS_MAP_START( studio2_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 233 | ADDRESS_MAP_UNMAP_HIGH |
| 232 | 234 | AM_RANGE(0x0000, 0x07ff) AM_ROM |
| 233 | 235 | AM_RANGE(0x0800, 0x09ff) AM_MIRROR(0xf400) AM_RAM |
| 234 | 236 | ADDRESS_MAP_END |
| 235 | 237 | |
| 236 | 238 | static ADDRESS_MAP_START( studio2_io_map, ADDRESS_SPACE_IO, 8 ) |
| 239 | ADDRESS_MAP_UNMAP_HIGH |
| 237 | 240 | AM_RANGE(0x01, 0x01) AM_DEVREAD(CDP1861_TAG, studio2_cdp1861_dispon_r) |
| 238 | 241 | AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) |
| 239 | 242 | ADDRESS_MAP_END |
| r7016 | r7017 | |
| 535 | 538 | static MACHINE_DRIVER_START( studio2 ) |
| 536 | 539 | MDRV_DRIVER_DATA(studio2_state) |
| 537 | 540 | |
| 538 | | // basic machine hardware |
| 539 | | MDRV_CPU_ADD(CDP1802_TAG, CDP1802, 3579545/2) // the real clock is derived from an oscillator circuit |
| 541 | /* basic machine hardware */ |
| 542 | MDRV_CPU_ADD(CDP1802_TAG, CDP1802, 1760000) /* the real clock is derived from an oscillator circuit */ |
| 540 | 543 | MDRV_CPU_PROGRAM_MAP(studio2_map) |
| 541 | 544 | MDRV_CPU_IO_MAP(studio2_io_map) |
| 542 | 545 | MDRV_CPU_CONFIG(studio2_config) |
| r7016 | r7017 | |
| 544 | 547 | MDRV_MACHINE_START(studio2) |
| 545 | 548 | MDRV_MACHINE_RESET(studio2) |
| 546 | 549 | |
| 547 | | // video hardware |
| 548 | | MDRV_CDP1861_SCREEN_ADD(SCREEN_TAG, 3579545/2) |
| 550 | /* video hardware */ |
| 551 | MDRV_CDP1861_SCREEN_ADD(SCREEN_TAG, 1760000) |
| 549 | 552 | |
| 550 | 553 | MDRV_PALETTE_LENGTH(2) |
| 551 | 554 | MDRV_PALETTE_INIT(black_and_white) |
| 552 | 555 | MDRV_VIDEO_UPDATE(studio2) |
| 553 | 556 | |
| 554 | | MDRV_CDP1861_ADD(CDP1861_TAG, 3579545/2, studio2_cdp1861_intf) |
| 557 | MDRV_CDP1861_ADD(CDP1861_TAG, 1760000, studio2_cdp1861_intf) |
| 555 | 558 | |
| 556 | | // sound hardware |
| 559 | /* sound hardware */ |
| 557 | 560 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 558 | 561 | MDRV_SOUND_ADD("beep", BEEP, 0) |
| 559 | 562 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| r7016 | r7017 | |
| 564 | 567 | static MACHINE_DRIVER_START( visicom ) |
| 565 | 568 | MDRV_DRIVER_DATA(studio2_state) |
| 566 | 569 | |
| 567 | | // basic machine hardware |
| 570 | /* basic machine hardware */ |
| 568 | 571 | MDRV_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2) |
| 569 | 572 | MDRV_CPU_PROGRAM_MAP(visicom_map) |
| 570 | 573 | MDRV_CPU_IO_MAP(visicom_io_map) |
| r7016 | r7017 | |
| 573 | 576 | MDRV_MACHINE_START(studio2) |
| 574 | 577 | MDRV_MACHINE_RESET(studio2) |
| 575 | 578 | |
| 576 | | // video hardware |
| 579 | /* video hardware */ |
| 577 | 580 | MDRV_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL_3_579545MHz/2) |
| 578 | 581 | |
| 579 | 582 | MDRV_PALETTE_LENGTH(2) |
| r7016 | r7017 | |
| 582 | 585 | |
| 583 | 586 | MDRV_CDP1861_ADD(CDP1861_TAG, XTAL_3_579545MHz/2/8, studio2_cdp1861_intf) |
| 584 | 587 | |
| 585 | | // sound hardware |
| 588 | /* sound hardware */ |
| 586 | 589 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 587 | 590 | MDRV_SOUND_ADD("beep", BEEP, 0) |
| 588 | 591 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| r7016 | r7017 | |
| 593 | 596 | static MACHINE_DRIVER_START( mpt02 ) |
| 594 | 597 | MDRV_DRIVER_DATA(studio2_state) |
| 595 | 598 | |
| 596 | | // basic machine hardware |
| 599 | /* basic machine hardware */ |
| 597 | 600 | MDRV_CPU_ADD(CDP1802_TAG, CDP1802, CDP1864_CLOCK) |
| 598 | 601 | MDRV_CPU_PROGRAM_MAP(mpt02_map) |
| 599 | 602 | MDRV_CPU_IO_MAP(mpt02_io_map) |
| r7016 | r7017 | |
| 602 | 605 | MDRV_MACHINE_START(mpt02) |
| 603 | 606 | MDRV_MACHINE_RESET(mpt02) |
| 604 | 607 | |
| 605 | | // video hardware |
| 608 | /* video hardware */ |
| 606 | 609 | MDRV_CDP1864_SCREEN_ADD(SCREEN_TAG, CDP1864_CLOCK) |
| 607 | 610 | |
| 608 | 611 | MDRV_PALETTE_LENGTH(8+8) |
| 609 | 612 | MDRV_VIDEO_UPDATE(mpt02) |
| 610 | 613 | |
| 611 | | // sound hardware |
| 614 | /* sound hardware */ |
| 612 | 615 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 613 | 616 | MDRV_SOUND_ADD("beep", BEEP, 0) |
| 614 | 617 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| r7016 | r7017 | |
| 623 | 626 | |
| 624 | 627 | ROM_START( studio2 ) |
| 625 | 628 | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 626 | | ROM_LOAD( "84932", 0x0000, 0x0200, NO_DUMP ) |
| 627 | | ROM_LOAD( "84933", 0x0200, 0x0200, NO_DUMP ) |
| 628 | | ROM_LOAD( "85456", 0x0400, 0x0200, NO_DUMP ) |
| 629 | | ROM_LOAD( "85457", 0x0600, 0x0200, NO_DUMP ) |
| 630 | | ROM_LOAD( "studio2.rom", 0x0000, 0x0800, BAD_DUMP CRC(a494b339) SHA1(f2650dacc9daab06b9fdf0e7748e977b2907010c) ) |
| 629 | ROM_LOAD( "84932.ic11", 0x0000, 0x0200, CRC(283b7e65) SHA1(4b6d21cde59712ecb5941ff63d8eb161420b0aac) ) |
| 630 | ROM_LOAD( "84933.ic12", 0x0200, 0x0200, CRC(a396b77c) SHA1(023517f67af61790e6916b6c4dbe2d9dc07ae3ff) ) |
| 631 | ROM_LOAD( "85456.ic13", 0x0400, 0x0200, CRC(d25cf97f) SHA1(d489f41f1125c76cc8ed9defa82a877ae014ef21) ) |
| 632 | ROM_LOAD( "85457.ic14", 0x0600, 0x0200, CRC(74aa724f) SHA1(085832f29e0d2a387c75463d66c54fb6c1e9e72c) ) |
| 631 | 633 | ROM_END |
| 632 | 634 | |
| 633 | 635 | ROM_START( visicom ) |
| r7016 | r7017 | |
| 635 | 637 | ROM_LOAD( "visicom.q003", 0x0000, 0x0800, CRC(23d22074) SHA1(a0a8be23f70621a2bd8010b1134e8a0019075bf1) ) |
| 636 | 638 | ROM_END |
| 637 | 639 | |
| 638 | | ROM_START( mtc9016 ) |
| 640 | ROM_START( mpt02 ) |
| 639 | 641 | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 640 | | ROM_LOAD( "86676.ic13", 0x0000, 0x0400, NO_DUMP ) |
| 641 | | ROM_LOAD( "86677b.ic14", 0x0400, 0x0400, NO_DUMP ) |
| 642 | | ROM_LOAD( "87201.ic12", 0x0a00, 0x0400, NO_DUMP ) |
| 643 | | ROM_END |
| 644 | | |
| 645 | | ROM_START( shmc1200 ) |
| 646 | | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 647 | | ROM_LOAD( "shmc1200.bin", 0x0000, 0x0800, NO_DUMP ) |
| 648 | | ROM_END |
| 649 | | |
| 650 | | ROM_START( mpt02s ) |
| 651 | | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 652 | 642 | ROM_LOAD( "86676.ic13", 0x0000, 0x0400, CRC(a7d0dd3b) SHA1(e1881ab4d67a5d735dd2c8d7e924e41df6f2aeec) ) |
| 653 | 643 | ROM_LOAD( "86677b.ic14", 0x0400, 0x0400, CRC(82a2d29e) SHA1(37e02089d611db10bad070d89c8801de41521189) ) |
| 654 | 644 | ROM_LOAD( "87201.ic12", 0x0c00, 0x0400, CRC(8006a1e3) SHA1(b67612d98231485fce55d604915abd19b6d64eac) ) |
| 655 | 645 | ROM_END |
| 656 | 646 | |
| 657 | | ROM_START( mpt02h ) |
| 658 | | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 659 | | ROM_END |
| 647 | #define rom_mpt02h rom_mpt02 |
| 648 | #define rom_mtc9016 rom_mpt02 |
| 649 | #define rom_shmc1200 rom_mpt02 |
| 660 | 650 | |
| 661 | | ROM_START( eti660 ) |
| 662 | | ROM_REGION( 0x10000, CDP1802_TAG, 0 ) |
| 663 | | ROM_LOAD( "eti660.bin", 0x0000, 0x0400, CRC(811dfa62) SHA1(c0c4951e02f873f15560bdc3f35cdf3f99653922) ) |
| 664 | | ROM_END |
| 665 | | |
| 666 | 651 | /* Driver Initialization */ |
| 667 | 652 | |
| 668 | 653 | static TIMER_CALLBACK( setup_beep ) |
| r7016 | r7017 | |
| 682 | 667 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
| 683 | 668 | CONS( 1977, studio2, 0, 0, studio2, studio2, studio2, "RCA", "Studio II", GAME_SUPPORTS_SAVE ) |
| 684 | 669 | CONS( 1978, visicom, studio2,0, visicom, studio2, studio2, "Toshiba", "Visicom (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) |
| 685 | | CONS( 1978, mpt02s, studio2,0, mpt02, studio2, studio2, "Soundic", "MPT-02 Victory Home TV Programmer (Austria)", GAME_NOT_WORKING ) |
| 670 | CONS( 1978, mpt02, studio2,0, mpt02, studio2, studio2, "Soundic", "MPT-02 Victory Home TV Programmer (Austria)", GAME_NOT_WORKING ) |
| 686 | 671 | CONS( 1978, mpt02h, studio2,0, mpt02, studio2, studio2, "Hanimex", "MPT-02 Jeu TV Programmable (France)", GAME_NOT_WORKING ) |
| 687 | 672 | CONS( 1978, mtc9016, studio2,0, mpt02, studio2, studio2, "Mustang", "9016 Telespiel Computer (Germany)", GAME_NOT_WORKING ) |
| 688 | 673 | CONS( 1978, shmc1200, studio2,0, mpt02, studio2, studio2, "Sheen", "1200 Micro Computer (Australia)", GAME_NOT_WORKING ) |
| 689 | | CONS( 1978, eti660, studio2,0, mpt02, studio2, studio2, "Electronics Today International", "ETI-660 (Australia)", GAME_NOT_WORKING ) |