mirror of
https://github.com/holub/mame
synced 2025-06-06 21:03:47 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
4025e8e5f4
@ -492,12 +492,12 @@ READ8_MEMBER(towns_state::towns_floppy_r)
|
||||
{
|
||||
case 1:
|
||||
ret |= 0x0c;
|
||||
if(m_flop[0]->get_device()->exists())
|
||||
if(m_flop[0]->get_device() && m_flop[0]->get_device()->exists())
|
||||
ret |= 0x03;
|
||||
break;
|
||||
case 2:
|
||||
ret |= 0x0c;
|
||||
if(m_flop[1]->get_device()->exists())
|
||||
if(m_flop[1]->get_device() && m_flop[1]->get_device()->exists())
|
||||
ret |= 0x03;
|
||||
break;
|
||||
case 3:
|
||||
@ -510,9 +510,11 @@ READ8_MEMBER(towns_state::towns_floppy_r)
|
||||
case 0x0e: // DRVCHG
|
||||
logerror("FDC: read from offset 0x0e\n");
|
||||
if(m_towns_selected_drive == 1)
|
||||
return m_flop[0]->get_device()->dskchg_r();
|
||||
if (m_flop[0]->get_device())
|
||||
return m_flop[0]->get_device()->dskchg_r();
|
||||
if(m_towns_selected_drive == 2)
|
||||
return m_flop[1]->get_device()->dskchg_r();
|
||||
if (m_flop[1]->get_device())
|
||||
return m_flop[1]->get_device()->dskchg_r();
|
||||
return 0x00;
|
||||
default:
|
||||
logerror("FDC: read from invalid or unimplemented register %02x\n",offset);
|
||||
@ -2181,7 +2183,6 @@ void towns_state::towns_mem(address_map &map)
|
||||
map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
|
||||
map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
|
||||
map(0x000f8000, 0x000fffff).bankr("bank_f8000_r").bankw("bank_f8000_w");
|
||||
// AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM
|
||||
map(0x80000000, 0x8007ffff).rw(FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x80000); // VRAM
|
||||
map(0x80100000, 0x8017ffff).rw(FUNC(towns_state::towns_gfx_packed_r), FUNC(towns_state::towns_gfx_packed_w)).mirror(0x80000); // VRAM
|
||||
map(0x81000000, 0x8101ffff).rw(FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
|
||||
@ -2209,11 +2210,10 @@ void towns_state::marty_mem(address_map &map)
|
||||
map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
|
||||
map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
|
||||
map(0x000f8000, 0x000fffff).bankr("bank_f8000_r").bankw("bank_f8000_w");
|
||||
// AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM - the Marty has 6MB RAM (not upgradable)
|
||||
map(0x00600000, 0x0067ffff).rom().region("user", 0x000000); // OS
|
||||
map(0x00680000, 0x0087ffff).rom().region("user", 0x280000); // EX ROM
|
||||
map(0x00a00000, 0x00a7ffff).rw(FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
|
||||
map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
|
||||
map(0x00b00000, 0x00b7ffff).rw(FUNC(towns_state::towns_gfx_packed_r), FUNC(towns_state::towns_gfx_packed_w)).mirror(0x80000); // VRAM
|
||||
map(0x00c00000, 0x00c1ffff).rw(FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
|
||||
map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
|
||||
map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
|
||||
@ -2237,7 +2237,7 @@ void towns_state::ux_mem(address_map &map)
|
||||
map(0x000f8000, 0x000fffff).bankr("bank_f8000_r").bankw("bank_f8000_w");
|
||||
// AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM
|
||||
map(0x00a00000, 0x00a7ffff).rw(FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
|
||||
map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
|
||||
map(0x00b00000, 0x00b7ffff).rw(FUNC(towns_state::towns_gfx_packed_r), FUNC(towns_state::towns_gfx_packed_w)).mirror(0x80000); // VRAM
|
||||
map(0x00c00000, 0x00c1ffff).rw(FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
|
||||
map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
|
||||
map(0x00e00000, 0x00e7ffff).rom().region("user", 0x000000); // OS
|
||||
@ -2296,8 +2296,6 @@ void towns_state::towns_io(address_map &map)
|
||||
map(0x0600, 0x0607).rw(FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask32(0x00ff00ff);
|
||||
// RS-232C interface
|
||||
map(0x0a00, 0x0a0b).rw(FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask32(0x00ff00ff);
|
||||
// SCSI controller
|
||||
map(0x0c30, 0x0c37).rw(m_scsi, FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask32(0x00ff00ff);
|
||||
// CMOS
|
||||
map(0x3000, 0x4fff).rw(FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask32(0x00ff00ff);
|
||||
// Something (MS-DOS wants this 0x41ff to be 1)
|
||||
@ -2307,6 +2305,13 @@ void towns_state::towns_io(address_map &map)
|
||||
map(0xff80, 0xffff).rw(FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
|
||||
}
|
||||
|
||||
void towns_state::towns2_io(address_map &map)
|
||||
{
|
||||
// For FM Towns II models with integrated SCSI controller
|
||||
towns_io(map);
|
||||
map(0x0c30, 0x0c37).rw(m_scsi, FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask32(0x00ff00ff);
|
||||
}
|
||||
|
||||
void towns_state::towns16_io(address_map &map)
|
||||
{ // for the 386SX based systems
|
||||
// System ports
|
||||
@ -2355,8 +2360,6 @@ void towns_state::towns16_io(address_map &map)
|
||||
map(0x0600, 0x0607).rw(FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask16(0x00ff);
|
||||
// RS-232C interface
|
||||
map(0x0a00, 0x0a0b).rw(FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask16(0x00ff);
|
||||
// SCSI controller
|
||||
map(0x0c30, 0x0c37).rw(m_scsi, FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask16(0x00ff);
|
||||
// CMOS
|
||||
map(0x3000, 0x4fff).rw(FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask16(0x00ff);
|
||||
// Something (MS-DOS wants this 0x41ff to be 1)
|
||||
@ -2366,6 +2369,13 @@ void towns_state::towns16_io(address_map &map)
|
||||
map(0xff80, 0xffff).rw(FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
|
||||
}
|
||||
|
||||
void towns_state::townsux_io(address_map &map)
|
||||
{
|
||||
// For FM Towns II UX
|
||||
towns16_io(map);
|
||||
map(0x0c30, 0x0c37).rw(m_scsi, FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask16(0x00ff);
|
||||
}
|
||||
|
||||
void towns_state::pcm_mem(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
@ -2652,7 +2662,8 @@ void towns_state::driver_start()
|
||||
save_pointer(m_video.towns_crtc_reg,"CRTC registers",32);
|
||||
save_pointer(m_video.towns_video_reg,"Video registers",2);
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_ram(0x100000,m_ram->size()-1,nullptr);
|
||||
if (m_ram->size() > 0x100000)
|
||||
m_maincpu->space(AS_PROGRAM).install_ram(0x100000,m_ram->size()-1,nullptr);
|
||||
}
|
||||
|
||||
void marty_state::driver_start()
|
||||
@ -2664,8 +2675,10 @@ void marty_state::driver_start()
|
||||
|
||||
void towns_state::machine_start()
|
||||
{
|
||||
m_flop[0]->get_device()->set_rpm(360);
|
||||
m_flop[1]->get_device()->set_rpm(360);
|
||||
if (m_flop[0]->get_device())
|
||||
m_flop[0]->get_device()->set_rpm(360);
|
||||
if (m_flop[1]->get_device())
|
||||
m_flop[1]->get_device()->set_rpm(360);
|
||||
}
|
||||
|
||||
void towns_state::machine_reset()
|
||||
@ -2822,34 +2835,18 @@ void towns_state::towns_base(machine_config &config)
|
||||
CDROM(config, m_cdrom, 0).set_interface("fmt_cdrom");
|
||||
SOFTWARE_LIST(config, "cd_list").set_original("fmtowns_cd");
|
||||
|
||||
scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0));
|
||||
scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
|
||||
scsi.set_slot_device(2, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
|
||||
scsi.set_slot_device(3, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_2));
|
||||
scsi.set_slot_device(4, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_3));
|
||||
scsi.set_slot_device(5, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
|
||||
|
||||
FMSCSI(config, m_scsi, 0);
|
||||
m_scsi->set_scsi_port("scsi");
|
||||
m_scsi->irq_handler().set(FUNC(towns_state::towns_scsi_irq));
|
||||
m_scsi->drq_handler().set(FUNC(towns_state::towns_scsi_drq));
|
||||
|
||||
UPD71071(config, m_dma[0], 0);
|
||||
m_dma[0]->set_cpu_tag("maincpu");
|
||||
m_dma[0]->set_clock(4000000);
|
||||
m_dma[0]->dma_read_callback<0>().set(FUNC(towns_state::towns_fdc_dma_r));
|
||||
m_dma[0]->dma_read_callback<1>().set(FUNC(towns_state::towns_scsi_dma_r));
|
||||
m_dma[0]->dma_read_callback<3>().set(FUNC(towns_state::towns_state::towns_cdrom_dma_r));
|
||||
m_dma[0]->dma_write_callback<0>().set(FUNC(towns_state::towns_fdc_dma_w));
|
||||
m_dma[0]->dma_write_callback<1>().set(FUNC(towns_state::towns_scsi_dma_w));
|
||||
UPD71071(config, m_dma[1], 0);
|
||||
m_dma[1]->set_cpu_tag("maincpu");
|
||||
m_dma[1]->set_clock(4000000);
|
||||
m_dma[1]->dma_read_callback<0>().set(FUNC(towns_state::towns_fdc_dma_r));
|
||||
m_dma[1]->dma_read_callback<1>().set(FUNC(towns_state::towns_scsi_dma_r));
|
||||
m_dma[1]->dma_read_callback<3>().set(FUNC(towns_state::towns_state::towns_cdrom_dma_r));
|
||||
m_dma[1]->dma_write_callback<0>().set(FUNC(towns_state::towns_fdc_dma_w));
|
||||
m_dma[1]->dma_write_callback<1>().set(FUNC(towns_state::towns_scsi_dma_w));
|
||||
|
||||
//MCFG_VIDEO_START_OVERRIDE(towns_state,towns)
|
||||
|
||||
@ -2868,8 +2865,11 @@ void towns_state::towns_base(machine_config &config)
|
||||
|
||||
FMT_ICMEM(config, m_icmemcard, 0);
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("6M").set_extra_options("2M,4M,8M,16M,32M,64M,96M");
|
||||
/*
|
||||
First-generation models: 1 MB onboard, 3 SIMM slots with 1 or 2 MB each, except slot 1 (limited to 1 MB).
|
||||
Model 2 comes with a 1 MB SIMM preinstalled on slot 1, Model 1 doesn't.
|
||||
*/
|
||||
RAM(config, m_ram).set_default_size("2M").set_extra_options("1M,3M,4M,5M,6M");
|
||||
|
||||
MSM58321(config, m_rtc, 32768_Hz_XTAL);
|
||||
m_rtc->d0_handler().set(FUNC(towns_state::rtc_d0_w));
|
||||
@ -2893,11 +2893,29 @@ void towns16_state::townsux(machine_config &config)
|
||||
|
||||
I386SX(config.replace(), m_maincpu, 16000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &towns16_state::ux_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns16_state::towns16_io);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns16_state::townsux_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(towns_state::towns_vsync_irq));
|
||||
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
m_ram->set_default_size("2M").set_extra_options("10M");
|
||||
scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0));
|
||||
scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
|
||||
scsi.set_slot_device(2, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
|
||||
scsi.set_slot_device(3, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_2));
|
||||
scsi.set_slot_device(4, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_3));
|
||||
scsi.set_slot_device(5, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
|
||||
|
||||
FMSCSI(config, m_scsi, 0);
|
||||
m_scsi->set_scsi_port("scsi");
|
||||
m_scsi->irq_handler().set(FUNC(towns16_state::towns_scsi_irq));
|
||||
m_scsi->drq_handler().set(FUNC(towns16_state::towns_scsi_drq));
|
||||
|
||||
m_dma[0]->dma_read_callback<1>().set(FUNC(towns16_state::towns_scsi_dma_r));
|
||||
m_dma[0]->dma_write_callback<1>().set(FUNC(towns16_state::towns_scsi_dma_w));
|
||||
m_dma[1]->dma_read_callback<1>().set(FUNC(towns16_state::towns_scsi_dma_r));
|
||||
m_dma[1]->dma_write_callback<1>().set(FUNC(towns16_state::towns_scsi_dma_w));
|
||||
|
||||
// 2 MB onboard, one SIMM slot with 2-8 MB
|
||||
m_ram->set_default_size("2M").set_extra_options("4M,6M,10M");
|
||||
|
||||
NVRAM(config, "nvram16", nvram_device::DEFAULT_ALL_0);
|
||||
}
|
||||
@ -2906,37 +2924,65 @@ void towns_state::townssj(machine_config &config)
|
||||
{
|
||||
towns(config);
|
||||
|
||||
PENTIUM(config.replace(), m_maincpu, 66000000);
|
||||
I486(config.replace(), m_maincpu, 66000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &towns_state::towns_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns_state::towns_io);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns_state::towns2_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(towns_state::towns_vsync_irq));
|
||||
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0));
|
||||
scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
|
||||
scsi.set_slot_device(2, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
|
||||
scsi.set_slot_device(3, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_2));
|
||||
scsi.set_slot_device(4, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_3));
|
||||
scsi.set_slot_device(5, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
|
||||
|
||||
m_ram->set_default_size("8M").set_extra_options("40M,72M");
|
||||
FMSCSI(config, m_scsi, 0);
|
||||
m_scsi->set_scsi_port("scsi");
|
||||
m_scsi->irq_handler().set(FUNC(towns_state::towns_scsi_irq));
|
||||
m_scsi->drq_handler().set(FUNC(towns_state::towns_scsi_drq));
|
||||
|
||||
m_dma[0]->dma_read_callback<1>().set(FUNC(towns_state::towns_scsi_dma_r));
|
||||
m_dma[0]->dma_write_callback<1>().set(FUNC(towns_state::towns_scsi_dma_w));
|
||||
m_dma[1]->dma_read_callback<1>().set(FUNC(towns_state::towns_scsi_dma_r));
|
||||
m_dma[1]->dma_write_callback<1>().set(FUNC(towns_state::towns_scsi_dma_w));
|
||||
|
||||
// 4 MB (SJ2/SJ2A) or 8 MB (SJ26/SJ53) onboard, 2 SIMM slots with 4-32 MB each
|
||||
m_ram->set_default_size("8M").set_extra_options("4M,12M,16M,20M,24M,28M,32M,36M,40M,44M,48M,52M,56M,68M,72M");
|
||||
}
|
||||
|
||||
void towns_state::townshr(machine_config &config)
|
||||
{
|
||||
towns(config);
|
||||
townssj(config);
|
||||
I486(config.replace(), m_maincpu, 20000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &towns_state::towns_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns_state::towns_io);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns_state::towns2_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(towns_state::towns_vsync_irq));
|
||||
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
m_ram->set_default_size("4M").set_extra_options("12M,20M,28M");
|
||||
// 4 MB onboard, 3 SIMM slots with 2-8 MB each
|
||||
m_ram->set_default_size("4M").set_extra_options("6M,8M,10M,12M,14M,16M,18M,20M,22M,24M,28M");
|
||||
}
|
||||
|
||||
void towns_state::townsmx(machine_config &config)
|
||||
{
|
||||
townssj(config);
|
||||
|
||||
// 4 MB onboard, 3 SIMM slots with 2-32 MB each, MX170W/MX340W models come with a 4 MB SIMM preinstalled
|
||||
m_ram->set_default_size("8M").set_extra_options("4M,6M,8M,10M,12M,14M,16M,18M,20M,22M,24M,26M,28M,30M,32M,36M,38M,40M,42M,44M,46M,48M,52M,53M,54M,56M,60M,68M,70M,72M,76M,84M,100M");
|
||||
}
|
||||
|
||||
void towns_state::townsftv(machine_config &config)
|
||||
{
|
||||
towns(config);
|
||||
townssj(config);
|
||||
I486(config.replace(), m_maincpu, 33000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &towns_state::towns_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns_state::towns_io);
|
||||
m_maincpu->set_addrmap(AS_IO, &towns_state::towns2_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(towns_state::towns_vsync_irq));
|
||||
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
m_ram->set_default_size("6M").set_extra_options("32M,68M");
|
||||
// 4 MB onboard, 2 SIMM slots with 2-32 MB each, one of them with a 2 MB SIMM preinstalled
|
||||
m_ram->set_default_size("6M").set_extra_options("4M,8M,10M,12M,14M,16M,20M,22M,24M,28M,36M,38M,40M,44M,52M,68M");
|
||||
}
|
||||
|
||||
void marty_state::marty(machine_config &config)
|
||||
@ -2948,8 +2994,11 @@ void marty_state::marty(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &marty_state::towns16_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(towns_state::towns_vsync_irq));
|
||||
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
FLOPPY_CONNECTOR(config.replace(), m_flop[1], towns_floppies, nullptr, towns_state::floppy_formats);
|
||||
|
||||
m_ram->set_default_size("6M");
|
||||
// 2 MB onboard, expandable to 4 MB with a Marty-only expansion card
|
||||
m_ram->set_default_size("2M").set_extra_options("4M");
|
||||
|
||||
NVRAM(config, "nvram16", nvram_device::DEFAULT_ALL_0);
|
||||
}
|
||||
@ -3083,7 +3132,7 @@ COMP( 1989, fmtowns, 0, 0, towns, towns, towns_state, empty_
|
||||
COMP( 1989, fmtownsa, fmtowns, 0, towns, towns, towns_state, empty_init, "Fujitsu", "FM-Towns (alternate)", MACHINE_NOT_WORKING)
|
||||
COMP( 1991, fmtownsux, fmtowns, 0, townsux, towns, towns16_state, empty_init, "Fujitsu", "FM-Towns II UX", MACHINE_NOT_WORKING)
|
||||
COMP( 1992, fmtownshr, fmtowns, 0, townshr, towns, towns_state, empty_init, "Fujitsu", "FM-Towns II HR", MACHINE_NOT_WORKING)
|
||||
COMP( 1993, fmtownsmx, fmtowns, 0, townshr, towns, towns_state, empty_init, "Fujitsu", "FM-Towns II MX", MACHINE_NOT_WORKING)
|
||||
COMP( 1993, fmtownsmx, fmtowns, 0, townsmx, towns, towns_state, empty_init, "Fujitsu", "FM-Towns II MX", MACHINE_NOT_WORKING)
|
||||
COMP( 1994, fmtownsftv, fmtowns, 0, townsftv, towns, towns_state, empty_init, "Fujitsu", "FM-Towns II FreshTV", MACHINE_NOT_WORKING)
|
||||
COMP( 19??, fmtownssj, fmtowns, 0, townssj, towns, towns_state, empty_init, "Fujitsu", "FM-Towns II SJ", MACHINE_NOT_WORKING)
|
||||
CONS( 1993, fmtmarty, 0, 0, marty, marty, marty_state, empty_init, "Fujitsu", "FM-Towns Marty", MACHINE_NOT_WORKING)
|
||||
|
@ -93,15 +93,16 @@ class towns_state : public driver_device
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_ram(*this, RAM_TAG)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_dma(*this, "dma_%u", 1U)
|
||||
, m_scsi(*this, "fmscsi")
|
||||
, m_flop(*this, "fdc:%u", 0U)
|
||||
, m_speaker(*this, "speaker")
|
||||
, m_pic_master(*this, "pic8259_master")
|
||||
, m_pic_slave(*this, "pic8259_slave")
|
||||
, m_pit(*this, "pit")
|
||||
, m_dma(*this, "dma_%u", 1U)
|
||||
, m_palette(*this, "palette256")
|
||||
, m_palette16(*this, "palette16_%u", 0U)
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_flop(*this, "fdc:%u", 0U)
|
||||
, m_icmemcard(*this, "icmemcard")
|
||||
, m_i8251(*this, "i8251")
|
||||
, m_rs232(*this, "rs232c")
|
||||
@ -110,7 +111,6 @@ class towns_state : public driver_device
|
||||
, m_dma_1(*this, "dma_1")
|
||||
, m_cdrom(*this, "cdrom")
|
||||
, m_cdda(*this, "cdda")
|
||||
, m_scsi(*this, "fmscsi")
|
||||
, m_bank_cb000_r(*this, "bank_cb000_r")
|
||||
, m_bank_cb000_w(*this, "bank_cb000_w")
|
||||
, m_bank_f8000_r(*this, "bank_f8000_r")
|
||||
@ -138,10 +138,11 @@ class towns_state : public driver_device
|
||||
void towns(machine_config &config);
|
||||
void townsftv(machine_config &config);
|
||||
void townshr(machine_config &config);
|
||||
void townsmx(machine_config &config);
|
||||
void townssj(machine_config &config);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(towns_vsync_irq);
|
||||
|
||||
|
||||
protected:
|
||||
uint16_t m_towns_machine_id; // default is 0x0101
|
||||
|
||||
@ -149,6 +150,8 @@ protected:
|
||||
void pcm_mem(address_map &map);
|
||||
void towns16_io(address_map &map);
|
||||
void towns_io(address_map &map);
|
||||
void towns2_io(address_map &map);
|
||||
void townsux_io(address_map &map);
|
||||
void towns_mem(address_map &map);
|
||||
void ux_mem(address_map &map);
|
||||
|
||||
@ -156,6 +159,16 @@ protected:
|
||||
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
|
||||
required_device_array<upd71071_device, 2> m_dma;
|
||||
optional_device<fmscsi_device> m_scsi;
|
||||
required_device_array<floppy_connector, 2> m_flop;
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_scsi_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_scsi_drq);
|
||||
DECLARE_READ16_MEMBER(towns_scsi_dma_r);
|
||||
DECLARE_WRITE16_MEMBER(towns_scsi_dma_w);
|
||||
|
||||
private:
|
||||
/* devices */
|
||||
@ -163,11 +176,9 @@ private:
|
||||
required_device<pic8259_device> m_pic_master;
|
||||
required_device<pic8259_device> m_pic_slave;
|
||||
required_device<pit8253_device> m_pit;
|
||||
required_device_array<upd71071_device, 2> m_dma;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device_array<palette_device, 2> m_palette16;
|
||||
required_device<mb8877_device> m_fdc;
|
||||
required_device_array<floppy_connector, 2> m_flop;
|
||||
required_device<fmt_icmem_device> m_icmemcard;
|
||||
required_device<i8251_device> m_i8251;
|
||||
required_device<rs232_port_device> m_rs232;
|
||||
@ -176,7 +187,6 @@ private:
|
||||
required_device<upd71071_device> m_dma_1;
|
||||
required_device<cdrom_image_device> m_cdrom;
|
||||
required_device<cdda_device> m_cdda;
|
||||
required_device<fmscsi_device> m_scsi;
|
||||
|
||||
required_memory_bank m_bank_cb000_r;
|
||||
required_memory_bank m_bank_cb000_w;
|
||||
@ -400,14 +410,11 @@ private:
|
||||
TIMER_CALLBACK_MEMBER(towns_cdrom_read_byte);
|
||||
TIMER_CALLBACK_MEMBER(towns_sprite_done);
|
||||
TIMER_CALLBACK_MEMBER(towns_vblank_end);
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_scsi_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_scsi_drq);
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_pit_out0_changed);
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_pit_out1_changed);
|
||||
DECLARE_WRITE_LINE_MEMBER(pit2_out1_changed);
|
||||
DECLARE_READ8_MEMBER(get_slave_ack);
|
||||
DECLARE_WRITE_LINE_MEMBER(towns_fm_irq);
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
void towns_crtc_refresh_mode();
|
||||
void towns_update_kanji_offset();
|
||||
void towns_update_palette();
|
||||
@ -428,8 +435,6 @@ private:
|
||||
void towns_cdrom_set_irq(int line,int state);
|
||||
uint8_t towns_cd_get_track();
|
||||
DECLARE_READ16_MEMBER(towns_cdrom_dma_r);
|
||||
DECLARE_READ16_MEMBER(towns_scsi_dma_r);
|
||||
DECLARE_WRITE16_MEMBER(towns_scsi_dma_w);
|
||||
};
|
||||
|
||||
class towns16_state : public towns_state
|
||||
|
Loading…
Reference in New Issue
Block a user