Previous 15994 Revisions Next

r10145 Sunday 23rd January, 2011 at 08:01:54 UTC by Barry Rodewald
[X680x0] Plugged in MB89352A SPC and added (fake) internal SCSI ROMs to the XVI and X68030 drivers.
[src/mess/drivers]x68k.c

src/mess/drivers/x68k.c
r10144r10145
128128#include "machine/8530scc.h"
129129#include "machine/hd63450.h"
130130#include "machine/rp5c15.h"
131#include "machine/mb89352.h"
132#include "imagedev/chd_cd.h"
131133#include "imagedev/flopdrv.h"
132134#include "formats/basicdsk.h"
133135#include "formats/dim_dsk.h"
r10144r10145
19451947   return state->current_vector[irqline];
19461948}
19471949
1950static WRITE_LINE_DEVICE_HANDLER( x68k_scsi_irq )
1951{
1952   // TODO : Internal SCSI IRQ vector 0x6c, External SCSI IRQ vector 0xf6
1953}
1954
1955static WRITE_LINE_DEVICE_HANDLER( x68k_scsi_drq )
1956{
1957   // TODO
1958}
1959
19481960static ADDRESS_MAP_START(x68k_map, ADDRESS_SPACE_PROGRAM, 16)
19491961//  AM_RANGE(0x000000, 0xbfffff) AM_RAMBANK(1)
19501962   AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w)
r10144r10145
19641976   AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_status_r, okim6258_ctrl_w, 0x00ff)
19651977   AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_status_r, okim6258_data_w, 0x00ff)
19661978   AM_RANGE(0xe94000, 0xe95fff) AM_READWRITE(x68k_fdc_r, x68k_fdc_w)
1967   AM_RANGE(0xe96000, 0xe97fff) AM_DEVREADWRITE("x68k_hdc",x68k_hdc_r, x68k_hdc_w)
1979   AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc",x68k_hdc_r, x68k_hdc_w)
19681980   AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE(x68k_scc_r, x68k_scc_w)
19691981   AM_RANGE(0xe9a000, 0xe9bfff) AM_DEVREADWRITE("ppi8255", x68k_ppi_r, x68k_ppi_w)
19701982   AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE(x68k_ioc_r, x68k_ioc_w)
1983   AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE(x68k_exp_r, x68k_exp_w)  // external SCSI ROM and controller
19711984   AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE(x68k_exp_r, x68k_exp_w)
19721985   AM_RANGE(0xeafa80, 0xeafa89) AM_READWRITE(x68k_areaset_r, x68k_enh_areaset_w)
19731986   AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE(x68k_spritereg_r, x68k_spritereg_w)
r10144r10145
19771990   AM_RANGE(0xed0000, 0xed3fff) AM_RAMBANK("bank4") AM_SHARE("nvram")
19781991   AM_RANGE(0xed4000, 0xefffff) AM_NOP
19791992   AM_RANGE(0xf00000, 0xfbffff) AM_ROM
1980//  AM_RANGE(0xfc0000, 0xfdffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w)
1993   AM_RANGE(0xfc0000, 0xfdffff) AM_READWRITE(x68k_exp_r, x68k_exp_w)  // internal SCSI ROM
19811994   AM_RANGE(0xfe0000, 0xffffff) AM_ROM
19821995ADDRESS_MAP_END
19831996
1997static ADDRESS_MAP_START(x68kxvi_map, ADDRESS_SPACE_PROGRAM, 16)
1998//  AM_RANGE(0x000000, 0xbfffff) AM_RAMBANK(1)
1999   AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w)
2000//  AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(x68k_gvram_r, x68k_gvram_w) AM_BASE_MEMBER(x68k_state, gvram)
2001//  AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE(x68k_tvram_r, x68k_tvram_w) AM_BASE_MEMBER(x68k_state, tvram)
2002   AM_RANGE(0xc00000, 0xdfffff) AM_RAMBANK("bank2")
2003   AM_RANGE(0xe00000, 0xe7ffff) AM_RAMBANK("bank3")
2004   AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE(x68k_crtc_r, x68k_crtc_w)
2005   AM_RANGE(0xe82000, 0xe83fff) AM_READWRITE(x68k_vid_r, x68k_vid_w)
2006   AM_RANGE(0xe84000, 0xe85fff) AM_READWRITE(x68k_dmac_r, x68k_dmac_w)
2007   AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE(x68k_areaset_r, x68k_areaset_w)
2008   AM_RANGE(0xe88000, 0xe89fff) AM_READWRITE(x68k_mfp_r, x68k_mfp_w)
2009   AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE("rp5c15", x68k_rtc_r, x68k_rtc_w)
2010//  AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w)
2011   AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w)
2012   AM_RANGE(0xe90000, 0xe91fff) AM_READWRITE(x68k_fm_r, x68k_fm_w)
2013   AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_status_r, okim6258_ctrl_w, 0x00ff)
2014   AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_status_r, okim6258_data_w, 0x00ff)
2015   AM_RANGE(0xe94000, 0xe95fff) AM_READWRITE(x68k_fdc_r, x68k_fdc_w)
2016   AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc",x68k_hdc_r, x68k_hdc_w)
2017   AM_RANGE(0xe96020, 0xe9603f) AM_DEVREADWRITE8_MODERN("mb89352_int",mb89352_device,mb89352_r,mb89352_w,0x00ff)
2018   AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE(x68k_scc_r, x68k_scc_w)
2019   AM_RANGE(0xe9a000, 0xe9bfff) AM_DEVREADWRITE("ppi8255", x68k_ppi_r, x68k_ppi_w)
2020   AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE(x68k_ioc_r, x68k_ioc_w)
2021   AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE(x68k_exp_r, x68k_exp_w)  // external SCSI ROM and controller
2022   AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE(x68k_exp_r, x68k_exp_w)
2023   AM_RANGE(0xeafa80, 0xeafa89) AM_READWRITE(x68k_areaset_r, x68k_enh_areaset_w)
2024   AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE(x68k_spritereg_r, x68k_spritereg_w)
2025   AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE(x68k_spriteram_r, x68k_spriteram_w)
2026   AM_RANGE(0xec0000, 0xecffff) AM_NOP  // User I/O
2027//  AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE(sram_r, sram_w) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
2028   AM_RANGE(0xed0000, 0xed3fff) AM_RAMBANK("bank4") AM_SHARE("nvram")
2029   AM_RANGE(0xed4000, 0xefffff) AM_NOP
2030   AM_RANGE(0xf00000, 0xfbffff) AM_ROM
2031   AM_RANGE(0xfc0000, 0xfdffff) AM_ROM  // internal SCSI ROM
2032   AM_RANGE(0xfe0000, 0xffffff) AM_ROM
2033ADDRESS_MAP_END
2034
19842035static ADDRESS_MAP_START(x68030_map, ADDRESS_SPACE_PROGRAM, 32)
19852036//  AM_RANGE(0x000000, 0xbfffff) AM_RAMBANK(1)
19862037   AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE16(x68k_rom0_r, x68k_rom0_w,0xffffffff)
r10144r10145
19992050   AM_RANGE(0xe90000, 0xe91fff) AM_READWRITE16(x68k_fm_r, x68k_fm_w,0xffffffff)
20002051   AM_RANGE(0xe92000, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_status_r, x68030_adpcm_w, 0x00ff00ff)
20012052   AM_RANGE(0xe94000, 0xe95fff) AM_READWRITE16(x68k_fdc_r, x68k_fdc_w,0xffffffff)
2002   AM_RANGE(0xe96000, 0xe97fff) AM_DEVREADWRITE16("x68k_hdc",x68k_hdc_r, x68k_hdc_w,0xffffffff)
2053   AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE16("x68k_hdc",x68k_hdc_r, x68k_hdc_w,0xffffffff)
2054   AM_RANGE(0xe96020, 0xe9603f) AM_DEVREADWRITE8_MODERN("mb89352_int",mb89352_device,mb89352_r,mb89352_w,0x00ff00ff)
20032055   AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE16(x68k_scc_r, x68k_scc_w,0xffffffff)
20042056   AM_RANGE(0xe9a000, 0xe9bfff) AM_DEVREADWRITE16("ppi8255", x68k_ppi_r, x68k_ppi_w,0xffffffff)
20052057   AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE16(x68k_ioc_r, x68k_ioc_w,0xffffffff)
2058   AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff)  // external SCSI ROM and controller
20062059   AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff)
20072060   AM_RANGE(0xeafa80, 0xeafa8b) AM_READWRITE16(x68k_areaset_r, x68k_enh_areaset_w,0xffffffff)
20082061   AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE16(x68k_spritereg_r, x68k_spritereg_w,0xffffffff)
r10144r10145
20122065   AM_RANGE(0xed0000, 0xed3fff) AM_RAMBANK("bank4") AM_SHARE("nvram")
20132066   AM_RANGE(0xed4000, 0xefffff) AM_NOP
20142067   AM_RANGE(0xf00000, 0xfbffff) AM_ROM
2015//  AM_RANGE(0xfc0000, 0xfdffff) AM_READWRITE16(x68k_rom0_r, x68k_rom0_w,0xffffffff)
2068   AM_RANGE(0xfc0000, 0xfdffff) AM_ROM // internal SCSI ROM
20162069   AM_RANGE(0xfe0000, 0xffffff) AM_ROM
20172070ADDRESS_MAP_END
20182071
r10144r10145
24452498   NULL
24462499};
24472500
2501static const SCSIConfigTable x68k_scsi_devtable =
2502{
2503   7,                                      /* 7 SCSI devices */
2504   {
2505      { SCSI_ID_0, "harddisk0", SCSI_DEVICE_HARDDISK },
2506      { SCSI_ID_1, "harddisk1", SCSI_DEVICE_HARDDISK },
2507      { SCSI_ID_2, "harddisk2", SCSI_DEVICE_HARDDISK },
2508      { SCSI_ID_3, "harddisk3", SCSI_DEVICE_HARDDISK },
2509      { SCSI_ID_4, "harddisk4", SCSI_DEVICE_HARDDISK },
2510      { SCSI_ID_5, "mo_disk",   SCSI_DEVICE_HARDDISK },  // Magneto-Optical disk
2511      { SCSI_ID_6, "cdrom",     SCSI_DEVICE_CDROM    },  // CD-ROM/RW
2512   }
2513};
2514
2515static const mb89352_interface x68k_scsi_intf =
2516{
2517   &x68k_scsi_devtable,
2518   DEVCB_LINE(x68k_scsi_irq),
2519   DEVCB_LINE(x68k_scsi_drq)
2520};
2521
24482522static MACHINE_RESET( x68000 )
24492523{
24502524   x68k_state *state = machine->driver_data<x68k_state>();
r10144r10145
27042778
27052779   MCFG_CPU_MODIFY("maincpu")
27062780   MCFG_CPU_CLOCK(16000000)  /* 16 MHz */
2781   MCFG_CPU_PROGRAM_MAP(x68kxvi_map)
2782
2783   MCFG_MB89352A_ADD("mb89352_int",x68k_scsi_intf)
2784   MCFG_HARDDISK_ADD("harddisk0")
2785   MCFG_HARDDISK_ADD("harddisk1")
2786   MCFG_HARDDISK_ADD("harddisk2")
2787   MCFG_HARDDISK_ADD("harddisk3")
2788   MCFG_HARDDISK_ADD("harddisk4")
2789   MCFG_HARDDISK_ADD("mo_disk")  // magneto-optical disk, we'll treat it as an HD for now
2790   MCFG_CDROM_ADD("cdrom")
27072791MACHINE_CONFIG_END
27082792
27092793static MACHINE_CONFIG_DERIVED( x68030, x68000 )
r10144r10145
27132797
27142798   MCFG_MACHINE_START( x68030 )
27152799   MCFG_MACHINE_RESET( x68000 )
2800
2801   MCFG_MB89352A_ADD("mb89352_int",x68k_scsi_intf)
2802   MCFG_HARDDISK_ADD("harddisk0")
2803   MCFG_HARDDISK_ADD("harddisk1")
2804   MCFG_HARDDISK_ADD("harddisk2")
2805   MCFG_HARDDISK_ADD("harddisk3")
2806   MCFG_HARDDISK_ADD("harddisk4")
2807   MCFG_HARDDISK_ADD("mo_disk")  // magneto-optical disk, we'll treat it as an HD for now
2808   MCFG_CDROM_ADD("cdrom")
27162809MACHINE_CONFIG_END
27172810
27182811ROM_START( x68000 )
r10144r10145
27452838   ROMX_LOAD( "iplromco.dat", 0xfe0000, 0x020000, CRC(6c7ef608) SHA1(77511fc58798404701f66b6bbc9cbde06596eba7), ROM_BIOS(3) )
27462839   ROM_SYSTEM_BIOS(3, "ipl13",  "IPL-ROM V1.3 (92/11/27)")
27472840   ROMX_LOAD( "iplrom30.dat", 0xfe0000, 0x020000, CRC(e8f8fdad) SHA1(239e9124568c862c31d9ec0605e32373ea74b86a), ROM_BIOS(4) )
2841   ROM_LOAD("scsiinrom.dat",0xfc0000, 0x002000, CRC(1c6c889e) SHA1(3f063d4231cdf53da6adc4db96533725e260076a) BAD_DUMP )
2842//   ROM_LOAD("scsiexrom.dat",0xea0000, 0x002000, NO_DUMP )
27482843   ROM_REGION(0x8000, "user1",0)  // For Background/Sprite decoding
27492844   ROM_FILL(0x0000,0x8000,0x00)
27502845   ROM_REGION(0x20000, "user2", 0)
27512846   ROM_FILL(0x000,0x20000,0x00)
2752   ROM_REGION(0x8000, "scsi", 0)
2753   ROM_LOAD("scsiinrom.dat",0x000000, 0x008000, NO_DUMP )
27542847ROM_END
27552848
27562849ROM_START( x68030 )
r10144r10145
27652858   ROMX_LOAD( "iplromco.dat", 0xfe0000, 0x020000, CRC(6c7ef608) SHA1(77511fc58798404701f66b6bbc9cbde06596eba7), ROM_BIOS(3) )
27662859   ROM_SYSTEM_BIOS(3, "ipl13",  "IPL-ROM V1.3 (92/11/27)")
27672860   ROMX_LOAD( "iplrom30.dat", 0xfe0000, 0x020000, CRC(e8f8fdad) SHA1(239e9124568c862c31d9ec0605e32373ea74b86a), ROM_BIOS(4) )
2861   ROM_LOAD("scsiinrom.dat",0xfc0000, 0x002000, CRC(1c6c889e) SHA1(3f063d4231cdf53da6adc4db96533725e260076a) BAD_DUMP )
2862//   ROM_LOAD("scsiexrom.dat",0xea0000, 0x002000, NO_DUMP )
27682863   ROM_REGION(0x8000, "user1",0)  // For Background/Sprite decoding
27692864   ROM_FILL(0x0000,0x8000,0x00)
27702865   ROM_REGION(0x20000, "user2", 0)
27712866   ROM_FILL(0x000,0x20000,0x00)
2772   ROM_REGION(0x8000, "scsi", 0)
2773   ROM_LOAD("scsiinrom.dat",0x000000, 0x008000, NO_DUMP )
27742867ROM_END
27752868
27762869

Previous 15994 Revisions Next


© 1998-2018 The MESS Team