Previous 15994 Revisions Next

r8754 Tuesday 10th August, 2010 at 13:16:56 UTC by Angelo Salese
[PC6600]: Fixed CGROM bankswitch and worked around the Disk access, now this version boots too
[src/mess/drivers]pc6001.c

src/mess/drivers/pc6001.c
r8753r8754
22
33    PC-6001 series (c) 1981 NEC
44
5    preliminary driver by Angelo Salese
5    driver by Angelo Salese
66
77    TODO:
88    - Hook up tape loading, images that are floating around the net are already
r8753r8754
1010    - cassette handling requires a decap of the MCU. It could be possible to
1111      do some tight synch between the master CPU and a code simulation,but I think
1212      it's not worth the effort...
13    - make PC-6600 model to work;
13    - Identify and hook-up the FDC device, apparently PC-6001 and PC-6600 doesn't even use the same thing;
14    - PC-6600: mon r-0 type games doesn't seem to work at all on this version?
1415    - Currently rewriting the video part without the MC6847 for two reasons:
1516        A) the later models have a custom video chip in the place of the MC6847,
1617           so this implementation will be used in the end.
r8753r8754
3132                                                 doesn't seem to work too well with halt opcode execution?
3233   - Dezeni Land 1/4: dies after loading of main program
3334   - Dezeni Land 2: dies at the "load something" screen with presumably wrong stack opcodes
34   - Forts 1: refuses to run, bad dump?
35   - Forts 2: ASCII gfxs are missing;
35   - (MyCom BASIC games with multiple files): most of them refuses to run ... how to load them?
3636   - Grobda: when "get ready" speech plays, screen should be full white but instead it's all black, same issue as AX-6 Demo?
3737   - Pac-Man / Tiny Xevious 2: gameplay is too fast
3838   - Salad no Kunino Tomato-Hime: can't start a play
3939   - Space Harrier: inputs doesn't work properly
40   - The Black Onyx: dies because it wants to save on the tape
41   - Yakyukyo: waits for an irq, check which one;
40   - The Black Onyx: dies when it attempts to save the character, that obviously means saving on the tape
41   - Yakyukyo / Punchball Mario: waits for an irq, check which one;
4242
4343========================================================================================================================================================
4444
r8753r8754
145145static UINT8 ex_vram_bank, bgcol_bank,exgfx_text_mode,exgfx_bitmap_mode,exgfx_2bpp_mode;
146146static UINT8 bank_r0,bank_r1,gfx_bank_on,bank_w,bank_opt;
147147static UINT8 timer_irq_mask2, timer_irq_vector;
148static UINT32 cgrom_bank_addr;
148149
149//#define CAS_LENGTH 0x1655
150#define IRQ_LOG (0)
150151
151152static VIDEO_START( pc6001 )
152153{
r8753r8754
849850   if(!gfx_bank_on)
850851      memory_set_bankptr(space->machine, "bank4", &ROM[banksw_table_r0[((bank_r0 & 0xf0)>>4)+(bank_opt*0x10)][3]]);
851852   else
852      memory_set_bankptr(space->machine, "bank4", &gfx_data[0x2000]); //FIXME: check this (CGROM 1/2?)
853      memory_set_bankptr(space->machine, "bank4", &gfx_data[cgrom_bank_addr]);
853854}
854855
855856static WRITE8_HANDLER( pc6001m2_bank_r1_w )
r8753r8754
892893   if(!gfx_bank_on)
893894      memory_set_bankptr(space->machine, "bank4", &ROM[banksw_table_r0[((bank_r0 & 0xf0)>>4)+(bank_opt*0x10)][3]]);
894895   else
895      memory_set_bankptr(space->machine, "bank4", &gfx_data[0x2000]); //FIXME: check this (CGROM 1/2?)
896      memory_set_bankptr(space->machine, "bank4", &gfx_data[cgrom_bank_addr]);
896897   memory_set_bankptr(space->machine, "bank4", &ROM[banksw_table_r0[((bank_r0 & 0xf0)>>4)+(bank_opt*0x10)][3]]);
897898   memory_set_bankptr(space->machine, "bank5", &ROM[banksw_table_r1[(bank_r1 & 0xf)+(bank_opt*0x10)][0]]);
898899   memory_set_bankptr(space->machine, "bank6", &ROM[banksw_table_r1[(bank_r1 & 0xf)+(bank_opt*0x10)][1]]);
r8753r8754
943944         if((data & 0x0f) == 0x04)
944945         {
945946            gfx_bank_on = 1;
946            memory_set_bankptr(device->machine, "bank4", &gfx_data[0x2000]); //FIXME: check this (CGROM 1/2?)
947            memory_set_bankptr(device->machine, "bank4", &gfx_data[cgrom_bank_addr]);
947948         }
948949      }
949950   }
r8753r8754
995996   }
996997
997998   sys_latch = data;
999
9981000   timer_irq_mask = data & 1;
9991001   vram_bank_change(space->machine,(ex_vram_bank & 0x06) | ((sys_latch & 0x06) << 4));
10001002
r8753r8754
10101012   vram_bank_change(space->machine,(ex_vram_bank & 0x06) | ((sys_latch & 0x06) << 4));
10111013
10121014   exgfx_text_mode = ((data & 2) == 0);
1015   cgrom_bank_addr = (data & 2) ? 0x0000 : 0x2000;
10131016
10141017   exgfx_bitmap_mode = (data & 8);
10151018   exgfx_2bpp_mode = ((data & 6) == 0);
r8753r8754
10981101{
10991102   if(cas_switch == 0 && ((timer_irq_mask == 0) || (timer_irq_mask2 == 0)))
11001103   {
1104      if(IRQ_LOG) printf("Timer IRQ called %02x\n",timer_irq_vector);
11011105      irq_vector = timer_irq_vector;
11021106      cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
11031107   }
r8753r8754
11311135   return bank_w;
11321136}
11331137
1134
11351138static ADDRESS_MAP_START(pc6001m2_map, ADDRESS_SPACE_PROGRAM, 8)
11361139   ADDRESS_MAP_UNMAP_HIGH
11371140   AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") AM_WRITE(work_ram0_w)
r8753r8754
11671170
11681171   AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_READWRITE(upd7752_reg_r,upd7752_reg_w)
11691172
1170   AM_RANGE(0xf0, 0xf0) AM_READ(pc6001m2_bank_r0_r) AM_WRITE(pc6001m2_bank_r0_w)
1171   AM_RANGE(0xf1, 0xf1) AM_READ(pc6001m2_bank_r1_r) AM_WRITE(pc6001m2_bank_r1_w)
1172   AM_RANGE(0xf2, 0xf2) AM_READ(pc6001m2_bank_w0_r) AM_WRITE(pc6001m2_bank_w0_w)
1173   AM_RANGE(0xf0, 0xf0) AM_READWRITE(pc6001m2_bank_r0_r,pc6001m2_bank_r0_w)
1174   AM_RANGE(0xf1, 0xf1) AM_READWRITE(pc6001m2_bank_r1_r,pc6001m2_bank_r1_w)
1175   AM_RANGE(0xf2, 0xf2) AM_READWRITE(pc6001m2_bank_w0_r,pc6001m2_bank_w0_w)
11731176   AM_RANGE(0xf3, 0xf3) AM_WRITE(pc6001m2_0xf3_w)
11741177//   AM_RANGE(0xf4
11751178//   AM_RANGE(0xf5
r8753r8754
11771180   AM_RANGE(0xf7, 0xf7) AM_WRITE(pc6001m2_timer_irqv_w)
11781181ADDRESS_MAP_END
11791182
1183/* disk device placeholder (TODO: identify & hook-up this) */
1184static READ8_HANDLER( pc6600_fdc_r )
1185{
1186   return mame_rand(space->machine);
1187}
1188
1189static WRITE8_HANDLER( pc6600_fdc_w )
1190{
1191}
1192
1193
1194static ADDRESS_MAP_START( pc6600_io , ADDRESS_SPACE_IO, 8)
1195   ADDRESS_MAP_UNMAP_HIGH
1196   ADDRESS_MAP_GLOBAL_MASK(0xff)
1197   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", msm8251_data_r,msm8251_data_w)
1198   AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", msm8251_status_r,msm8251_control_w)
1199
1200   AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi8255", nec_ppi8255_r, necmk2_ppi8255_w)
1201
1202   AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_address_w)
1203   AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_data_w)
1204   AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_r)
1205   AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_NOP
1206
1207   AM_RANGE(0xb0, 0xb0) AM_WRITE(pc6001m2_system_latch_w)
1208   /* these are disk related */
1209//   AM_RANGE(0xb1
1210//   AM_RANGE(0xb2
1211//   AM_RANGE(0xb3
1212
1213   AM_RANGE(0xc0, 0xc0) AM_WRITE(pc6001m2_col_bank_w)
1214   AM_RANGE(0xc1, 0xc1) AM_WRITE(pc6001m2_vram_bank_w)
1215   AM_RANGE(0xc2, 0xc2) AM_WRITE(pc6001m2_opt_bank_w)
1216
1217   AM_RANGE(0xd0, 0xdf) AM_READWRITE(pc6600_fdc_r,pc6600_fdc_w) // disk device
1218
1219   AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_READWRITE(upd7752_reg_r,upd7752_reg_w)
1220
1221   AM_RANGE(0xf0, 0xf0) AM_READWRITE(pc6001m2_bank_r0_r,pc6001m2_bank_r0_w)
1222   AM_RANGE(0xf1, 0xf1) AM_READWRITE(pc6001m2_bank_r1_r,pc6001m2_bank_r1_w)
1223   AM_RANGE(0xf2, 0xf2) AM_READWRITE(pc6001m2_bank_w0_r,pc6001m2_bank_w0_w)
1224   AM_RANGE(0xf3, 0xf3) AM_WRITE(pc6001m2_0xf3_w)
1225//   AM_RANGE(0xf4
1226//   AM_RANGE(0xf5
1227   AM_RANGE(0xf6, 0xf6) AM_WRITE(pc6001m2_timer_adj_w)
1228   AM_RANGE(0xf7, 0xf7) AM_WRITE(pc6001m2_timer_irqv_w)
1229ADDRESS_MAP_END
1230
11801231/* Input ports */
11811232static INPUT_PORTS_START( pc6001 )
11821233   PORT_START("MODE4_DSW") //TODO: is this really a DSW? bit arrangement is also unknown if so.
r8753r8754
13191370   PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("KANA") PORT_CODE(KEYCODE_RCONTROL) PORT_TOGGLE
13201371   PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
13211372   PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("GRPH") PORT_CODE(KEYCODE_LALT)
1373   PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("STOP") PORT_CODE(KEYCODE_ESC)
13221374INPUT_PORTS_END
13231375
13241376static UINT8 check_joy_press(running_machine *machine);
r8753r8754
13261378static INTERRUPT_GEN( pc6001_interrupt )
13271379{
13281380   cur_keycode = check_joy_press(device->machine);
1381   if(IRQ_LOG) printf("Stick IRQ called 0x16\n");
13291382   irq_vector = 0x16;
13301383   cpu_set_input_line(device, 0, ASSERT_LINE);
13311384}
r8753r8754
14401493static UINT8 check_joy_press(running_machine *machine)
14411494{
14421495   UINT8 p1_key = input_port_read(machine,"P1") ^ 0xff;
1496   UINT8 shift_key = input_port_read(machine,"key_modifiers") & 0x02;
1497   UINT8 space_key = input_port_read(machine,"key2") & 0x01;
1498
14431499   static UINT8 joy_press;
14441500
14451501      /*
r8753r8754
14671523      case 0x0a: joy_press = 0x18; break; //down-right
14681524   }
14691525
1470   if(p1_key & 0x10) { joy_press |= 0x80; } //button 1 (space?)
1471   if(p1_key & 0x20) { joy_press |= 0x01; } //button 2 (shift)
1526   if(p1_key & 0x10 || space_key) { joy_press |= 0x80; } //button 1 (space)
1527   if(p1_key & 0x20 || shift_key) { joy_press |= 0x01; } //button 2 (shift)
14721528
14731529   return joy_press;
14741530}
r8753r8754
15031559         {
15041560            cas_offset = 0;
15051561            cas_switch = 0;
1562            if(IRQ_LOG) printf("Tape-E IRQ 0x12\n");
15061563            irq_vector = 0x12;
15071564            cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
15081565         }
15091566         else
15101567         {
1568            if(IRQ_LOG) printf("Tape-D IRQ 0x08\n");
15111569            irq_vector = 0x08;
15121570            cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
15131571         }
r8753r8754
15291587      if((key1 != old_key1) || (key2 != old_key2) || (key3 != old_key3))
15301588      {
15311589         cur_keycode = check_keyboard_press(space->machine);
1590         if(IRQ_LOG) printf("KEY IRQ 0x02\n");
15321591         irq_vector = 0x02;
15331592         cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
15341593         old_key1 = key1;
r8753r8754
15961655   /* set default bankswitch */
15971656   {
15981657      UINT8 *ROM = memory_region(machine, "maincpu");
1599      bank_r0 = 0x01;
1658      bank_r0 = 0x71;
16001659      memory_set_bankptr(machine, "bank1", &ROM[BASICROM(0)]);
16011660      memory_set_bankptr(machine, "bank2", &ROM[BASICROM(1)]);
1602      memory_set_bankptr(machine, "bank3", &ROM[INVALID(0)]);
1603      memory_set_bankptr(machine, "bank4", &ROM[INVALID(0)]);
1661      memory_set_bankptr(machine, "bank3", &ROM[EXROM(0)]);
1662      memory_set_bankptr(machine, "bank4", &ROM[EXROM(1)]);
16041663      bank_r1 = 0xdd;
16051664      memory_set_bankptr(machine, "bank5", &ROM[WRAM(4)]);
16061665      memory_set_bankptr(machine, "bank6", &ROM[WRAM(5)]);
16071666      memory_set_bankptr(machine, "bank7", &ROM[WRAM(6)]);
16081667      memory_set_bankptr(machine, "bank8", &ROM[WRAM(7)]);
16091668      bank_opt = 0x02; //tv rom
1610      bank_w = 0x55; //write to work ram
1669      bank_w = 0x50; //enable write to work ram 4,5,6,7
16111670      gfx_bank_on = 0;
16121671   }
16131672
r8753r8754
17381797   MDRV_CPU_VBLANK_INT("screen", pc6001_interrupt)
17391798
17401799//  MDRV_CPU_ADD("subcpu", I8049, 7987200)
1800
17411801   MDRV_MACHINE_START(pc6001)
17421802   MDRV_MACHINE_RESET(pc6001)
17431803
17441804   MDRV_GFXDECODE(pc6001m2)
17451805
1746
17471806   /* video hardware */
17481807   MDRV_SCREEN_ADD("screen", RASTER)
17491808   MDRV_SCREEN_REFRESH_RATE(60)
r8753r8754
18011860
18021861MACHINE_DRIVER_END
18031862
1804static MACHINE_DRIVER_START( pc6001sr )
1863static MACHINE_DRIVER_START( pc6600 )
18051864   MDRV_IMPORT_FROM(pc6001m2)
18061865
18071866   /* basic machine hardware */
1808   MDRV_CPU_REPLACE("maincpu", Z80, XTAL_3_579545MHz) //*Yes*, PC-6001 SR Z80 CPU is actually slower than older models
1867   MDRV_CPU_REPLACE("maincpu", Z80, XTAL_3_579545MHz) //*Yes*, PC-6600 Z80 CPU is actually slower than older models
1868   MDRV_CPU_PROGRAM_MAP(pc6001m2_map)
1869   MDRV_CPU_IO_MAP(pc6600_io)
1870   MDRV_CPU_VBLANK_INT("screen", pc6001_interrupt)
18091871MACHINE_DRIVER_END
18101872
18111873/* ROM definition */
r8753r8754
18231885   ROM_REGION( 0x20000, "cas", ROMREGION_ERASEFF )
18241886
18251887   ROM_REGION( 0x4000, "cart_img", ROMREGION_ERASE00 )
1826   ROM_CART_LOAD("cart", 0x0000, 0x3fff, ROM_OPTIONAL | ROM_MIRROR)
1888   ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_OPTIONAL | ROM_MIRROR)
18271889ROM_END
18281890
18291891ROM_START( pc6001a )
r8753r8754
18411903   ROM_REGION( 0x20000, "cas", ROMREGION_ERASEFF )
18421904
18431905   ROM_REGION( 0x4000, "cart_img", ROMREGION_ERASE00 )
1844   ROM_CART_LOAD("cart", 0x0000, 0x3fff, ROM_OPTIONAL | ROM_MIRROR)
1906   ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_OPTIONAL | ROM_MIRROR)
18451907ROM_END
18461908
18471909ROM_START( pc6001m2 )
r8753r8754
18711933   ROM_COPY( "maincpu", 0x48000, 0x0000, 0x4000 )
18721934ROM_END
18731935
1874ROM_START( pc6600 )   /* Variant of pc6001m2 */
1875   ROM_REGION( 0x48000, "maincpu", ROMREGION_ERASEFF )
1876   ROM_LOAD( "basicrom.66", 0x10000, 0x8000, CRC(c0b01772) SHA1(9240bb6b97fe06f5f07b5d65541c4d2f8758cc2a) )
1877   ROM_LOAD( "voicerom.66", 0x18000, 0x4000, CRC(91d078c1) SHA1(6a93bd7723ef67f461394530a9feee57c8caf7b7) )
1878   ROM_LOAD( "cgrom60.66",  0x1c000, 0x2000, CRC(d2434f29) SHA1(a56d76f5cbdbcdb8759abe601eab68f01b0a8fe8) )
1879   ROM_LOAD( "cgrom66.66",  0x1e000, 0x2000, CRC(3ce48c33) SHA1(f3b6c63e83a17d80dde63c6e4d86adbc26f84f79) )
1880   ROM_LOAD( "kanjirom.66", 0x20000, 0x8000, CRC(20c8f3eb) SHA1(4c9f30f0a2ebbe70aa8e697f94eac74d8241cadd) )
1936ROM_START( pc6001sr )
1937   ROM_REGION( 0x50000, "maincpu", ROMREGION_ERASEFF )
1938   /* If you split this into 4x 8000, the first 3 need to load to 0-7FFF (via bankswitch). The 4th part looks like gfx data */
1939   ROM_LOAD( "systemrom1.64", 0x10000, 0x10000, CRC(b6fc2db2) SHA1(dd48b1eee60aa34780f153359f5da7f590f8dff4) )
1940   ROM_LOAD( "systemrom2.64", 0x20000, 0x10000, CRC(55a62a1d) SHA1(3a19855d290fd4ac04e6066fe4a80ecd81dc8dd7) )
1941   ROM_CART_LOAD("cart",    0x48000, 0x4000, ROM_OPTIONAL | ROM_MIRROR)
18811942
18821943   ROM_REGION( 0x1000, "mcu", ROMREGION_ERASEFF )
18831944   ROM_LOAD( "i8049", 0x0000, 0x1000, NO_DUMP )
18841945
18851946   ROM_REGION( 0x4000, "gfx1", 0 )
1886   ROM_COPY( "maincpu", 0x1c000, 0x00000, 0x4000 )
1947   ROM_LOAD( "cgrom68.64", 0x0000, 0x4000, CRC(73bc3256) SHA1(5f80d62a95331dc39b2fb448a380fd10083947eb) )
18871948
1888   ROM_REGION( 0x8000, "gfx2", 0 )
1889   ROM_COPY( "maincpu", 0x20000, 0x00000, 0x8000 )
1949   ROM_REGION( 0x8000, "gfx2", ROMREGION_ERASEFF )
18901950
18911951   ROM_REGION( 0x20000, "cas", ROMREGION_ERASEFF )
18921952
18931953   ROM_REGION( 0x4000, "cart_img", ROMREGION_ERASE00 )
1894   ROM_CART_LOAD("cart", 0x0000, 0x3fff, ROM_OPTIONAL | ROM_MIRROR)
1954   ROM_COPY( "maincpu", 0x48000, 0x0000, 0x4000 )
18951955ROM_END
18961956
1897ROM_START( pc6001sr )
1898   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
1899   /* If you split this into 4x 8000, the first 3 need to load to 0-7FFF (via bankswitch). The 4th part looks like gfx data */
1900   ROM_LOAD( "systemrom1.64", 0x0000, 0x10000, CRC(b6fc2db2) SHA1(dd48b1eee60aa34780f153359f5da7f590f8dff4) )
1901   ROM_LOAD( "systemrom2.64", 0x10000, 0x10000, CRC(55a62a1d) SHA1(3a19855d290fd4ac04e6066fe4a80ecd81dc8dd7) )
19021957
1958ROM_START( pc6600 )   /* Variant of pc6001m2 */
1959   ROM_REGION( 0x50000, "maincpu", ROMREGION_ERASEFF )
1960   ROM_LOAD( "basicrom.66", 0x10000, 0x8000, CRC(c0b01772) SHA1(9240bb6b97fe06f5f07b5d65541c4d2f8758cc2a) )
1961   ROM_LOAD( "voicerom.66", 0x18000, 0x4000, CRC(91d078c1) SHA1(6a93bd7723ef67f461394530a9feee57c8caf7b7) )
1962   ROM_LOAD( "cgrom60.66",  0x1c000, 0x2000, CRC(d2434f29) SHA1(a56d76f5cbdbcdb8759abe601eab68f01b0a8fe8) )
1963   ROM_LOAD( "cgrom66.66",  0x1e000, 0x2000, CRC(3ce48c33) SHA1(f3b6c63e83a17d80dde63c6e4d86adbc26f84f79) )
1964   ROM_LOAD( "kanjirom.66", 0x20000, 0x8000, CRC(20c8f3eb) SHA1(4c9f30f0a2ebbe70aa8e697f94eac74d8241cadd) )
1965   ROM_CART_LOAD("cart",    0x48000, 0x4000, ROM_OPTIONAL | ROM_MIRROR)
1966
19031967   ROM_REGION( 0x1000, "mcu", ROMREGION_ERASEFF )
19041968   ROM_LOAD( "i8049", 0x0000, 0x1000, NO_DUMP )
19051969
19061970   ROM_REGION( 0x4000, "gfx1", 0 )
1907   ROM_LOAD( "cgrom68.64", 0x0000, 0x4000, CRC(73bc3256) SHA1(5f80d62a95331dc39b2fb448a380fd10083947eb) )
1971   ROM_COPY( "maincpu", 0x1c000, 0x00000, 0x4000 )
19081972
1909   ROM_REGION( 0x8000, "gfx2", ROMREGION_ERASEFF )
1973   ROM_REGION( 0x8000, "gfx2", 0 )
1974   ROM_COPY( "maincpu", 0x20000, 0x00000, 0x8000 )
19101975
19111976   ROM_REGION( 0x20000, "cas", ROMREGION_ERASEFF )
19121977
19131978   ROM_REGION( 0x4000, "cart_img", ROMREGION_ERASE00 )
1914   ROM_CART_LOAD("cart", 0x0000, 0x3fff, ROM_OPTIONAL | ROM_MIRROR)
1979   ROM_COPY( "maincpu", 0x48000, 0x0000, 0x4000 )
19151980ROM_END
19161981
19171982/* There exists an alternative (incomplete?) dump, consisting of more .68 pieces, but it's been probably created for emulators:
r8753r8754
19201985cgrom68.68 = CGROM60.68 + CGROM66.68
19211986 */
19221987ROM_START( pc6600sr )   /* Variant of pc6001sr */
1923   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
1988   ROM_REGION( 0x50000, "maincpu", ROMREGION_ERASEFF )
19241989   ROM_LOAD( "systemrom1.68", 0x0000, 0x10000, CRC(b6fc2db2) SHA1(dd48b1eee60aa34780f153359f5da7f590f8dff4) )
19251990   ROM_LOAD( "systemrom2.68", 0x10000, 0x10000, CRC(55a62a1d) SHA1(3a19855d290fd4ac04e6066fe4a80ecd81dc8dd7) )
19261991
r8753r8754
19331998   ROM_REGION( 0x20000, "cas", ROMREGION_ERASEFF )
19341999
19352000   ROM_REGION( 0x4000, "cart_img", ROMREGION_ERASE00 )
1936   ROM_CART_LOAD("cart", 0x0000, 0x3fff, ROM_OPTIONAL | ROM_MIRROR)
2001   ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_OPTIONAL | ROM_MIRROR)
19372002ROM_END
19382003
19392004/*    YEAR  NAME      PARENT   COMPAT MACHINE   INPUT     INIT    COMPANY  FULLNAME          FLAGS */
1940COMP( 1981, pc6001,   0,       0,     pc6001,   pc6001,   0,      "Nippon Electronic Company",   "PC-6001",       GAME_NOT_WORKING )
1941COMP( 1981, pc6001a,  pc6001,  0,     pc6001,   pc6001,   0,      "Nippon Electronic Company",   "PC-6001A",      GAME_NOT_WORKING )   // US version of PC-6001
1942COMP( 1983, pc6001m2, pc6001,  0,     pc6001m2, pc6001,   0,      "Nippon Electronic Company",   "PC-6001mkII",   GAME_NOT_WORKING )
1943COMP( 1984, pc6001sr, pc6001,  0,     pc6001sr, pc6001,   0,      "Nippon Electronic Company",   "PC-6001mkIISR", GAME_NOT_WORKING )
1944COMP( 1983, pc6600,   pc6001,  0,     pc6001m2, pc6001,   0,      "Nippon Electronic Company",   "PC-6600",       GAME_NOT_WORKING )   // high-end version of PC-6001mkII
1945COMP( 1984, pc6600sr, pc6001,  0,     pc6001sr, pc6001,   0,      "Nippon Electronic Company",   "PC-6600SR",     GAME_NOT_WORKING )   // high-end version of PC-6001mkIISR
2005COMP( 1981, pc6001,   0,       0,     pc6001,   pc6001,   0,      "Nippon Electronic Company",   "PC-6001 (Japan)",    GAME_NOT_WORKING )
2006COMP( 1981, pc6001a,  pc6001,  0,     pc6001,   pc6001,   0,      "Nippon Electronic Company",   "PC-6001A (US)",      GAME_NOT_WORKING ) // This version is also known as the NEC Trek
2007COMP( 1983, pc6001m2, pc6001,  0,     pc6001m2, pc6001,   0,      "Nippon Electronic Company",   "PC-6001mkII (Japan)",   GAME_NOT_WORKING )
2008COMP( 1984, pc6001sr, pc6001,  0,     pc6001m2, pc6001,   0,      "Nippon Electronic Company",   "PC-6001mkIISR (Japan)", GAME_NOT_WORKING )
2009COMP( 1983, pc6600,   pc6001,  0,     pc6600,   pc6001,   0,      "Nippon Electronic Company",   "PC-6600 (Japan)",       GAME_NOT_WORKING )
2010COMP( 1984, pc6600sr, pc6001,  0,     pc6600,   pc6001,   0,      "Nippon Electronic Company",   "PC-6600SR (Japan)",     GAME_NOT_WORKING )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team