trunk/src/mame/drivers/mappy.c
| r242999 | r243000 | |
| 2462 | 2462 | |
| 2463 | 2463 | /* 3x6809, static tilemap, 2bpp sprites (Gaplus type) */ |
| 2464 | 2464 | GAME( 1983, phozon, 0, phozon, phozon, mappy_state, phozon, ROT90, "Namco", "Phozon (Japan)", GAME_SUPPORTS_SAVE ) |
| 2465 | | GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, phozon, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", GAME_SUPPORTS_SAVE ) |
| 2465 | GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, phozon, ROT90, "bootleg? (Sidam)", "Phozon (Sidam)", GAME_SUPPORTS_SAVE ) |
| 2466 | 2466 | |
| 2467 | 2467 | /* 2x6809, scroling tilemap, 4bpp sprites (Super Pacman type) */ |
| 2468 | 2468 | GAME( 1983, mappy, 0, mappy, mappy, mappy_state, mappy, ROT90, "Namco", "Mappy (US)", GAME_SUPPORTS_SAVE ) |
trunk/src/mess/drivers/ngen.c
| r242999 | r243000 | |
| 67 | 67 | #include "machine/pit8253.h" |
| 68 | 68 | #include "machine/z80dart.h" |
| 69 | 69 | #include "machine/wd_fdc.h" |
| 70 | | #include "machine/wd2010.h" |
| 71 | 70 | #include "bus/rs232/rs232.h" |
| 72 | 71 | #include "machine/ngen_kb.h" |
| 73 | 72 | #include "machine/clock.h" |
| 74 | | #include "imagedev/harddriv.h" |
| 75 | 73 | |
| 76 | 74 | class ngen_state : public driver_device |
| 77 | 75 | { |
| r242999 | r243000 | |
| 91 | 89 | m_fdc(*this,"fdc"), |
| 92 | 90 | m_fd0(*this,"fdc:0"), |
| 93 | 91 | m_fdc_timer(*this,"fdc_timer"), |
| 94 | | m_hdc(*this,"hdc"), |
| 95 | | m_hdc_timer(*this,"hdc_timer"), |
| 96 | | m_hd_buffer(*this,"hd_buffer_ram") |
| 92 | m_hdc_timer(*this,"hdc_timer") |
| 97 | 93 | {} |
| 98 | 94 | |
| 99 | 95 | DECLARE_WRITE_LINE_MEMBER(pit_out0_w); |
| r242999 | r243000 | |
| 133 | 129 | DECLARE_READ8_MEMBER(irq_cb); |
| 134 | 130 | DECLARE_WRITE8_MEMBER(hdc_control_w); |
| 135 | 131 | DECLARE_WRITE8_MEMBER(disk_addr_ext); |
| 136 | | DECLARE_READ8_MEMBER(hd_buffer_r); |
| 137 | | DECLARE_WRITE8_MEMBER(hd_buffer_w); |
| 138 | 132 | |
| 139 | 133 | protected: |
| 140 | 134 | virtual void machine_reset(); |
| 141 | | virtual void machine_start(); |
| 142 | 135 | |
| 143 | 136 | private: |
| 144 | 137 | required_device<i80186_cpu_device> m_maincpu; |
| r242999 | r243000 | |
| 154 | 147 | optional_device<wd2797_t> m_fdc; |
| 155 | 148 | optional_device<floppy_connector> m_fd0; |
| 156 | 149 | optional_device<pit8253_device> m_fdc_timer; |
| 157 | | optional_device<wd2010_device> m_hdc; |
| 158 | 150 | optional_device<pit8253_device> m_hdc_timer; |
| 159 | | optional_shared_ptr<UINT8> m_hd_buffer; |
| 160 | 151 | |
| 161 | 152 | void set_dma_channel(int channel, int state); |
| 162 | 153 | |
| r242999 | r243000 | |
| 479 | 470 | case 0x0a: |
| 480 | 471 | case 0x0b: |
| 481 | 472 | if(mem_mask & 0x00ff) |
| 482 | | m_fdc_timer->write(space,offset-0x08,data & 0xff); |
| 473 | m_fdc_timer->write(space,offset,data & 0xff); |
| 483 | 474 | break; |
| 484 | 475 | case 0x10: |
| 485 | 476 | case 0x11: |
| r242999 | r243000 | |
| 489 | 480 | case 0x15: |
| 490 | 481 | case 0x16: |
| 491 | 482 | case 0x17: |
| 492 | | if(mem_mask & 0x00ff) |
| 493 | | m_hdc->write(space,offset-0x10,data & 0xff); |
| 494 | 483 | logerror("WD1010 register %i write %02x mask %04x\n",offset-0x10,data & 0xff,mem_mask); |
| 495 | 484 | break; |
| 496 | 485 | case 0x18: |
| r242999 | r243000 | |
| 498 | 487 | case 0x1a: |
| 499 | 488 | case 0x1b: |
| 500 | 489 | if(mem_mask & 0x00ff) |
| 501 | | m_hdc_timer->write(space,offset-0x18,data & 0xff); |
| 490 | m_hdc_timer->write(space,offset,data & 0xff); |
| 502 | 491 | break; |
| 503 | 492 | } |
| 504 | 493 | } |
| r242999 | r243000 | |
| 521 | 510 | case 0x0a: |
| 522 | 511 | case 0x0b: |
| 523 | 512 | if(mem_mask & 0x00ff) |
| 524 | | ret = m_fdc_timer->read(space,offset-0x08); |
| 513 | ret = m_fdc_timer->read(space,offset); |
| 525 | 514 | break; |
| 526 | 515 | case 0x10: |
| 527 | 516 | case 0x11: |
| r242999 | r243000 | |
| 531 | 520 | case 0x15: |
| 532 | 521 | case 0x16: |
| 533 | 522 | case 0x17: |
| 534 | | if(mem_mask & 0x00ff) |
| 535 | | ret = m_hdc->read(space,offset-0x10); |
| 536 | 523 | logerror("WD1010 register %i read, mask %04x\n",offset-0x10,mem_mask); |
| 537 | 524 | break; |
| 538 | 525 | case 0x18: |
| r242999 | r243000 | |
| 540 | 527 | case 0x1a: |
| 541 | 528 | case 0x1b: |
| 542 | 529 | if(mem_mask & 0x00ff) |
| 543 | | ret = m_hdc_timer->read(space,offset-0x18); |
| 530 | ret = m_hdc_timer->read(space,offset); |
| 544 | 531 | break; |
| 545 | 532 | } |
| 546 | 533 | |
| r242999 | r243000 | |
| 598 | 585 | m_disk_page = data & 0x7f; |
| 599 | 586 | } |
| 600 | 587 | |
| 601 | | READ8_MEMBER(ngen_state::hd_buffer_r) |
| 602 | | { |
| 603 | | return m_hd_buffer[offset]; |
| 604 | | } |
| 605 | | |
| 606 | | WRITE8_MEMBER(ngen_state::hd_buffer_w) |
| 607 | | { |
| 608 | | m_hd_buffer[offset] = data; |
| 609 | | } |
| 610 | | |
| 611 | 588 | WRITE_LINE_MEMBER( ngen_state::dma_hrq_changed ) |
| 612 | 589 | { |
| 613 | 590 | m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| r242999 | r243000 | |
| 626 | 603 | { |
| 627 | 604 | if(state) |
| 628 | 605 | { |
| 629 | | if(m_hdc_control & 0x04) // ROM transfer |
| 606 | if(m_hdc_control & 0x04) // ROM transfer? |
| 630 | 607 | m_hdc_control &= ~0x04; // switch it off when done |
| 631 | 608 | } |
| 632 | 609 | } |
| r242999 | r243000 | |
| 712 | 689 | return m_pic->acknowledge(); |
| 713 | 690 | } |
| 714 | 691 | |
| 715 | | void ngen_state::machine_start() |
| 716 | | { |
| 717 | | m_hd_buffer.allocate(1024*8); // 8kB buffer RAM for HD controller |
| 718 | | } |
| 719 | | |
| 720 | 692 | void ngen_state::machine_reset() |
| 721 | 693 | { |
| 722 | 694 | m_port00 = 0; |
| r242999 | r243000 | |
| 865 | 837 | MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu",i80186_cpu_device,drq1_w)) |
| 866 | 838 | MCFG_WD_FDC_FORCE_READY |
| 867 | 839 | MCFG_DEVICE_ADD("fdc_timer", PIT8253, 0) |
| 868 | | MCFG_PIT8253_CLK0(XTAL_20MHz / 20) |
| 869 | | MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) // clocked on FDC data register access |
| 840 | MCFG_PIT8253_CLK0(XTAL_20MHz / 20) |
| 841 | MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 870 | 842 | MCFG_PIT8253_CLK1(XTAL_20MHz / 20) |
| 871 | | MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) // 1MHz |
| 872 | | MCFG_PIT8253_CLK2(XTAL_20MHz / 10) |
| 873 | | MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 874 | | // TODO: WD1010 HDC (not implemented), use WD2010 for now |
| 875 | | MCFG_DEVICE_ADD("hdc", WD2010, XTAL_20MHz / 4) |
| 876 | | MCFG_WD2010_IN_BCS_CB(READ8(ngen_state,hd_buffer_r)) |
| 877 | | MCFG_WD2010_OUT_BCS_CB(WRITE8(ngen_state,hd_buffer_w)) |
| 878 | | MCFG_WD2010_IN_DRDY_CB(VCC) |
| 879 | | MCFG_WD2010_IN_INDEX_CB(VCC) |
| 880 | | MCFG_WD2010_IN_WF_CB(VCC) |
| 881 | | MCFG_WD2010_IN_TK000_CB(VCC) |
| 882 | | MCFG_WD2010_IN_SC_CB(VCC) |
| 843 | MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 844 | MCFG_PIT8253_CLK2(XTAL_20MHz / 20) |
| 845 | MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pic",pic8259_device,ir7_w)) |
| 846 | // TODO: WD1010 HDC (not implemented) |
| 883 | 847 | MCFG_DEVICE_ADD("hdc_timer", PIT8253, 0) |
| 884 | | MCFG_PIT8253_CLK2(XTAL_20MHz / 10) // 2MHz |
| 885 | 848 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", ngen_floppies, "525qd", floppy_image_device::default_floppy_formats) |
| 886 | | MCFG_HARDDISK_ADD("hard0") |
| 887 | 849 | |
| 888 | 850 | MACHINE_CONFIG_END |
| 889 | 851 | |